aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/cobrands/angus/_colours.scss4
-rw-r--r--web/cobrands/angus/base.scss21
-rw-r--r--web/cobrands/angus/layout.scss79
-rw-r--r--web/cobrands/borsetshire/_colours.scss39
-rw-r--r--web/cobrands/borsetshire/_council-header.scss74
-rw-r--r--web/cobrands/borsetshire/base.scss24
-rw-r--r--web/cobrands/borsetshire/google_maps_style.js1
-rw-r--r--web/cobrands/borsetshire/images/site-logo-mobile.pngbin0 -> 2408 bytes
-rw-r--r--web/cobrands/borsetshire/images/site-logo-mobile.svg1
-rw-r--r--web/cobrands/borsetshire/images/site-logo-mobile@2x.pngbin0 -> 4795 bytes
-rw-r--r--web/cobrands/borsetshire/images/site-logo.pngbin0 -> 3650 bytes
-rw-r--r--web/cobrands/borsetshire/images/site-logo.svg1
-rw-r--r--web/cobrands/borsetshire/images/site-logo@2x.pngbin0 -> 7489 bytes
-rw-r--r--web/cobrands/borsetshire/images/street.jpgbin0 -> 89795 bytes
-rw-r--r--web/cobrands/borsetshire/js.js26
-rw-r--r--web/cobrands/borsetshire/layout.scss48
-rw-r--r--web/cobrands/bristol/_colours.scss4
-rw-r--r--web/cobrands/bristol/base.scss8
-rw-r--r--web/cobrands/bristol/layout.scss64
-rw-r--r--web/cobrands/bromley/_colours.scss5
-rw-r--r--web/cobrands/bromley/base.scss49
-rw-r--r--web/cobrands/bromley/layout.scss50
-rw-r--r--web/cobrands/eastherts/_colours.scss22
-rw-r--r--web/cobrands/eastherts/base.scss104
-rw-r--r--web/cobrands/eastherts/layout.scss353
-rw-r--r--web/cobrands/fiksgatami/base.scss7
-rw-r--r--web/cobrands/fiksgatami/layout.scss33
-rw-r--r--web/cobrands/fixamingata/_colours.scss2
-rw-r--r--web/cobrands/fixamingata/base.scss7
-rw-r--r--web/cobrands/fixamingata/images/email-logo.gifbin0 -> 5087 bytes
-rw-r--r--web/cobrands/fixamingata/images/email-logo.svg85
-rw-r--r--web/cobrands/fixamingata/layout.scss30
-rw-r--r--web/cobrands/fixmystreet.com/_colours.scss4
-rw-r--r--web/cobrands/fixmystreet.com/base.scss22
-rw-r--r--web/cobrands/fixmystreet.com/fmsforcouncils.scss585
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.pngbin4730 -> 2177 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/authority.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/automated-instruction.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.pngbin3863 -> 2246 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-no.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-yes.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/brand.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg17
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.pngbin4655 -> 3070 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.pngbin4200 -> 2640 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/control.svg12
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg16
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/dashboard.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.pngbin250149 -> 267724 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/duplication.svg12
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/end-to-end.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/excellence.svg13
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/expand.svg17
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/fms-fc-logo.svg13
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.pngbin4396 -> 2892 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.pngbin4039 -> 2460 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/inspection.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/integrated.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/intelligent-routing.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/map-centric.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg14
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/mobile-app.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/open-standards.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.pngbin4749 -> 3194 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg15
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/process.svg17
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/reduce.svg12
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/responsive-web.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpgbin0 -> 48091 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.pngbin4651 -> 3058 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/syncronised.svg1
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.pngbin7670 -> 5303 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpgbin121782 -> 87063 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.pngbin6901 -> 2587 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/next-step-donate.pngbin0 -> 1034 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/tile-y-border.jpgbin1031 -> 0 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/tile-y.jpgbin35144 -> 44538 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/tile-y@2x.jpgbin0 -> 80215 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/tile.jpgbin21980 -> 16038 bytes
-rw-r--r--web/cobrands/fixmystreet.com/images/tile@2x.jpgbin0 -> 68278 bytes
-rw-r--r--web/cobrands/fixmystreet.com/js.js53
-rw-r--r--web/cobrands/fixmystreet.com/layout.scss155
-rw-r--r--web/cobrands/fixmystreet.com/posters/activist-pack.zipbin7982543 -> 8297420 bytes
-rw-r--r--web/cobrands/fixmystreet.com/posters/community-group-pack.zipbin9200902 -> 9381825 bytes
-rw-r--r--web/cobrands/fixmystreet.com/posters/schools-clubs-pack.zipbin5868903 -> 5761015 bytes
-rw-r--r--web/cobrands/fixmystreet.com/vendor/jquery.cookie.min.js (renamed from web/js/jquery.cookie.min.js)0
-rw-r--r--web/cobrands/fixmystreet/admin.js81
-rw-r--r--web/cobrands/fixmystreet/fixmystreet.js81
-rw-r--r--web/cobrands/fixmystreet/images/map-marker.pngbin0 -> 786 bytes
-rwxr-xr-xweb/cobrands/fixmystreet/images/map-marker.svg6
-rw-r--r--web/cobrands/fixmystreet/images/map-marker@2x.pngbin0 -> 925 bytes
-rw-r--r--web/cobrands/fixmystreet/map.js2
-rw-r--r--web/cobrands/fixmystreet/offline.js7
-rw-r--r--web/cobrands/fixmystreet/staff.js268
-rw-r--r--web/cobrands/greenwich/_colours.scss4
-rw-r--r--web/cobrands/greenwich/base.scss12
-rw-r--r--web/cobrands/greenwich/favicon.pngbin1298 -> 758 bytes
-rw-r--r--web/cobrands/greenwich/layout.scss42
-rw-r--r--web/cobrands/hart/_colours.scss7
-rw-r--r--web/cobrands/hart/base.scss23
-rw-r--r--web/cobrands/hart/chat.pngbin0 -> 5678 bytes
-rwxr-xr-xweb/cobrands/hart/facebook-logo.pngbin51475 -> 3259 bytes
-rw-r--r--web/cobrands/hart/hart.scss403
-rw-r--r--web/cobrands/hart/instagram-logo.pngbin0 -> 3716 bytes
-rw-r--r--web/cobrands/hart/layout.scss111
-rwxr-xr-xweb/cobrands/hart/twitter-logo.pngbin51429 -> 3973 bytes
-rw-r--r--web/cobrands/hart/youtube-logo.pngbin0 -> 3562 bytes
-rw-r--r--web/cobrands/oxfordshire/_colours.scss5
-rw-r--r--web/cobrands/oxfordshire/_oxon.scss27
-rw-r--r--web/cobrands/oxfordshire/base.scss27
-rw-r--r--web/cobrands/oxfordshire/images/pin-green-big.pngbin0 -> 10557 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-green-mini.pngbin0 -> 1307 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-green-small.pngbin0 -> 2137 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-green.pngbin0 -> 5233 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-grey-big.pngbin0 -> 13399 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-grey-mini.pngbin0 -> 1514 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-grey-small.pngbin0 -> 2498 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-grey.pngbin0 -> 6230 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-orange-big.pngbin0 -> 10646 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-orange-mini.pngbin0 -> 1353 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-orange-small.pngbin0 -> 2563 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-orange.pngbin0 -> 5747 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-shadow-big.pngbin0 -> 641 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-shadow-small.pngbin0 -> 288 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-shadow.pngbin0 -> 478 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-spot.pngbin0 -> 3901 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-yellow-big.pngbin0 -> 6032 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-yellow-mini.pngbin0 -> 988 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-yellow-small.pngbin0 -> 1719 bytes
-rw-r--r--web/cobrands/oxfordshire/images/pin-yellow.pngbin0 -> 3508 bytes
-rw-r--r--web/cobrands/oxfordshire/images/tab-green.pngbin819 -> 610 bytes
-rw-r--r--web/cobrands/oxfordshire/js.js7
-rw-r--r--web/cobrands/oxfordshire/layout.scss50
-rw-r--r--web/cobrands/sass/_admin.scss38
-rw-r--r--web/cobrands/sass/_autocomplete.scss139
-rw-r--r--web/cobrands/sass/_base.scss258
-rw-r--r--web/cobrands/sass/_dashboard.scss213
-rw-r--r--web/cobrands/sass/_layout.scss421
-rw-r--r--web/cobrands/sass/_mixins.scss34
-rw-r--r--web/cobrands/sass/_report_list_pins.scss16
-rw-r--r--web/cobrands/stevenage/_colours.scss4
-rw-r--r--web/cobrands/stevenage/base.scss19
-rw-r--r--web/cobrands/stevenage/layout.scss90
-rw-r--r--web/cobrands/warwickshire/_colours.scss2
-rw-r--r--web/cobrands/warwickshire/base.scss19
-rw-r--r--web/cobrands/warwickshire/layout.scss83
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/bootstrap-responsive.css (renamed from web/cobrands/warwickshire/gamma/bootstrap-responsive.css)0
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/bootstrap.min.js (renamed from web/cobrands/warwickshire/gamma/bootstrap.min.js)0
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/images/favicon.ico (renamed from web/cobrands/warwickshire/gamma/images/favicon.ico)bin1406 -> 1406 bytes
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/images/icon-flickr.png (renamed from web/cobrands/warwickshire/gamma/images/icon-flickr.png)bin554 -> 554 bytes
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/images/icon-twitter.png (renamed from web/cobrands/warwickshire/gamma/images/icon-twitter.png)bin528 -> 528 bytes
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/images/icon-youtube.png (renamed from web/cobrands/warwickshire/gamma/images/icon-youtube.png)bin685 -> 685 bytes
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/jquery-1.9.0.min.js (renamed from web/cobrands/warwickshire/gamma/jquery-1.9.0.min.js)0
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/main.js (renamed from web/cobrands/warwickshire/gamma/main.js)0
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/modernizr-2.6.2-respond-1.1.0.min.js (renamed from web/cobrands/warwickshire/gamma/modernizr-2.6.2-respond-1.1.0.min.js)0
-rw-r--r--web/cobrands/warwickshire/vendor/gamma/style.css (renamed from web/cobrands/warwickshire/gamma/style.css)0
-rw-r--r--web/cobrands/whitelabel/_colours.scss30
-rw-r--r--web/cobrands/whitelabel/base.scss4
-rw-r--r--web/cobrands/whitelabel/layout.scss14
-rw-r--r--web/cobrands/zurich/_colours.scss3
-rw-r--r--web/cobrands/zurich/_zurich.scss8
-rw-r--r--web/cobrands/zurich/base.scss9
-rw-r--r--web/cobrands/zurich/layout.scss132
-rw-r--r--web/down.default.html102
-rw-r--r--web/i/pin-green-big.pngbin4305 -> 10726 bytes
-rw-r--r--web/i/pin-green-mini.pngbin577 -> 1260 bytes
-rw-r--r--web/i/pin-green-small.pngbin1141 -> 2177 bytes
-rw-r--r--web/i/pin-green.pngbin2191 -> 5297 bytes
-rw-r--r--web/i/pin-grey-big.pngbin5063 -> 13681 bytes
-rw-r--r--web/i/pin-grey-mini.pngbin611 -> 1490 bytes
-rw-r--r--web/i/pin-grey-small.pngbin875 -> 2493 bytes
-rw-r--r--web/i/pin-grey.pngbin3254 -> 6604 bytes
-rw-r--r--web/i/pin-orange-big.pngbin0 -> 8601 bytes
-rw-r--r--web/i/pin-orange-mini.pngbin0 -> 1179 bytes
-rw-r--r--web/i/pin-orange-small.pngbin0 -> 1899 bytes
-rw-r--r--web/i/pin-orange.pngbin0 -> 4410 bytes
-rw-r--r--web/i/pin-red-big.pngbin5002 -> 13205 bytes
-rw-r--r--web/i/pin-red-mini.pngbin633 -> 1436 bytes
-rw-r--r--web/i/pin-red-small.pngbin1148 -> 2476 bytes
-rw-r--r--web/i/pin-red.pngbin2494 -> 6305 bytes
-rw-r--r--web/i/pin-shadow-big.pngbin1202 -> 802 bytes
-rw-r--r--web/i/pin-shadow-small.pngbin521 -> 344 bytes
-rw-r--r--web/i/pin-shadow.pngbin720 -> 560 bytes
-rw-r--r--web/i/pin-spot.pngbin2399 -> 5791 bytes
-rw-r--r--web/i/pin-yellow-big.pngbin2867 -> 5513 bytes
-rw-r--r--web/i/pin-yellow-mini.pngbin509 -> 965 bytes
-rw-r--r--web/i/pin-yellow-small.pngbin877 -> 1576 bytes
-rw-r--r--web/i/pin-yellow.pngbin1522 -> 3224 bytes
-rw-r--r--web/js/OpenLayers.2.11.zurich.js1364
-rw-r--r--web/js/dashboard.js142
-rw-r--r--web/js/dropzone.js.patch70
-rw-r--r--web/js/dropzone.min.js61
-rw-r--r--web/js/jquery.multi-select.js6
-rw-r--r--web/js/jquery.placeholder.min.js2
-rw-r--r--web/js/map-OpenLayers.js153
-rw-r--r--web/js/map-google.js35
-rw-r--r--web/js/map-wmts-bristol.js9
-rw-r--r--web/js/map-wmts-zurich.js9
-rw-r--r--web/js/select2/LICENSE18
-rw-r--r--web/js/select2/bower.json8
-rwxr-xr-xweb/js/select2/release.sh73
-rw-r--r--web/js/select2/select2-bootstrap.css87
-rw-r--r--web/js/select2/select2-spinner.gifbin1849 -> 0 bytes
-rw-r--r--web/js/select2/select2.css615
-rw-r--r--web/js/select2/select2.jquery.json36
-rw-r--r--web/js/select2/select2.js3255
-rw-r--r--web/js/select2/select2.min.js22
-rw-r--r--web/js/select2/select2.pngbin613 -> 0 bytes
-rw-r--r--web/js/select2/select2_locale_ar.js17
-rw-r--r--web/js/select2/select2_locale_bg.js17
-rw-r--r--web/js/select2/select2_locale_ca.js17
-rw-r--r--web/js/select2/select2_locale_cs.js49
-rw-r--r--web/js/select2/select2_locale_da.js17
-rw-r--r--web/js/select2/select2_locale_de.js15
-rw-r--r--web/js/select2/select2_locale_el.js17
-rw-r--r--web/js/select2/select2_locale_en.js.template17
-rw-r--r--web/js/select2/select2_locale_es.js15
-rw-r--r--web/js/select2/select2_locale_et.js17
-rw-r--r--web/js/select2/select2_locale_eu.js43
-rw-r--r--web/js/select2/select2_locale_fa.js17
-rw-r--r--web/js/select2/select2_locale_fi.js28
-rw-r--r--web/js/select2/select2_locale_fr.js15
-rw-r--r--web/js/select2/select2_locale_gl.js43
-rw-r--r--web/js/select2/select2_locale_he.js17
-rw-r--r--web/js/select2/select2_locale_hr.js42
-rw-r--r--web/js/select2/select2_locale_hu.js15
-rw-r--r--web/js/select2/select2_locale_id.js17
-rw-r--r--web/js/select2/select2_locale_is.js16
-rw-r--r--web/js/select2/select2_locale_it.js15
-rw-r--r--web/js/select2/select2_locale_ja.js15
-rw-r--r--web/js/select2/select2_locale_ko.js17
-rw-r--r--web/js/select2/select2_locale_lt.js29
-rw-r--r--web/js/select2/select2_locale_lv.js16
-rw-r--r--web/js/select2/select2_locale_mk.js17
-rw-r--r--web/js/select2/select2_locale_ms.js17
-rw-r--r--web/js/select2/select2_locale_nl.js15
-rw-r--r--web/js/select2/select2_locale_no.js18
-rw-r--r--web/js/select2/select2_locale_pl.js37
-rw-r--r--web/js/select2/select2_locale_pt-BR.js15
-rw-r--r--web/js/select2/select2_locale_pt-PT.js15
-rw-r--r--web/js/select2/select2_locale_ro.js15
-rw-r--r--web/js/select2/select2_locale_ru.js15
-rw-r--r--web/js/select2/select2_locale_sk.js48
-rw-r--r--web/js/select2/select2_locale_sv.js17
-rw-r--r--web/js/select2/select2_locale_th.js17
-rw-r--r--web/js/select2/select2_locale_tr.js17
-rw-r--r--web/js/select2/select2_locale_ua.js17
-rw-r--r--web/js/select2/select2_locale_vi.js18
-rw-r--r--web/js/select2/select2_locale_zh-CN.js14
-rwxr-xr-xweb/js/select2/select2_locale_zh-TW.js14
-rw-r--r--web/js/select2/select2x2.pngbin845 -> 0 bytes
-rw-r--r--web/vendor/OpenLayers.Projection.OrdnanceSurvey.js (renamed from web/js/OpenLayers.Projection.OrdnanceSurvey.js)0
-rw-r--r--web/vendor/OpenLayers/OpenLayers.angus.js (renamed from web/js/OpenLayers/OpenLayers.angus.js)0
-rw-r--r--web/vendor/OpenLayers/OpenLayers.bristol.js (renamed from web/js/OpenLayers/OpenLayers.bristol.js)0
-rw-r--r--web/vendor/OpenLayers/OpenLayers.fixmystreet.js (renamed from web/js/OpenLayers/OpenLayers.fixmystreet.js)0
-rw-r--r--web/vendor/OpenLayers/OpenLayers.google.js (renamed from web/js/OpenLayers/OpenLayers.google.js)0
-rw-r--r--web/vendor/OpenLayers/OpenLayers.zurich.js620
-rw-r--r--web/vendor/OpenLayers/img/blank.gif (renamed from web/js/OpenLayers/img/blank.gif)bin42 -> 42 bytes
-rwxr-xr-xweb/vendor/OpenLayers/img/cloud-popup-relative.png (renamed from web/js/OpenLayers/img/cloud-popup-relative.png)bin4067 -> 4067 bytes
-rw-r--r--web/vendor/OpenLayers/img/drag-rectangle-off.png (renamed from web/js/OpenLayers/img/drag-rectangle-off.png)bin1024 -> 1024 bytes
-rw-r--r--web/vendor/OpenLayers/img/drag-rectangle-on.png (renamed from web/js/OpenLayers/img/drag-rectangle-on.png)bin1041 -> 1041 bytes
-rw-r--r--web/vendor/OpenLayers/img/east-mini.png (renamed from web/js/OpenLayers/img/east-mini.png)bin342 -> 342 bytes
-rw-r--r--web/vendor/OpenLayers/img/layer-switcher-maximize.png (renamed from web/js/OpenLayers/img/layer-switcher-maximize.png)bin405 -> 405 bytes
-rw-r--r--web/vendor/OpenLayers/img/layer-switcher-minimize.png (renamed from web/js/OpenLayers/img/layer-switcher-minimize.png)bin220 -> 220 bytes
-rw-r--r--web/vendor/OpenLayers/img/marker-blue.png (renamed from web/js/OpenLayers/img/marker-blue.png)bin758 -> 758 bytes
-rw-r--r--web/vendor/OpenLayers/img/marker-gold.png (renamed from web/js/OpenLayers/img/marker-gold.png)bin703 -> 703 bytes
-rw-r--r--web/vendor/OpenLayers/img/marker-green.png (renamed from web/js/OpenLayers/img/marker-green.png)bin753 -> 753 bytes
-rw-r--r--web/vendor/OpenLayers/img/marker.png (renamed from web/js/OpenLayers/img/marker.png)bin601 -> 601 bytes
-rw-r--r--web/vendor/OpenLayers/img/measuring-stick-off.png (renamed from web/js/OpenLayers/img/measuring-stick-off.png)bin3028 -> 3028 bytes
-rw-r--r--web/vendor/OpenLayers/img/measuring-stick-on.png (renamed from web/js/OpenLayers/img/measuring-stick-on.png)bin3725 -> 3725 bytes
-rw-r--r--web/vendor/OpenLayers/img/north-mini.png (renamed from web/js/OpenLayers/img/north-mini.png)bin378 -> 378 bytes
-rw-r--r--web/vendor/OpenLayers/img/panning-hand-off.png (renamed from web/js/OpenLayers/img/panning-hand-off.png)bin3511 -> 3511 bytes
-rw-r--r--web/vendor/OpenLayers/img/panning-hand-on.png (renamed from web/js/OpenLayers/img/panning-hand-on.png)bin3565 -> 3565 bytes
-rw-r--r--web/vendor/OpenLayers/img/slider.png (renamed from web/js/OpenLayers/img/slider.png)bin247 -> 247 bytes
-rw-r--r--web/vendor/OpenLayers/img/south-mini.png (renamed from web/js/OpenLayers/img/south-mini.png)bin373 -> 373 bytes
-rw-r--r--web/vendor/OpenLayers/img/west-mini.png (renamed from web/js/OpenLayers/img/west-mini.png)bin360 -> 360 bytes
-rw-r--r--web/vendor/OpenLayers/img/zoom-minus-mini.png (renamed from web/js/OpenLayers/img/zoom-minus-mini.png)bin291 -> 291 bytes
-rw-r--r--web/vendor/OpenLayers/img/zoom-plus-mini.png (renamed from web/js/OpenLayers/img/zoom-plus-mini.png)bin386 -> 386 bytes
-rw-r--r--web/vendor/OpenLayers/img/zoom-world-mini.png (renamed from web/js/OpenLayers/img/zoom-world-mini.png)bin882 -> 882 bytes
-rw-r--r--web/vendor/OpenLayers/img/zoombar.png (renamed from web/js/OpenLayers/img/zoombar.png)bin350 -> 350 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/google.css (renamed from web/js/OpenLayers/theme/default/google.css)0
-rw-r--r--web/vendor/OpenLayers/theme/default/google.tidy.css (renamed from web/js/OpenLayers/theme/default/google.tidy.css)0
-rw-r--r--web/vendor/OpenLayers/theme/default/img/add_point_off.png (renamed from web/js/OpenLayers/theme/default/img/add_point_off.png)bin1614 -> 1614 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/add_point_on.png (renamed from web/js/OpenLayers/theme/default/img/add_point_on.png)bin1464 -> 1464 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/blank.gif (renamed from web/js/OpenLayers/theme/default/img/blank.gif)bin42 -> 42 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/close.gif (renamed from web/js/OpenLayers/theme/default/img/close.gif)bin1078 -> 1078 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/drag-rectangle-off.png (renamed from web/js/OpenLayers/theme/default/img/drag-rectangle-off.png)bin1024 -> 1024 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/drag-rectangle-on.png (renamed from web/js/OpenLayers/theme/default/img/drag-rectangle-on.png)bin1041 -> 1041 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/draw_line_off.png (renamed from web/js/OpenLayers/theme/default/img/draw_line_off.png)bin1565 -> 1565 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/draw_line_on.png (renamed from web/js/OpenLayers/theme/default/img/draw_line_on.png)bin1396 -> 1396 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/draw_point_off.png (renamed from web/js/OpenLayers/theme/default/img/draw_point_off.png)bin1610 -> 1610 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/draw_point_on.png (renamed from web/js/OpenLayers/theme/default/img/draw_point_on.png)bin1458 -> 1458 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/draw_polygon_off.png (renamed from web/js/OpenLayers/theme/default/img/draw_polygon_off.png)bin1544 -> 1544 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/draw_polygon_on.png (renamed from web/js/OpenLayers/theme/default/img/draw_polygon_on.png)bin1405 -> 1405 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/editing_tool_bar.png (renamed from web/js/OpenLayers/theme/default/img/editing_tool_bar.png)bin2222 -> 2222 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/move_feature_off.png (renamed from web/js/OpenLayers/theme/default/img/move_feature_off.png)bin1541 -> 1541 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/move_feature_on.png (renamed from web/js/OpenLayers/theme/default/img/move_feature_on.png)bin1377 -> 1377 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/navigation_history.png (renamed from web/js/OpenLayers/theme/default/img/navigation_history.png)bin6628 -> 6628 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/overview_replacement.gif (renamed from web/js/OpenLayers/theme/default/img/overview_replacement.gif)bin79 -> 79 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/pan-panel-NOALPHA.png (renamed from web/js/OpenLayers/theme/default/img/pan-panel-NOALPHA.png)bin564 -> 564 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/pan-panel.png (renamed from web/js/OpenLayers/theme/default/img/pan-panel.png)bin814 -> 814 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/pan_off.png (renamed from web/js/OpenLayers/theme/default/img/pan_off.png)bin1696 -> 1696 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/pan_on.png (renamed from web/js/OpenLayers/theme/default/img/pan_on.png)bin1566 -> 1566 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/panning-hand-off.png (renamed from web/js/OpenLayers/theme/default/img/panning-hand-off.png)bin3511 -> 3511 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/panning-hand-on.png (renamed from web/js/OpenLayers/theme/default/img/panning-hand-on.png)bin3565 -> 3565 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/remove_point_off.png (renamed from web/js/OpenLayers/theme/default/img/remove_point_off.png)bin1612 -> 1612 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/remove_point_on.png (renamed from web/js/OpenLayers/theme/default/img/remove_point_on.png)bin1461 -> 1461 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/ruler.png (renamed from web/js/OpenLayers/theme/default/img/ruler.png)bin1211 -> 1211 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/save_features_off.png (renamed from web/js/OpenLayers/theme/default/img/save_features_off.png)bin354 -> 354 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/save_features_on.png (renamed from web/js/OpenLayers/theme/default/img/save_features_on.png)bin361 -> 361 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/view_next_off.png (renamed from web/js/OpenLayers/theme/default/img/view_next_off.png)bin1499 -> 1499 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/view_next_on.png (renamed from web/js/OpenLayers/theme/default/img/view_next_on.png)bin1686 -> 1686 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/view_previous_off.png (renamed from web/js/OpenLayers/theme/default/img/view_previous_off.png)bin1476 -> 1476 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/view_previous_on.png (renamed from web/js/OpenLayers/theme/default/img/view_previous_on.png)bin1592 -> 1592 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/zoom-panel-NOALPHA.png (renamed from web/js/OpenLayers/theme/default/img/zoom-panel-NOALPHA.png)bin1173 -> 1173 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/img/zoom-panel.png (renamed from web/js/OpenLayers/theme/default/img/zoom-panel.png)bin1285 -> 1285 bytes
-rw-r--r--web/vendor/OpenLayers/theme/default/style.css (renamed from web/js/OpenLayers/theme/default/style.css)0
-rw-r--r--web/vendor/OpenLayers/theme/default/style.mobile.css (renamed from web/js/OpenLayers/theme/default/style.mobile.css)0
-rw-r--r--web/vendor/OpenLayers/theme/default/style.mobile.tidy.css (renamed from web/js/OpenLayers/theme/default/style.mobile.tidy.css)0
-rw-r--r--web/vendor/OpenLayers/theme/default/style.tidy.css (renamed from web/js/OpenLayers/theme/default/style.tidy.css)0
-rw-r--r--web/vendor/accessible-autocomplete.min.js2
-rw-r--r--web/vendor/chart.min.js79
-rw-r--r--web/vendor/dropzone.min.js1
-rw-r--r--web/vendor/fancybox/blank.gif (renamed from web/js/fancybox/blank.gif)bin43 -> 43 bytes
-rw-r--r--web/vendor/fancybox/fancy_close.png (renamed from web/js/fancybox/fancy_close.png)bin1517 -> 1517 bytes
-rw-r--r--web/vendor/fancybox/fancy_loading.png (renamed from web/js/fancybox/fancy_loading.png)bin10195 -> 10195 bytes
-rw-r--r--web/vendor/fancybox/fancy_nav_left.png (renamed from web/js/fancybox/fancy_nav_left.png)bin1446 -> 1446 bytes
-rw-r--r--web/vendor/fancybox/fancy_nav_right.png (renamed from web/js/fancybox/fancy_nav_right.png)bin1454 -> 1454 bytes
-rw-r--r--web/vendor/fancybox/fancy_shadow_e.png (renamed from web/js/fancybox/fancy_shadow_e.png)bin107 -> 107 bytes
-rw-r--r--web/vendor/fancybox/fancy_shadow_n.png (renamed from web/js/fancybox/fancy_shadow_n.png)bin106 -> 106 bytes
-rw-r--r--web/vendor/fancybox/fancy_shadow_ne.png (renamed from web/js/fancybox/fancy_shadow_ne.png)bin347 -> 347 bytes
-rw-r--r--web/vendor/fancybox/fancy_shadow_nw.png (renamed from web/js/fancybox/fancy_shadow_nw.png)bin324 -> 324 bytes
-rw-r--r--web/vendor/fancybox/fancy_shadow_s.png (renamed from web/js/fancybox/fancy_shadow_s.png)bin111 -> 111 bytes
-rw-r--r--web/vendor/fancybox/fancy_shadow_se.png (renamed from web/js/fancybox/fancy_shadow_se.png)bin352 -> 352 bytes
-rw-r--r--web/vendor/fancybox/fancy_shadow_sw.png (renamed from web/js/fancybox/fancy_shadow_sw.png)bin340 -> 340 bytes
-rw-r--r--web/vendor/fancybox/fancy_shadow_w.png (renamed from web/js/fancybox/fancy_shadow_w.png)bin103 -> 103 bytes
-rw-r--r--web/vendor/fancybox/fancy_title_left.png (renamed from web/js/fancybox/fancy_title_left.png)bin503 -> 503 bytes
-rw-r--r--web/vendor/fancybox/fancy_title_main.png (renamed from web/js/fancybox/fancy_title_main.png)bin96 -> 96 bytes
-rw-r--r--web/vendor/fancybox/fancy_title_over.png (renamed from web/js/fancybox/fancy_title_over.png)bin70 -> 70 bytes
-rw-r--r--web/vendor/fancybox/fancy_title_right.png (renamed from web/js/fancybox/fancy_title_right.png)bin506 -> 506 bytes
-rw-r--r--web/vendor/fancybox/fancybox-x.png (renamed from web/js/fancybox/fancybox-x.png)bin203 -> 203 bytes
-rw-r--r--web/vendor/fancybox/fancybox-y.png (renamed from web/js/fancybox/fancybox-y.png)bin176 -> 176 bytes
-rw-r--r--web/vendor/fancybox/fancybox.png (renamed from web/js/fancybox/fancybox.png)bin15287 -> 15287 bytes
-rw-r--r--web/vendor/fancybox/jquery.easing-1.3.pack.js (renamed from web/js/fancybox/jquery.easing-1.3.pack.js)0
-rw-r--r--web/vendor/fancybox/jquery.fancybox-1.3.4.css (renamed from web/js/fancybox/jquery.fancybox-1.3.4.css)0
-rw-r--r--web/vendor/fancybox/jquery.fancybox-1.3.4.js (renamed from web/js/fancybox/jquery.fancybox-1.3.4.js)0
-rw-r--r--web/vendor/fancybox/jquery.fancybox-1.3.4.pack.js (renamed from web/js/fancybox/jquery.fancybox-1.3.4.pack.js)0
-rw-r--r--web/vendor/fancybox/jquery.mousewheel-3.0.4.pack.js (renamed from web/js/fancybox/jquery.mousewheel-3.0.4.pack.js)0
-rw-r--r--web/vendor/geo.min.js (renamed from web/js/geo.min.js)0
-rw-r--r--web/vendor/history.polyfill.min.js (renamed from web/js/history.polyfill.min.js)0
-rw-r--r--web/vendor/html5shiv.js (renamed from web/js/html5shiv.js)0
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/animated-overlay.gif (renamed from web/js/jquery-ui/css/smoothness/images/animated-overlay.gif)bin1738 -> 1738 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png)bin212 -> 212 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png)bin208 -> 208 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png)bin335 -> 335 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png)bin207 -> 207 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png)bin262 -> 262 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png)bin262 -> 262 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png)bin332 -> 332 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png)bin280 -> 280 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png)bin6922 -> 6922 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png)bin4549 -> 4549 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png)bin6992 -> 6992 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png)bin6999 -> 6999 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png (renamed from web/js/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png)bin4549 -> 4549 bytes
-rwxr-xr-xweb/vendor/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css (renamed from web/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css)0
-rwxr-xr-xweb/vendor/jquery-ui/js/jquery-ui-1.10.3.custom.min.js (renamed from web/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js)0
-rw-r--r--web/vendor/jquery.validate.js (renamed from web/js/jquery.validate.js)0
-rw-r--r--web/vendor/jquery.validate.min.js (renamed from web/js/jquery.validate.min.js)0
-rw-r--r--web/vendor/modernizr.custom.js (renamed from web/js/modernizr.custom.js)0
-rw-r--r--web/vendor/yepnope.js (renamed from web/js/yepnope.js)0
371 files changed, 3823 insertions, 8647 deletions
diff --git a/web/cobrands/angus/_colours.scss b/web/cobrands/angus/_colours.scss
index 564c78348..31974efa0 100644
--- a/web/cobrands/angus/_colours.scss
+++ b/web/cobrands/angus/_colours.scss
@@ -18,6 +18,8 @@ $primary_text: #222222;
$base_bg: #fff;
$base_fg: #000;
+$header-top-border: false;
+
$map_nav_bg: $angus_green;
$nav_fg: #fff;
$nav_fg_hover: transparent;
@@ -29,3 +31,5 @@ $col_click_map_dark: darken($col_click_map, 10%);
$col_fixed_label: $angus_green;
$col_fixed_label_dark: darken($col_click_map, 10%);
+
+$container-max-width: 1200px;
diff --git a/web/cobrands/angus/base.scss b/web/cobrands/angus/base.scss
index 31ba13a11..c8792fd51 100644
--- a/web/cobrands/angus/base.scss
+++ b/web/cobrands/angus/base.scss
@@ -5,20 +5,14 @@
@import "../sass/base";
-body.frontpage #site-logo,
-#site-logo
-{
- background: url("/cobrands/angus/third_party/css_img/angus-logo-header.png") 0 0 no-repeat;
+#site-logo {
+ background: url("/cobrands/angus/third_party/css_img/angus-logo-header.png") 0 50% no-repeat;
background-size: contain;
width: 82px;
- height: 40px;
- top: 8px;
- left: 4px;
+ height: 50px;
}
#site-header {
- background: $angus_green;
-
form.form__search {
display: none;
}
@@ -36,15 +30,6 @@ label[for=pc] {
color: $nav_fg;
}
-
-.nav-menu--mysoc {
- display: none;
-}
-
.angus_nav, .wrapper__main_menu {
display: none;
}
-
-.nav-menu--breadcrumb {
- display: none;
-}
diff --git a/web/cobrands/angus/layout.scss b/web/cobrands/angus/layout.scss
index 7b819185a..9429913b4 100644
--- a/web/cobrands/angus/layout.scss
+++ b/web/cobrands/angus/layout.scss
@@ -2,38 +2,20 @@
@import "_fonts";
@import "../sass/layout";
-$max_page_width: 1200px;
-
-#site-logo,
-body.frontpage #site-logo,
-body.twothirdswidthpage #site-logo
-{
- position: relative;
- top: 13px;
- left: 20px;
- margin: 0;
- padding: 0;
- background: url("/cobrands/angus/third_party/css_img/angus-logo-header.png") 0 0 no-repeat;
- background-size: contain;
- width: 165px;
- height: 66px;
- display: inline-block;
+#site-logo {
+ width: 165px;
+ height: 66px;
+ padding: 0.75em 0;
}
#site-header {
- background-color: $angus_green;
border-bottom: solid 8px $angus_dark_green;
box-shadow: 0 5px 5px rgba(0, 0, 0, .075);
- .container {
- position: relative;
- min-height: 5em;
- }
-
form.form__search {
display: block;
clear: right;
- margin: .65em 0 .25em;
+ margin-bottom: 25px; // 90x - 2.5em / 2
padding: 0;
text-align: right;
width: 75%;
@@ -42,7 +24,7 @@ body.twothirdswidthpage #site-logo
box-sizing: border-box;
position: absolute;
bottom: 0;
- right: 0;
+ right: 1em;
.field {
min-width: 13em;
@@ -124,52 +106,38 @@ body.twothirdswidthpage #site-logo
}
}
-body.fullwidthpage, body.twothirdswidthpage, body.authpage, body.frontpage {
- #site-header {
- height: 91px;
- }
-}
-
#front-main {
background: transparent;
#front-main-container {
background-color: $angus_light_grey;
- width: 100%;
- max-width: $max_page_width;
+ max-width: $container-max-width;
padding-top: 1em;
padding-bottom: 1em;
}
}
-body.fullwidthpage, body.twothirdswidthpage, body.authpage {
- .container {
- max-width: $max_page_width;
- width: 100%;
-
- .content {
- background: $angus_light_grey;
- background-color: $angus_light_grey;
-
- }
+body.fullwidthpage,
+body.twothirdswidthpage,
+body.authpage {
+ .content {
+ background: $angus_light_grey;
+ background-color: $angus_light_grey;
}
}
body.frontpage {
- .container {
- .content {
- background: $base_bg;
- background-color: $base_bg;
- }
+ .content {
+ background: $base_bg;
+ background-color: $base_bg;
}
}
body.twothirdswidthpage .content .sticky-sidebar {
- z-index: 0;
- left: 43em;
+ padding-left: 1em;
aside {
- top: 15em;
+ top: 198px;
}
}
@@ -289,9 +257,11 @@ footer p.social a:active,footer p.social a:focus,footer p.social a:hover
display: none;
}
+.wrapper__main_menu {
+ display: block;
+}
.nav-menu--breadcrumb {
- display: block;
font-size: 0.75em;
float: left;
@@ -335,10 +305,9 @@ body.mappage {
}
#site-logo {
- height: 54px;
+ height: 58px;
width: 111px;
- top: 7px;
- left: 7px;
+ padding: 0;
}
#site-header {
@@ -365,7 +334,7 @@ body.mappage {
footer {
font-size: 0.8em;
- max-width: $max_page_width;
+ max-width: $container-max-width;
margin: 0 auto;
padding-top: 3em;
padding-left: 3em;
diff --git a/web/cobrands/borsetshire/_colours.scss b/web/cobrands/borsetshire/_colours.scss
new file mode 100644
index 000000000..78f06e1c8
--- /dev/null
+++ b/web/cobrands/borsetshire/_colours.scss
@@ -0,0 +1,39 @@
+/* LAYOUT */
+
+// If you are wanting a right-to-left layout, uncomment the following line.
+// $direction: right;
+
+/* COLOURS */
+
+$color-borsetshire-blue: #1375B8;
+$color-borsetshire-light-blue: #95D4FF;
+$color-borsetshire-green: #76951F;
+$color-borsetshire-light-green: #A6C257;
+$color-borsetshire-yellow: #C5A728;
+$color-borsetshire-light-yellow: #F4D659;
+
+$primary: $color-borsetshire-blue; // background on #postcodeForm, #front_stats, #front-main on desktop, and border-bottom on various map page sidebar items
+$primary_b: darken($color-borsetshire-blue, 10%); // border on div around the #postcodeForm input
+$primary_text: #fff; // text colour wherever $primary is the background
+
+$base_bg: white; // background on body and .tablewrapper on desktop
+$base_fg: #000; // text color on body and .tablewrapper on desktop
+
+$map_nav_bg: $color-borsetshire-blue; // background for #site-header on mobile, and `.mappage #site-header` on desktop
+$nav_fg: #fff; // text color for `.nav-menu a` on desktop
+$nav_fg_hover: $color-borsetshire-blue; // hover text color for `.nav-menu a`
+
+$col_big_numbers: #ccc; // text color for ol.big-numbers list item counters on homepage
+
+$col_click_map: gray; // background for .big-green-banner on map page
+
+$col_fixed_label: #00BD08;
+$col_fixed_label_dark: #4B8304;
+
+$header-top-border: false;
+
+$mappage-header-height: 5em; // 3em #site-logo plus 1em padding top and bottom
+
+$body-font: Cabin, "Calibri", "Gill Sans", "Gill Sans MT", sans-serif;
+$meta-font: $body-font;
+$heading-font: $body-font; \ No newline at end of file
diff --git a/web/cobrands/borsetshire/_council-header.scss b/web/cobrands/borsetshire/_council-header.scss
new file mode 100644
index 000000000..73d531489
--- /dev/null
+++ b/web/cobrands/borsetshire/_council-header.scss
@@ -0,0 +1,74 @@
+.nav-wrapper {
+ top: 5em;
+}
+
+#main-nav {
+ min-height: 3.5em;
+}
+
+.site-header__fake-nav {
+ display: block;
+ position: absolute;
+ top: 1em;
+ right: 1em;
+ height: $mappage-header-height - 2em;
+ margin: 0 -1em;
+ @include flex-container();
+ @include flex-align(center);
+
+ li {
+ padding: 0 1em;
+ margin: 0;
+ list-style: none;
+ }
+
+ input,
+ span {
+ display: inline-block;
+ height: 38px;
+ vertical-align: top;
+ }
+
+ input {
+ width: 10em;
+ }
+
+ span {
+ line-height: 38px;
+ background-color: $color-borsetshire-blue;
+ padding: 0 1em;
+ }
+}
+
+#site-subheader {
+ display: block;
+ padding: 1em;
+ background: $color-borsetshire-blue;
+ color: #fff;
+
+ h2 {
+ line-height: 24px;
+ margin: 0;
+ }
+}
+
+// Reset all the header customisations on the map page.
+.mappage {
+ .nav-wrapper {
+ top: 0;
+ }
+
+ #main-nav {
+ min-height: $mappage-header-height;
+ }
+
+ #site-subheader,
+ .site-header__fake-nav {
+ display: none;
+ }
+}
+
+// Accommodate the new, taller, header.
+body.twothirdswidthpage .content .sticky-sidebar aside {
+ top: 10em;
+}
diff --git a/web/cobrands/borsetshire/base.scss b/web/cobrands/borsetshire/base.scss
new file mode 100644
index 000000000..813c0fc59
--- /dev/null
+++ b/web/cobrands/borsetshire/base.scss
@@ -0,0 +1,24 @@
+@import "../sass/h5bp";
+@import "./_colours";
+@import "../sass/mixins";
+
+@import "../sass/base";
+
+#site-logo {
+ background-position: 0 0;
+ background-size: 120px 32px;
+ height: 32px;
+ width: 120px;
+ @include high-dpi-background-image('images/site-logo-mobile');
+}
+
+#site-header {
+ .container {
+ padding: 1em; // up from default `0 1em`
+ }
+}
+
+#site-subheader,
+.site-header__fake-nav {
+ display: none;
+}
diff --git a/web/cobrands/borsetshire/google_maps_style.js b/web/cobrands/borsetshire/google_maps_style.js
new file mode 100644
index 000000000..b443109c5
--- /dev/null
+++ b/web/cobrands/borsetshire/google_maps_style.js
@@ -0,0 +1 @@
+var fixmystreet_google_maps_custom_style=[{"featureType":"all","elementType":"labels.text.fill","stylers":[{"color":"#000000"}]},{"featureType":"all","elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#ffffff"},{"weight":"4"}]},{"featureType":"all","elementType":"labels.icon","stylers":[{"visibility":"on"},{"saturation":"-100"}]},{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#ffffff"},{"lightness":20},{"visibility":"on"}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#000000"},{"lightness":17},{"weight":1.2}]},{"featureType":"administrative.locality","elementType":"all","stylers":[{"visibility":"on"}]},{"featureType":"administrative.neighborhood","elementType":"all","stylers":[{"visibility":"on"}]},{"featureType":"administrative.land_parcel","elementType":"all","stylers":[{"visibility":"on"},{"lightness":"80"}]},{"featureType":"landscape","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"landscape","elementType":"geometry","stylers":[{"lightness":20},{"color":"#ffffff"}]},{"featureType":"landscape.natural.landcover","elementType":"all","stylers":[{"visibility":"on"}]},{"featureType":"landscape.natural.terrain","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#d7e8a8"},{"lightness":21},{"visibility":"on"}]},{"featureType":"poi.park","elementType":"geometry.fill","stylers":[{"color":"#d7e8a8"}]},{"featureType":"poi.sports_complex","elementType":"geometry.fill","stylers":[{"color":"#d7e8a8"}]},{"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#fed41c"},{"visibility":"on"},{"weight":"3.00"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#fed41c"},{"gamma":"0.6"}]},{"featureType":"road.highway.controlled_access","elementType":"geometry","stylers":[{"visibility":"on"},{"color":"#fed41c"},{"weight":"4.00"}]},{"featureType":"road.highway.controlled_access","elementType":"geometry.stroke","stylers":[{"weight":"1"},{"gamma":"0.6"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#aeaeae"},{"lightness":18},{"visibility":"on"}]},{"featureType":"road.arterial","elementType":"geometry.stroke","stylers":[{"color":"#b6b6b6"}]},{"featureType":"road.local","elementType":"all","stylers":[{"visibility":"on"},{"color":"#656565"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#c6c6c6"},{"lightness":16}]},{"featureType":"road.local","elementType":"geometry.stroke","stylers":[{"color":"#b1b1b1"},{"visibility":"on"}]},{"featureType":"road.local","elementType":"labels.text.stroke","stylers":[{"visibility":"on"},{"color":"#ffffff"}]},{"featureType":"transit","elementType":"geometry","stylers":[{"color":"#bdbdbd"},{"lightness":19},{"visibility":"on"}]},{"featureType":"transit.station.airport","elementType":"geometry.fill","stylers":[{"color":"#dddddd"}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#95d4ff"},{"lightness":17},{"visibility":"on"}]}];
diff --git a/web/cobrands/borsetshire/images/site-logo-mobile.png b/web/cobrands/borsetshire/images/site-logo-mobile.png
new file mode 100644
index 000000000..b12c9d3e2
--- /dev/null
+++ b/web/cobrands/borsetshire/images/site-logo-mobile.png
Binary files differ
diff --git a/web/cobrands/borsetshire/images/site-logo-mobile.svg b/web/cobrands/borsetshire/images/site-logo-mobile.svg
new file mode 100644
index 000000000..89aeeabae
--- /dev/null
+++ b/web/cobrands/borsetshire/images/site-logo-mobile.svg
@@ -0,0 +1 @@
+<svg width="120" height="32" viewBox="0 0 120 32" xmlns="http://www.w3.org/2000/svg"><title>site-logo-mobile</title><g fill="none" fill-rule="evenodd"><path d="M46.837 4.427c0 .316-.034.63-.1.94-.067.31-.174.6-.32.875-.146.273-.337.514-.574.72-.237.207-.52.365-.848.474v.11c.29.073.568.182.83.328.26.146.49.344.683.593.195.25.35.553.466.912.115.358.173.78.173 1.267 0 .656-.113 1.225-.338 1.705-.226.48-.53.873-.913 1.177-.383.303-.83.528-1.34.674-.51.145-1.052.218-1.624.218h-.656c-.268 0-.557-.01-.867-.027-.31-.018-.63-.046-.957-.082-.33-.037-.633-.09-.912-.164V1.562c.402-.073.898-.137 1.487-.19.59-.056 1.177-.083 1.76-.083.536 0 1.05.042 1.542.127.49.085.923.243 1.294.475.37.23.666.55.884.957.22.406.33.932.33 1.577zm-3.85 8.007c.512 0 .93-.164 1.26-.492.328-.33.492-.81.492-1.44 0-.402-.056-.722-.165-.96-.11-.236-.255-.418-.438-.546-.182-.128-.392-.21-.63-.246-.236-.037-.482-.055-.738-.055h-.93v3.63c.096.036.264.064.5.082.238.018.454.027.648.027zm-.62-5.545c.135 0 .29-.01.466-.028.176-.018.32-.04.43-.064.35-.134.652-.353.902-.657.25-.303.374-.698.374-1.184 0-.316-.044-.584-.13-.803-.084-.22-.2-.392-.346-.52-.146-.127-.32-.218-.52-.273-.2-.055-.416-.082-.647-.082-.5 0-.85.024-1.058.073v3.54h.528zm5.747 2.79c0-1.617.316-2.82.948-3.612.632-.79 1.514-1.185 2.645-1.185 1.216 0 2.122.4 2.718 1.204.595.802.893 2 .893 3.593 0 1.63-.316 2.836-.948 3.62-.632.785-1.52 1.177-2.663 1.177-2.396 0-3.593-1.6-3.593-4.797zm2.243 0c0 .912.103 1.617.31 2.116.207.498.553.748 1.04.748.462 0 .805-.216 1.03-.648.225-.432.338-1.17.338-2.216 0-.936-.103-1.648-.31-2.134-.207-.486-.56-.73-1.058-.73-.426 0-.757.216-.994.648-.237.432-.356 1.17-.356 2.216zm10.506-2.408c-.29-.11-.56-.164-.802-.164-.328 0-.61.09-.847.274-.237.182-.4.438-.484.766v6.092h-2.17V5.12h1.66l.254 1.094h.073c.158-.4.386-.714.684-.94.3-.224.642-.336 1.03-.336.293 0 .58.06.86.182l-.257 2.152zm4.104 4.542c0-.255-.082-.47-.246-.647-.163-.177-.373-.34-.628-.493-.256-.152-.526-.307-.812-.465-.286-.16-.556-.354-.812-.585-.255-.23-.465-.51-.63-.84-.163-.327-.245-.74-.245-1.24 0-.85.23-1.507.693-1.97.462-.46 1.143-.692 2.043-.692.534 0 1.04.058 1.513.173.474.116.85.26 1.13.43l-.51 1.677c-.23-.097-.51-.192-.84-.283-.327-.09-.65-.137-.966-.137-.596 0-.893.25-.893.748 0 .232.082.424.246.576.164.152.374.3.63.447.254.146.525.298.81.456.286.157.557.354.812.59.256.24.466.527.63.868.164.34.246.76.246 1.258 0 .84-.255 1.514-.766 2.025-.51.512-1.27.767-2.28.767-.5 0-.988-.06-1.468-.182s-.867-.28-1.16-.475l.603-1.75c.256.145.55.273.885.382.334.11.684.165 1.05.165.278 0 .51-.064.692-.192.182-.128.273-.33.273-.61zm9.485 1.75c-.304.27-.717.488-1.24.658-.523.17-1.07.255-1.642.255-.632 0-1.176-.11-1.632-.328-.456-.22-.83-.536-1.122-.95-.292-.413-.508-.915-.648-1.504-.14-.59-.21-1.262-.21-2.016 0-1.642.326-2.855.977-3.64.65-.783 1.553-1.175 2.708-1.175.39 0 .766.057 1.13.173.366.115.69.31.977.584.286.273.517.638.693 1.094.176.456.265 1.03.265 1.724 0 .267-.016.553-.046.857-.03.304-.076.632-.137.985h-4.432c.024.754.182 1.33.474 1.733.292.4.76.602 1.405.602.39 0 .744-.06 1.067-.183.32-.12.567-.25.737-.383l.675 1.515zm-2.845-6.84c-.462 0-.81.187-1.04.557-.23.372-.365.892-.4 1.56h2.516c.036-.692-.037-1.218-.22-1.577-.18-.36-.467-.538-.856-.538zm3.775-1.604h1.004V3.405l2.17-.674v2.39h1.77v1.933h-1.77v3.977c0 .523.052.894.155 1.112.105.22.29.33.558.33.182 0 .346-.02.492-.056.146-.036.304-.09.474-.164l.274 1.733c-.268.133-.578.246-.93.337-.353.09-.724.137-1.113.137-.693 0-1.213-.202-1.56-.603-.346-.4-.52-1.076-.52-2.025v-4.78h-1.003V5.12zm9.084 6.694c0-.255-.082-.47-.246-.647-.164-.177-.374-.34-.63-.493-.255-.152-.526-.307-.81-.465-.287-.16-.558-.354-.813-.585-.255-.23-.465-.51-.63-.84-.163-.327-.245-.74-.245-1.24 0-.85.23-1.507.693-1.97.462-.46 1.143-.692 2.043-.692.535 0 1.04.058 1.513.173.476.116.853.26 1.132.43l-.51 1.677c-.23-.097-.51-.192-.84-.283-.328-.09-.65-.137-.966-.137-.596 0-.894.25-.894.748 0 .232.082.424.246.576.164.152.374.3.63.447.255.146.526.298.81.456.287.157.558.354.813.59.256.24.466.527.63.868.164.34.246.76.246 1.258 0 .84-.255 1.514-.766 2.025-.51.512-1.27.767-2.28.767-.498 0-.988-.06-1.468-.182s-.866-.28-1.158-.475l.602-1.75c.255.145.55.273.884.382.335.11.684.165 1.05.165.28 0 .51-.064.692-.192.183-.128.274-.33.274-.61zm7.843 2.426V8.732c0-.657-.077-1.13-.23-1.423-.15-.293-.428-.44-.83-.44-.29 0-.558.104-.8.31-.245.208-.41.47-.494.785v6.275h-2.17V1.472h2.17v4.47h.055c.244-.317.54-.573.886-.767.346-.195.78-.292 1.304-.292.377 0 .705.055.985.164.28.11.516.292.71.547.196.256.34.6.44 1.03.096.432.145.977.145 1.633v5.983h-2.17zm3.848-9.12h2.17v9.12h-2.17V5.12zm-.256-2.572c0-.365.116-.666.347-.903.23-.237.558-.355.984-.355.426 0 .766.115 1.02.346.257.23.384.535.384.912s-.127.675-.383.894c-.255.22-.595.328-1.02.328-.427 0-.755-.112-.986-.337-.232-.225-.348-.52-.348-.885zm8.482 4.724c-.292-.11-.56-.164-.803-.164-.327 0-.61.09-.847.274-.237.182-.398.438-.483.766v6.092h-2.17V5.12h1.66l.255 1.094h.073c.158-.4.386-.714.684-.94.297-.224.64-.336 1.03-.336.292 0 .578.06.857.182l-.256 2.152zm7.205 6.293c-.305.268-.72.487-1.242.657-.522.17-1.07.255-1.64.255-.633 0-1.178-.11-1.634-.328-.456-.22-.83-.536-1.12-.95-.293-.413-.51-.915-.65-1.504-.14-.59-.21-1.262-.21-2.016 0-1.642.327-2.855.977-3.64.652-.783 1.555-1.175 2.71-1.175.39 0 .766.057 1.13.173.366.115.69.31.977.584.285.273.516.638.693 1.094.176.456.264 1.03.264 1.724 0 .267-.015.553-.045.857-.032.304-.077.632-.138.985h-4.433c.024.754.182 1.33.474 1.733.292.4.76.602 1.404.602.39 0 .745-.06 1.067-.183.322-.12.57-.25.74-.383l.674 1.515zm-2.847-6.84c-.462 0-.808.186-1.04.556-.23.372-.364.892-.4 1.56h2.517c.036-.692-.037-1.218-.22-1.577-.182-.36-.468-.538-.857-.538zM43.45 28.972c-1.248 0-2.272-.41-3.073-1.232-.8-.82-1.2-1.905-1.2-3.252 0-1.347.4-2.43 1.2-3.252.8-.822 1.825-1.232 3.074-1.232.92 0 1.73.168 2.428.505l-.16 1.366c-.912-.337-1.668-.505-2.267-.505-.862 0-1.525.29-1.99.863-.463.575-.695 1.327-.695 2.255 0 .928.232 1.68.696 2.255.465.574 1.128.862 1.99.862.642 0 1.397-.168 2.268-.505l.16 1.367c-.69.337-1.5.505-2.427.505zm6.124-.05c-.945 0-1.694-.303-2.248-.91-.555-.608-.832-1.364-.832-2.267 0-.896.277-1.65.832-2.26.554-.613 1.303-.92 2.248-.92.944 0 1.694.307 2.248.92.555.61.832 1.364.832 2.26 0 .903-.277 1.66-.832 2.267-.554.607-1.304.91-2.248.91zm0-5.173c-.518 0-.922.18-1.214.54-.29.362-.437.847-.437 1.455 0 .616.146 1.104.437 1.466.292.362.696.543 1.214.543.517 0 .922-.18 1.213-.542.292-.36.438-.85.438-1.465 0-.608-.146-1.093-.438-1.454-.29-.36-.696-.54-1.213-.54zm9.4 5.05h-1.28l-.063-.456c-.4.386-.89.58-1.465.58-1.66 0-2.49-.958-2.49-2.87v-3.377h1.394v3.277c0 .608.1 1.055.307 1.343.205.287.53.43.973.43.542 0 .953-.188 1.232-.566v-4.483h1.392V28.8zm6.912 0h-1.393v-3.314c0-.6-.104-1.04-.314-1.318-.21-.28-.55-.42-1.017-.42-.575 0-1.014.202-1.318.604V28.8h-1.393v-6.123h1.257l.048.456c.477-.378.994-.567 1.553-.567 1.717 0 2.576.973 2.576 2.92V28.8zm4.533-1.023l-.124 1.146h-1.06c-.54 0-.948-.152-1.22-.456-.27-.304-.406-.673-.406-1.108v-3.55h-.924l.124-1.133h.8v-1.392l1.393-.148v1.54h1.43v1.133h-1.43v2.908c0 .5.05.803.154.905.102.103.396.154.88.154h.382zm6.75-5.1l-3.806 9.104h-1.442l1.38-3.35-2.55-5.753h1.552l1.676 4.127 1.638-4.127h1.553zm7.565 6.295c-1.248 0-2.273-.41-3.074-1.232-.8-.82-1.2-1.905-1.2-3.252 0-1.347.4-2.43 1.2-3.252.802-.822 1.827-1.232 3.075-1.232.92 0 1.73.168 2.427.505l-.16 1.366c-.912-.337-1.667-.505-2.267-.505-.862 0-1.525.29-1.99.863-.464.575-.696 1.327-.696 2.255 0 .928.23 1.68.696 2.255.464.574 1.127.862 1.99.862.64 0 1.395-.168 2.266-.505l.16 1.367c-.69.337-1.5.505-2.427.505zm6.123-.05c-.944 0-1.694-.303-2.248-.91-.555-.608-.832-1.364-.832-2.267 0-.896.277-1.65.832-2.26.554-.613 1.304-.92 2.248-.92.945 0 1.694.307 2.25.92.553.61.83 1.364.83 2.26 0 .903-.277 1.66-.83 2.267-.556.607-1.305.91-2.25.91zm0-5.173c-.517 0-.922.18-1.213.54-.292.362-.438.847-.438 1.455 0 .616.146 1.104.438 1.466.29.362.696.543 1.213.543.518 0 .922-.18 1.214-.542.29-.36.437-.85.437-1.465 0-.608-.147-1.093-.438-1.454-.292-.36-.696-.54-1.214-.54zm9.4 5.05h-1.28l-.062-.456c-.403.386-.892.58-1.467.58-1.66 0-2.49-.958-2.49-2.87v-3.377h1.393v3.277c0 .608.103 1.055.308 1.343.206.287.53.43.974.43.542 0 .953-.188 1.232-.566v-4.483h1.392V28.8zm6.912 0h-1.392v-3.314c0-.6-.105-1.04-.314-1.318-.21-.28-.55-.42-1.017-.42-.575 0-1.014.202-1.318.604V28.8h-1.393v-6.123h1.256l.05.456c.476-.378.994-.567 1.552-.567 1.717 0 2.575.973 2.575 2.92V28.8zm4.03.123c-.954 0-1.69-.304-2.213-.91-.52-.61-.782-1.365-.782-2.268 0-.912.26-1.67.782-2.273.522-.604 1.26-.906 2.212-.906.762 0 1.378.144 1.847.43l-.148 1.21c-.51-.305-1.036-.457-1.578-.457s-.96.177-1.25.535c-.292.357-.438.844-.438 1.46 0 .607.148 1.094.443 1.46.296.365.71.548 1.245.548.542 0 1.072-.152 1.59-.456l.135 1.17c-.47.304-1.085.456-1.848.456zm4.323-7.306h-1.405v-1.44h1.405v1.44zm0 7.183h-1.405v-6.123h1.405V28.8zm3.67-1.023l-.134 1.146h-.494c-.526 0-.92-.148-1.183-.443-.263-.296-.394-.67-.394-1.12v-7.8h1.403v7.17c0 .485.046.78.136.887.09.107.31.16.664.16z" fill="#FFF"/><path d="M16.826 19.967C9.006 20.675 2.15 21.717 0 22.4V32h32V19.2c-1.418 0-2.887.028-4.382.078.547.913.862 1.98.862 3.122 0 3.358-2.722 6.08-6.08 6.08s-6.08-2.722-6.08-6.08c0-.865.18-1.688.506-2.433zM22.4 27.2c2.65 0 4.8-2.15 4.8-4.8s-2.15-4.8-4.8-4.8-4.8 2.15-4.8 4.8 2.15 4.8 4.8 4.8z" fill="#F4D659"/><path d="M17.64 18.615C9.488 19.323 2.224 20.413 0 21.12V32h32V17.92c-1.73 0-3.533.04-5.368.114-1.095-1.06-2.587-1.714-4.232-1.714-1.927 0-3.645.896-4.76 2.295zM0 9.6c8.16 0 23.36 3.2 32 3.2V32H0V9.6z" fill="#A6C257"/><path d="M0 0h32v32H0V0zm0 8.32c8.16 0 23.36 3.2 32 3.2V32H0V8.32z" fill="#95D4FF"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/borsetshire/images/site-logo-mobile@2x.png b/web/cobrands/borsetshire/images/site-logo-mobile@2x.png
new file mode 100644
index 000000000..d19fdcebb
--- /dev/null
+++ b/web/cobrands/borsetshire/images/site-logo-mobile@2x.png
Binary files differ
diff --git a/web/cobrands/borsetshire/images/site-logo.png b/web/cobrands/borsetshire/images/site-logo.png
new file mode 100644
index 000000000..31185ec8c
--- /dev/null
+++ b/web/cobrands/borsetshire/images/site-logo.png
Binary files differ
diff --git a/web/cobrands/borsetshire/images/site-logo.svg b/web/cobrands/borsetshire/images/site-logo.svg
new file mode 100644
index 000000000..308d82c76
--- /dev/null
+++ b/web/cobrands/borsetshire/images/site-logo.svg
@@ -0,0 +1 @@
+<svg width="180" height="48" viewBox="0 0 180 48" xmlns="http://www.w3.org/2000/svg"><title>site-logo</title><g fill="none" fill-rule="evenodd"><path d="M70.255 6.64c0 .475-.05.944-.15 1.41-.1.464-.26.902-.48 1.313-.218.41-.505.77-.86 1.08-.357.31-.78.548-1.273.712v.164c.438.108.853.272 1.245.49.392.22.734.517 1.026.89.292.374.524.83.697 1.37.174.537.26 1.17.26 1.9 0 .985-.168 1.838-.506 2.558-.337.72-.793 1.31-1.368 1.765-.574.456-1.245.793-2.01 1.012-.767.22-1.58.33-2.436.33h-.985c-.4 0-.834-.015-1.3-.042-.465-.028-.943-.07-1.436-.124-.493-.055-.95-.137-1.37-.247V2.345c.603-.11 1.346-.205 2.23-.287.886-.083 1.766-.124 2.64-.124.804 0 1.574.064 2.313.192.74.128 1.386.365 1.943.71.556.348.998.827 1.327 1.438.328.61.492 1.4.492 2.366zm-5.773 12.01c.766 0 1.396-.245 1.888-.737.493-.493.74-1.213.74-2.162 0-.6-.083-1.08-.247-1.435-.165-.356-.383-.63-.657-.82-.274-.193-.588-.316-.944-.37-.356-.055-.725-.082-1.108-.082H62.76v5.444c.144.055.395.096.75.123.357.028.68.04.972.04zm-.93-8.316c.2 0 .433-.014.698-.04.264-.028.478-.06.643-.097.53-.2.98-.53 1.354-.985.374-.456.56-1.05.56-1.778 0-.474-.063-.876-.19-1.204-.128-.328-.302-.588-.52-.78-.22-.19-.48-.328-.78-.41-.3-.082-.625-.123-.972-.123-.747 0-1.276.036-1.586.11v5.307h.792zm8.618 4.186c0-2.426.475-4.232 1.423-5.417.95-1.186 2.27-1.78 3.967-1.78 1.824 0 3.183.603 4.077 1.807.894 1.204 1.34 3 1.34 5.39 0 2.444-.474 4.254-1.422 5.43-.95 1.177-2.28 1.766-3.995 1.766-3.593 0-5.39-2.4-5.39-7.196zm3.366 0c0 1.368.155 2.426.465 3.174.31.748.83 1.122 1.56 1.122.693 0 1.21-.324 1.546-.972.338-.647.506-1.755.506-3.324 0-1.404-.155-2.472-.465-3.2-.31-.73-.84-1.096-1.587-1.096-.638 0-1.135.324-1.49.972-.356.647-.534 1.755-.534 3.324zm15.76-3.612c-.44-.164-.84-.246-1.205-.246-.49 0-.915.137-1.27.41-.357.274-.598.657-.726 1.15v9.138h-3.256V7.68h2.49l.383 1.642h.11c.237-.602.58-1.072 1.026-1.41.447-.337.962-.506 1.546-.506.438 0 .867.092 1.286.274l-.383 3.228zm6.155 6.813c0-.382-.122-.706-.368-.97-.247-.265-.56-.51-.944-.74-.383-.227-.79-.46-1.218-.697-.428-.237-.834-.53-1.217-.875-.383-.347-.698-.766-.944-1.26-.247-.49-.37-1.11-.37-1.86 0-1.276.346-2.26 1.04-2.954.692-.693 1.714-1.04 3.063-1.04.803 0 1.56.087 2.27.26.713.174 1.278.388 1.698.643l-.765 2.517c-.347-.146-.767-.287-1.26-.424-.49-.137-.975-.205-1.45-.205-.893 0-1.34.374-1.34 1.122 0 .346.123.634.37.862.246.227.56.45.944.67.382.218.787.446 1.216.683.43.237.835.533 1.218.89.383.355.697.788.944 1.3.246.51.37 1.14.37 1.887 0 1.258-.384 2.27-1.15 3.037-.766.766-1.906 1.15-3.42 1.15-.748 0-1.482-.093-2.203-.275-.72-.182-1.3-.42-1.737-.71l.903-2.628c.384.22.826.41 1.328.575.5.163 1.026.245 1.573.245.42 0 .767-.096 1.04-.287.274-.192.41-.497.41-.917zm14.228 2.628c-.456.4-1.076.73-1.86.985-.785.255-1.605.383-2.463.383-.948 0-1.764-.164-2.448-.493-.684-.328-1.245-.802-1.683-1.423-.438-.62-.762-1.372-.97-2.257-.21-.884-.316-1.892-.316-3.023 0-2.462.488-4.282 1.464-5.458.976-1.177 2.33-1.765 4.063-1.765.583 0 1.15.087 1.696.26.548.173 1.036.465 1.465.875.43.41.775.958 1.04 1.642.264.684.396 1.546.396 2.586 0 .4-.022.83-.067 1.285-.046.456-.114.95-.205 1.478h-6.65c.038 1.13.275 1.997.713 2.6.438.6 1.14.902 2.107.902.584 0 1.117-.09 1.6-.274.484-.18.854-.373 1.11-.573l1.01 2.27zm-4.268-10.26c-.693 0-1.213.278-1.56.834-.346.556-.547 1.336-.6 2.34h3.774c.055-1.04-.054-1.83-.328-2.367-.274-.538-.702-.807-1.286-.807zm5.664-2.408h1.504V5.108l3.256-1.012V7.68h2.654v2.9h-2.654v5.965c0 .784.078 1.34.233 1.67.155.327.433.49.834.49.275 0 .52-.026.74-.08.22-.056.456-.138.71-.247l.412 2.6c-.402.2-.867.368-1.396.505-.53.137-1.085.205-1.67.205-1.038 0-1.818-.3-2.338-.903-.52-.6-.78-1.614-.78-3.037V10.58h-1.504v-2.9zM126.7 17.72c0-.382-.124-.706-.37-.97-.247-.265-.56-.51-.944-.74-.383-.227-.79-.46-1.218-.697-.43-.237-.834-.53-1.217-.875-.382-.347-.697-.766-.943-1.26-.247-.49-.37-1.11-.37-1.86 0-1.276.347-2.26 1.04-2.954.693-.693 1.715-1.04 3.064-1.04.804 0 1.56.087 2.272.26.712.174 1.277.388 1.696.643l-.766 2.517c-.346-.146-.766-.287-1.258-.424-.493-.137-.976-.205-1.45-.205-.894 0-1.34.374-1.34 1.122 0 .346.122.634.368.862.247.227.56.45.944.67.383.218.79.446 1.218.683.43.237.834.533 1.217.89.384.355.7.788.945 1.3.247.51.37 1.14.37 1.887 0 1.258-.383 2.27-1.15 3.037-.765.766-1.905 1.15-3.42 1.15-.747 0-1.48-.093-2.202-.275-.72-.182-1.3-.42-1.737-.71l.903-2.628c.382.22.824.41 1.326.575.5.163 1.026.245 1.573.245.418 0 .765-.096 1.038-.287.274-.192.41-.497.41-.917zm11.764 3.64v-8.263c0-.985-.114-1.696-.342-2.134-.228-.438-.643-.656-1.245-.656-.438 0-.84.155-1.204.465-.365.31-.61.702-.74 1.176v9.412h-3.255V2.208h3.256V8.91h.082c.365-.473.807-.856 1.327-1.148.52-.292 1.172-.438 1.957-.438.565 0 1.057.082 1.477.247.42.165.775.438 1.067.82.292.384.51.9.657 1.547.147.648.22 1.464.22 2.45v8.973h-3.256zm5.773-13.68h3.255v13.68h-3.255V7.68zm-.383-3.858c0-.547.173-.998.52-1.354.346-.356.838-.534 1.477-.534.64 0 1.15.174 1.533.52.383.347.575.803.575 1.368 0 .566-.192 1.013-.575 1.34-.383.33-.894.493-1.532.493s-1.13-.168-1.477-.506c-.346-.338-.52-.78-.52-1.328zm12.722 7.086c-.438-.164-.84-.246-1.204-.246-.492 0-.916.137-1.272.41-.356.274-.597.657-.725 1.15v9.138h-3.256V7.68h2.49l.382 1.642h.11c.236-.602.578-1.072 1.025-1.41.447-.337.962-.506 1.546-.506.438 0 .867.092 1.286.274l-.384 3.228zm10.807 9.44c-.456.4-1.076.73-1.86.985-.785.255-1.605.383-2.463.383-.948 0-1.764-.164-2.448-.493-.684-.328-1.245-.802-1.683-1.423-.44-.62-.763-1.372-.972-2.257-.21-.884-.315-1.892-.315-3.023 0-2.462.488-4.282 1.464-5.458.976-1.177 2.33-1.765 4.063-1.765.583 0 1.15.087 1.696.26.547.173 1.035.465 1.464.875.428.41.775.958 1.04 1.642.264.684.396 1.546.396 2.586 0 .4-.023.83-.068 1.285-.046.456-.114.95-.205 1.478h-6.65c.038 1.13.275 1.997.713 2.6.437.6 1.14.902 2.106.902.584 0 1.117-.09 1.6-.274.484-.18.854-.373 1.11-.573l1.01 2.27zm-4.268-10.26c-.693 0-1.213.278-1.56.834-.346.556-.547 1.336-.6 2.34h3.774c.054-1.04-.055-1.83-.33-2.367-.273-.538-.7-.807-1.285-.807zM65.176 43.46c-1.872 0-3.41-.617-4.61-1.85-1.202-1.23-1.802-2.858-1.802-4.878s.6-3.647 1.802-4.88c1.2-1.23 2.738-1.847 4.61-1.847 1.38 0 2.594.253 3.64.758l-.24 2.05c-1.367-.504-2.5-.756-3.4-.756-1.293 0-2.288.43-2.984 1.293-.696.863-1.044 1.99-1.044 3.382 0 1.392.348 2.52 1.044 3.382.696.862 1.69 1.293 2.984 1.293.96 0 2.095-.252 3.4-.757l.24 2.05c-1.034.506-2.248.76-3.64.76zm9.185-.075c-1.416 0-2.54-.456-3.372-1.368-.83-.91-1.247-2.045-1.247-3.4 0-1.343.417-2.473 1.248-3.39.832-.92 1.956-1.378 3.373-1.378 1.418 0 2.542.458 3.373 1.376.832.918 1.248 2.048 1.248 3.39 0 1.356-.415 2.49-1.247 3.4-.83.913-1.955 1.37-3.372 1.37zm0-7.762c-.775 0-1.382.27-1.82.813-.437.542-.655 1.27-.655 2.18 0 .925.218 1.658.656 2.2.438.542 1.045.813 1.82.813.777 0 1.384-.272 1.82-.814.44-.542.657-1.275.657-2.2 0-.91-.218-1.638-.656-2.18-.436-.542-1.043-.813-1.82-.813zm14.1 7.577h-1.92l-.093-.684c-.604.58-1.337.87-2.2.87-2.488 0-3.732-1.436-3.732-4.307v-5.065h2.088v4.916c0 .913.154 1.584.462 2.015.308.432.795.647 1.46.647.813 0 1.43-.283 1.848-.85v-6.727h2.088V43.2zm10.368 0H96.74v-4.97c0-.9-.157-1.56-.47-1.978-.315-.42-.823-.63-1.526-.63-.862 0-1.52.303-1.977.907v6.67H90.68v-9.185h1.884l.074.684c.714-.568 1.49-.85 2.328-.85 2.575 0 3.862 1.46 3.862 4.38v4.97zm6.8-1.534l-.184 1.72h-1.59c-.812 0-1.422-.23-1.83-.685-.405-.455-.608-1.01-.608-1.662v-5.322h-1.386l.184-1.7h1.202v-2.09l2.088-.22v2.31h2.144v1.7h-2.144v4.36c0 .752.077 1.205.23 1.36.155.153.595.23 1.322.23h.573zm10.128-7.65l-5.71 13.656h-2.162l2.07-5.026-3.826-8.63h2.328l2.514 6.19 2.458-6.19h2.328zm11.347 9.443c-1.873 0-3.41-.617-4.61-1.85-1.202-1.23-1.803-2.858-1.803-4.878s.6-3.647 1.802-4.88c1.2-1.23 2.738-1.847 4.61-1.847 1.38 0 2.594.253 3.64.758l-.24 2.05c-1.366-.504-2.5-.756-3.4-.756-1.293 0-2.288.43-2.984 1.293-.696.863-1.044 1.99-1.044 3.382 0 1.392.348 2.52 1.044 3.382.696.862 1.69 1.293 2.985 1.293.96 0 2.094-.252 3.4-.757l.24 2.05c-1.035.506-2.248.76-3.64.76zm9.184-.075c-1.416 0-2.54-.456-3.372-1.368-.832-.91-1.248-2.045-1.248-3.4 0-1.343.416-2.473 1.248-3.39.83-.92 1.956-1.378 3.372-1.378 1.417 0 2.54.458 3.373 1.376.832.918 1.247 2.048 1.247 3.39 0 1.356-.415 2.49-1.247 3.4-.832.913-1.956 1.37-3.373 1.37zm0-7.762c-.776 0-1.383.27-1.82.813-.437.542-.656 1.27-.656 2.18 0 .925.22 1.658.657 2.2.437.542 1.044.813 1.82.813.777 0 1.383-.272 1.82-.814.438-.542.657-1.275.657-2.2 0-.91-.22-1.638-.656-2.18-.438-.542-1.044-.813-1.82-.813zm14.1 7.577h-1.92l-.094-.684c-.603.58-1.336.87-2.2.87-2.487 0-3.732-1.436-3.732-4.307v-5.065h2.09v4.916c0 .913.153 1.584.46 2.015.31.432.796.647 1.46.647.814 0 1.43-.283 1.85-.85v-6.727h2.088V43.2zm10.368 0h-2.088v-4.97c0-.9-.157-1.56-.472-1.978-.314-.42-.822-.63-1.524-.63-.862 0-1.52.303-1.977.907v6.67h-2.088v-9.185h1.885l.074.684c.715-.568 1.49-.85 2.33-.85 2.573 0 3.86 1.46 3.86 4.38v4.97zm6.043.185c-1.43 0-2.535-.456-3.317-1.368-.782-.91-1.173-2.045-1.173-3.4 0-1.368.39-2.504 1.174-3.41.783-.905 1.89-1.358 3.318-1.358 1.146 0 2.07.215 2.772.646l-.222 1.81c-.764-.455-1.552-.683-2.365-.683-.813 0-1.44.268-1.876.804-.437.536-.656 1.266-.656 2.19 0 .912.223 1.642.666 2.19.444.548 1.066.822 1.867.822.813 0 1.607-.23 2.384-.685l.203 1.756c-.702.457-1.626.685-2.772.685zm6.486-10.96h-2.106v-2.16h2.106v2.16zm0 10.775h-2.106v-9.185h2.106V43.2zm5.507-1.534l-.202 1.72h-.74c-.788 0-1.38-.223-1.773-.666-.394-.444-.592-1.005-.592-1.682V29.34h2.107v10.755c0 .727.068 1.17.203 1.33.136.16.47.24.998.24z" fill="#FFF"/><path d="M25.24 29.95C13.51 31.014 3.222 32.576 0 33.6V48h48V28.8c-2.127 0-4.33.04-6.573.117.82 1.37 1.293 2.97 1.293 4.683 0 5.037-4.083 9.12-9.12 9.12-5.037 0-9.12-4.083-9.12-9.12 0-1.297.27-2.532.76-3.65zM33.6 40.8c3.976 0 7.2-3.224 7.2-7.2s-3.224-7.2-7.2-7.2-7.2 3.224-7.2 7.2 3.224 7.2 7.2 7.2z" fill="#F4D659"/><path d="M26.462 27.923C14.23 28.983 3.334 30.62 0 31.68V48h48V26.88c-2.593 0-5.3.06-8.052.172-1.642-1.592-3.88-2.572-6.348-2.572-2.89 0-5.467 1.345-7.138 3.443zM0 14.4c12.24 0 35.04 4.8 48 4.8V48H0V14.4z" fill="#A6C257"/><path d="M0 0h48v48H0V0zm0 12.48c12.24 0 35.04 4.8 48 4.8V48H0V12.48z" fill="#95D4FF"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/borsetshire/images/site-logo@2x.png b/web/cobrands/borsetshire/images/site-logo@2x.png
new file mode 100644
index 000000000..1840d6206
--- /dev/null
+++ b/web/cobrands/borsetshire/images/site-logo@2x.png
Binary files differ
diff --git a/web/cobrands/borsetshire/images/street.jpg b/web/cobrands/borsetshire/images/street.jpg
new file mode 100644
index 000000000..d95c7e415
--- /dev/null
+++ b/web/cobrands/borsetshire/images/street.jpg
Binary files differ
diff --git a/web/cobrands/borsetshire/js.js b/web/cobrands/borsetshire/js.js
new file mode 100644
index 000000000..eee78df43
--- /dev/null
+++ b/web/cobrands/borsetshire/js.js
@@ -0,0 +1,26 @@
+(function(){
+
+ function set_redirect(form) {
+ var e = form.email.value;
+ if (e == 'inspector@example.org') {
+ form.r.value = 'my/planned';
+ } else if (e == 'cs@example.org') {
+ form.r.value = 'reports';
+ } else if (e == 'super@example.org') {
+ form.r.value = 'admin';
+ }
+ }
+
+ $('#demo-user-list dt').click(function(){
+ var form = document.forms.general_auth;
+ form.email.value = $(this).text();
+ form.password_sign_in.value = 'password';
+ set_redirect(form);
+ form.submit();
+ });
+
+ $('form[name=general_auth]').on('submit', function() {
+ set_redirect(this);
+ });
+
+})();
diff --git a/web/cobrands/borsetshire/layout.scss b/web/cobrands/borsetshire/layout.scss
new file mode 100644
index 000000000..b6d411e1f
--- /dev/null
+++ b/web/cobrands/borsetshire/layout.scss
@@ -0,0 +1,48 @@
+@import "_colours";
+@import "../sass/layout";
+@import "_council-header";
+
+@import url('https://fonts.googleapis.com/css?family=Cabin:400,400i,700,700i');
+
+#site-logo {
+ background-position: 0 0;
+ background-size: 180px 48px;
+ height: 48px;
+ width: 180px;
+ @include high-dpi-background-image('images/site-logo');
+}
+
+#site-header {
+ background-color: darken($color-borsetshire-blue, 5%);
+}
+
+// Postcode form is left-aligned, and given a background image
+// and a bit more padding than normal.
+#front-main {
+ padding: 4em 1em;
+ text-align: inherit;
+ color: inherit;
+ background: mix(#fff, $color-borsetshire-light-yellow, 50%) url('images/street.jpg') 50% 55% no-repeat;
+ background-size: cover;
+
+ #postcodeForm div {
+ margin: 0;
+ }
+}
+
+// Nav menu items have a bit more padding than normal.
+.nav-menu {
+ a, span {
+ padding: 0.5em 0.75em;
+ border-radius: 0.2em;
+ }
+
+ span {
+ color: $color-borsetshire-light-yellow;
+ }
+
+ a.report-a-problem-btn {
+ padding: 0.5em 0.75em;
+ margin: 0 0.5em 0 0;
+ }
+}
diff --git a/web/cobrands/bristol/_colours.scss b/web/cobrands/bristol/_colours.scss
index 82837b976..02764ab43 100644
--- a/web/cobrands/bristol/_colours.scss
+++ b/web/cobrands/bristol/_colours.scss
@@ -23,9 +23,11 @@ $base_bg: white;
$base_fg: $g1;
$map_nav_bg: $g1;
-$nav_fg: $b4;
+$nav_fg: #fff;
$nav_fg_hover: $primary;
+$header-top-border: false;
+
$col_click_map: $g1;
$col_click_map_dark: darken($g1, 10%);
diff --git a/web/cobrands/bristol/base.scss b/web/cobrands/bristol/base.scss
index c92b46ec3..8f61d2a5b 100644
--- a/web/cobrands/bristol/base.scss
+++ b/web/cobrands/bristol/base.scss
@@ -10,21 +10,19 @@
#site-logo {
@extend %bold-font;
- background: url(/cobrands/bristol/img/bcclogo.png) 0 0 no-repeat;
+ height: auto;
+ background: url(/cobrands/bristol/img/bcclogo.png) 0 50% no-repeat;
background-size: 37px;
text-indent: 47px;
line-height: 37px;
font-size: 24px;
- padding: 0;
+ padding: 0.5em 0;
margin: 0;
color: white;
}
#site-header {
- height: 3.5em;
border-bottom: solid 5px $bcc_red;
- border-top-color: $g1;
- background: $g1; // Can't use background-color as it's ignored in favour of existing background
}
// Style the Bristol footer correctly
diff --git a/web/cobrands/bristol/layout.scss b/web/cobrands/bristol/layout.scss
index 3b9dfa1b6..7000e8277 100644
--- a/web/cobrands/bristol/layout.scss
+++ b/web/cobrands/bristol/layout.scss
@@ -3,14 +3,11 @@
@import "../sass/layout";
#site-header {
- background-color: $g1;
- background: $g1;
border-bottom: none;
}
-// Don't display a border atop the page
-.nav-wrapper .nav-wrapper-2 {
- border-top: none;
+#main-nav {
+ float: none;
}
body.frontpage, body.twothirdswidthpage, body.fullwidthpage, body.authpage {
@@ -20,20 +17,14 @@ body.frontpage, body.twothirdswidthpage, body.fullwidthpage, body.authpage {
background-size: 81px 81px;
text-indent: 122px;
height: 111px;
+ width: 11em;
line-height: 111px;
font-size: 30px;
- // Getting rid of absolute positioning allows us to style the BCC nav below nicely
- position: static;
+ padding: 0;
}
- // Make sure the header is only as tall as it needs to be
+ // White "nav bar" with red border-top, below the logo
#site-header {
- height: auto;
-
- .container {
- min-height: 0;
- }
-
&:after {
content: " ";
height: 3.5em;
@@ -74,8 +65,6 @@ body.frontpage, body.twothirdswidthpage, body.fullwidthpage, body.authpage {
.nav-menu {
// Put the main FMS navigation below the Bristol header
- float: left;
- width: 100%;
margin-top: 7.25em;
a, span {
@@ -101,57 +90,44 @@ body.frontpage, body.twothirdswidthpage, body.fullwidthpage, body.authpage {
background-color: transparent;
}
- // Stop .nav-wrapper from preventing the logo being clicked
- .nav-wrapper .nav-wrapper-2 {
- height: 0;
- min-height: 0;
- }
-
// Put FAQ side nav at correct vertical position
.content .sticky-sidebar aside {
- top: 14.5em;
+ top: 12.5em;
}
}
body.mappage {
- // Stop the header being too tall
+ // Add a red border-bottom *inside* the header
#site-header {
- min-height: 79px;
-
- .container {
- min-height: 0;
+ @include box-sizing(border-box);
+ border-bottom: solid 5px $bcc_red;
+ }
- #site-logo {
- top: 0.5em;
- line-height: 44px;
- }
- }
+ // Reinstate the floated nav bar on map pages
+ #main-nav {
+ float: right;
}
+ // A few changes to the nav items now they're on a black background
.nav-menu {
a, span {
- text-decoration: none;
color: white;
font-size: 1.1em;
- padding: 1em 0.75em 0.95em;
}
+
a:hover {
background: transparent;
text-decoration: underline;
}
+
a.report-a-problem-btn {
color: white;
- margin: 0.5em 0.25em 0.45em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+
&:hover {
background-color: lighten($bcc_red, 5%);
- };
- }
- }
-
- // Haven't quite figured out why this can't go on #site-header
- .nav-wrapper {
- .nav-wrapper-2 {
- border-bottom: solid 5px $bcc_red;
+ }
}
}
diff --git a/web/cobrands/bromley/_colours.scss b/web/cobrands/bromley/_colours.scss
index c36182ff8..53dfcfc8a 100644
--- a/web/cobrands/bromley/_colours.scss
+++ b/web/cobrands/bromley/_colours.scss
@@ -20,3 +20,8 @@ $nav_fg_hover: #444;
$col_click_map: $bromley_blue;
$col_fixed_label: $bromley_blue;
$col_fixed_label_dark: darken($bromley_blue, 10%);
+
+$header-top-border-width: 4px;
+
+// Override the container width to match Bromley' site, which is wider
+$container-max-width: 1200px;
diff --git a/web/cobrands/bromley/base.scss b/web/cobrands/bromley/base.scss
index 0d028d190..e6c29bed2 100644
--- a/web/cobrands/bromley/base.scss
+++ b/web/cobrands/bromley/base.scss
@@ -7,37 +7,18 @@
@import "../sass/report_list_pins";
// Override the site logo
-#site-logo{
- display: block;
+#site-logo {
width: 80px;
height: 44px;
- top: 0.4em;
- left: 0.5em;
background: url('/cobrands/bromley/bromley-logo.s.png') 0 0 no-repeat;
text-indent: -999999px;
- position: absolute;
z-index:2;
}
-// Change the colour and size of the site header to suit
-#site-header {
- background: $base_bg;
-}
-// We don't want a fixed height header on any page except the map page because
-// it includes lots of other stuff there, including a dynamic drop-down menu
-// that changes height
-body.fullwidthpage,
-body.twothirdswidthpage {
- #site-header {
- height: auto;
- }
-}
-
-// On the map page, we need slightly more space for our logo
-body.mappage {
- #site-header {
- height: 3.5em;
- }
+#nav-link {
+ top: 7px;
+ right: 0.5em;
+ transform: none;
}
// Reset form placeholders so that they match Bromley's
@@ -81,16 +62,9 @@ body.frontpage.fullwidthpage {
.bromley-header {
// These are from Bromley's styles, applied here because it's the closest
// analog to their site header.
- padding: 0 10px;
padding-top: 1em;
}
-// Add a border to this to approximate Bromley's border between the breadcrumb
-// and A-Z menu
-.main-menu-container {
- border-top: 1px solid #e2e2e2;
-}
-
// Override the links to match Bromley's
a {
text-decoration:none;
@@ -145,11 +119,11 @@ h1,h2,h3,h4,h5 {
// Bromley's styles for the .top-links nav
.top-links {
- margin-top: 44px; // Needed to push it below FMS' mobile menu bar
+ // Needed to push it below FMS' mobile menu bar
+ margin: 0 0 13px;
display: block;
width: 100%;
text-align: center;
- margin-bottom:13px;
li {
display: inline-block;
padding: 0 10px;
@@ -213,6 +187,7 @@ h1,h2,h3,h4,h5 {
height: 42px;
line-height: 0;
padding: 1.3em 1em;
+ margin: 0 0 0 -3px;
border: 1px solid #647890;
width: 20%;
opacity: 1;
@@ -222,7 +197,6 @@ h1,h2,h3,h4,h5 {
background: #647890 url("search-icon.png") no-repeat center center !important;
text-indent: -10000px;
border-radius: 0 5px 5px 0;
- margin-left: -3px;
}
}
@@ -273,10 +247,13 @@ input.field, input.text,
}
// Bromley's silly A-Z menu
+// Add a border to this to approximate Bromley's border between the breadcrumb
+// and A-Z menu
.a-z-container {
- margin-bottom: 15px;
- padding: 0 10px;
+ padding-bottom: 15px;
+ border-bottom: 1px solid #e2e2e2;
}
+
.main-a-z {
padding: 10px 5px;
margin: 0 auto;
diff --git a/web/cobrands/bromley/layout.scss b/web/cobrands/bromley/layout.scss
index 2e23d1755..d308daa4b 100644
--- a/web/cobrands/bromley/layout.scss
+++ b/web/cobrands/bromley/layout.scss
@@ -3,31 +3,19 @@
// Alter the logo and the header on every page *but* the map page. On the map
// page it stays small like in base.css
-body.fullwidthpage,
-body.twothirdswidthpage {
- #site-header {
- // Increase the height of the site-header to suit the taller logo image
- height: auto;
- }
- // Override the logo
+body.fullwidthpage, body.twothirdswidthpage, body.authpage {
#site-logo {
width: 159px;
height: 114px;
background: url(/cobrands/bromley/bromley-logo.png) 0 0 no-repeat;
+ float: left;
}
}
-// On the map page, we want the header to be much smaller, otherwise it pushes
-// the sidebar down too much
body.mappage {
- #site-header {
- height: 5em;
- }
-
- // Make the report button match the rest of the nav
- .nav-menu--main a.report-a-problem-btn {
- padding: 1.4em 0.75em 1.35em;
- margin: 0;
+ .bromley-header {
+ margin-bottom: 0;
+ padding-top: 0.5em;
}
}
@@ -35,10 +23,6 @@ body.mappage {
.iel8 {
body.fullwidthpage,
body.twothirdswidthpage {
- #site-header {
- // Increase the height of the site-header to suit the taller logo image
- height: auto;
- }
#site-logo {
width: 159px;
height: 114px;
@@ -46,10 +30,10 @@ body.mappage {
}
}
-// Override the container width to match Bromley' site, which is wider
-.container {
- width: 100%;
- max-width: 1200px;
+#main-nav {
+ display: block; // remove flex so nav touches top of parent
+ min-height: 0; // no vertical align, so no need for a height
+ margin-top: 0; // don't bother overlapping the border
}
// Override the FMS main menu to give it a background colour
@@ -116,29 +100,17 @@ body.fullwidthpage .container .content footer .tablewrapper {
// Bromley desktop styles
//////////////////////////////////////////////////////////////////////////////
-// Bromley's logo is bigger on big screens so that it appears to have some
-// left padding
-#site-logo,
-body.frontpage #site-logo {
- float: left;
- width: 239px;
- clear: left;
- margin-bottom: 20px;
- // Bromley uses an image element inside a link, so it can be centered using
- // text-align. We use a background image, so this approximates that.
- background-position: 50% 0%;
-}
-
// Bromley's .top-links section floats to the right on bigger screens
.top-links {
float: right;
width: auto;
+ margin-top: 3em;
}
// Bromley's search form floats to the right too
.main-search {
width: 35%;
- margin: 10px 0 0 0;
+ margin: 0;
float: right;
min-width: 287px;
clear: right;
diff --git a/web/cobrands/eastherts/_colours.scss b/web/cobrands/eastherts/_colours.scss
index f4a1142ac..2854c01bd 100644
--- a/web/cobrands/eastherts/_colours.scss
+++ b/web/cobrands/eastherts/_colours.scss
@@ -1,22 +1,20 @@
/* COLOURS */
$eh_dark_grey: #555;
-$eh_med_grey: #dadcda;
-$eh_dark_green: #007900;
-$eh_green: #2c992c;
-$eh_purple: #609;
-$eh_blue: #4e96e8;
+$eh_green: #00843d;
$primary: $eh_green;
$primary_b: #000000;
-$primary_text: #222222;
+$primary_text: #fff;
$base_bg: white;
$base_fg: $eh_dark_grey;
-$map_nav_bg: $eh_green;
-$nav_fg: #000;
-$nav_fg_hover: $primary;
+$map_nav_bg: #000;
+$nav_fg: #fff;
+$nav_fg_hover: $eh_green;
+
+$header-top-border: false;
// Colour used for front page 'how to report a problem' steps
$col_big_numbers: #ccc;
@@ -27,6 +25,8 @@ $col_click_map_dark: darken($eh_green, 10%);
$col_fixed_label: #00BD08;
$col_fixed_label_dark: #4B8304;
-$body-font: Verdana,Arial,Helvetica,Geneva,sans-serif;
+$body-font: 'Open Sans', sans-serif;
$meta-font: $body-font;
-$heading-font: $body-font; \ No newline at end of file
+$heading-font: $body-font;
+
+$mappage-header-height: 178px;
diff --git a/web/cobrands/eastherts/base.scss b/web/cobrands/eastherts/base.scss
index 1c8f9795b..aa654c48c 100644
--- a/web/cobrands/eastherts/base.scss
+++ b/web/cobrands/eastherts/base.scss
@@ -1,56 +1,78 @@
@import "../sass/h5bp";
@import "./_colours";
@import "../sass/mixins";
-
@import "../sass/base";
-.header__eh_nav, .header__eh_top_nav, .nav-menu li.user-meta--nav {
- display: none;
-}
-
#site-header {
- border-top: none;
- background: $eh_blue;
+ background-image: url('https://www.eastherts.gov.uk/media/29966/Website_background/image/panorama-lomoesque-compressor.jpg');
+ background-repeat: no-repeat;
+ background-size: cover;
}
#site-logo {
- background: url(img/toplogo.gif);
- background-size: 51px 48px;
- height: 48px;
- width: 51px;
- top: 0px;
- left: 2px;
-}
-
-h1, h2, h3, h4 {
- color: $eh_green;
+ margin: 0 auto;
+ background: url('https://www.eastherts.gov.uk/image/29967/site_logo/original.png');
+ width: 150px;
+ height: 138px;
}
-footer {
- background-color: $eh_med_grey;
- background-image: url(img/footer.gif);
- background-repeat: repeat-x;
- background-position: top;
+// Seemed easiest to have a little bar above the header
- text-align: center;
- padding: 1em;
- margin: 0;
-
- p {
- margin: 0;
- }
+.toputils {
+ background-color: #000;
+ position: relative;
+ height: 40px;
+}
- ul {
- margin: 0;
- li {
- list-style: none;
+// Footer styles from their stylesheet
- a, a:visited, a:hover, a:active {
- color: $eh_dark_grey;
- }
- a:hover {
- text-decoration: underline;
- }
+.footer {
+ padding: 2em 0.75em 1em;
+ color: #fff;
+ background-color: #000;
+ .container {
+ padding: 0;
+ margin: 0 auto;
}
- }
-} \ No newline at end of file
+}
+.footer__logo {
+ display: block;
+ margin: 0 auto 1em;
+}
+.footer__socialmedia {
+ text-align: center;
+ a {
+ text-decoration: none;
+ }
+}
+.footer__navigation {
+ overflow: hidden;
+ margin-bottom: 1em;
+ & > ul {
+ margin: 0;
+ padding: 0;
+ li {
+ list-style: none;
+ }
+ }
+}
+.footer__navitem {
+ margin-bottom: 0;
+}
+a.footer__navlink {
+ color: #fff;
+ display: block;
+ padding: 0.5em 0;
+ text-align: center;
+}
+.footer__copyright {
+ text-align: center;
+ clear: both;
+}
+.footer__goss > a {
+ display: block;
+ text-align: center;
+ font-size: 14px;
+ color: #ccc;
+ clear: both;
+}
diff --git a/web/cobrands/eastherts/layout.scss b/web/cobrands/eastherts/layout.scss
index 9623f33de..cb3a616bf 100644
--- a/web/cobrands/eastherts/layout.scss
+++ b/web/cobrands/eastherts/layout.scss
@@ -1,229 +1,190 @@
@import "_colours";
@import "../sass/layout";
-#site-header {
- // default layout.scss sets this, so we need it here as well as base.scss
- background: $eh_blue;
- background-image: url(img/header_mid.jpg);
- background-repeat: repeat-x;
+#site-logo {
+ margin: 0; // Left aligned again
}
-// Get rid of the top border
-.nav-wrapper .nav-wrapper-2 {
- border-top: none;
-}
-
-body.fullwidthpage, body.twothirdswidthpage, body.authpage, body.frontpage {
- $logo-height: 90px;
- $eh-nav-height: 32px;
- $fms-nav-height: 43px;
-
- #site-header {
- background-color: $base_bg;
- height: $logo-height + $eh-nav-height + $fms-nav-height;
+// Put the nav underneath the East Herts nav
- .container {
- height: auto;
- }
+#main-nav {
+ display: block;
+ position: absolute;
+ top: 124px; // 80px + 40px + 4px gap
+ left: 0;
+ width: 100%;
+ float: none;
+ min-height: 0;
+}
- .container:first-child {
- height: $logo-height;
- }
+// And make it look the same
- .header__eh_nav {
- display: block;
- background-color: $eh_dark_green;
- background-image: url(img/welcome_mid.gif);
- background-repeat: repeat-x;
- background-position: 0 0;
- height: $eh-nav-height;
-
- ul, span {
- font-size: 1.1em;
- line-height: $eh-nav-height;
- color: white;
- }
-
- ul {
- float: right;
- text-align: right;
- list-style: none;
- margin: 0;
- padding: 0;
-
- li {
- display: inline;
- margin: 0;
- padding: 0;
-
- a {
- color: white;
- padding: 0 0.5em 0 0.6em;
- }
- }
- }
+.nav-menu {
+ background-color: $eh_dark_grey;
+ margin-right: calc(40px - -0.75em);
+ span {
+ color: #fff;
+ background-color: $eh_green;
}
+}
- .header__eh_top_nav {
- display: block;
- position: relative;
- z-index: 4;
-
- ul {
- float: right;
- margin: 0;
- list-style: none;
-
- li {
- display: inline;
- list-style: none;
- }
- }
-
- ul#toputilnav {
- width: 100%;
- text-align: right;
-
- li {
- margin: 0;
- padding: 0;
-
- a {
- padding: 0 0.5em 0 0.25em;
- font-size: 0.9em;
- color: black;
- }
-
- &:after {
- content: "";
- border-right: solid 1px $eh_dark_grey;
- }
-
- // For some reason the spacing isn't even on the 'cookies' link,
- // so this sorts it out.
- &:first-child {
- margin-right: 0.25em;
- };
-
- &:last-child {
- a {
- padding-right: 0;
- }
- &:after {
- border-right: none;
- }
- }
- }
- }
-
- ul#bannerimages {
- margin-top: 0.25em;
- }
+.nav-menu--main {
+ a, span {
+ padding: 0.5em;
+ margin: 0.25em;
+ @include border-radius(0.25em);
}
- }
-
- #site-logo {
- $img-height: 184px;
- $img-width: 399px;
- top: $logo-height - $img-height;
- width: $img-width;
- height: $img-height;
- background-image: url(img/toplogo.jpg);
- background-repeat: no-repeat;
- background-position: bottom;
- background-color: $eh_blue;
- background-size: $img-width $img-height;
- }
-
- .nav-menu {
- position: absolute;
- top: $logo-height + $eh-nav-height;
- height: $fms-nav-height;
- margin: 0 auto;
- width: 60em;
- padding: 0;
- text-align: center;
- float: none;
- li {
- float: none;
- display: inline-block;
+ a.report-a-problem-btn {
+ background-color: transparent;
+ padding: 0.5em;
+ margin: 0.25em;
}
- }
-
- // Make elements beneath clickable
- .nav-wrapper .nav-wrapper-2 {
- min-height: 0;
- height: 0;
- }
}
+// Front page, light background bar
+
#front-main {
- background-color: #f6f6f6;
+ background-color: #f6f6f6;
}
.content, #front-main {
- color: $eh_dark_grey;
+ color: $eh_dark_grey;
}
+// Extra height needed
body.twothirdswidthpage .content .sticky-sidebar aside {
- top: 11em;
- box-shadow: none;
+ top: 16em;
}
body.mappage {
- .nav-wrapper .nav-wrapper-2 {
- background-color: $eh_blue;
- background-image: url(img/header_mid.jpg);
- background-repeat: repeat-x;
- background-position: top;
- }
-
- #site-logo {
- top: 8px;
- }
-
- .nav-menu--main {
- a {
- color: white;
+ #site-header {
+ top: 40px;
+ height: 138px;
}
- span {
- color: $eh_dark_grey;
+}
+
+// Header bits from their stylesheet, tweaked for simpler display
+
+.toputils__right {
+ float: right;
+}
+.toputils__nav {
+ float: left;
+ padding: 0 0.25em;
+ li {
+ float: left;
+ list-style: none;
}
- }
+}
+.toputils__navlist {
+ margin: 0;
+ padding: 0;
+}
+a.toputils__navitem {
+ display: block;
+ color: #fff;
+ line-height: 2.5rem;
+ padding: 0 0.5em;
+ font-size: 0.875rem;
+}
+
+.mainmenu {
+ background-color: #00843d;
}
+.mainmenu {
+ position:absolute;
+ display: block;
+ right: calc(40px - -0.75em);
+ top: 20px;
+}
-footer ul {
- margin-bottom: 0.5em;
- li {
- display: inline-block;
+a.mainmenu__item {
+ font-size: 1.125rem;
+ line-height: normal;
+ display: block;
+ padding: 1em;
+ color: #fff
+}
+
+.mainmenu__list {
margin: 0;
padding: 0;
+}
- &:after {
- content: "";
- border-right: solid 1px $eh_dark_grey;
- }
- &:last-child:after {
- border-right: none;
- }
+.mainmenu__list > li {
+ list-style: none;
+ float: left;
+ position: relative
+}
- a {
- padding: 0 0.5em 0 0.25em;
- }
- }
-}
-
-// Stop the FMS nav being too wide and off to the right off the page
-// at this break point.
-@media only screen and (min-width: 48em) and (max-width: 61em) {
- #main-nav {
- float: $left;
- padding-#{$left}: 0;
- }
- body.fullwidthpage, body.twothirdswidthpage, body.authpage, body.frontpage {
- .nav-menu {
- width: 100%;
- }
- }
-} \ No newline at end of file
+.searchcontrol {
+ background-color: #fff;
+ font-size: .875rem;
+ position:absolute;
+ display: block;
+ top: 0;
+ right: 0;
+ width: 40px;
+ height: 40px;
+ overflow: hidden;
+ margin-top: 30px;
+ background-color: transparent
+}
+
+.searchcontrol__expandtoggle {
+ display:block;
+ width: 40px;
+ height: 40px;
+ background-image: url("https://www.eastherts.gov.uk/themes/cruise/images/searchbutton-transparent.png");
+ position: absolute;
+ right: 0;
+ text-indent: -99999px;
+}
+
+// Footer bits from their stylesheet, tweaked for smaller widths
+
+.footer__left {
+ float: left;
+ width: 266px;
+}
+.footer__right {
+ float: right;
+ width: 450px;
+}
+
+.footer__logo {
+ margin:0 0 1em 0
+}
+
+
+.footer__socialmedia {
+ text-align:left
+}
+
+.footer__socialmedia img {
+ margin: 0 1em 1em 0
+}
+
+a.footer__navlink {
+ padding:0;
+ padding-right: .5em;
+ margin-right: .5em;
+ border-right: 1px solid #fff;
+ text-align: left
+}
+
+.footer__navitem:last-child a.footer__navlink {
+ border-right: 0
+}
+
+.footer__navitem {
+ float:left
+}
+
+.footer__copyright {
+ text-align:left
+}
+.footer__goss > a {
+ text-align:left
+}
diff --git a/web/cobrands/fiksgatami/base.scss b/web/cobrands/fiksgatami/base.scss
index ede6f9723..a35b2ce67 100644
--- a/web/cobrands/fiksgatami/base.scss
+++ b/web/cobrands/fiksgatami/base.scss
@@ -12,3 +12,10 @@
width: 26%;
}
}
+
+.nav-menu--mysoc {
+ a {
+ color: $primary_text;
+ background-color: $primary;
+ }
+}
diff --git a/web/cobrands/fiksgatami/layout.scss b/web/cobrands/fiksgatami/layout.scss
index d7a0bd920..02bceb04d 100644
--- a/web/cobrands/fiksgatami/layout.scss
+++ b/web/cobrands/fiksgatami/layout.scss
@@ -7,3 +7,36 @@
width: 6.5em;
}
}
+
+#main-nav {
+ display: block; // remove flex so nav touches top of parent
+ min-height: 0; // no vertical align, so no need for a height
+ margin-top: 0; // don't bother overlapping the border
+}
+
+.nav-menu--mysoc {
+ padding: 0em 0.5em;
+ margin-#{$left}: 0.25em;
+ background-color: $primary;
+ @include border-radius(0 0 0.375em 0.375em);
+ a {
+ background-color: transparent;
+ color: $primary_text;
+ text-transform: uppercase;
+ font-size: 0.6875em;
+ padding: 1.3em 0.7em 1em;
+ &:hover {
+ color: #fff;
+ background-color: transparent;
+ }
+ }
+}
+
+body.frontpage {
+ #site-logo {
+ margin: 2em 0;
+ width: 300px;
+ height: 60px;
+ background: url($image-sprite) -2px -108px no-repeat;
+ }
+}
diff --git a/web/cobrands/fixamingata/_colours.scss b/web/cobrands/fixamingata/_colours.scss
index 7be050a23..84132f804 100644
--- a/web/cobrands/fixamingata/_colours.scss
+++ b/web/cobrands/fixamingata/_colours.scss
@@ -14,6 +14,8 @@ $map_nav_bg: #eee;
$nav_fg: $primary_text;
$nav_fg_hover: #444;
+$header-top-border: false;
+
$col_click_map: #00BD08;
$col_fixed_label: #00BD08;
$col_fixed_label_dark: #4B8304;
diff --git a/web/cobrands/fixamingata/base.scss b/web/cobrands/fixamingata/base.scss
index af7a56cef..52c4b50da 100644
--- a/web/cobrands/fixamingata/base.scss
+++ b/web/cobrands/fixamingata/base.scss
@@ -12,18 +12,17 @@
#site-header {
@include linear-gradient(#000, #ccc 10%, #ccc 90%, #000);
+ padding: 0.5em 0;
}
#site-logo {
width: 185px;
- margin-top: 8px;
- margin-left: 10px;
- background: url('images/fms-logo.png') no-repeat;
+ height: 38px;
+ background: url('images/fms-logo.png') 0 50% no-repeat;
}
#report-cta {
font-size: 0.8em;
- margin-top: -0.25em;
border-color: #999;
color: #000;
padding-bottom: 0.2em;
diff --git a/web/cobrands/fixamingata/images/email-logo.gif b/web/cobrands/fixamingata/images/email-logo.gif
new file mode 100644
index 000000000..85d6d73a1
--- /dev/null
+++ b/web/cobrands/fixamingata/images/email-logo.gif
Binary files differ
diff --git a/web/cobrands/fixamingata/images/email-logo.svg b/web/cobrands/fixamingata/images/email-logo.svg
new file mode 100644
index 000000000..87e40d774
--- /dev/null
+++ b/web/cobrands/fixamingata/images/email-logo.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 744.09448819 1052.3622047"
+ id="svg3372"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="email-logo.svg">
+ <defs
+ id="defs3374" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="202.78009"
+ inkscape:cy="39.85132"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="3840"
+ inkscape:window-height="2031"
+ inkscape:window-x="0"
+ inkscape:window-y="55"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata3377">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="rect3380"
+ width="606.42853"
+ height="102.5"
+ x="12.857142"
+ y="937.71936" />
+ <path
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#20bbdf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.54330707;marker:none;enable-background:accumulate"
+ d="m 58.197149,939.92667 c -23.83446,0 -43.15204,19.31758 -43.15204,43.15202 0,20.03231 13.64373,36.87581 32.14919,41.74021 l 10.5962,13.5502 10.389,-13.297 c 19.02022,-4.5053 33.177351,-21.5959 33.177351,-41.99341 0,-23.83444 -19.325241,-43.15202 -43.159701,-43.15202 z"
+ id="path2982-5-04-3"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15;marker:none;enable-background:accumulate"
+ d="m 58.197149,956.23912 c -14.80226,0 -26.83958,12.0373 -26.83958,26.83957 0,14.80226 12.03732,26.84731 26.83958,26.84731 14.802269,0 26.83959,-12.04505 26.83959,-26.84731 0,-14.80227 -12.037321,-26.83957 -26.83959,-26.83957 z m 0,3.68296 c 12.811849,0 23.15663,10.34476 23.15663,23.15661 0,12.81184 -10.344781,23.16431 -23.15663,23.16431 -12.81184,0 -23.15662,-10.35247 -23.15662,-23.16431 0,-5.77595 2.1014,-11.04869 5.58582,-15.10015 l 8.25598,8.25598 1.70337,1.71105 0.8747,0.8747 4.05126,4.04358 c 0.0488,0.0488 0.0937,0.0954 0.14577,0.13811 0.002,0.003 0.006,0 0.008,0 0.0505,0.0411 0.1003,0.0797 0.15345,0.1151 0.002,0 0.006,-0.003 0.008,0 0.0531,0.0352 0.10578,0.0703 0.16114,0.0997 0.0591,0.0318 0.1153,0.0592 0.17647,0.0844 0.0593,0.0243 0.11569,0.0431 0.17648,0.0614 0.12432,0.0381 0.24797,0.0642 0.37596,0.0767 0.12488,0.0123 0.25111,0.0123 0.37598,0 0.18729,-0.0181 0.3749,-0.065 0.55245,-0.13811 0.23706,-0.0975 0.45708,-0.24224 0.65218,-0.43736 0.0488,-0.0488 0.0954,-0.10141 0.13811,-0.15346 0.17071,-0.20834 0.29515,-0.43926 0.36829,-0.68287 0.0366,-0.12181 0.0569,-0.24295 0.0691,-0.3683 0.012,-0.12284 0.0115,-0.25309 0,-0.37598 -2.4e-4,-0.003 0,-0.005 0,-0.008 -0.0123,-0.12534 -0.0325,-0.24646 -0.0691,-0.3683 -0.0177,-0.0587 -0.0458,-0.1192 -0.069,-0.17646 0,-0.003 0,-0.006 0,-0.008 -0.0976,-0.23745 -0.24224,-0.45707 -0.43736,-0.6522 l -4.04358,-4.04357 -0.8747,-0.87471 -1.71106,-1.71105 -8.22528,-8.22529 c 4.00409,-3.30702 9.14362,-5.29423 14.75488,-5.29423 z m -0.45271,8.17157 c -0.44829,0 -0.89179,0.17057 -1.23531,0.51407 l -3.97453,3.96686 1.71103,1.71104 5.20987,-5.20985 -0.46806,-0.46805 c -0.34349,-0.3435 -0.79468,-0.51407 -1.243,-0.51407 z m 2.58576,1.85682 -5.20987,5.20985 4.0436,4.04359 c 1.24631,1.24632 1.24631,3.28066 0,4.52698 -1.24631,1.24631 -3.28066,1.24631 -4.52697,0 l -4.0436,-4.0436 -5.14846,5.14849 11.92359,11.92359 c 0,0 8.68093,0.91011 12.176779,-2.58576 3.49587,-3.49585 2.70852,-12.29955 2.70852,-12.29955 L 60.330199,969.95047 Z m -7.0897,6.92856 c 0.23004,0 0.46133,0.0854 0.63683,0.26088 0.35101,0.35101 0.35101,0.92268 0,1.27369 -0.35101,0.35101 -0.92268,0.35101 -1.27369,0 -0.35101,-0.35101 -0.35101,-0.92268 0,-1.27369 0.17551,-0.1755 0.40682,-0.26088 0.63686,-0.26088 z m -5.23288,0.22253 -3.90548,3.90546 c -0.68702,0.68702 -0.68702,1.79898 0,2.486 l 0.46805,0.46806 5.14846,-5.14849 -1.71103,-1.71103 z m 8.77005,3.30698 c 0.23003,0 0.45366,0.0931 0.62917,0.26856 0.35101,0.35101 0.35101,0.915 0,1.266 -0.35101,0.35102 -0.915,0.35102 -1.26601,0 -0.35101,-0.351 -0.35101,-0.91499 0,-1.266 0.17551,-0.17551 0.40682,-0.26856 0.63684,-0.26856 z"
+ id="rect3772-9-2-4"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:75.55453491px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+ x="123.43143"
+ y="1023.8945"
+ id="text4249-3"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4251-8"
+ x="123.43143"
+ y="1023.8945"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:75.55453491px;line-height:125%;font-family:ChunkFive;-inkscape-font-specification:ChunkFive;text-align:start;writing-mode:lr-tb;text-anchor:start">FixaMinGata</tspan></text>
+ </g>
+</svg>
diff --git a/web/cobrands/fixamingata/layout.scss b/web/cobrands/fixamingata/layout.scss
index bd1cab41a..549d29540 100644
--- a/web/cobrands/fixamingata/layout.scss
+++ b/web/cobrands/fixamingata/layout.scss
@@ -67,9 +67,27 @@ h3, h4,
@import "_colours";
@import "../sass/layout";
-.nav-wrapper {
- .nav-wrapper-2 {
- border-top: 0;
+#site-header {
+ background: $map_nav_bg;
+ padding: 1em 0;
+}
+
+body.frontpage {
+ #site-logo {
+ width: 300px;
+ height: 55px;
+ background: url($image-sprite) -2px -115px no-repeat;
+ }
+
+ #main-nav {
+ height: 55px + 16px + 16px;
+ margin-left: 300px;
+ }
+}
+
+body.mappage {
+ #site-logo {
+ margin-top: -5px;
}
}
@@ -114,9 +132,3 @@ h3, h4,
#postcodeForm { margin-left: -1em !important; margin-right: -1em !important; }
body.fullwidthpage .container .content footer .tablewrapper { background: #fff; }
-
-body.frontpage #site-logo { top: 0em; }
-
-body.frontpage #site-header { height: 85px; }
-
-body.frontpage #user-meta { margin-top: 1.2em; } \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/_colours.scss b/web/cobrands/fixmystreet.com/_colours.scss
index c72e48d45..523d7b95d 100644
--- a/web/cobrands/fixmystreet.com/_colours.scss
+++ b/web/cobrands/fixmystreet.com/_colours.scss
@@ -5,7 +5,7 @@ $primary_b: #F3B11E; // For the box around the front page postcode form only
$primary_text: #222;
// Tiled main body background
-$base_bg: #1A1A1A url(images/tile.jpg) 0 0 repeat;
+$base_bg: #272727 url(images/tile.jpg) 0 0 repeat;
$base_fg: #fff;
$map_nav_bg: #222;
@@ -23,3 +23,5 @@ $itemlist_item_background: #f6f6f6;
$itemlist_item_background_hover: mix(#fff, $primary, 70%);
$layout_front_stats_color: #222;
+
+$high-dpi-screen: '-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi';
diff --git a/web/cobrands/fixmystreet.com/base.scss b/web/cobrands/fixmystreet.com/base.scss
index 292446e92..4f2a7b1de 100644
--- a/web/cobrands/fixmystreet.com/base.scss
+++ b/web/cobrands/fixmystreet.com/base.scss
@@ -10,10 +10,10 @@
@import "../sass/top-banner";
#site-logo {
- 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;
+ 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==') -5px 8px no-repeat;
}
.ie7 #site-logo {
- background: url($image-sprite) -3px -3px no-repeat;
+ background: url($image-sprite) -8px 0px no-repeat;
}
.next-steps {
@@ -240,3 +240,21 @@ $grid-breakpoint-sm: $mysoc-footer-breakpoint-sm;
margin-right: 0.5em;
}
}
+
+.fms-pro-promo {
+ margin: 2em -1em;
+ padding: 1em;
+ background: $primary;
+
+ .lead {
+ font-weight: bold;
+ }
+
+ & > :first-child {
+ margin-top: 0;
+ }
+
+ & > :last-child {
+ margin-bottom: 0;
+ }
+}
diff --git a/web/cobrands/fixmystreet.com/fmsforcouncils.scss b/web/cobrands/fixmystreet.com/fmsforcouncils.scss
index d2d2182f8..ee166b8fd 100644
--- a/web/cobrands/fixmystreet.com/fmsforcouncils.scss
+++ b/web/cobrands/fixmystreet.com/fmsforcouncils.scss
@@ -2,33 +2,14 @@
FixMyStreet for Councils page.
*/
+@import '../sass/mixins';
+
$fms-yellow: #FFD000; // same as $primary from cobrands/fixmystreet/_colours.scss
$fms-orange: #f4a140;
$fms-red: #e04b4b;
$fms-blue: #4faded;
$fms-green: #62b356;
-
-@mixin clearfix {
- &:before, &:after { content: " "; display: table; }
- &:after { clear: both; }
- & { *zoom: 1; }
-}
-
-@mixin flexbox() {
- display: -webkit-box;
- display: -moz-box;
- display: -ms-flexbox;
- display: -webkit-flex;
- display: flex;
-}
-
-@mixin flex($values) {
- -webkit-box-flex: $values;
- -moz-box-flex: $values;
- -webkit-flex: $values;
- -ms-flex: $values;
- flex: $values;
-}
+$fms-pink: #E65376;
.fms-for-councils {
background-color: #1a1a1a;
@@ -36,10 +17,18 @@ $fms-green: #62b356;
max-width: 100%;
}
- .wrapper {
- display: block;
- @media only screen and (min-width: 48em) {
- display: table;
+ // Allow page contents to stretch to edges of window
+ .container {
+ max-width: none;
+ padding: 0;
+ }
+
+ #site-header,
+ .nav-wrapper,
+ .mysoc-footer {
+ .container {
+ max-width: 60em;
+ padding: 0 1em;
}
}
@@ -60,19 +49,6 @@ $fms-green: #62b356;
}
}
- .container {
- width: 100%;
- padding: 0;
- }
-
- #site-header {
- .container {
- @media only screen and (min-width: 60em) {
- max-width: 60em;
- }
- }
- }
-
.fixed-container {
max-width: 90em;
padding: 0;
@@ -82,9 +58,6 @@ $fms-green: #62b356;
padding: 0;
background-color: #fff;
overflow: hidden;
- @media only screen and (min-width: 60em) {
- width: 100%;
- }
}
.councils-content-wrapper {
@@ -160,19 +133,94 @@ $fms-green: #62b356;
}
}
- .councils-features {
- padding: 3em 0 5em;
+ .councils-hero__subtitle__primary {
+ font-size: 1.35em;
+ line-height: 1.35em;
+ }
+
+ .councils-hero__subtitle__secondary {
+ color: #777;
+ }
+
+ .councils-hero__demo-access {
+ background-color: $fms-pink;
+ border-radius: 3px;
+ color: #fff;
+ padding: 2em;
+ margin: 4em auto -4em auto;
+ max-width: 26em;
+ position: relative;
+ z-index: 1;
+
+ @media (min-width: 44em) {
+ padding: 3em;
+ }
+
+ h2 {
+ text-align: center;
+ margin: 0 0 1em 0;
+ }
+
+ .form-group {
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ label {
+ font-weight: normal;
+ }
+
+ // Avoid border collapse jump on jQuery.slideDown()
+ .form-group:first-child label {
+ margin-top: 0;
+ }
+
+ input[type="text"],
+ input[type="email"] {
+ border: 1px solid desaturate(darken($fms-pink, 10%), 20%);
+ width: 100%;
+ padding: 0.5em;
+ border-radius: 3px;
+ font-size: 1em;
+ box-sizing: border-box;
+ }
+
+ .btn {
+ display: block;
+ margin: 0 auto;
+ background-image: none;
+ background-color: desaturate(darken($fms-pink, 10%), 20%);
+ border: none;
+
+ &:hover,
+ &:active,
+ &:focus {
+ background-color: desaturate(darken($fms-pink, 20%), 20%);
+ }
+ }
+
+ .required,
+ .form-note {
+ color: mix($fms-pink, #fff, 30%);
+ }
+ }
+
+ .councils-sales {
+ padding: 2em 0 5em;
+ .councils-content-wrapper {
+ max-width: 58em;
+ }
}
- .councils-features__grid {
+ .councils-sales__grid {
.flex & {
- @include flexbox;
- flex-wrap: wrap;
- justify-content: space-between;
+ @include flex-container();
+ @include flex-wrap(wrap);
+ @include justify-content(space-between);
}
.no-js &,
.no-flex & {
- @include clearfix;
+ @include clearfix();
}
}
@@ -192,15 +240,38 @@ $fms-green: #62b356;
}
h3 {
font-weight: normal;
- margin-left: 75px;
+ margin-bottom: 0.25em;
}
p {
color: #777;
font-size: 0.875em;
- margin-left: 75px;
}
}
+ .councils-sales--benefits {
+ background-color: #F7F6F5;
+ border-bottom: 1px solid #e9e9e9;
+ padding-top: 5em;
+
+ h2 {
+ font-size: 2.5em;
+ text-align: center;
+ color: $fms-pink;
+ }
+ p {
+ color: #666;
+ }
+ }
+
+ .councils-sales--features {
+ border-top: 1px solid #e9e9e9;
+ padding-top: 2em;
+ h2 {
+ font-size: 2.5em;
+ text-align: center;
+ color: $fms-pink;
+ }
+}
.councils-features__thumb {
height: 63px;
@@ -212,40 +283,64 @@ $fms-green: #62b356;
margin-top: 18px;
}
- .councils-features__thumb--excellence {
- background-image: url('images/fms-for-councils/excellence.svg');
+ .councils-features__thumb--authority {
+ background-image: url('images/fms-for-councils/authority.svg');
}
- .councils-features__thumb--expand {
- background-image: url('images/fms-for-councils/expand.svg');
+ .councils-features__thumb--automated-instruction {
+ background-image: url('images/fms-for-councils/automated-instruction.svg');
}
- .councils-features__thumb--bringyourown {
- background-image: url('images/fms-for-councils/bringyourown.svg');
+ .councils-features__thumb--brand {
+ background-image: url('images/fms-for-councils/brand.svg');
}
- .councils-features__thumb--duplication {
- background-image: url('images/fms-for-councils/duplication.svg');
+ .councils-features__thumb--customise {
+ background-image: url('images/fms-for-councils/customise.svg');
}
- .councils-features__thumb--reduce {
- background-image: url('images/fms-for-councils/reduce.svg');
+ .councils-features__thumb--dashboard {
+ background-image: url('images/fms-for-councils/dashboard.svg');
}
- .councils-features__thumb--control {
- background-image: url('images/fms-for-councils/control.svg');
+ .councils-features__thumb--end-to-end {
+ background-image: url('images/fms-for-councils/end-to-end.svg');
}
- .councils-features__thumb--process {
- background-image: url('images/fms-for-councils/process.svg');
+ .councils-features__thumb--inspection {
+ background-image: url('images/fms-for-councils/inspection.svg');
}
- .councils-features__thumb--customise {
- background-image: url('images/fms-for-councils/customise.svg');
+ .councils-features__thumb--integrated {
+ background-image: url('images/fms-for-councils/integrated.svg');
+ }
+
+ .councils-features__thumb--intelligent-routing {
+ background-image: url('images/fms-for-councils/intelligent-routing.svg');
+ }
+
+ .councils-features__thumb--open-standards {
+ background-image: url('images/fms-for-councils/open-standards.svg');
+ }
+
+ .councils-features__thumb--map-centric {
+ background-image: url('images/fms-for-councils/map-centric.svg');
+ }
+
+ .councils-features__thumb--mobile-app {
+ background-image: url('images/fms-for-councils/mobile-app.svg');
+ }
+
+ .councils-features__thumb--responsive-web {
+ background-image: url('images/fms-for-councils/responsive-web.svg');
+ }
+
+ .councils-features__thumb--syncronised {
+ background-image: url('images/fms-for-councils/syncronised.svg');
}
.order-now-button {
- background-color: #E65376;
+ background-color: $fms-pink;
color: #fff;
border: 0;
text-transform: none;
@@ -258,26 +353,31 @@ $fms-green: #62b356;
&:hover,
&:active,
&:focus {
- background-color: desaturate(darken(#E65376, 10%), 10%);
+ background-color: desaturate(darken($fms-pink, 10%), 10%);
text-decoration: none;
}
}
.councils-clients {
- background-color: #333;
- padding: 2.5em 0;
+ background-color: #FED876;
+ padding: 1em 0 2.5em;
+ h2 {
+ font-size: 2.5em;
+ text-align: center;
+ color: #333;
+ }
}
.councils-clients__grid {
.flex & {
- @include flexbox;
- justify-content: space-around;
- align-items: center;
- flex-wrap: wrap;
+ @include flex-container();
+ @include justify-content(space-around);
+ @include flex-align(center);
+ @include flex-wrap(wrap);
}
.no-js &,
.no-flex & {
- @include clearfix;
+ @include clearfix();
}
margin: 0 2%;
@media (min-width: 44em) {
@@ -297,35 +397,51 @@ $fms-green: #62b356;
}
}
+
+ .screenshot-of-themes {
+ background-color: #FED876;
+ }
+
.councils-compatibility {
- background-color: #E65376;
- padding: 3em 0 5em;
+ background-color: $fms-pink;
+ padding: 0.5em 0 2.5em;
a {
color: #fff;
+ opacity: 0.8;
}
h2, h3 {
color: #fff;
}
+ h2 {
+ margin-top: 1em;
+ margin-bottom: 0.25em;
+ }
+ h3 {
+ font-size: 0.875em;
+ }
ul {
list-style: none outside none;
padding: 0;
margin: 0;
li {
list-style: none outside none;
+ font-size: 0.875em;
}
}
}
.councils-compatibility__grid {
.flex & {
- @include flexbox;
- justify-content: space-between;
- flex-wrap: wrap;
+ @include flex-container();
+ @include flex-wrap(wrap);
+ @include justify-content(flex-start);
}
+
.no-js &,
.no-flex & {
- @include clearfix;
+ @include clearfix();
}
+
@media (min-width: 44em) {
flex-wrap: nowrap;
}
@@ -338,7 +454,37 @@ $fms-green: #62b356;
float: left;
}
@media (min-width: 44em) {
- width: 30%;
+ width: 25%;
+ .no-js &,
+ .no-flex & {
+ margin-right: 3%;
+ }
+ }
+ }
+
+ .split-list {
+ @include flex-container();
+ @include justify-content(flex-start);
+ @include flex-align(flex-start);
+ @include flex-direction(row);
+ @include flex-wrap(wrap);
+
+ li {
+ width: 50%;
+ -webkit-flex-grow: 1;
+ -ms-flex-grow: 1;
+ flex-grow: 1;
+ }
+ }
+
+ .councils-compatibility__item--wide {
+ width: 100%;
+ .no-js &,
+ .no-flex & {
+ float: left;
+ }
+ @media (min-width: 44em) {
+ width: 50%;
.no-js &,
.no-flex & {
margin-right: 3%;
@@ -347,6 +493,8 @@ $fms-green: #62b356;
}
.councils-pricing {
+ padding: 2em 0;
+ margin-bottom: 3em;
h2 {
font-size: 2.5em;
text-align: center;
@@ -354,91 +502,180 @@ $fms-green: #62b356;
}
}
- .councils-pricing__grid {
- .flex & {
- @include flexbox;
- justify-content: center;
- flex-wrap: wrap;
+ .pricing-table {
+ th, td {
+ text-align: left;
+ font-weight: normal;
+ vertical-align: middle;
+ border: 1px solid #e9e9e9;
}
- .no-js &,
- .no-flex & {
- @include clearfix;
+
+ th {
+ background-color: #F7F6F5;
+
+ &.blank {
+ background-color: transparent;
+ border: none;
+ }
}
- @media (min-width: 60em) {
- flex-wrap: nowrap;
+
+ th[scope="row"] {
+ @media (min-width: 44em) {
+ width: 30%;
+ }
}
- margin: 3em 0 6em;
- }
- .councils-pricing__main-prices {
- width: 100%;
- background-color: #f4f4f4;
- .no-js &,
- .no-flex & {
- float: left;
+ td {
+ width: 15%;
+ line-height: 1.5em;
}
- @media (min-width: 60em) {
- width: 66.6667%;
+
+ span {
+ display: inline-block;
+ padding: 0.666em 1em;
+ box-sizing: border-box;
}
}
- .councils-pricing__extra-prices {
+ .pricing-table__tier-name {
+ font-weight: 500;
+ font-size: 1.25em;
+ }
+
+ .pricing-table__feature-name {
+ text-align: left;
+ font-size: 0.875em;
+ }
+
+ .pricing-table__feature-value {
+ font-size: 0.875em;
+ line-height: 1.4em;
width: 100%;
- background-color: #FED876;
- .no-js &,
- .no-flex & {
- float: left;
- }
- @media (min-width: 60em) {
- width: 33.3333%;
- }
- hr {
- height: 0;
- border-top: 3px solid rgba(0,0,0,0.1);
- margin-top: 1.75em;
- margin-bottom: 1.5em;
+ }
+
+ .pricing-table__show-more {
+ td {
+ border: none;
+ padding: 2em 1em;
+ text-align: center;
}
- h3 {
- text-transform: uppercase;
+
+ .button {
+ display: inline-block;
+ padding: 0.6em 1.5em;
+ text-align: center;
+
+ border-radius: 3px;
+ border: none;
+ background-color: #F7F6F5;
+ color: #333;
font-size: 0.875em;
- color: rgba(0,0,0,0.666);
+ line-height: 1.5em;
+ font-weight: normal;
+
+ &:hover,
+ &:active,
+ &:focus {
+ text-decoration: none;
+ background-color: #FED876;
+ }
}
}
- .pricing-table {
- padding: 1em 2em 0;
- @media (min-width: 44em) {
- padding: 1.5em 3em 0;
+ .pricing-table__prices {
+ td {
+ background-color: $fms-pink;
+ color: #fff;
+ border-color: darken($fms-pink, 10%);
}
}
- .pricing-table__item {
- margin-bottom: 4em;
- h3 {
- font-size: 1.5em;
- }
+ .pricing-table__price {
+ font-weight: 500;
+ font-size: 1.25em;
}
- .extra-pricing-table {
- padding: 1em 2em 1.5em;
+ .boolean-icon {
+ margin: 0 auto;
+ display: inline-block;
+ font-style: normal;
+ width: 24px;
+ height: 24px;
+ background-image: url('images/fms-for-councils/boolean-no.svg');
+ background-repeat: no-repeat;
+ background-position: center;
+ text-indent: 100%;
+ white-space: nowrap;
+ overflow: hidden;
}
- .extra-pricing__desc {
- font-size: 0.875em;
- line-height: 1.5em;
+ .boolean-icon--no {
+ background-image: url('images/fms-for-councils/boolean-no.svg');
}
- .accordion-switch {
- color: #333;
- display: block;
- background-image: url('images/fms-for-councils/plus.svg');
- background-repeat: no-repeat;
- background-position: right center;
- background-size: 18px;
+ .boolean-icon--yes {
+ background-image: url('images/fms-for-councils/boolean-yes.svg');
}
- .accordion-switch--open {
- background-image: url('images/fms-for-councils/minus.svg');
+ // Verticalise the table on narrow screens
+ @media (max-width: 54em) {
+ .pricing-table {
+ &,
+ tr,
+ th,
+ th[scope="row"],
+ td,
+ tbody,
+ span {
+ display: block;
+ width: auto;
+ }
+
+ thead {
+ display: none;
+ }
+
+ th,
+ td {
+ @include clearfix();
+ border: none;
+ }
+
+ tr {
+ border: 1px solid #e9e9e9;
+ }
+
+ .pricing-table__show-more tr {
+ border: none;
+ }
+
+ tr + tr {
+ border-top: none;
+ }
+
+ td[data-tier-name] {
+ &:before {
+ content: attr(data-tier-name);
+ display: block;
+ font-size: 0.875em;
+ line-height: 1.4em;
+ color: darken(#FEC32B, 15%);
+ float: left;
+ padding: 0.666em 1em;
+ width: 5em;
+ }
+ }
+
+ // Collapse padding between "rows" of a feature
+ td + td .pricing-table__feature-value,
+ td + td[data-tier-name]:before {
+ padding-top: 0;
+ }
+
+ .boolean-icon {
+ margin: -0.33em 0;
+ }
+ }
}
.council-case-studies {
@@ -455,18 +692,18 @@ $fms-green: #62b356;
.council-case-studies__grid {
.flex & {
- @include flexbox;
- justify-content: space-around;
- flex-wrap: wrap;
- align-items: center;
+ @include flex-container();
+ @include justify-content(space-around);
+ @include flex-wrap(wrap);
+ @include flex-align(center);
}
.no-js &,
.no-flex & {
- @include clearfix;
+ @include clearfix();
}
@media (min-width: 44em) {
- flex-wrap: nowrap;
- justify-content: space-between;
+ @include flex-wrap(nowrap);
+ @include justify-content(space-between);
}
margin: 0 3.3334%;
}
@@ -542,10 +779,30 @@ $fms-green: #62b356;
}
}
+ .checkbox-label {
+ margin-left: 25px;
+ }
+
+ .checkbox-input {
+ margin-left: -25px;
+ margin-right: 6px;
+ }
+
+ .form-note {
+ font-size: 0.75em;
+ margin-top: 0.5em;
+ color: #777;
+ }
+
.council-order {
position: relative;
+ background-color: #F7F6F5;
+ border: 1px solid #e9e9e9;
+ border-left: 0;
+ border-right: 0;
+ padding: 4em 0;
h2 {
- color: #E65376;
+ color: $fms-pink;
font-size: 2.5em;
}
}
@@ -577,7 +834,7 @@ $fms-green: #62b356;
}
input[type="submit"] {
background-image: none;
- background-color: #E65376;
+ background-color: $fms-pink;
color: #fff;
border: 0;
text-transform: none;
@@ -586,16 +843,11 @@ $fms-green: #62b356;
&:hover,
&:active,
&:focus {
- background-color: desaturate(darken(#E65376, 10%), 10%);
+ background-color: desaturate(darken($fms-pink, 10%), 10%);
}
}
}
- .council-order__form__product__price {
- margin-left: 0.5em;
- color: #999;
- }
-
.form-group {
position: relative;
@media (min-width: 44em) {
@@ -616,7 +868,10 @@ $fms-green: #62b356;
right: 0;
top: 3px;
font-size: 0.75em;
- color: #E65376;
+ color: $fms-pink;
+ &.required--optional {
+ color: #777;
+ }
}
.council-order__screenshot {
@@ -627,20 +882,16 @@ $fms-green: #62b356;
background-repeat: no-repeat;
background-position: top left;
background-size: cover;
- height: 758px;
+ height: 750px;
position: absolute;
z-index: 0;
- right: -70px;
- width: 350px;
- bottom: 120px;
- }
- @media (min-width: 61.25em) {
right: 0;
width: 500px;
+ bottom: 50px;
}
@media (min-width: 82em) {
- width: 1000px;
- right: -250px;
+ width: 748px;
+ right: 46px;
}
}
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.png
index 1baeacba6..74b5c7345 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/angus-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/authority.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/authority.svg
new file mode 100644
index 000000000..7d32cfb71
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/authority.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>authority</title><g fill="#E65376" fill-rule="evenodd"><path d="M54.214 57.693h-4.29v-4.26h-3.06v4.26h-4.29v-25.74l11.64 2.62v23.12zm-36.892-37.67l21.928-3.41v41.08h-8.382v-8.32h-5.163v8.32h-8.383v-37.67zm39.487 9.6l-13.27-3.25c-.327-.08-.653-.09-.966-.05v-10.6c.713-.58 1.116-1.5.965-2.47-.227-1.45-1.59-2.45-3.038-2.22l-25.25 3.93c-1.453.22-2.445 1.58-2.22 3.03.107.69.466 1.26.966 1.66v39.7c0 .92.743 1.66 1.662 1.66h40.217c.917 0 1.66-.74 1.66-1.66v-24.87c.588-.35 1.045-.92 1.22-1.64.35-1.43-.522-2.87-1.948-3.22z"/><path d="M25.705 26.403h5.163v-5.03h-5.163M25.705 35.503h5.163v-5.03h-5.163M25.705 44.603h5.163v-5.03h-5.163M46.864 39.433h3.06v-2.98h-3.06M46.864 44.823h3.06v-2.98h-3.06M46.864 50.213h3.06v-2.98h-3.06"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/automated-instruction.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/automated-instruction.svg
new file mode 100644
index 000000000..3cc613005
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/automated-instruction.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>automated-instruction</title><g fill="#E65376" fill-rule="evenodd"><path d="M47.666 27.09c-1.9 0-3.44-1.54-3.44-3.44s1.54-3.44 3.44-3.44 3.44 1.54 3.44 3.44-1.54 3.44-3.44 3.44zm10.816-5.19l-2.878-.76c-.152-.48-.348-.94-.58-1.38l1.504-2.58c.477-.88.683-1.79 0-2.47-.683-.69-1.646-.47-2.475 0l-2.62 1.52c-.422-.21-.863-.4-1.323-.54l-.775-2.94c-.29-.96-.785-1.75-1.75-1.75-.968 0-1.493.84-1.752 1.75l-.79 3c-.43.15-.84.32-1.234.53l-2.695-1.57c-.885-.48-1.792-.69-2.474 0-.684.68-.464 1.64 0 2.47l1.594 2.73c-.19.38-.358.77-.49 1.18l-3.058.81c-.963.29-1.75.78-1.75 1.75s.834 1.49 1.75 1.75l3.058.81c.132.4.298.8.49 1.18l-1.593 2.73c-.477.88-.684 1.79 0 2.47.683.69 1.645.47 2.475 0l2.694-1.57c.392.21.804.38 1.232.53l.79 3c.29.96.785 1.75 1.752 1.75.966 0 1.492-.84 1.75-1.75l.776-2.94c.46-.14.9-.33 1.323-.54l2.62 1.52c.886.48 1.792.69 2.475 0 .684-.68.464-1.64 0-2.47l-1.503-2.58c.232-.44.428-.9.58-1.38l2.877-.76c.963-.29 1.752-.78 1.752-1.75s-.836-1.49-1.752-1.75z"/><path d="M27.5 48.78c-2.76 0-4.998-2.24-4.998-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm14.752-6.75l-2.922-.77c-.087-.41-.197-.82-.326-1.21l2.146-2.13c.692-.73 1.127-1.56.642-2.39-.484-.84-1.47-.88-2.392-.64l-2.927.79c-.278-.3-.57-.6-.877-.87l.798-2.93c.23-.98.195-1.91-.643-2.39-.836-.49-1.707-.03-2.39.64l-2.128 2.14c-.395-.12-.798-.23-1.21-.32l-.77-2.92c-.29-.97-.784-1.75-1.75-1.75-.967 0-1.492.83-1.75 1.75l-.77 2.92c-.412.09-.815.2-1.21.32l-2.13-2.14c-.733-.69-1.553-1.13-2.39-.64-.84.48-.876 1.47-.642 2.39l.8 2.93c-.31.27-.602.56-.88.87l-2.927-.79c-.98-.24-1.908-.2-2.39.64-.485.83-.024 1.71.64 2.39l2.144 2.13c-.128.39-.238.8-.325 1.21l-2.92.77c-.964.29-1.752.78-1.752 1.75 0 .96.835 1.49 1.75 1.75l2.922.77c.087.41.197.81.325 1.21l-2.145 2.13c-.69.73-1.124 1.55-.64 2.39.483.84 1.468.87 2.39.64l2.928-.8c.278.31.57.6.878.88l-.798 2.93c-.23.98-.197 1.91.64 2.39.84.48 1.71.02 2.392-.64l2.13-2.15c.394.13.798.24 1.21.33l.77 2.92c.288.96.783 1.75 1.75 1.75.966 0 1.49-.84 1.75-1.75l.77-2.92c.412-.09.816-.2 1.21-.33l2.13 2.15c.73.69 1.553 1.12 2.39.64.838-.48.874-1.47.642-2.39l-.798-2.93c.307-.28.6-.57.877-.88l2.927.8c.98.23 1.908.2 2.392-.64.485-.84.023-1.71-.642-2.39l-2.146-2.13c.13-.4.24-.8.326-1.21l2.922-.77c.963-.29 1.75-.79 1.75-1.75 0-.97-.834-1.49-1.75-1.75z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.png
index ad90a663c..1a2fc0f56 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/barnet-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-no.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-no.svg
new file mode 100644
index 000000000..3e5743da8
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-no.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Artboard</title><path d="M5 10h14v4H5z" fill="#EFECEA" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-yes.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-yes.svg
new file mode 100644
index 000000000..fa532daeb
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/boolean-yes.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Artboard Copy</title><g fill="#FED876" fill-rule="evenodd"><path d="M7 16.763L18.764 5l2.828 2.828L9.83 19.592z"/><path d="M6.828 11l5.02 5.02-2.827 2.83L4 13.828z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/brand.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/brand.svg
new file mode 100644
index 000000000..92edb9b78
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/brand.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>brand</title><g fill="#E65376" fill-rule="evenodd"><path d="M27.308 28.975c-.42-.42-1.097-.45-1.554-.07l-1.388 1.18c-9.047 7.56-12.396 8.32-12.4 8.32-.427.07-.78.37-.91.78-.133.41-.025.86.28 1.17l2.065 2.07c.358.35.903.43 1.346.2l3.55-1.85-2.267 2.83c-.37.45-.332 1.11.082 1.53l1.722 1.72c.347.34.874.43 1.315.22l2.786-1.35-1.36 2.77c-.218.44-.13.97.217 1.32l.888.88c.393.4 1.01.45 1.467.14l3.127-2.18-1.998 3.43c-.262.45-.187 1.02.182 1.39l.82.82c.42.42 1.09.45 1.545.08l4.002-3.31-2.515 5.17c-.213.44-.125.97.222 1.32l2.21 2.2c.298.3.737.4 1.144.28.403-.12.71-.47.797-.88.004-.02.488-2.18 4.54-7.64l5.1-6.04c.385-.45.358-1.13-.066-1.55l-14.95-14.95M51.68 17.025c.7-.7 1.83-.7 2.528 0 .696.7.696 1.83 0 2.53-.7.69-1.83.69-2.528 0-.7-.7-.7-1.83 0-2.53zm-5.478 13.9l11.9-7.48c2.844-2.84 2.844-7.47 0-10.32-2.844-2.84-7.473-2.84-10.353.04l-7.41 11.81s-1.575 2.13-2.882 1.82l-1.817-1.82c-2.115-2.11-4.145-1.33-4.965-.59l-1.236 1.23c-.45.45-.45 1.18 0 1.63l14.413 14.41c.45.45 1.175.45 1.624 0l1.276-1.27c.704-.78 1.478-2.82-.635-4.93l-1.69-1.69c-.275-1.19 1.456-2.59 1.774-2.84z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg
index a0a5f8a02..01cc7f83e 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/bringyourown.svg
@@ -1,16 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="72px" height="72px" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>bringyourown</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="bringyourown" fill="#E65376">
- <path d="M58.325,56.036 L54.18,56.036 C53.223,56.036 52.452,56.809 52.452,57.763 C52.452,58.717 53.223,59.49 54.18,59.49 L58.325,59.49 C59.277,59.49 60.05,58.717 60.05,57.763 C60.05,56.809 59.277,56.036 58.325,56.036" id="Fill-252"></path>
- <path d="M47.961,56.036 L43.818,56.036 C42.862,56.036 42.089,56.809 42.089,57.763 C42.089,58.717 42.862,59.49 43.818,59.49 L47.961,59.49 C48.916,59.49 49.689,58.717 49.689,57.763 C49.689,56.809 48.916,56.036 47.961,56.036" id="Fill-253"></path>
- <path d="M27.236,56.036 L23.091,56.036 C22.138,56.036 21.365,56.809 21.365,57.763 C21.365,58.717 22.138,59.49 23.091,59.49 L27.236,59.49 C28.191,59.49 28.963,58.717 28.963,57.763 C28.963,56.809 28.191,56.036 27.236,56.036" id="Fill-254"></path>
- <path d="M16.873,56.036 L12.73,56.036 C11.776,56.036 11,56.809 11,57.763 C11,58.717 11.776,59.49 12.73,59.49 L16.873,59.49 C17.827,59.49 18.6,58.717 18.6,57.763 C18.6,56.809 17.827,56.036 16.873,56.036" id="Fill-255"></path>
- <path d="M25.127,41.04 L25.127,36.905 C27.723,38.377 31.783,39.134 35.814,39.134 C39.847,39.134 43.906,38.376 46.502,36.905 L46.502,41.04 C46.502,42.186 42.518,44.28 35.995,44.319 C35.868,44.282 35.353,44.279 35.235,44.311 C28.954,44.19 25.127,42.163 25.127,41.04 L25.127,41.04 Z M46.502,17.081 C46.502,18.239 42.447,20.363 35.814,20.363 C29.185,20.363 25.127,18.239 25.127,17.081 C25.127,15.923 29.185,13.798 35.814,13.798 C42.447,13.798 46.502,15.923 46.502,17.081 L46.502,17.081 Z M25.127,28.919 C27.723,30.391 31.783,31.149 35.814,31.149 C39.847,31.149 43.906,30.391 46.502,28.918 L46.502,33.053 C46.502,34.211 42.447,36.336 35.814,36.336 C29.185,36.336 25.127,34.211 25.127,33.053 L25.127,28.919 L25.127,28.919 Z M25.127,20.932 C27.723,22.404 31.783,23.161 35.814,23.161 C39.847,23.161 43.906,22.403 46.502,20.932 L46.502,25.066 C46.502,26.224 42.447,28.35 35.814,28.35 C29.185,28.35 25.127,26.224 25.127,25.066 L25.127,20.932 L25.127,20.932 Z M37.001,55.352 L37.001,47.098 C43.294,46.866 49.302,44.795 49.302,41.04 L49.302,17.132 C49.302,17.126 49.3,17.12 49.3,17.114 C49.3,17.102 49.302,17.092 49.302,17.081 C49.302,13.089 42.518,11 35.814,11 C29.113,11 22.33,13.089 22.33,17.081 L22.33,17.114 L22.33,17.132 L22.33,41.04 C22.33,44.711 28.069,46.771 34.202,47.078 L34.202,55.352 C33.368,55.837 32.8,56.73 32.8,57.762 C32.8,59.306 34.057,60.563 35.601,60.563 C37.145,60.563 38.402,59.306 38.402,57.762 C38.402,56.73 37.834,55.837 37.001,55.352 L37.001,55.352 Z" id="Fill-256"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>bringyourown</title><g fill="#E65376" fill-rule="evenodd"><path d="M58.325 56.036H54.18c-.957 0-1.728.773-1.728 1.727 0 .954.77 1.727 1.728 1.727h4.145c.952 0 1.725-.773 1.725-1.727 0-.954-.773-1.727-1.725-1.727M47.96 56.036H43.82c-.956 0-1.73.773-1.73 1.727 0 .954.774 1.727 1.73 1.727h4.143c.956 0 1.73-.773 1.73-1.727 0-.954-.774-1.727-1.73-1.727M27.236 56.036H23.09c-.952 0-1.725.773-1.725 1.727 0 .954.773 1.727 1.726 1.727h4.146c.955 0 1.727-.773 1.727-1.727 0-.954-.772-1.727-1.727-1.727M16.873 56.036H12.73c-.954 0-1.73.773-1.73 1.727 0 .954.776 1.727 1.73 1.727h4.143c.954 0 1.727-.773 1.727-1.727 0-.954-.773-1.727-1.727-1.727M25.127 41.04v-4.135c2.596 1.472 6.656 2.23 10.687 2.23 4.033 0 8.092-.76 10.688-2.23v4.135c0 1.146-3.984 3.24-10.507 3.28-.127-.038-.642-.04-.76-.01-6.28-.12-10.108-2.147-10.108-3.27zm21.375-23.96c0 1.16-4.055 3.283-10.688 3.283-6.63 0-10.687-2.124-10.687-3.282 0-1.157 4.058-3.282 10.687-3.282 6.633 0 10.688 2.125 10.688 3.283zM25.127 28.92c2.596 1.47 6.656 2.23 10.687 2.23 4.033 0 8.092-.76 10.688-2.232v4.135c0 1.158-4.055 3.283-10.688 3.283-6.63 0-10.687-2.125-10.687-3.283V28.92zm0-7.988c2.596 1.472 6.656 2.23 10.687 2.23 4.033 0 8.092-.76 10.688-2.23v4.134c0 1.158-4.055 3.284-10.688 3.284-6.63 0-10.687-2.126-10.687-3.284v-4.134zM37 55.352v-8.254c6.294-.232 12.302-2.303 12.302-6.058V17.132l-.002-.018.002-.033c0-3.99-6.784-6.08-13.488-6.08-6.7 0-13.484 2.09-13.484 6.08v23.96c0 3.67 5.74 5.73 11.872 6.038v8.274c-.834.485-1.402 1.378-1.402 2.41 0 1.544 1.257 2.8 2.8 2.8 1.545 0 2.802-1.256 2.802-2.8 0-1.032-.568-1.925-1.4-2.41z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.png
index 9c622959b..27c05d66f 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/bristol-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.png
index 96f6cbdc0..4cd1c60a4 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/bromley-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/control.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/control.svg
deleted file mode 100644
index 1eb0e9507..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/control.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="72px" height="72px" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>control</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="control" fill="#E65376">
- <path d="M13.844,23.23 C14.398,24.68 15.803,25.72 17.447,25.72 C19.091,25.72 20.494,24.68 21.049,23.23 L21.963,23.23 C22.517,24.68 23.921,25.72 25.566,25.72 C27.21,25.72 28.614,24.68 29.168,23.23 L30.083,23.23 C30.637,24.68 32.04,25.72 33.685,25.72 C35.329,25.72 36.733,24.68 37.287,23.23 L59.282,23.23 C60.039,23.23 60.653,22.62 60.653,21.86 C60.653,21.11 60.039,20.49 59.282,20.49 L37.287,20.49 C36.732,19.04 35.329,18 33.685,18 C32.04,18 30.638,19.04 30.083,20.49 L29.167,20.49 C28.613,19.04 27.209,18 25.566,18 C23.921,18 22.518,19.04 21.963,20.49 L21.049,20.49 C20.494,19.04 19.09,18 17.447,18 C15.803,18 14.399,19.04 13.845,20.49 L12.372,20.49 C11.614,20.49 11,21.11 11,21.86 C11,22.62 11.614,23.23 12.372,23.23 L13.844,23.23 Z M59.282,34.7 L49.465,34.7 C48.911,33.25 47.508,32.21 45.864,32.21 C44.219,32.21 42.815,33.25 42.261,34.7 L41.346,34.7 C40.792,33.25 39.389,32.21 37.744,32.21 C36.101,32.21 34.697,33.25 34.142,34.7 L21.049,34.7 C20.494,33.25 19.09,32.21 17.447,32.21 C15.803,32.21 14.398,33.25 13.845,34.7 L12.372,34.7 C11.614,34.7 11,35.31 11,36.07 C11,36.83 11.614,37.44 12.372,37.44 L13.844,37.44 C14.398,38.89 15.803,39.93 17.447,39.93 C19.091,39.93 20.494,38.89 21.049,37.44 L34.142,37.44 C34.696,38.89 36.101,39.93 37.744,39.93 C39.389,39.93 40.792,38.89 41.347,37.44 L42.261,37.44 C42.815,38.89 44.219,39.93 45.864,39.93 C47.508,39.93 48.912,38.89 49.466,37.44 L59.282,37.44 C60.039,37.44 60.653,36.83 60.653,36.07 C60.653,35.31 60.039,34.7 59.282,34.7 Z M57.585,48.91 C57.03,47.46 55.627,46.42 53.983,46.42 C52.338,46.42 50.934,47.46 50.38,48.91 L49.465,48.91 C48.911,47.46 47.508,46.42 45.864,46.42 C44.219,46.42 42.815,47.46 42.261,48.91 L41.346,48.91 C40.792,47.46 39.389,46.42 37.744,46.42 C36.101,46.42 34.697,47.46 34.142,48.91 L12.372,48.91 C11.614,48.91 11,49.52 11,50.28 C11,51.04 11.614,51.65 12.372,51.65 L34.142,51.65 C34.696,53.1 36.101,54.14 37.744,54.14 C39.389,54.14 40.792,53.1 41.347,51.65 L42.261,51.65 C42.815,53.1 44.219,54.14 45.864,54.14 C47.508,54.14 48.912,53.1 49.466,51.65 L50.38,51.65 C50.934,53.1 52.338,54.14 53.983,54.14 C55.627,54.14 57.031,53.1 57.585,51.65 L59.282,51.65 C60.039,51.65 60.653,51.04 60.653,50.28 C60.653,49.52 60.039,48.91 59.282,48.91 L57.585,48.91 Z" id="Combined-Shape"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg
index f60e488e4..354ebb025 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/customise.svg
@@ -1,15 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="72px" height="72px" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>customise</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="customise" fill="#E65376">
- <path d="M54.8459238,58.9057844 L49.5659238,50.9457844 L52.6679238,48.8857844 L57.9499238,56.8357844 L54.8459238,58.9057844 L54.8459238,58.9057844 Z M31.1129238,23.1557844 L25.7619238,15.1057844 L28.8669238,13.0457844 L34.2159238,21.0957844 L31.1129238,23.1557844 L31.1129238,23.1557844 Z M59.9209238,56.5257844 L53.7219238,47.1957844 C53.7209238,47.1957844 53.7209238,47.1957844 53.7199238,47.1857844 L36.1929238,20.7957844 L36.1889238,20.7957844 C36.1889238,20.7957844 36.1889238,20.7957844 36.1879238,20.7957844 L29.9199238,11.3557844 C29.6739238,10.9757844 29.1109238,10.8857844 28.7019238,11.1557844 L24.0879238,14.2157844 C23.6659238,14.4957844 23.5339238,15.0257844 23.7909238,15.4157844 L30.0549238,24.8457844 C30.0569238,24.8457844 30.0589238,24.8457844 30.0599238,24.8557844 L30.0619238,24.8557844 L47.5979238,51.2657844 C47.5989238,51.2657844 47.6009238,51.2657844 47.6029238,51.2757844 L53.7939238,60.5957844 C53.9409238,60.8157844 54.1959238,60.9557844 54.4759238,60.9557844 C54.6649238,60.9557844 54.8509238,60.8957844 55.0109238,60.7857844 L59.6239238,57.7257844 C60.0449238,57.4457844 60.1769238,56.9257844 59.9209238,56.5257844 L59.9209238,56.5257844 Z" id="Fill-511"></path>
- <path d="M24.9839238,33.5357844 C25.0489238,33.5357844 25.1129238,33.5157844 25.1669238,33.4757844 C25.2729238,33.3957844 25.3189238,33.2657844 25.2799238,33.1357844 L24.2869238,29.8957844 L27.0169238,27.8457844 C27.1229238,27.7657844 27.1669238,27.6257844 27.1259238,27.5057844 C27.0859238,27.3757844 26.9699238,27.2957844 26.8389238,27.2857844 L23.4099238,27.2157844 L22.2859238,24.0157844 C22.2419238,23.8957844 22.1249238,23.8057844 21.9929238,23.8057844 C21.8619238,23.8057844 21.7459238,23.8957844 21.7029238,24.0157844 L20.5769238,27.2157844 L17.1489238,27.2857844 C17.0169238,27.2957844 16.9009238,27.3757844 16.8609238,27.5057844 C16.8209238,27.6257844 16.8639238,27.7657844 16.9699238,27.8457844 L19.6999238,29.8957844 L18.7069238,33.1357844 C18.6689238,33.2657844 18.7139238,33.3957844 18.8199238,33.4757844 C18.9269238,33.5557844 19.0709238,33.5557844 19.1779238,33.4757844 L21.9929238,31.5457844 L24.8089238,33.4757844 C24.8629238,33.5157844 24.9219238,33.5357844 24.9839238,33.5357844" id="Fill-512"></path>
- <path d="M29.3349238,39.3557844 L27.0399238,39.3057844 L26.2859238,37.1657844 C26.2579238,37.0857844 26.1789238,37.0257844 26.0919238,37.0257844 C26.0039238,37.0257844 25.9259238,37.0857844 25.8969238,37.1657844 L25.1439238,39.3057844 L22.8479238,39.3557844 C22.7609238,39.3557844 22.6829238,39.4157844 22.6559238,39.4957844 C22.6289238,39.5857844 22.6589238,39.6757844 22.7279238,39.7257844 L24.5549238,41.0957844 L23.8909238,43.2657844 C23.8659238,43.3557844 23.8969238,43.4457844 23.9679238,43.4957844 C24.0379238,43.5457844 24.1359238,43.5457844 24.2069238,43.4957844 L26.0919238,42.2057844 L27.9759238,43.4957844 C28.0119238,43.5257844 28.0529238,43.5357844 28.0929238,43.5357844 C28.1369238,43.5357844 28.1789238,43.5257844 28.2159238,43.4957844 C28.2869238,43.4457844 28.3169238,43.3557844 28.2919238,43.2657844 L27.6269238,41.0957844 L29.4549238,39.7257844 C29.5249238,39.6757844 29.5539238,39.5857844 29.5279238,39.4957844 C29.4999238,39.4157844 29.4229238,39.3557844 29.3349238,39.3557844" id="Fill-513"></path>
- <path d="M16.7949238,35.3057844 L15.1499238,35.2757844 L14.6099238,33.7357844 C14.5889238,33.6757844 14.5319238,33.6357844 14.4699238,33.6357844 C14.4069238,33.6357844 14.3509238,33.6757844 14.3289238,33.7357844 L13.7899238,35.2757844 L12.1449238,35.3057844 C12.0819238,35.3057844 12.0259238,35.3557844 12.0069238,35.4057844 C11.9879238,35.4657844 12.0089238,35.5357844 12.0589238,35.5757844 L13.3689238,36.5557844 L12.8919238,38.1157844 C12.8739238,38.1757844 12.8949238,38.2357844 12.9469238,38.2757844 C12.9979238,38.3157844 13.0669238,38.3157844 13.1179238,38.2757844 L14.4699238,37.3557844 L15.8209238,38.2757844 C15.8469238,38.2957844 15.8759238,38.3057844 15.9049238,38.3057844 C15.9359238,38.3057844 15.9669238,38.2957844 15.9929238,38.2757844 C16.0429238,38.2357844 16.0649238,38.1757844 16.0469238,38.1157844 L15.5699238,36.5557844 L16.8809238,35.5757844 C16.9319238,35.5357844 16.9529238,35.4657844 16.9339238,35.4057844 C16.9139238,35.3557844 16.8579238,35.3057844 16.7949238,35.3057844" id="Fill-514"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>customise</title><g fill="#E65376" fill-rule="evenodd"><path d="M54.846 58.906l-5.28-7.96 3.102-2.06 5.282 7.95-3.104 2.07zm-23.733-35.75l-5.35-8.05 3.104-2.06 5.35 8.05-3.104 2.06zm28.808 33.37l-6.198-9.33-.002-.01-17.527-26.39h-.004-.002l-6.268-9.44c-.246-.38-.81-.47-1.218-.2l-4.614 3.06c-.422.28-.554.81-.297 1.2l6.265 9.43c.002 0 .004 0 .005.01h.002l17.536 26.41s.003 0 .005.01l6.19 9.32c.148.22.403.36.683.36.19 0 .375-.06.535-.17l4.614-3.06c.42-.28.553-.8.297-1.2zM24.984 33.536c.065 0 .13-.02.183-.06.106-.08.152-.21.113-.34l-.993-3.24 2.73-2.05c.106-.08.15-.22.11-.34-.04-.13-.157-.21-.288-.22l-3.43-.07-1.124-3.2c-.044-.12-.16-.21-.293-.21-.13 0-.247.09-.29.21l-1.126 3.2-3.428.07c-.133.01-.25.09-.29.22-.04.12.004.26.11.34l2.73 2.05-.993 3.24c-.038.13.007.26.113.34.107.08.25.08.358 0l2.815-1.93 2.816 1.93c.053.04.112.06.174.06M29.335 39.356l-2.295-.05-.754-2.14c-.028-.08-.107-.14-.194-.14-.088 0-.166.06-.195.14l-.753 2.14-2.296.05c-.087 0-.165.06-.192.14-.027.09.003.18.072.23l1.827 1.37-.664 2.17c-.024.09.007.18.078.23.07.05.168.05.24 0l1.884-1.29 1.884 1.29c.036.03.077.04.117.04.044 0 .086-.01.123-.04.07-.05.1-.14.076-.23l-.665-2.17 1.828-1.37c.07-.05.1-.14.073-.23-.028-.08-.105-.14-.193-.14M16.795 35.306l-1.645-.03-.54-1.54c-.02-.06-.078-.1-.14-.1-.063 0-.12.04-.14.1l-.54 1.54-1.645.03c-.063 0-.12.05-.138.1-.02.06.002.13.052.17l1.31.98-.478 1.56c-.018.06.003.12.055.16.05.04.12.04.17 0l1.353-.92 1.35.92c.027.02.056.03.085.03.03 0 .062-.01.088-.03.05-.04.072-.1.054-.16l-.477-1.56 1.31-.98c.052-.04.073-.11.054-.17-.02-.05-.076-.1-.14-.1"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/dashboard.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/dashboard.svg
new file mode 100644
index 000000000..84d98dd45
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/dashboard.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>dashboard</title><path d="M13.844 23.23h-1.472c-.758 0-1.372-.61-1.372-1.37 0-.75.614-1.37 1.372-1.37h1.473C14.4 19.04 15.803 18 17.447 18c1.643 0 3.047 1.04 3.602 2.49h.913c.555-1.45 1.958-2.49 3.603-2.49 1.643 0 3.047 1.04 3.6 2.49h.917c.555-1.45 1.957-2.49 3.602-2.49 1.644 0 3.047 1.04 3.602 2.49h21.995c.757 0 1.37.62 1.37 1.37 0 .76-.613 1.37-1.37 1.37H37.287c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.048-1.04-3.602-2.49h-.915c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.05-1.04-3.603-2.49h-.914c-.556 1.45-1.96 2.49-3.603 2.49-1.644 0-3.05-1.04-3.603-2.49zM59.282 34.7c.757 0 1.37.61 1.37 1.37 0 .76-.613 1.37-1.37 1.37h-9.816c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.05-1.04-3.603-2.49h-.913c-.555 1.45-1.958 2.49-3.603 2.49-1.643 0-3.048-1.04-3.602-2.49H21.05c-.556 1.45-1.96 2.49-3.603 2.49-1.644 0-3.05-1.04-3.603-2.49h-1.472c-.758 0-1.372-.61-1.372-1.37 0-.76.614-1.37 1.372-1.37h1.473c.553-1.45 1.958-2.49 3.602-2.49 1.643 0 3.047 1.04 3.602 2.49H34.14c.555-1.45 1.96-2.49 3.602-2.49 1.645 0 3.048 1.04 3.602 2.49h.915c.555-1.45 1.96-2.49 3.604-2.49 1.644 0 3.047 1.04 3.6 2.49h9.818zm-1.697 14.21h1.697c.757 0 1.37.61 1.37 1.37 0 .76-.613 1.37-1.37 1.37h-1.697c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.05-1.04-3.603-2.49h-.914c-.554 1.45-1.958 2.49-3.602 2.49-1.645 0-3.05-1.04-3.603-2.49h-.913c-.555 1.45-1.958 2.49-3.603 2.49-1.643 0-3.048-1.04-3.602-2.49h-21.77c-.758 0-1.372-.61-1.372-1.37 0-.76.614-1.37 1.372-1.37h21.77c.555-1.45 1.96-2.49 3.602-2.49 1.645 0 3.048 1.04 3.602 2.49h.915c.555-1.45 1.96-2.49 3.604-2.49 1.644 0 3.047 1.04 3.6 2.49h.916c.554-1.45 1.958-2.49 3.603-2.49 1.644 0 3.047 1.04 3.602 2.49z" fill="#E65376" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.png
index 388df77a7..f58fe121a 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/device-mockup.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/duplication.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/duplication.svg
deleted file mode 100644
index 9f734edc9..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/duplication.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="72px" height="72px" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>duplication</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="duplication" fill="#E65376">
- <path d="M17.0957984,52.7752249 C15.1129241,52.7752249 13.5065,54.3733624 13.5065,56.3621557 C13.5065,58.339111 15.1129241,59.9490865 17.0957984,59.9490865 C19.0786727,59.9490865 20.6850968,58.339111 20.6850968,56.3621557 C20.6850968,54.3733624 19.0786727,52.7752249 17.0957984,52.7752249 Z M36.0059081,52.7752249 C34.0242176,52.7752249 32.4177935,54.3733624 32.4177935,56.3621557 C32.4177935,58.339111 34.0242176,59.9490865 36.0059081,59.9490865 C37.9887824,59.9490865 39.5952065,58.339111 39.5952065,56.3621557 C39.5952065,54.3733624 37.9887824,52.7752249 36.0059081,52.7752249 Z M54.9172016,52.7752249 C52.9319597,52.7752249 51.3279032,54.3733624 51.3279032,56.3621557 C51.3279032,58.339111 52.9319597,59.9490865 54.9172016,59.9490865 C56.8965245,59.9490865 58.5065,58.339111 58.5065,56.3621557 C58.5065,54.3733624 56.8965245,52.7752249 54.9172016,52.7752249 Z M36.0059081,27.572005 C40.2155206,27.572005 43.6355348,24.1389689 43.6355348,19.9364592 C43.6355348,15.7221115 40.2155206,12.3009135 36.0059081,12.3009135 C31.7974794,12.3009135 28.3750976,15.7221115 28.3750976,19.9364592 C28.3750976,24.1389689 31.7974794,27.572005 36.0059081,27.572005 Z M52.8656666,44.2755011 C52.8656666,44.8082136 52.9804957,45.31725 53.2125216,45.8026103 C53.4445475,46.2761325 54.0080389,46.5247317 54.9041797,46.5247317 C55.4013781,46.5247317 55.7967691,46.4063511 56.0950881,46.16959 C56.3957747,45.9328289 56.6266168,45.6487156 56.7935334,45.2935739 C56.9592662,44.9384322 57.0752791,44.5596145 57.142756,44.1452825 C57.2066815,43.7427887 57.2386443,43.3521328 57.2386443,43.0088292 C57.2386443,41.7184812 56.917833,40.6530562 56.2714751,39.8007162 C55.6251173,38.9483762 54.7857992,38.2972832 53.7594398,37.8474371 C52.7330804,37.3857529 51.5871566,37.1253157 50.3287713,37.0542873 C49.0692022,36.983259 47.8262064,37.0779635 46.5974163,37.3384007 C44.0794619,37.8711132 42.0551544,37.8592751 40.5304129,37.3147246 C39.0056713,36.7820121 38.2433006,35.7757774 38.2433006,34.3078585 C38.2433006,33.6330893 38.027848,33.1003768 37.5969427,32.709721 C37.1660375,32.3072271 36.6368765,32.1178182 36.0059081,32.1178182 C35.3761235,32.1178182 34.8434111,32.3072271 34.4148735,32.709721 C33.985152,33.1003768 33.766148,33.6330893 33.766148,34.3078585 C33.766148,35.7757774 33.0061449,36.7820121 31.4825871,37.3147246 C29.9542942,37.8592751 27.9335381,37.8711132 25.4120323,37.3384007 C24.1867936,37.0779635 22.9437978,36.983259 21.6842287,37.0542873 C20.4246596,37.1253157 19.2811034,37.3857529 18.2535602,37.8474371 C17.2272008,38.2972832 16.3878827,38.9483762 15.7415249,39.8007162 C15.0963508,40.6530562 14.7696205,41.7184812 14.7696205,43.0088292 C14.7696205,43.3521328 14.8051347,43.7427887 14.8714278,44.1452825 C14.9389047,44.5596145 15.0537338,44.9384322 15.2182828,45.2935739 C15.3851994,45.6487156 15.6278795,45.9328289 15.9404042,46.16959 C16.2541127,46.4063511 16.6613418,46.5247317 17.1609077,46.5247317 C18.0203505,46.5247317 18.5684525,46.2761325 18.8004784,45.8026103 C19.0313205,45.31725 19.1461496,44.8082136 19.1461496,44.2755011 C19.1461496,43.3758089 19.478799,42.8075823 20.1429139,42.5944973 C20.8046612,42.3695742 21.5682157,42.2630317 22.4288424,42.2630317 C23.4587532,42.2630317 24.451966,42.3932503 25.4120323,42.6536876 C26.37565,42.9259628 27.404377,43.0561814 28.4970296,43.0561814 C30.850435,43.0561814 32.5906291,42.7128778 33.7187958,42.0381087 C34.8434111,41.3633395 35.5750029,40.5465137 35.9064684,39.5757931 L36.1053478,39.5757931 C36.4379971,40.5465137 37.1660375,41.3633395 38.2942042,42.0381087 C39.4211871,42.7128778 41.1601974,43.0561814 43.5147866,43.0561814 C44.5754764,43.0561814 45.6290633,42.9259628 46.6731798,42.6536876 C47.7161125,42.3932503 48.8703229,42.2630317 50.129892,42.2630317 C50.8591162,42.2630317 51.4960036,42.3695742 52.0452894,42.5944973 C52.5922075,42.8075823 52.8656666,43.3758089 52.8656666,44.2755011 Z" id="Combined-Shape" transform="translate(36.006500, 36.125000) rotate(-180.000000) translate(-36.006500, -36.125000) "></path>
- </g>
- </g>
-</svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/end-to-end.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/end-to-end.svg
new file mode 100644
index 000000000..85243faeb
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/end-to-end.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>end-to-end</title><g fill="#E65376" fill-rule="evenodd"><path d="M51.637 44.288l-11.567 1.84c-.382.06-.698.33-.818.7-.12.36-.022.77.252 1.04l2.712 2.71c-4.223 1.11-8.826.3-12.516-2.49-1.06-.8-2.565-.59-3.364.47-.8 1.06-.59 2.56.468 3.36 3.5 2.65 7.617 3.96 11.727 3.96 2.54 0 5.075-.52 7.463-1.52l3.244 3.25c.197.19.46.3.728.3.108 0 .215-.02.32-.05.367-.12.637-.44.698-.82l1.833-11.57c.052-.32-.056-.65-.29-.89-.232-.23-.562-.34-.89-.29M50.006 20.738l1.12-4.45c.097-.38-.028-.78-.32-1.03-.29-.26-.7-.33-1.06-.18l-10.87 4.35c-.307.13-.536.39-.616.71-.08.32-.004.66.208.91l7.505 8.99c.198.24.488.37.79.37.075 0 .154-.01.23-.03.377-.08.674-.37.768-.75l.938-3.71c3.074 3.03 4.74 7.33 4.294 11.86-.13 1.32.835 2.5 2.156 2.63.08.01.16.01.237.01 1.22 0 2.267-.93 2.39-2.17.684-6.97-2.384-13.53-7.77-17.51M29.044 31.778c-.264-.29-.665-.4-1.037-.3l-3.692 1.04c1.102-4.22 4.053-7.82 8.27-9.68 1.216-.53 1.77-1.95 1.235-3.16-.534-1.22-1.952-1.77-3.166-1.24-6.48 2.85-10.705 8.81-11.483 15.52l-4.417 1.24c-.374.1-.657.41-.733.79-.076.38.068.77.37 1.01l9.19 7.26c.182.15.407.23.636.23.093 0 .187-.02.28-.04.315-.09.572-.33.686-.64l4.07-10.98c.133-.36.053-.77-.208-1.05"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/excellence.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/excellence.svg
deleted file mode 100644
index 096604308..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/excellence.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="72px" height="72px" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>excellence</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="excellence" fill="#E65376">
- <path d="M44.4622873,54.19 C44.2552873,53.45 43.5792873,52.93 42.8082873,52.93 L39.1632873,52.93 L39.1632873,46.73 C38.2392873,46.89 37.2922873,46.97 36.3282873,46.97 C35.3622873,46.97 34.4152873,46.89 33.4912873,46.73 L33.4912873,52.93 L29.8502873,52.93 C29.0782873,52.93 28.4012873,53.45 28.1952873,54.19 L26.9012873,58.84 C26.7592873,59.36 26.8642873,59.91 27.1882873,60.34 C27.5152873,60.76 28.0192873,61.02 28.5572873,61.02 L44.1002873,61.02 L44.1142873,61.02 C45.0622873,61.02 45.8312873,60.25 45.8312873,59.3 C45.8312873,59.06 45.7842873,58.84 45.6982873,58.63 L44.4622873,54.19" id="Fill-717"></path>
- <path d="M55.6102873,27.25 C54.8942873,29.94 52.9932873,32.01 51.0452873,32.33 C51.0642873,32.26 51.0832873,32.19 51.1002873,32.12 C51.1182873,32.06 51.1352873,32 51.1502873,31.93 C51.2532873,31.53 51.3392873,31.11 51.4112873,30.69 C51.4252873,30.62 51.4362873,30.54 51.4482873,30.47 C51.5162873,30.04 51.5712873,29.62 51.6092873,29.18 C51.6152873,29.12 51.6182873,29.06 51.6222873,29 C51.6572873,28.54 51.6792873,28.08 51.6792873,27.62 L51.6792873,19.99 C51.8992873,19.94 52.1222873,19.91 52.3422873,19.91 C52.5892873,19.91 52.8352873,19.94 53.0712873,20.01 C55.3332873,20.61 56.4952873,23.93 55.6102873,27.25 L55.6102873,27.25 Z M44.7202873,24.13 L40.1592873,27.55 L41.8172873,32.96 C41.8822873,33.17 41.8062873,33.4 41.6282873,33.53 C41.5372873,33.6 41.4292873,33.63 41.3242873,33.63 C41.2222873,33.63 41.1182873,33.6 41.0322873,33.54 L36.3272873,30.3 L31.6232873,33.54 C31.4442873,33.67 31.2022873,33.66 31.0252873,33.53 C30.8492873,33.4 30.7732873,33.17 30.8392873,32.96 L32.4942873,27.55 L27.9342873,24.13 C27.7592873,23.99 27.6842873,23.76 27.7532873,23.55 C27.8202873,23.34 28.0132873,23.2 28.2332873,23.2 L33.9602873,23.08 L35.8422873,17.73 C35.9132873,17.52 36.1082873,17.39 36.3272873,17.39 C36.5472873,17.39 36.7412873,17.52 36.8132873,17.73 L38.6942873,23.08 L44.4192873,23.2 C44.6412873,23.2 44.8342873,23.34 44.9012873,23.55 C44.9682873,23.76 44.8962873,23.99 44.7202873,24.13 L44.7202873,24.13 Z M17.0482873,27.25 C16.1632873,23.93 17.3252873,20.61 19.5852873,20.01 C19.8232873,19.94 20.0682873,19.91 20.3162873,19.91 C20.5362873,19.91 20.7572873,19.94 20.9772873,19.99 L20.9772873,27.62 C20.9772873,28.08 21.0002873,28.54 21.0362873,29 C21.0402873,29.06 21.0432873,29.12 21.0482873,29.18 C21.0852873,29.62 21.1412873,30.04 21.2082873,30.47 C21.2212873,30.54 21.2332873,30.62 21.2452873,30.69 C21.3192873,31.11 21.4052873,31.53 21.5082873,31.93 C21.5222873,32 21.5402873,32.06 21.5572873,32.12 C21.5752873,32.19 21.5932873,32.26 21.6122873,32.33 C19.6662873,32.01 17.7632873,29.94 17.0482873,27.25 L17.0482873,27.25 Z M53.7792873,17.35 C53.3042873,17.23 52.8212873,17.17 52.3422873,17.17 C52.1202873,17.17 51.8992873,17.18 51.6792873,17.2 L51.6792873,12.62 C51.6792873,11.73 50.9562873,11 50.0632873,11 L22.5952873,11 C21.7012873,11 20.9772873,11.73 20.9772873,12.62 L20.9772873,17.2 C20.7572873,17.18 20.5362873,17.17 20.3152873,17.17 C19.8352873,17.17 19.3532873,17.23 18.8782873,17.35 C15.1082873,18.36 13.1002873,23.11 14.3912873,27.96 C15.5222873,32.21 18.8002873,35.13 22.1242873,35.13 C22.2922873,35.13 22.4612873,35.11 22.6302873,35.09 C22.7532873,35.36 22.8842873,35.62 23.0202873,35.88 C23.0462873,35.93 23.0712873,35.97 23.0972873,36.02 C23.2982873,36.39 23.5122873,36.75 23.7382873,37.1 C23.7642873,37.14 23.7892873,37.18 23.8152873,37.22 C24.0532873,37.58 24.3002873,37.93 24.5602873,38.27 C24.5672873,38.27 24.5752873,38.28 24.5832873,38.29 C25.1312873,39 25.7352873,39.65 26.3852873,40.25 C26.3972873,40.26 26.4072873,40.28 26.4182873,40.29 C26.7392873,40.58 27.0722873,40.86 27.4132873,41.12 C27.4302873,41.14 27.4452873,41.15 27.4612873,41.16 C28.8722873,42.24 30.4612873,43.08 32.1692873,43.6 L32.1852873,43.6 C32.6142873,43.73 33.0482873,43.84 33.4892873,43.94 L33.4912873,43.94 C33.9482873,44.03 34.4122873,44.1 34.8812873,44.15 L34.9132873,44.15 C35.3792873,44.2 35.8522873,44.22 36.3282873,44.22 C36.8042873,44.22 37.2742873,44.2 37.7392873,44.15 L37.7752873,44.15 C38.2432873,44.1 38.7042873,44.03 39.1592873,43.94 L39.1622873,43.94 L39.1672873,43.94 C39.6072873,43.84 40.0412873,43.73 40.4682873,43.61 C40.4742873,43.6 40.4792873,43.6 40.4872873,43.6 C42.1952873,43.08 43.7822873,42.25 45.1942873,41.16 C45.2102873,41.15 45.2252873,41.14 45.2412873,41.13 C45.5852873,40.86 45.9172873,40.58 46.2372873,40.29 C46.2482873,40.28 46.2592873,40.27 46.2692873,40.25 C46.9212873,39.66 47.5252873,39 48.0752873,38.29 C48.0832873,38.28 48.0892873,38.28 48.0952873,38.27 C48.3562873,37.93 48.6042873,37.58 48.8422873,37.22 C48.8672873,37.18 48.8932873,37.14 48.9192873,37.1 C49.1442873,36.75 49.3602873,36.39 49.5612873,36.02 C49.5862873,35.97 49.6102873,35.93 49.6362873,35.88 C49.7722873,35.62 49.9032873,35.36 50.0272873,35.09 C50.1962873,35.11 50.3662873,35.13 50.5332873,35.13 C53.8572873,35.13 57.1362873,32.21 58.2652873,27.96 C59.5582873,23.11 57.5482873,18.36 53.7792873,17.35 L53.7792873,17.35 Z" id="Fill-718"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/expand.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/expand.svg
deleted file mode 100644
index 30c40045c..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/expand.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="72px" height="72px" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>expand</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="expand" fill="#E65376">
- <path d="M36.083,57.72 C24.153,57.72 14.448,48.01 14.448,36.08 C14.448,24.15 24.153,14.44 36.083,14.44 C48.012,14.44 57.72,24.15 57.72,36.08 C57.72,48.01 48.012,57.72 36.083,57.72 L36.083,57.72 Z M36.083,11 C22.252,11 11,22.25 11,36.08 C11,49.91 22.252,61.17 36.083,61.17 C49.916,61.17 61.169,49.91 61.169,36.08 C61.169,22.25 49.916,11 36.083,11 L36.083,11 Z" id="Fill-494"></path>
- <path d="M34.746,22.46 C34.903,22.46 35.026,22.42 35.119,22.33 C35.211,22.24 35.258,22.15 35.258,22.04 L35.258,18.65 L37.661,22.14 L37.688,22.18 C37.723,22.27 37.784,22.33 37.87,22.38 C37.957,22.44 38.068,22.46 38.198,22.46 C38.347,22.46 38.469,22.42 38.561,22.33 C38.655,22.24 38.701,22.15 38.701,22.04 L38.701,16.96 C38.701,16.86 38.655,16.76 38.561,16.67 C38.469,16.59 38.347,16.54 38.198,16.54 C38.031,16.54 37.898,16.59 37.803,16.67 C37.709,16.76 37.661,16.86 37.661,16.96 L37.661,20.41 L35.249,16.88 C35.225,16.79 35.168,16.71 35.078,16.65 C34.987,16.58 34.877,16.54 34.746,16.54 C34.586,16.54 34.455,16.59 34.356,16.67 C34.257,16.76 34.209,16.86 34.209,16.96 L34.209,22.04 C34.209,22.15 34.257,22.24 34.356,22.33 C34.455,22.42 34.586,22.46 34.746,22.46" id="Fill-495"></path>
- <path d="M22.742,33.65 C22.674,33.53 22.559,33.46 22.397,33.42 C22.253,33.38 22.123,33.39 22.003,33.45 C21.882,33.51 21.809,33.59 21.778,33.7 L21.106,37.77 L20.128,33.84 C20.081,33.7 20.019,33.59 19.941,33.51 C19.864,33.44 19.739,33.4 19.563,33.4 C19.294,33.4 19.116,33.55 19.026,33.84 L18.047,37.77 L17.377,33.7 C17.341,33.59 17.264,33.51 17.148,33.45 C17.032,33.39 16.897,33.38 16.749,33.42 C16.593,33.46 16.481,33.53 16.413,33.65 C16.343,33.76 16.325,33.86 16.354,33.96 L17.422,38.94 C17.452,39.04 17.518,39.13 17.623,39.2 C17.727,39.28 17.855,39.32 18.004,39.32 C18.153,39.32 18.281,39.28 18.385,39.2 C18.49,39.13 18.557,39.04 18.588,38.94 L19.573,35.23 L20.568,38.94 C20.598,39.04 20.667,39.13 20.769,39.2 C20.875,39.28 21.002,39.32 21.15,39.32 C21.294,39.32 21.419,39.28 21.528,39.2 C21.634,39.13 21.704,39.04 21.734,38.94 L22.799,33.96 C22.829,33.86 22.81,33.76 22.742,33.65" id="Fill-496"></path>
- <path d="M54.925,38.28 L52.918,38.28 L52.918,36.8 L54.263,36.8 C54.436,36.8 54.567,36.75 54.653,36.67 C54.74,36.58 54.782,36.47 54.782,36.33 C54.782,36.18 54.74,36.06 54.653,35.98 C54.567,35.89 54.436,35.85 54.263,35.85 L52.918,35.85 L52.918,34.44 L54.925,34.44 C55.093,34.44 55.22,34.4 55.307,34.31 C55.393,34.22 55.438,34.11 55.438,33.97 C55.438,33.82 55.393,33.71 55.307,33.62 C55.22,33.53 55.093,33.49 54.925,33.49 L52.407,33.49 C52.245,33.49 52.114,33.53 52.016,33.62 C51.919,33.71 51.867,33.8 51.867,33.91 L51.867,38.81 C51.867,38.91 51.919,39.01 52.016,39.1 C52.114,39.18 52.245,39.23 52.407,39.23 L54.925,39.23 C55.093,39.23 55.22,39.18 55.307,39.1 C55.393,39.01 55.438,38.9 55.438,38.76 C55.438,38.61 55.393,38.49 55.307,38.41 C55.22,38.32 55.093,38.28 54.925,38.28" id="Fill-497"></path>
- <path d="M37.53,53.18 C37.336,53.04 37.125,52.93 36.897,52.84 C36.669,52.75 36.461,52.66 36.265,52.57 C36.072,52.48 35.91,52.38 35.781,52.27 C35.652,52.15 35.588,52 35.588,51.81 C35.588,51.59 35.658,51.42 35.795,51.3 C35.932,51.19 36.109,51.13 36.324,51.13 C36.574,51.13 36.774,51.17 36.923,51.24 C37.073,51.32 37.184,51.39 37.255,51.45 C37.322,51.51 37.392,51.55 37.467,51.59 C37.541,51.64 37.628,51.66 37.723,51.66 C37.883,51.66 37.999,51.61 38.068,51.53 C38.135,51.44 38.17,51.33 38.17,51.19 C38.17,51.11 38.131,51.02 38.054,50.9 C37.977,50.78 37.861,50.67 37.709,50.56 C37.557,50.46 37.368,50.36 37.143,50.29 C36.919,50.21 36.659,50.18 36.359,50.18 C36.072,50.18 35.816,50.22 35.588,50.3 C35.361,50.38 35.169,50.49 35.015,50.64 C34.858,50.79 34.739,50.97 34.656,51.17 C34.571,51.38 34.531,51.6 34.531,51.85 C34.531,52.17 34.595,52.42 34.724,52.62 C34.851,52.82 35.015,52.99 35.212,53.12 C35.409,53.26 35.621,53.37 35.843,53.46 C36.068,53.55 36.279,53.64 36.477,53.74 C36.673,53.83 36.836,53.94 36.964,54.06 C37.093,54.19 37.158,54.34 37.158,54.53 C37.158,54.76 37.087,54.93 36.952,55.03 C36.813,55.14 36.626,55.19 36.387,55.19 C36.176,55.19 35.98,55.15 35.795,55.08 C35.609,55 35.465,54.92 35.363,54.82 C35.298,54.76 35.227,54.71 35.149,54.66 C35.073,54.61 34.983,54.58 34.88,54.57 C34.569,54.57 34.415,54.71 34.415,54.99 C34.415,55.12 34.45,55.23 34.522,55.33 C34.593,55.44 34.686,55.53 34.8,55.61 C34.912,55.69 35.041,55.76 35.181,55.82 C35.32,55.88 35.461,55.93 35.605,55.97 C35.75,56.01 35.887,56.04 36.018,56.06 C36.152,56.08 36.262,56.09 36.35,56.09 C36.929,56.09 37.384,55.95 37.714,55.66 C38.042,55.37 38.206,54.97 38.206,54.47 C38.206,54.15 38.142,53.89 38.014,53.68 C37.885,53.48 37.723,53.31 37.53,53.18" id="Fill-498"></path>
- <path d="M26.249,46.31 L32.951,34.3 L38.22,39.57 L26.249,46.31 L26.249,46.31 Z M48.622,22.54 L32.227,31.72 C32.218,31.72 32.212,31.73 32.204,31.74 L32.185,31.74 C32.018,31.84 31.879,31.98 31.788,32.14 L22.652,48.51 C22.427,48.92 22.499,49.42 22.826,49.75 C23.024,49.95 23.29,50.05 23.557,50.05 C23.73,50.05 23.905,50.01 24.063,49.92 L40.382,40.73 C40.478,40.68 40.569,40.59 40.65,40.49 C40.708,40.44 40.756,40.37 40.797,40.3 L50.028,23.95 C50.257,23.55 50.186,23.04 49.861,22.72 C49.533,22.39 49.027,22.32 48.622,22.54 L48.622,22.54 Z" id="Fill-499"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/fms-fc-logo.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/fms-fc-logo.svg
index 4c2b1e725..c3b778a3a 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/fms-fc-logo.svg
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/fms-fc-logo.svg
@@ -1,12 +1 @@
-
-<svg width="260px" height="68px" viewBox="1057 -1345 260 68" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Group" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(1057.000000, -1345.000000)">
- <path d="M34.2788,60.88584 C29.46576,60.88584 24.94784,59.63192 21.0256,57.4464 L33.24792,44.9616 C33.3064,44.90584 33.34584,44.8324 33.40024,44.77392 C34.3944,45.0228 35.41576,45.19008 36.48336,45.19008 C43.64376,45.20912 49.46184,39.46856 49.4836,32.368 C49.49176,31.23512 49.29864,30.15256 49.02256,29.09584 L42.194,35.83192 L34.646,34.21216 L33.05616,26.7104 L39.89968,19.97024 C38.83208,19.67512 37.72504,19.46704 36.56088,19.46568 C29.4032,19.44936 23.58104,25.17632 23.55928,32.28504 C23.55384,33.79464 23.85984,35.21856 24.3372,36.56496 L11.94488,49.21432 C8.93928,44.88544 7.17264,39.64536 7.17264,34 C7.17264,19.17464 19.33376,7.11416 34.2788,7.11416 C49.2252,7.11416 61.3836,19.17464 61.3836,34 C61.3836,48.82808 49.2252,60.88584 34.2788,60.88584 M34.2788,0 C15.37752,0 0,15.25376 0,33.99864 C0,52.74624 15.37752,68 34.2788,68 C53.17736,68 68.55352,52.74624 68.55352,33.99864 C68.55352,15.25376 53.17736,0 34.2788,0" id="Fill-1" fill="#FED876"></path>
- <path d="M93.2034361,12.6369163 L93.2034361,15.2400881 L81.8681057,15.2400881 L81.8681057,23.4944493 L91.555859,23.4944493 L91.555859,26.0976211 L81.8681057,26.0976211 L81.8681057,36.246696 L78.6553304,36.246696 L78.6553304,12.6369163 L93.2034361,12.6369163 Z M100.106784,19.5567401 L100.106784,36.246696 L97.1740969,36.246696 L97.1740969,19.5567401 L100.106784,19.5567401 Z M100.765815,14.3174449 C100.765815,14.6030264 100.70815,14.869382 100.592819,15.1165198 C100.477488,15.3636576 100.323716,15.5833324 100.131498,15.7755507 C99.9392795,15.9677689 99.7168588,16.1187953 99.4642291,16.2286344 C99.2115993,16.3384734 98.9424978,16.3933921 98.6569163,16.3933921 C98.3713348,16.3933921 98.1049792,16.3384734 97.8578414,16.2286344 C97.6107036,16.1187953 97.3910289,15.9677689 97.1988106,15.7755507 C97.0065923,15.5833324 96.8555659,15.3636576 96.7457269,15.1165198 C96.6358879,14.869382 96.5809692,14.6030264 96.5809692,14.3174449 C96.5809692,14.0318635 96.6358879,13.760016 96.7457269,13.5018943 C96.8555659,13.2437726 97.0065923,13.018606 97.1988106,12.8263877 C97.3910289,12.6341694 97.6107036,12.483143 97.8578414,12.373304 C98.1049792,12.2634649 98.3713348,12.2085463 98.6569163,12.2085463 C98.9424978,12.2085463 99.2115993,12.2634649 99.4642291,12.373304 C99.7168588,12.483143 99.9392795,12.6341694 100.131498,12.8263877 C100.323716,13.018606 100.477488,13.2437726 100.592819,13.5018943 C100.70815,13.760016 100.765815,14.0318635 100.765815,14.3174449 L100.765815,14.3174449 Z M109.184934,27.6957709 L103.566696,19.5567401 L106.384053,19.5567401 C106.625699,19.5567401 106.801439,19.5951832 106.911278,19.6720705 C107.021117,19.7489578 107.11997,19.8587952 107.207841,20.0015859 L111.293833,26.2623789 C111.392688,25.9548296 111.535476,25.6472849 111.722203,25.3397357 L115.313921,20.067489 C115.42376,19.9137144 115.533597,19.7901473 115.643436,19.6967841 C115.753275,19.603421 115.890572,19.5567401 116.05533,19.5567401 L118.757357,19.5567401 L113.139119,27.5310132 L118.988018,36.246696 L116.170661,36.246696 C115.929015,36.246696 115.739545,36.1835395 115.602247,36.0572247 C115.464948,35.9309098 115.352365,35.7908671 115.264493,35.6370925 L111.063172,29.0962115 C110.986284,29.4147446 110.870955,29.7003218 110.717181,29.9529515 L106.828899,35.6370925 C106.71906,35.7908671 106.600984,35.9309098 106.47467,36.0572247 C106.348355,36.1835395 106.175361,36.246696 105.955683,36.246696 L103.336035,36.246696 L109.184934,27.6957709 Z M133.964493,27.7122467 C134.118268,27.9758603 134.252819,28.2531997 134.36815,28.5442731 C134.483481,28.8353465 134.596064,29.1291615 134.705903,29.4257269 C134.815742,29.1181776 134.931071,28.8243626 135.051894,28.5442731 C135.172717,28.2641836 135.310014,27.9813524 135.463789,27.6957709 L143.454537,13.1806167 C143.597328,12.927987 143.745609,12.7742147 143.899383,12.7192952 C144.053158,12.6643756 144.272833,12.6369163 144.558414,12.6369163 L146.914449,12.6369163 L146.914449,36.246696 L144.113568,36.246696 L144.113568,18.8977093 C144.113568,18.6670473 144.11906,18.4199132 144.130044,18.1562996 C144.141028,17.8926859 144.157504,17.6235843 144.179471,17.3489868 L136.089868,32.1112775 C135.81527,32.6055531 135.430839,32.8526872 134.936564,32.8526872 L134.475242,32.8526872 C133.980967,32.8526872 133.596536,32.6055531 133.321938,32.1112775 L125.051101,17.2995595 C125.084053,17.5851409 125.108766,17.8652262 125.125242,18.1398238 C125.141718,18.4144213 125.149956,18.6670473 125.149956,18.8977093 L125.149956,36.246696 L122.349075,36.246696 L122.349075,12.6369163 L124.70511,12.6369163 C124.990692,12.6369163 125.210366,12.6643756 125.364141,12.7192952 C125.517916,12.7742147 125.666196,12.927987 125.808987,13.1806167 L133.964493,27.7122467 Z M157.096476,41.1729515 C156.997621,41.3926296 156.874054,41.5683694 156.725771,41.7001762 C156.577488,41.831983 156.349576,41.8978855 156.042026,41.8978855 L153.867225,41.8978855 L156.915242,35.2746256 L150.02837,19.5567401 L152.565639,19.5567401 C152.818269,19.5567401 153.015976,19.6198966 153.158767,19.7462115 C153.301557,19.8725263 153.405903,20.012569 153.471806,20.1663436 L157.93674,30.6778855 C158.035595,30.9195313 158.120719,31.1611735 158.192115,31.4028194 C158.26351,31.6444652 158.326666,31.8915993 158.381586,32.1442291 C158.458473,31.8915993 158.535359,31.6444652 158.612247,31.4028194 C158.689134,31.1611735 158.777004,30.9140394 158.875859,30.6614097 L163.208987,20.1663436 C163.27489,19.9906012 163.387474,19.8450667 163.54674,19.7297357 C163.706007,19.6144047 163.879001,19.5567401 164.065727,19.5567401 L166.405286,19.5567401 L157.096476,41.1729515 Z" id="FixMyStreet" fill="#7C7977"></path>
- <path d="M255.143789,36.5103084 C254.33098,36.5103084 253.614291,36.3922332 252.9937,36.1560793 C252.37311,35.9199254 251.851382,35.5849214 251.428502,35.1510573 C251.005622,34.7171931 250.684348,34.1927197 250.46467,33.5776211 C250.244992,32.9625226 250.135154,32.276039 250.135154,31.5181498 L250.135154,22.6871366 L248.685286,22.6871366 C248.421673,22.6871366 248.196506,22.6020126 248.00978,22.4317621 C247.823053,22.2615116 247.729692,22.0116316 247.729692,21.6821145 L247.729692,19.6885463 L250.448194,19.1613216 L251.453216,14.9929515 C251.585023,14.4657242 251.95847,14.2021145 252.573568,14.2021145 L255.242643,14.2021145 L255.242643,19.1942731 L259.394537,19.1942731 L259.394537,22.6871366 L255.242643,22.6871366 L255.242643,31.1721586 C255.242643,31.5675791 255.338751,31.8943453 255.530969,32.152467 C255.723187,32.4105887 256.000527,32.5396476 256.362996,32.5396476 C256.549722,32.5396476 256.70624,32.520426 256.832555,32.4819824 C256.95887,32.4435387 257.068707,32.3996038 257.16207,32.3501762 C257.255434,32.3007487 257.343304,32.2568137 257.425683,32.21837 C257.508062,32.1799264 257.60417,32.1607048 257.714009,32.1607048 C257.867783,32.1607048 257.99135,32.196402 258.084714,32.2677974 C258.178077,32.3391927 258.274185,32.451776 258.37304,32.6055507 L259.921762,35.027489 C259.262728,35.5217646 258.521326,35.8924657 257.697533,36.1396035 C256.87374,36.3867413 256.022501,36.5103084 255.143789,36.5103084 Z M238.536211,18.8977093 C239.667553,18.8977093 240.702771,19.0734491 241.641894,19.4249339 C242.581018,19.7764188 243.388323,20.2871626 244.063833,20.9571806 C244.739343,21.6271987 245.266562,22.448233 245.645507,23.4203084 C246.024451,24.3923837 246.213921,25.4935034 246.213921,26.7237004 C246.213921,27.108137 246.197445,27.4211735 246.164493,27.6628194 C246.131542,27.9044652 246.071131,28.0966806 245.98326,28.2394714 C245.895389,28.3822621 245.777314,28.4811157 245.629031,28.5360352 C245.480748,28.5909548 245.291279,28.6184141 245.060617,28.6184141 L235.208106,28.6184141 C235.372864,30.0463214 235.806722,31.0815386 236.509692,31.7240969 C237.212661,32.3666552 238.11882,32.6879295 239.228194,32.6879295 C239.821325,32.6879295 240.332068,32.6165352 240.760441,32.4737445 C241.188813,32.3309538 241.570498,32.1716896 241.905507,31.9959471 C242.240516,31.8202047 242.54806,31.6609405 242.82815,31.5181498 C243.108239,31.3753591 243.402054,31.3039648 243.709604,31.3039648 C244.116008,31.3039648 244.423553,31.4522452 244.632247,31.7488106 L246.115066,33.5776211 C245.587839,34.1817358 245.01943,34.673258 244.409824,35.0522026 C243.800217,35.4311473 243.174144,35.7277082 242.531586,35.9418943 C241.889028,36.1560804 241.246479,36.3043608 240.603921,36.3867401 C239.961362,36.4691194 239.349019,36.5103084 238.766872,36.5103084 C237.569627,36.5103084 236.44654,36.315347 235.397577,35.9254185 C234.348614,35.53549 233.431472,34.9560978 232.646123,34.1872247 C231.860774,33.4183515 231.240193,32.4627664 230.784361,31.3204405 C230.328529,30.1781147 230.100617,28.8490825 230.100617,27.333304 C230.100617,26.1909781 230.295578,25.10908 230.685507,24.0875771 C231.075435,23.0660742 231.635606,22.1708996 232.366035,21.4020264 C233.096465,20.6331533 233.980656,20.0235558 235.018634,19.5732159 C236.056613,19.1228759 237.229127,18.8977093 238.536211,18.8977093 Z M238.635066,22.4235242 C237.657499,22.4235242 236.894129,22.7008636 236.344934,23.2555507 C235.795739,23.8102377 235.433275,24.6093046 235.257533,25.6527753 L241.633656,25.6527753 C241.633656,25.2463709 241.581484,24.8509564 241.477137,24.4665198 C241.372789,24.0820832 241.202542,23.7388415 240.966388,23.4367841 C240.730234,23.1347268 240.419943,22.8903387 240.035507,22.7036123 C239.65107,22.516886 239.184261,22.4235242 238.635066,22.4235242 Z M220.610573,18.8977093 C221.741915,18.8977093 222.777132,19.0734491 223.716256,19.4249339 C224.655379,19.7764188 225.462684,20.2871626 226.138194,20.9571806 C226.813704,21.6271987 227.340923,22.448233 227.719868,23.4203084 C228.098812,24.3923837 228.288282,25.4935034 228.288282,26.7237004 C228.288282,27.108137 228.271806,27.4211735 228.238855,27.6628194 C228.205903,27.9044652 228.145492,28.0966806 228.057621,28.2394714 C227.96975,28.3822621 227.851675,28.4811157 227.703392,28.5360352 C227.555109,28.5909548 227.36564,28.6184141 227.134978,28.6184141 L217.282467,28.6184141 C217.447225,30.0463214 217.881083,31.0815386 218.584053,31.7240969 C219.287023,32.3666552 220.193181,32.6879295 221.302555,32.6879295 C221.895686,32.6879295 222.40643,32.6165352 222.834802,32.4737445 C223.263174,32.3309538 223.644859,32.1716896 223.979868,31.9959471 C224.314877,31.8202047 224.622422,31.6609405 224.902511,31.5181498 C225.182601,31.3753591 225.476415,31.3039648 225.783965,31.3039648 C226.190369,31.3039648 226.497914,31.4522452 226.706608,31.7488106 L228.189427,33.5776211 C227.6622,34.1817358 227.093792,34.673258 226.484185,35.0522026 C225.874578,35.4311473 225.248505,35.7277082 224.605947,35.9418943 C223.963389,36.1560804 223.32084,36.3043608 222.678282,36.3867401 C222.035724,36.4691194 221.42338,36.5103084 220.841233,36.5103084 C219.643988,36.5103084 218.520901,36.315347 217.471938,35.9254185 C216.422976,35.53549 215.505834,34.9560978 214.720485,34.1872247 C213.935136,33.4183515 213.314554,32.4627664 212.858722,31.3204405 C212.402891,30.1781147 212.174978,28.8490825 212.174978,27.333304 C212.174978,26.1909781 212.369939,25.10908 212.759868,24.0875771 C213.149796,23.0660742 213.709967,22.1708996 214.440396,21.4020264 C215.170826,20.6331533 216.055017,20.0235558 217.092996,19.5732159 C218.130974,19.1228759 219.303488,18.8977093 220.610573,18.8977093 Z M220.709427,22.4235242 C219.73186,22.4235242 218.96849,22.7008636 218.419295,23.2555507 C217.8701,23.8102377 217.507637,24.6093046 217.331894,25.6527753 L223.708018,25.6527753 C223.708018,25.2463709 223.655845,24.8509564 223.551498,24.4665198 C223.447151,24.0820832 223.276903,23.7388415 223.040749,23.4367841 C222.804595,23.1347268 222.494304,22.8903387 222.109868,22.7036123 C221.725431,22.516886 221.258622,22.4235242 220.709427,22.4235242 Z M199.686344,36.246696 L199.686344,19.1613216 L202.717885,19.1613216 C202.970515,19.1613216 203.181952,19.1832891 203.352203,19.2272247 C203.522453,19.2711603 203.665242,19.3398086 203.780573,19.4331718 C203.895904,19.526535 203.983774,19.650102 204.044185,19.8038767 C204.104596,19.9576513 204.156769,20.1443748 204.200705,20.3640529 L204.480793,21.9622026 C205.106875,20.9956192 205.809835,20.2322495 206.589692,19.6720705 C207.369549,19.1118915 208.220788,18.8318062 209.143436,18.8318062 C209.923293,18.8318062 210.549366,19.0185297 211.021674,19.3919824 L210.362643,23.1484581 C210.318708,23.3791201 210.230838,23.5411302 210.099031,23.6344934 C209.967224,23.7278566 209.791484,23.7745374 209.571806,23.7745374 C209.38508,23.7745374 209.165405,23.749824 208.912775,23.7003965 C208.660146,23.6509689 208.341617,23.6262555 207.957181,23.6262555 C206.617145,23.6262555 205.562706,24.3401984 204.793833,25.7681057 L204.793833,36.246696 L199.686344,36.246696 Z M192.502907,36.5103084 C191.690099,36.5103084 190.97341,36.3922332 190.352819,36.1560793 C189.732229,35.9199254 189.210501,35.5849214 188.787621,35.1510573 C188.364741,34.7171931 188.043467,34.1927197 187.823789,33.5776211 C187.604111,32.9625226 187.494273,32.276039 187.494273,31.5181498 L187.494273,22.6871366 L186.044405,22.6871366 C185.780792,22.6871366 185.555625,22.6020126 185.368899,22.4317621 C185.182172,22.2615116 185.088811,22.0116316 185.088811,21.6821145 L185.088811,19.6885463 L187.807313,19.1613216 L188.812335,14.9929515 C188.944142,14.4657242 189.317589,14.2021145 189.932687,14.2021145 L192.601762,14.2021145 L192.601762,19.1942731 L196.753656,19.1942731 L196.753656,22.6871366 L192.601762,22.6871366 L192.601762,31.1721586 C192.601762,31.5675791 192.69787,31.8943453 192.890088,32.152467 C193.082306,32.4105887 193.359646,32.5396476 193.722115,32.5396476 C193.908841,32.5396476 194.065359,32.520426 194.191674,32.4819824 C194.317989,32.4435387 194.427826,32.3996038 194.521189,32.3501762 C194.614553,32.3007487 194.702422,32.2568137 194.784802,32.21837 C194.867181,32.1799264 194.963289,32.1607048 195.073128,32.1607048 C195.226902,32.1607048 195.350469,32.196402 195.443833,32.2677974 C195.537196,32.3391927 195.633303,32.451776 195.732159,32.6055507 L197.280881,35.027489 C196.621847,35.5217646 195.880445,35.8924657 195.056652,36.1396035 C194.232859,36.3867413 193.38162,36.5103084 192.502907,36.5103084 Z M182.024317,17.118326 C181.859559,17.3819396 181.686565,17.5796469 181.50533,17.7114537 C181.324096,17.8432606 181.090692,17.909163 180.80511,17.909163 C180.55248,17.909163 180.280633,17.8295309 179.989559,17.6702643 C179.698486,17.5109977 179.368974,17.332512 179.001013,17.1348018 C178.633052,16.9370915 178.212925,16.7586058 177.740617,16.5993392 C177.268309,16.4400726 176.730106,16.3604405 176.125991,16.3604405 C175.08252,16.3604405 174.305421,16.5828612 173.79467,17.0277093 C173.283918,17.4725573 173.028546,18.0739169 173.028546,18.8318062 C173.028546,19.3150979 173.182319,19.7160043 173.489868,20.0345374 C173.797417,20.3530706 174.201069,20.627664 174.700837,20.858326 C175.200605,21.0889879 175.771759,21.3004249 176.414317,21.4926432 C177.056875,21.6848615 177.713154,21.8990443 178.383172,22.1351982 C179.05319,22.3713521 179.709468,22.6486915 180.352026,22.9672247 C180.994585,23.2857578 181.565739,23.6921561 182.065507,24.1864317 C182.565274,24.6807073 182.968927,25.2820669 183.276476,25.9905286 C183.584025,26.6989903 183.737797,27.5529759 183.737797,28.552511 C183.737797,29.6618851 183.545582,30.6998483 183.161145,31.6664317 C182.776709,32.6330151 182.219284,33.476017 181.488855,34.1954626 C180.758425,34.9149081 179.857759,35.4805706 178.786828,35.892467 C177.715898,36.3043633 176.499449,36.5103084 175.137445,36.5103084 C174.39054,36.5103084 173.629916,36.4334222 172.855551,36.2796476 C172.081186,36.1258729 171.331545,35.9089441 170.606608,35.6288546 C169.88167,35.3487651 169.200679,35.0165071 168.563612,34.6320705 C167.926546,34.2476339 167.371867,33.8192681 166.899559,33.3469604 L168.547137,30.7437885 C168.667959,30.5460783 168.838207,30.3868141 169.057885,30.2659912 C169.277564,30.1451683 169.513714,30.0847577 169.766344,30.0847577 C170.095861,30.0847577 170.428119,30.1891032 170.763128,30.3977974 C171.098137,30.6064915 171.477076,30.83715 171.899956,31.0897797 C172.322836,31.3424095 172.808867,31.573068 173.358062,31.7817621 C173.907257,31.9904563 174.555297,32.0948018 175.302203,32.0948018 C176.312722,32.0948018 177.098059,31.8723811 177.658238,31.427533 C178.218417,30.982685 178.498502,30.2769799 178.498502,29.3103965 C178.498502,28.7502175 178.34473,28.2943924 178.037181,27.9429075 C177.729631,27.5914226 177.325979,27.3003536 176.826211,27.0696916 C176.326444,26.8390297 175.758035,26.6358305 175.120969,26.4600881 C174.483903,26.2843457 173.83037,26.0893843 173.160352,25.8751982 C172.490334,25.6610121 171.836802,25.3974024 171.199736,25.0843612 C170.562669,24.77132 169.994261,24.3594299 169.494493,23.8486784 C168.994726,23.337927 168.591073,22.7008702 168.283524,21.937489 C167.975975,21.1741078 167.822203,20.2322523 167.822203,19.1118943 C167.822203,18.2112143 168.003434,17.3325153 168.365903,16.4757709 C168.728372,15.6190266 169.261083,14.8556568 169.964053,14.1856388 C170.667023,13.5156207 171.529246,12.9801635 172.550749,12.5792511 C173.572252,12.1783387 174.74202,11.9778855 176.060088,11.9778855 C176.79601,11.9778855 177.512698,12.0355501 178.210176,12.1508811 C178.907654,12.266212 179.569424,12.43646 180.195507,12.66163 C180.821589,12.8868 181.406473,13.1559015 181.950176,13.4689427 C182.493879,13.7819839 182.97991,14.1362095 183.408282,14.53163 L182.024317,17.118326 Z" id="Combined-Shape" fill="#333333"></path>
- <path d="M83.9593304,46.4155419 L83.9593304,48.129022 L80.018326,48.129022 L80.018326,50.5608458 L83.3002996,50.5608458 L83.3002996,52.2809163 L80.018326,52.2809163 L80.018326,56.0176211 L77.7776211,56.0176211 L77.7776211,46.4155419 L83.9593304,46.4155419 Z M102.573357,51.2132863 C102.573357,51.907469 102.453634,52.5533127 102.214185,53.150837 C101.974736,53.7483613 101.637535,54.2678921 101.202572,54.7094449 C100.76761,55.1509978 100.243686,55.4969855 99.6307839,55.7474185 C99.0178821,55.9978515 98.3379888,56.1230661 97.5910834,56.1230661 C96.8441781,56.1230661 96.1631864,55.9978515 95.5480879,55.7474185 C94.9329893,55.4969855 94.4068683,55.1509978 93.969709,54.7094449 C93.5325497,54.2678921 93.1942506,53.7483613 92.9548015,53.150837 C92.7153524,52.5533127 92.5956297,51.907469 92.5956297,51.2132863 C92.5956297,50.5191037 92.7153524,49.87326 92.9548015,49.2757357 C93.1942506,48.6782114 93.5325497,48.159779 93.969709,47.7204229 C94.4068683,47.2810668 94.9329893,46.9361775 95.5480879,46.6857445 C96.1631864,46.4353115 96.8441781,46.3100969 97.5910834,46.3100969 C98.3379888,46.3100969 99.0178821,46.4364099 99.6307839,46.6890396 C100.243686,46.9416694 100.76761,47.2876571 101.202572,47.7270132 C101.637535,48.1663693 101.974736,48.6848017 102.214185,49.282326 C102.453634,49.8798503 102.573357,50.5234973 102.573357,51.2132863 L102.573357,51.2132863 Z M100.29311,51.2132863 C100.29311,50.7387818 100.231601,50.3115144 100.108581,49.9314714 C99.9855615,49.5514283 99.8087234,49.2296048 99.5780614,48.9659912 C99.3473995,48.7023775 99.0651174,48.5002768 98.7312068,48.3596828 C98.3972962,48.2190889 98.0172589,48.148793 97.5910834,48.148793 C97.1605145,48.148793 96.777182,48.2190889 96.4410746,48.3596828 C96.1049672,48.5002768 95.8215868,48.7023775 95.5909249,48.9659912 C95.3602629,49.2296048 95.1834247,49.5514283 95.060405,49.9314714 C94.9373853,50.3115144 94.8758764,50.7387818 94.8758764,51.2132863 C94.8758764,51.6921845 94.9373853,52.1216486 95.060405,52.5016916 C95.1834247,52.8817346 95.3602629,53.2035582 95.5909249,53.4671718 C95.8215868,53.7307855 96.1049672,53.9317879 96.4410746,54.070185 C96.777182,54.2085822 97.1605145,54.2777797 97.5910834,54.2777797 C98.0172589,54.2777797 98.3972962,54.2085822 98.7312068,54.070185 C99.0651174,53.9317879 99.3473995,53.7307855 99.5780614,53.4671718 C99.8087234,53.2035582 99.9855615,52.8817346 100.108581,52.5016916 C100.231601,52.1216486 100.29311,51.6921845 100.29311,51.2132863 L100.29311,51.2132863 Z M113.845779,52.4654449 L113.845779,56.0176211 L111.618255,56.0176211 L111.618255,46.4155419 L114.742061,46.4155419 C115.436244,46.4155419 116.028267,46.4869361 116.518149,46.6297269 C117.008031,46.7725176 117.407839,46.9713232 117.717585,47.2261498 C118.027331,47.4809763 118.252498,47.7819307 118.393092,48.129022 C118.533686,48.4761133 118.603982,48.8539539 118.603982,49.2625551 C118.603982,49.5744979 118.562244,49.8688621 118.478766,50.1456564 C118.395288,50.4224507 118.271172,50.6783718 118.106414,50.9134273 C117.941655,51.1484828 117.739554,51.3582722 117.500105,51.5428018 C117.260656,51.7273313 116.984964,51.8789069 116.673022,51.997533 C116.822403,52.0722236 116.961896,52.164487 117.091506,52.274326 C117.221116,52.384165 117.334249,52.5181666 117.430907,52.6763348 L119.473903,56.0176211 L117.457268,56.0176211 C117.083816,56.0176211 116.815812,55.8770293 116.653251,55.5958414 L115.058396,52.808141 C114.988099,52.6851213 114.905721,52.5972514 114.811259,52.5445286 C114.716798,52.4918059 114.583895,52.4654449 114.412546,52.4654449 L113.845779,52.4654449 Z M113.845779,50.9299031 L114.742061,50.9299031 C115.045217,50.9299031 115.303335,50.89146 115.516422,50.8145727 C115.72951,50.7376854 115.904152,50.6311431 116.040352,50.4949427 C116.176552,50.3587423 116.275406,50.1994782 116.336916,50.0171454 C116.398426,49.8348126 116.42918,49.6382037 116.42918,49.4273128 C116.42918,49.0055309 116.291883,48.6760188 116.017286,48.4387665 C115.742688,48.2015142 115.317618,48.0828899 114.742061,48.0828899 L113.845779,48.0828899 L113.845779,50.9299031 Z M145.333673,53.5330749 C145.386396,53.5330749 145.439118,53.5429603 145.49184,53.5627313 C145.544563,53.5825023 145.595088,53.6165519 145.643417,53.6648811 L146.526519,54.5941145 C146.139885,55.099374 145.655503,55.4805097 145.073356,55.737533 C144.491209,55.9945564 143.802529,56.1230661 143.007294,56.1230661 C142.277963,56.1230661 141.624431,55.9989498 141.046677,55.7507137 C140.468924,55.5024775 139.979049,55.1597849 139.577039,54.7226256 C139.175028,54.2854662 138.866385,53.7670338 138.6511,53.1673128 C138.435816,52.5675917 138.328175,51.9162561 138.328175,51.2132863 C138.328175,50.4971359 138.451193,49.83921 138.697232,49.239489 C138.943272,48.6397679 139.287063,48.1224339 139.728616,47.6874714 C140.170169,47.2525088 140.698486,46.9142097 141.313585,46.6725639 C141.928683,46.430918 142.607478,46.3100969 143.34999,46.3100969 C143.710262,46.3100969 144.04966,46.3419498 144.368193,46.4056564 C144.686726,46.469363 144.984385,46.5572329 145.26118,46.6692687 C145.537974,46.7813045 145.792797,46.9153061 146.025655,47.0712775 C146.258514,47.2272489 146.465008,47.3996936 146.645144,47.5886167 L145.893849,48.5969339 C145.84552,48.6584438 145.788405,48.7144608 145.722501,48.7649868 C145.656598,48.8155127 145.564334,48.8407753 145.445708,48.8407753 C145.366624,48.8407753 145.291935,48.8232014 145.221638,48.7880529 C145.151341,48.7529044 145.076651,48.7100678 144.997567,48.6595419 C144.918483,48.6090159 144.831712,48.5540972 144.73725,48.4947841 C144.642789,48.4354711 144.530754,48.3805524 144.401144,48.3300264 C144.271534,48.2795005 144.119959,48.2366639 143.946413,48.2015154 C143.772867,48.1663669 143.569668,48.148793 143.33681,48.148793 C142.932602,48.148793 142.563548,48.2201872 142.229638,48.362978 C141.895727,48.5057687 141.609052,48.7100662 141.369603,48.9758767 C141.130153,49.2416871 140.94343,49.5635106 140.809426,49.9413568 C140.675423,50.3192031 140.608422,50.7431753 140.608422,51.2132863 C140.608422,51.7053652 140.675423,52.1425179 140.809426,52.5247577 C140.94343,52.9069975 141.12576,53.228821 141.356422,53.4902379 C141.587084,53.7516548 141.856185,53.9504604 142.163735,54.0866608 C142.471284,54.2228612 142.800796,54.2909604 143.152281,54.2909604 C143.354385,54.2909604 143.538912,54.281075 143.705867,54.261304 C143.872822,54.2415329 144.027693,54.2074834 144.170484,54.1591542 C144.313274,54.110825 144.449473,54.0482177 144.579083,53.9713304 C144.708693,53.8944431 144.839399,53.7988846 144.971206,53.684652 C145.023929,53.6407164 145.081044,53.60447 145.142554,53.5759119 C145.204064,53.5473537 145.26777,53.5330749 145.333673,53.5330749 L145.333673,53.5330749 Z M164.995558,51.2132863 C164.995558,51.907469 164.875835,52.5533127 164.636386,53.150837 C164.396937,53.7483613 164.059737,54.2678921 163.624774,54.7094449 C163.189812,55.1509978 162.665887,55.4969855 162.052986,55.7474185 C161.440084,55.9978515 160.76019,56.1230661 160.013285,56.1230661 C159.26638,56.1230661 158.585388,55.9978515 157.970289,55.7474185 C157.355191,55.4969855 156.82907,55.1509978 156.391911,54.7094449 C155.954751,54.2678921 155.616452,53.7483613 155.377003,53.150837 C155.137554,52.5533127 155.017831,51.907469 155.017831,51.2132863 C155.017831,50.5191037 155.137554,49.87326 155.377003,49.2757357 C155.616452,48.6782114 155.954751,48.159779 156.391911,47.7204229 C156.82907,47.2810668 157.355191,46.9361775 157.970289,46.6857445 C158.585388,46.4353115 159.26638,46.3100969 160.013285,46.3100969 C160.76019,46.3100969 161.440084,46.4364099 162.052986,46.6890396 C162.665887,46.9416694 163.189812,47.2876571 163.624774,47.7270132 C164.059737,48.1663693 164.396937,48.6848017 164.636386,49.282326 C164.875835,49.8798503 164.995558,50.5234973 164.995558,51.2132863 L164.995558,51.2132863 Z M162.715312,51.2132863 C162.715312,50.7387818 162.653803,50.3115144 162.530783,49.9314714 C162.407763,49.5514283 162.230925,49.2296048 162.000263,48.9659912 C161.769601,48.7023775 161.487319,48.5002768 161.153408,48.3596828 C160.819498,48.2190889 160.43946,48.148793 160.013285,48.148793 C159.582716,48.148793 159.199384,48.2190889 158.863276,48.3596828 C158.527169,48.5002768 158.243788,48.7023775 158.013126,48.9659912 C157.782465,49.2296048 157.605626,49.5514283 157.482607,49.9314714 C157.359587,50.3115144 157.298078,50.7387818 157.298078,51.2132863 C157.298078,51.6921845 157.359587,52.1216486 157.482607,52.5016916 C157.605626,52.8817346 157.782465,53.2035582 158.013126,53.4671718 C158.243788,53.7307855 158.527169,53.9317879 158.863276,54.070185 C159.199384,54.2085822 159.582716,54.2777797 160.013285,54.2777797 C160.43946,54.2777797 160.819498,54.2085822 161.153408,54.070185 C161.487319,53.9317879 161.769601,53.7307855 162.000263,53.4671718 C162.230925,53.2035582 162.407763,52.8817346 162.530783,52.5016916 C162.653803,52.1216486 162.715312,51.6921845 162.715312,51.2132863 L162.715312,51.2132863 Z M178.034184,54.2580088 C178.332946,54.2580088 178.59985,54.208582 178.834906,54.1097269 C179.069961,54.0108718 179.268767,53.8691815 179.431329,53.684652 C179.593891,53.5001224 179.718007,53.2749558 179.803681,53.0091454 C179.889356,52.7433349 179.932192,52.4412822 179.932192,52.102978 L179.932192,46.4155419 L182.159717,46.4155419 L182.159717,52.102978 C182.159717,52.6917151 182.064158,53.232115 181.873038,53.7241938 C181.681918,54.2162727 181.408423,54.6402449 181.052545,54.9961233 C180.696666,55.3520018 180.263907,55.628792 179.754254,55.8265022 C179.244601,56.0242124 178.67125,56.1230661 178.034184,56.1230661 C177.392724,56.1230661 176.817176,56.0242124 176.307523,55.8265022 C175.79787,55.628792 175.36511,55.3520018 175.009232,54.9961233 C174.653354,54.6402449 174.380957,54.2162727 174.192034,53.7241938 C174.003111,53.232115 173.90865,52.6917151 173.90865,52.102978 L173.90865,46.4155419 L176.136175,46.4155419 L176.136175,52.0963877 C176.136175,52.4346919 176.179011,52.7367446 176.264686,53.0025551 C176.35036,53.2683655 176.474476,53.4946305 176.637038,53.6813568 C176.7996,53.8680832 176.998406,54.0108718 177.233461,54.1097269 C177.468517,54.208582 177.735421,54.2580088 178.034184,54.2580088 L178.034184,54.2580088 Z M192.759928,46.4155419 C192.856586,46.4155419 192.937866,46.4199353 193.003769,46.4287225 C193.069673,46.4375096 193.128985,46.4539852 193.181707,46.4781498 C193.23443,46.5023144 193.284955,46.536364 193.333285,46.5802996 C193.381614,46.6242352 193.436532,46.6835474 193.498042,46.7582379 L198.058536,52.5247577 C198.040961,52.3402282 198.027781,52.1611932 198.018994,51.9876476 C198.010207,51.8141019 198.005813,51.6504442 198.005813,51.4966696 L198.005813,46.4155419 L199.969725,46.4155419 L199.969725,56.0176211 L198.809831,56.0176211 C198.638482,56.0176211 198.493497,55.9912602 198.37487,55.9385374 C198.256244,55.8858147 198.142013,55.7891578 198.032174,55.6485639 L193.504633,49.9281762 C193.517813,50.0951315 193.528797,50.2587892 193.537584,50.4191542 C193.546371,50.5795192 193.550765,50.7299964 193.550765,50.8705903 L193.550765,56.0176211 L191.586853,56.0176211 L191.586853,46.4155419 L192.759928,46.4155419 Z M215.980579,53.5330749 C216.033302,53.5330749 216.086024,53.5429603 216.138747,53.5627313 C216.19147,53.5825023 216.241995,53.6165519 216.290324,53.6648811 L217.173425,54.5941145 C216.786792,55.099374 216.302409,55.4805097 215.720262,55.737533 C215.138115,55.9945564 214.449435,56.1230661 213.654201,56.1230661 C212.92487,56.1230661 212.271337,55.9989498 211.693584,55.7507137 C211.115831,55.5024775 210.625956,55.1597849 210.223945,54.7226256 C209.821934,54.2854662 209.513291,53.7670338 209.298007,53.1673128 C209.082722,52.5675917 208.975082,51.9162561 208.975082,51.2132863 C208.975082,50.4971359 209.0981,49.83921 209.344139,49.239489 C209.590178,48.6397679 209.933969,48.1224339 210.375522,47.6874714 C210.817075,47.2525088 211.345393,46.9142097 211.960491,46.6725639 C212.57559,46.430918 213.254385,46.3100969 213.996897,46.3100969 C214.357169,46.3100969 214.696566,46.3419498 215.015099,46.4056564 C215.333632,46.469363 215.631292,46.5572329 215.908086,46.6692687 C216.18488,46.7813045 216.439703,46.9153061 216.672562,47.0712775 C216.905421,47.2272489 217.111915,47.3996936 217.292051,47.5886167 L216.540756,48.5969339 C216.492427,48.6584438 216.435311,48.7144608 216.369408,48.7649868 C216.303504,48.8155127 216.211241,48.8407753 216.092615,48.8407753 C216.013531,48.8407753 215.938841,48.8232014 215.868544,48.7880529 C215.798247,48.7529044 215.723558,48.7100678 215.644474,48.6595419 C215.56539,48.6090159 215.478618,48.5540972 215.384157,48.4947841 C215.289695,48.4354711 215.177661,48.3805524 215.048051,48.3300264 C214.918441,48.2795005 214.766865,48.2366639 214.59332,48.2015154 C214.419774,48.1663669 214.216575,48.148793 213.983716,48.148793 C213.579508,48.148793 213.210455,48.2201872 212.876544,48.362978 C212.542634,48.5057687 212.255958,48.7100662 212.016509,48.9758767 C211.77706,49.2416871 211.590336,49.5635106 211.456333,49.9413568 C211.322329,50.3192031 211.255328,50.7431753 211.255328,51.2132863 C211.255328,51.7053652 211.322329,52.1425179 211.456333,52.5247577 C211.590336,52.9069975 211.772666,53.228821 212.003328,53.4902379 C212.23399,53.7516548 212.503092,53.9504604 212.810641,54.0866608 C213.11819,54.2228612 213.447703,54.2909604 213.799187,54.2909604 C214.001291,54.2909604 214.185818,54.281075 214.352773,54.261304 C214.519729,54.2415329 214.674599,54.2074834 214.81739,54.1591542 C214.960181,54.110825 215.096379,54.0482177 215.225989,53.9713304 C215.355599,53.8944431 215.486306,53.7988846 215.618113,53.684652 C215.670835,53.6407164 215.727951,53.60447 215.789461,53.5759119 C215.85097,53.5473537 215.914676,53.5330749 215.980579,53.5330749 L215.980579,53.5330749 Z M228.604015,56.0176211 L226.363311,56.0176211 L226.363311,46.4155419 L228.604015,46.4155419 L228.604015,56.0176211 Z M240.588191,54.2382379 L244.146958,54.2382379 L244.146958,56.0176211 L238.360667,56.0176211 L238.360667,46.4155419 L240.588191,46.4155419 L240.588191,54.2382379 Z M258.530006,48.3662731 C258.464103,48.4717186 258.394905,48.5508015 258.322411,48.6035242 C258.249918,48.656247 258.156556,48.6826079 258.042323,48.6826079 C257.941271,48.6826079 257.832532,48.6507551 257.716103,48.5870485 C257.599674,48.5233418 257.467869,48.4519475 257.320684,48.3728634 C257.1735,48.2937793 257.005449,48.222385 256.816526,48.1586784 C256.627603,48.0949718 256.412321,48.0631189 256.170676,48.0631189 C255.753287,48.0631189 255.442448,48.1520872 255.238147,48.3300264 C255.033846,48.5079656 254.931698,48.7485095 254.931698,49.0516652 C254.931698,49.2449819 254.993207,49.4053444 255.116226,49.5327577 C255.239246,49.660171 255.400707,49.7700083 255.600614,49.8622731 C255.800521,49.9545379 256.028983,50.0391127 256.286006,50.116 C256.543029,50.1928873 256.805541,50.2785605 257.073548,50.373022 C257.341555,50.4674836 257.604066,50.5784193 257.86109,50.7058326 C258.118113,50.8332459 258.346575,50.9958052 258.546482,51.1935154 C258.746389,51.3912257 258.90785,51.6317695 259.030869,51.9151542 C259.153889,52.1985389 259.215398,52.5401331 259.215398,52.9399471 C259.215398,53.3836968 259.138512,53.7988821 258.984737,54.1855154 C258.830963,54.5721488 258.607993,54.9093495 258.315821,55.1971278 C258.023649,55.484906 257.663383,55.711171 257.23501,55.8759295 C256.806638,56.040688 256.320059,56.1230661 255.775257,56.1230661 C255.476495,56.1230661 255.172245,56.0923116 254.862499,56.0308018 C254.552753,55.9692919 254.252897,55.8825204 253.962922,55.7704846 C253.672947,55.6584488 253.400551,55.5255456 253.145724,55.3717709 C252.890898,55.2179963 252.669026,55.04665 252.480103,54.8577269 L253.139134,53.8164581 C253.187463,53.7373741 253.255562,53.6736684 253.343433,53.6253392 C253.431305,53.57701 253.525765,53.5528458 253.626817,53.5528458 C253.758623,53.5528458 253.891527,53.594584 254.02553,53.6780617 C254.159534,53.7615393 254.311109,53.8538027 254.480262,53.9548546 C254.649414,54.0559065 254.843826,54.1481699 255.063504,54.2316476 C255.283182,54.3151252 255.542398,54.3568634 255.84116,54.3568634 C256.245368,54.3568634 256.559503,54.2678952 256.783574,54.0899559 C257.007646,53.9120167 257.11968,53.6297347 257.11968,53.2431013 C257.11968,53.0190297 257.058171,52.8366997 256.935151,52.6961057 C256.812132,52.5555118 256.650671,52.4390842 256.450764,52.3468194 C256.250857,52.2545546 256.023493,52.1732749 255.768667,52.102978 C255.51384,52.032681 255.252427,51.9546965 254.98442,51.869022 C254.716413,51.7833476 254.455,51.6779037 254.200173,51.5526872 C253.945347,51.4274707 253.717984,51.2627147 253.518077,51.0584141 C253.31817,50.8541135 253.156709,50.5992908 253.033689,50.2939383 C252.910669,49.9885858 252.84916,49.6118437 252.84916,49.1637004 C252.84916,48.8034284 252.921653,48.4519489 253.06664,48.1092511 C253.211628,47.7665534 253.424712,47.4612055 253.7059,47.1931982 C253.987088,46.925191 254.331978,46.7110081 254.740579,46.5506432 C255.14918,46.3902782 255.617087,46.3100969 256.144314,46.3100969 C256.438683,46.3100969 256.725359,46.3331628 257.00435,46.3792952 C257.283341,46.4254275 257.548049,46.4935267 257.798482,46.5835947 C258.048915,46.6736627 258.282868,46.7813033 258.50035,46.9065198 C258.717831,47.0317363 258.912243,47.1734265 259.083592,47.3315947 L258.530006,48.3662731 Z" id="For-Councils" fill="#7C7977"></path>
- </g>
-</svg>
+<svg width="868" height="227" viewBox="0 0 868 227" xmlns="http://www.w3.org/2000/svg"><title>Group Copy</title><g fill="none" fill-rule="evenodd"><path d="M114.43 203.25c-16.066 0-31.148-4.185-44.242-11.48l40.8-41.678c.197-.186.328-.43.51-.626 3.32.83 6.728 1.39 10.292 1.39 23.903.063 43.325-19.1 43.398-42.804.027-3.782-.618-7.396-1.54-10.923l-22.794 22.485-25.198-5.407-5.307-25.042 22.845-22.5c-3.564-.986-7.26-1.68-11.146-1.685-23.895-.053-43.33 19.064-43.404 42.795-.018 5.04 1.004 9.793 2.597 14.287L39.875 164.29c-10.034-14.452-15.93-31.944-15.93-50.79 0-49.49 40.596-89.75 90.486-89.75 49.895 0 90.483 40.26 90.483 89.75 0 49.5-40.588 89.75-90.482 89.75m0-203.25C51.335 0 0 50.92 0 113.495 0 176.08 51.334 227 114.43 227c63.09 0 114.418-50.92 114.418-113.505C228.848 50.92 177.518 0 114.43 0" fill="#FED876"/><path d="M311.135 42.185v8.69h-37.84V78.43h32.34v8.69h-32.34V121H262.57V42.185h48.565zm23.045 23.1V121h-9.79V65.285h9.79zm2.2-17.49c0 .953-.192 1.842-.577 2.667-.386.826-.9 1.56-1.54 2.2-.642.642-1.385 1.146-2.228 1.513-.843.367-1.742.55-2.695.55-.953 0-1.842-.183-2.667-.55-.826-.367-1.56-.87-2.2-1.512-.642-.642-1.146-1.375-1.513-2.2-.367-.826-.55-1.715-.55-2.668 0-.953.183-1.86.55-2.723.367-.86.87-1.613 1.513-2.255.64-.64 1.374-1.145 2.2-1.512.825-.367 1.714-.55 2.667-.55.953 0 1.852.183 2.695.55.843.367 1.586.87 2.227 1.513.642.64 1.155 1.393 1.54 2.255.386.86.578 1.77.578 2.722zm28.105 44.66l-18.755-27.17h9.405c.807 0 1.393.128 1.76.385s.697.623.99 1.1l13.64 20.9c.33-1.027.807-2.053 1.43-3.08l11.99-17.6c.367-.513.733-.926 1.1-1.237.367-.312.825-.468 1.375-.468h9.02l-18.755 26.62L397.21 121h-9.405c-.807 0-1.44-.21-1.897-.632-.46-.422-.835-.89-1.128-1.403L370.755 97.13c-.257 1.063-.642 2.017-1.155 2.86l-12.98 18.975c-.367.513-.76.98-1.183 1.403-.42.42-1 .632-1.732.632h-8.745l19.525-28.545zm82.72.055c.513.88.962 1.806 1.348 2.777.385.972.76 1.953 1.127 2.943.367-1.027.752-2.007 1.155-2.943.403-.935.862-1.88 1.375-2.832L478.885 44c.477-.843.972-1.357 1.485-1.54.513-.183 1.247-.275 2.2-.275h7.865V121h-9.35V63.085c0-.77.018-1.595.055-2.475.037-.88.092-1.778.165-2.695l-27.005 49.28c-.917 1.65-2.2 2.475-3.85 2.475h-1.54c-1.65 0-2.933-.825-3.85-2.475L417.45 57.75c.11.953.192 1.888.248 2.805.055.917.082 1.76.082 2.53V121h-9.35V42.185h7.865c.953 0 1.687.092 2.2.275.513.183 1.008.697 1.485 1.54l27.225 48.51zm77.22 44.935c-.33.733-.742 1.32-1.237 1.76-.496.44-1.256.66-2.283.66h-7.26l10.175-22.11-22.99-52.47h8.47c.843 0 1.503.21 1.98.633.477.42.825.89 1.045 1.402l14.905 35.09c.33.807.614 1.613.852 2.42.24.807.45 1.632.633 2.475.257-.843.513-1.668.77-2.475.257-.807.55-1.632.88-2.475L544.83 67.32c.22-.587.596-1.072 1.127-1.457.532-.386 1.11-.578 1.733-.578h7.81l-31.075 72.16z" fill="#9E9A98"/><path d="M851.73 121.88c-2.713 0-5.106-.394-7.178-1.182-2.07-.79-3.813-1.907-5.225-3.355-1.41-1.45-2.484-3.2-3.217-5.253-.733-2.053-1.1-4.345-1.1-6.875v-29.48h-4.84c-.88 0-1.632-.284-2.255-.853-.623-.568-.935-1.402-.935-2.502v-6.655l9.075-1.76 3.355-13.915c.44-1.76 1.687-2.64 3.74-2.64h8.91v16.665h13.86v11.66h-13.86v28.325c0 1.32.32 2.41.963 3.272.64.862 1.567 1.293 2.777 1.293.623 0 1.146-.064 1.567-.192.422-.13.79-.275 1.1-.44.312-.166.605-.312.88-.44.276-.13.596-.193.963-.193.513 0 .926.12 1.238.358.31.238.632.614.962 1.127l5.17 8.085c-2.2 1.65-4.675 2.887-7.425 3.712-2.75.826-5.592 1.238-8.525 1.238zM607.64 57.145c-.55.88-1.127 1.54-1.732 1.98-.606.44-1.385.66-2.338.66-.843 0-1.75-.266-2.723-.797-.97-.532-2.07-1.128-3.3-1.788-1.228-.66-2.63-1.256-4.207-1.788-1.577-.53-3.373-.797-5.39-.797-3.483 0-6.077.742-7.783 2.227-1.705 1.486-2.557 3.493-2.557 6.023 0 1.613.513 2.952 1.54 4.015 1.027 1.063 2.374 1.98 4.043 2.75 1.668.77 3.574 1.476 5.72 2.118 2.145.64 4.335 1.356 6.572 2.144 2.237.79 4.427 1.715 6.572 2.778 2.146 1.063 4.052 2.42 5.72 4.07 1.67 1.65 3.016 3.657 4.043 6.023 1.027 2.365 1.54 5.215 1.54 8.552 0 3.703-.642 7.168-1.925 10.395-1.283 3.227-3.144 6.04-5.582 8.443-2.44 2.4-5.445 4.29-9.02 5.664-3.576 1.376-7.636 2.063-12.183 2.063-2.493 0-5.032-.257-7.617-.77-2.586-.513-5.088-1.237-7.508-2.172-2.42-.936-4.693-2.045-6.82-3.328-2.127-1.283-3.978-2.713-5.555-4.29l5.5-8.69c.403-.66.972-1.192 1.705-1.595.733-.403 1.522-.605 2.365-.605 1.1 0 2.21.348 3.327 1.045 1.12.697 2.384 1.467 3.795 2.31 1.412.843 3.035 1.613 4.868 2.31 1.833.697 3.997 1.045 6.49 1.045 3.373 0 5.995-.742 7.865-2.228 1.87-1.485 2.805-3.84 2.805-7.067 0-1.87-.513-3.392-1.54-4.565-1.027-1.173-2.374-2.145-4.043-2.915-1.668-.77-3.565-1.448-5.692-2.035-2.127-.587-4.308-1.237-6.545-1.953-2.237-.715-4.418-1.594-6.545-2.64-2.127-1.045-4.024-2.42-5.692-4.124-1.67-1.706-3.016-3.832-4.043-6.38-1.027-2.55-1.54-5.693-1.54-9.433 0-3.007.605-5.94 1.815-8.8 1.21-2.86 2.988-5.408 5.335-7.645 2.347-2.237 5.225-4.024 8.635-5.362 3.41-1.34 7.315-2.008 11.715-2.008 2.457 0 4.85.192 7.178.578 2.328.385 4.537.953 6.627 1.704 2.09.752 4.042 1.65 5.858 2.695 1.815 1.046 3.437 2.228 4.867 3.548l-4.62 8.635zM642.62 121.88c-2.713 0-5.106-.394-7.178-1.182-2.07-.79-3.813-1.907-5.225-3.355-1.41-1.45-2.484-3.2-3.217-5.253-.733-2.053-1.1-4.345-1.1-6.875v-29.48h-4.84c-.88 0-1.632-.284-2.255-.853-.623-.568-.935-1.402-.935-2.502v-6.655l9.075-1.76L630.3 50.05c.44-1.76 1.687-2.64 3.74-2.64h8.91v16.665h13.86v11.66h-13.86v28.325c0 1.32.32 2.41.962 3.272.642.862 1.568 1.293 2.778 1.293.623 0 1.146-.064 1.567-.192.422-.13.79-.275 1.1-.44.312-.166.605-.312.88-.44.276-.13.596-.193.963-.193.513 0 .926.12 1.237.358.312.238.633.614.963 1.127l5.17 8.085c-2.2 1.65-4.675 2.887-7.425 3.712-2.75.826-5.592 1.238-8.525 1.238zM666.6 121V63.965h10.12c.843 0 1.55.073 2.117.22.57.147 1.045.376 1.43.688.386.31.68.724.88 1.237.202.513.376 1.137.523 1.87l.935 5.335c2.09-3.227 4.437-5.775 7.04-7.645 2.603-1.87 5.445-2.805 8.525-2.805 2.603 0 4.693.623 6.27 1.87l-2.2 12.54c-.147.77-.44 1.31-.88 1.622-.44.312-1.027.468-1.76.468-.623 0-1.357-.082-2.2-.247-.843-.166-1.907-.248-3.19-.248-4.473 0-7.993 2.383-10.56 7.15V121H666.6zM736.45 63.085c3.777 0 7.232.587 10.367 1.76 3.136 1.173 5.83 2.878 8.086 5.115 2.255 2.237 4.014 4.977 5.28 8.223 1.265 3.245 1.897 6.92 1.897 11.027 0 1.283-.055 2.328-.165 3.135-.11.807-.312 1.448-.605 1.925-.293.477-.687.807-1.182.99-.496.183-1.128.275-1.898.275h-32.89c.55 4.767 1.998 8.222 4.345 10.368 2.347 2.145 5.372 3.217 9.075 3.217 1.98 0 3.685-.238 5.115-.715 1.43-.477 2.704-1.008 3.822-1.595 1.12-.587 2.145-1.118 3.08-1.595.936-.477 1.916-.715 2.943-.715 1.357 0 2.383.495 3.08 1.485l4.95 6.105c-1.76 2.017-3.657 3.657-5.692 4.922-2.036 1.266-4.125 2.255-6.27 2.97-2.146.716-4.29 1.21-6.436 1.486-2.145.275-4.19.412-6.132.412-3.997 0-7.746-.65-11.248-1.953-3.5-1.3-6.563-3.235-9.184-5.802-2.622-2.567-4.694-5.757-6.216-9.57-1.52-3.813-2.282-8.25-2.282-13.31 0-3.813.65-7.425 1.952-10.835 1.302-3.41 3.172-6.398 5.61-8.965 2.44-2.567 5.39-4.602 8.856-6.105 3.465-1.503 7.38-2.255 11.742-2.255zm.33 11.77c-3.263 0-5.812.926-7.645 2.777-1.833 1.852-3.043 4.52-3.63 8.003h21.285c0-1.357-.174-2.677-.522-3.96-.35-1.283-.917-2.43-1.706-3.438-.788-1.008-1.824-1.824-3.107-2.447-1.283-.623-2.842-.935-4.675-.935zM796.29 63.085c3.777 0 7.232.587 10.368 1.76 3.135 1.173 5.83 2.878 8.084 5.115 2.256 2.237 4.015 4.977 5.28 8.223 1.266 3.245 1.898 6.92 1.898 11.027 0 1.283-.055 2.328-.165 3.135-.11.807-.312 1.448-.605 1.925-.293.477-.687.807-1.183.99-.495.183-1.127.275-1.897.275h-32.89c.55 4.767 1.998 8.222 4.345 10.368 2.347 2.145 5.372 3.217 9.075 3.217 1.98 0 3.685-.238 5.115-.715 1.43-.477 2.704-1.008 3.822-1.595 1.12-.587 2.145-1.118 3.08-1.595.936-.477 1.916-.715 2.943-.715 1.357 0 2.383.495 3.08 1.485l4.95 6.105c-1.76 2.017-3.657 3.657-5.692 4.922-2.036 1.266-4.125 2.255-6.27 2.97-2.146.716-4.29 1.21-6.436 1.486-2.145.275-4.19.412-6.132.412-3.997 0-7.746-.65-11.247-1.953-3.502-1.3-6.564-3.235-9.185-5.802-2.622-2.567-4.694-5.757-6.216-9.57-1.52-3.813-2.282-8.25-2.282-13.31 0-3.813.65-7.425 1.952-10.835 1.302-3.41 3.172-6.398 5.61-8.965 2.44-2.567 5.39-4.602 8.856-6.105 3.465-1.503 7.38-2.255 11.742-2.255zm.33 11.77c-3.263 0-5.812.926-7.645 2.777-1.833 1.852-3.043 4.52-3.63 8.003h21.285c0-1.357-.174-2.677-.523-3.96-.348-1.283-.916-2.43-1.704-3.438-.79-1.008-1.825-1.824-3.108-2.447-1.283-.623-2.842-.935-4.675-.935z" fill="#3B3F44"/><path d="M266.847 176.53V187h-7.267v-31.326h11.05c2.208 0 4.104.262 5.688.785 1.584.522 2.888 1.243 3.913 2.16 1.026.917 1.782 2 2.27 3.246.486 1.248.73 2.595.73 4.042 0 1.563-.25 2.996-.752 4.3-.502 1.305-1.27 2.423-2.3 3.355-1.033.93-2.34 1.66-3.925 2.182-1.584.523-3.458.785-5.622.785h-3.783zm0-5.483h3.784c1.893 0 3.255-.45 4.086-1.355.83-.903 1.247-2.164 1.247-3.784 0-.716-.107-1.368-.323-1.956-.215-.588-.54-1.093-.978-1.516-.437-.423-.99-.75-1.655-.978-.667-.23-1.46-.344-2.376-.344h-3.783v9.933zm54.064 4.364V187h-7.266v-31.326h10.19c2.266 0 4.197.233 5.795.7 1.597.465 2.902 1.114 3.912 1.945 1.01.83 1.745 1.812 2.204 2.945.46 1.132.688 2.364.688 3.698 0 1.017-.136 1.977-.41 2.88-.27.904-.676 1.738-1.213 2.505-.537.767-1.196 1.45-1.977 2.053-.78.604-1.68 1.098-2.7 1.485.49.244.944.545 1.367.903.423.358.792.795 1.107 1.31L339.272 187h-6.58c-1.217 0-2.092-.46-2.622-1.376l-5.203-9.094c-.23-.402-.498-.688-.806-.86-.307-.173-.74-.258-1.3-.258h-1.85zm0-5.008h2.925c.99 0 1.83-.125 2.526-.376.696-.25 1.266-.6 1.71-1.043.445-.444.767-.964.968-1.56.2-.594.3-1.235.3-1.923 0-1.376-.447-2.45-1.343-3.225-.896-.774-2.282-1.16-4.16-1.16h-2.924v9.287zm77.8.925c0 2.264-.39 4.37-1.17 6.32-.782 1.95-1.882 3.645-3.3 5.085-1.42 1.44-3.13 2.57-5.13 3.387-1.998.816-4.216 1.224-6.653 1.224-2.437 0-4.658-.408-6.665-1.225-2.007-.82-3.723-1.947-5.15-3.388-1.425-1.44-2.53-3.135-3.31-5.084-.78-1.95-1.172-4.057-1.172-6.32 0-2.266.39-4.373 1.172-6.322.78-1.95 1.885-3.64 3.31-5.075 1.427-1.432 3.143-2.557 5.15-3.374 2.007-.817 4.228-1.226 6.665-1.226 2.437 0 4.655.413 6.654 1.237 2 .824 3.71 1.953 5.13 3.386 1.418 1.433 2.518 3.125 3.3 5.074.78 1.95 1.17 4.05 1.17 6.3zm-7.438 0c0-1.55-.2-2.942-.602-4.182-.4-1.24-.978-2.29-1.73-3.15-.753-.86-1.674-1.52-2.764-1.978-1.09-.46-2.33-.688-3.72-.688-1.404 0-2.654.228-3.75.687-1.097.46-2.022 1.118-2.774 1.978-.753.86-1.33 1.91-1.73 3.15-.402 1.24-.603 2.633-.603 4.181 0 1.563.2 2.964.6 4.204.402 1.24.98 2.29 1.732 3.15.752.86 1.677 1.515 2.773 1.967 1.097.45 2.347.677 3.752.677 1.39 0 2.63-.226 3.72-.677 1.09-.452 2.01-1.107 2.762-1.968.752-.86 1.33-1.91 1.73-3.15.4-1.24.602-2.64.602-4.203zm57.72-15.653v5.59h-12.858v7.934h10.707v5.612h-10.706V187h-7.31v-31.326h20.167zm50.58 0v5.59h-12.857v7.31h9.847v5.375h-9.847v7.46h12.857V187h-20.167v-31.326h20.167zm48.216 6.364c-.215.345-.44.602-.677.774-.236.173-.54.258-.913.258-.33 0-.684-.103-1.064-.31-.38-.21-.81-.442-1.29-.7-.48-.258-1.03-.49-1.645-.7-.616-.207-1.32-.31-2.107-.31-1.36 0-2.375.29-3.04.87-.668.58-1 1.365-1 2.355 0 .63.2 1.153.6 1.57.402.415.93.773 1.58 1.074.653.3 1.4.576 2.237.827.84.25 1.695.53 2.57.838.874.308 1.73.67 2.57 1.086.837.417 1.583.947 2.235 1.592.652.645 1.18 1.43 1.58 2.354.4.925.602 2.04.602 3.343 0 1.447-.25 2.802-.753 4.063-.5 1.26-1.228 2.36-2.18 3.3-.954.94-2.13 1.677-3.527 2.215-1.397.537-2.985.806-4.762.806-.974 0-1.966-.1-2.977-.3-1.01-.202-1.988-.485-2.935-.85-.946-.366-1.834-.8-2.666-1.3-.83-.503-1.555-1.062-2.17-1.678l2.15-3.397c.157-.26.38-.467.665-.624.287-.158.595-.237.925-.237.43 0 .864.135 1.3.407.438.273.932.574 1.484.904.552.33 1.186.63 1.903.903.716.273 1.56.41 2.536.41 1.32 0 2.343-.29 3.074-.872.73-.58 1.097-1.5 1.097-2.762 0-.73-.2-1.325-.602-1.784-.4-.46-.928-.838-1.58-1.14-.652-.3-1.394-.566-2.226-.795-.832-.23-1.685-.485-2.56-.764-.873-.28-1.726-.624-2.558-1.032-.83-.41-1.573-.946-2.225-1.613-.652-.665-1.18-1.497-1.58-2.493-.4-.996-.602-2.225-.602-3.687 0-1.175.236-2.322.71-3.44.472-1.118 1.168-2.114 2.085-2.988.917-.875 2.042-1.574 3.375-2.097 1.334-.523 2.86-.785 4.58-.785.96 0 1.896.076 2.806.226.91.15 1.774.373 2.59.667.818.294 1.582.645 2.29 1.053.71.41 1.345.87 1.904 1.387l-1.806 3.375zm49.936 0c-.215.345-.44.602-.677.774-.237.173-.54.258-.914.258-.33 0-.684-.103-1.064-.31-.38-.21-.81-.442-1.29-.7-.48-.258-1.03-.49-1.646-.7-.616-.207-1.32-.31-2.107-.31-1.362 0-2.376.29-3.042.87-.667.58-1 1.365-1 2.355 0 .63.2 1.153.602 1.57.4.415.928.773 1.58 1.074.652.3 1.398.576 2.236.827.84.25 1.695.53 2.57.838.874.308 1.73.67 2.57 1.086.837.417 1.583.947 2.235 1.592.652.645 1.18 1.43 1.58 2.354.4.925.602 2.04.602 3.343 0 1.447-.25 2.802-.753 4.063-.5 1.26-1.23 2.36-2.182 3.3-.953.94-2.128 1.677-3.526 2.215-1.398.537-2.986.806-4.763.806-.975 0-1.967-.1-2.978-.3-1.01-.202-1.99-.485-2.936-.85-.946-.366-1.834-.8-2.666-1.3-.83-.503-1.555-1.062-2.17-1.678l2.15-3.397c.157-.26.38-.467.665-.624.287-.158.595-.237.925-.237.43 0 .864.135 1.3.407.438.273.932.574 1.484.904.552.33 1.186.63 1.903.903.717.273 1.562.41 2.537.41 1.32 0 2.343-.29 3.074-.872.73-.58 1.097-1.5 1.097-2.762 0-.73-.2-1.325-.602-1.784-.4-.46-.927-.838-1.58-1.14-.65-.3-1.393-.566-2.225-.795-.83-.23-1.684-.485-2.558-.764-.874-.28-1.727-.624-2.56-1.032-.83-.41-1.572-.946-2.224-1.613-.652-.665-1.18-1.497-1.58-2.493-.4-.996-.602-2.225-.602-3.687 0-1.175.237-2.322.71-3.44.473-1.118 1.17-2.114 2.086-2.988.917-.875 2.042-1.574 3.375-2.097 1.335-.523 2.86-.785 4.58-.785.96 0 1.897.076 2.807.226.91.15 1.773.373 2.59.667.817.294 1.58.645 2.29 1.053.71.41 1.344.87 1.903 1.387l-1.806 3.375zM638.157 187h-7.31v-31.326h7.31V187zm63.352-15.673c0 2.264-.392 4.37-1.173 6.32-.78 1.95-1.88 3.645-3.3 5.085s-3.128 2.57-5.128 3.387c-2 .816-4.218 1.224-6.655 1.224-2.437 0-4.658-.408-6.665-1.225-2.007-.82-3.723-1.947-5.15-3.388-1.425-1.44-2.53-3.135-3.31-5.084-.78-1.95-1.172-4.057-1.172-6.32 0-2.266.39-4.373 1.172-6.322.78-1.95 1.885-3.64 3.31-5.075 1.427-1.432 3.143-2.557 5.15-3.374 2.007-.817 4.228-1.226 6.665-1.226 2.437 0 4.655.413 6.654 1.237 2 .824 3.708 1.953 5.127 3.386 1.42 1.433 2.52 3.125 3.3 5.074.78 1.95 1.172 4.05 1.172 6.3zm-7.44 0c0-1.55-.2-2.942-.602-4.182-.4-1.24-.978-2.29-1.73-3.15-.753-.86-1.674-1.52-2.764-1.978-1.09-.46-2.33-.688-3.72-.688-1.404 0-2.654.228-3.75.687-1.097.46-2.022 1.118-2.774 1.978-.753.86-1.33 1.91-1.73 3.15-.402 1.24-.603 2.633-.603 4.181 0 1.563.2 2.964.602 4.204.4 1.24.977 2.29 1.73 3.15.752.86 1.677 1.515 2.773 1.967 1.097.45 2.347.677 3.752.677 1.39 0 2.63-.226 3.72-.677 1.09-.452 2.01-1.107 2.762-1.968.753-.86 1.33-1.91 1.73-3.15.402-1.24.603-2.64.603-4.203zm41.38-15.653c.314 0 .58.015.794.043.215.03.41.083.58.162.173.078.338.19.495.332.157.143.336.337.537.58l14.878 18.813c-.057-.602-.1-1.186-.13-1.752-.028-.566-.042-1.1-.042-1.602v-16.576h6.407V187h-3.784c-.56 0-1.032-.086-1.42-.258-.386-.172-.76-.487-1.117-.946l-14.772-18.662c.043.545.08 1.08.108 1.602.03.523.043 1.014.043 1.472V187h-6.408v-31.326h3.827zM819.913 187h-5.633c-.63 0-1.15-.147-1.558-.44-.408-.295-.69-.67-.85-1.13l-1.848-5.46h-11.91l-1.85 5.46c-.143.402-.423.764-.84 1.086-.414.323-.923.484-1.525.484h-5.677l12.126-31.326h7.438L819.914 187zm-20.124-11.976h8.557l-2.88-8.578-.657-1.924c-.25-.738-.498-1.537-.742-2.397-.23.874-.465 1.684-.71 2.43-.243.744-.472 1.39-.687 1.934l-2.88 8.534zm56.558 6.17h11.61V187H849.08v-31.326h7.268v25.52z" fill="#7C7977"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.png
index 0439b2a25..0f202c7e7 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/greenwich-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.png
index 8ec4dd68e..376623469 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/hart-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/inspection.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/inspection.svg
new file mode 100644
index 000000000..6c9b6c0fa
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/inspection.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>inspection</title><g fill="#E65376" fill-rule="evenodd"><path d="M39.66 54.65l-2.232 2.2-4.06-4.01c-.323-.32-.742-.48-1.16-.48-.42 0-.84.16-1.16.48l-4.06 4.01-4.06-4.01c-.644-.63-1.677-.63-2.32 0l-3.904 3.86-2.4-2.38V15.3H39.66v1.6c1.168.42 2.276.96 3.3 1.63v-4.88c0-.91-.737-1.65-1.65-1.65H12.652c-.91 0-1.652.74-1.652 1.65v41.36c0 .45.178.87.492 1.18l4.05 4c.645.64 1.677.64 2.323 0l3.903-3.86 4.058 4.01c.645.64 1.678.64 2.322 0l4.06-4.01 4.06 4.01c.322.32.74.48 1.16.48.42 0 .838-.16 1.16-.48l3.884-3.83c.313-.31.49-.73.49-1.17v-9.95c-1.026.66-2.134 1.22-3.302 1.63v7.63"/><path d="M39.66 40.65c-1.558.97-3.39 1.53-5.36 1.54-3.436-.01-6.464-1.71-8.317-4.31h9.857c.91 0 1.65-.74 1.65-1.65 0-.91-.74-1.65-1.65-1.65H24.558c-.042 0-.082.01-.125.01-.225-.84-.358-1.72-.36-2.63.002-.93.138-1.82.37-2.68.04.01.075.02.115.02H35.84c.91 0 1.65-.74 1.65-1.65 0-.92-.74-1.66-1.65-1.66h-9.826c1.855-2.57 4.87-4.25 8.287-4.26 1.97.01 3.802.57 5.36 1.53 1.337.83 2.467 1.95 3.3 3.28.988 1.57 1.568 3.43 1.572 5.42-.004 1.99-.584 3.85-1.57 5.42-.835 1.33-1.965 2.45-3.302 3.27zm7.993-8.69c0-4.07-1.825-7.7-4.692-10.15-.985-.84-2.094-1.54-3.3-2.07-1.64-.72-3.452-1.13-5.36-1.13-3.378 0-6.455 1.27-8.806 3.34h-6.832c-.365 0-.66.29-.66.66 0 .36.295.66.66.66h5.522c-1.254 1.46-2.193 3.19-2.727 5.09h-2.795c-.365 0-.66.3-.66.66 0 .31.204.55.48.63.057.02.117.04.18.04h2.5c-.128.74-.208 1.49-.208 2.27 0 1.01.12 1.99.333 2.93h-2.625c-.025 0-.048.01-.074.01-.328.04-.586.31-.586.65 0 .36.295.66.66.66h2.994c.665 1.98 1.774 3.76 3.22 5.2h-6.214c-.365 0-.66.3-.66.66 0 .36.295.66.66.66h7.778c2.207 1.61 4.92 2.58 7.86 2.58 1.908 0 3.72-.41 5.36-1.13 1.206-.53 2.315-1.23 3.3-2.07 2.868-2.45 4.693-6.09 4.693-10.15zM59.687 51.88l-11.68-11.69-.04-.04c-1.236 2.06-2.916 3.82-4.92 5.14l.03.03L54.66 56.91c1.147 1.14 3.025 1.14 4.17-.01l.857-.85c1.148-1.15 1.148-3.03 0-4.17"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/integrated.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/integrated.svg
new file mode 100644
index 000000000..9fdf394a5
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/integrated.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>integrated</title><path d="M54.917 19.475c-1.983 0-3.59-1.598-3.59-3.587 0-1.977 1.607-3.587 3.59-3.587 1.983 0 3.59 1.61 3.59 3.588 0 1.99-1.607 3.587-3.59 3.587zm-18.91 0c-1.983 0-3.59-1.598-3.59-3.587 0-1.977 1.607-3.587 3.59-3.587 1.982 0 3.588 1.61 3.588 3.588 0 1.99-1.606 3.587-3.588 3.587zm-18.91 0c-1.98 0-3.59-1.598-3.59-3.587 0-1.977 1.61-3.587 3.59-3.587 1.984 0 3.588 1.61 3.588 3.588 0 1.99-1.604 3.587-3.59 3.587zm18.91 25.203c4.21 0 7.63 3.433 7.63 7.636 0 4.214-3.42 7.635-7.63 7.635s-7.63-3.422-7.63-7.636c0-4.203 3.42-7.636 7.63-7.636zm-16.86-16.704c0 .9.274 1.468.82 1.682.55.224 1.187.33 1.916.33 1.26 0 2.414-.13 3.457-.39 1.044-.272 2.098-.402 3.158-.402 2.355 0 4.094.343 5.22 1.018 1.13.675 1.857 1.49 2.19 2.462h.2c.33-.97 1.062-1.787 2.186-2.462 1.128-.675 2.87-1.018 5.222-1.018 1.093 0 2.12.13 3.085.402.96.26 1.954.39 2.984.39.86 0 1.624-.106 2.286-.33.664-.214.997-.782.997-1.682 0-.532.115-1.04.346-1.527.232-.473.78-.722 1.64-.722.5 0 .906.12 1.22.355.312.237.555.52.722.876.164.356.28.734.347 1.15.066.4.1.792.1 1.135 0 1.292-.325 2.357-.97 3.21-.647.852-1.486 1.503-2.513 1.953-1.028.46-2.172.722-3.43.793-1.26.07-2.504-.024-3.73-.284-2.52-.533-4.54-.52-6.07.023-1.523.533-2.283 1.54-2.283 3.007 0 .675-.22 1.208-.65 1.598-.427.403-.96.592-1.59.592-.63 0-1.16-.19-1.59-.592-.432-.39-.647-.923-.647-1.598 0-1.468-.763-2.474-2.287-3.007-1.525-.544-3.55-.556-6.067-.023-1.23.26-2.472.355-3.732.284-1.258-.07-2.404-.332-3.43-.793-1.027-.45-1.866-1.1-2.512-1.954-.647-.853-.968-1.918-.968-3.21 0-.342.032-.733.096-1.135.068-.415.184-.793.35-1.15.166-.354.397-.638.698-.875.298-.236.694-.355 1.19-.355.897 0 1.46.25 1.692.722.233.486.347.995.347 1.527z" fill="#E95376" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/intelligent-routing.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/intelligent-routing.svg
new file mode 100644
index 000000000..ce9a3dc5b
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/intelligent-routing.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>intelligent-routing</title><g fill="#E65376" fill-rule="evenodd"><path d="M31.97 61.13h7.047v-6.3H31.97M35.494 24.19c-2.43 0-4.397-1.91-4.397-4.26 0-2.35 1.968-4.25 4.397-4.25 2.43 0 4.397 1.9 4.397 4.25s-1.967 4.26-4.396 4.26zm0 11.89c-2.43 0-4.397-1.9-4.397-4.25s1.968-4.26 4.397-4.26c2.43 0 4.397 1.91 4.397 4.26 0 2.35-1.967 4.25-4.396 4.25zm0 11.9c-2.43 0-4.397-1.91-4.397-4.26 0-2.35 1.968-4.26 4.397-4.26 2.43 0 4.397 1.91 4.397 4.26 0 2.35-1.967 4.26-4.396 4.26zM54.23 25.19c0-.38-.31-.69-.693-.69-.045 0-.084.01-.126.02-.053-.01-.107-.02-.164-.02h-7.15l.237-5.63c4.694-1.22 7.898-3.94 7.898-7.17 0-.39-.31-.7-.693-.7-.045 0-.084.02-.126.03-.053-.02-.107-.03-.164-.03H17.694c-.086 0-.167.02-.244.05-.025.01-.046.02-.07.04-.05.02-.096.05-.138.09l-.06.06c-.038.04-.07.09-.097.14-.01.02-.026.04-.034.06 0 .01-.006.01-.008.02-.027.07-.038.15-.04.23 0 0-.002 0-.002.01 0 3.18 3.094 5.85 7.652 7.1l.24 5.7h-7.198c-.086 0-.167.02-.244.04-.025.01-.046.03-.07.04-.05.02-.096.05-.138.09l-.06.06c-.038.04-.07.09-.097.14-.01.02-.026.04-.034.06 0 .01-.006.02-.008.02-.027.08-.038.15-.04.23l-.002.01c0 3.31 3.35 6.09 8.228 7.26l.192 4.54h-7.032c-.085 0-.167.02-.244.05l-.07.03c-.05.03-.096.06-.14.1-.02.02-.04.03-.057.05-.04.05-.07.1-.098.15-.012.02-.026.04-.035.06-.003.01-.007.01-.01.02-.026.07-.038.15-.04.22v.01c0 3.28 3.275 6.03 8.06 7.22l.14 3.36c0 2.41 1.967 4.38 4.382 4.38H40.71c2.416 0 4.382-1.97 4.38-4.35l.14-3.33c4.92-1.16 8.307-3.94 8.307-7.28 0-.38-.31-.69-.695-.69-.044 0-.083.02-.126.03-.053-.02-.107-.03-.164-.03h-6.985l.19-4.49c5.007-1.14 8.474-3.94 8.474-7.31z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/map-centric.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/map-centric.svg
new file mode 100644
index 000000000..c4f39ac40
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/map-centric.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>map-centric</title><g fill="#E65376" fill-rule="evenodd"><path d="M59.06 13.376l-10.12-2.333c-.363-.083-.745-.044-1.086.11L35.997 16.58l-10.91-4.55c-.406-.167-.86-.174-1.268-.015L12.08 16.59c-.652.253-1.08.88-1.08 1.58V50.38c0 .56.275 1.085.738 1.4.46.316 1.05.383 1.57.18l11.106-4.327 10.96 4.573c.21.085.432.13.654.13.24 0 .482-.052.706-.154l.88-.402-1.505-3.04-.113.05-10.91-4.55c-.208-.086-.43-.13-.653-.13-.208 0-.417.04-.615.115L14.39 47.9V19.33l10.024-3.908 10.96 4.572c.438.182.93.174 1.36-.023l12.007-5.493 8.244 1.9V45.11l-1.598-.367-.806 1.63c-.127.286-.266.567-.418.842l-.026.054-.295.596 4.46 1.027c.502.116 1.03-.004 1.435-.326.404-.32.64-.81.64-1.326V15.03c0-.79-.545-1.475-1.315-1.654"/><path d="M23.756 19.79v20.44c0 .376.304.68.678.68.374 0 .68-.304.68-.68V19.79c0-.375-.306-.68-.68-.68-.374 0-.678.305-.678.68M35.35 23.747v10.287c0 .375.304.678.678.678.374 0 .68-.303.68-.678V23.747c0-.375-.306-.68-.68-.68-.374 0-.68.305-.68.68M49.464 30.76V18.34c0-.375-.304-.68-.68-.68-.374 0-.677.305-.677.68V30.76c0 .375.303.68.678.68.375 0 .68-.305.68-.68M44.76 44.436c-1.862 0-3.372-1.51-3.372-3.37s1.51-3.37 3.37-3.37c1.863 0 3.37 1.51 3.37 3.37s-1.507 3.37-3.37 3.37zm0-10.402c-4.43 0-8.023 3.592-8.023 8.02 0 1.462.4 2.83 1.08 4.01h-.006l.767 1.548 6.18 12.49 6.366-12.863.582-1.175h-.008c.356-.615.63-1.283.816-1.984.17-.648.268-1.326.268-2.026 0-4.428-3.593-8.02-8.02-8.02z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg
index 37ff7a93c..5623cc577 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/minus.svg
@@ -1,13 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>Group 2 Copy</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="Group-2-Copy" fill="#333333">
- <path d="M32,18 C32,10.2680135 25.7319865,4 18,4 C10.2680135,4 4,10.2680135 4,18 C4,25.7319865 10.2680135,32 18,32 C25.7319865,32 32,25.7319865 32,18 Z M0,18 C0,8.0588745 8.0588745,0 18,0 C27.9411255,0 36,8.0588745 36,18 C36,27.9411255 27.9411255,36 18,36 C8.0588745,36 0,27.9411255 0,18 Z" id="Oval"></path>
- <path d="M10.5,16 C9.3954305,16 8.5,16.8954305 8.5,18 C8.5,19.1045695 9.3954305,20 10.5,20 L25.5,20 C26.6045695,20 27.5,19.1045695 27.5,18 C27.5,16.8954305 26.6045695,16 25.5,16 L10.5,16 Z" id="Line"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
+<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><title>Group 2 Copy</title><g fill="#333" fill-rule="evenodd"><path d="M32 18c0-7.732-6.268-14-14-14S4 10.268 4 18s6.268 14 14 14 14-6.268 14-14zM0 18C0 8.06 8.06 0 18 0s18 8.06 18 18-8.06 18-18 18S0 27.94 0 18z"/><path d="M10.5 16c-1.105 0-2 .895-2 2s.895 2 2 2h15c1.105 0 2-.895 2-2s-.895-2-2-2h-15z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/mobile-app.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/mobile-app.svg
new file mode 100644
index 000000000..31b4ade23
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/mobile-app.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>mobile-app</title><path d="M23.665 52.772H48.54V15.958H23.665v36.814zm12.438 8.418c-1.64 0-2.964-1.325-2.964-2.96 0-1.637 1.324-2.964 2.963-2.964 1.64 0 2.963 1.327 2.963 2.963 0 1.635-1.324 2.96-2.963 2.96zM25.243 8c-2.715 0-4.936 2.222-4.936 4.936v46.108c0 2.715 2.22 4.935 4.937 4.935H46.96c2.717 0 4.938-2.22 4.938-4.936V12.936c0-2.714-2.22-4.936-4.937-4.936H25.245zm5.585 36.968l6.928-7.077c.033-.03.056-.073.087-.106.563.14 1.142.236 1.747.236 2.03.006 3.87-.805 5.203-2.12 1.333-1.316 2.16-3.136 2.167-5.148.004-.642-.105-1.256-.262-1.855l-3.87 3.818-4.28-.918-.9-4.252 3.88-3.82c-.606-.168-1.234-.286-1.894-.287-4.057-.01-7.358 3.237-7.37 7.267-.003.855.17 1.663.44 2.426L25.68 40.3s5.148 4.675 5.148 4.668z" fill="#E65376" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/open-standards.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/open-standards.svg
new file mode 100644
index 000000000..4960b48d4
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/open-standards.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>open-standards</title><path d="M29.087 50.594c.156-.008.34-.035.495-.103l5.21-2.31c.57.305 1.084.7 1.518 1.16l-6.193 2.764H27.5c-1.33 0-2.322-.162-2.953-.482-.506-.256-.746-.586-.766-1.063l5.307.034zm-7.927-4.572c0-.163.05-.35.142-.55.99.415 2.285.616 3.938.616h1.783c.17 0 .337-.037.492-.105l5.112-2.295c.796.244 1.515.714 2.146 1.4L28.8 47.73h-3.746c-1.39 0-2.425-.165-3.073-.49-.56-.298-.82-.685-.82-1.218zm9.616 10.584c-1.065 0-1.856-.172-2.352-.512-.36-.248-.57-.6-.63-1.068h2.654c.17 0 .336-.037.49-.106l4.776-2.132c.564.46 1.015.933 1.373 1.445l.006.008-5.244 2.366h-1.074zm7.67.107l1.698-.76c.303-.134.537-.39.645-.704.108-.316.08-.662-.076-.956-.588-1.11-1.306-2.05-2.142-2.81l.82-.386c.31-.144.54-.418.64-.746.097-.328.05-.682-.132-.973-.656-1.06-1.36-1.91-2.105-2.547.274-.14.486-.38.59-.67.113-.318.087-.666-.07-.964-.677-1.28-1.543-2.283-2.583-2.995.172-.142.303-.33.376-.546.104-.312.077-.65-.075-.94-1.527-2.915-3.872-4.39-6.97-4.39-.626 0-1.317.092-2.046.272-.67.153-1.41.402-2.322.78l-1.34.02c-.476.005-.904.292-1.09.73-.186.437-.096.944.23 1.29l.468.502c.24.256.582.4.93.38l1.294-.06c.138-.005.273-.033.4-.087.93-.38 1.645-.64 2.237-.817.643-.173 1.157-.263 1.525-.263 1.292 0 2.34.493 3.18 1.504l-5.874 2.65-2.113-.024c-1.322 0-2.405-.428-3.315-1.308-.907-.87-1.348-1.91-1.348-3.17 0-.84.268-2.065 2.574-2.976 1.872-.734 4.73-1.104 8.495-1.104h.632c.682-.024 1.208-.536 1.208-1.202 0-.076-.007-.153-.022-.227l-.005-.13c0-2.95-.982-6.08-2.922-9.298-.002-.006-.005-.013-.01-.02l-.46-.79c-.77-1.274-1.16-2.474-1.16-3.564 0-1.013.268-1.87.797-2.548.444-.567 1.088-1.034 1.922-1.397l1.28 5.947c.045.213.15.41.3.57l7.154 7.614c1.314 1.645 2.197 2.78 2.77 3.563 2.42 3.403 3.396 3.852 3.71 3.996.31.142 1.23.573 5.582.595.72 2.112 1.084 4.29 1.084 6.477 0 1.855-.328 3.803-.978 5.795h-4.295c-.373 0-.723.172-.95.466-1.906 2.458-4.2 4.423-7.21 6.178l-.93.04zm15.46-21.27c-.192-.435-.623-.714-1.097-.714h-3.83c-.858 0-1.493-.136-1.85-.4-.272-.197-.872-.804-2.194-2.595l-1.01-1.334c-1.283-1.706-1.98-2.606-2.445-3.146l-6.617-7.043-1.643-7.274c-.07-.314-.265-.588-.54-.758-.274-.17-.604-.22-.918-.144l-.383.094c-4.068.955-6.13 3.408-6.13 7.29 0 1.4.634 3.297 1.964 5.838l.565.98c.915 1.794 1.537 3.66 1.852 5.554h-.283c-3.626 0-6.598.63-8.845 1.88C18.178 34.98 17 36.754 17 38.938c0 1.754.6 3.313 1.832 4.754-.446.8-.67 1.582-.67 2.33 0 1.055.293 1.94.867 2.623.48.594 1.165 1.05 2.032 1.358-.02.253-.03.464-.03.635 0 2.39 1.333 3.837 3.866 4.206-.006.07-.008.133-.008.192 0 1.987 1.022 4.355 5.886 4.355h1.402c.19 0 .375-.042.544-.128l.977-.495c1.55.415 2.95.624 4.16.624.44 0 1.08-.034 1.962-.104.14-.013.277-.05.406-.108 2.863-1.328 5.56-3.41 8.012-6.187h4.732c.496 0 .94-.304 1.12-.765 1.09-2.797 1.64-5.618 1.64-8.387 0-2.853-.614-5.677-1.825-8.396z" fill="#E65376" fill-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.png
index 85655c4b1..0b479791a 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/oxfordshire-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg
index ce10bf756..c1dba62f8 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/plus.svg
@@ -1,14 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>Group 2 Copy</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="Group-2-Copy" fill="#333333">
- <path d="M32,18 C32,10.2680135 25.7319865,4 18,4 C10.2680135,4 4,10.2680135 4,18 C4,25.7319865 10.2680135,32 18,32 C25.7319865,32 32,25.7319865 32,18 Z M0,18 C0,8.0588745 8.0588745,0 18,0 C27.9411255,0 36,8.0588745 36,18 C36,27.9411255 27.9411255,36 18,36 C8.0588745,36 0,27.9411255 0,18 Z" id="Oval"></path>
- <path d="M16,25.5 C16,26.6045695 16.8954305,27.5 18,27.5 C19.1045695,27.5 20,26.6045695 20,25.5 L20,10.5 C20,9.3954305 19.1045695,8.5 18,8.5 C16.8954305,8.5 16,9.3954305 16,10.5 L16,25.5 Z" id="Line"></path>
- <path d="M10.5,16 C9.3954305,16 8.5,16.8954305 8.5,18 C8.5,19.1045695 9.3954305,20 10.5,20 L25.5,20 C26.6045695,20 27.5,19.1045695 27.5,18 C27.5,16.8954305 26.6045695,16 25.5,16 L10.5,16 Z" id="Line"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
+<svg width="36" height="36" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg"><title>Group 2 Copy</title><g fill="#333" fill-rule="evenodd"><path d="M32 18c0-7.732-6.268-14-14-14S4 10.268 4 18s6.268 14 14 14 14-6.268 14-14zM0 18C0 8.06 8.06 0 18 0s18 8.06 18 18-8.06 18-18 18S0 27.94 0 18z"/><path d="M16 25.5c0 1.105.895 2 2 2s2-.895 2-2v-15c0-1.105-.895-2-2-2s-2 .895-2 2v15z"/><path d="M10.5 16c-1.105 0-2 .895-2 2s.895 2 2 2h15c1.105 0 2-.895 2-2s-.895-2-2-2h-15z"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/process.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/process.svg
deleted file mode 100644
index f165dc445..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/process.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="72px" height="72px" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>process</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="process" fill="#E65376">
- <path d="M57.5017327,51.8687555 L32.4937327,51.8687555 C31.5467327,51.8687555 30.7777327,52.6357555 30.7777327,53.5857555 C30.7777327,54.5327555 31.5467327,55.2997555 32.4937327,55.2997555 L57.5017327,55.2997555 C58.4487327,55.2997555 59.2177327,54.5327555 59.2177327,53.5857555 C59.2177327,52.6357555 58.4487327,51.8687555 57.5017327,51.8687555" id="Fill-210"></path>
- <path d="M57.5017327,35.1207555 L32.4937327,35.1207555 C31.5467327,35.1207555 30.7777327,35.8877555 30.7777327,36.8377555 C30.7777327,37.7847555 31.5467327,38.5517555 32.4937327,38.5517555 L57.5017327,38.5517555 C58.4487327,38.5517555 59.2177327,37.7847555 59.2177327,36.8377555 C59.2177327,35.8877555 58.4487327,35.1207555 57.5017327,35.1207555" id="Fill-211"></path>
- <path d="M32.4937327,21.8037555 L57.5017327,21.8037555 C58.4487327,21.8037555 59.2177327,21.0367555 59.2177327,20.0887555 C59.2177327,19.1397555 58.4487327,18.3727555 57.5017327,18.3727555 L32.4937327,18.3727555 C31.5467327,18.3727555 30.7777327,19.1397555 30.7777327,20.0887555 C30.7777327,21.0367555 31.5467327,21.8037555 32.4937327,21.8037555" id="Fill-212"></path>
- <path d="M16.7077327,40.2687555 L23.5697327,40.2687555 L23.5697327,33.4057555 L16.7077327,33.4057555 L16.7077327,40.2687555 Z M25.2857327,29.9737555 L14.9907327,29.9737555 C14.0437327,29.9737555 13.2757327,30.7417555 13.2757327,31.6887555 L13.2757327,41.9837555 C13.2757327,42.9307555 14.0437327,43.7007555 14.9907327,43.7007555 L25.2857327,43.7007555 C26.2327327,43.7007555 27.0017327,42.9307555 27.0017327,41.9837555 L27.0017327,31.6887555 C27.0017327,30.7417555 26.2327327,29.9737555 25.2857327,29.9737555 L25.2857327,29.9737555 Z" id="Fill-213"></path>
- <path d="M16.7077327,57.0147555 L23.5697327,57.0147555 L23.5697327,50.1537555 L16.7077327,50.1537555 L16.7077327,57.0147555 Z M25.2857327,46.7217555 L14.9907327,46.7217555 C14.0437327,46.7217555 13.2757327,47.4897555 13.2757327,48.4377555 L13.2757327,58.7317555 C13.2757327,59.6787555 14.0437327,60.4467555 14.9907327,60.4467555 L25.2857327,60.4467555 C26.2327327,60.4467555 27.0017327,59.6787555 27.0017327,58.7317555 L27.0017327,48.4377555 C27.0017327,47.4897555 26.2327327,46.7217555 25.2857327,46.7217555 L25.2857327,46.7217555 Z" id="Fill-214"></path>
- <path d="M28.9457327,12.3097555 C28.2307327,11.7967555 27.1567327,11.9367555 26.6137327,12.6127555 L18.5927327,22.5587555 L15.9537327,19.6047555 C15.3787327,18.9627555 14.2857327,18.8727555 13.6097327,19.4157555 C13.2567327,19.6987555 13.0427327,20.0967555 13.0057327,20.5407555 C12.9687327,20.9787555 13.1117327,21.4037555 13.4087327,21.7377555 L17.3857327,26.1907555 C17.7057327,26.5477555 18.1697327,26.7527555 18.6577327,26.7527555 C18.6627327,26.7527555 18.6937327,26.7527555 18.6987327,26.7517555 C19.2047327,26.7397555 19.6727327,26.5127555 19.9827327,26.1267555 L29.2657327,14.6187555 C29.5437327,14.2707555 29.6657327,13.8407555 29.6077327,13.4047555 C29.5477327,12.9637555 29.3127327,12.5757555 28.9457327,12.3097555" id="Fill-215"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/reduce.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/reduce.svg
deleted file mode 100644
index 00f64340c..000000000
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/reduce.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg width="72px" height="72px" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
- <title>reduce</title>
- <desc>Created with Sketch.</desc>
- <defs></defs>
- <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
- <g id="reduce" fill="#E65376">
- <path d="M51.23725,39.0655 C51.17625,39.0185 50.60825,38.7225 50.41125,38.5975 C50.41125,38.5975 55.78325,33.4505 55.83225,33.5165 C55.83225,33.5165 56.78025,34.4605 57.06025,34.8505 L51.23725,39.0655 L51.23725,39.0655 Z M49.34425,50.0845 C48.91625,50.3725 48.38225,50.6635 47.72325,50.9455 C47.08825,51.2175 46.33625,51.4755 45.48925,51.7105 C43.61225,52.2315 41.23525,52.6285 38.37025,52.7345 C37.86425,52.7545 37.34025,52.7655 36.80125,52.7655 C36.72925,52.7655 36.66025,52.7625 36.58625,52.7625 C35.15125,52.7545 33.82625,52.6745 32.60825,52.5435 C32.36625,52.5165 32.12725,52.4885 31.89325,52.4575 C30.46525,52.2725 29.20425,52.0135 28.11425,51.7105 C27.26825,51.4755 26.51625,51.2175 25.88125,50.9455 C25.22225,50.6635 24.68625,50.3725 24.25925,50.0845 C23.50025,49.5705 23.09825,49.0725 23.09825,48.6785 C23.09825,48.2855 23.49825,47.7855 24.25825,47.2735 C25.49525,47.8515 26.95925,48.3215 28.56025,48.6805 C30.06725,49.0165 31.69625,49.2525 33.36925,49.3915 C33.86625,49.4305 34.36525,49.4615 34.86725,49.4845 C35.49825,49.5155 36.13625,49.5295 36.77225,49.5295 L36.80125,49.5295 C37.85125,49.5295 38.89925,49.4915 39.93425,49.4145 C40.03425,49.4075 40.13325,49.3985 40.23525,49.3915 C41.37625,49.2975 42.49825,49.1585 43.57425,48.9705 C44.07525,48.8835 44.56525,48.7855 45.04325,48.6805 C46.64625,48.3215 48.10825,47.8515 49.34625,47.2735 C50.10625,47.7855 50.50725,48.2855 50.50725,48.6785 C50.50725,49.0725 50.10625,49.5715 49.34425,50.0845 L49.34425,50.0845 Z M36.80125,58.8285 C34.60125,58.8285 32.64925,58.6615 30.95825,58.3905 C28.21725,57.9505 26.17025,57.2365 24.85125,56.5065 C23.71325,55.8795 23.11225,55.2405 23.10025,54.7565 C23.10025,54.7525 23.09825,54.7475 23.09825,54.7435 C23.09825,54.3505 23.50025,53.8495 24.26025,53.3365 C25.33425,53.8385 26.57725,54.2595 27.93425,54.5945 C28.42025,54.7135 28.91825,54.8225 29.42925,54.9205 C29.43825,54.9235 29.44825,54.9245 29.45725,54.9265 C30.85825,55.1955 32.34225,55.3835 33.86025,55.4885 C34.07525,55.5035 34.29225,55.5175 34.51025,55.5295 C35.27025,55.5715 36.03525,55.5925 36.80125,55.5925 C41.46125,55.5925 46.15625,54.8265 49.34425,53.3365 C50.10625,53.8495 50.50725,54.3505 50.50725,54.7435 C50.50725,56.1285 45.66925,58.8285 36.80125,58.8285 L36.80125,58.8285 Z M20.28525,42.3485 C20.28025,42.4375 20.27125,42.5255 20.27125,42.6175 L20.27125,46.9305 L15.26625,41.9255 L41.94625,15.2445 L55.52625,28.8255 L47.21325,37.1385 C44.23725,36.1885 40.51125,35.7035 36.80125,35.7035 C28.75025,35.7035 20.60825,37.9865 20.28525,42.3485 L20.28525,42.3485 Z M60.95625,34.2085 C60.91825,34.1545 59.48825,32.1765 58.51525,30.8335 L59.27425,30.0765 C59.96325,29.3855 59.96325,28.2665 59.27425,27.5765 L43.19625,11.4965 C42.53225,10.8345 41.35925,10.8345 40.69625,11.4965 L11.51825,40.6765 C10.82725,41.3665 10.82725,42.4855 11.51825,43.1755 L20.27125,51.9265 L20.27125,53.8805 L20.27125,54.7435 C20.27125,59.2815 28.58625,61.6545 36.80125,61.6545 C45.01725,61.6545 53.33425,59.2815 53.33425,54.7435 L53.33425,53.8805 L53.33425,41.9095 L60.56325,36.6785 C60.94325,36.4035 61.19825,35.9875 61.27025,35.5245 C61.34625,35.0615 61.23325,34.5875 60.95625,34.2085 L60.95625,34.2085 Z" id="Fill-505"></path>
- </g>
- </g>
-</svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive-web.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive-web.svg
new file mode 100644
index 000000000..ff685af03
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/responsive-web.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>responsive-web</title><g fill="#E65376" fill-rule="evenodd"><path d="M19.96 27.453c-.126-.12-.296-.18-.51-.18-.22 0-.402.06-.537.18-.133.118-.202.25-.202.4v3.115c0 .386.038.745.11 1.077.075.333.203.62.384.862.18.243.423.432.727.567.304.136.682.203 1.134.203.467 0 .85-.085 1.15-.252.3-.168.54-.396.722-.684.172.29.406.517.7.685.297.167.687.252 1.17.252.452 0 .828-.067 1.128-.203.3-.135.54-.324.72-.567.18-.24.308-.53.382-.862.075-.332.11-.69.11-1.077v-3.116c0-.148-.066-.28-.197-.4-.132-.12-.313-.178-.542-.178-.206 0-.373.06-.5.18-.128.117-.19.25-.19.398v3.165c0 .45-.082.784-.245.998-.165.215-.43.32-.79.32-.37 0-.632-.105-.788-.32-.155-.214-.235-.547-.235-.998V27.84c0-.18-.077-.32-.233-.42-.155-.096-.315-.146-.48-.146-.073 0-.153.014-.24.043-.087.03-.167.066-.24.11-.073.047-.136.1-.184.168-.05.064-.075.135-.075.208v3.214c0 .45-.078.784-.234.998-.156.215-.42.32-.787.32-.37 0-.637-.105-.795-.32-.16-.214-.24-.547-.24-.998v-3.165c0-.148-.065-.28-.19-.4M36.332 27.274c-.205 0-.372.06-.5.18-.125.117-.19.25-.19.398v3.165c0 .45-.08.784-.245.998-.164.215-.427.32-.788.32-.37 0-.633-.105-.79-.32-.155-.214-.234-.547-.234-.998V27.84c0-.18-.077-.32-.233-.42-.155-.096-.316-.146-.482-.146-.073 0-.15.014-.238.043-.086.03-.166.066-.24.11-.073.047-.135.1-.184.168-.05.064-.075.135-.075.208v3.214c0 .45-.077.784-.233.998-.156.215-.42.32-.787.32-.37 0-.635-.105-.796-.32-.16-.214-.24-.547-.24-.998v-3.165c0-.148-.064-.28-.19-.4-.13-.12-.298-.178-.512-.178-.222 0-.4.06-.535.18-.136.117-.204.25-.204.398v3.116c0 .386.037.745.11 1.077.074.333.202.62.382.862.182.243.424.432.727.567.304.136.68.203 1.134.203.466 0 .85-.085 1.15-.252.3-.168.54-.396.72-.684.173.29.408.517.702.685.295.167.686.252 1.17.252.45 0 .827-.067 1.127-.203.298-.135.538-.324.72-.567.18-.24.308-.53.382-.862.073-.332.11-.69.11-1.077v-3.116c0-.148-.067-.28-.2-.4-.128-.12-.31-.178-.54-.178M39.812 27.453c-.127-.12-.297-.18-.51-.18-.223 0-.4.06-.537.18-.135.118-.203.25-.203.4v3.115c0 .386.037.745.11 1.077.073.333.2.62.383.862.18.243.42.432.726.567.305.136.682.203 1.135.203.466 0 .85-.085 1.15-.252.3-.168.54-.396.72-.684.173.29.408.517.704.685.293.167.683.252 1.168.252.45 0 .827-.067 1.126-.203.3-.135.54-.324.72-.567.18-.24.31-.53.38-.862.077-.332.114-.69.114-1.077v-3.116c0-.148-.066-.28-.2-.4-.13-.12-.31-.178-.54-.178-.204 0-.372.06-.5.18-.126.117-.19.25-.19.398v3.165c0 .45-.08.784-.246.998-.164.215-.427.32-.788.32-.37 0-.63-.105-.788-.32-.155-.214-.233-.547-.233-.998V27.84c0-.18-.08-.32-.235-.42-.155-.096-.317-.146-.48-.146-.073 0-.153.014-.242.043-.085.03-.164.066-.237.11-.076.047-.137.1-.186.168-.05.064-.074.135-.074.208v3.214c0 .45-.08.784-.236.998-.154.215-.418.32-.786.32-.37 0-.634-.105-.794-.32-.16-.214-.242-.547-.242-.998v-3.165c0-.148-.06-.28-.19-.4M48.482 32.347c-.145.124-.216.264-.216.42v.307c0 .155.07.296.216.42.142.122.34.183.583.183.222 0 .406-.06.55-.184.14-.123.214-.264.214-.42v-.307c0-.155-.074-.295-.215-.42-.144-.122-.328-.183-.55-.183-.244 0-.44.06-.583.184M51.63 24.776v11.4c0 .276.225.5.5.5.278 0 .5-.224.5-.5v-11.4c0-.276-.222-.5-.5-.5-.275 0-.5.224-.5.5M46.248 48.754l2.656-.524c.185-.036.335-.175.385-.358.05-.182-.01-.377-.15-.504l-10.744-9.653c-.158-.143-.39-.168-.576-.065-.187.103-.287.313-.25.523l2.454 14.067c.03.184.163.334.34.39.174.056.374.01.505-.123l2.124-2.128 2.655 4.66c.068.122.183.208.32.24.037.01.075.013.113.013.1 0 .197-.03.28-.085l2.723-1.835c.114-.077.192-.197.214-.333.023-.135-.012-.274-.095-.383l-2.957-3.903M58.76 39.907H45.326l4.007 3.6h9.43c.993 0 1.8-.806 1.8-1.8s-.807-1.8-1.8-1.8"/><path d="M14.6 39.907V20.6h44.16c.995 0 1.8-.806 1.8-1.8s-.805-1.8-1.8-1.8H12.8c-.994 0-1.8.806-1.8 1.8v22.907c0 .994.806 1.8 1.8 1.8h22.655l-.628-3.6H14.6"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpg
new file mode 100644
index 000000000..21744f3cd
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/screenshot-of-themes.jpg
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.png
index 96c60299d..7b4d36a67 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/stevenage-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/syncronised.svg b/web/cobrands/fixmystreet.com/images/fms-for-councils/syncronised.svg
new file mode 100644
index 000000000..f95a20865
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/syncronised.svg
@@ -0,0 +1 @@
+<svg width="72" height="72" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><title>syncronised</title><g fill="#E65376" fill-rule="evenodd"><path d="M58.505 43.558l-9.476-6.89c-.314-.22-.73-.26-1.074-.08-.345.18-.562.53-.562.92v4.48h-30.99c-1.328 0-2.404 1.07-2.404 2.4 0 1.33 1.076 2.4 2.403 2.4h30.99v4.48c0 .39.218.74.563.92.148.07.308.11.468.11.213 0 .426-.06.605-.19l9.475-6.89c.266-.19.423-.5.423-.83 0-.33-.157-.64-.423-.83M14.425 28.748l9.476 6.88c.18.13.392.2.607.2.158 0 .318-.04.466-.11.345-.18.562-.53.562-.92v-4.48h30.99c1.33 0 2.403-1.08 2.403-2.41 0-1.32-1.074-2.4-2.402-2.4h-30.99v-4.48c0-.38-.218-.74-.563-.92-.344-.17-.76-.14-1.072.09l-9.475 6.88c-.267.2-.425.51-.425.83 0 .33.158.64.425.84"/></g></svg> \ No newline at end of file
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.png
index 62087ba52..69c189581 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/warwickshire-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpg b/web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpg
index d2f44be30..86345b7e4 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpg
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/window-mockup.jpg
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.png b/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.png
index 2748caec3..efdaf2fe8 100644
--- a/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.png
+++ b/web/cobrands/fixmystreet.com/images/fms-for-councils/zurich-logo.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/next-step-donate.png b/web/cobrands/fixmystreet.com/images/next-step-donate.png
new file mode 100644
index 000000000..20e136fd4
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/next-step-donate.png
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/tile-y-border.jpg b/web/cobrands/fixmystreet.com/images/tile-y-border.jpg
deleted file mode 100644
index 04c75a9de..000000000
--- a/web/cobrands/fixmystreet.com/images/tile-y-border.jpg
+++ /dev/null
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/tile-y.jpg b/web/cobrands/fixmystreet.com/images/tile-y.jpg
index 63682f1c4..3c8383714 100644
--- a/web/cobrands/fixmystreet.com/images/tile-y.jpg
+++ b/web/cobrands/fixmystreet.com/images/tile-y.jpg
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/tile-y@2x.jpg b/web/cobrands/fixmystreet.com/images/tile-y@2x.jpg
new file mode 100644
index 000000000..19699e9d7
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/tile-y@2x.jpg
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/tile.jpg b/web/cobrands/fixmystreet.com/images/tile.jpg
index b412774e4..c3cdb76fb 100644
--- a/web/cobrands/fixmystreet.com/images/tile.jpg
+++ b/web/cobrands/fixmystreet.com/images/tile.jpg
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/images/tile@2x.jpg b/web/cobrands/fixmystreet.com/images/tile@2x.jpg
new file mode 100644
index 000000000..bf9c57e0f
--- /dev/null
+++ b/web/cobrands/fixmystreet.com/images/tile@2x.jpg
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/js.js b/web/cobrands/fixmystreet.com/js.js
index b38df87ed..5aecd820e 100644
--- a/web/cobrands/fixmystreet.com/js.js
+++ b/web/cobrands/fixmystreet.com/js.js
@@ -36,20 +36,45 @@ $(function(){
});
$(function(){
- /* Accordion on councils page */
+ // "Fold out" additional rows in pricing grid
+ $('.js-extra-features').each(function(){
+ var $t3 = $(this);
+ var $t2 = $('<tbody>');
+ var cols = $t3.find('tr').eq(0).children().length;
- var allPanels = $('.accordion > .accordion-item .accordion-content').hide();
- var allSwitches = $('.accordion .accordion-switch');
+ $t2.addClass('pricing-table__show-more');
+ $t2.html('<tr><td colspan="' + cols + '"><button class="button">Compare more features</button></td></tr>');
+ $t2.on('click', '.button', function(){
+ $t3.toggle();
+ });
- allSwitches.click(function() {
- if ($(this).hasClass('accordion-switch--open')) {
- return false;
- }
- allPanels.slideUp();
- allSwitches.removeClass('accordion-switch--open');
- $(this).addClass('accordion-switch--open');
- $(this).next().slideDown();
- return false;
- });
- allSwitches.first().click();
+ $t2.insertBefore($t3);
+ $t3.hide();
+ });
+
+ // Add tier names to cells, to be displayed on narrow screens
+ $('.pricing-table thead th').each(function(){
+ var $table = $(this).parents('.pricing-table');
+ var colIndex = $(this).prevAll().length;
+
+ // Ignore first column
+ if (colIndex > 0) {
+ var tierName = $(this).text();
+ $table.find('tbody tr').each(function(){
+ $(this).children().eq(colIndex).attr('data-tier-name', tierName);
+ });
+ }
+ });
+
+ // Hide the demo access form behind a button, to save space on initial page load
+ $('.js-fms-pro-demo-form').each(function(){
+ var $form = $(this);
+ var $revealBtn = $('<button>').addClass('btn').text('Request access').on('click', function(){
+ $form.slideDown(250, function(){
+ $form.find('input[type="text"], input[type="text"]').eq(0).focus();
+ });
+ $(this).remove();
+ }).insertAfter($form);
+ $form.hide();
+ });
});
diff --git a/web/cobrands/fixmystreet.com/layout.scss b/web/cobrands/fixmystreet.com/layout.scss
index 8318eab90..60b65569f 100644
--- a/web/cobrands/fixmystreet.com/layout.scss
+++ b/web/cobrands/fixmystreet.com/layout.scss
@@ -67,37 +67,49 @@ h3, h4,
@import "_colours";
@import "../sass/layout";
+body {
+ @media ($high-dpi-screen) {
+ background-image: url(images/tile@2x.jpg);
+ background-size: 500px;
+ }
+}
+
// Tiled background stripe, not plain colour
#front-main {
background: $primary url(images/tile-y.jpg);
+
+ @media ($high-dpi-screen) {
+ background-image: url(images/tile-y@2x.jpg);
+ background-size: 500px;
+ }
}
.nav-menu--main {
a:hover {
@include linear-gradient(#000, #444 10%, #444 95%, #111);
}
+ a.report-a-problem-btn:hover {
+ background: $primary/1.1;
+ }
}
-.nav-wrapper {
- .nav-wrapper-2 {
- border-image-source: url(images/tile-y-border.jpg);
- border-image-slice: 4 0 0;
- border-image-repeat: repeat;
+#site-header {
+ background: none;
+ border-image-source: url(images/tile-y.jpg);
+ border-image-slice: 4 0 0 0;
+ border-image-repeat: repeat;
+
+ @media ($high-dpi-screen) {
+ border-image-source: url(images/tile-y@2x.jpg);
+ border-image-slice: 8 0 0 0;
}
}
body.mappage {
- .nav-wrapper {
- .nav-wrapper-2 {
- @include linear-gradient(#000, #222 10%, #222 90%, #000);
- }
+ #site-header {
+ @include linear-gradient(#000, #222 10%, #222 90%, #000);
}
}
-.nav-menu--mysoc {
- background: #515151;
- margin-top: -4px;
-}
-
body.twothirdswidthpage,
body.fullwidthpage {
#front-main {
@@ -150,61 +162,24 @@ body.fullwidthpage {
}
}
}
-
- .container {
- .content {
- footer {
- .tablewrapper {
- background: #1a1a1a url(images/tile.jpg) 0 0 repeat;
- }
- }
- }
- }
}
body.frontpage {
- .container {
- background-color: transparent;
-
- .content {
- background-color: transparent;
- padding: 0em 0em 1em;
-
- > .tablewrapper {
- margin: -4em 0em 0em;
- padding: 1em 1em;
- background-color: white;
- width: auto;
- }
- > .form-error {
- margin-top: -4em;
- }
- > .form-error + .tablewrapper {
- margin-top: 0;
- }
- }
- footer {
- .bordered {
- margin: 0em;
- }
- }
+ #site-logo {
+ margin: 2em 0;
+ width: 300px;
+ height: 60px;
+ background: url($image-sprite) -2px -108px no-repeat;
}
-}
-body.twothirdswidthpage {
- .container {
- .content {
- footer {
- .tablewrapper {
- border: 0px;
- }
- }
- }
+ .content {
+ margin-top: -3em; // overlap the bottom of #front-main
}
}
.next-steps {
@include clearfix;
+ @include flex-container();
margin-bottom: 2em; // add some space between this and the footer
}
@@ -285,26 +260,6 @@ body.unresponsive-council {
}
}
-// FMS.com has a slightly different version of the
-// footer-help / footer-marketing widgets that appear
-// at the bottom of pages with `pagefooter` set.
-#footer-help {
- border: none;
-
- ul {
- margin: 0 auto;
-
- li {
- max-width: 19em;
-
- &:last-child {
- border: none;
- padding-left: 3em;
- }
- }
- }
-}
-
.mysoc-footer {
margin-top: 3em;
// The below lines are so that on e.g. /about/posters the footer will move on
@@ -315,3 +270,45 @@ body.unresponsive-council {
body.mappage .mysoc-footer {
display: none;
}
+
+// FMS Pro advert
+footer {
+ background: $base_bg; // (images/tile.jpg)
+ margin: -1em;
+ padding: 1em 0;
+
+ @media ($high-dpi-screen) {
+ background-image: url(images/tile@2x.jpg);
+ background-size: 500px;
+ }
+}
+
+.fms-pro-promo {
+ margin: 1em 0 3em 0;
+ padding: 2em;
+ background: $primary url(images/tile-y.jpg) 0 0 repeat;
+
+ @media ($high-dpi-screen) {
+ background-image: url(images/tile-y@2x.jpg);
+ background-size: 500px;
+ }
+
+ p {
+ font-size: 1.2em;
+ max-width: 26em;
+ }
+
+ h2 {
+ font-family: inherit;
+ font-weight: bold;
+ font-size: 2em;
+ }
+
+ @media (min-width: 60em) {
+ padding: 3em;
+ }
+}
+
+.footer-marketing {
+ color: #ccc;
+}
diff --git a/web/cobrands/fixmystreet.com/posters/activist-pack.zip b/web/cobrands/fixmystreet.com/posters/activist-pack.zip
index 1d836345b..423447f03 100644
--- a/web/cobrands/fixmystreet.com/posters/activist-pack.zip
+++ b/web/cobrands/fixmystreet.com/posters/activist-pack.zip
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/posters/community-group-pack.zip b/web/cobrands/fixmystreet.com/posters/community-group-pack.zip
index 8dafc8b50..b3041c833 100644
--- a/web/cobrands/fixmystreet.com/posters/community-group-pack.zip
+++ b/web/cobrands/fixmystreet.com/posters/community-group-pack.zip
Binary files differ
diff --git a/web/cobrands/fixmystreet.com/posters/schools-clubs-pack.zip b/web/cobrands/fixmystreet.com/posters/schools-clubs-pack.zip
index 53a2a5f41..37d564648 100644
--- a/web/cobrands/fixmystreet.com/posters/schools-clubs-pack.zip
+++ b/web/cobrands/fixmystreet.com/posters/schools-clubs-pack.zip
Binary files differ
diff --git a/web/js/jquery.cookie.min.js b/web/cobrands/fixmystreet.com/vendor/jquery.cookie.min.js
index 3fa82b82b..3fa82b82b 100644
--- a/web/js/jquery.cookie.min.js
+++ b/web/cobrands/fixmystreet.com/vendor/jquery.cookie.min.js
diff --git a/web/cobrands/fixmystreet/admin.js b/web/cobrands/fixmystreet/admin.js
index f7fcaf276..2af950b28 100644
--- a/web/cobrands/fixmystreet/admin.js
+++ b/web/cobrands/fixmystreet/admin.js
@@ -40,7 +40,7 @@ $(function(){
// admin hints: maybe better implemented as tooltips?
- $(".admin-hint").on('click', function(){
+ $(".admin").on('click', ".admin-hint", function(){
if ($(this).hasClass('admin-hint-show')) {
$(this).removeClass('admin-hint-show');
} else {
@@ -123,5 +123,84 @@ $(function(){
}
}
});
+
+ // Bits for the report extra fields form builder:
+
+ // If type is changed to 'singlevaluelist' show the options list
+ $(".js-metadata-items").on("change", ".js-metadata-item-type", function() {
+ var $this = $(this);
+ var shown = $this.val() === 'singlevaluelist';
+ var $list = $this.closest(".js-metadata-item").find('.js-metadata-options');
+ $list.toggle(shown);
+ });
+ // call immediately to perform page setup
+ $(".js-metadata-item-type").change();
+
+ // Options can be removed by clicking the 'remove' button
+ $(".js-metadata-items").on("click", ".js-metadata-option-remove", function(e) {
+ e.preventDefault();
+ var $this = $(this);
+ var $item = $this.closest(".js-metadata-item");
+ $this.closest('li').remove();
+ return true;
+ });
+
+ // New options can be added by clicking the appropriate button
+ $(".js-metadata-items").on("click", ".js-metadata-option-add", function(e) {
+ e.preventDefault();
+ var $ul = $(this).closest("ul");
+ var $template_option = $ul.find(".js-metadata-option-template");
+ var $new_option = $template_option.clone();
+ $new_option.removeClass("hidden-js js-metadata-option-template");
+ $new_option.show();
+ $new_option.insertBefore($template_option);
+ $new_option.find("input").first().focus();
+ renumber_metadata_options($(this).closest(".js-metadata-item"));
+ return true;
+ });
+
+ // Fields can be added/removed
+ $(".js-metadata-item-add").on("click", function(e) {
+ e.preventDefault();
+ var $template_item = $(".js-metadata-items .js-metadata-item-template");
+ var $new_item = $template_item.clone();
+ $new_item.data('index', Math.max.apply(
+ null,
+ $(".js-metadata-item").map(function() {
+ return $(this).data('index');
+ }).get()
+ ) + 1);
+ renumber_metadata_fields($new_item);
+ $new_item.removeClass("hidden-js js-metadata-item-template");
+ $new_item.show();
+ $new_item.insertBefore($template_item);
+ $new_item.find("input").first().focus();
+ return true;
+ });
+ $(".js-metadata-items").on("click", ".js-metadata-item-remove", function(e) {
+ e.preventDefault();
+ $(this).closest(".js-metadata-item").remove();
+ return true;
+ });
+
+ function renumber_metadata_fields($item) {
+ var item_index = $item.data("index");
+ $item.find("input[data-field-name").each(function(i) {
+ var $input = $(this);
+ var prefix = "metadata["+item_index+"].";
+ var name = prefix + $input.data("fieldName");
+ $input.attr("name", name);
+ });
+ }
+
+ function renumber_metadata_options($item) {
+ var item_index = $item.data("index");
+ $item.find(".js-metadata-option").each(function(i) {
+ var $li = $(this);
+ var prefix = "metadata["+item_index+"].values["+i+"]";
+ $li.find(".js-metadata-option-key").attr("name", prefix+".key");
+ $li.find(".js-metadata-option-name").attr("name", prefix+".name");
+ });
+ }
});
diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js
index a4bab095e..8673b6b76 100644
--- a/web/cobrands/fixmystreet/fixmystreet.js
+++ b/web/cobrands/fixmystreet/fixmystreet.js
@@ -128,6 +128,8 @@ function isR2L() {
});
})(jQuery);
+fixmystreet.hooks = fixmystreet.hooks || {};
+
fixmystreet.mobile_reporting = {
apply_ui: function() {
// Creates the "app-like" mobile reporting UI with full screen map
@@ -249,11 +251,19 @@ $.extend(fixmystreet.set_up, {
basics: function() {
// Preload the new report pin
if ( typeof fixmystreet !== 'undefined' && typeof fixmystreet.pin_prefix !== 'undefined' ) {
- document.createElement('img').src = fixmystreet.pin_prefix + 'pin-green.png';
+ document.createElement('img').src = fixmystreet.pin_prefix + 'pin-' + fixmystreet.pin_new_report_colour + '.png';
} else {
document.createElement('img').src = '/i/pin-green.png';
}
+ $('a[href*="around"]').each(function() {
+ this.href = this.href + (this.href.indexOf('?') > -1 ? '&js=1' : '?js=1');
+ });
+ $('input[name="js"]').val(1);
+ $('form[action*="around"]').each(function() {
+ $('<input type="hidden" name="js" value="1">').prependTo(this);
+ });
+
// Focus on postcode box on front page
$('#pc').focus();
@@ -377,17 +387,29 @@ $.extend(fixmystreet.set_up, {
});
},
+ autocomplete: function() {
+ $('.js-autocomplete').each(function() {
+ accessibleAutocomplete.enhanceSelectElement({
+ selectElement: this,
+ displayMenu: 'overlay',
+ required: true,
+ // showAllValues: true, // Currently undismissable on iOS
+ defaultValue: ''
+ });
+ });
+ },
+
report_geolocation: function() {
if (!geo_position_js.init()) {
return;
}
- if ($('#postcodeForm').length) {
- var link = '<a href="LINK" id="geolocate_link">&hellip; ' + translation_strings.geolocate + '</a>';
- $('form[action="/alert/list"]').append(link.replace('LINK','/alert/list'));
+ if ($('.js-geolocate').length) {
+ var link = $('.js-geolocate').attr('action');
+ link = '<a href="' + link + '" id="geolocate_link">&hellip; ' + translation_strings.geolocate + '</a>';
if ($('body.frontpage').length) {
- $('#postcodeForm').after(link.replace('LINK','/around'));
+ $('.js-geolocate').after(link);
} else{
- $('#postcodeForm').append(link.replace('LINK','/around'));
+ $('.js-geolocate').append(link);
}
fixmystreet.geolocate.setup(function(pos) {
var latitude = pos.coords.latitude;
@@ -425,9 +447,35 @@ $.extend(fixmystreet.set_up, {
$category_meta.empty();
}
});
+
+ if (fixmystreet.hooks.update_problem_fields) {
+ fixmystreet.hooks.update_problem_fields($(this).data('role'), $(this).data('body'), args);
+ }
});
},
+ hide_name: function() {
+ $('body').on('click', '.js-hide-name', function(e){
+ e.preventDefault();
+
+ var $p = $(this).parents('p');
+ var $form = $p.next('.hide-name-form'); // might not exist yet
+ var url = $(this).attr('href');
+
+ if ($form.length) {
+ $form.slideUp(function(){
+ $form.remove();
+ });
+ } else {
+ $.get(url).done(function(html){
+ $(html).find('.hide-name-form').hide().insertAfter($p).slideDown();
+ }).fail(function(){
+ window.location.href = url;
+ });
+ }
+ });
+ },
+
on_resize: function() {
var last_type;
$(window).on('resize', function() {
@@ -475,6 +523,9 @@ $.extend(fixmystreet.set_up, {
addRemoveLinks: true,
thumbnailHeight: 150,
thumbnailWidth: 150,
+ resizeWidth: 2048,
+ resizeHeight: 2048,
+ resizeQuality: 0.6,
acceptedFiles: 'image/jpeg,image/pjpeg,image/gif,image/tiff,image/png',
dictDefaultMessage: translation_strings.upload_default_message,
dictCancelUploadConfirmation: translation_strings.upload_cancel_confirmation,
@@ -528,9 +579,13 @@ $.extend(fixmystreet.set_up, {
if (!f) {
return;
}
- var mockFile = { name: f, server_id: f };
+ var mockFile = { name: f, server_id: f, dataURL: '/photo/temp.' + f };
photodrop.emit("addedfile", mockFile);
- photodrop.createThumbnailFromUrl(mockFile, '/photo/temp.' + f);
+ photodrop.createThumbnailFromUrl(mockFile,
+ photodrop.options.thumbnailWidth, photodrop.options.thumbnailHeight,
+ photodrop.options.thumbnailMethod, true, function(thumbnail) {
+ photodrop.emit('thumbnail', mockFile, thumbnail);
+ });
photodrop.emit("complete", mockFile);
photodrop.options.maxFiles -= 1;
});
@@ -712,7 +767,7 @@ $.extend(fixmystreet.set_up, {
// (due to not wanting around form to submit, though good thing anyway)
$('body').on('click', '#alert_rss_button', function(e) {
e.preventDefault();
- var feed = $('input[name=feed][type=radio]:checked').nextAll('a').attr('href');
+ var feed = $('input[name=feed][type=radio]:checked').parent().prevAll('a').attr('href');
window.location.href = feed;
});
$('body').on('click', '#alert_email_button', function(e) {
@@ -869,6 +924,9 @@ fixmystreet.update_pin = function(lonlat, savePushState) {
if (!data.contribute_as.another_user) {
$select.find('option[value=another_user]').remove();
}
+ if (!data.contribute_as.anonymous_user) {
+ $select.find('option[value=anonymous_user]').remove();
+ }
if (!data.contribute_as.body) {
$select.find('option[value=body]').remove();
}
@@ -948,8 +1006,8 @@ fixmystreet.display = {
translation_strings.ok +
'</a>' +
'</p>')
+ .addClass('above-form') // Stop map being absolute, so reporting form doesn't get hidden
.css({
- position: 'relative', // Stop map being absolute, so reporting form doesn't get hidden
width: width,
height: height
});
@@ -999,6 +1057,7 @@ fixmystreet.display = {
$('body').addClass('with-actions');
fixmystreet.run(fixmystreet.set_up.report_page_inspect);
fixmystreet.run(fixmystreet.set_up.manage_duplicates);
+ fixmystreet.run(fixmystreet.set_up.action_scheduled_raise_defect);
} else {
$sideReport.appendTo('#map_sidebar');
}
@@ -1009,7 +1068,7 @@ fixmystreet.display = {
fixmystreet.page = 'report';
fixmystreet.mobile_reporting.remove_ui();
- if ($('html').hasClass('mobile') && fixmystreet.map.updateSize) {
+ if (fixmystreet.map.updateSize && ($twoColReport.length || $('html').hasClass('mobile'))) {
fixmystreet.map.updateSize();
}
diff --git a/web/cobrands/fixmystreet/images/map-marker.png b/web/cobrands/fixmystreet/images/map-marker.png
new file mode 100644
index 000000000..5f124dbc6
--- /dev/null
+++ b/web/cobrands/fixmystreet/images/map-marker.png
Binary files differ
diff --git a/web/cobrands/fixmystreet/images/map-marker.svg b/web/cobrands/fixmystreet/images/map-marker.svg
new file mode 100755
index 000000000..a84a14526
--- /dev/null
+++ b/web/cobrands/fixmystreet/images/map-marker.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generated by IcoMoon.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="28" viewBox="0 0 16 28">
+<path fill="#fff" d="M12 10c0-2.203-1.797-4-4-4s-4 1.797-4 4 1.797 4 4 4 4-1.797 4-4zM16 10c0 0.953-0.109 1.937-0.516 2.797l-5.688 12.094c-0.328 0.688-1.047 1.109-1.797 1.109s-1.469-0.422-1.781-1.109l-5.703-12.094c-0.406-0.859-0.516-1.844-0.516-2.797 0-4.422 3.578-8 8-8s8 3.578 8 8z"></path>
+</svg>
diff --git a/web/cobrands/fixmystreet/images/map-marker@2x.png b/web/cobrands/fixmystreet/images/map-marker@2x.png
new file mode 100644
index 000000000..dd2df39d3
--- /dev/null
+++ b/web/cobrands/fixmystreet/images/map-marker@2x.png
Binary files differ
diff --git a/web/cobrands/fixmystreet/map.js b/web/cobrands/fixmystreet/map.js
index ebeed06cf..f3bf1a19f 100644
--- a/web/cobrands/fixmystreet/map.js
+++ b/web/cobrands/fixmystreet/map.js
@@ -3,7 +3,7 @@ var fixmystreet = fixmystreet || {};
(function(){
var map_data = document.getElementById('js-map-data'),
- map_keys = [ 'area', 'all_pins', 'latitude', 'longitude', 'zoomToBounds', 'zoom', 'pin_prefix', 'numZoomLevels', 'zoomOffset', 'map_type', 'key' ],
+ map_keys = [ 'area', 'all_pins', 'latitude', 'longitude', 'zoomToBounds', 'zoom', 'pin_prefix', 'pin_new_report_colour', 'numZoomLevels', 'zoomOffset', 'map_type', 'key' ],
numeric = { zoom: 1, numZoomLevels: 1, zoomOffset: 1, id: 1 },
pin_keys = [ 'lat', 'lon', 'colour', 'id', 'title', 'type' ];
diff --git a/web/cobrands/fixmystreet/offline.js b/web/cobrands/fixmystreet/offline.js
index e6e50d3e8..18d724e8c 100644
--- a/web/cobrands/fixmystreet/offline.js
+++ b/web/cobrands/fixmystreet/offline.js
@@ -70,7 +70,7 @@ fixmystreet.offlineBanner = (function() {
}
// In case the request failed due to out-of-date CSRF token,
// try once more with a new token given in the error response.
- var m = jqXHR.responseText.match(/name="token" value="([^"]*)"/);
+ var m = jqXHR.responseText.match(/content="([^"]*)" name="csrf-token"/);
if (!m) {
return nextForm();
}
@@ -424,6 +424,11 @@ if ($('#offline_list').length) {
var lastupdate = $('.problem-header').data('lastupdate');
fixmystreet.cachet.cacheReports([{ 'url': '/report/' + id, 'lastupdate': lastupdate }]);
});
+
+ $(document).on('shortlist-all', function(e, args) {
+ fixmystreet.cachet.cacheReports(args.items);
+ });
+
$(document).on('shortlist-remove', function(e, id) {
fixmystreet.offline.removeReports(['/report/' + id]);
});
diff --git a/web/cobrands/fixmystreet/staff.js b/web/cobrands/fixmystreet/staff.js
index b92a70f9c..07a2729e2 100644
--- a/web/cobrands/fixmystreet/staff.js
+++ b/web/cobrands/fixmystreet/staff.js
@@ -9,11 +9,11 @@ $.extend(fixmystreet.set_up, {
latitude: $('input[name="latitude"]').val(),
longitude: $('input[name="longitude"]').val()
};
- $("#js-duplicate-reports ul").html("<li>Loading...</li>");
+ $("#js-duplicate-reports ul").html('<li class="item-list__item">Loading...</li>');
var nearby_url = '/report/'+report_id+'/nearby.json';
$.getJSON(nearby_url, args, function(data) {
var duplicate_of = $("#report_inspect_form [name=duplicate_of]").val();
- var $reports = $(data.current)
+ var $reports = $(data.reports_list)
.filter("li")
.not("[data-report-id="+report_id+"]")
.slice(0, 5);
@@ -80,17 +80,20 @@ $.extend(fixmystreet.set_up, {
$("#js-change-duplicate-report").click(refresh_duplicate_list);
},
- list_item_actions: function() {
- function toggle_shortlist(btn, sw, id) {
- btn.attr('class', 'item-list__item__shortlist-' + sw);
- btn.attr('title', btn.data('label-' + sw));
- if (id) {
- sw += '-' + id;
+ action_scheduled_raise_defect: function() {
+ $("#report_inspect_form").find('[name=state]').on('change', function() {
+ if ($(this).val() !== "action scheduled") {
+ $("#js-inspect-action-scheduled").addClass("hidden");
+ $('#raise_defect_yes').prop('required', false);
+ } else {
+ $("#js-inspect-action-scheduled").removeClass("hidden");
+ $('#raise_defect_yes').prop('required', true);
}
- btn.attr('name', 'shortlist-' + sw);
- }
+ });
+ },
- $('.item-list--reports').on('click', ':submit', function(e) {
+ list_item_actions: function() {
+ $('#js-reports-list').on('click', ':submit', function(e) {
e.preventDefault();
var $submitButton = $(this);
@@ -105,7 +108,7 @@ $.extend(fixmystreet.set_up, {
var parts = whatUserWants.split('-');
whatUserWants = parts[0] + '-' + parts[1];
report_id = parts[2];
- var token = $('[name=token]').val();
+ var token = $('meta[name="csrf-token"]').attr('content');
data = whatUserWants + '=1&token=' + token + '&id=' + report_id;
} else {
var $form = $(this).parents('form');
@@ -130,9 +133,9 @@ $.extend(fixmystreet.set_up, {
} else if ('shortlist-up' === whatUserWants) {
$item.insertBefore( $item.prev() );
} else if ('shortlist-remove' === whatUserWants) {
- toggle_shortlist($submitButton, 'add', report_id);
+ fixmystreet.utils.toggle_shortlist($submitButton, 'add', report_id);
} else if ('shortlist-add' === whatUserWants) {
- toggle_shortlist($submitButton, 'remove', report_id);
+ fixmystreet.utils.toggle_shortlist($submitButton, 'remove', report_id);
}
// Items have moved around. We need to make sure the "up" button on the
@@ -150,9 +153,9 @@ $.extend(fixmystreet.set_up, {
} else if ('shortlist-up' === whatUserWants) {
$item.insertAfter( $item.next() );
} else if ('shortlist-remove' === whatUserWants) {
- toggle_shortlist($submitButton, 'remove', report_id);
+ fixmystreet.utils.toggle_shortlist($submitButton, 'remove', report_id);
} else if ('shortlist-add' === whatUserWants) {
- toggle_shortlist($submitButton, 'add', report_id);
+ fixmystreet.utils.toggle_shortlist($submitButton, 'add', report_id);
}
fixmystreet.update_list_item_buttons($list);
}).complete(function() {
@@ -170,21 +173,31 @@ $.extend(fixmystreet.set_up, {
txt = opt.text;
var $emailInput = $('input[name=email]').add('input[name=rznvy]');
var $nameInput = $('input[name=name]');
+ var $phoneInput = $('input[name=phone]');
var $showNameCheckbox = $('input[name=may_show_name]');
var $addAlertCheckbox = $('#form_add_alert');
if (val === 'myself') {
$emailInput.val($emailInput.prop('defaultValue')).prop('disabled', true);
$nameInput.val($nameInput.prop('defaultValue')).prop('disabled', false);
+ $phoneInput.val($phoneInput.prop('defaultValue')).prop('disabled', false);
$showNameCheckbox.prop('checked', false).prop('disabled', false);
$addAlertCheckbox.prop('checked', true).prop('disabled', false);
} else if (val === 'another_user') {
$emailInput.val('').prop('disabled', false);
$nameInput.val('').prop('disabled', false);
+ $phoneInput.val('').prop('disabled', false);
$showNameCheckbox.prop('checked', false).prop('disabled', true);
$addAlertCheckbox.prop('checked', true).prop('disabled', false);
+ } else if (val === 'anonymous_user') {
+ $emailInput.val('-').prop('disabled', true);
+ $nameInput.val('-').prop('disabled', true);
+ $phoneInput.val('-').prop('disabled', true);
+ $showNameCheckbox.prop('checked', false).prop('disabled', true);
+ $addAlertCheckbox.prop('checked', false).prop('disabled', true);
} else if (val === 'body') {
$emailInput.val('-').prop('disabled', true);
$nameInput.val(txt).prop('disabled', true);
+ $phoneInput.val('-').prop('disabled', true);
$showNameCheckbox.prop('checked', true).prop('disabled', true);
$addAlertCheckbox.prop('checked', false).prop('disabled', true);
}
@@ -193,54 +206,83 @@ $.extend(fixmystreet.set_up, {
},
report_page_inspect: function() {
- if (!$('form#report_inspect_form').length) {
+ var $inspect_form = $('form#report_inspect_form'),
+ $templates = $('#templates_for_public_update');
+
+ if (!$inspect_form.length) {
return;
}
// Focus on form
- $('html,body').scrollTop($('#report_inspect_form').offset().top);
+ $('html,body').scrollTop($inspect_form.offset().top);
+
+ function updateTemplates(opts) {
+ opts.category = opts.category || $inspect_form.find('[name=category]').val();
+ opts.state = opts.state || $inspect_form.find('[name=state]').val();
+ var selector = "[data-category='" + opts.category + "']";
+ var data = $inspect_form.find(selector).data('templates') || [];
+ data = $.grep(data, function(d, i) {
+ if (!d.state || d.state == opts.state) {
+ return true;
+ }
+ return false;
+ });
+ populateSelect($templates, data, 'templates_format');
+ }
+
+ function populateSelect($select, data, label_formatter) {
+ $select.find('option:gt(0)').remove();
+ $.each(data, function(k,v) {
+ label = window.fixmystreet.utils[label_formatter](v);
+ $opt = $('<option></option>').attr('value', v.id).text(label);
+ if (v.state) {
+ $opt.attr('data-problem-state', v.state);
+ }
+ $select.append($opt);
+ });
+ }
// On the manage/inspect report form, we already have all the extra inputs
// in the DOM, we just need to hide/show them as appropriate.
- $('form#report_inspect_form [name=category]').change(function() {
+ $inspect_form.find('[name=category]').change(function() {
var category = $(this).val(),
- selector = "[data-category='" + category + "']";
- $("form#report_inspect_form [data-category]:not(" + selector + ")").addClass("hidden");
- $("form#report_inspect_form " + selector).removeClass("hidden");
- // And update the associated priority list
- var priorities = $("form#report_inspect_form " + selector).data('priorities');
- var $select = $('#problem_priority'),
- curr_pri = $select.val();
- $select.find('option:gt(0)').remove();
- $.each(priorities.split('&'), function(i, kv) {
- if (!kv) {
- return;
- }
- kv = kv.split('=', 2);
- $select.append($('<option>', { value: kv[0], text: decodeURIComponent(kv[1]) }));
- });
- $select.val(curr_pri);
+ selector = "[data-category='" + category + "']",
+ entry = $inspect_form.find(selector),
+ $priorities = $('#problem_priority'),
+ $defect_types = $('#defect_type'),
+ defect_types_data = entry.data('defect-types') || [],
+ priorities_data = entry.data('priorities') || [],
+ curr_pri = $priorities.val();
+
+ $inspect_form.find("[data-category]:not(" + selector + ")").addClass("hidden");
+ entry.removeClass("hidden");
+
+ populateSelect($priorities, priorities_data, 'priorities_type_format');
+ populateSelect($defect_types, defect_types_data, 'defect_type_format');
+ updateTemplates({'category': category});
+ $priorities.val(curr_pri);
});
- // The inspect form submit button can change depending on the selected state
- $("#report_inspect_form [name=state]").change(function(){
- var state = $(this).val();
- var $inspect_form = $("#report_inspect_form");
- var $submit = $inspect_form.find("input[type=submit]");
- var value = $submit.attr('data-value-'+state);
- if (value !== undefined) {
- $submit.val(value);
- } else {
- $submit.val($submit.data('valueOriginal'));
- }
+ function state_change(state) {
+ // The inspect form submit button can change depending on the selected state
+ var $submit = $inspect_form.find("input[type=submit][name=save]");
+ var value = $submit.attr('data-value-' + state);
+ $submit.val(value || $submit.data('valueOriginal'));
+ updateTemplates({'state': state});
+ }
+ var $state_dropdown = $inspect_form.find("[name=state]");
+ state_change($state_dropdown.val());
+ $state_dropdown.change(function(){
+ var state = $(this).val();
+ state_change(state);
// We might also have a response template to preselect for the new state
var $select = $inspect_form.find("select.js-template-name");
var $option = $select.find("option[data-problem-state='"+state+"']").first();
if ($option.length) {
$select.val($option.val()).change();
}
- }).change();
+ });
$('.js-toggle-public-update').each(function() {
var $checkbox = $(this);
@@ -268,10 +310,22 @@ $.extend(fixmystreet.set_up, {
$("#problem_easting").text(bng.lon.toFixed(1));
$("#problem_latitude").text(latlon.lat.toFixed(6));
$("#problem_longitude").text(latlon.lon.toFixed(6));
- $("form#report_inspect_form input[name=latitude]").val(latlon.lat);
- $("form#report_inspect_form input[name=longitude]").val(latlon.lon);
+ $inspect_form.find("input[name=latitude]").val(latlon.lat);
+ $inspect_form.find("input[name=longitude]").val(latlon.lon);
});
}
+
+ // Make the "Provide an update" form toggleable, and hide it by default.
+ // (Inspectors will normally just use the #public_update box instead).
+ var $updateFormH2 = $('.update-form-heading');
+ var $updateFormBtn = $('<button>').insertBefore( $updateFormH2 );
+ $updateFormH2.hide().nextAll().hide();
+ $updateFormBtn.addClass('btn btn--provide-update');
+ $updateFormBtn.text( $updateFormH2.text() );
+ $updateFormBtn.on('click', function(e) {
+ e.preventDefault();
+ $updateFormH2.nextAll().toggle();
+ });
},
moderation: function() {
@@ -340,5 +394,121 @@ $.extend(fixmystreet.set_up, {
$input.val($this.val());
}
});
+ },
+
+ shortlist_listener: function() {
+ $('#fms_shortlist_all').on('click', function() {
+ var features = [];
+ var csrf = $('meta[name="csrf-token"]').attr('content');
+
+ for (var i = 0; i < fixmystreet.markers.features.length; i++) {
+ var feature = fixmystreet.markers.features[i];
+ if (feature.onScreen()) {
+ features.push(feature.data.id);
+ }
+ }
+
+ fixmystreet.maps.shortlist_multiple(features, csrf);
+ });
}
+
+});
+
+$.extend(fixmystreet.hooks, {
+ update_problem_fields: function(role, body, args) {
+ if (role == 'inspector') {
+ var title = args.category + ' problem has been scheduled for fixing';
+ var description = args.category + ' problem found - scheduled for fixing by ' + body;
+
+ var $title_field = $('#form_title');
+ var $description_field = $('#form_detail');
+
+ if ($title_field.val().length === 0 || $title_field.data('autopopulated') === true) {
+ $title_field.val(title);
+ $title_field.data('autopopulated', true);
+ }
+
+ if ($description_field.val().length === 0 || $description_field.data('autopopulated') === true) {
+ $description_field.val(description);
+ $description_field.data('autopopulated', true);
+ }
+
+ $('#form_title, #form_detail').on('keyup', function() {
+ $(this).data('autopopulated', false);
+ });
+ }
+ }
+
+});
+
+fixmystreet.maps = fixmystreet.maps || {};
+
+$.extend(fixmystreet.maps, {
+ shortlist_multiple: function(ids, token, count) {
+ var retryCount = (typeof count !== 'undefined') ? count : 0;
+ $.post("/my/planned/change_multiple", { ids: ids, token: token })
+ .done(function() {
+ var $itemList = $('.item-list'),
+ items = [];
+
+ for (var i = 0; i < ids.length; i++) {
+ var problemId = ids[i],
+ $item = $itemList.find('#report-'+ problemId),
+ $form = $item.find('form'),
+ $submit = $form.find("input[type='submit']" );
+
+ fixmystreet.utils.toggle_shortlist($submit, 'remove', problemId);
+
+ items.push({
+ 'url': '/report/' + $item.data('report-id'),
+ 'lastupdate': $item.data('lastupdate')
+ });
+ }
+ $(document).trigger('shortlist-all', { items: items});
+ })
+ .fail(function(response) {
+ if (response.status == 400 && retryCount < 4) {
+ // If the response is 400, then get a new CSRF token and retry
+ var csrf = response.responseText.match(/content="([^"]*)" name="csrf-token"/)[1];
+ fixmystreet.maps.shortlist_multiple(ids, csrf, retryCount + 1);
+ } else {
+ alert("We appear to be having problems. Please try again later.");
+ }
+ });
+ },
+
+ show_shortlist_control: function() {
+ var $shortlistButton = $('#fms_shortlist_all');
+ if ($shortlistButton === undefined || fixmystreet.page != "reports" ) {
+ return;
+ }
+
+ if (fixmystreet.map.getZoom() >= 14) {
+ $shortlistButton.removeClass('hidden');
+ } else {
+ $shortlistButton.addClass('hidden');
+ }
+ }
+});
+
+fixmystreet.utils = fixmystreet.utils || {};
+
+$.extend(fixmystreet.utils, {
+ defect_type_format: function(data) {
+ return data.name;
+ },
+ priorities_type_format: function(data) {
+ return data.name;
+ },
+ templates_format: function(data) {
+ return data.name;
+ },
+ toggle_shortlist: function(btn, sw, id) {
+ btn.attr('class', 'item-list__item__shortlist-' + sw);
+ btn.attr('title', btn.data('label-' + sw));
+ if (id) {
+ sw += '-' + id;
+ }
+ btn.attr('name', 'shortlist-' + sw);
+ }
});
diff --git a/web/cobrands/greenwich/_colours.scss b/web/cobrands/greenwich/_colours.scss
index d2dc1c3ed..447b5a134 100644
--- a/web/cobrands/greenwich/_colours.scss
+++ b/web/cobrands/greenwich/_colours.scss
@@ -17,9 +17,13 @@ $map_nav_bg: #fff;
$nav_fg: #fff;
$nav_fg_hover: transparent;
+$header-top-border: false;
+
$col_big_numbers: $primary;
$col_click_map: $greenwich_red;
$col_fixed_label: #00BD08;
$col_fixed_label_dark: #4B8304;
+
+$container-max-width: 990px;
diff --git a/web/cobrands/greenwich/base.scss b/web/cobrands/greenwich/base.scss
index 0c52bd5da..2f2ebfa8c 100644
--- a/web/cobrands/greenwich/base.scss
+++ b/web/cobrands/greenwich/base.scss
@@ -6,15 +6,12 @@
@import "../sass/base";
@import "../sass/report_list_pins";
-body.frontpage #site-logo,
-#site-logo
-{
- background: url("/cobrands/greenwich/logo.gif") 0 0 no-repeat;
+#site-logo {
+ background: url("/cobrands/greenwich/logo.gif") 0 50% no-repeat;
background-size: contain;
width: 82px;
height: 40px;
- top: 8px;
- left: 4px;
+ padding: 0.25em 0;
}
#nav-link {
@@ -23,8 +20,7 @@ body.frontpage #site-logo,
#site-header {
- background-color: $base_bg;
- background: url("/cobrands/greenwich/mastWave.gif") 0 0 no-repeat;
+ background: $base_bg url("/cobrands/greenwich/mastWave.gif") 100% 0 no-repeat;
background-size: cover;
}
diff --git a/web/cobrands/greenwich/favicon.png b/web/cobrands/greenwich/favicon.png
index c107d24ef..dd27e9957 100644
--- a/web/cobrands/greenwich/favicon.png
+++ b/web/cobrands/greenwich/favicon.png
Binary files differ
diff --git a/web/cobrands/greenwich/layout.scss b/web/cobrands/greenwich/layout.scss
index db06c9424..c2b50088c 100644
--- a/web/cobrands/greenwich/layout.scss
+++ b/web/cobrands/greenwich/layout.scss
@@ -2,8 +2,6 @@
@import "_fonts";
@import "../sass/layout";
-$fixed_page_width: 990px;
-
#site-logo,
body.frontpage #site-logo,
body.twothirdswidthpage #site-logo
@@ -18,17 +16,13 @@ body.twothirdswidthpage #site-logo
height: 83px;
}
-.container, #main-nav {
- width: $fixed_page_width;
-}
-
#front-main {
background-color: $base_bg;
padding-top: 0.5em;
text-align: left;
#front-main-container {
- max-width: $fixed_page_width;
+ max-width: $container-max-width;
background-color: transparent;
padding: 1em 0;
}
@@ -43,11 +37,12 @@ body.twothirdswidthpage #site-logo
}
}
-body.frontpage #site-header, #site-header {
- height: auto;
+#site-header {
+ background: none;
+ padding: 0 1em; // "wave" background image means its easier to apply padding here than on .container
.container {
- min-height: 0;
+ padding: 0; // let the #site-header padding do the work on mid-sized screens
}
.container:first-child {
@@ -61,17 +56,15 @@ body.frontpage {
border-left: solid 4px $primary;
}
+ // Greenwich positions the menu visually *below* the h1 on the homepage.
#fms-menu-desktop {
position: absolute;
- width: 990px;
- top: 262px;
+ left: 0;
+ right: 0;
+ top: 150px;
}
}
-.nav-wrapper .nav-wrapper-2 {
- border-top: none;
-}
-
.nav-menu--main {
display: none;
}
@@ -150,8 +143,15 @@ body.frontpage {
}
body.mappage {
- #site-header .container {
- min-height: 68px;
+ #site-header {
+ background: $base_bg url("/cobrands/greenwich/mastWave.gif") 100% 0 no-repeat;
+ background-size: contain;
+
+ // No more "wave" background on .container
+ .container {
+ min-height: 0;
+ background: transparent;
+ }
}
.main-menu-container {
@@ -171,16 +171,14 @@ body.mappage {
height: 54px;
}
- .nav-wrapper .nav-wrapper-2 {
- background: url("/cobrands/greenwich/mastWave.gif") 100% 0 no-repeat;
- background-color: $base_bg;
- background-size: contain;
+ .nav-wrapper {
border-bottom: solid 4px $primary;
}
.nav-menu--main a.report-a-problem-btn {
color: $nav_fg;
}
+
.nav-menu {
a, span {
color: $primary_text;
diff --git a/web/cobrands/hart/_colours.scss b/web/cobrands/hart/_colours.scss
index 947b97625..3dce0d9b1 100644
--- a/web/cobrands/hart/_colours.scss
+++ b/web/cobrands/hart/_colours.scss
@@ -14,6 +14,11 @@ $base_bg: #ffffff;
$base_fg: #1a1a1a;
/* Unused here */
-$map_nav_bg: #222;
$nav_fg: #fff;
$nav_fg_hover: #444;
+
+$map_nav_bg: $primary;
+$mappage-header-height: 173px + 32px;
+$header-top-border: false;
+
+$container-max-width: 60em;
diff --git a/web/cobrands/hart/base.scss b/web/cobrands/hart/base.scss
index 8a970331f..62a4250f3 100644
--- a/web/cobrands/hart/base.scss
+++ b/web/cobrands/hart/base.scss
@@ -24,15 +24,7 @@ h1.main {
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;
@@ -53,11 +45,13 @@ h1.main {
}
}
-// Colour tab to match colour scheme
-#nav-link {
- width: 50px;
- height: 48px;
- background: url('/cobrands/hart/tab-blue.png') 0 0 no-repeat;
+#site-logo {
+ display: block;
+ background: url("/cobrands/hart/hart-logo-mobile.png") 0 50% no-repeat;
+}
+
+#main-nav--hart { // Hart has two main menus, basically same on mobile
+ margin: 0 -1em;
}
.big-green-banner {
@@ -80,9 +74,6 @@ h1.main {
padding-top: 0px;
input#pc {
}
- input#sub {
- height: 100%;
- }
}
}
}
diff --git a/web/cobrands/hart/chat.png b/web/cobrands/hart/chat.png
new file mode 100644
index 000000000..4a048b7d4
--- /dev/null
+++ b/web/cobrands/hart/chat.png
Binary files differ
diff --git a/web/cobrands/hart/facebook-logo.png b/web/cobrands/hart/facebook-logo.png
index 931c39316..b5ce77668 100755
--- a/web/cobrands/hart/facebook-logo.png
+++ b/web/cobrands/hart/facebook-logo.png
Binary files differ
diff --git a/web/cobrands/hart/hart.scss b/web/cobrands/hart/hart.scss
index 37a48badf..af2b79a50 100644
--- a/web/cobrands/hart/hart.scss
+++ b/web/cobrands/hart/hart.scss
@@ -26,110 +26,12 @@
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) {
- #map_box,
- #map_sidebar {
- top: 173px + 32px;
- }
-
- body.frontpage #site-header {
- height: 13em;
-
- .mobile-header-nav {
- display: none;
- }
- }
-
- body.mappage {
- .header-container,
- .main-menu {
- max-width: none; // containers are full width on map page
- }
- }
-
- #skipped-map {
- clear: both;
- margin-top: 3em; /* required to push "Your Reports" visible on Safari/IE */
- }
-
- #main-nav {
- margin-top: 106px;
- }
- .nav-menu {
- margin-left: 157px;
- float: none;
- }
-
- .nav-menu li {
- text-align: center;
- text-transform: uppercase;
- padding: 0 15px;
- font-size: 16px;
- border-right: solid 1px white;
- line-height: 1.5em;
- }
- .nav-menu li:last-child {
- border-right: none;
- }
-
- .nav-menu a {
- padding: 0;
- font-size: inherit;
- }
-
- .nav-menu li:hover, .nav-menu 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;
}
@@ -144,75 +46,18 @@ body.frontpage #site-logo,
.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 {
- background-color: #FFF;
- width: 100%;
-
- @media only screen and (min-width:48em) {
- position: absolute;
- box-shadow: 0 0 20px rgba(0,0,0,0.2); // shadow to add contrast with map
- }
-}
-
-.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) {
- height: 32px;
- 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;
- }
- }
+.nav-menu--main {
+ font-family: 'Gill Sans MT', 'Gill Sans', 'Trebuchet MS', Calibri, sans-serif;
+ a {
+ &:link, &:visited {
+ color: $hart_primary;
+ }
+ &:hover {
+ background-color: $hart_primary;
+ color: #FFF;
+ }
}
- }
+ span { display: none }
}
#front-main {
@@ -234,130 +79,136 @@ body.frontpage .table-cell .content {
margin-bottom: 2em;
}
-.hart-footer-wrapper {
+#hart-footer {
+ box-shadow: 0px 500px 0px 500px #4F5757;
+ background: #4F5757;
+ color: #fff;
- background-color: #4F5757;
- clear: both;
- height: auto;
- overflow: hidden;
- padding: 15px 15px 50px 15px;
- color:#fff;
+ @media only screen and (max-width:48em) {
+ font-size: 1em;
+ margin: 0 !important;
+ }
- @media only screen and (min-width:48em) {
- margin-left:-15px;
- padding: 35px 25px 40px 25px;
+ #footer-inner {
+ @media only screen and (max-width:48em) {
+ padding: 15px;
}
+ }
- #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;
+ ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ li {
+ display: inline-block;
}
- p {
+ }
+
+ a {
+ color: #fff;
+ }
+
+ p {
+ padding: 0;
+ margin: 0;
+ }
+
+ #footer-row-1 {
+ padding: 1.5em 0 0.5em 0;
+
+ @media only screen and (max-width:48em) {
margin: 0;
+ padding: 0;
}
- a:link, a:visited {
- color: #fff; text-decoration: none;
- }
- a:hover, a:active {
- text-decoration: underline;
+
+ p {
+ float: left;
+
+ .hart {
+ margin: 0 5px 0 0;
+ padding: 0 10px 0 0;
+ border-right: 1px solid #fff;
+ }
+
}
- footer#hart-footer {
- margin-top: 0;
+ #footer-nav {
+ float: right;
+
+ li {
+ margin: 0 0 0 10px;
+ padding: 0 0 0 10px;
+ float: right;
- @media only screen and (min-width:48em) {
- width: 70%;
- float: left;
+ &:first-child {
+ border-left: 1px solid #fff;
}
- }
+ }
+
+ @media only screen and (max-width:48em) {
+ float: none;
+ width: 100%;
+
+ ul {
+ margin: 15px 0px 0px -2%;
+ }
+
+ li {
+ float: left;
+ width: 45%;
+ display: block;
+ border-left: none !important;
+ border-bottom: 1px solid #797f7f;
+ padding: 2px 0px;
+ margin: 0 2%;
+
+ &.bottom {
+ border: none !important;
+ }
+ }
+ }
- #copyright-block {
- float: left;
- margin-left: 1em;
- }
- #copyright-block-mobile {
- margin-left: 10px;
}
+ }
- #footer-row-2 {
- margin-top: 2em;
+ #footer-row-2 {
+ margin: 0.5em 0;
+
+ @media only screen and (max-width:48em) {
+ margin: 1.5em 0 1em 0;
}
- .footer-nav, {
- height:35px;
+ li {
+ margin: 0 2px;
- margin-left: 0;
- margin-bottom: 0;
+ @media only screen and (max-width:48em) {
+ float: left;
+ margin-right: 5px;
+ }
+ }
- @media only screen and (min-width:48em) {
- float: right;
- }
+ li.web-chat {
+ 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;
- }
- }
+ @media only screen and (max-width:48em) {
+ float: left;
+ }
+
+ a {
+ span {
+ float: left;
+ line-height: 50px;
+ margin: 0 10px 0 0;
}
+ }
}
+
+ }
+
+ #footer-row-3 {
+ padding: 0 0 1.5em 0;
+ margin: 0.5em 0;
+ }
}
// IE specific CSS
@@ -380,20 +231,6 @@ body.frontpage .table-cell .content {
list-style-type: none;
}
-.main-menu ul {
- margin: 0;
- line-height: 32px;
-}
-
-.main-menu li {
- list-style-type: none;
- color: #000;
-}
-
-.main-menu li.last {
- padding-right: 0;
-}
-
//#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
diff --git a/web/cobrands/hart/instagram-logo.png b/web/cobrands/hart/instagram-logo.png
new file mode 100644
index 000000000..cff1d207f
--- /dev/null
+++ b/web/cobrands/hart/instagram-logo.png
Binary files differ
diff --git a/web/cobrands/hart/layout.scss b/web/cobrands/hart/layout.scss
index 08b084275..0358aca87 100644
--- a/web/cobrands/hart/layout.scss
+++ b/web/cobrands/hart/layout.scss
@@ -1,10 +1,6 @@
@import "_colours";
@import "../sass/layout";
-.content {
- margin-top: 8em;
-}
-
#front-main-container {
background-color: $hart_primary;
}
@@ -16,3 +12,110 @@ body.twothirdswidthpage .content {
}
}
}
+
+.mobile-header-nav {
+ display: none;
+}
+
+#site-header {
+ margin-bottom: 2em; // To push main content down under abs. pos menu
+}
+
+#site-logo {
+ margin-left: 2.25em;
+ border-bottom: solid 0.75em $primary;
+ padding: 1em 0;
+ background: url("/cobrands/hart/hart-logo.png") 0 50% no-repeat;
+ width: 123px;
+ height: 132px;
+}
+
+#main-nav--hart {
+ margin: 0;
+}
+
+// Menu *in* the header, pushed down from top
+.nav-menu--hart {
+ margin-left: 157px;
+ position: relative;
+ top: 110px;
+ float: none;
+ li {
+ text-align: center;
+ text-transform: uppercase;
+ padding: 0 15px;
+ font-size: 16px;
+ border-right: solid 1px white;
+ line-height: 1.5em;
+ }
+ li:last-child {
+ border-right: none;
+ }
+ a {
+ padding: 0;
+ font-size: inherit;
+ }
+ li:hover, li:hover a {
+ background-color: white;
+ color: black;
+ text-decoration: none;
+ }
+}
+
+// Menu *under* header - with a full width shadow first
+.container--hart {
+ box-shadow: 0 0 20px rgba(0,0,0,0.2); // shadow to add contrast with map
+ position: absolute;
+ max-width: none;
+ padding: 0;
+ width: 100%;
+
+ body.mappage & {
+ position: absolute; // rather than static
+ }
+}
+
+#main-nav {
+ min-height: 0;
+ float: none;
+ margin: 11em auto 0; // To push it under header
+ background-color: #fff;
+
+ // #main-nav acts a bit like a .container, so we give it the same max-width.
+ max-width: $container-max-width;
+
+ // And, like other .containers, we remove the max-width on the map page.
+ body.mappage & {
+ max-width: none;
+ }
+}
+
+.nav-menu--first {
+ padding: 0.25em 0;
+
+ li {
+ float: left;
+ margin-left: 1em;
+ text-align: center;
+
+ a, span {
+ padding: 0;
+ display: inline;
+ font-size: 1em;
+ color: #333;
+ background: #fff;
+ }
+
+ a {
+ &:link, &:visited {
+ color: $hart_primary;
+ text-decoration: none;
+ }
+ &:hover {
+ background-color: #fff;
+ color: $hart_primary;
+ text-decoration: underline;
+ }
+ }
+ }
+}
diff --git a/web/cobrands/hart/twitter-logo.png b/web/cobrands/hart/twitter-logo.png
index 7e10506e2..2efa3de29 100755
--- a/web/cobrands/hart/twitter-logo.png
+++ b/web/cobrands/hart/twitter-logo.png
Binary files differ
diff --git a/web/cobrands/hart/youtube-logo.png b/web/cobrands/hart/youtube-logo.png
new file mode 100644
index 000000000..da0e17c35
--- /dev/null
+++ b/web/cobrands/hart/youtube-logo.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/_colours.scss b/web/cobrands/oxfordshire/_colours.scss
index ba0597bb8..c2de1c9f0 100644
--- a/web/cobrands/oxfordshire/_colours.scss
+++ b/web/cobrands/oxfordshire/_colours.scss
@@ -15,8 +15,7 @@ $base_fg: #000;
// Taken from the OCC website
$oxfordshire_link_colour: #0c62ba;
-/* Unused here */
-$map_nav_bg: #222;
+$map_nav_bg: $oxfordshire_dk_green;
$nav_fg: #fff;
$nav_fg_hover: #444;
@@ -34,3 +33,5 @@ $oxfordshire_button_base: #F35A0E;
$oxfordshire_button_top: #EC6816;
$oxfordshire_button_bottom: #FE4602;
$oxfordshire_button_border: #CCC;
+
+$pin_prefix: '/cobrands/oxfordshire/images/';
diff --git a/web/cobrands/oxfordshire/_oxon.scss b/web/cobrands/oxfordshire/_oxon.scss
index c8c49a631..39d2edec7 100644
--- a/web/cobrands/oxfordshire/_oxon.scss
+++ b/web/cobrands/oxfordshire/_oxon.scss
@@ -14,16 +14,15 @@ body {
a:hover {text-decoration:underline}
margin:0;
background:#E0E0E0 url("images/bg.jpg") repeat-y top center;
+}
- #oxford-wrapper {
+#oxford-wrapper {
background: url("images/bg-y.jpg") repeat-y scroll 0 0 #FFFFFF;
clear: both;
display: block;
margin: 0 auto;
padding: 0 8px;
width: 990px;
- }
-
}
#oxford-header {
@@ -32,19 +31,19 @@ body {
overflow:hidden;
position:relative;
width:958px;
-
- /* note================= */
- height: 133px;
- height:auto !important;
- min-height:133px;
- /* note================= */
+ min-height: 133px;
background: $oxfordshire_lt_green url("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("images/logo.jpg") no-repeat 0 0;}
+ a.logo {
+ float:left;
+ margin:3px 0 6px 10px;
+ width:173px;
+ height:38px;
+ background: url("images/logo.jpg") no-repeat 0 50%;
+ text-indent: -999999px;
+ }
h1 {
float:left; padding:8px 0 0 10px; margin:0; font-size:1.25em; line-height:normal;
@@ -236,7 +235,3 @@ body {
z-index: 1000;
}
}
-.oxford-left {
- float: left !important;
-}
-
diff --git a/web/cobrands/oxfordshire/base.scss b/web/cobrands/oxfordshire/base.scss
index 49a1ac66c..55bd2f436 100644
--- a/web/cobrands/oxfordshire/base.scss
+++ b/web/cobrands/oxfordshire/base.scss
@@ -6,28 +6,17 @@
@import "../sass/top-banner";
@import "../sass/report_list_pins";
-#site-header {
- background: none;
- background-color: $oxfordshire_dk_green;
- height: 60px;
-}
-
#site-logo {
- margin-top:4px;
- background-image: url('images/logo.jpg');
- background-repeat: no-repeat;
- background-position: 0px 0px;
- border: 4px solid $oxfordshire_dk_green;
+ background: transparent url('images/logo.jpg') 0 50% no-repeat;
width: 173px;
height: 38px;
-}
-
-#nav-link {
- height: 60px; // to match #site-header
+ padding: 0.5em 0;
}
#mysoc-logo {
background-image: none;
+ background-color: $primary;
+ color: #fff;
text-indent: 0;
img {
display: inline;
@@ -77,6 +66,10 @@ dd, p {
}
}
+#side-inspect {
+ background-color: mix(#fff, $primary, 85%);
+}
+
.btn-primary {
@include button-reset(
$oxfordshire_button_top,
@@ -90,6 +83,10 @@ dd, p {
);
}
+.box-warning {
+ background-color: mix(#fff, $primary, 85%);
+}
+
@media print {
body {
background-color: #fff !important;
diff --git a/web/cobrands/oxfordshire/images/pin-green-big.png b/web/cobrands/oxfordshire/images/pin-green-big.png
new file mode 100644
index 000000000..07be6bec8
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-green-big.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-green-mini.png b/web/cobrands/oxfordshire/images/pin-green-mini.png
new file mode 100644
index 000000000..c48dc5a5a
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-green-mini.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-green-small.png b/web/cobrands/oxfordshire/images/pin-green-small.png
new file mode 100644
index 000000000..265cf19d0
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-green-small.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-green.png b/web/cobrands/oxfordshire/images/pin-green.png
new file mode 100644
index 000000000..b31e8b99a
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-green.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-grey-big.png b/web/cobrands/oxfordshire/images/pin-grey-big.png
new file mode 100644
index 000000000..324195e51
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-grey-big.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-grey-mini.png b/web/cobrands/oxfordshire/images/pin-grey-mini.png
new file mode 100644
index 000000000..266d8f185
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-grey-mini.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-grey-small.png b/web/cobrands/oxfordshire/images/pin-grey-small.png
new file mode 100644
index 000000000..3c5893396
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-grey-small.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-grey.png b/web/cobrands/oxfordshire/images/pin-grey.png
new file mode 100644
index 000000000..89d03b6f2
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-grey.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-orange-big.png b/web/cobrands/oxfordshire/images/pin-orange-big.png
new file mode 100644
index 000000000..b2f51e1c4
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-orange-big.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-orange-mini.png b/web/cobrands/oxfordshire/images/pin-orange-mini.png
new file mode 100644
index 000000000..3e1e3864d
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-orange-mini.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-orange-small.png b/web/cobrands/oxfordshire/images/pin-orange-small.png
new file mode 100644
index 000000000..b43bd22f2
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-orange-small.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-orange.png b/web/cobrands/oxfordshire/images/pin-orange.png
new file mode 100644
index 000000000..d8acac82a
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-orange.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-shadow-big.png b/web/cobrands/oxfordshire/images/pin-shadow-big.png
new file mode 100644
index 000000000..6baaefb30
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-shadow-big.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-shadow-small.png b/web/cobrands/oxfordshire/images/pin-shadow-small.png
new file mode 100644
index 000000000..33a263af4
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-shadow-small.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-shadow.png b/web/cobrands/oxfordshire/images/pin-shadow.png
new file mode 100644
index 000000000..2185b6dfd
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-shadow.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-spot.png b/web/cobrands/oxfordshire/images/pin-spot.png
new file mode 100644
index 000000000..0f5437622
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-spot.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-yellow-big.png b/web/cobrands/oxfordshire/images/pin-yellow-big.png
new file mode 100644
index 000000000..3a1666a16
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-yellow-big.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-yellow-mini.png b/web/cobrands/oxfordshire/images/pin-yellow-mini.png
new file mode 100644
index 000000000..1647503f6
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-yellow-mini.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-yellow-small.png b/web/cobrands/oxfordshire/images/pin-yellow-small.png
new file mode 100644
index 000000000..f75cc3b4e
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-yellow-small.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/pin-yellow.png b/web/cobrands/oxfordshire/images/pin-yellow.png
new file mode 100644
index 000000000..1809a622b
--- /dev/null
+++ b/web/cobrands/oxfordshire/images/pin-yellow.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/images/tab-green.png b/web/cobrands/oxfordshire/images/tab-green.png
index 7837fed00..ddcd0150c 100644
--- a/web/cobrands/oxfordshire/images/tab-green.png
+++ b/web/cobrands/oxfordshire/images/tab-green.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/js.js b/web/cobrands/oxfordshire/js.js
new file mode 100644
index 000000000..17cb0dd8f
--- /dev/null
+++ b/web/cobrands/oxfordshire/js.js
@@ -0,0 +1,7 @@
+fixmystreet.utils = fixmystreet.utils || {};
+
+$.extend(fixmystreet.utils, {
+ defect_type_format: function(data) {
+ return data.extra.defect_code + ' - ' + data.extra.activity_code + ' (' + data.name + ')';
+ }
+});
diff --git a/web/cobrands/oxfordshire/layout.scss b/web/cobrands/oxfordshire/layout.scss
index 726b298ff..fc89b854f 100644
--- a/web/cobrands/oxfordshire/layout.scss
+++ b/web/cobrands/oxfordshire/layout.scss
@@ -37,8 +37,7 @@ body, body a {
}
// White background, so no margin needed.
-.content,
-.iel8 .content {
+.content {
margin: 0;
}
@@ -59,44 +58,13 @@ body.twothirdswidthpage {
}
}
-// TODO: This entire section is very suspicious
-//
-// To prevent font size larger interfering with the fixed Oxfordshire layout
-.container { width: auto; }
-body:not(.admin) .full-width { width: 464px; }
-.shadow-wrap { width: 464px; }
-
-.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 {
#oxford-wrapper {
width: auto;
+ background: none;
padding: 0;
- background: transparent;
}
-
#oxford-header {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- z-index: 1;
width: auto;
min-height: $mappage-header-height; // override the normal min-height of 133px
padding: 0;
@@ -111,16 +79,10 @@ body.mappage {
a.logo {
display: block;
- float: left;
height: $mappage-header-height;
width: 200px;
margin: 0;
background: transparent url("images/logo-light-green.gif") no-repeat 50% 50%;
- text-indent: -999px;
-
- * {
- display: none;
- }
}
#navigation {
@@ -156,10 +118,6 @@ body.mappage {
padding-right: 0;
}
- .container {
- width: auto;
- }
-
.extra-text {
padding: 1em;
margin: 0 -1em;
@@ -226,10 +184,6 @@ body.mappage {
background-color: $oxfordshire_very_light_green;
}
-#side-inspect {
- background-color: #deead2;
-}
-
.item-list--reports h3 {
color: $oxfordshire_link_colour;
}
diff --git a/web/cobrands/sass/_admin.scss b/web/cobrands/sass/_admin.scss
index 58917a8ce..8a16b3f00 100644
--- a/web/cobrands/sass/_admin.scss
+++ b/web/cobrands/sass/_admin.scss
@@ -163,3 +163,41 @@ $button_bg_col: #a1a1a1; // also search bar (tables)
float: left;
}
}
+
+.js-metadata-items {
+ margin: 0;
+
+ li {
+ list-style: none;
+ position: relative;
+ }
+
+ .js-metadata-item:nth-child(odd) {
+ background-color: #eee;
+ }
+
+ .js-metadata-options {
+ li {
+ list-style: none;
+
+ label, input[type=text] {
+ display: inline-block;
+ margin: 0;
+ padding: 0.25em;
+ }
+
+ &:nth-child(even) {
+ background-color: #ddd;
+ }
+ &:nth-child(odd) {
+ background-color: #ccc;
+ }
+ }
+ }
+
+ .js-metadata-item-remove {
+ position: absolute;
+ top: 0.25em;
+ right: 0.25em;
+ }
+}
diff --git a/web/cobrands/sass/_autocomplete.scss b/web/cobrands/sass/_autocomplete.scss
new file mode 100644
index 000000000..deebc1803
--- /dev/null
+++ b/web/cobrands/sass/_autocomplete.scss
@@ -0,0 +1,139 @@
+.autocomplete__wrapper {
+ position: relative;
+}
+
+.autocomplete__hint,
+.autocomplete__input {
+ -webkit-appearance: none;
+ border: 2px solid;
+ border-radius: 0; /* Safari 10 on iOS adds implicit border rounding. */
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ margin-bottom: 0; /* BUG: Safari 10 on macOS seems to add an implicit margin. */
+ width: 100%;
+}
+
+.autocomplete__input {
+ background-color: transparent;
+ position: relative;
+}
+
+.autocomplete__hint {
+ color: #BFC1C3;
+ position: absolute;
+}
+
+.autocomplete__input--default{
+ padding: 4px;
+}
+
+.autocomplete__input--focused {
+ outline-offset: 0;
+ outline: 3px solid #ffbf47;
+}
+
+.autocomplete__input--show-all-values {
+ padding: 4px 34px 4px 4px;
+ cursor: pointer;
+}
+
+.autocomplete__dropdown-arrow-down{
+ z-index: -1;
+ display: inline-block;
+ position: absolute;
+ right: 8px;
+ width: 24px;
+ height: 24px;
+ top: 10px;
+}
+
+.autocomplete__menu {
+ background-color: #fff;
+ border: 2px solid #0B0C0C;
+ border-top: 0;
+ color: #34384B;
+ margin: 0;
+ max-height: 342px;
+ overflow-x: hidden;
+ padding: 0;
+ width: 100%;
+ width: calc(100% - 4px);
+}
+
+.autocomplete__menu--visible {
+ display: block;
+}
+
+.autocomplete__menu--hidden {
+ display: none;
+}
+
+.autocomplete__menu--overlay {
+ box-shadow: rgba(0, 0, 0, 0.256863) 0px 2px 6px;
+ left: 0;
+ position: absolute;
+ top: 100%;
+ z-index: 100;
+}
+
+.autocomplete__menu--inline {
+ position: relative;
+}
+
+.autocomplete__option {
+ border-bottom: solid #BFC1C3;
+ border-width: 1px 0;
+ cursor: pointer;
+ display: block;
+ position: relative;
+}
+
+.autocomplete__option > * {
+ pointer-events: none;
+}
+
+.autocomplete__option:first-of-type {
+ border-top-width: 0;
+}
+
+.autocomplete__option:last-of-type {
+ border-bottom-width: 0;
+}
+
+.autocomplete__option--odd {
+ background-color: #FAFAFA;
+}
+
+.autocomplete__option--focused,
+.autocomplete__option:hover {
+ background-color: #005EA5;
+ border-color: #005EA5;
+ color: white;
+ outline: none;
+}
+
+.autocomplete__option--no-results {
+ background-color: #FAFAFA;
+ color: #646b6f;
+ cursor: not-allowed;
+}
+
+/* mySociety changes below */
+
+.autocomplete__wrapper {
+ background-color: #fff; // Otherwise it has a yellow background
+}
+
+.autocomplete__hint {
+ padding: 0.5em; // Match base input padding
+}
+.autocomplete__option {
+ padding: 4px;
+ margin-bottom: 0; // Override base li margin
+ line-height: 1.25;
+}
+
+.js .js-autocomplete {
+ display: none;
+}
diff --git a/web/cobrands/sass/_base.scss b/web/cobrands/sass/_base.scss
index 54954023b..d02efe489 100644
--- a/web/cobrands/sass/_base.scss
+++ b/web/cobrands/sass/_base.scss
@@ -11,6 +11,10 @@ $itemlist_item_background_hover: #e6e6e6 !default;
$col_big_numbers: #ccc !default;
$form-control-border-color: #aaaaaa !default;
+$header-top-border-width: 0.25em !default;
+$header-top-border: $header-top-border-width solid $primary !default;
+
+$container-max-width: 60em !default;
@import "_mixins";
@import "_report_list";
@@ -46,12 +50,8 @@ h1 {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
-h1#reports_heading span {
- display: none;
-}
-h1#reports_heading a {
- display: block;
- font-size: 50%;
+h1#reports_heading {
+ margin-bottom: 0;
}
h2 {
@@ -294,6 +294,21 @@ select.form-control {
}
}
+.form-group {
+ position: relative;
+ max-width: 27em;
+}
+
+.required-text {
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.required-text--optional {
+ color: #666;
+}
+
.form-section-heading {
font-family: inherit;
color: inherit;
@@ -385,7 +400,7 @@ select.form-control {
}
.form-txt-submit-box {
- min-height:3em;
+ @include clearfix();
input[type=password],
input[type=text],
input[type=email] {
@@ -408,6 +423,7 @@ select.form-control {
.label-containing-checkbox {
padding-#{$left}: 24px;
position: relative;
+ margin-bottom: 0;
input {
position: absolute;
@@ -458,8 +474,10 @@ ul.error {
/*** LAYOUT ***/
// Padding creates page margins on mobile
-.container{
- padding: 0 1em 1em;
+.container {
+ margin: 0 auto;
+ padding: 0 1em;
+ max-width: $container-max-width;
}
// Use full width to reverse .container margins
@@ -468,62 +486,63 @@ ul.error {
}
// #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 linear-gradient(#000, #222 10%, #222 90%, #000);
- .container {
- min-height:4em;
+#site-header {
+ @if ($header-top-border) {
+ border-top: $header-top-border;
}
+ color: $nav_fg;
+ background-color: $map_nav_bg;
+ position: relative;
}
-#site-logo{
+
+#site-logo {
display: block;
width: 175px;
- height: 40px;
- top: 0.4em;
- #{$left}: 0.5em;
- background: url($image-sprite) -3px -3px no-repeat;
+ height: 60px;
+ background: url($image-sprite) -8px 5px no-repeat;
text-indent: -999999px;
- position: absolute;
- z-index:2;
}
// this is a skip to nav for mobile users only
#nav-link {
width: 3em;
- height: 3em; // same height as #site-header
+ height: 3em;
background: transparent url(../fixmystreet/images/#{$menu-image}.png) center center no-repeat;
background-image: inline-image("../fixmystreet/images/#{$menu-image}.svg"), none;
background-size: 22px 18px;
- display: block;
text-indent: -999999px;
- position: absolute;
#{$right}: 0;
- top: 0.25em; // same as border-top on #site-header
}
-// A shortcut to the Reporting page, in the mobile header
-#report-cta {
+#nav-link, #report-cta {
display: block;
position: absolute;
- top: (3em / 2); // half the height of #site-header
+ top: 50%;
+ transform: translateY(-50%);
+}
+
+// A shortcut to the Reporting page, in the mobile header
+#report-cta {
#{$right}: 3.5em;
- margin-top: -0.5em;
font-size: 0.9em;
line-height: 1em;
border: 1px solid #666;
- color: #fff;
+ color: $nav_fg;
padding: 0.4em;
border-radius: 0.3em;
&:hover, &:focus {
text-decoration: none;
- background-color: #444;
+ background-color: $nav_fg_hover;
}
}
+// The nav list has this sort of "full width" look,
+// so we want to cancel out the margin from .container
+#main-nav {
+ margin: 0 -1em;
+}
.nav-menu {
@include list-reset-soft;
@@ -544,37 +563,6 @@ ul.error {
background-color: #ccc;
}
}
-.nav-menu--mysoc {
- a {
- color: $primary_text;
- background-color: $primary;
- }
-}
-#mysoc-logo {
- background-origin: content-box;
- background-position: $left 3px;
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQAAAAYCAYAAAArrNkGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABBtJREFUaN7tmT2u1DAQx/cIPgBCQUJCICH5BuQIPkIq6hzBB0AyiAP4ABQ5ghtEm54mEtVrICUNkpmsJjBvdvyR1S7hPa2lv1aJs5PEP894xjkc/tMWY+xADhRQA8iC9I7PtD6PP9xa9aC1oCnmm9lpgtHW3WiVB03HuqYeA9DlPZbJuXj8o5wgGM5os+ixLb74MeTt+Hz+kiGXva99jEDjJV7w+5Pn3aIHNoEvB/Tu7s6iejzuQAEUQRPIgxT2KTwesX+5rkvYs7yP2KDXLN7XXCKkAUgHiii3MaQuideI9x/x2GB/gxFjVZMIoY6AmtBGJ+QJluUKgdheI1LpfveuoQMciTw7XrUAbEFzot8Re4GcnwWghv23Ezx0PiejBYiBAA0/Pz7VoOV3AKnEup1LwhyBQFsr2Jkzdjy51hZyBIuwaOuFZ6fPPaaA5jQX+hvi4fS8YUC9BBzXqJOB4INXAGpAM8oAxBEUUbYSQiCD1ZWACnZGhDJIUacGaBbY34ghAxfAdHheCxBHAs6yvp7YpP/zDOgk9WHIGhMvOZ5TrjCgfUUSptigqQqg1M7A7kHhTVvWUAF8Q/r6ZObPQy4bfMf62wycoeSFOEmoPS2sQ74mdFUC1RhuHQ25QonkKurjE6CCpzTC+9CmNwBNeiHz/oGvabnweG+9E9ZDul6GDDiD53tybsoMYIMJhhQSjy/28YVzoAgKoGRt+uvHMwUaQRHkS7N/I1AjhGuuGs+2ifsOPOwKk6TLAeUe2J4DFPtG7vnsnK3MQPngTwg0ErUZoC3CPEqyWbmDJQG1cVvbCpRPmIadm6Wy5VpAeXKkpCRqQ1F/DwBAnAlQnQHaEKDzlYGGgvQWoEJy1LOx8P8SqOLJEU2uNhbhvQC0AVn76n3/9vWHpIe++/Km/fxVL17aL3ATSYU5E2h77rbkBqA2kYFHsbS7FlAhOTrJpIXwkirYRynMAEgDiignwHSgiGozCceUg5EBqs5N2hhQX8gnpDaldoquCVQn6lmV2foLbJdkSmWkANESoNPLT98UyKMUgbnIFsqWGRMxQ0JbW1G2eCHsdmQferWlMwlPxHuLnwiFa9NefU2gQiJ0UholBixm6lGV8lAEGVFDykMr6l5e5OeA1tg5ASB8wcmVMEa4rtkLqM3VnqQuDJnBmHnhT6A2oKPNBSIFuq6hoCbzCatY91Zs/ZXspED5Ws+rDu0IbZUSEps//YmQuvbrCg8NFd8I1zBl8bd66w8galBA6Q3rmWKb3YZlpIqE0Da13pLrVjtd6flxMtP7qorvse1hjyYkRfs8yMP/8E83WMIeII2wdrobnk0gG6HOnUu7WteAqRKf39QN0yagTlhf9/lwz9fNG8yzgBrmmWa3h8Ftv0HaQLi1TYlaSGX3UvsNzdBKw+waoEEAAAAASUVORK5CYII=');
- background-repeat: no-repeat;
- text-indent: -999999px;
-}
-.ie7 #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;
- // The 'caption' at large widths will be top, moving the menu up magically
- caption-side: bottom;
- // This is so absolutely positioned header stuff doesn't overlap banner...
- position: relative;
-}
-// ...however position: relative stops the map being clickable (?), so better
-// revert it there
-body.mappage .wrapper {
- position: static;
-}
// #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 {
@@ -600,17 +588,21 @@ body.mappage .wrapper {
display: block;
background-color: #f5f5f5;
background-repeat: no-repeat;
- color:#333;
+ color: #333 !important;
padding:4em 2em 1em;
text-transform:uppercase;
font: {
size:0.6875em;
family: $meta-font;
+ weight: normal;
}
+ line-height: 1.2em;
+ white-space: normal;
+ border-radius: 0;
&:hover, &.hover {
text-decoration:none;
background-color:#333;
- color:#fff;
+ color: #fff !important;
}
&.abuse {
background-image: url($image-sprite);
@@ -694,7 +686,6 @@ footer {
p {
font-size: 0.75em;
padding-bottom: 0;
- border-bottom:1px solid #AFAFAF;
}
}
@@ -833,6 +824,12 @@ input.final-submit {
}
}
+.btn--provide-update {
+ display: block;
+ width: 100%;
+ margin-bottom: 1em;
+}
+
.btn--block {
display: block;
text-align: center;
@@ -844,6 +841,10 @@ input.final-submit {
text-align: center;
}
+.btn--small {
+ font-size: 0.8em;
+}
+
.js #js-social-email-hide {
display: none;
}
@@ -1190,6 +1191,21 @@ input.final-submit {
}
}
+// List of potential duplicate reports (or a single confirmed duplicate)
+// that appears in Inspector form, when closing a report as a duplicate.
+.item-list--inspect-duplicates {
+ border-bottom: none;
+
+ .item-list__item {
+ background-color: rgba(255, 255, 255, 0.5);
+ }
+
+ .item-list--reports__item--selected {
+ border: 0.25em solid $primary;
+ background-color: #fff;
+ }
+}
+
.item-list__heading {
font-size: 1em;
font-weight: normal;
@@ -1493,6 +1509,27 @@ html.js #map .noscript {
background-image:url($image-sprite);
background-position: flip(right, -341px) -4070px;
}
+ &#fms_shortlist_all {
+ padding: 0.6em 1em 0.5em 1em;
+ &:after {
+ content: "";
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ background-image: url(/cobrands/fixmystreet/images/map-marker.png);
+
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
+ background-image: url(/cobrands/fixmystreet/images/map-marker@2x.png);
+ }
+
+ @media all {
+ background-image: url(/cobrands/fixmystreet/images/map-marker.svg), none;
+ }
+ background-size: 16px 16px;
+ vertical-align: middle;
+ margin: flip(0 0 0 8px, 0 8px 0 0);
+ }
+ }
&.feed {
background-image:url($image-sprite);
background-position: flip(right, -341px) -3936px;
@@ -1723,14 +1760,11 @@ a:hover.rap-notes-trigger {
height: auto; // override `.mobile #map_box` height:10em
margin: 0;
z-index: 1; // stack above positioned elements later on the page (eg: .report-list-filters)
- }
-
- .container {
- padding: 0; // map_box needs to be full width, so remove page gutter
- }
- #map_sidebar {
- padding: 1em; // reinstate page gutter, but on sidebar, so map_box is unaffected
+ &.above-form {
+ position: relative;
+ margin: 0 -1em;
+ }
}
}
@@ -1823,6 +1857,18 @@ label .muted {
}
}
+// The coloured sidebar column on .with-actions pages.
+// On narrow screens, it becomes a full-width section.
+#side-inspect {
+ padding: 1em;
+ margin: 0 -1em;
+ background-color: #E9F2FF;
+}
+
+.inspect-form-heading {
+ margin-top: 0;
+}
+
.inspect-section {
border-top: 1px solid rgba(0, 0, 0, 0.2);
padding-top: 1.5em;
@@ -1838,6 +1884,10 @@ label .muted {
& > :first-child > :first-child {
margin-top: 0;
}
+ label {
+ display: inline-block;
+ margin-top: 0.25em;
+ }
}
.inspect-section--hidden {
@@ -2058,6 +2108,16 @@ table.nicetable {
}
}
+// Shown at bottom of homepage, among other places
+.footer-marketing {
+ text-align: center;
+ margin-top: 2em;
+
+ & > :last-child {
+ margin-bottom: 0;
+ }
+}
+
#alerts {
ul {
margin-bottom: 1em;
@@ -2070,6 +2130,8 @@ table.nicetable {
background: #f6f6f6;
}
img[width="16"] {
+ margin-top: 4px;
+ margin-left: 0.5em;
float: $right;
}
}
@@ -2094,6 +2156,29 @@ table.nicetable {
}
}
+.alerts__cta-box {
+ @extend .form-box;
+ background-color: mix($primary, #fff, 10%);
+ margin-top: 2em;
+ margin-bottom: 2em;
+
+ & > :first-child {
+ margin-top: 0;
+ }
+
+ .form-txt-submit-box {
+ max-width: 32em;
+ }
+}
+
+#rss_local_alt {
+ // Match .label-containing-checkbox
+ padding-left: 24px;
+
+ // Close up space between this and #rss_local
+ margin-top: -1em;
+}
+
.confirmation-header {
padding: 140px 0 2em;
text-align: center;
@@ -2224,7 +2309,7 @@ table.nicetable {
.segmented-control--radio {
input {
position: absolute;
- left: -999px;
+ opacity: 0;
}
input:checked + label {
@@ -2356,18 +2441,15 @@ table.nicetable {
margin-bottom: 0.5em;
}
- a {
- display: inline-block;
- margin-top: 0.5em;
- padding: 0.5em 1em;
- background-color: #000;
- color: #fff;
- border-radius: 0.3em;
-
- &:hover,
- &:focus {
- text-decoration: none;
- background-color: mix(#000, $primary, 70%);
+ .btn, .btn-primary {
+ margin: 0.5em 0 1em 0;
+
+ &:first-child {
+ margin-top: 0;
+ }
+
+ &:last-child {
+ margin-bottom: 0;
}
}
}
@@ -2388,3 +2470,5 @@ table.nicetable {
@import "_fixedthead";
@import "_dropzone";
@import "_multiselect";
+@import "_autocomplete";
+@import "_dashboard";
diff --git a/web/cobrands/sass/_dashboard.scss b/web/cobrands/sass/_dashboard.scss
new file mode 100644
index 000000000..aae8aa98b
--- /dev/null
+++ b/web/cobrands/sass/_dashboard.scss
@@ -0,0 +1,213 @@
+.dashboard-header {
+ background-color: $primary;
+ margin: 0 -1em;
+ padding: 1em;
+
+ @media (min-width: 48em) {
+ margin: -1em -1em 0 -1em;
+ padding: 2em;
+ }
+
+ h1 {
+ font-family: inherit;
+ font-weight: bold;
+ margin: 0;
+ }
+}
+
+.dashboard-row {
+ @include clearfix();
+ margin: 0 -1em;
+}
+
+.dashboard-item {
+ @include box-sizing(border-box);
+ padding: 1em;
+
+ @media (min-width: 48em) {
+ float: left;
+ padding: 2em;
+ }
+
+ h2 {
+ font-family: inherit;
+ margin-top: 0;
+ }
+}
+
+@media (min-width: 48em) {
+ .dashboard-item--12 {
+ width: 100%;
+ }
+
+ .dashboard-item--6 {
+ width: 50%;
+ }
+}
+
+.dashboard-subheading {
+ margin-top: 1em;
+ padding-bottom: 0.5em;
+ border-bottom: 1px solid #ddd;
+ margin-bottom: 1em;
+}
+
+.labelled-line-chart,
+.labelled-sparkline {
+ position: relative;
+ width: 100%;
+ line-height: 1.2em;
+
+ canvas {
+ width: 100% !important;
+ height: auto !important;
+ }
+
+ .label {
+ strong {
+ display: block;
+ font-size: 2em;
+ line-height: 1em;
+ margin-bottom: 0.1em;
+ font-weight: bold;
+ }
+ }
+}
+
+.labelled-line-chart {
+ @include box-sizing(border-box);
+
+ @media (min-width: 48em) {
+ padding-right: 20%;
+ }
+
+ .label {
+ float: left;
+ margin-right: 2em;
+ }
+}
+.js .labelled-line-chart .label {
+ @media (min-width: 48em) {
+ position: absolute;
+ margin-top: -1em;
+ margin-right: 0;
+ }
+}
+
+.labelled-sparkline {
+ .label {
+ strong {
+ margin-top: 0.3em;
+ }
+ }
+}
+
+.dashboard-sparklines {
+ margin: 0 -1em;
+
+ & > * {
+ @include box-sizing(border-box);
+ padding: 0 1em 1em 1em;
+ }
+
+ @media (min-width: 48em) {
+ @include clearfix();
+
+ & > * {
+ float: $left;
+ width: 33%;
+ }
+ }
+}
+
+.dashboard-search {
+ background-color: $primary;
+ margin: 0 -1em;
+ padding: 1em;
+
+ @include clearfix();
+
+ @media (min-width: 48em) {
+ margin: 0 -3em 0 0;
+ padding: 2em;
+ }
+
+ input[type="text"] {
+ margin-bottom: 0;
+ }
+
+ input[type="submit"] {
+ background: #000;
+ color: #fff;
+ text-transform: uppercase;
+ font-weight: bold;
+ font-family: inherit;
+ border-radius: 4px;
+ border: none;
+ }
+}
+
+.dashboard-search__input {
+ @include box-sizing(border-box);
+ width: 80%;
+ float: left;
+ padding-right: 1em;
+}
+
+.dashboard-search__submit {
+ width: 20%;
+ float: right;
+
+ input {
+ width: 100%;
+ font-size: 16px;
+ line-height: 18px;
+ padding: 10px 8px;
+ }
+}
+
+.dashboard-search #geolocate_link {
+ display: block;
+ color: inherit;
+
+ &:before {
+ content: "";
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ background: transparent url(/cobrands/fixmystreet/images/crosshairs.png) no-repeat 0 0;
+ background-size: 16px 16px;
+ margin-#{$right}: 0.5em;
+ vertical-align: -0.1em;
+
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
+ background-image: url(/cobrands/fixmystreet/images/crosshairs@2x.png);
+ }
+
+ @media all {
+ background-image: url(/cobrands/fixmystreet/images/crosshairs.svg), none;
+ }
+ }
+}
+
+.dashboard-ranking-table {
+ width: 100%;
+
+ td {
+ padding: 0.4em 0.8em;
+
+ &:last-child {
+ text-align: $right;
+ }
+ }
+
+ tbody tr:nth-child(odd) {
+ td {
+ background-color: mix($primary, #fff, 15%);
+ }
+ }
+
+ tfoot td {
+ font-weight: bold;
+ }
+}
diff --git a/web/cobrands/sass/_layout.scss b/web/cobrands/sass/_layout.scss
index 7e56d31bd..a0c27863e 100644
--- a/web/cobrands/sass/_layout.scss
+++ b/web/cobrands/sass/_layout.scss
@@ -2,17 +2,18 @@
$image-sprite: '../fixmystreet/images/sprite.png' !default;
$layout_front_stats_color: $primary !default;
-$mappage-header-height: 4em !default;
+$mappage-header-height: 4em !default; // eg: might want this to equal outer height of #site-header on normal pages
$mappage-sidebar-width: 29em;
$mappage-sidebar-padding: 1em;
-$mappage-with-notes-sidebar-width: 44em;
-$mappage-with-actions-sidebar-width: 58em;
+$mappage-notes-width: 15em;
+$mappage-actions-width: 25em;
+$mappage-sidebar-width--medium: 24em;
+$mappage-actions-width--medium: 20em;
+$header-top-border-width: 0.25em !default;
+$header-top-border: $header-top-border-width solid $primary !default;
.internal-link-fixed-header {
display: block;
- /* Roughly the height of .nav-wrapper-2 (mappage-header-height) plus the
- * border-top on .nav-wrapper-2 (4px), plus the padding-top on
- * .item-list__item (0.5em). */
@if unit($mappage-header-height) == 'em' {
padding-top: $mappage-header-height + 1em;
margin-top: -($mappage-header-height + 1em);
@@ -27,7 +28,8 @@ $mappage-with-actions-sidebar-width: 58em;
display: block;
}
.mob-only {
- display: none;
+ // Override `display: block` etc if other classes are defined
+ display: none !important ;
}
body {
@@ -46,80 +48,32 @@ h1 {
// Page wrapper and header bits follow
-.container{
- margin: 0 auto;
- padding: 0em;
- width: 60em;
- position: relative;
-}
-
-.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
-.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-width: 4px 0 0 0;
- z-index: 2;
- }
+.container {
+ position: relative;
}
-//position absolute the menu as ie doesn't like display:table
-.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;
- }
- }
+// Body sometimes has a .top_banner at the start, which we don't want to
+// cover up when we absolutely position the nav to the top of the body.
+// So make .wrapper into a new positioning context for the nav.
+.wrapper {
+ position: relative;
}
-// 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;
- // margin-top: 4px; <-- With this we compensate for 4px of content due to
- // .nav-wrapper-2's border-top, but misaligns e.g. FAQ page
- .container {
- position: static;//reset position so the nav links become clickable
- }
-
- .ie7 & {
- height: 3em;
- // Without this, the #site-logo is unclickable.
- // Something to do with broken z-index nesting in IE6-7.
- z-index: 2;
+#main-nav {
+ min-height: $mappage-header-height; // defaults to map header height; should be height of #site-header (eg: #site-logo + any vertical padding)
+ @include flex-container();
+ @include flex-align(center);
+ float: $right; // we could use justify-content here, but float degrades better for non-flexbox browsers
+ margin: 0;
+ @if ($header-top-border) {
+ margin-top: $header-top-border-width * -1; // visually compensate for border on #site-header
}
}
#site-logo {
- top: 0.9em;
- #{$left}: auto;
- position: absolute;
- z-index: 3;
+ // Bring #site-logo in front of .nav-wrapper (which has no z-index) so that it's clickable
+ position: relative;
+ z-index: 1;
}
#nav-link {
@@ -127,24 +81,27 @@ h1 {
#{$left}: -999999px;
}
-#report-cta {
+#report-cta,
+.nav-menu__item--privacy {
display: none;
}
-#main-nav {
- margin: 0 auto;
- padding: 0;
- width: 60em;
+.nav-wrapper {
+ position: absolute;
+ @if ($header-top-border) {
+ top: $header-top-border-width;
+ } @else {
+ top: 0;
+ }
+ left: 0;
+ right: 0;
}
+
.nav-menu {
float: $right;
li {
- display: inline;
float: $left;
}
- li.nav-menu__item--privacy {
- display: none;
- }
a, span {
display: block;
color: $nav_fg;
@@ -174,85 +131,38 @@ h1 {
color:$primary;
}
}
-.nav-menu--mysoc {
- padding: 0em 0.5em;
- margin-#{$left}: 0.25em;
- background-color: $primary;
- @include border-radius(0 0 0.375em 0.375em);
- a {
- background-color: transparent;
- color: $primary_text;
- text-transform: uppercase;
- font-size: 0.6875em;
- padding: 1.3em 0.7em 1em;
- &:hover {
- color: #fff;
- background-color: transparent;
- }
- }
-}
-#mysoc-logo {
- width:84px;
- height:16px;
- background-size: 100px auto;
- background-position: 50% 50%;
- opacity: 0.8;
- &:hover {
- opacity: 1;
- }
- // IE8 does not support background-size, so increase width to show whole image
- .ie8 & {
- width: 100px;
- }
-}
-.ie7 #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;
+ margin: 1em 0 0 0;
+ padding: 1em;
background: #fff;
color: #222;
}
-.iel8 {
- .content {
- //take off margins so we line up properly
- margin: 0 0.5em;
- }
-}
-
-.full-width {
- margin: 0 ($mappage-sidebar-padding * -1);
-}
// map page - has fixed header and different styling
body.mappage {
-
- .wrapper .table-cell,
- .nav-wrapper {
- // No need for the table-cell stuff now we're using absolute positioning
- display: block;
+ .wrapper {
+ position: static;
}
.container {
- width: auto;
+ max-width: none;
position: static;
}
.content {
- width: auto;
padding: 0;
margin: 0;
}
+ .full-width {
+ margin: 0 ($mappage-sidebar-padding * -1);
+ }
+
#site-header {
// With the exception of the #site-logo child, the rest of
- // #site-header gets entirely hidden behind .nav-wrapper-2
+ // #site-header gets entirely hidden behind the navigation
position: absolute;
z-index: auto;
top: 0;
@@ -261,49 +171,14 @@ body.mappage {
height: $mappage-header-height;
}
- #site-logo {
- #{$left}: 12px;
- // Also inherits...
- // `top: 0.9em`
- // `position: absolute`
- // `z-index: 3`
- // ...from the non-mappage version, above
- }
-
- #main-nav {
- width: auto;
- margin-#{$right}: 1em;
- }
-
- .nav-wrapper {
- .nav-wrapper-2 {
- position: absolute;
- z-index: auto;
- top: 0;
- left: 0;
- right: 0;
- background: $map_nav_bg;
-
- // Watch out! If the nav links break onto two lines, the header will
- // get taller, and overlap the top of #map_sidebar and #map_box.
- // (But at least the nav links will be legible.)
- min-height: $mappage-header-height;
-
- // Count the 4px border-top as part of the height (mappage-header-height)
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- }
- }
-
- .nav-menu--main a, .nav-menu--main span {
- padding: 1.4em 0.75em 1.35em;
- }
-
- .nav-menu--main a.report-a-problem-btn {
- padding: 0.5em;
- margin: 0.9em 0.25em 0.85em;
- }
+// .nav-menu--main a, .nav-menu--main span {
+// padding: 1.4em 0.75em 1.35em;
+// }
+//
+// .nav-menu--main a.report-a-problem-btn {
+// padding: 0.5em;
+// margin: 0.9em 0.25em 0.85em;
+// }
.banner {
p {
@@ -312,23 +187,6 @@ body.mappage {
}
}
-.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;
- }
- }
- }
-}
-
// Want to cover over the blue sidebar
body.mappage.admin {
.full-width--top {
@@ -353,11 +211,15 @@ body.mappage.admin {
margin: 0;
.with-notes & {
- #{$left}: $mappage-with-notes-sidebar-width;
+ #{$left}: $mappage-sidebar-width + $mappage-notes-width;
}
.with-actions & {
- #{$left}: $mappage-with-actions-sidebar-width;
+ #{$left}: $mappage-sidebar-width + $mappage-actions-width;
+
+ @media (max-width: 79em) {
+ #{$left}: $mappage-sidebar-width--medium + $mappage-actions-width--medium;
+ }
}
}
@@ -371,23 +233,27 @@ body.mappage.admin {
padding: $mappage-sidebar-padding;
overflow: auto; // vertical scrollbar when list is taller than window
background-color: #fff; // since no longer in the flow inside .content
- box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
.with-notes & {
- width: ($mappage-with-notes-sidebar-width - ($mappage-sidebar-padding * 2));
+ width: (($mappage-sidebar-width + $mappage-notes-width) - ($mappage-sidebar-padding * 2));
// TODO: Should have a bitmap image fallback for old browsers!!
background-image: -webkit-linear-gradient(flip(90deg, 270deg), transparent 29em, #E9F2FF 29em);
background-image: linear-gradient(flip(90deg, 270deg), transparent 29em, #E9F2FF 29em);
}
.with-actions & {
- width: $mappage-with-actions-sidebar-width;
+ width: $mappage-sidebar-width + $mappage-actions-width;
max-width: 100%; // Secondary column will squish on screens 768-960px
padding: 0; // Padding will be handled by children of .two_column_sidebar
&:after {
display: none; // 4em bottom spacing will be handled by children of .two_column_sidebar
}
+
+ @media (max-width: 79em) {
+ width: $mappage-sidebar-width--medium + $mappage-actions-width--medium;
+ }
}
// Chrome/Safari count padding-bottom as part of the scrollable content in
@@ -435,13 +301,27 @@ body.mappage.admin {
#side-report {
width: $mappage-sidebar-width;
@include flex(0 0 auto);
+
+ @media (max-width: 79em) {
+ width: $mappage-sidebar-width--medium;
+ }
+ }
+
+ // Line up edge of .shadow-wrap with edge of #side-report
+ .shadow-wrap {
+ width: $mappage-sidebar-width;
+
+ @media (max-width: 79em) {
+ width: $mappage-sidebar-width--medium;
+ }
}
- // No flexbox in IE8, so we settle for floating the columns instead.
+ // No flexbox in IE8-9, so we settle for floating the columns instead.
// They will no longer stretch the full height of the sidebar, and the
// width of #side-report will no longer match the width of .shadow-wrap
// when a scrollbar is present.
- .iel8 & {
+ .iel8 &,
+ .ie9 & {
@include clearfix();
& > * {
@@ -494,20 +374,10 @@ body.mappage.admin {
}
}
-
-// full width page
-body.fullwidthpage {
- .content {
- width: auto;
- }
-}
-
body.twothirdswidthpage,
body.fullwidthpage {
.container {
.content {
- padding: 1em;
- margin-bottom: 0em;
footer {
margin-top: 0em;
margin-bottom: -1em;
@@ -562,7 +432,7 @@ body.fullwidthpage {
// two thirds width page, also has option for a sidebar which can be sticky or not
body.twothirdswidthpage {
- .container {
+ #site-header + .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.
@@ -597,16 +467,26 @@ body.twothirdswidthpage {
}
}
}
+
+ @media (max-width: 61em) {
+ // make twothirdswidthpage nearly as small as main
+ // .content: just enough to still fit the sidebar in
+ .content {
+ width:30em;
+ .sticky-sidebar {
+ #{$left}: 32em;
+ }
+ }
+ }
}
// Centre the login and password change pages,
// but keep them narrow to match the report sidebar
body.authpage {
.content {
+ width: 27em;
margin-#{$left}: auto;
margin-#{$right}: auto;
- margin-bottom: 0;
- padding: 1em; // same as .twothirdswidthpage .content
}
}
@@ -623,7 +503,6 @@ body.authpage {
width:50%;
}
.full-width {
- width:auto;
margin:0;
}
}
@@ -650,6 +529,11 @@ body.authpage {
border-top:0.25em solid $primary;
}
+// Shown at bottom of homepage, among other places
+.footer-marketing {
+ width: 100%;
+}
+
//footer blocks
#footer-mobileapps {
border-#{$right}: 1em solid transparent;
@@ -776,6 +660,7 @@ body.authpage {
border:none;
a, input[type=submit] {
font-size: 0.75em;
+ line-height: 18px; // match `body`
color:#666;
padding: flip(0.5em 1.5em 0.5em 0, 0.5em 0 0.5em 1.5em);
text-transform:none;
@@ -943,7 +828,11 @@ textarea.form-error {
// The coloured sidebar column on .with-actions pages.
#side-inspect {
- background-color: #E9F2FF;
+ margin: 0;
+}
+
+.inspect-form-heading {
+ display: none;
}
// More general notes
@@ -953,46 +842,6 @@ textarea.form-error {
// 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;
- }
-}
-//logo fix
-.iel8 {
- body.frontpage {
- #site-logo {
- position:relative;
- width:60em;
- margin:0 auto;
- }
- }
-}
-.ie7 {
- body.frontpage {
- #site-header {
- height:4em;
- }
- #site-logo {
- top:-1em;
- }
- }
-}
-
// big yellow bit full screen width
#front-main {
color: $primary_text;
@@ -1111,6 +960,15 @@ body.frontpage {
}
}
+.alerts__columns {
+ @include clearfix;
+ @include flex-container();
+ > div {
+ width: 50%;
+ margin: 0 2em;
+ }
+}
+
.confirmation-header {
width: 25em;
margin: 0 auto 1em;
@@ -1125,44 +983,3 @@ body.frontpage {
float: $right;
width: 25%;
}
-
-/* MEDIA QUERIES */
-@media only screen and (min-width: 48em) and (max-width: 61em) {
- .container {
- width: 100%;
- }
-
- // 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;
- }
-
- #mysoc-logo {
- width: 16px;
- // Just the mySociety circle logo
- background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABJ9JREFUeNqsVXlMHFUYf/Pe7O7M7E2Xw6UFWg5LQ1GTosa0IT00wYbGaKoltWnaRGNrjIptiUalXqlJU9RU0fSPHtqCR20pliBpQpAmxQgoLDeLQIEuh2WBndmDnZn3fMvRsqEGVv0mv3lzvPd97/u97wBgmXLUbHvOFZ/cJK1KbTtmiX4F/J+ySzBuDiakeSdWphA3RSAhTX3NaN2znLVwyQkMA/YbzAcwAAIFIBSYELjPYH6Zpf9CwrEMeGS1zhalh2zEBkIq2NCdkDvfyOxCRqHfnnpIWN9caK+5URDX2VJob8zfZsqJyIBKlVzweU7pIMIC3TFHIUAISkSx2GKE2uK8qNK0ODZbVsgKuwllnthp/S4rUZs0vx4th0dHcLp3FCv1VogEL8G9Jz2THx4Tx79+Yh23/oVs4zuBwKx3CuWQ5aHO5VYba7oDDjDj/TJEpSgWJytD0FAP5Dm6PD4ySZmSIUM0+C6DoGdUdkXkwULBC56HJtRJuxFpsu7nsll60CwHQY3D/8PRq1NFQZXg+TP8TwKphhc3GXPS4zWP9tySm07XSZe9MgkLEpCuX5uZZdqQBwEM1nsaStq87V3/xtjGTVzKB29bj0RZkK2s3PvTJ59PnWG2Rm3esTP2mW80gDUByq+CFffJoS+2tkrtTZEoz80R1pVfjrsBEGMGCvWAQ+DsV5MFcLstp0jFqsmH/cCn+qjLMGqLdcvrcOkIDpO9eYY9QMuYVRED1U8A8Sjg6Vz9AahH+mi84OhCzwISbAwT8fFoFr6EjlgvMAh2eDtP85AP7XwGHORAi9R6USVqRNrPlUqlIEgCSM8ApGMAtCBw/nvpLGqR2qoFxIMYbUwCJvh2tbv6oyt/lX8Z6fa7e+Thdsd0bdpa7QqvF49UlPmKXz0y/vEdHqyshaeDH2lNNoPGmhlUfQMuydmzHOX2VENMTKKQ0OMQu6Qxv8hqaLDMhWoY0VlxuXkPx24vZhhooa/elts1hddvfXsCE/yPyrftTdj15ME1n3J6FOsTlbFrZwbeqDrVdz4sD0Ji41fan019q1MF2Ego/wy9NIjDl5zHM1xeZ8e9lMenGuIPl2zoIIAxqjIGiO4cIeg/vrs+fbBDvBlWi3RISKF5YCQYz5XkGRchx+rT6djBpzyYaM3Zl0ftaqd++fGSt7m2NTqBT9dwyOgXldmaRWnRcgyflGnKWGTAr0hOTFQPjSQTHWciihCCJd9IM/fAxuTV712shTreHppreXz3of739+dMDFW1E0wUBjIsHQGt4gDT8BtsF52L+oE74BquH7l6kFIzoYE6agBJv49V5o/JI39G5750mNFydlWaAiHQOca45/Pfvdk17bp2ur+AM6CAYGKBlkdyQ+Xom4OdYve83rBy3Tj284U+T/N1njUmBVTf0Lh/qBdABDQ2+31Elu8mkaoAyAsxgHbIK5/1FnX9NlmVmGFa0/vHVL+zYaJloc5F/cAdGB4AIIT51FaBWFdRps94bIciB2ZaJ+T1wNf2azmYS8bOOndbCPcKhGX1g0BfqwPpzUS3Ki0ZanVeT13FuZHiQ4UkOK0stfZvAQYA/wr53nPx8cUAAAAASUVORK5CYII=);
- background-size: auto;
- }
-
- //Revert to mobile use of the .full-width class
- .full-width{
- width: auto;
- margin: 0em -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;
- }
- }
- }
-}
diff --git a/web/cobrands/sass/_mixins.scss b/web/cobrands/sass/_mixins.scss
index 8b6114aec..08e36e86a 100644
--- a/web/cobrands/sass/_mixins.scss
+++ b/web/cobrands/sass/_mixins.scss
@@ -172,6 +172,40 @@ $right: right;
align-items: $alignment;
}
+@mixin flex-direction($direction) {
+ @if ($direction == column) {
+ -webkit-box-orient: vertical;
+ } @elseif ($direction == row) {
+ -webkit-box-orient: horizontal;
+ }
+ -moz-flex-direction: $direction;
+ -ms-flex-direction: $direction;
+ -webkit-flex-direction: $direction;
+ flex-direction: $direction;
+}
+
+@mixin justify-content($alignment) {
+ -webkit-justify-content: $alignment;
+ -moz-justify-content: $alignment;
+ -ms-justify-content: $alignment;
+ justify-content: $alignment;
+}
+
+@mixin flex-order($order) {
+ // 2009 syntax
+ -webkit-box-ordinal-group: $order;
+ -moz-box-ordinal-group: $order;
+
+ // 2011 syntax https://www.w3.org/TR/2012/WD-css3-flexbox-20120322/#flex-order
+ -ms-flex-order: $order;
+ flex-order: $order;
+
+ // Modern syntax
+ -webkit-order: $order;
+ -ms-order: $order;
+ order: $order;
+}
+
@mixin high-dpi-background-image($path) {
background-image: url("#{$path}.png");
diff --git a/web/cobrands/sass/_report_list_pins.scss b/web/cobrands/sass/_report_list_pins.scss
index 3dae2cf84..55ef1cf56 100644
--- a/web/cobrands/sass/_report_list_pins.scss
+++ b/web/cobrands/sass/_report_list_pins.scss
@@ -1,24 +1,30 @@
+$pin_prefix: '/i/' !default;
+
// Like .item-list__item--indented except with a pin icon baked in!
.item-list__item--with-pin {
@extend .item-list__item--indented;
a {
- background-image: url(/i/pin-yellow-small.png);
+ background-image: url('#{$pin_prefix}pin-yellow-small.png');
+ background-size: 24px 32px;
background-repeat: no-repeat;
background-position: $left center;
}
&.yellow a {
- background-image: url(/i/pin-yellow-small.png);
+ background-image: url('#{$pin_prefix}pin-yellow-small.png');
}
&.green a {
- background-image: url(/i/pin-green-small.png);
+ background-image: url('#{$pin_prefix}pin-green-small.png');
}
&.red a {
- background-image: url(/i/pin-red-small.png);
+ background-image: url('#{$pin_prefix}pin-red-small.png');
}
&.grey a {
- background-image: url(/i/pin-grey-small.png);
+ background-image: url('#{$pin_prefix}pin-grey-small.png');
+ }
+ &.orange a {
+ background-image: url('#{$pin_prefix}pin-orange-small.png');
}
}
.item-list--reports__item--selected {
diff --git a/web/cobrands/stevenage/_colours.scss b/web/cobrands/stevenage/_colours.scss
index 62514b8f3..42718421a 100644
--- a/web/cobrands/stevenage/_colours.scss
+++ b/web/cobrands/stevenage/_colours.scss
@@ -9,10 +9,12 @@ $primary_text: #fff;
$base_bg: #dddddb;
$base_fg: #222;
-$map_nav_bg: #6b6969;
+$map_nav_bg: #eee;
$nav_fg: #fff;
$nav_fg_hover: #444;
$col_click_map: #00BD08;
$col_fixed_label: #00BD08;
$col_fixed_label_dark: #4B8304;
+
+$container-max-width: 984px; // to match Stevenage header width
diff --git a/web/cobrands/stevenage/base.scss b/web/cobrands/stevenage/base.scss
index 2bccdc377..0eec2be99 100644
--- a/web/cobrands/stevenage/base.scss
+++ b/web/cobrands/stevenage/base.scss
@@ -8,39 +8,22 @@ $heading-font: 'PTSansCaptionRegular', "PT Sans Caption", Verdana, Arial, sans-s
@import "../sass/base";
-#site-header {
- background: #eee;
- height: 4em;
- margin-bottom: 1em;
-
- .container {
- min-height: 0;
- }
-}
-
#site-logo {
background: transparent;
width: 82px;
height: 45px;
text-indent: 0;
- top: 0.6em;
- left: 0.9em;
+ padding: 0.5em 0;
}
#report-cta {
border-color: #ccc;
color: #000;
- top: 2em;
-
&:hover, &:focus {
background-color: #ddd;
}
}
-#nav-link {
- top: 0.75em;
-}
-
@import "council_header";
@import "council_header_responsive";
diff --git a/web/cobrands/stevenage/layout.scss b/web/cobrands/stevenage/layout.scss
index 55d0cb6b6..93ab23268 100644
--- a/web/cobrands/stevenage/layout.scss
+++ b/web/cobrands/stevenage/layout.scss
@@ -1,13 +1,23 @@
@import "colours";
@import "../sass/layout";
-// d523b431
-.nav-wrapper{
- .nav-wrapper-2{
+.wrapper {
+ display: table;
+ width: 100%;
+}
+.table-cell {
+ display: table-cell;
+}
+.table-caption {
+ display: table-caption;
+}
+
+#site-header {
+ display: none;
+}
+
+.nav-wrapper {
position: static;
- min-height: 0;
- // e7c122a4 / 0b0a619b / - "Removed mySociety menu and positioned menu"
- border-top: none;
padding-top: 0.5em;
padding-bottom: 0.25em;
background-color: #6b6969;
@@ -16,7 +26,12 @@
.iel8 & {
background-color: #6b6969;
}
- }
+}
+
+#main-nav {
+ min-height: 0;
+ margin-top: 0;
+ float: none;
}
// We use absolute positioning for the header on IE7,
@@ -39,15 +54,6 @@
}
}
-#main-nav {
- @include clearfix;
- width: auto;
- max-width: 984px; // match the Stevenage header width
- float: none;
- padding-left: 0;
-}
-
-
.nav-menu {
float: none;
}
@@ -96,26 +102,12 @@ body.twothirdswidthpage {
}
// d523b431
-body.frontpage {
- .nav-wrapper-2 {
- height: auto;
- }
- #site-header {
- height: auto;
- }
-}
-
-#site-header {
- display: none;
-}
-
-// d523b431
#front-main {
background: #fff;
color: #222;
margin: 0 auto;
margin-top: 1.5em;
- max-width: 60em;
+ max-width: $container-max-width;
}
// Front page button colour
@@ -133,52 +125,26 @@ body.frontpage {
}
}
-@media only screen and (min-width: 48em) and (max-width: 61em) {
- // f432a72d - moved sticky sidebars down a bit to account for the larger header
- body.twothirdswidthpage {
- .content {
- .sticky-sidebar {
- aside {
- top: 19em;
- }
- }
- }
- }
-}
-
body.mappage {
#site-header {
// We use the obscured #site-header to push the
// content sidebar down beyond .nav-wrapper-2
- height: 3em;
+ height: 4em;
display: block;
+ border-top: none;
}
- // Over-specific selector required to trump _layout.scss
- .nav-wrapper .nav-wrapper-2 {
+ .nav-wrapper {
position: absolute;
top: 0;
padding: 0;
background: #fff url("http://www.stevenage.gov.uk/Images/headerBG.jpg") repeat-x bottom left;
}
- #site-logo {
- position: absolute;
- top: 0.5em;
- }
-
+ // Override the defaults, above
#main-nav {
float: right;
- margin-right: 1em;
- margin-top: 1em;
- }
-
- // again, !important to override _layout.scss
- .nav-menu--main a,
- .nav-menu--main span,
- .report-a-problem-btn {
- padding: 0.5em 0.75em 0.4em 0.75em !important;
- margin: 0 !important;
+ min-height: $mappage-header-height;
}
.nav-menu a {
diff --git a/web/cobrands/warwickshire/_colours.scss b/web/cobrands/warwickshire/_colours.scss
index 473d8cb03..8c2c41406 100644
--- a/web/cobrands/warwickshire/_colours.scss
+++ b/web/cobrands/warwickshire/_colours.scss
@@ -9,7 +9,7 @@ $primary_text: #222222;
$base_bg: #F9FFF8;
$base_fg: #000;
-$map_nav_bg: $green;
+$map_nav_bg: #fff;
$nav_fg: #000;
$nav_fg_hover: $primary;
diff --git a/web/cobrands/warwickshire/base.scss b/web/cobrands/warwickshire/base.scss
index 0dcd85f53..eeefc0d80 100644
--- a/web/cobrands/warwickshire/base.scss
+++ b/web/cobrands/warwickshire/base.scss
@@ -39,17 +39,10 @@ body {
}
#site-header {
- height: auto;
- background: white;
-
nav ul li, ul.nav li {
list-style: none;
margin-bottom: 0;
}
-
- .container {
- min-height: 0;
- }
}
body.mappage > div.container {
@@ -114,17 +107,9 @@ body.mappage > div.container {
display: block;
}
-@media (max-width: 978px) {
- .navbar-container {
- padding: 0;
- margin: 0;
- }
-}
-
-// Lifted from bootstrap-responsive.css, no idea why this
-// media query has a different pixel size to the one above...
@media (max-width: 979px) {
.navbar-fixed-top .navbar-inner {
- padding: 0 5px;
+ padding-top: 0;
+ padding-bottom: 0;
}
}
diff --git a/web/cobrands/warwickshire/layout.scss b/web/cobrands/warwickshire/layout.scss
index 177d5773e..0415d1f2a 100644
--- a/web/cobrands/warwickshire/layout.scss
+++ b/web/cobrands/warwickshire/layout.scss
@@ -3,21 +3,13 @@ $mappage-header-height: 41px + 100px + 37px; // .navbar-inverse + #top-header +
@import "_colours";
@import "../sass/layout";
-
#site-header {
- position: relative;
+ border-top: none;
.navbar {
margin-bottom: 0;
}
}
-// Needs to be within body.frontpage to override an existing rule in _layout.scss
-body.frontpage {
- #site-header {
- height: auto;
- }
-}
-
body.mappage {
footer, .footer-container, #footer-container, #footer-logos-bottom {
display: none;
@@ -27,10 +19,6 @@ body.mappage {
display: none;
}
- .navbar-container {
- width: auto !important; // 100% width for the FMS nav links container ONLY
- }
-
#site-header .navbar {
margin-top: 0; // remove space between FMS nav links and green header
}
@@ -41,10 +29,6 @@ body.mappage {
}
}
-.content {
- margin-bottom: 0;
-}
-
body.twothirdswidthpage .content .sticky-sidebar {
z-index: 0;
@@ -57,59 +41,24 @@ body.twothirdswidthpage .content .sticky-sidebar {
background: $base_bg;
}
+#top-header {
+ [class*="span"] {
+ margin-left: 2%;
+ }
-// These bits are taken from Warwickshire's CSS to override default FMS styles
-// The 'body.mappage .container' selector has been added to each so it takes precedent over
-// default FMS style.
-
-// http://www.warwickshire.gov.uk/wp-content/themes/gamma/style.css
-.container {
- width: 940px;
-}
-
-.navbar .container {
- width: auto;
-}
-
-.navbar-static-top .container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container,
-body.mappage .container {
- width: 940px;
-}
-
-// http://www.warwickshire.gov.uk/wp-content/themes/gamma/bootstrap-responsive.css
-@media (min-width: 1200px) {
- .container,
- .navbar-static-top .container,
- .navbar-fixed-top .container,
- .navbar-fixed-bottom .container,
- body.mappage .container {
- width: 1170px;
+ .span12 {
+ width: 98%;
}
-}
-@media (min-width: 768px) and (max-width: 979px) {
- .container,
- .navbar-static-top .container,
- .navbar-fixed-top .container,
- .navbar-fixed-bottom .container,
- body.mappage .container {
- width: 724px;
- }
- }
+ .span3 {
+ width: 23%;
+ }
-@media (max-width: 767px) {
- .container,
- body.mappage .container {
- width: auto;
- }
+ .span9 {
+ width: 73%;
+ }
}
-@media (max-width: 979px) {
- .navbar .container,
- body.mappage .container {
- width: auto;
- padding: 0;
- }
-}
+#site-search.navbar-form input {
+ width: 16em;
+} \ No newline at end of file
diff --git a/web/cobrands/warwickshire/gamma/bootstrap-responsive.css b/web/cobrands/warwickshire/vendor/gamma/bootstrap-responsive.css
index 2dbc61a6e..2dbc61a6e 100644
--- a/web/cobrands/warwickshire/gamma/bootstrap-responsive.css
+++ b/web/cobrands/warwickshire/vendor/gamma/bootstrap-responsive.css
diff --git a/web/cobrands/warwickshire/gamma/bootstrap.min.js b/web/cobrands/warwickshire/vendor/gamma/bootstrap.min.js
index 6eeb15ce3..6eeb15ce3 100644
--- a/web/cobrands/warwickshire/gamma/bootstrap.min.js
+++ b/web/cobrands/warwickshire/vendor/gamma/bootstrap.min.js
diff --git a/web/cobrands/warwickshire/gamma/images/favicon.ico b/web/cobrands/warwickshire/vendor/gamma/images/favicon.ico
index 53e51b914..53e51b914 100644
--- a/web/cobrands/warwickshire/gamma/images/favicon.ico
+++ b/web/cobrands/warwickshire/vendor/gamma/images/favicon.ico
Binary files differ
diff --git a/web/cobrands/warwickshire/gamma/images/icon-flickr.png b/web/cobrands/warwickshire/vendor/gamma/images/icon-flickr.png
index c12efcb1f..c12efcb1f 100644
--- a/web/cobrands/warwickshire/gamma/images/icon-flickr.png
+++ b/web/cobrands/warwickshire/vendor/gamma/images/icon-flickr.png
Binary files differ
diff --git a/web/cobrands/warwickshire/gamma/images/icon-twitter.png b/web/cobrands/warwickshire/vendor/gamma/images/icon-twitter.png
index 97efce7b9..97efce7b9 100644
--- a/web/cobrands/warwickshire/gamma/images/icon-twitter.png
+++ b/web/cobrands/warwickshire/vendor/gamma/images/icon-twitter.png
Binary files differ
diff --git a/web/cobrands/warwickshire/gamma/images/icon-youtube.png b/web/cobrands/warwickshire/vendor/gamma/images/icon-youtube.png
index 8b6a51dba..8b6a51dba 100644
--- a/web/cobrands/warwickshire/gamma/images/icon-youtube.png
+++ b/web/cobrands/warwickshire/vendor/gamma/images/icon-youtube.png
Binary files differ
diff --git a/web/cobrands/warwickshire/gamma/jquery-1.9.0.min.js b/web/cobrands/warwickshire/vendor/gamma/jquery-1.9.0.min.js
index a0ca38eae..a0ca38eae 100644
--- a/web/cobrands/warwickshire/gamma/jquery-1.9.0.min.js
+++ b/web/cobrands/warwickshire/vendor/gamma/jquery-1.9.0.min.js
diff --git a/web/cobrands/warwickshire/gamma/main.js b/web/cobrands/warwickshire/vendor/gamma/main.js
index a80e0e847..a80e0e847 100644
--- a/web/cobrands/warwickshire/gamma/main.js
+++ b/web/cobrands/warwickshire/vendor/gamma/main.js
diff --git a/web/cobrands/warwickshire/gamma/modernizr-2.6.2-respond-1.1.0.min.js b/web/cobrands/warwickshire/vendor/gamma/modernizr-2.6.2-respond-1.1.0.min.js
index 302f461e0..302f461e0 100644
--- a/web/cobrands/warwickshire/gamma/modernizr-2.6.2-respond-1.1.0.min.js
+++ b/web/cobrands/warwickshire/vendor/gamma/modernizr-2.6.2-respond-1.1.0.min.js
diff --git a/web/cobrands/warwickshire/gamma/style.css b/web/cobrands/warwickshire/vendor/gamma/style.css
index 99e4d47e5..99e4d47e5 100644
--- a/web/cobrands/warwickshire/gamma/style.css
+++ b/web/cobrands/warwickshire/vendor/gamma/style.css
diff --git a/web/cobrands/whitelabel/_colours.scss b/web/cobrands/whitelabel/_colours.scss
new file mode 100644
index 000000000..1392663d5
--- /dev/null
+++ b/web/cobrands/whitelabel/_colours.scss
@@ -0,0 +1,30 @@
+/* LAYOUT */
+
+// If you are wanting a right-to-left layout, uncomment the following line.
+// $direction: right;
+
+/* COLOURS */
+
+$primary: gray;
+$primary_b: #000000;
+$primary_text: #222222;
+
+$base_bg: white;
+$base_fg: #000;
+
+$map_nav_bg: #eee;
+$nav_fg: #000;
+$nav_fg_hover: $primary;
+
+// Colour used for front page 'how to report a problem' steps
+$col_big_numbers: #ccc;
+
+$col_click_map: gray;
+
+$col_fixed_label: #00BD08;
+$col_fixed_label_dark: #4B8304;
+
+$menu-image: 'menu-black';
+
+$front_main_background: white;
+// $header-top-border: false;
diff --git a/web/cobrands/whitelabel/base.scss b/web/cobrands/whitelabel/base.scss
new file mode 100644
index 000000000..4f953084e
--- /dev/null
+++ b/web/cobrands/whitelabel/base.scss
@@ -0,0 +1,4 @@
+@import "../sass/h5bp";
+@import "./_colours";
+@import "../sass/mixins";
+@import "../sass/base";
diff --git a/web/cobrands/whitelabel/layout.scss b/web/cobrands/whitelabel/layout.scss
new file mode 100644
index 000000000..9c58b471d
--- /dev/null
+++ b/web/cobrands/whitelabel/layout.scss
@@ -0,0 +1,14 @@
+@import "_colours";
+@import "../sass/layout";
+
+.big-green-banner {
+ text-transform: none;
+}
+
+.nav-menu--main a.report-a-problem-btn {
+ color: white;
+}
+
+#front-main {
+ background-color: $front_main_background;
+}
diff --git a/web/cobrands/zurich/_colours.scss b/web/cobrands/zurich/_colours.scss
index d05be2102..3bdbd7447 100644
--- a/web/cobrands/zurich/_colours.scss
+++ b/web/cobrands/zurich/_colours.scss
@@ -10,7 +10,7 @@ $primary_text: #fff;
$base_bg: #fff;
$base_fg: #3c3c3c;
-$map_nav_bg: #fff;
+$map_nav_bg: #366AB6;
/* Unused here, main-nav is mobile only */
$nav_fg: $primary_text;
$nav_fg_hover: $primary/1.1;
@@ -23,3 +23,4 @@ $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
+$header-top-border: solid 0.25em $mobile_menu_tab_bg_col;
diff --git a/web/cobrands/zurich/_zurich.scss b/web/cobrands/zurich/_zurich.scss
index 746da4ece..e4ff44220 100644
--- a/web/cobrands/zurich/_zurich.scss
+++ b/web/cobrands/zurich/_zurich.scss
@@ -8,12 +8,6 @@ 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%;
@@ -22,7 +16,7 @@ body.frontpage #zurich-footer-wrapper {
background-image: url(bg_mainnav_portal.png);
background-repeat: repeat-x;
border: 1px solid #d8d8d8;
- width: 953px;
+ max-width: 953px;
padding: 3px 10px;
margin-bottom: 24px;
height: 1.5em
diff --git a/web/cobrands/zurich/base.scss b/web/cobrands/zurich/base.scss
index 0308f5b43..3b13a93cf 100644
--- a/web/cobrands/zurich/base.scss
+++ b/web/cobrands/zurich/base.scss
@@ -50,17 +50,14 @@
}
}
-#site-header {
- background: $mobile_header_blue;
- border-top: 4px solid $mobile_menu_tab_bg_col;
- height: 48px;
+#site-logo-text {
+ display: none;
}
#site-logo {
background: url(logo_portal.jpg) 0px -24px no-repeat;
width: 200px;
height: 48px;
- left:0;
- top:4px;
+ margin-left: -1em;
}
#front-howto #front_stats,
#front-main #postcodeForm {
diff --git a/web/cobrands/zurich/layout.scss b/web/cobrands/zurich/layout.scss
index fc61aabbd..a5e6735d7 100644
--- a/web/cobrands/zurich/layout.scss
+++ b/web/cobrands/zurich/layout.scss
@@ -11,62 +11,40 @@ $mappage-header-height: 7em;
color: #3c3c3c;
}
-// Front page content needs a shadow.
-// (Purely decorative: No need for border fallback for IE8)
-body.frontpage .content {
- @include box-shadow(0 0 6px 1px #000);
-}
-// The header on a map page needs a shadow too
-body.mappage .nav-wrapper .nav-wrapper-2 {
- @include box-shadow(0 0 6px 1px #000);
- z-index: 2; // One more than #zurich-main-nav so it's on top
-}
-// 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
-}
+#site-header {
+ background-color: #fff;
+ border-top: none;
+ margin-bottom: 2em;
-// 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
- }
+ .container {
+ background: #fff url(logo_portal.x.jpg) top left repeat-x;
+ padding: 0;
}
+}
+body.mappage {
#site-header {
- height: 117px;
- background-color: #fff;
+ // The header on a map page needs a shadow too
@include box-shadow(0 0 6px 1px #000);
+ z-index: 2; // One more than #zurich-main-nav so it's on top
+ .container {
+ margin: 0 1em; // White padding left/right
+ }
+ }
+ // Except on admin pages where there's an admin nav directly underneath it
+ &.admin #site-header {
+ @include box-shadow(none);
}
}
#site-logo-text {
+ display: inline;
position: absolute;
top: 0;
z-index: 3;
@@ -76,43 +54,73 @@ body.frontpage {
font-size: 85%;
}
body.mappage #site-logo-text {
- position: fixed;
+ padding-left: 0;
+}
+
+#site-logo {
+ width: 415px;
+ height: 83px;
+ background-position: top left;
+ margin-left: 0;
+}
+
+body.mappage #site-logo {
+ margin-left: 0;
}
.nav-wrapper {
- .nav-wrapper-2 {
- border-top: none;
- }
- .nav-wrapper-3 {
- height: 6em; // rough figure, enough to show the blue band, but less than .nav-wrapper-2 height
- padding-top: 18px;
+ top: 18px;
+}
+
+#main-nav {
+ margin-top: 0;
+ display: block; // Stop the default 'flex'
+ body.mappage & {
+ // As header gets a z-index above for the shadow
+ // Otherwise this would be invisible underneath
+ z-index: 2;
+ position: relative;
}
}
-body.mappage {
- .nav-wrapper {
- .nav-wrapper-2 {
- border-top: none;
- padding: 0 10px;
- box-sizing: border-box;
+// Static map on front page
+body.frontpage {
+ // Front page content needs a shadow.
+ // (Purely decorative: No need for border fallback for IE8)
+ .content {
+ @include box-shadow(0 0 6px 1px #000);
+ }
+
+ .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
}
}
- /* 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 {
- background: #fff url(logo_portal.x.jpg) top left repeat-x;
+
+ #site-header {
+ @include box-shadow(0 0 6px 1px #000);
+ height: 117px;
}
- .content {
- margin-top: 1em;
+
+ #zurich-footer-wrapper {
+ padding: 1px 0;
+ @include box-shadow(0 -6px 6px -5px #000);
+ position: relative;
}
}
// Logged in notice in footer (appearing in header)
-.nav-wrapper-2 p:first-child {
+.nav-wrapper p:first-child {
font-weight: bold;
margin-top: 0.75em;
}
-.nav-wrapper-2 p {
+.nav-wrapper p {
line-height: 1.2;
color: white;
clear: right;
diff --git a/web/down.default.html b/web/down.default.html
deleted file mode 100644
index 760004cc1..000000000
--- a/web/down.default.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!doctype html>
-<!--[if IE 7]> <html class="no-js ie7 iel8" lang="en-gb"><![endif]-->
-<!--[if IE 8]> <html class="no-js ie8 iel8" lang="en-gb"><![endif]-->
-<!--[if IE 9]> <html class="no-js ie9" lang="en-gb"><![endif]-->
-<!--[if gt IE 9]><!--><html class="no-js" lang="en-gb"><!--<![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="https://www.fixmystreet.com/">
- <meta property="og:title" content="FixMyStreet">
- <meta property="og:site_name" content="FixMyStreet">
- <meta property="og:description" content="Report, view, and discuss local street-related problems.">
- <meta property="og:type" content="website">
- <meta property="og:image" content="https://www.fixmystreet.com/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">
-
- <link rel="stylesheet" href="https://www.fixmystreet.com/cobrands/fixmystreet.com/base.css?1442505663">
- <link rel="stylesheet" href="https://www.fixmystreet.com/cobrands/fixmystreet.com/layout.css?1442576262" media="(min-width:48em)">
-
- <!--[if (lt IE 9) & (!IEMobile)]>
- <link rel="stylesheet" href="https://www.fixmystreet.com/cobrands/fixmystreet.com/layout.css?1442576262">
- <![endif]-->
-
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="cobrand" content="fixmystreet">
- <title>Down for maintenance :: FixMyStreet</title>
- <link rel="Shortcut Icon" type="image/x-icon" href="https://www.fixmystreet.com/cobrands/fixmystreet.com/favicon.ico">
-
- </head>
-
- <body class="fullwidthpage">
-
- <div class="wrapper">
- <div class="table-cell">
- <header id="site-header" role="banner">
- <div class="container">
- <a href="/" id="site-logo">FixMyStreet</a>
- </div>
- </header>
-
- <div class="container">
- <div class="content" role="main">
-
-<div class="tablewrapper">
- <h1>FixMyStreet is currently down for maintenance.</h1>
- <p>Please come back later.</p>
-</div>
-
-
- <footer role="contentinfo">
- <div class="tablewrapper bordered">
- <div id="footer-mobileapps">
- <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="https://www.fixmystreet.com/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="https://www.fixmystreet.com/cobrands/fixmystreet/images/google_play_logo.png" />
- </a>
- </p>
- </div>
-
- <div id="footer-help">
- <p>
- Powered by <a class="platform-logo" href="http://fixmystreet.org/">FixMyStreet Platform</a>
- </p>
- <ul>
- <li>
- <h4>Are you a developer?</h4>
- <p>Would you like to contribute to FixMyStreet? Our code is open source and <a href="http://fixmystreet.org">available at fixmystreet.org</a>.</p>
- </li>
- </ul>
- </div>
- </div>
- </footer>
-
- </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 class="nav-menu nav-menu--mysoc">
- <li><a id="mysoc-logo" href="https://www.mysociety.org/">mySociety</a></li>
- </ul>
- </div>
- </div>
- </div>
-
- </div> <!-- .wrapper -->
-
-</body>
-</html>
diff --git a/web/i/pin-green-big.png b/web/i/pin-green-big.png
index 69815463e..3eab8da11 100644
--- a/web/i/pin-green-big.png
+++ b/web/i/pin-green-big.png
Binary files differ
diff --git a/web/i/pin-green-mini.png b/web/i/pin-green-mini.png
index 32d57a807..6497e53e8 100644
--- a/web/i/pin-green-mini.png
+++ b/web/i/pin-green-mini.png
Binary files differ
diff --git a/web/i/pin-green-small.png b/web/i/pin-green-small.png
index 4813ceb58..ee7f8514b 100644
--- a/web/i/pin-green-small.png
+++ b/web/i/pin-green-small.png
Binary files differ
diff --git a/web/i/pin-green.png b/web/i/pin-green.png
index 597bfc6b7..83068d86c 100644
--- a/web/i/pin-green.png
+++ b/web/i/pin-green.png
Binary files differ
diff --git a/web/i/pin-grey-big.png b/web/i/pin-grey-big.png
index 02117aa5e..2e700d18a 100644
--- a/web/i/pin-grey-big.png
+++ b/web/i/pin-grey-big.png
Binary files differ
diff --git a/web/i/pin-grey-mini.png b/web/i/pin-grey-mini.png
index 152b0a60f..07e637c50 100644
--- a/web/i/pin-grey-mini.png
+++ b/web/i/pin-grey-mini.png
Binary files differ
diff --git a/web/i/pin-grey-small.png b/web/i/pin-grey-small.png
index 14b1f9b03..be5ef751e 100644
--- a/web/i/pin-grey-small.png
+++ b/web/i/pin-grey-small.png
Binary files differ
diff --git a/web/i/pin-grey.png b/web/i/pin-grey.png
index 866e6ebe7..94e512c79 100644
--- a/web/i/pin-grey.png
+++ b/web/i/pin-grey.png
Binary files differ
diff --git a/web/i/pin-orange-big.png b/web/i/pin-orange-big.png
new file mode 100644
index 000000000..a7597d6b3
--- /dev/null
+++ b/web/i/pin-orange-big.png
Binary files differ
diff --git a/web/i/pin-orange-mini.png b/web/i/pin-orange-mini.png
new file mode 100644
index 000000000..546f00e0a
--- /dev/null
+++ b/web/i/pin-orange-mini.png
Binary files differ
diff --git a/web/i/pin-orange-small.png b/web/i/pin-orange-small.png
new file mode 100644
index 000000000..7f866fd12
--- /dev/null
+++ b/web/i/pin-orange-small.png
Binary files differ
diff --git a/web/i/pin-orange.png b/web/i/pin-orange.png
new file mode 100644
index 000000000..5e33e8010
--- /dev/null
+++ b/web/i/pin-orange.png
Binary files differ
diff --git a/web/i/pin-red-big.png b/web/i/pin-red-big.png
index fb51b6c78..7c02b7029 100644
--- a/web/i/pin-red-big.png
+++ b/web/i/pin-red-big.png
Binary files differ
diff --git a/web/i/pin-red-mini.png b/web/i/pin-red-mini.png
index d91aac979..333d6a8c7 100644
--- a/web/i/pin-red-mini.png
+++ b/web/i/pin-red-mini.png
Binary files differ
diff --git a/web/i/pin-red-small.png b/web/i/pin-red-small.png
index a0e8fb0d2..2388ce03e 100644
--- a/web/i/pin-red-small.png
+++ b/web/i/pin-red-small.png
Binary files differ
diff --git a/web/i/pin-red.png b/web/i/pin-red.png
index 882446a22..6ad0b1eea 100644
--- a/web/i/pin-red.png
+++ b/web/i/pin-red.png
Binary files differ
diff --git a/web/i/pin-shadow-big.png b/web/i/pin-shadow-big.png
index 113184b94..a65014a82 100644
--- a/web/i/pin-shadow-big.png
+++ b/web/i/pin-shadow-big.png
Binary files differ
diff --git a/web/i/pin-shadow-small.png b/web/i/pin-shadow-small.png
index 911e3a66c..fa5e65b5b 100644
--- a/web/i/pin-shadow-small.png
+++ b/web/i/pin-shadow-small.png
Binary files differ
diff --git a/web/i/pin-shadow.png b/web/i/pin-shadow.png
index 8b470592a..9a1f24ee7 100644
--- a/web/i/pin-shadow.png
+++ b/web/i/pin-shadow.png
Binary files differ
diff --git a/web/i/pin-spot.png b/web/i/pin-spot.png
index 6f8eb5fb5..43726fb48 100644
--- a/web/i/pin-spot.png
+++ b/web/i/pin-spot.png
Binary files differ
diff --git a/web/i/pin-yellow-big.png b/web/i/pin-yellow-big.png
index cfae00afc..435f520b9 100644
--- a/web/i/pin-yellow-big.png
+++ b/web/i/pin-yellow-big.png
Binary files differ
diff --git a/web/i/pin-yellow-mini.png b/web/i/pin-yellow-mini.png
index 8181bce96..7cbe0d09d 100644
--- a/web/i/pin-yellow-mini.png
+++ b/web/i/pin-yellow-mini.png
Binary files differ
diff --git a/web/i/pin-yellow-small.png b/web/i/pin-yellow-small.png
index 53cfb654a..1e0235989 100644
--- a/web/i/pin-yellow-small.png
+++ b/web/i/pin-yellow-small.png
Binary files differ
diff --git a/web/i/pin-yellow.png b/web/i/pin-yellow.png
index 67ccc546a..4fdaa7214 100644
--- a/web/i/pin-yellow.png
+++ b/web/i/pin-yellow.png
Binary files differ
diff --git a/web/js/OpenLayers.2.11.zurich.js b/web/js/OpenLayers.2.11.zurich.js
deleted file mode 100644
index 62087500d..000000000
--- a/web/js/OpenLayers.2.11.zurich.js
+++ /dev/null
@@ -1,1364 +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
- */
-
-/**
- * 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&&center!=null){var zoom=this.getZoom();this.zoom=null;this.setCenter(center,zoom);}}}},getCurrentSize:function(){var size=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(size.w==0&&size.h==0||isNaN(size.w)&&isNaN(size.h)){size.w=this.div.offsetWidth;size.h=this.div.offsetHeight;}
-if(size.w==0&&size.h==0||isNaN(size.w)&&isNaN(size.h)){size.w=parseInt(this.div.style.width);size.h=parseInt(this.div.style.height);}
-return size;},calculateBounds:function(center,resolution){var extent=null;if(center==null){center=this.getCachedCenter();}
-if(resolution==null){resolution=this.getResolution();}
-if((center!=null)&&(resolution!=null)){var size=this.getSize();var w_deg=size.w*resolution;var h_deg=size.h*resolution;extent=new OpenLayers.Bounds(center.lon-w_deg/2,center.lat-h_deg/2,center.lon+w_deg/2,center.lat+h_deg/2);}
-return extent;},getCenter:function(){var center=null;var cachedCenter=this.getCachedCenter();if(cachedCenter){center=cachedCenter.clone();}
-return center;},getCachedCenter:function(){if(!this.center&&this.size){this.center=this.getLonLatFromViewPortPx(new OpenLayers.Pixel(this.size.w/2,this.size.h/2));}
-return this.center;},getZoom:function(){return this.zoom;},pan:function(dx,dy,options){options=OpenLayers.Util.applyDefaults(options,{animate:true,dragging:false});if(options.dragging){if(dx!=0||dy!=0){this.moveByPx(dx,dy);}}else{var centerPx=this.getViewPortPxFromLonLat(this.getCachedCenter());var newCenterPx=centerPx.add(dx,dy);if(this.dragging||!newCenterPx.equals(centerPx)){var newCenterLonLat=this.getLonLatFromViewPortPx(newCenterPx);if(options.animate){this.panTo(newCenterLonLat);}else{this.moveTo(newCenterLonLat);this.dragging=false;this.events.triggerEvent("moveend");}}}},panTo:function(lonlat){if(this.panMethod&&this.getExtent().scale(this.panRatio).containsLonLat(lonlat)){if(!this.panTween){this.panTween=new OpenLayers.Tween(this.panMethod);}
-var center=this.getCachedCenter();if(lonlat.equals(center)){return;}
-var from=this.getPixelFromLonLat(center);var to=this.getPixelFromLonLat(lonlat);var vector={x:to.x-from.x,y:to.y-from.y};var last={x:0,y:0};this.panTween.start({x:0,y:0},vector,this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(px){var x=px.x-last.x,y=px.y-last.y;this.moveByPx(x,y);last.x=Math.round(px.x);last.y=Math.round(px.y);},this),done:OpenLayers.Function.bind(function(px){this.moveTo(lonlat);this.dragging=false;this.events.triggerEvent("moveend");},this)}});}else{this.setCenter(lonlat);}},setCenter:function(lonlat,zoom,dragging,forceZoomChange){this.panTween&&this.panTween.stop();this.moveTo(lonlat,zoom,{'dragging':dragging,'forceZoomChange':forceZoomChange});},moveByPx:function(dx,dy){var hw=this.size.w/2;var hh=this.size.h/2;var x=hw+dx;var y=hh+dy;var wrapDateLine=this.baseLayer.wrapDateLine;var xRestriction=0;var yRestriction=0;if(this.restrictedExtent){xRestriction=hw;yRestriction=hh;wrapDateLine=false;}
-dx=wrapDateLine||x<=this.maxPx.x-xRestriction&&x>=this.minPx.x+xRestriction?Math.round(dx):0;dy=y<=this.maxPx.y-yRestriction&&y>=this.minPx.y+yRestriction?Math.round(dy):0;var minX=this.minPx.x,maxX=this.maxPx.x;if(dx||dy){if(!this.dragging){this.dragging=true;this.events.triggerEvent("movestart");}
-this.center=null;if(dx){this.layerContainerDiv.style.left=parseInt(this.layerContainerDiv.style.left)-dx+"px";this.minPx.x-=dx;this.maxPx.x-=dx;if(wrapDateLine){if(this.maxPx.x>maxX){this.maxPx.x-=(maxX-minX);}
-if(this.minPx.x<minX){this.minPx.x+=(maxX-minX);}}}
-if(dy){this.layerContainerDiv.style.top=parseInt(this.layerContainerDiv.style.top)-dy+"px";this.minPx.y-=dy;this.maxPx.y-=dy;}
-var layer,i,len;for(i=0,len=this.layers.length;i<len;++i){layer=this.layers[i];if(layer.visibility&&(layer===this.baseLayer||layer.inRange)){layer.moveByPx(dx,dy);layer.events.triggerEvent("move");}}
-this.events.triggerEvent("move");}},moveTo:function(lonlat,zoom,options){if(!options){options={};}
-if(zoom!=null){zoom=parseFloat(zoom);if(!this.fractionalZoom){zoom=Math.round(zoom);}}
-var dragging=options.dragging||this.dragging;var forceZoomChange=options.forceZoomChange;if(!this.getCachedCenter()&&!this.isValidLonLat(lonlat)){lonlat=this.maxExtent.getCenterLonLat();this.center=lonlat.clone();}
-if(this.restrictedExtent!=null){if(lonlat==null){lonlat=this.center;}
-if(zoom==null){zoom=this.getZoom();}
-var resolution=this.getResolutionForZoom(zoom);var extent=this.calculateBounds(lonlat,resolution);if(!this.restrictedExtent.containsBounds(extent)){var maxCenter=this.restrictedExtent.getCenterLonLat();if(extent.getWidth()>this.restrictedExtent.getWidth()){lonlat=new OpenLayers.LonLat(maxCenter.lon,lonlat.lat);}else if(extent.left<this.restrictedExtent.left){lonlat=lonlat.add(this.restrictedExtent.left-
-extent.left,0);}else if(extent.right>this.restrictedExtent.right){lonlat=lonlat.add(this.restrictedExtent.right-
-extent.right,0);}
-if(extent.getHeight()>this.restrictedExtent.getHeight()){lonlat=new OpenLayers.LonLat(lonlat.lon,maxCenter.lat);}else if(extent.bottom<this.restrictedExtent.bottom){lonlat=lonlat.add(0,this.restrictedExtent.bottom-
-extent.bottom);}
-else if(extent.top>this.restrictedExtent.top){lonlat=lonlat.add(0,this.restrictedExtent.top-
-extent.top);}}}
-var zoomChanged=forceZoomChange||((this.isValidZoomLevel(zoom))&&(zoom!=this.getZoom()));var centerChanged=(this.isValidLonLat(lonlat))&&(!lonlat.equals(this.center));if(zoomChanged||centerChanged||dragging){dragging||this.events.triggerEvent("movestart");if(centerChanged){if(!zoomChanged&&this.center){this.centerLayerContainer(lonlat);}
-this.center=lonlat.clone();}
-var res=zoomChanged?this.getResolutionForZoom(zoom):this.getResolution();if(zoomChanged||this.layerContainerOrigin==null){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";var maxExtent=this.getMaxExtent({restricted:true});var maxExtentCenter=maxExtent.getCenterLonLat();var lonDelta=this.center.lon-maxExtentCenter.lon;var latDelta=maxExtentCenter.lat-this.center.lat;var extentWidth=Math.round(maxExtent.getWidth()/res);var extentHeight=Math.round(maxExtent.getHeight()/res);var left=(this.size.w-extentWidth)/2-lonDelta/res;var top=(this.size.h-extentHeight)/2-latDelta/res;this.minPx=new OpenLayers.Pixel(left,top);this.maxPx=new OpenLayers.Pixel(left+extentWidth,top+extentHeight);}
-if(zoomChanged){this.zoom=zoom;this.resolution=res;this.viewRequestID++;}
-var bounds=this.getExtent();if(this.baseLayer.visibility){this.baseLayer.moveTo(bounds,zoomChanged,options.dragging);options.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:zoomChanged});}
-bounds=this.baseLayer.getExtent();for(var i=this.layers.length-1;i>=0;--i){var layer=this.layers[i];if(layer!==this.baseLayer&&!layer.isBaseLayer){var inRange=layer.calculateInRange();if(layer.inRange!=inRange){layer.inRange=inRange;if(!inRange){layer.display(false);}
-this.events.triggerEvent("changelayer",{layer:layer,property:"visibility"});}
-if(inRange&&layer.visibility){layer.moveTo(bounds,zoomChanged,options.dragging);options.dragging||layer.events.triggerEvent("moveend",{zoomChanged:zoomChanged});}}}
-this.events.triggerEvent("move");dragging||this.events.triggerEvent("moveend");if(zoomChanged){for(var i=0,len=this.popups.length;i<len;i++){this.popups[i].updatePosition();}
-this.events.triggerEvent("zoomend");}}},centerLayerContainer:function(lonlat){var originPx=this.getViewPortPxFromLonLat(this.layerContainerOrigin);var newPx=this.getViewPortPxFromLonLat(lonlat);if((originPx!=null)&&(newPx!=null)){var oldLeft=parseInt(this.layerContainerDiv.style.left);var oldTop=parseInt(this.layerContainerDiv.style.top);var newLeft=Math.round(originPx.x-newPx.x);var newTop=Math.round(originPx.y-newPx.y);this.layerContainerDiv.style.left=newLeft+"px";this.layerContainerDiv.style.top=newTop+"px";var dx=oldLeft-newLeft;var dy=oldTop-newTop;this.minPx.x-=dx;this.maxPx.x-=dx;this.minPx.y-=dy;this.maxPx.y-=dy;}},isValidZoomLevel:function(zoomLevel){return((zoomLevel!=null)&&(zoomLevel>=0)&&(zoomLevel<this.getNumZoomLevels()));},isValidLonLat:function(lonlat){var valid=false;if(lonlat!=null){var maxExtent=this.getMaxExtent();valid=maxExtent.containsLonLat(lonlat);}
-return valid;},getProjection:function(){var projection=this.getProjectionObject();return projection?projection.getCode():null;},getProjectionObject:function(){var projection=null;if(this.baseLayer!=null){projection=this.baseLayer.projection;}
-return projection;},getMaxResolution:function(){var maxResolution=null;if(this.baseLayer!=null){maxResolution=this.baseLayer.maxResolution;}
-return maxResolution;},getMaxExtent:function(options){var maxExtent=null;if(options&&options.restricted&&this.restrictedExtent){maxExtent=this.restrictedExtent;}else if(this.baseLayer!=null){maxExtent=this.baseLayer.maxExtent;}
-return maxExtent;},getNumZoomLevels:function(){var numZoomLevels=null;if(this.baseLayer!=null){numZoomLevels=this.baseLayer.numZoomLevels;}
-return numZoomLevels;},getExtent:function(){var extent=null;if(this.baseLayer!=null){extent=this.baseLayer.getExtent();}
-return extent;},getResolution:function(){var resolution=null;if(this.baseLayer!=null){resolution=this.baseLayer.getResolution();}else if(this.allOverlays===true&&this.layers.length>0){resolution=this.layers[0].getResolution();}
-return resolution;},getUnits:function(){var units=null;if(this.baseLayer!=null){units=this.baseLayer.units;}
-return units;},getScale:function(){var scale=null;if(this.baseLayer!=null){var res=this.getResolution();var units=this.baseLayer.units;scale=OpenLayers.Util.getScaleFromResolution(res,units);}
-return scale;},getZoomForExtent:function(bounds,closest){var zoom=null;if(this.baseLayer!=null){zoom=this.baseLayer.getZoomForExtent(bounds,closest);}
-return zoom;},getResolutionForZoom:function(zoom){var resolution=null;if(this.baseLayer){resolution=this.baseLayer.getResolutionForZoom(zoom);}
-return resolution;},getZoomForResolution:function(resolution,closest){var zoom=null;if(this.baseLayer!=null){zoom=this.baseLayer.getZoomForResolution(resolution,closest);}
-return zoom;},zoomTo:function(zoom){if(this.isValidZoomLevel(zoom)){this.setCenter(null,zoom);}},zoomIn:function(){this.zoomTo(this.getZoom()+1);},zoomOut:function(){this.zoomTo(this.getZoom()-1);},zoomToExtent:function(bounds,closest){var center=bounds.getCenterLonLat();if(this.baseLayer.wrapDateLine){var maxExtent=this.getMaxExtent();bounds=bounds.clone();while(bounds.right<bounds.left){bounds.right+=maxExtent.getWidth();}
-center=bounds.getCenterLonLat().wrapDateLine(maxExtent);}
-this.setCenter(center,this.getZoomForExtent(bounds,closest));},zoomToMaxExtent:function(options){var restricted=(options)?options.restricted:true;var maxExtent=this.getMaxExtent({'restricted':restricted});this.zoomToExtent(maxExtent);},zoomToScale:function(scale,closest){var res=OpenLayers.Util.getResolutionFromScale(scale,this.baseLayer.units);var size=this.getSize();var w_deg=size.w*res;var h_deg=size.h*res;var center=this.getCachedCenter();var extent=new OpenLayers.Bounds(center.lon-w_deg/2,center.lat-h_deg/2,center.lon+w_deg/2,center.lat+h_deg/2);this.zoomToExtent(extent,closest);},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;if(this.baseLayer!=null){lonlat=this.baseLayer.getLonLatFromViewPortPx(viewPortPx);}
-return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(this.baseLayer!=null){px=this.baseLayer.getViewPortPxFromLonLat(lonlat);}
-return px;},getLonLatFromPixel:function(px){return this.getLonLatFromViewPortPx(px);},getPixelFromLonLat:function(lonlat){var px=this.getViewPortPxFromLonLat(lonlat);px.x=Math.round(px.x);px.y=Math.round(px.y);return px;},getGeodesicPixelSize:function(px){var lonlat=px?this.getLonLatFromPixel(px):(this.getCachedCenter()||new OpenLayers.LonLat(0,0));var res=this.getResolution();var left=lonlat.add(-res/2,0);var right=lonlat.add(res/2,0);var bottom=lonlat.add(0,-res/2);var top=lonlat.add(0,res/2);var dest=new OpenLayers.Projection("EPSG:4326");var source=this.getProjectionObject()||dest;if(!source.equals(dest)){left.transform(source,dest);right.transform(source,dest);bottom.transform(source,dest);top.transform(source,dest);}
-return new OpenLayers.Size(OpenLayers.Util.distVincenty(left,right),OpenLayers.Util.distVincenty(bottom,top));},getViewPortPxFromLayerPx:function(layerPx){var viewPortPx=null;if(layerPx!=null){var dX=parseInt(this.layerContainerDiv.style.left);var dY=parseInt(this.layerContainerDiv.style.top);viewPortPx=layerPx.add(dX,dY);}
-return viewPortPx;},getLayerPxFromViewPortPx:function(viewPortPx){var layerPx=null;if(viewPortPx!=null){var dX=-parseInt(this.layerContainerDiv.style.left);var dY=-parseInt(this.layerContainerDiv.style.top);layerPx=viewPortPx.add(dX,dY);if(isNaN(layerPx.x)||isNaN(layerPx.y)){layerPx=null;}}
-return layerPx;},getLonLatFromLayerPx:function(px){px=this.getViewPortPxFromLayerPx(px);return this.getLonLatFromViewPortPx(px);},getLayerPxFromLonLat:function(lonlat){var px=this.getPixelFromLonLat(lonlat);return this.getLayerPxFromViewPortPx(px);},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:null,alwaysInRange:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged","move","moveend","added","removed"],RESOLUTION_PROPERTIES:['scales','resolutions','maxScale','minScale','maxResolution','minResolution','numZoomLevels','maxZoomLevel'],events:null,map:null,isBaseLayer:false,alpha:false,displayInLayerSwitcher:true,visibility:true,attribution:null,inRange:false,imageSize:null,imageOffset:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:false,wrapDateLine:false,transitionEffect:null,SUPPORTED_TRANSITIONS:['resize'],metadata:{},initialize:function(name,options){this.addOptions(options);this.name=name;if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");this.div=OpenLayers.Util.createDiv(this.id);this.div.style.width="100%";this.div.style.height="100%";this.div.dir="ltr";this.events=new OpenLayers.Events(this,this.div,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}}
-if(this.wrapDateLine){this.displayOutsideMaxExtent=true;}},destroy:function(setNewBaseLayer){if(setNewBaseLayer==null){setNewBaseLayer=true;}
-if(this.map!=null){this.map.removeLayer(this,setNewBaseLayer);}
-this.projection=null;this.map=null;this.name=null;this.div=null;this.options=null;if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);}
-this.events.destroy();}
-this.eventListeners=null;this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer(this.name,this.getOptions());}
-OpenLayers.Util.applyDefaults(obj,this);obj.map=null;return obj;},getOptions:function(){var options={};for(var o in this.options){options[o]=this[o];}
-return options;},setName:function(newName){if(newName!=this.name){this.name=newName;if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"name"});}}},addOptions:function(newOptions,reinitialize){if(this.options==null){this.options={};}
-OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);if(typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);}
-if(this.projection&&this.projection.getUnits()){this.units=this.projection.getUnits();}
-if(this.map){var resolution=this.map.getResolution();var properties=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]);for(var o in newOptions){if(newOptions.hasOwnProperty(o)&&OpenLayers.Util.indexOf(properties,o)>=0){this.initResolutions();if(reinitialize&&this.map.baseLayer===this){this.map.setCenter(this.map.getCenter(),this.map.getZoomForResolution(resolution),false,true);this.map.events.triggerEvent("changebaselayer",{layer:this});}
-break;}}}},onMapResize:function(){},redraw:function(){var redrawn=false;if(this.map){this.inRange=this.calculateInRange();var extent=this.getExtent();if(extent&&this.inRange&&this.visibility){var zoomChanged=true;this.moveTo(extent,zoomChanged,false);this.events.triggerEvent("moveend",{"zoomChanged":zoomChanged});redrawn=true;}}
-return redrawn;},moveTo:function(bounds,zoomChanged,dragging){var display=this.visibility;if(!this.isBaseLayer){display=display&&this.inRange;}
-this.display(display);},moveByPx:function(dx,dy){},setMap:function(map){if(this.map==null){this.map=map;this.maxExtent=this.maxExtent||this.map.maxExtent;this.minExtent=this.minExtent||this.map.minExtent;this.projection=this.projection||this.map.projection;if(typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);}
-this.units=this.projection.getUnits()||this.units||this.map.units;this.initResolutions();if(!this.isBaseLayer){this.inRange=this.calculateInRange();var show=((this.visibility)&&(this.inRange));this.div.style.display=show?"":"none";}
-this.setTileSize();}},afterAdd:function(){},removeMap:function(map){},getImageSize:function(bounds){return(this.imageSize||this.tileSize);},setTileSize:function(size){var tileSize=(size)?size:((this.tileSize)?this.tileSize:this.map.getTileSize());this.tileSize=tileSize;if(this.gutter){this.imageOffset=new OpenLayers.Pixel(-this.gutter,-this.gutter);this.imageSize=new OpenLayers.Size(tileSize.w+(2*this.gutter),tileSize.h+(2*this.gutter));}},getVisibility:function(){return this.visibility;},setVisibility:function(visibility){if(visibility!=this.visibility){this.visibility=visibility;this.display(visibility);this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"});}
-this.events.triggerEvent("visibilitychanged");}},display:function(display){if(display!=(this.div.style.display!="none")){this.div.style.display=(display&&this.calculateInRange())?"block":"none";}},calculateInRange:function(){var inRange=false;if(this.alwaysInRange){inRange=true;}else{if(this.map){var resolution=this.map.getResolution();inRange=((resolution>=this.minResolution)&&(resolution<=this.maxResolution));}}
-return inRange;},setIsBaseLayer:function(isBaseLayer){if(isBaseLayer!=this.isBaseLayer){this.isBaseLayer=isBaseLayer;if(this.map!=null){this.map.events.triggerEvent("changebaselayer",{layer:this});}}},initResolutions:function(){var i,len,p;var props={},alwaysInRange=true;for(i=0,len=this.RESOLUTION_PROPERTIES.length;i<len;i++){p=this.RESOLUTION_PROPERTIES[i];props[p]=this.options[p];if(alwaysInRange&&this.options[p]){alwaysInRange=false;}}
-if(this.alwaysInRange==null){this.alwaysInRange=alwaysInRange;}
-if(props.resolutions==null){props.resolutions=this.resolutionsFromScales(props.scales);}
-if(props.resolutions==null){props.resolutions=this.calculateResolutions(props);}
-if(props.resolutions==null){for(i=0,len=this.RESOLUTION_PROPERTIES.length;i<len;i++){p=this.RESOLUTION_PROPERTIES[i];props[p]=this.options[p]!=null?this.options[p]:this.map[p];}
-if(props.resolutions==null){props.resolutions=this.resolutionsFromScales(props.scales);}
-if(props.resolutions==null){props.resolutions=this.calculateResolutions(props);}}
-var maxResolution;if(this.options.maxResolution&&this.options.maxResolution!=="auto"){maxResolution=this.options.maxResolution;}
-if(this.options.minScale){maxResolution=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units);}
-var minResolution;if(this.options.minResolution&&this.options.minResolution!=="auto"){minResolution=this.options.minResolution;}
-if(this.options.maxScale){minResolution=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,this.units);}
-if(props.resolutions){props.resolutions.sort(function(a,b){return(b-a);});if(!maxResolution){maxResolution=props.resolutions[0];}
-if(!minResolution){var lastIdx=props.resolutions.length-1;minResolution=props.resolutions[lastIdx];}}
-this.resolutions=props.resolutions;if(this.resolutions){len=this.resolutions.length;this.scales=new Array(len);for(i=0;i<len;i++){this.scales[i]=OpenLayers.Util.getScaleFromResolution(this.resolutions[i],this.units);}
-this.numZoomLevels=len;}
-this.minResolution=minResolution;if(minResolution){this.maxScale=OpenLayers.Util.getScaleFromResolution(minResolution,this.units);}
-this.maxResolution=maxResolution;if(maxResolution){this.minScale=OpenLayers.Util.getScaleFromResolution(maxResolution,this.units);}},resolutionsFromScales:function(scales){if(scales==null){return;}
-var resolutions,i,len;len=scales.length;resolutions=new Array(len);for(i=0;i<len;i++){resolutions[i]=OpenLayers.Util.getResolutionFromScale(scales[i],this.units);}
-return resolutions;},calculateResolutions:function(props){var viewSize,wRes,hRes;var maxResolution=props.maxResolution;if(props.minScale!=null){maxResolution=OpenLayers.Util.getResolutionFromScale(props.minScale,this.units);}else if(maxResolution=="auto"&&this.maxExtent!=null){viewSize=this.map.getSize();wRes=this.maxExtent.getWidth()/viewSize.w;hRes=this.maxExtent.getHeight()/viewSize.h;maxResolution=Math.max(wRes,hRes);}
-var minResolution=props.minResolution;if(props.maxScale!=null){minResolution=OpenLayers.Util.getResolutionFromScale(props.maxScale,this.units);}else if(props.minResolution=="auto"&&this.minExtent!=null){viewSize=this.map.getSize();wRes=this.minExtent.getWidth()/viewSize.w;hRes=this.minExtent.getHeight()/viewSize.h;minResolution=Math.max(wRes,hRes);}
-var maxZoomLevel=props.maxZoomLevel;var numZoomLevels=props.numZoomLevels;if(typeof minResolution==="number"&&typeof maxResolution==="number"&&numZoomLevels===undefined){var ratio=maxResolution/minResolution;numZoomLevels=Math.floor(Math.log(ratio)/Math.log(2))+1;}else if(numZoomLevels===undefined&&maxZoomLevel!=null){numZoomLevels=maxZoomLevel+1;}
-if(typeof numZoomLevels!=="number"||numZoomLevels<=0||(typeof maxResolution!=="number"&&typeof minResolution!=="number")){return;}
-var resolutions=new Array(numZoomLevels);var base=2;if(typeof minResolution=="number"&&typeof maxResolution=="number"){base=Math.pow((maxResolution/minResolution),(1/(numZoomLevels-1)));}
-var i;if(typeof maxResolution==="number"){for(i=0;i<numZoomLevels;i++){resolutions[i]=maxResolution/Math.pow(base,i);}}else{for(i=0;i<numZoomLevels;i++){resolutions[numZoomLevels-1-i]=minResolution*Math.pow(base,i);}}
-return resolutions;},getResolution:function(){var zoom=this.map.getZoom();return this.getResolutionForZoom(zoom);},getExtent:function(){return this.map.calculateBounds();},getZoomForExtent:function(extent,closest){var viewSize=this.map.getSize();var idealResolution=Math.max(extent.getWidth()/viewSize.w,extent.getHeight()/viewSize.h);return this.getZoomForResolution(idealResolution,closest);},getDataExtent:function(){},getResolutionForZoom:function(zoom){zoom=Math.max(0,Math.min(zoom,this.resolutions.length-1));var resolution;if(this.map.fractionalZoom){var low=Math.floor(zoom);var high=Math.ceil(zoom);resolution=this.resolutions[low]-
-((zoom-low)*(this.resolutions[low]-this.resolutions[high]));}else{resolution=this.resolutions[Math.round(zoom)];}
-return resolution;},getZoomForResolution:function(resolution,closest){var zoom,i,len;if(this.map.fractionalZoom){var lowZoom=0;var highZoom=this.resolutions.length-1;var highRes=this.resolutions[lowZoom];var lowRes=this.resolutions[highZoom];var res;for(i=0,len=this.resolutions.length;i<len;++i){res=this.resolutions[i];if(res>=resolution){highRes=res;lowZoom=i;}
-if(res<=resolution){lowRes=res;highZoom=i;break;}}
-var dRes=highRes-lowRes;if(dRes>0){zoom=lowZoom+((highRes-resolution)/dRes);}else{zoom=lowZoom;}}else{var diff;var minDiff=Number.POSITIVE_INFINITY;for(i=0,len=this.resolutions.length;i<len;i++){if(closest){diff=Math.abs(this.resolutions[i]-resolution);if(diff>minDiff){break;}
-minDiff=diff;}else{if(this.resolutions[i]<resolution){break;}}}
-zoom=Math.max(0,i-1);}
-return zoom;},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;var map=this.map;if(viewPortPx!=null&&map.minPx){var res=map.getResolution();var maxExtent=map.getMaxExtent({restricted:true});var lon=(viewPortPx.x-map.minPx.x)*res+maxExtent.left;var lat=(map.minPx.y-viewPortPx.y)*res+maxExtent.top;lonlat=new OpenLayers.LonLat(lon,lat);if(this.wrapDateLine){lonlat=lonlat.wrapDateLine(this.maxExtent);}}
-return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(lonlat!=null){var resolution=this.map.getResolution();var extent=this.map.getExtent();px=new OpenLayers.Pixel((1/resolution*(lonlat.lon-extent.left)),(1/resolution*(extent.top-lonlat.lat)));}
-return px;},setOpacity:function(opacity){if(opacity!=this.opacity){this.opacity=opacity;for(var i=0,len=this.div.childNodes.length;i<len;++i){var element=this.div.childNodes[i].firstChild;OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);}
-if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"});}}},getZIndex:function(){return this.div.style.zIndex;},setZIndex:function(zIndex){this.div.style.zIndex=zIndex;},adjustBounds:function(bounds){if(this.gutter){var mapGutter=this.gutter*this.map.getResolution();bounds=new OpenLayers.Bounds(bounds.left-mapGutter,bounds.bottom-mapGutter,bounds.right+mapGutter,bounds.top+mapGutter);}
-if(this.wrapDateLine){var wrappingOptions={'rightTolerance':this.getResolution(),'leftTolerance':this.getResolution()};bounds=bounds.wrapDateLine(this.maxExtent,wrappingOptions);}
-return bounds;},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:true,initialize:function(style,options){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),"select":new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]),"temporary":new OpenLayers.Style(OpenLayers.Feature.Vector.style["temporary"]),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(style instanceof OpenLayers.Style){this.styles["default"]=style;this.styles["select"]=style;this.styles["temporary"]=style;this.styles["delete"]=style;}else if(typeof style=="object"){for(var key in style){if(style[key]instanceof OpenLayers.Style){this.styles[key]=style[key];}else if(typeof style[key]=="object"){this.styles[key]=new OpenLayers.Style(style[key]);}else{this.styles["default"]=new OpenLayers.Style(style);this.styles["select"]=new OpenLayers.Style(style);this.styles["temporary"]=new OpenLayers.Style(style);this.styles["delete"]=new OpenLayers.Style(style);break;}}}
-OpenLayers.Util.extend(this,options);},destroy:function(){for(var key in this.styles){this.styles[key].destroy();}
-this.styles=null;},createSymbolizer:function(feature,intent){if(!feature){feature=new OpenLayers.Feature.Vector();}
-if(!this.styles[intent]){intent="default";}
-feature.renderIntent=intent;var defaultSymbolizer={};if(this.extendDefault&&intent!="default"){defaultSymbolizer=this.styles["default"].createSymbolizer(feature);}
-return OpenLayers.Util.extend(defaultSymbolizer,this.styles[intent].createSymbolizer(feature));},addUniqueValueRules:function(renderIntent,property,symbolizers,context){var rules=[];for(var value in symbolizers){rules.push(new OpenLayers.Rule({symbolizer:symbolizers[value],context:context,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:property,value:value})}));}
-this.styles[renderIntent].addRules(rules);},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{EVENT_TYPES:["beforefeatureadded","beforefeaturesadded","featureadded","featuresadded","beforefeatureremoved","beforefeaturesremoved","featureremoved","featuresremoved","beforefeatureselected","featureselected","featureunselected","beforefeaturemodified","featuremodified","afterfeaturemodified","vertexmodified","vertexremoved","sketchstarted","sketchmodified","sketchcomplete","refresh"],isBaseLayer:false,isFixed:false,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:true,style:null,styleMap:null,strategies:null,protocol:null,renderers:['SVG','VML','Canvas'],renderer:null,rendererOptions:null,geometryType:null,drawn:false,initialize:function(name,options){this.EVENT_TYPES=OpenLayers.Layer.Vector.prototype.EVENT_TYPES.concat(OpenLayers.Layer.prototype.EVENT_TYPES);OpenLayers.Layer.prototype.initialize.apply(this,arguments);if(!this.renderer||!this.renderer.supported()){this.assignRenderer();}
-if(!this.renderer||!this.renderer.supported()){this.renderer=null;this.displayError();}
-if(!this.styleMap){this.styleMap=new OpenLayers.StyleMap();}
-this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies){for(var i=0,len=this.strategies.length;i<len;i++){this.strategies[i].setLayer(this);}}},destroy:function(){if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoDestroy){strategy.destroy();}}
-this.strategies=null;}
-if(this.protocol){if(this.protocol.autoDestroy){this.protocol.destroy();}
-this.protocol=null;}
-this.destroyFeatures();this.features=null;this.selectedFeatures=null;this.unrenderedFeatures=null;if(this.renderer){this.renderer.destroy();}
-this.renderer=null;this.geometryType=null;this.drawn=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Vector(this.name,this.getOptions());}
-obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);var features=this.features;var len=features.length;var clonedFeatures=new Array(len);for(var i=0;i<len;++i){clonedFeatures[i]=features[i].clone();}
-obj.features=clonedFeatures;return obj;},refresh:function(obj){if(this.calculateInRange()&&this.visibility){this.events.triggerEvent("refresh",obj);}},assignRenderer:function(){for(var i=0,len=this.renderers.length;i<len;i++){var rendererClass=this.renderers[i];var renderer=(typeof rendererClass=="function")?rendererClass:OpenLayers.Renderer[rendererClass];if(renderer&&renderer.prototype.supported()){this.renderer=new renderer(this.div,this.rendererOptions);break;}}},displayError:function(){if(this.reportError){OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{'renderers':this.renderers.join("\n")}));}},setMap:function(map){OpenLayers.Layer.prototype.setMap.apply(this,arguments);if(!this.renderer){this.map.removeLayer(this);}else{this.renderer.map=this.map;this.renderer.setSize(this.map.getSize());}},afterAdd:function(){if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoActivate){strategy.activate();}}}},removeMap:function(map){this.drawn=false;if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoActivate){strategy.deactivate();}}}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,arguments);this.renderer.setSize(this.map.getSize());},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var ng=(OpenLayers.Renderer.NG&&this.renderer instanceof OpenLayers.Renderer.NG);if(ng){dragging||this.renderer.updateDimensions(zoomChanged);}else{var coordSysUnchanged=true;if(!dragging){this.renderer.root.style.visibility="hidden";this.div.style.left=-parseInt(this.map.layerContainerDiv.style.left)+"px";this.div.style.top=-parseInt(this.map.layerContainerDiv.style.top)+"px";var extent=this.map.getExtent();coordSysUnchanged=this.renderer.setExtent(extent,zoomChanged);this.renderer.root.style.visibility="visible";if(OpenLayers.IS_GECKO===true){this.div.scrollLeft=this.div.scrollLeft;}
-if(!zoomChanged&&coordSysUnchanged){for(var i in this.unrenderedFeatures){var feature=this.unrenderedFeatures[i];this.drawFeature(feature);}}}}
-if(!this.drawn||(!ng&&(zoomChanged||!coordSysUnchanged))){this.drawn=true;var feature;for(var i=0,len=this.features.length;i<len;i++){this.renderer.locked=(i!==(len-1));feature=this.features[i];this.drawFeature(feature);}}},redraw:function(){if(OpenLayers.Renderer.NG&&this.renderer instanceof OpenLayers.Renderer.NG){this.drawn=false;}
-return OpenLayers.Layer.prototype.redraw.apply(this,arguments);},display:function(display){OpenLayers.Layer.prototype.display.apply(this,arguments);var currentDisplay=this.div.style.display;if(currentDisplay!=this.renderer.root.style.display){this.renderer.root.style.display=currentDisplay;}},addFeatures:function(features,options){if(!(OpenLayers.Util.isArray(features))){features=[features];}
-var notify=!options||!options.silent;if(notify){var event={features:features};var ret=this.events.triggerEvent("beforefeaturesadded",event);if(ret===false){return;}
-features=event.features;}
-var featuresAdded=[];for(var i=0,len=features.length;i<len;i++){if(i!=(features.length-1)){this.renderer.locked=true;}else{this.renderer.locked=false;}
-var feature=features[i];if(this.geometryType&&!(feature.geometry instanceof this.geometryType)){var throwStr=OpenLayers.i18n('componentShouldBe',{'geomType':this.geometryType.prototype.CLASS_NAME});throw throwStr;}
-feature.layer=this;if(!feature.style&&this.style){feature.style=OpenLayers.Util.extend({},this.style);}
-if(notify){if(this.events.triggerEvent("beforefeatureadded",{feature:feature})===false){continue;}
-this.preFeatureInsert(feature);}
-featuresAdded.push(feature);this.features.push(feature);this.drawFeature(feature);if(notify){this.events.triggerEvent("featureadded",{feature:feature});this.onFeatureInsert(feature);}}
-if(notify){this.events.triggerEvent("featuresadded",{features:featuresAdded});}},removeFeatures:function(features,options){if(!features||features.length===0){return;}
-if(features===this.features){return this.removeAllFeatures(options);}
-if(!(OpenLayers.Util.isArray(features))){features=[features];}
-if(features===this.selectedFeatures){features=features.slice();}
-var notify=!options||!options.silent;if(notify){this.events.triggerEvent("beforefeaturesremoved",{features:features});}
-for(var i=features.length-1;i>=0;i--){if(i!=0&&features[i-1].geometry){this.renderer.locked=true;}else{this.renderer.locked=false;}
-var feature=features[i];delete this.unrenderedFeatures[feature.id];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});}
-this.features=OpenLayers.Util.removeItem(this.features,feature);feature.layer=null;if(feature.geometry){this.renderer.eraseFeatures(feature);}
-if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);}
-if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}}
-if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},removeAllFeatures:function(options){var notify=!options||!options.silent;var features=this.features;if(notify){this.events.triggerEvent("beforefeaturesremoved",{features:features});}
-var feature;for(var i=features.length-1;i>=0;i--){feature=features[i];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});}
-feature.layer=null;if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}}
-this.renderer.clear();this.features=[];this.unrenderedFeatures={};this.selectedFeatures=[];if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},destroyFeatures:function(features,options){var all=(features==undefined);if(all){features=this.features;}
-if(features){this.removeFeatures(features,options);for(var i=features.length-1;i>=0;i--){features[i].destroy();}}},drawFeature:function(feature,style){if(!this.drawn){return;}
-if(typeof style!="object"){if(!style&&feature.state===OpenLayers.State.DELETE){style="delete";}
-var renderIntent=style||feature.renderIntent;style=feature.style||this.style;if(!style){style=this.styleMap.createSymbolizer(feature,renderIntent);}}
-var drawn=this.renderer.drawFeature(feature,style);if(drawn===false||drawn===null){this.unrenderedFeatures[feature.id]=feature;}else{delete this.unrenderedFeatures[feature.id];}},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error(OpenLayers.i18n("getFeatureError"));return null;}
-var feature=null;var featureId=this.renderer.getFeatureIdFromEvent(evt);if(featureId){if(typeof featureId==="string"){feature=this.getFeatureById(featureId);}else{feature=featureId;}}
-return feature;},getFeatureBy:function(property,value){var feature=null;for(var i=0,len=this.features.length;i<len;++i){if(this.features[i][property]==value){feature=this.features[i];break;}}
-return feature;},getFeatureById:function(featureId){return this.getFeatureBy('id',featureId);},getFeatureByFid:function(featureFid){return this.getFeatureBy('fid',featureFid);},getFeaturesByAttribute:function(attrName,attrValue){var i,feature,len=this.features.length,foundFeatures=[];for(i=0;i<len;i++){feature=this.features[i];if(feature&&feature.attributes){if(feature.attributes[attrName]===attrValue){foundFeatures.push(feature);}}}
-return foundFeatures;},onFeatureInsert:function(feature){},preFeatureInsert:function(feature){},getDataExtent:function(){var maxExtent=null;var features=this.features;if(features&&(features.length>0)){var geometry=null;for(var i=0,len=features.length;i<len;i++){geometry=features[i].geometry;if(geometry){if(maxExtent===null){maxExtent=new OpenLayers.Bounds();}
-maxExtent.extend(geometry.getBounds());}}}
-return maxExtent;},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:false,layers:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},display:function(){},getFeatureFromEvent:function(evt){var layers=this.layers;var feature;for(var i=0;i<layers.length;i++){feature=layers[i].getFeatureFromEvent(evt);if(feature){return feature;}}},setMap:function(map){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();map.events.register("changelayer",this,this.handleChangeLayer);},removeMap:function(map){map.events.unregister("changelayer",this,this.handleChangeLayer);this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments);},collectRoots:function(){var layer;for(var i=0;i<this.map.layers.length;++i){layer=this.map.layers[i];if(OpenLayers.Util.indexOf(this.layers,layer)!=-1){layer.renderer.moveRoot(this.renderer);}}},resetRoots:function(){var layer;for(var i=0;i<this.layers.length;++i){layer=this.layers[i];if(this.renderer&&layer.renderer.getRenderLayerId()==this.id){this.renderer.moveRoot(layer.renderer);}}},handleChangeLayer:function(evt){var layer=evt.layer;if(evt.property=="order"&&OpenLayers.Util.indexOf(this.layers,layer)!=-1){this.resetRoots();this.collectRoots();}},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforefeaturehighlighted","featurehighlighted","featureunhighlighted"],multipleKey:null,toggleKey:null,multiple:false,clickout:true,toggle:false,hover:false,highlightOnly:false,box:false,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(layers,options){this.EVENT_TYPES=OpenLayers.Control.SelectFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.scope===null){this.scope=this;}
-this.initLayer(layers);var callbacks={click:this.clickFeature,clickout:this.clickoutFeature};if(this.hover){callbacks.over=this.overFeature;callbacks.out=this.outFeature;}
-this.callbacks=OpenLayers.Util.extend(callbacks,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};if(this.box){this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"});}},initLayer:function(layers){if(OpenLayers.Util.isArray(layers)){this.layers=layers;this.layer=new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:layers});}else{this.layer=layers;}},destroy:function(){if(this.active&&this.layers){this.map.removeLayer(this.layer);}
-OpenLayers.Control.prototype.destroy.apply(this,arguments);if(this.layers){this.layer.destroy();}},activate:function(){if(!this.active){if(this.layers){this.map.addLayer(this.layer);}
-this.handlers.feature.activate();if(this.box&&this.handlers.box){this.handlers.box.activate();}}
-return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.active){this.handlers.feature.deactivate();if(this.handlers.box){this.handlers.box.deactivate();}
-if(this.layers){this.map.removeLayer(this.layer);}}
-return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},unselectAll:function(options){var layers=this.layers||[this.layer];var layer,feature;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=layer.selectedFeatures.length-1;i>=0;--i){feature=layer.selectedFeatures[i];if(!options||options.except!=feature){this.unselect(feature);}}}},clickFeature:function(feature){if(!this.hover){var selected=(OpenLayers.Util.indexOf(feature.layer.selectedFeatures,feature)>-1);if(selected){if(this.toggleSelect()){this.unselect(feature);}else if(!this.multipleSelect()){this.unselectAll({except:feature});}}else{if(!this.multipleSelect()){this.unselectAll({except:feature});}
-this.select(feature);}}},multipleSelect:function(){return this.multiple||(this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]);},toggleSelect:function(){return this.toggle||(this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]);},clickoutFeature:function(feature){if(!this.hover&&this.clickout){this.unselectAll();}},overFeature:function(feature){var layer=feature.layer;if(this.hover){if(this.highlightOnly){this.highlight(feature);}else if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}},outFeature:function(feature){if(this.hover){if(this.highlightOnly){if(feature._lastHighlighter==this.id){if(feature._prevHighlighter&&feature._prevHighlighter!=this.id){delete feature._lastHighlighter;var control=this.map.getControl(feature._prevHighlighter);if(control){control.highlight(feature);}}else{this.unhighlight(feature);}}}else{this.unselect(feature);}}},highlight:function(feature){var layer=feature.layer;var cont=this.events.triggerEvent("beforefeaturehighlighted",{feature:feature});if(cont!==false){feature._prevHighlighter=feature._lastHighlighter;feature._lastHighlighter=this.id;var style=this.selectStyle||this.renderIntent;layer.drawFeature(feature,style);this.events.triggerEvent("featurehighlighted",{feature:feature});}},unhighlight:function(feature){var layer=feature.layer;if(feature._prevHighlighter==undefined){delete feature._lastHighlighter;}else if(feature._prevHighlighter==this.id){delete feature._prevHighlighter;}else{feature._lastHighlighter=feature._prevHighlighter;delete feature._prevHighlighter;}
-layer.drawFeature(feature,feature.style||feature.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:feature});},select:function(feature){var cont=this.onBeforeSelect.call(this.scope,feature);var layer=feature.layer;if(cont!==false){cont=layer.events.triggerEvent("beforefeatureselected",{feature:feature});if(cont!==false){layer.selectedFeatures.push(feature);this.highlight(feature);if(!this.handlers.feature.lastFeature){this.handlers.feature.lastFeature=layer.selectedFeatures[0];}
-layer.events.triggerEvent("featureselected",{feature:feature});this.onSelect.call(this.scope,feature);}}},unselect:function(feature){var layer=feature.layer;this.unhighlight(feature);OpenLayers.Util.removeItem(layer.selectedFeatures,feature);layer.events.triggerEvent("featureunselected",{feature:feature});this.onUnselect.call(this.scope,feature);},selectBox:function(position){if(position instanceof OpenLayers.Bounds){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);if(!this.multipleSelect()){this.unselectAll();}
-var prevMultiple=this.multiple;this.multiple=true;var layers=this.layers||[this.layer];var layer;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=0,len=layer.features.length;i<len;++i){var feature=layer.features[i];if(!feature.getVisibility()){continue;}
-if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1){if(bounds.toGeometry().intersects(feature.geometry)){if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}}}}
-this.multiple=prevMultiple;}},setMap:function(map){this.handlers.feature.setMap(map);if(this.box){this.handlers.box.setMap(map);}
-OpenLayers.Control.prototype.setMap.apply(this,arguments);},setLayer:function(layers){var isActive=this.active;this.unselectAll();this.deactivate();if(this.layers){this.layer.destroy();this.layers=null;}
-this.initLayer(layers);this.handlers.feature.layer=this.layer;if(isActive){this.activate();}},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.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/dashboard.js b/web/js/dashboard.js
new file mode 100644
index 000000000..f436b8d18
--- /dev/null
+++ b/web/js/dashboard.js
@@ -0,0 +1,142 @@
+$(function(){
+
+ Chart.defaults.global.defaultFontSize = 16;
+
+ var setUpLabelsForChart = function(chart){
+ var $parent = $(chart.chart.canvas).parent();
+ var xGutterInPixels = 30;
+
+ var lasty = 0;
+ $.each(chart.config.data.datasets, function(datasetIndex, dataset){
+ var $label = $('.label[data-datasetIndex="' + datasetIndex + '"]', $parent);
+ var latestPoint = chart.getDatasetMeta(datasetIndex).data[ dataset.data.length - 1 ];
+ var y = latestPoint._model.y;
+ if (y < lasty) {
+ y = lasty;
+ }
+ $label.css({
+ top: y,
+ left: latestPoint._model.x + xGutterInPixels
+ });
+ lasty = y + $label.height() + 8;
+ });
+ };
+
+ // Returns an array `numberOfPoints` long, where the final item
+ // is `radius`, and all the other items are 0.
+ var pointRadiusFinalDot = function(numberOfPoints, radius){
+ var pointRadius = [];
+ for (var i=1; i < numberOfPoints; i++) {
+ pointRadius.push(0);
+ }
+ pointRadius.push(radius);
+ return pointRadius;
+ };
+
+ var makeSparkline = function makeSparkline($el, valuesStr, color, title){
+ var values = [];
+ var labels = [];
+ $.each(valuesStr.split(' '), function(key, value){
+ values.push(Number(value));
+ labels.push('');
+ });
+ var spread = Math.max.apply(null, values) - Math.min.apply(null, values);
+
+ return new Chart($el, {
+ type: 'line',
+ data: {
+ labels: labels,
+ datasets: [{
+ data: values,
+ pointRadius: pointRadiusFinalDot(values.length, 4),
+ pointBackgroundColor: color,
+ borderColor: color,
+ lineTension: 0
+ }]
+ },
+ options: {
+ layout: {
+ padding: {
+ top: 0,
+ right: 5,
+ bottom: 0,
+ left: 2
+ }
+ },
+ scales: {
+ xAxes: [{
+ type: "category",
+ display: false
+ }],
+ yAxes: [{
+ type: "linear",
+ display: false,
+ ticks: {
+ min: Math.min.apply(null, values) - (spread * 0.3),
+ max: Math.max.apply(null, values) + (spread * 0.3)
+ }
+ }]
+ }
+ }
+ });
+ };
+
+ $('.labelled-sparkline canvas').each(function(){
+ makeSparkline(
+ $(this),
+ $(this).data('values'),
+ $(this).data('color')
+ );
+ });
+
+ var $allReports = $('#chart-all-reports'),
+ labels = $allReports.data('labels'),
+ data0 = $allReports.data('values-reports'),
+ data1 = $allReports.data('values-fixed');
+ window.chartAllReports = new Chart($allReports, {
+ type: 'line',
+ data: {
+ labels: labels,
+ datasets: [{
+ data: data0,
+ pointRadius: pointRadiusFinalDot(data0.length, 4),
+ pointBackgroundColor: '#F4A140',
+ borderColor: '#F4A140'
+ }, {
+ data: data1,
+ pointRadius: pointRadiusFinalDot(data1.length, 4),
+ pointBackgroundColor: '#62B356',
+ borderColor: '#62B356'
+ }]
+ },
+ options: {
+ animation: {
+ onComplete: function(){
+ setUpLabelsForChart(this);
+ }
+ },
+ layout: {
+ padding: {
+ top: 4
+ }
+ },
+ scales: {
+ xAxes: [{
+ type: 'category',
+ gridLines: {
+ display: false
+ }
+ }],
+ yAxes: [{
+ type: "linear",
+ ticks: {
+ display: false
+ }
+ }]
+ },
+ onResize: function(chart, size){
+ setUpLabelsForChart(chart);
+ }
+ }
+ });
+});
diff --git a/web/js/dropzone.js.patch b/web/js/dropzone.js.patch
index 030b56a6a..b325b45d8 100644
--- a/web/js/dropzone.js.patch
+++ b/web/js/dropzone.js.patch
@@ -1,36 +1,50 @@
---- web/js/src/dropzone.orig.js 2016-06-17 21:29:47.000000000 +0100
-+++ web/js/src/dropzone.js 2016-06-20 11:40:55.000000000 +0100
-@@ -1469,7 +1469,7 @@
- return _results;
+--- dropzone.5.1.1.js 2017-06-30 09:46:43.000000000 +0100
++++ dropzone.exiffixes.js 2017-06-30 18:25:27.000000000 +0100
+@@ -1175,9 +1175,7 @@
+ };
+ if ((typeof EXIF !== "undefined" && EXIF !== null) && fixOrientation) {
+ loadExif = function(callback) {
+- return EXIF.getData(img, function() {
+- return callback(EXIF.getTag(this, 'Orientation'));
+- });
++ return callback(EXIF.getData(img));
+ };
+ }
+ return loadExif(function(orientation) {
+@@ -1601,7 +1599,7 @@
+ return results;
};
- Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i];
+ Dropzone.blacklistedBrowsers = [/opera.*(Windows Phone|Macintosh).*version\/12/i];
Dropzone.isBrowserSupported = function() {
- var capableBrowser, regex, _i, _len, _ref;
-@@ -1679,7 +1679,23 @@
- drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {
- var vertSquashRatio;
- vertSquashRatio = detectVerticalSquash(img);
-- return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);
-+ dh = dh / vertSquashRatio;
+ var capableBrowser, j, len, ref, regex;
+@@ -1904,6 +1902,27 @@
+ var array, ato, buf, imageData, mae, separatePoint;
+ imageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');
+ buf = this.decode64(imageData);
+
-+ /* An improved version of http://stackoverflow.com/a/28356942/669631 */
-+ var orientation = 0;
-+ switch (EXIF.getData(img)) {
-+ case 3: orientation = 2; break;
-+ case 6: orientation = 1; break;
-+ case 8: orientation = -1; break;
-+ }
-+ if (orientation) {
-+ ctx.translate(dx + dw/2, dy + dh/2);
-+ ctx.rotate(orientation * Math.PI / 2);
-+ dx = -dw/2;
-+ dy = -dh/2;
-+ }
++ // Certain browsers (I'm looking at you, Safari) 'helpfully' provide their
++ // own EXIF data in the JPEG returned from HTMLCanvasElement.toDataURL.
++ // Dropzone doesn't take this into account when restoring the original
++ // file's EXIF, meaning the final uploaded file has two sets of EXIF.
++ // Certain JPEG tools (I'm looking at you, jhead) don't really handle this
++ // very well, either ignoring the duplicate EXIF, picking the wrong one
++ // or refusing to process the file entirely.
++ // Seems like the best way out of this mess is to make sure the uploaded
++ // JPEG only ever has one EXIF header. In this case, we want to keep the
++ // EXIF from the original file.
++ // This little loop inspects the new JPEG from the toDataURL call and
++ // strips out any existing EXIF headers (technically any APP1 headers,
++ // but same difference in this case).
++ for (var i = 0; i < buf.length; i++) {
++ if (buf[i] === 255 && buf[i+1] === 225) {
++ var length = buf[i + 2] * 256 + buf[i + 3] + 2;
++ buf.splice(i, length);
++ }
++ }
+
-+ return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh);
- };
-
-
+ separatePoint = buf.indexOf(255, 3);
+ mae = buf.slice(0, separatePoint);
+ ato = buf.slice(separatePoint);
diff --git a/web/js/dropzone.min.js b/web/js/dropzone.min.js
deleted file mode 100644
index 38b48d962..000000000
--- a/web/js/dropzone.min.js
+++ /dev/null
@@ -1,61 +0,0 @@
-(function(){function k(k,m){for(var p="",l=m;l<m+4;l++)p+=String.fromCharCode(k.getUint8(l));if("Exif"!=p)return!1;l=m+6;if(18761==k.getUint16(l))p=!1;else if(19789==k.getUint16(l))p=!0;else return!1;if(42!=k.getUint16(l+2,!p))return!1;var r=k.getUint32(l+4,!p);if(8>r)return!1;var l=l+r,r=k.getUint16(l,!p),v,w;for(w=0;w<r;w++)if(v=l+12*w+2,274==k.getUint16(v,!p))return parseInt(k.getUint16(v+8,!p),10);return!1}var w={};window.EXIF=w;w.getData=function(q){if((q instanceof Image||q instanceof HTMLImageElement)&&
-!q.complete)return!1;var m=q.src;if(m.match(/^http/)){var m=document.createElement("canvas"),p=m.getContext("2d");m.width=q.width;m.height=q.height;p.drawImage(q,0,0);m=m.toDataURL("image/jpeg")}q=m.replace(/^data\:([^\;]+)\;base64,/gmi,"");m=atob(q);p=m.length;q=new ArrayBuffer(p);for(var l=new Uint8Array(q),r=0;r<p;r++)l[r]=m.charCodeAt(r);m=new DataView(q);if(255!=m.getUint8(0)||216!=m.getUint8(1))return!1;p=2;for(q=q.byteLength;p<q;){if(255!=m.getUint8(p))return!1;l=m.getUint8(p+1);if(225==l)return k(m,
-p+4);p+=2+m.getUint16(p+2)}}})();(function(){var k,w,q,m,p,l,r,v=[].slice,A={}.hasOwnProperty,B=function(e,c){function u(){this.constructor=e}for(var h in c)A.call(c,h)&&(e[h]=c[h]);u.prototype=c.prototype;e.prototype=new u;e.__super__=c.prototype;return e};l=function(){};w=function(){function e(){}e.prototype.addEventListener=e.prototype.on;e.prototype.on=function(c,e){this._callbacks=this._callbacks||{};this._callbacks[c]||(this._callbacks[c]=[]);this._callbacks[c].push(e);return this};e.prototype.emit=function(){var c,e,h,a,b;
-e=arguments[0];c=2<=arguments.length?v.call(arguments,1):[];this._callbacks=this._callbacks||{};if(h=this._callbacks[e])for(a=0,b=h.length;a<b;a++)e=h[a],e.apply(this,c);return this};e.prototype.removeListener=e.prototype.off;e.prototype.removeAllListeners=e.prototype.off;e.prototype.removeEventListener=e.prototype.off;e.prototype.off=function(c,e){var h,a,b,d,f;if(!this._callbacks||0===arguments.length)return this._callbacks={},this;a=this._callbacks[c];if(!a)return this;if(1===arguments.length)return delete this._callbacks[c],
-this;b=d=0;for(f=a.length;d<f;b=++d)if(h=a[b],h===e){a.splice(b,1);break}return this};return e}();k=function(e){function c(a,b){var d,f,g;this.element=a;this.version=c.version;this.defaultOptions.previewTemplate=this.defaultOptions.previewTemplate.replace(/\n*/g,"");this.clickableElements=[];this.listeners=[];this.files=[];"string"===typeof this.element&&(this.element=document.querySelector(this.element));if(!this.element||null==this.element.nodeType)throw Error("Invalid dropzone element.");if(this.element.dropzone)throw Error("Dropzone already attached.");
-c.instances.push(this);this.element.dropzone=this;d=null!=(g=c.optionsForElement(this.element))?g:{};this.options=k({},this.defaultOptions,d,null!=b?b:{});if(this.options.forceFallback||!c.isBrowserSupported())return this.options.fallback.call(this);null==this.options.url&&(this.options.url=this.element.getAttribute("action"));if(!this.options.url)throw Error("No URL provided.");if(this.options.acceptedFiles&&this.options.acceptedMimeTypes)throw Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
-this.options.acceptedMimeTypes&&(this.options.acceptedFiles=this.options.acceptedMimeTypes,delete this.options.acceptedMimeTypes);this.options.method=this.options.method.toUpperCase();(f=this.getExistingFallback())&&f.parentNode&&f.parentNode.removeChild(f);!1!==this.options.previewsContainer&&(this.previewsContainer=this.options.previewsContainer?c.getElement(this.options.previewsContainer,"previewsContainer"):this.element);this.options.clickable&&(this.clickableElements=!0===this.options.clickable?
-[this.element]:c.getElements(this.options.clickable,"clickable"));this.init()}var k,h;B(c,e);c.prototype.Emitter=w;c.prototype.events="drop dragstart dragend dragenter dragover dragleave addedfile addedfiles removedfile thumbnail error errormultiple processing processingmultiple uploadprogress totaluploadprogress sending sendingmultiple success successmultiple canceled canceledmultiple complete completemultiple reset maxfilesexceeded maxfilesreached queuecomplete".split(" ");c.prototype.defaultOptions=
-{url:null,method:"post",withCredentials:!1,parallelUploads:2,uploadMultiple:!1,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,filesizeBase:1E3,maxFiles:null,params:{},clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",
-dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",
-accept:function(a,b){return b()},init:function(){return l},forceFallback:!1,fallback:function(){var a,b,d,f,g;this.element.className=""+this.element.className+" dz-browser-not-supported";g=this.element.getElementsByTagName("div");d=0;for(f=g.length;d<f;d++)a=g[d],/(^| )dz-message($| )/.test(a.className)&&(b=a,a.className="dz-message");b||(b=c.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(b));if(a=b.getElementsByTagName("span")[0])null!=a.textContent?a.textContent=
-this.options.dictFallbackMessage:null!=a.innerText&&(a.innerText=this.options.dictFallbackMessage);return this.element.appendChild(this.getFallbackForm())},resize:function(a){var b,d,f;b={srcX:0,srcY:0,srcWidth:a.width,srcHeight:a.height};d=a.width/a.height;b.optWidth=this.options.thumbnailWidth;b.optHeight=this.options.thumbnailHeight;null==b.optWidth&&null==b.optHeight?(b.optWidth=b.srcWidth,b.optHeight=b.srcHeight):null==b.optWidth?b.optWidth=d*b.optHeight:null==b.optHeight&&(b.optHeight=1/d*b.optWidth);
-f=b.optWidth/b.optHeight;a.height<b.optHeight||a.width<b.optWidth?(b.trgHeight=b.srcHeight,b.trgWidth=b.srcWidth):d>f?(b.srcHeight=a.height,b.srcWidth=b.srcHeight*f):(b.srcWidth=a.width,b.srcHeight=b.srcWidth/f);b.srcX=(a.width-b.srcWidth)/2;b.srcY=(a.height-b.srcHeight)/2;return b},drop:function(a){return this.element.classList.remove("dz-drag-hover")},dragstart:l,dragend:function(a){return this.element.classList.remove("dz-drag-hover")},dragenter:function(a){return this.element.classList.add("dz-drag-hover")},
-dragover:function(a){return this.element.classList.add("dz-drag-hover")},dragleave:function(a){return this.element.classList.remove("dz-drag-hover")},paste:l,reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(a){var b,d,f,g,n,x;this.element===this.previewsContainer&&this.element.classList.add("dz-started");if(this.previewsContainer){a.previewElement=c.createElement(this.options.previewTemplate.trim());a.previewTemplate=a.previewElement;this.previewsContainer.appendChild(a.previewElement);
-g=a.previewElement.querySelectorAll("[data-dz-name]");d=0;for(f=g.length;d<f;d++)b=g[d],b.textContent=a.name;g=a.previewElement.querySelectorAll("[data-dz-size]");d=0;for(f=g.length;d<f;d++)b=g[d],b.innerHTML=this.filesize(a.size);this.options.addRemoveLinks&&(a._removeLink=c.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'+this.options.dictRemoveFile+"</a>"),a.previewElement.appendChild(a._removeLink));b=function(b){return function(d){d.preventDefault();d.stopPropagation();
-return a.status===c.UPLOADING?c.confirm(b.options.dictCancelUploadConfirmation,function(){return b.removeFile(a)}):b.options.dictRemoveFileConfirmation?c.confirm(b.options.dictRemoveFileConfirmation,function(){return b.removeFile(a)}):b.removeFile(a)}}(this);n=a.previewElement.querySelectorAll("[data-dz-remove]");x=[];f=0;for(g=n.length;f<g;f++)d=n[f],x.push(d.addEventListener("click",b));return x}},removedfile:function(a){var b;a.previewElement&&null!=(b=a.previewElement)&&b.parentNode.removeChild(a.previewElement);
-return this._updateMaxFilesReachedClass()},thumbnail:function(a,b){var d,f,c,n;if(a.previewElement){a.previewElement.classList.remove("dz-file-preview");n=a.previewElement.querySelectorAll("[data-dz-thumbnail]");f=0;for(c=n.length;f<c;f++)d=n[f],d.alt=a.name,d.src=b;return setTimeout(function(b){return function(){return a.previewElement.classList.add("dz-image-preview")}}(this),1)}},error:function(a,b){var d,f,c,n,x;if(a.previewElement){a.previewElement.classList.add("dz-error");"String"!==typeof b&&
-b.error&&(b=b.error);n=a.previewElement.querySelectorAll("[data-dz-errormessage]");x=[];f=0;for(c=n.length;f<c;f++)d=n[f],x.push(d.textContent=b);return x}},errormultiple:l,processing:function(a){if(a.previewElement&&(a.previewElement.classList.add("dz-processing"),a._removeLink))return a._removeLink.textContent=this.options.dictCancelUpload},processingmultiple:l,uploadprogress:function(a,b,d){var c,g,n;if(a.previewElement){g=a.previewElement.querySelectorAll("[data-dz-uploadprogress]");n=[];d=0;
-for(c=g.length;d<c;d++)a=g[d],"PROGRESS"===a.nodeName?n.push(a.value=b):n.push(a.style.width=""+b+"%");return n}},totaluploadprogress:l,sending:l,sendingmultiple:l,success:function(a){if(a.previewElement)return a.previewElement.classList.add("dz-success")},successmultiple:l,canceled:function(a){return this.emit("error",a,"Upload canceled.")},canceledmultiple:l,complete:function(a){a._removeLink&&(a._removeLink.textContent=this.options.dictRemoveFile);if(a.previewElement)return a.previewElement.classList.add("dz-complete")},
-completemultiple:l,maxfilesexceeded:l,maxfilesreached:l,queuecomplete:l,addedfiles:l,previewTemplate:'<div class="dz-preview dz-file-preview">\n <div class="dz-image"><img data-dz-thumbnail /></div>\n <div class="dz-details">\n <div class="dz-size"><span data-dz-size></span></div>\n <div class="dz-filename"><span data-dz-name></span></div>\n </div>\n <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n <div class="dz-error-message"><span data-dz-errormessage></span></div>\n <div class="dz-success-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Check</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>\n </g>\n </svg>\n </div>\n <div class="dz-error-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Error</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <g id="Check-+-Oval-2" sketch:type="MSLayerGroup" stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" sketch:type="MSShapeGroup"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>'};
-k=function(){var a,b,d,c,g,n,x;c=arguments[0];d=2<=arguments.length?v.call(arguments,1):[];n=0;for(x=d.length;n<x;n++)for(a in b=d[n],b)g=b[a],c[a]=g;return c};c.prototype.getAcceptedFiles=function(){var a,b,d,c,g;c=this.files;g=[];b=0;for(d=c.length;b<d;b++)a=c[b],a.accepted&&g.push(a);return g};c.prototype.getRejectedFiles=function(){var a,b,d,c,g;c=this.files;g=[];b=0;for(d=c.length;b<d;b++)a=c[b],a.accepted||g.push(a);return g};c.prototype.getFilesWithStatus=function(a){var b,d,c,g,n;g=this.files;
-n=[];d=0;for(c=g.length;d<c;d++)b=g[d],b.status===a&&n.push(b);return n};c.prototype.getQueuedFiles=function(){return this.getFilesWithStatus(c.QUEUED)};c.prototype.getUploadingFiles=function(){return this.getFilesWithStatus(c.UPLOADING)};c.prototype.getAddedFiles=function(){return this.getFilesWithStatus(c.ADDED)};c.prototype.getActiveFiles=function(){var a,b,d,f,g;f=this.files;g=[];b=0;for(d=f.length;b<d;b++)a=f[b],a.status!==c.UPLOADING&&a.status!==c.QUEUED||g.push(a);return g};c.prototype.init=
-function(){var a,b,d,f,g,n;"form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data");this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(c.createElement('<div class="dz-default dz-message"><span>'+this.options.dictDefaultMessage+"</span></div>"));this.clickableElements.length&&(d=function(a){return function(){a.hiddenFileInput&&a.hiddenFileInput.parentNode.removeChild(a.hiddenFileInput);a.hiddenFileInput=
-document.createElement("input");a.hiddenFileInput.setAttribute("type","file");(null==a.options.maxFiles||1<a.options.maxFiles)&&a.hiddenFileInput.setAttribute("multiple","multiple");a.hiddenFileInput.className="dz-hidden-input";null!=a.options.acceptedFiles&&a.hiddenFileInput.setAttribute("accept",a.options.acceptedFiles);null!=a.options.capture&&a.hiddenFileInput.setAttribute("capture",a.options.capture);a.hiddenFileInput.style.visibility="hidden";a.hiddenFileInput.style.position="absolute";a.hiddenFileInput.style.top=
-"0";a.hiddenFileInput.style.left="0";a.hiddenFileInput.style.height="0";a.hiddenFileInput.style.width="0";document.querySelector(a.options.hiddenInputContainer).appendChild(a.hiddenFileInput);return a.hiddenFileInput.addEventListener("change",function(){var b,c,f,g;c=a.hiddenFileInput.files;if(c.length)for(f=0,g=c.length;f<g;f++)b=c[f],a.addFile(b);a.emit("addedfiles",c);return d()})}}(this),d());this.URL=null!=(a=window.URL)?a:window.webkitURL;n=this.events;f=0;for(g=n.length;f<g;f++)a=n[f],this.on(a,
-this.options[a]);this.on("uploadprogress",function(a){return function(){return a.updateTotalUploadProgress()}}(this));this.on("removedfile",function(a){return function(){return a.updateTotalUploadProgress()}}(this));this.on("canceled",function(a){return function(b){return a.emit("complete",b)}}(this));this.on("complete",function(a){return function(b){if(0===a.getAddedFiles().length&&0===a.getUploadingFiles().length&&0===a.getQueuedFiles().length)return setTimeout(function(){return a.emit("queuecomplete")},
-0)}}(this));b=function(a){a.stopPropagation();return a.preventDefault?a.preventDefault():a.returnValue=!1};this.listeners=[{element:this.element,events:{dragstart:function(a){return function(b){return a.emit("dragstart",b)}}(this),dragenter:function(a){return function(d){b(d);return a.emit("dragenter",d)}}(this),dragover:function(a){return function(d){var c;try{c=d.dataTransfer.effectAllowed}catch(f){}d.dataTransfer.dropEffect="move"===c||"linkMove"===c?"move":"copy";b(d);return a.emit("dragover",
-d)}}(this),dragleave:function(a){return function(b){return a.emit("dragleave",b)}}(this),drop:function(a){return function(d){b(d);return a.drop(d)}}(this),dragend:function(a){return function(b){return a.emit("dragend",b)}}(this)}}];this.clickableElements.forEach(function(a){return function(b){return a.listeners.push({element:b,events:{click:function(d){(b!==a.element||d.target===a.element||c.elementInside(d.target,a.element.querySelector(".dz-message")))&&a.hiddenFileInput.click();return!0}}})}}(this));
-this.enable();return this.options.init.call(this)};c.prototype.destroy=function(){var a;this.disable();this.removeAllFiles(!0);null!=(a=this.hiddenFileInput)&&a.parentNode&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null);delete this.element.dropzone;return c.instances.splice(c.instances.indexOf(this),1)};c.prototype.updateTotalUploadProgress=function(){var a,b,d,c,g,n;b=d=0;if(this.getActiveFiles().length){n=this.getActiveFiles();c=0;for(g=n.length;c<
-g;c++)a=n[c],d+=a.upload.bytesSent,b+=a.upload.total;a=100*d/b}else a=100;return this.emit("totaluploadprogress",a,b,d)};c.prototype._getParamName=function(a){return"function"===typeof this.options.paramName?this.options.paramName(a):""+this.options.paramName+(this.options.uploadMultiple?"["+a+"]":"")};c.prototype.getFallbackForm=function(){var a,b;if(a=this.getExistingFallback())return a;a='<div class="dz-fallback">';this.options.dictFallbackText&&(a+="<p>"+this.options.dictFallbackText+"</p>");
-a+='<input type="file" name="'+this._getParamName(0)+'" '+(this.options.uploadMultiple?'multiple="multiple"':void 0)+' /><input type="submit" value="Upload!"></div>';a=c.createElement(a);"FORM"!==this.element.tagName?(b=c.createElement('<form action="'+this.options.url+'" enctype="multipart/form-data" method="'+this.options.method+'"></form>'),b.appendChild(a)):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method));return null!=b?b:a};
-c.prototype.getExistingFallback=function(){var a,b,d,c,g;b=function(a){var b,d,c;d=0;for(c=a.length;d<c;d++)if(b=a[d],/(^| )fallback($| )/.test(b.className))return b};g=["div","form"];d=0;for(c=g.length;d<c;d++)if(a=g[d],a=b(this.element.getElementsByTagName(a)))return a};c.prototype.setupEventListeners=function(){var a,b,d,c,g,n,e;n=this.listeners;e=[];c=0;for(g=n.length;c<g;c++)a=n[c],e.push(function(){var c,f;c=a.events;f=[];for(b in c)d=c[b],f.push(a.element.addEventListener(b,d,!1));return f}());
-return e};c.prototype.removeEventListeners=function(){var a,b,c,f,g,e,h;e=this.listeners;h=[];f=0;for(g=e.length;f<g;f++)a=e[f],h.push(function(){var f,g;f=a.events;g=[];for(b in f)c=f[b],g.push(a.element.removeEventListener(b,c,!1));return g}());return h};c.prototype.disable=function(){var a,b,c,f,g;this.clickableElements.forEach(function(a){return a.classList.remove("dz-clickable")});this.removeEventListeners();f=this.files;g=[];b=0;for(c=f.length;b<c;b++)a=f[b],g.push(this.cancelUpload(a));return g};
-c.prototype.enable=function(){this.clickableElements.forEach(function(a){return a.classList.add("dz-clickable")});return this.setupEventListeners()};c.prototype.filesize=function(a){var b,c,f,g,e,h,k,u;f=0;g="b";if(0<a){h=["TB","GB","MB","KB","b"];c=k=0;for(u=h.length;k<u;c=++k)if(e=h[c],b=Math.pow(this.options.filesizeBase,4-c)/10,a>=b){f=a/Math.pow(this.options.filesizeBase,4-c);g=e;break}f=Math.round(10*f)/10}return"<strong>"+f+"</strong> "+g};c.prototype._updateMaxFilesReachedClass=function(){return null!=
-this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")};c.prototype.drop=function(a){var b;a.dataTransfer&&(this.emit("drop",a),b=a.dataTransfer.files,this.emit("addedfiles",b),b.length&&((a=a.dataTransfer.items)&&a.length&&null!=a[0].webkitGetAsEntry?this._addFilesFromItems(a):
-this.handleFiles(b)))};c.prototype.paste=function(a){var b;if(null!=(null!=a?null!=(b=a.clipboardData)?b.items:void 0:void 0)&&(this.emit("paste",a),a=a.clipboardData.items,a.length))return this._addFilesFromItems(a)};c.prototype.handleFiles=function(a){var b,c,f,g;g=[];c=0;for(f=a.length;c<f;c++)b=a[c],g.push(this.addFile(b));return g};c.prototype._addFilesFromItems=function(a){var b,c,f,g,e;e=[];f=0;for(g=a.length;f<g;f++)c=a[f],null!=c.webkitGetAsEntry&&(b=c.webkitGetAsEntry())?b.isFile?e.push(this.addFile(c.getAsFile())):
-b.isDirectory?e.push(this._addFilesFromDirectory(b,b.name)):e.push(void 0):null!=c.getAsFile?null==c.kind||"file"===c.kind?e.push(this.addFile(c.getAsFile())):e.push(void 0):e.push(void 0);return e};c.prototype._addFilesFromDirectory=function(a,b){var c,f;c=a.createReader();f=function(a){return function(c){var d,f,e;f=0;for(e=c.length;f<e;f++)d=c[f],d.isFile?d.file(function(c){if(!a.options.ignoreHiddenFiles||"."!==c.name.substring(0,1))return c.fullPath=""+b+"/"+c.name,a.addFile(c)}):d.isDirectory&&
-a._addFilesFromDirectory(d,""+b+"/"+d.name)}}(this);return c.readEntries(f,function(a){return"undefined"!==typeof console&&null!==console?"function"===typeof console.log?console.log(a):void 0:void 0})};c.prototype.accept=function(a,b){return a.size>1048576*this.options.maxFilesize?b(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(a.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):c.isValidFile(a,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=
-this.options.maxFiles?(b(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",a)):this.options.accept.call(this,a,b):b(this.options.dictInvalidFileType)};c.prototype.addFile=function(a){a.upload={progress:0,total:a.size,bytesSent:0};this.files.push(a);a.status=c.ADDED;this.emit("addedfile",a);this._enqueueThumbnail(a);return this.accept(a,function(b){return function(c){c?(a.accepted=!1,b._errorProcessing([a],c)):(a.accepted=!0,b.options.autoQueue&&
-b.enqueueFile(a));return b._updateMaxFilesReachedClass()}}(this))};c.prototype.enqueueFiles=function(a){var b,c,f;c=0;for(f=a.length;c<f;c++)b=a[c],this.enqueueFile(b);return null};c.prototype.enqueueFile=function(a){if(a.status===c.ADDED&&!0===a.accepted){if(a.status=c.QUEUED,this.options.autoProcessQueue)return setTimeout(function(a){return function(){return a.processQueue()}}(this),0)}else throw Error("This file can't be queued because it has already been processed or was rejected.");};c.prototype._thumbnailQueue=
-[];c.prototype._processingThumbnail=!1;c.prototype._enqueueThumbnail=function(a){if(this.options.createImageThumbnails&&a.type.match(/image.*/)&&a.size<=1048576*this.options.maxThumbnailFilesize)return this._thumbnailQueue.push(a),setTimeout(function(a){return function(){return a._processThumbnailQueue()}}(this),0)};c.prototype._processThumbnailQueue=function(){if(!this._processingThumbnail&&0!==this._thumbnailQueue.length)return this._processingThumbnail=!0,this.createThumbnail(this._thumbnailQueue.shift(),
-function(a){return function(){a._processingThumbnail=!1;return a._processThumbnailQueue()}}(this))};c.prototype.removeFile=function(a){a.status===c.UPLOADING&&this.cancelUpload(a);this.files=r(this.files,a);this.emit("removedfile",a);if(0===this.files.length)return this.emit("reset")};c.prototype.removeAllFiles=function(a){var b,d,f,g;null==a&&(a=!1);g=this.files.slice();d=0;for(f=g.length;d<f;d++)b=g[d],(b.status!==c.UPLOADING||a)&&this.removeFile(b);return null};c.prototype.createThumbnail=function(a,
-b){var c;c=new FileReader;c.onload=function(f){return function(){if("image/svg+xml"===a.type)f.emit("thumbnail",a,c.result),null!=b&&b();else return f.createThumbnailFromUrl(a,c.result,b)}}(this);return c.readAsDataURL(a)};c.prototype.createThumbnailFromUrl=function(a,b,c,f){var g;g=document.createElement("img");f&&(g.crossOrigin=f);g.onload=function(b){return function(){var f,e,h,k,u,l,m;a.width=g.width;a.height=g.height;h=b.options.resize.call(b,a);null==h.trgWidth&&(h.trgWidth=h.optWidth);null==
-h.trgHeight&&(h.trgHeight=h.optHeight);f=document.createElement("canvas");e=f.getContext("2d");f.width=h.trgWidth;f.height=h.trgHeight;p(e,g,null!=(k=h.srcX)?k:0,null!=(u=h.srcY)?u:0,h.srcWidth,h.srcHeight,null!=(l=h.trgX)?l:0,null!=(m=h.trgY)?m:0,h.trgWidth,h.trgHeight);f=f.toDataURL("image/png");b.emit("thumbnail",a,f);if(null!=c)return c()}}(this);null!=c&&(g.onerror=c);return g.src=b};c.prototype.processQueue=function(){var a,b,c,f;b=this.options.parallelUploads;a=c=this.getUploadingFiles().length;
-if(!(c>=b)&&(f=this.getQueuedFiles(),0<f.length)){if(this.options.uploadMultiple)return this.processFiles(f.slice(0,b-c));for(;a<b&&f.length;)this.processFile(f.shift()),a++}};c.prototype.processFile=function(a){return this.processFiles([a])};c.prototype.processFiles=function(a){var b,d,f;d=0;for(f=a.length;d<f;d++)b=a[d],b.processing=!0,b.status=c.UPLOADING,this.emit("processing",b);this.options.uploadMultiple&&this.emit("processingmultiple",a);return this.uploadFiles(a)};c.prototype._getFilesWithXhr=
-function(a){var b,c,f,g,e;g=this.files;e=[];c=0;for(f=g.length;c<f;c++)b=g[c],b.xhr===a&&e.push(b);return e};c.prototype.cancelUpload=function(a){var b,d,f,g;if(a.status===c.UPLOADING){d=this._getFilesWithXhr(a.xhr);f=0;for(g=d.length;f<g;f++)b=d[f],b.status=c.CANCELED;a.xhr.abort();a=0;for(f=d.length;a<f;a++)b=d[a],this.emit("canceled",b);this.options.uploadMultiple&&this.emit("canceledmultiple",d)}else if((b=a.status)===c.ADDED||b===c.QUEUED)a.status=c.CANCELED,this.emit("canceled",a),this.options.uploadMultiple&&
-this.emit("canceledmultiple",[a]);if(this.options.autoProcessQueue)return this.processQueue()};h=function(){var a,b;b=arguments[0];a=2<=arguments.length?v.call(arguments,1):[];return"function"===typeof b?b.apply(this,a):b};c.prototype.uploadFile=function(a){return this.uploadFiles([a])};c.prototype.uploadFiles=function(a){var b,d,f,g,e,l,m,p,q,r,w,v,t,z,y;t=new XMLHttpRequest;e=0;for(v=a.length;e<v;e++)b=a[e],b.xhr=t;e=h(this.options.method,a);v=h(this.options.url,a);t.open(e,v,!0);t.withCredentials=
-!!this.options.withCredentials;r=null;f=function(c){return function(){var d,f,e;e=[];d=0;for(f=a.length;d<f;d++)b=a[d],e.push(c._errorProcessing(a,r||c.options.dictResponseError.replace("{{statusCode}}",t.status),t));return e}}(this);w=function(c){return function(d){var f,e,g;if(null!=d)for(f=100*d.loaded/d.total,e=0,g=a.length;e<g;e++)b=a[e],b.upload={progress:f,total:d.total,bytesSent:d.loaded};else{d=!0;f=100;e=0;for(g=a.length;e<g;e++){b=a[e];if(100!==b.upload.progress||b.upload.bytesSent!==b.upload.total)d=
-!1;b.upload.progress=f;b.upload.bytesSent=b.upload.total}if(d)return}g=[];d=0;for(e=a.length;d<e;d++)b=a[d],g.push(c.emit("uploadprogress",b,f,b.upload.bytesSent));return g}}(this);t.onload=function(b){return function(d){var e;if(a[0].status!==c.CANCELED&&4===t.readyState){r=t.responseText;if(t.getResponseHeader("content-type")&&~t.getResponseHeader("content-type").indexOf("application/json"))try{r=JSON.parse(r)}catch(g){d=g,r="Invalid JSON response from server."}w();return 200<=(e=t.status)&&300>
-e?b._finished(a,r,d):f()}}}(this);t.onerror=function(b){return function(){if(a[0].status!==c.CANCELED)return f()}}(this);(null!=(g=t.upload)?g:t).onprogress=w;e={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};this.options.headers&&k(e,this.options.headers);for(d in e)(g=e[d])&&t.setRequestHeader(d,g);d=new FormData;if(this.options.params)for(p in e=this.options.params,e)g=e[p],d.append(p,g);p=0;for(g=a.length;p<g;p++)b=a[p],this.emit("sending",b,t,d);this.options.uploadMultiple&&
-this.emit("sendingmultiple",a,t,d);if("FORM"===this.element.tagName)for(v=this.element.querySelectorAll("input, textarea, select, button"),g=0,e=v.length;g<e;g++)if(m=v[g],p=m.getAttribute("name"),q=m.getAttribute("type"),"SELECT"===m.tagName&&m.hasAttribute("multiple"))for(y=m.options,q=0,z=y.length;q<z;q++)m=y[q],m.selected&&d.append(p,m.value);else(!q||"checkbox"!==(l=q.toLowerCase())&&"radio"!==l||m.checked)&&d.append(p,m.value);l=p=0;for(g=a.length-1;0<=g?p<=g:p>=g;l=0<=g?++p:--p)d.append(this._getParamName(l),
-a[l],a[l].name);return this.submitRequest(t,d,a)};c.prototype.submitRequest=function(a,b,c){return a.send(b)};c.prototype._finished=function(a,b,d){var f,e,h;e=0;for(h=a.length;e<h;e++)f=a[e],f.status=c.SUCCESS,this.emit("success",f,b,d),this.emit("complete",f);this.options.uploadMultiple&&(this.emit("successmultiple",a,b,d),this.emit("completemultiple",a));if(this.options.autoProcessQueue)return this.processQueue()};c.prototype._errorProcessing=function(a,b,d){var e,g,h;g=0;for(h=a.length;g<h;g++)e=
-a[g],e.status=c.ERROR,this.emit("error",e,b,d),this.emit("complete",e);this.options.uploadMultiple&&(this.emit("errormultiple",a,b,d),this.emit("completemultiple",a));if(this.options.autoProcessQueue)return this.processQueue()};return c}(w);k.version="4.2.0";k.options={};k.optionsForElement=function(e){if(e.getAttribute("id"))return k.options[q(e.getAttribute("id"))]};k.instances=[];k.forElement=function(e){"string"===typeof e&&(e=document.querySelector(e));if(null==(null!=e?e.dropzone:void 0))throw Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
-return e.dropzone};k.autoDiscover=!0;k.discover=function(){var e,c,u,h,a;document.querySelectorAll?c=document.querySelectorAll(".dropzone"):(c=[],e=function(a){var d,e,g,h;h=[];e=0;for(g=a.length;e<g;e++)d=a[e],/(^| )dropzone($| )/.test(d.className)?h.push(c.push(d)):h.push(void 0);return h},e(document.getElementsByTagName("div")),e(document.getElementsByTagName("form")));a=[];u=0;for(h=c.length;u<h;u++)e=c[u],!1!==k.optionsForElement(e)?a.push(new k(e)):a.push(void 0);return a};k.blacklistedBrowsers=
-[/opera.*(Windows Phone|Macintosh).*version\/12/i];k.isBrowserSupported=function(){var e,c,u,h,a;e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a"))for(a=k.blacklistedBrowsers,u=0,h=a.length;u<h;u++)c=a[u],c.test(navigator.userAgent)&&(e=!1);else e=!1;else e=!1;return e};r=function(e,c){var k,h,a,b;b=[];h=0;for(a=e.length;h<a;h++)k=e[h],k!==c&&b.push(k);return b};q=function(e){return e.replace(/[\-_](\w)/g,
-function(c){return c.charAt(1).toUpperCase()})};k.createElement=function(e){var c;c=document.createElement("div");c.innerHTML=e;return c.childNodes[0]};k.elementInside=function(e,c){if(e===c)return!0;for(;e=e.parentNode;)if(e===c)return!0;return!1};k.getElement=function(e,c){var k;"string"===typeof e?k=document.querySelector(e):null!=e.nodeType&&(k=e);if(null==k)throw Error("Invalid `"+c+"` option provided. Please provide a CSS selector or a plain HTML element.");return k};k.getElements=function(e,
-c){var k,h,a,b,d;if(e instanceof Array){h=[];try{for(a=0,b=e.length;a<b;a++)k=e[a],h.push(this.getElement(k,c))}catch(f){h=null}}else if("string"===typeof e)for(h=[],d=document.querySelectorAll(e),a=0,b=d.length;a<b;a++)k=d[a],h.push(k);else null!=e.nodeType&&(h=[e]);if(null==h||!h.length)throw Error("Invalid `"+c+"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");return h};k.confirm=function(e,c,k){if(window.confirm(e))return c();if(null!=k)return k()};
-k.isValidFile=function(e,c){var k,h,a,b,d;if(!c)return!0;c=c.split(",");h=e.type;k=h.replace(/\/.*$/,"");b=0;for(d=c.length;b<d;b++)if(a=c[b],a=a.trim(),"."===a.charAt(0)){if(-1!==e.name.toLowerCase().indexOf(a.toLowerCase(),e.name.length-a.length))return!0}else if(/\/\*$/.test(a)){if(k===a.replace(/\/.*$/,""))return!0}else if(h===a)return!0;return!1};"undefined"!==typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new k(this,e)})});"undefined"!==typeof module&&
-null!==module?module.exports=k:window.Dropzone=k;k.ADDED="added";k.QUEUED="queued";k.ACCEPTED=k.QUEUED;k.UPLOADING="uploading";k.PROCESSING=k.UPLOADING;k.CANCELED="canceled";k.ERROR="error";k.SUCCESS="success";m=function(e){var c,k,h,a,b;h=e.naturalHeight;c=document.createElement("canvas");c.width=1;c.height=h;c=c.getContext("2d");c.drawImage(e,0,0);c=c.getImageData(0,0,1,h).data;b=0;for(a=k=h;a>b;)e=c[4*(a-1)+3],0===e?k=a:b=a,a=k+b>>1;h=a/h;return 0===h?1:h};p=function(e,c,k,h,a,b,d,f,g,n){var l;
-l=m(c);n/=l;l=0;switch(EXIF.getData(c)){case 3:l=2;break;case 6:l=1;break;case 8:l=-1}l&&(e.translate(d+g/2,f+n/2),e.rotate(l*Math.PI/2),d=-g/2,f=-n/2);return e.drawImage(c,k,h,a,b,d,f,g,n)};k._autoDiscoverFunction=function(){if(k.autoDiscover)return k.discover()};(function(e,c){var k,h,a,b,d,f,g,l,m;a=!1;m=!0;h=e.document;l=h.documentElement;k=h.addEventListener?"addEventListener":"attachEvent";g=h.addEventListener?"removeEventListener":"detachEvent";f=h.addEventListener?"":"on";b=function(d){if("readystatechange"!==
-d.type||"complete"===h.readyState)if(("load"===d.type?e:h)[g](f+d.type,b,!1),!a&&(a=!0))return c.call(e,d.type||d)};d=function(){try{l.doScroll("left")}catch(a){setTimeout(d,50);return}return b("poll")};if("complete"!==h.readyState){if(h.createEventObject&&l.doScroll){try{m=!e.frameElement}catch(p){}m&&d()}h[k](f+"DOMContentLoaded",b,!1);h[k](f+"readystatechange",b,!1);return e[k](f+"load",b,!1)}})(window,k._autoDiscoverFunction)}).call(this);
diff --git a/web/js/jquery.multi-select.js b/web/js/jquery.multi-select.js
index 6f3ae8de7..38921b147 100644
--- a/web/js/jquery.multi-select.js
+++ b/web/js/jquery.multi-select.js
@@ -2,9 +2,7 @@
// by mySociety
// https://github.com/mysociety/jquery-multi-select
-;(function($) {
-
- "use strict";
+(function($) {
var pluginName = "multiSelect",
defaults = {
@@ -122,7 +120,7 @@
this.$button.empty();
- if (selected.length == 0) {
+ if (selected.length === 0) {
this.$button.text( this.settings.noneText );
} else if ( (selected.length === options.length) && this.settings.allText) {
this.$button.text( this.settings.allText );
diff --git a/web/js/jquery.placeholder.min.js b/web/js/jquery.placeholder.min.js
deleted file mode 100644
index 122277a31..000000000
--- a/web/js/jquery.placeholder.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! http://mths.be/placeholder v2.0.5 by @mathias */
-;(function(f,h,$){var a='placeholder' in h.createElement('input'),d='placeholder' in h.createElement('textarea'),i=$.fn,c=$.valHooks,k,j;if(a&&d){j=i.placeholder=function(){return this};j.input=j.textarea=true}else{j=i.placeholder=function(){var l=this;l.filter((a?'textarea':':input')+'[placeholder]').not('.placeholder').bind({'focus.placeholder':b,'blur.placeholder':e}).data('placeholder-enabled',true).trigger('blur.placeholder');return l};j.input=a;j.textarea=d;k={get:function(m){var l=$(m);return l.data('placeholder-enabled')&&l.hasClass('placeholder')?'':m.value},set:function(m,n){var l=$(m);if(!l.data('placeholder-enabled')){return m.value=n}if(n==''){m.value=n;if(m!=h.activeElement){e.call(m)}}else{if(l.hasClass('placeholder')){b.call(m,true,n)||(m.value=n)}else{m.value=n}}return l}};a||(c.input=k);d||(c.textarea=k);$(function(){$(h).delegate('form','submit.placeholder',function(){var l=$('.placeholder',this).each(b);setTimeout(function(){l.each(e)},10)})});$(f).bind('beforeunload.placeholder',function(){$('.placeholder').each(function(){this.value=''})})}function g(m){var l={},n=/^jQuery\d+$/;$.each(m.attributes,function(p,o){if(o.specified&&!n.test(o.name)){l[o.name]=o.value}});return l}function b(m,n){var l=this,o=$(l);if(l.value==o.attr('placeholder')&&o.hasClass('placeholder')){if(o.data('placeholder-password')){o=o.hide().next().show().attr('id',o.removeAttr('id').data('placeholder-id'));if(m===true){return o[0].value=n}o.focus()}else{l.value='';o.removeClass('placeholder')}}}function e(){var q,l=this,p=$(l),m=p,o=this.id;if(l.value==''){if(l.type=='password'){if(!p.data('placeholder-textinput')){try{q=p.clone().attr({type:'text'})}catch(n){q=$('<input>').attr($.extend(g(this),{type:'text'}))}q.removeAttr('name').data({'placeholder-password':true,'placeholder-id':o}).bind('focus.placeholder',b);p.data({'placeholder-textinput':q,'placeholder-id':o}).before(q)}p=p.removeAttr('id').hide().prev().attr('id',o).show()}p.addClass('placeholder');p[0].value=p.attr('placeholder')}else{p.removeClass('placeholder')}}}(this,document,jQuery)); \ No newline at end of file
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index b53246279..8cc2e8e2c 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -2,7 +2,9 @@ var fixmystreet = fixmystreet || {};
(function() {
- fixmystreet.maps = {
+ fixmystreet.maps = fixmystreet.maps || {};
+
+ $.extend(fixmystreet.maps, {
// This function might be passed either an OpenLayers.LonLat (so has
// lon and lat), or an OpenLayers.Geometry.Point (so has x and y).
update_pin: function(lonlat) {
@@ -50,7 +52,7 @@ var fixmystreet = fixmystreet || {};
/* Already have a pin */
fixmystreet.markers.features[0].move(lonlat);
} else {
- var markers = fixmystreet.maps.markers_list( [ [ lonlat.lat, lonlat.lon, 'green' ] ], false );
+ var markers = fixmystreet.maps.markers_list( [ [ lonlat.lat, lonlat.lon, fixmystreet.pin_new_report_colour ] ], false );
fixmystreet.bbox_strategy.deactivate();
fixmystreet.markers.removeAllFeatures();
fixmystreet.markers.addFeatures( markers );
@@ -68,12 +70,8 @@ var fixmystreet = fixmystreet || {};
markers_list: function(pins, transform) {
var markers = [];
- var size = fixmystreet.maps.marker_size_for_zoom(
- fixmystreet.map.getZoom() + fixmystreet.zoomOffset
- );
- var selected_size = fixmystreet.maps.selected_marker_size_for_zoom(
- fixmystreet.map.getZoom() + fixmystreet.zoomOffset
- );
+ var size = fixmystreet.maps.marker_size();
+ var selected_size = fixmystreet.maps.selected_marker_size();
for (var i=0; i<pins.length; i++) {
var pin = pins[i];
var loc = new OpenLayers.Geometry.Point(pin[1], pin[0]);
@@ -84,12 +82,13 @@ var fixmystreet = fixmystreet || {};
fixmystreet.map.getProjectionObject()
);
}
- var marker_size = (pin[3] === window.selected_problem_id) ? selected_size : size;
+ var id = +pin[3];
+ var marker_size = (id === window.selected_problem_id) ? selected_size : size;
var marker = new OpenLayers.Feature.Vector(loc, {
colour: pin[2],
size: pin[5] || marker_size,
faded: 0,
- id: pin[3],
+ id: id,
title: pin[4] || '',
draggable: pin[6] === false ? false : true
});
@@ -99,12 +98,8 @@ var fixmystreet = fixmystreet || {};
},
markers_resize: function() {
- var size = fixmystreet.maps.marker_size_for_zoom(
- fixmystreet.map.getZoom() + fixmystreet.zoomOffset
- );
- var selected_size = fixmystreet.maps.selected_marker_size_for_zoom(
- fixmystreet.map.getZoom() + fixmystreet.zoomOffset
- );
+ var size = fixmystreet.maps.marker_size();
+ var selected_size = fixmystreet.maps.selected_marker_size();
for (var i = 0; i < fixmystreet.markers.features.length; i++) {
if (fixmystreet.markers.features[i].attributes.id == window.selected_problem_id) {
fixmystreet.markers.features[i].attributes.size = selected_size;
@@ -119,7 +114,8 @@ var fixmystreet = fixmystreet || {};
return fixmystreet.markers.getFeaturesByAttribute('id', problem_id)[0];
},
- marker_size_for_zoom: function(zoom) {
+ marker_size: function() {
+ var zoom = fixmystreet.map.getZoom() + fixmystreet.zoomOffset;
if (zoom >= 15) {
return window.selected_problem_id ? 'small' : 'normal';
} else if (zoom >= 13) {
@@ -129,7 +125,8 @@ var fixmystreet = fixmystreet || {};
}
},
- selected_marker_size_for_zoom: function(zoom) {
+ selected_marker_size: function() {
+ var zoom = fixmystreet.map.getZoom() + fixmystreet.zoomOffset;
if (zoom >= 15) {
return 'big';
} else if (zoom >= 13) {
@@ -198,7 +195,7 @@ var fixmystreet = fixmystreet || {};
}
fixmystreet.markers.redraw();
}
- };
+ });
var drag = {
activate: function() {
@@ -211,7 +208,9 @@ var fixmystreet = fixmystreet || {};
this._drag.activate();
},
deactivate: function() {
- this._drag && this._drag.deactivate();
+ if (this._drag) {
+ this._drag.deactivate();
+ }
}
};
@@ -310,7 +309,7 @@ var fixmystreet = fixmystreet || {};
var filter_categories = replace_query_parameter(qs, 'filter_categories', 'filter_category');
var filter_statuses = replace_query_parameter(qs, 'statuses', 'status');
var sort_key = replace_query_parameter(qs, 'sort', 'sort');
- delete qs['p'];
+ delete qs.p;
var new_url;
if ($.isEmptyObject(qs)) {
new_url = location.href.replace(location.search, "");
@@ -365,6 +364,37 @@ var fixmystreet = fixmystreet || {};
]);
var loaded = 0;
var new_geometry = new OpenLayers.Geometry.Polygon(lr);
+ var style_area = function() {
+ loaded++;
+ var style = this.styleMap.styles['default'];
+ if ( fixmystreet.area_format ) {
+ style.defaultStyle = fixmystreet.area_format;
+ } else {
+ $.extend(style.defaultStyle, { fillColor: 'black', strokeColor: 'black' });
+ }
+ var geometry = this.features[0].geometry;
+ if (geometry.CLASS_NAME == 'OpenLayers.Geometry.Collection') {
+ $.each(geometry.components, function(i, polygon) {
+ new_geometry.addComponents(polygon.components);
+ extent.extend(polygon.getBounds());
+ });
+ } else if (geometry.CLASS_NAME == 'OpenLayers.Geometry.Polygon') {
+ new_geometry.addComponents(geometry.components);
+ extent.extend(this.getDataExtent());
+ }
+ if (loaded == fixmystreet.area.length) {
+ var f = this.features[0].clone();
+ f.geometry = new_geometry;
+ this.removeAllFeatures();
+ this.addFeatures([f]);
+ var qs = parse_query_string();
+ if (!qs.bbox) {
+ zoomToBounds(extent);
+ }
+ } else {
+ fixmystreet.map.removeLayer(this);
+ }
+ };
for (var i=0; i<fixmystreet.area.length; i++) {
var area = new OpenLayers.Layer.Vector("KML", {
renderers: ['SVGBig', 'VML', 'Canvas'],
@@ -375,37 +405,7 @@ var fixmystreet = fixmystreet || {};
})
});
fixmystreet.map.addLayer(area);
- area.events.register('loadend', area, function(a,b,c) {
- loaded++;
- var style = this.styleMap.styles['default'];
- if ( fixmystreet.area_format ) {
- style.defaultStyle = fixmystreet.area_format;
- } else {
- $.extend(style.defaultStyle, { fillColor: 'black', strokeColor: 'black' });
- }
- var geometry = this.features[0].geometry;
- if (geometry.CLASS_NAME == 'OpenLayers.Geometry.Collection') {
- $.each(geometry.components, function(i, polygon) {
- new_geometry.addComponents(polygon.components)
- extent.extend(polygon.getBounds());
- });
- } else if (geometry.CLASS_NAME == 'OpenLayers.Geometry.Polygon') {
- new_geometry.addComponents(geometry.components);
- extent.extend(this.getDataExtent());
- }
- if (loaded == fixmystreet.area.length) {
- var f = this.features[0].clone();
- f.geometry = new_geometry;
- this.removeAllFeatures();
- this.addFeatures([f]);
- var qs = parse_query_string();
- if (!qs.bbox) {
- zoomToBounds(extent);
- }
- } else {
- fixmystreet.map.removeLayer(this);
- }
- });
+ area.events.register('loadend', area, style_area);
}
}
@@ -541,6 +541,9 @@ var fixmystreet = fixmystreet || {};
fixmystreet.map.addControl( fixmystreet.select_feature );
fixmystreet.select_feature.activate();
fixmystreet.map.events.register( 'zoomend', null, fixmystreet.maps.markers_resize );
+ fixmystreet.map.events.register( 'zoomend', null, function() {
+ fixmystreet.run(fixmystreet.maps.show_shortlist_control);
+ });
// Set up the event handlers to populate the filters and react to them changing
$("#filter_categories").on("change.filters", categories_or_status_changed);
@@ -564,22 +567,14 @@ var fixmystreet = fixmystreet || {};
$('#hide_pins_link').click(function(e) {
e.preventDefault();
- var showhide = [
- 'Show pins', 'Hide pins',
- 'Dangos pinnau', 'Cuddio pinnau',
- "Vis nåler", "Skjul nåler",
- "Zeige Stecknadeln", "Stecknadeln ausblenden"
- ];
- 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];
- }
+ if (this.innerHTML == translation_strings.show_pins) {
+ fixmystreet.markers.setVisibility(true);
+ fixmystreet.select_feature.activate();
+ this.innerHTML = translation_strings.hide_pins;
+ } else if (this.innerHTML == translation_strings.hide_pins) {
+ fixmystreet.markers.setVisibility(false);
+ fixmystreet.select_feature.deactivate();
+ this.innerHTML = translation_strings.show_pins;
}
});
@@ -680,9 +675,9 @@ var fixmystreet = fixmystreet || {};
(function() {
var timeout;
- $('.item-list--reports').on('mouseenter', '.item-list--reports__item', function(){
+ $('#js-reports-list').on('mouseenter', '.item-list--reports__item', function(){
var href = $('a', this).attr('href');
- var id = parseInt(href.replace(/^.*[/]([0-9]+)$/, '$1'));
+ var id = parseInt(href.replace(/^.*[\/]([0-9]+)$/, '$1'),10);
clearTimeout(timeout);
fixmystreet.maps.markers_highlight(id);
}).on('mouseleave', '.item-list--reports__item', function(){
@@ -707,14 +702,6 @@ OpenLayers.Control.PanZoomFMS = OpenLayers.Class(OpenLayers.Control.PanZoom, {
btn.action = id;
btn.className = "olButton";
this.div.appendChild(btn);
- if (OpenLayers.VERSION_NUMBER.indexOf('2.11') > -1) {
- btn.map = this.map;
- OpenLayers.Event.observe(btn, "mousedown", OpenLayers.Function.bindAsEventListener(this.buttonDown, btn));
- var slideFactorPixels = this.slideFactor;
- btn.getSlideFactor = function() {
- return slideFactorPixels;
- };
- }
this.buttons.push(btn);
return btn;
},
@@ -752,6 +739,10 @@ OpenLayers.Control.PermalinkFMS = OpenLayers.Class(OpenLayers.Control.Permalink,
}
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.base == '/around') {
+ href += '&js=1';
+ }
+
if (this.anchor && !this.element) {
window.location.href = href;
}
@@ -864,10 +855,6 @@ OpenLayers.Format.FixMyStreet = OpenLayers.Class(OpenLayers.Format.JSON, {
} else {
obj = json;
}
- var current;
- if (typeof(obj.current) != 'undefined' && (current = document.getElementById('current'))) {
- current.innerHTML = obj.current;
- }
var reports_list;
if (typeof(obj.reports_list) != 'undefined' && (reports_list = document.getElementById('js-reports-list'))) {
reports_list.innerHTML = obj.reports_list;
@@ -931,7 +918,7 @@ OpenLayers.Control.DragFeatureFMS = OpenLayers.Class(OpenLayers.Control.DragFeat
return false;
}
}
-})
+});
OpenLayers.Renderer.SVGBig = OpenLayers.Class(OpenLayers.Renderer.SVG, {
MAX_PIXEL: 15E7,
diff --git a/web/js/map-google.js b/web/js/map-google.js
index be2df8502..596e4f8ee 100644
--- a/web/js/map-google.js
+++ b/web/js/map-google.js
@@ -114,12 +114,9 @@ fixmystreet.maps = {};
/* Pan data handler */
function 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;
+ var reports_list;
+ if (typeof(obj.reports_list) != 'undefined' && (reports_list = document.getElementById('js-reports-list'))) {
+ reports_list.innerHTML = obj.reports_list;
}
fixmystreet.markers = markers_list( obj.pins, false );
}
@@ -214,24 +211,16 @@ fixmystreet.maps = {};
$('#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];
+ if (this.innerHTML == translation_strings.show_pins) {
+ for (m=0; m<fixmystreet.markers.length; m++) {
+ fixmystreet.markers[m].setMap(fixmystreet.map);
+ }
+ this.innerHTML = translation_strings.hide_pins;
+ } else if (this.innerHTML == translation_strings.hide_pins) {
+ for (m=0; m<fixmystreet.markers.length; m++) {
+ fixmystreet.markers[m].setMap(null);
}
+ this.innerHTML = translation_strings.show_pins;
}
});
diff --git a/web/js/map-wmts-bristol.js b/web/js/map-wmts-bristol.js
index 70cd1b66b..4a48da27f 100644
--- a/web/js/map-wmts-bristol.js
+++ b/web/js/map-wmts-bristol.js
@@ -1,4 +1,4 @@
-/*
+/*
* Maps for FMS using Bristol City Council's WMTS tile server
*/
@@ -102,7 +102,7 @@ fixmystreet.maps.matrix_ids = [
}
];
-/*
+/*
* maps.config() is called on dom ready in map-OpenLayers.js
* to setup the way the map should operate.
*/
@@ -125,11 +125,12 @@ fixmystreet.maps.config = function() {
if ( fixmystreet.page == 'report' ) {
fixmystreet.controls.push( new OpenLayers.Control.PermalinkFMS('key-tool-problems-nearby', '/around') );
}
-
+
this.setup_wmts_base_map();
};
-fixmystreet.maps.marker_size_for_zoom = function(zoom) {
+fixmystreet.maps.marker_size = function() {
+ var zoom = fixmystreet.map.getZoom() + fixmystreet.zoomOffset;
if (zoom >= 7) {
return 'normal';
} else if (zoom >= 4) {
diff --git a/web/js/map-wmts-zurich.js b/web/js/map-wmts-zurich.js
index 18a858064..6bc1c5e14 100644
--- a/web/js/map-wmts-zurich.js
+++ b/web/js/map-wmts-zurich.js
@@ -1,5 +1,5 @@
-/*
- * Maps for FMZ using Zurich council's WMTS tile server
+/*
+ * Maps for FMZ using Zurich council's WMTS tile server
*/
// From 'fullExtent' from http://www.gis.stadt-zuerich.ch/maps/rest/services/tiled95/LuftbildHybrid/MapServer?f=pjson
@@ -140,7 +140,7 @@ fixmystreet.maps.matrix_ids = [
})();
-/*
+/*
* maps.config() is called on dom ready in map-OpenLayers.js
* to setup the way the map should operate.
*/
@@ -165,7 +165,8 @@ fixmystreet.maps.config = function() {
fixmystreet.area_format = { fillColor: 'none', strokeWidth: 4, strokeColor: 'black' };
};
-fixmystreet.maps.marker_size_for_zoom = function(zoom) {
+fixmystreet.maps.marker_size = function() {
+ var zoom = fixmystreet.map.getZoom() + fixmystreet.zoomOffset;
if (zoom >= 6) {
return 'normal';
} else if (zoom >= 3) {
diff --git a/web/js/select2/LICENSE b/web/js/select2/LICENSE
deleted file mode 100644
index 3c98f3df4..000000000
--- a/web/js/select2/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-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
deleted file mode 100644
index 887cbf84d..000000000
--- a/web/js/select2/bower.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "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
deleted file mode 100755
index 92fe0e959..000000000
--- a/web/js/select2/release.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/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
deleted file mode 100644
index 909971074..000000000
--- a/web/js/select2/select2-bootstrap.css
+++ /dev/null
@@ -1,87 +0,0 @@
-.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
deleted file mode 100644
index 5b33f7e54..000000000
--- a/web/js/select2/select2-spinner.gif
+++ /dev/null
Binary files differ
diff --git a/web/js/select2/select2.css b/web/js/select2/select2.css
deleted file mode 100644
index 2b32ed6f2..000000000
--- a/web/js/select2/select2.css
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
-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
deleted file mode 100644
index b426c7058..000000000
--- a/web/js/select2/select2.jquery.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "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
deleted file mode 100644
index 3b5e8e280..000000000
--- a/web/js/select2/select2.js
+++ /dev/null
@@ -1,3255 +0,0 @@
-/*
-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 = {
- '\\': '&#92;',
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&quot;',
- "'": '&#39;',
- "/": '&#47;'
- };
-
- 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'>&nbsp;</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
deleted file mode 100644
index bffe4c241..000000000
--- a/web/js/select2/select2.min.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-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={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};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'>&nbsp;</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
deleted file mode 100644
index 1d804ffb9..000000000
--- a/web/js/select2/select2.png
+++ /dev/null
Binary files differ
diff --git a/web/js/select2/select2_locale_ar.js b/web/js/select2/select2_locale_ar.js
deleted file mode 100644
index 5ce010631..000000000
--- a/web/js/select2/select2_locale_ar.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 2d8b9ca2b..000000000
--- a/web/js/select2/select2_locale_bg.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index bdcdaa798..000000000
--- a/web/js/select2/select2_locale_ca.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index b3c748c23..000000000
--- a/web/js/select2/select2_locale_cs.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * 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
deleted file mode 100644
index dbce3e174..000000000
--- a/web/js/select2/select2_locale_da.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 01f94ed4f..000000000
--- a/web/js/select2/select2_locale_de.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 36e0f4d91..000000000
--- a/web/js/select2/select2_locale_el.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index f76b37498..000000000
--- a/web/js/select2/select2_locale_en.js.template
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 241584caa..000000000
--- a/web/js/select2/select2_locale_es.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index a4045d22d..000000000
--- a/web/js/select2/select2_locale_et.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 05665f5fc..000000000
--- a/web/js/select2/select2_locale_eu.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 5465fc8e0..000000000
--- a/web/js/select2/select2_locale_fa.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index b056e88ae..000000000
--- a/web/js/select2/select2_locale_fi.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 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
deleted file mode 100644
index f8d3e4841..000000000
--- a/web/js/select2/select2_locale_fr.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 1017c202e..000000000
--- a/web/js/select2/select2_locale_gl.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * 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
deleted file mode 100644
index dd72eaa63..000000000
--- a/web/js/select2/select2_locale_he.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
-* 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
deleted file mode 100644
index b0615405e..000000000
--- a/web/js/select2/select2_locale_hr.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 572dea96d..000000000
--- a/web/js/select2/select2_locale_hu.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 59a896ac5..000000000
--- a/web/js/select2/select2_locale_id.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index b10073b5f..000000000
--- a/web/js/select2/select2_locale_is.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 98369dda2..000000000
--- a/web/js/select2/select2_locale_it.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 81106e78a..000000000
--- a/web/js/select2/select2_locale_ja.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 864906b6b..000000000
--- a/web/js/select2/select2_locale_ko.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index dbb1f09d5..000000000
--- a/web/js/select2/select2_locale_lt.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 2c05cfdab..000000000
--- a/web/js/select2/select2_locale_lv.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 69e3981ab..000000000
--- a/web/js/select2/select2_locale_mk.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index c7202e1dd..000000000
--- a/web/js/select2/select2_locale_ms.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 8061a28e1..000000000
--- a/web/js/select2/select2_locale_nl.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 0831360f0..000000000
--- a/web/js/select2/select2_locale_no.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 1d5b32730..000000000
--- a/web/js/select2/select2_locale_pl.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 5b2ff2f05..000000000
--- a/web/js/select2/select2_locale_pt-BR.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 1a40e800b..000000000
--- a/web/js/select2/select2_locale_pt-PT.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 88b3ac413..000000000
--- a/web/js/select2/select2_locale_ro.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 3da956a8c..000000000
--- a/web/js/select2/select2_locale_ru.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 8d4e46afe..000000000
--- a/web/js/select2/select2_locale_sk.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 9f09de30f..000000000
--- a/web/js/select2/select2_locale_sv.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 6b38b1581..000000000
--- a/web/js/select2/select2_locale_th.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index b47a2fad6..000000000
--- a/web/js/select2/select2_locale_tr.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 58d31e762..000000000
--- a/web/js/select2/select2_locale_ua.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 0a45dfc9c..000000000
--- a/web/js/select2/select2_locale_vi.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 49d8e5994..000000000
--- a/web/js/select2/select2_locale_zh-CN.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * 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
deleted file mode 100755
index 3d447d68a..000000000
--- a/web/js/select2/select2_locale_zh-TW.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * 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
deleted file mode 100644
index 4bdd5c961..000000000
--- a/web/js/select2/select2x2.png
+++ /dev/null
Binary files differ
diff --git a/web/js/OpenLayers.Projection.OrdnanceSurvey.js b/web/vendor/OpenLayers.Projection.OrdnanceSurvey.js
index 85574d8e0..85574d8e0 100644
--- a/web/js/OpenLayers.Projection.OrdnanceSurvey.js
+++ b/web/vendor/OpenLayers.Projection.OrdnanceSurvey.js
diff --git a/web/js/OpenLayers/OpenLayers.angus.js b/web/vendor/OpenLayers/OpenLayers.angus.js
index 9b4942176..9b4942176 100644
--- a/web/js/OpenLayers/OpenLayers.angus.js
+++ b/web/vendor/OpenLayers/OpenLayers.angus.js
diff --git a/web/js/OpenLayers/OpenLayers.bristol.js b/web/vendor/OpenLayers/OpenLayers.bristol.js
index 0404c077d..0404c077d 100644
--- a/web/js/OpenLayers/OpenLayers.bristol.js
+++ b/web/vendor/OpenLayers/OpenLayers.bristol.js
diff --git a/web/js/OpenLayers/OpenLayers.fixmystreet.js b/web/vendor/OpenLayers/OpenLayers.fixmystreet.js
index df0a88c98..df0a88c98 100644
--- a/web/js/OpenLayers/OpenLayers.fixmystreet.js
+++ b/web/vendor/OpenLayers/OpenLayers.fixmystreet.js
diff --git a/web/js/OpenLayers/OpenLayers.google.js b/web/vendor/OpenLayers/OpenLayers.google.js
index 7a36bf960..7a36bf960 100644
--- a/web/js/OpenLayers/OpenLayers.google.js
+++ b/web/vendor/OpenLayers/OpenLayers.google.js
diff --git a/web/vendor/OpenLayers/OpenLayers.zurich.js b/web/vendor/OpenLayers/OpenLayers.zurich.js
new file mode 100644
index 000000000..d3bc0179c
--- /dev/null
+++ b/web/vendor/OpenLayers/OpenLayers.zurich.js
@@ -0,0 +1,620 @@
+/*
+
+ OpenLayers.js -- OpenLayers Map Viewer Library
+
+ Copyright (c) 2006-2015 by OpenLayers Contributors
+ Published under the 2-clause BSD license.
+ See https://raw.githubusercontent.com/openlayers/ol2/master/license.txt for the full text of the license,
+ and https://raw.githubusercontent.com/openlayers/ol2/master/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/ol2>)
+
+*/
+
+/**
+ * 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.14 dev",singleFile:!0,_getScriptLocation:function(){for(var a=/(^|(.*?\/))(OpenLayers[^\/]*?\.js)(\?|$)/,b=document.getElementsByTagName("script"),c,d="",e=0,f=b.length;e<f;e++)if(c=b[e].getAttribute("src"))if(c=c.match(a)){d=c[1];break}return function(){return d}}(),ImgPath:""};OpenLayers.Class=function(){var a=arguments.length,b=arguments[0],c=arguments[a-1],d="function"==typeof c.initialize?c.initialize:function(){b.prototype.initialize.apply(this,arguments)};1<a?(a=[d,b].concat(Array.prototype.slice.call(arguments).slice(1,a-1),c),OpenLayers.inherit.apply(null,a)):d.prototype=c;return d};
+OpenLayers.inherit=function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;var d;c=2;for(d=arguments.length;c<d;c++){var 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+=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){var d;a=e.split(/\.+/);for(e=0;e<a.length;e++){0==e&&(d=b);if(void 0===d)break;d=
+d[a[e]]}"function"==typeof d&&(d=c?d.apply(null,c):d());return"undefined"==typeof d?"undefined":d})},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.call(arguments,2);return function(){var d=c.concat(Array.prototype.slice.call(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);a=Math.round(this.left*c)/c;var d=Math.round(this.bottom*c)/c,e=Math.round(this.right*c)/c;c=Math.round(this.top*c)/c;return!0===b?d+","+a+","+c+","+
+e:a+","+d+","+e+","+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());if("OpenLayers.LonLat"==b.CLASS_NAME){var c=b.lon;b=b.lat}else c=b.x,b=b.y;return new OpenLayers.Bounds((this.left-c)*a+c,(this.bottom-b)*a+b,(this.right-c)*a+c,(this.top-b)*
+a+b)},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(),
+c=this.containsLonLat({lon:a.lon-Math.round((a.lon-(d.left+d.right)/2)/c)*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);return 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){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;var 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+=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);a=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,a.x);this.top=Math.max(e.y,a.y);return this},wrapDateLine:function(a,b){b=b||{};var c=b.leftTolerance||0;b=b.rightTolerance||0;var d=this.clone();if(a){for(var e=a.getWidth();d.left<a.left&&d.right-b<=a.left;)d=d.add(e,0);for(;d.left+c>=a.right&&d.right>a.right;)d=d.add(-e,0);c=d.left+c;c<a.right&&c>a.left&&d.right-b>a.right&&(d=d.add(-e,0))}return d},CLASS_NAME:"OpenLayers.Bounds"});
+OpenLayers.Bounds.fromString=function(a,b){a=a.split(",");return OpenLayers.Bounds.fromArray(a,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=""+("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){a=a.className;return!!a&&(new RegExp("(^|\\s)"+b+"(\\s|$)")).test(a)},
+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(new 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){a=OpenLayers.Projection.transform({x:this.lon,y:this.lat},a,b);this.lon=a.x;this.lat=a.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&&(b=function(){k.style.display="";OpenLayers.Event.stopObservingElement(k)},k.style.display="none",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]);var 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;b&&(a=(a+" ").split(/[?&]/),c+=" "===a.pop()?b:a.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(a=a.relatedTarget?a.relatedTarget:a.toElement;a!=b&&null!=a;)a=a.parentNode;return a!=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){var c=OpenLayers.Util.VincentyConstants,d=c.a,e=c.b;c=c.f;var f=OpenLayers.Util.rad(b.lon-a.lon);a=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(a.lat)));var g=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(b.lat)));b=Math.sin(a);a=Math.cos(a);var h=Math.sin(g);g=Math.cos(g);for(var k=f,l=2*Math.PI,m=20;1E-12<Math.abs(k-l)&&0<--m;){var p=Math.sin(k);var n=Math.cos(k);var q=Math.sqrt(g*p*g*p+(a*h-b*g*n)*(a*h-b*g*n));if(0==q)return 0;var r=b*h+a*g*n;n=Math.atan2(q,
+r);var t=Math.asin(a*g*p/q);var u=Math.cos(t)*Math.cos(t);p=r-2*b*h/u;var v=c/16*u*(4+c*(4-3*u));l=k;k=f+(1-v)*c*Math.sin(t)*(n+v*q*(p+v*r*(-1+2*p*p)))}if(0==m)return NaN;d=u*(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))))*(n-c*q*(p+c/4*(r*(-1+2*p*p)-c/6*p*(-3+4*q*q)*(-3+4*p*p))))).toFixed(3)/1E3};
+OpenLayers.Util.destinationVincenty=function(a,b,c){var d=OpenLayers.Util,e=d.VincentyConstants,f=e.a,g=e.b;e=e.f;var h=a.lon,k=a.lat;a=d.rad(b);b=Math.sin(a);a=Math.cos(a);var l=(1-e)*Math.tan(d.rad(k));k=1/Math.sqrt(1+l*l);var m=l*k,p=Math.atan2(l,a);l=k*b;var n=1-l*l;f=n*(f*f-g*g)/(g*g);var q=1+f/16384*(4096+f*(-768+f*(320-175*f))),r=f/1024*(256+f*(-128+f*(74-47*f)));f=c/(g*q);for(var t=2*Math.PI;1E-12<Math.abs(f-t);){var u=Math.cos(2*p+f);var v=Math.sin(f);var x=Math.cos(f);var w=r*v*(u+r/4*(x*
+(-1+2*u*u)-r/6*u*(-3+4*v*v)*(-3+4*u*u)));t=f;f=c/(g*q)+w}c=m*v-k*x*a;c=Math.atan2(m*x+k*v*a,(1-e)*Math.sqrt(l*l+c*c));g=e/16*n*(4+e*(4-3*n));return new OpenLayers.LonLat(h+d.deg(Math.atan2(v*b,k*x-m*v*a)-(1-g)*e*l*(f+g*v*(u+g*x*(-1+2*u*u)))),d.deg(c))};
+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,"?")){c=a.indexOf("?")+1;var d=OpenLayers.String.contains(a,"#")?a.indexOf("#"):a.length;c=a.substring(c,d)}a={};c=c.split(/[&;]/);d=0;for(var e=c.length;d<e;++d){var f=c[d].split("=");if(f[0]){var g=f[0];try{g=decodeURIComponent(g)}catch(h){g=unescape(g)}f=(f[1]||"").replace(/\+/g," ");try{f=decodeURIComponent(f)}catch(h){f=unescape(f)}!1!==b.splitArgs&&(f=f.split(","));
+1==f.length&&(f=f[0]);a[g]=f}}return a};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=.0254000508001016;
+OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{Inch:OpenLayers.INCHES_PER_UNIT.inches,Meter:1/OpenLayers.METERS_PER_INCH,Foot:.3048006096012192/OpenLayers.METERS_PER_INCH,IFoot:.3048/OpenLayers.METERS_PER_INCH,ClarkeFoot:.3047972651151/OpenLayers.METERS_PER_INCH,SearsFoot:.30479947153867626/OpenLayers.METERS_PER_INCH,GoldCoastFoot:.3047997101815088/OpenLayers.METERS_PER_INCH,IInch:.0254/OpenLayers.METERS_PER_INCH,MicroInch:2.54E-5/OpenLayers.METERS_PER_INCH,Mil:2.54E-8/OpenLayers.METERS_PER_INCH,
+Centimeter:.01/OpenLayers.METERS_PER_INCH,Kilometer:1E3/OpenLayers.METERS_PER_INCH,Yard:.9144018288036576/OpenLayers.METERS_PER_INCH,SearsYard:.914398414616029/OpenLayers.METERS_PER_INCH,IndianYard:.9143985307444408/OpenLayers.METERS_PER_INCH,IndianYd37:.91439523/OpenLayers.METERS_PER_INCH,IndianYd62:.9143988/OpenLayers.METERS_PER_INCH,IndianYd75:.9143985/OpenLayers.METERS_PER_INCH,IndianFoot:.30479951/OpenLayers.METERS_PER_INCH,IndianFt37:.30479841/OpenLayers.METERS_PER_INCH,IndianFt62:.3047996/
+OpenLayers.METERS_PER_INCH,IndianFt75:.3047995/OpenLayers.METERS_PER_INCH,Mile:1609.3472186944373/OpenLayers.METERS_PER_INCH,IYard:.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:.1/OpenLayers.METERS_PER_INCH,Millimeter:.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:.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:.201166194976/OpenLayers.METERS_PER_INCH,GunterLink:.2011684023368047/OpenLayers.METERS_PER_INCH,BenoitLink:.20116782494375873/OpenLayers.METERS_PER_INCH,
+SearsLink:.2011676512155/OpenLayers.METERS_PER_INCH,Rod:5.02921005842012/OpenLayers.METERS_PER_INCH,IntnlChain:20.1168/OpenLayers.METERS_PER_INCH,IntnlLink:.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:.3047972615/OpenLayers.METERS_PER_INCH,Brealey:375/OpenLayers.METERS_PER_INCH,ModAmFt:.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){if(a){null==b&&(b="degrees");var 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);if(a.getBoundingClientRect)a=a.getBoundingClientRect(),d=window.pageYOffset||c.scrollTop,b[0]=a.left+(window.pageXOffset||c.scrollLeft),b[1]=a.top+d;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;c=a.offsetParent;if(c!=a)for(;c;)b[0]+=c.offsetLeft,b[1]+=c.offsetTop,c=c.offsetParent;d=OpenLayers.BROWSER_NAME;if("opera"==d||"safari"==d&&"absolute"==OpenLayers.Element.getStyle(a,"position"))b[1]-=document.body.offsetTop;for(c=a.offsetParent;c&&c!=document.body;){b[0]-=c.scrollLeft;if("opera"!=d||"TR"!=c.tagName)b[1]-=c.scrollTop;c=c.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=a.indexOf("?"),c=a.indexOf("#");return-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=document.createElement("div");d.style.visibility="hidden";for(var e=c&&c.containerElement?c.containerElement:document.body,f=!1,g=null,h=e;h&&"body"!=h.tagName.toLowerCase();){var k=OpenLayers.Element.getStyle(h,"position");if("absolute"==k){f=!0;break}else if(k&&"static"!=k)break;h=h.parentNode}!f||0!==e.clientHeight&&0!==e.clientWidth||(g=document.createElement("div"),g.style.visibility="hidden",g.style.position="absolute",g.style.overflow=
+"visible",g.style.width=document.body.clientWidth+"px",g.style.height=document.body.clientHeight+"px",g.appendChild(d));d.style.position="absolute";if(b)if(b.w){var l=b.w;d.style.width=l+"px"}else if(b.h){var m=b.h;d.style.height=m+"px"}c&&c.displayClass&&(d.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");d.appendChild(b);g?e.appendChild(g):
+e.appendChild(d);l||(l=parseInt(b.scrollWidth),d.style.width=l+"px");m||(m=parseInt(b.scrollHeight));d.removeChild(b);g?(g.removeChild(d),e.removeChild(g)):e.removeChild(d);return new OpenLayers.Size(l,m)};
+OpenLayers.Util.getScrollbarWidth=function(){var a=OpenLayers.Util._scrollbarWidth;if(null==a){var 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";var 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((f-d)/(1/60)*10);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.Util.getConstructor=function(a){var b=a.split(".");a="OpenLayers"===b[0]?OpenLayers:window[b[0]];for(var c=1,d=b.length;c<d;++c)a=a[b[c]];return a};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:.4,hoverFillColor:"white",hoverFillOpacity:.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},select:{fillColor:"blue",fillOpacity:.4,
+hoverFillColor:"white",hoverFillOpacity:.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},temporary:{fillColor:"#66cccc",fillOpacity:.2,hoverFillColor:"white",hoverFillOpacity:.8,strokeColor:"#66cccc",strokeOpacity:1,
+strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:.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(0==f&&0<e.length)for(f=!0,g=0,h=e.length;g<h;g++)this.applySymbolizer(e[g],b,a);0<c.length&&0==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;for(c in b){var d=b[c];"string"==typeof d&&d.match(/\$\{\w+\}/)&&(a[c]=!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.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.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.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},isTouchEvent:function(a){return 0===(""+a.type).indexOf("touch")||"pointerType"in a&&(a.pointerType===a.MSPOINTER_TYPE_TOUCH||"touch"===a.pointerType)},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(a=OpenLayers.Event.element(a);a.parentNode&&(!a.tagName||a.tagName.toUpperCase()!=b.toUpperCase());)a=a.parentNode;return a},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(" "),TOUCH_MODEL_POINTER:"pointer",TOUCH_MODEL_MSPOINTER:"MSPointer",TOUCH_MODEL_TOUCH:"touch",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._pointerTouches=[];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=this.getTouchModel(),c,d=0,e=this.BROWSER_EVENTS.length;d<e;d++)c=this.BROWSER_EVENTS[d],b!==this.TOUCH_MODEL_POINTER&&b!==this.TOUCH_MODEL_MSPOINTER||0!==c.indexOf("touch")?
+OpenLayers.Event.observe(a,c,this.eventHandler):this.addPointerTouchListener(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);c=c.slice();a=0;for(var d=c.length;a<d;a++){var e=c[a];e=e.func.apply(e.obj,[b]);if(void 0!=e&&0==e)break}this.fallThrough||OpenLayers.Event.stop(b,!0);return e}},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;var 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])},getTouchModel:function(){"_TOUCH_MODEL"in OpenLayers.Events||(OpenLayers.Events._TOUCH_MODEL=window.PointerEvent&&"pointer"||window.MSPointerEvent&&"MSPointer"||"ontouchdown"in document&&"touch"||null);return OpenLayers.Events._TOUCH_MODEL},
+addPointerTouchListener: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._pointerTouches;switch(b){case "touchstart":return this.addPointerTouchListenerStart(a,b,d);case "touchend":return this.addPointerTouchListenerEnd(a,b,d);case "touchmove":return this.addPointerTouchListenerMove(a,b,d);default:throw"Unknown touch event type";
+}},addPointerTouchListenerStart:function(a,b,c){var d=this._pointerTouches;OpenLayers.Event.observe(a,this.getTouchModel()===this.TOUCH_MODEL_MSPOINTER?"MSPointerDown":"pointerdown",function(a){if(OpenLayers.Event.isTouchEvent(a)){for(var b=!1,e=0,h=d.length;e<h;++e)if(d[e].pointerId==a.pointerId){b=!0;break}b||d.push(a);a.touches=d.slice();c(a)}});OpenLayers.Event.observe(a,this.getTouchModel()===this.TOUCH_MODEL_MSPOINTER?"MSPointerOut":"pointerout",function(a){if(OpenLayers.Event.isTouchEvent(a))for(var b=
+0,c=d.length;b<c;++b)if(d[b].pointerId==a.pointerId){0!=this.clientWidth&&0!=this.clientHeight&&(Math.ceil(a.clientX)>=this.clientWidth||Math.ceil(a.clientY)>=this.clientHeight)&&d.splice(b,1);break}})},addPointerTouchListenerMove:function(a,b,c){var d=this._pointerTouches;OpenLayers.Event.observe(a,this.getTouchModel()===this.TOUCH_MODEL_MSPOINTER?"MSPointerMove":"pointermove",function(a){if(OpenLayers.Event.isTouchEvent(a)&&(1!=d.length||d[0].pageX!=a.pageX||d[0].pageY!=a.pageY)){for(var b=0,e=
+d.length;b<e;++b)if(d[b].pointerId==a.pointerId){d[b]=a;break}a.touches=d.slice();c(a)}})},addPointerTouchListenerEnd:function(a,b,c){var d=this._pointerTouches;OpenLayers.Event.observe(a,this.getTouchModel()===this.TOUCH_MODEL_MSPOINTER?"MSPointerUp":"pointerup",function(a){if(OpenLayers.Event.isTouchEvent(a)){for(var b=0,e=d.length;b<e;++b)if(d[b].pointerId==a.pointerId){d.splice(b,1);break}a.touches=d.slice();c(a)}})},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:!1,evt:null,touch:!1,initialize:function(a,b,c){OpenLayers.Util.extend(this,c);this.control=a;this.callbacks=b;(a=this.map||a.map)&&this.setMap(a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){return null==this.keyMask?!0:((a.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(a.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(a.altKey?OpenLayers.Handler.MOD_ALT:
+0)|(a.metaKey?OpenLayers.Handler.MOD_META:0))==this.keyMask},activate:function(){if(this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.register(a[b],this[a[b]]);return this.active=!0},deactivate:function(){if(!this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]]);this.active=this.touch=!1;return!0},startTouch:function(){if(!this.touch){this.touch=!0;
+for(var a="mousedown mouseup mousemove click dblclick mouseout".split(" "),b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]])}},callback:function(a,b){a&&this.callbacks[a]&&this.callbacks[a].apply(this.control,b)},register:function(a,b){this.map.events.registerPriority(a,this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return!0},
+destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.MOD_META=8;OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:!0,"double":!1,pixelTolerance:0,dblclickTolerance:13,stopSingle:!1,stopDouble:!1,timerId:null,down:null,last:null,first:null,rightclickTimerId:null,touchstart:function(a){this.startTouch();this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},touchmove:function(a){this.last=this.getEventInfo(a);return!0},touchend:function(a){this.down&&(a.xy=this.last.xy,a.lastTouches=this.last.touches,this.handleSingle(a),
+this.down=null);return!0},mousedown:function(a){this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},mouseup:function(a){var b=!0;this.checkModifiers(a)&&this.control.handleRightClicks&&OpenLayers.Event.isRightClick(a)&&(b=this.rightclick(a));return b},rightclick:function(a){if(this.passesTolerance(a)){if(null!=this.rightclickTimerId)return this.clearTimer(),this.callback("dblrightclick",[a]),!this.stopDouble;a=this["double"]?OpenLayers.Util.extend({},a):this.callback("rightclick",
+[a]);a=OpenLayers.Function.bind(this.delayedRightCall,this,a);this.rightclickTimerId=window.setTimeout(a,this.delay)}return!this.stopSingle},delayedRightCall:function(a){this.rightclickTimerId=null;a&&this.callback("rightclick",[a])},click:function(a){this.last||(this.last=this.getEventInfo(a));this.handleSingle(a);return!this.stopSingle},dblclick:function(a){this.handleDouble(a);return!this.stopDouble},handleDouble:function(a){this.passesDblclickTolerance(a)&&(this["double"]&&this.callback("dblclick",
+[a]),this.clearTimer())},handleSingle:function(a){this.passesTolerance(a)&&(null!=this.timerId?(this.last.touches&&1===this.last.touches.length&&(this["double"]&&OpenLayers.Event.preventDefault(a),this.handleDouble(a)),this.last.touches&&2===this.last.touches.length||this.clearTimer()):(this.first=this.getEventInfo(a),a=this.single?OpenLayers.Util.extend({},a):null,this.queuePotentialClick(a)))},queuePotentialClick:function(a){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,
+this,a),this.delay)},passesTolerance:function(a){var b=!0;if(null!=this.pixelTolerance&&this.down&&this.down.xy&&(b=this.pixelTolerance>=this.down.xy.distanceTo(a.xy))&&this.touch&&this.down.touches.length===this.last.touches.length){a=0;for(var c=this.down.touches.length;a<c;++a)if(this.getTouchDistance(this.down.touches[a],this.last.touches[a])>this.pixelTolerance){b=!1;break}}return b},getTouchDistance:function(a,b){return Math.sqrt(Math.pow(a.clientX-b.clientX,2)+Math.pow(a.clientY-b.clientY,
+2))},passesDblclickTolerance:function(a){a=!0;this.down&&this.first&&(a=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance);return a},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);null!=this.rightclickTimerId&&(window.clearTimeout(this.rightclickTimerId),this.rightclickTimerId=null)},delayedCall:function(a){this.timerId=null;a&&this.callback("click",[a])},getEventInfo:function(a){if(a.touches){var b=a.touches.length;var c=Array(b);for(var d,
+e=0;e<b;e++)d=a.touches[e],c[e]={clientX:d.olClientX,clientY:d.olClientY}}return{xy:a.xy,touches:c}},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.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){if(OpenLayers.Format&&OpenLayers.Format.WKT){var b=OpenLayers.Geometry.fromWKT.format;b||(b=new OpenLayers.Format.WKT,OpenLayers.Geometry.fromWKT.format=b);a=b.read(a);if(a instanceof OpenLayers.Feature.Vector)var c=a.geometry;else if(OpenLayers.Util.isArray(a)){c=a.length;b=Array(c);for(var d=0;d<c;++d)b[d]=a[d].geometry;c=new OpenLayers.Geometry.Collection(b)}}return c};
+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;var h=a.x2-a.x1;var k=a.y2-a.y1,l=b.y2-b.y1,m=b.x2-b.x1;var p=l*h-m*k;l=m*g-l*f;g=h*g-k*f;0==p?0==l&&0==g&&(e=!0):(f=l/p,p=g/p,0<=f&&1>=f&&0<=p&&1>=p&&(d?(h=a.x1+f*h,p=a.y1+f*k,e=new OpenLayers.Geometry.Point(h,p)):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],p=f["y"+k],d=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(p-e.y,2)),d<c){e.x=h;e.y=p;break a}}else a:for(a=
+[a,b],b=0;2>b;++b)for(h=a[b],p=a[(b+1)%2],k=1;3>k;++k)if(f={x:h["x"+k],y:h["y"+k]},g=OpenLayers.Geometry.distanceToSegment(f,p),g.distance<c){e=d?new OpenLayers.Geometry.Point(f.x,f.y):!0;break a}return e};OpenLayers.Geometry.distanceToSegment=function(a,b){a=OpenLayers.Geometry.distanceSquaredToSegment(a,b);a.distance=Math.sqrt(a.distance);return a};
+OpenLayers.Geometry.distanceSquaredToSegment=function(a,b){var c=a.x;a=a.y;var d=b.x1,e=b.y1,f=b.x2,g=b.y2,h=f-d,k=g-e;b=0==h&&0==k?0:(h*(c-d)+k*(a-e))/(Math.pow(h,2)+Math.pow(k,2));0>=b||(1<=b?(d=f,e=g):(d+=b*h,e+=b*k));return{distance:Math.pow(d-c,2)+Math.pow(e-a,2),x:d,y:e,along:b}};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;if(a instanceof
+OpenLayers.Geometry.Point){b=this.x;var d=this.y;var e=a.x;var f=a.y;a=Math.sqrt(Math.pow(b-e,2)+Math.pow(d-f,2));b=c?{x0:b,y0:d,x1:e,y1:f,distance:a}:a}else b=a.distanceTo(this,b),c&&(b={x0:b.x1,y0:b.y1,x1:b.x0,y1:b.y0,distance:b.distance});return b},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);a+=Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+c*Math.cos(a);this.y=b.y+c*Math.sin(a);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){return"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.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){if((a=a.match(this.dateRegEx))&&(a[1]||a[7])){var 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]){d=parseInt(a[4],10);var e=parseInt(a[5],10),f=parseFloat(a[6]),g=f|0;b.setUTCHours(d,e,g,Math.round(1E3*(f-g)));"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=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.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(a){OpenLayers.Format.XML.supportActiveX&&(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=OpenLayers.Format.XML.supportActiveX&&!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)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){b=b||"";if(a)for(a=a.firstChild;a;a=a.nextSibling)switch(a.nodeType){case 3:case 4:b+=a.nodeValue}return b},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){return 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]);a=this.createElementNS(c,a);b.attributes&&this.setAttributes(a,b.attributes);b=b.value;null!=b&&a.appendChild(this.createTextNode(b));return a},setAttributes:function(a,b){var c;for(c in b)if(null!=b[c]&&b[c].toString){var d=b[c].toString();var e=this.namespaces[c.substring(0,c.indexOf(":"))]||null;this.setAttributeNS(a,e,c,d)}},getFirstElementChild:function(a){if(a.firstElementChild)return a.firstElementChild;
+for(a=a.firstChild;1!=a.nodeType&&(a=a.nextSibling););return a},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={});a=a.childNodes;for(var c,d=0,e=a.length;d<e;++d)c=a[d],1==c.nodeType&&this.readNode(c,b);return b},writeNode:function(a,b,c){var d=a.indexOf(":");if(0<d){var e=a.substring(0,
+d);a=a.substring(d+1)}else e=c?this.namespaceAlias[c.namespaceURI]:this.defaultPrefix;b=this.writers[e][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&&OpenLayers.Format.XML.supportActiveX&&(this.xmldom=
+new ActiveXObject("Microsoft.XMLDOM")));return OpenLayers.Format.XML.document||this.xmldom},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);OpenLayers.Format.XML.document=null;
+OpenLayers.Format.XML.supportActiveX=function(){return Object.getOwnPropertyDescriptor&&Object.getOwnPropertyDescriptor(window,"ActiveXObject")||"ActiveXObject"in window}();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=new (OpenLayers.Util.getConstructor(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;a&&(null==this.componentTypes||-1<OpenLayers.Util.indexOf(this.componentTypes,a.CLASS_NAME))&&(null!=b&&b<this.components.length?(c=this.components.slice(0,b),b=this.components.slice(b,this.components.length),c.push(a),this.components=c.concat(b)):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();var b=this.components.length;if(!b)return!1;for(var c=[],d=[],e=0,f=Number.MAX_VALUE,g=0;g<b;++g){var h=this.components[g];a=h.getArea();h=h.getCentroid(!0);isNaN(a)||isNaN(h.x)||isNaN(h.y)||(c.push(a),e+=a,f=a<f&&0<a?a:f,d.push(h))}b=c.length;if(0===e){for(g=0;g<b;++g)c[g]=1;e=c.length}else{for(g=0;g<b;++g)c[g]/=f;e/=f}var k=f=0;for(g=0;g<b;++g)h=d[g],a=c[g],f+=h.x*a,k+=h.y*a;return new OpenLayers.Geometry.Point(f/e,k/e)},getGeodesicLength:function(a){for(var b=0,
+c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicLength(a);return b},move:function(a,b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0;d<this.components.length;++d)this.components[d].resize(a,b,c);return this},distanceTo:function(a,b){for(var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g=Number.POSITIVE_INFINITY,h=0,k=this.components.length;h<
+k&&!(d=this.components[h].distanceTo(a,b),f=c?d.distance:d,f<g&&(g=f,e=d,0==g));++h);return e},equals:function(a){var b=!0;if(a&&a.CLASS_NAME&&this.CLASS_NAME==a.CLASS_NAME)if(OpenLayers.Util.isArray(a.components)&&a.components.length==this.components.length)for(var c=0,d=this.components.length;c<d;++c){if(!this.components[c].equals(a.components[c])){b=!1;break}}else b=!1;else b=!1;return b},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].transform(a,
+b);this.bounds=null}return this},intersects:function(a){for(var b=!1,c=0,d=this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);return b},getVertices:function(a){for(var b=[],c=0,d=this.components.length;c<d;++c)Array.prototype.push.apply(b,this.components[c].getVertices(a));return b},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],getLength:function(){var a=0;if(this.components&&1<this.components.length)for(var b=1,c=this.components.length;b<c;b++)a+=this.components[b-1].distanceTo(this.components[b]);return a},getGeodesicLength:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;if(b.components&&1<b.components.length)for(var d,e=1,f=b.components.length;e<
+f;e++)c=b.components[e-1],d=b.components[e],a+=OpenLayers.Util.distVincenty({lon:c.x,lat:c.y},{lon:d.x,lat:d.y});return 1E3*a},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{removeComponent:function(a){var b=this.components&&2<this.components.length;b&&OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);return b},intersects:function(a){var b=!1,c=a.CLASS_NAME;if("OpenLayers.Geometry.LineString"==c||"OpenLayers.Geometry.LinearRing"==c||"OpenLayers.Geometry.Point"==c){var d=this.getSortedSegments();a="OpenLayers.Geometry.Point"==c?[{x1:a.x,y1:a.y,x2:a.x,y2:a.y}]:a.getSortedSegments();
+var e=0,f=d.length;a:for(;e<f;++e){c=d[e];var g=c.x1;var h=c.x2;var k=c.y1;var l=c.y2;var m=0,p=a.length;for(;m<p;++m){var n=a[m];if(n.x1>h)break;if(!(n.x2<g)){var q=n.y1;var r=n.y2;if(!(Math.min(q,r)>Math.max(k,l)||Math.max(q,r)<Math.min(k,l))&&OpenLayers.Geometry.segmentsIntersect(c,n)){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){var c=!(b&&!1===b.edge),d=b&&b.tolerance;b=[];for(var e=this.getVertices(),f=[],g=[],h=!1,k,l,m,p={point:!0,tolerance:d},n=null,q=0,r=e.length-2;q<=r;++q)if(d=e[q],f.push(d.clone()),k=e[q+1],l={x1:d.x,y1:d.y,x2:k.x,y2:k.y},l=OpenLayers.Geometry.segmentsIntersect(a,l,p),l instanceof OpenLayers.Geometry.Point&&((m=l.x===a.x1&&l.y===a.y1||l.x===a.x2&&l.y===a.y2||l.equals(d)||l.equals(k)?
+!0:!1)||c))l.equals(g[g.length-1])||g.push(l.clone()),0===q&&l.equals(d)||l.equals(k)||(h=!0,l.equals(d)||f.push(l),b.push(new OpenLayers.Geometry.LineString(f)),f=[l.clone()]);h&&(f.push(k.clone()),b.push(new OpenLayers.Geometry.LineString(f)));if(0<g.length){var t=a.x1<a.x2?1:-1,u=a.y1<a.y2?1:-1;n={lines:b,points:g.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;if(a instanceof OpenLayers.Geometry.LineString){var g=this.getVertices(),
+h,k=[];var l=[];for(var m=0,p=g.length-2;m<=p;++m){var n=g[m];var q=g[m+1];var r={x1:n.x,y1:n.y,x2:q.x,y2:q.y};var t=t||[a];d&&k.push(n.clone());for(var u=0;u<t.length;++u)if(h=t[u].splitWithSegment(r,b)){var v=h.lines;0<v.length&&(v.unshift(u,1),Array.prototype.splice.apply(t,v),u+=v.length-2);if(d)for(var x=0,w=h.points.length;x<w;++x)v=h.points[x],v.equals(n)||(k.push(v),l.push(new OpenLayers.Geometry.LineString(k)),k=v.equals(q)?[]:[v.clone()])}}d&&0<l.length&&0<k.length&&(k.push(q.clone()),l.push(new OpenLayers.Geometry.LineString(k)))}else c=
+a.splitWith(this,b);t&&1<t.length?f=!0:t=[];l&&1<l.length?e=!0:l=[];if(f||e)c=d?[l,t]:t;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=Number.POSITIVE_INFINITY;if(a instanceof OpenLayers.Geometry.Point){b=this.getSortedSegments();for(var f=
+a.x,g=a.y,h,k=0,l=b.length;k<l;++k){h=b[k];var m=OpenLayers.Geometry.distanceToSegment(a,h);if(m.distance<e&&(e=m.distance,d=c?{distance:e,x0:m.x,y0:m.y,x1:f,y1:g,index:k,indexDistance:(new OpenLayers.Geometry.Point(h.x1,h.y1)).distanceTo(a)}:e,0===e))break}}else if(a instanceof OpenLayers.Geometry.LineString){f=this.getSortedSegments();g=a.getSortedSegments();var p,n=g.length,q={point:!0};k=0;l=f.length;a:for(;k<l;++k){h=f[k];var r=h.x1;var t=h.y1;for(var u=0;u<n;++u)if(m=g[u],p=OpenLayers.Geometry.segmentsIntersect(h,
+m,q)){e=0;d={distance:0,x0:p.x,y0:p.y,x1:p.x,y1:p.y};break a}else m=OpenLayers.Geometry.distanceToSegment({x:r,y:t},m),m.distance<e&&(e=m.distance,d={distance:e,x0:r,y0:t,x1:m.x,y1:m.y})}c||(d=d.distance);0!==e&&h&&(m=a.distanceTo(new OpenLayers.Geometry.Point(h.x2,h.y2),b),a=c?m.distance:m,a<e&&(d=c?{distance:e,x0:m.x1,y0:m.y1,x1:m.x0,y1:m.y0}:a))}else d=a.distanceTo(this,b),c&&(d={distance:d.distance,x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0});return d},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 f=0,g=0,h=b,n;h<d;h++){n=a[b];var q=a[d],r=a[h];n=Math.abs(.5*(n.x*q.y+q.x*r.y+r.x*n.y-q.x*n.y-r.x*q.y-n.x*r.y))/Math.sqrt(Math.pow(n.x-q.x,2)+Math.pow(n.y-q.y,2))*2;n>f&&(f=n,g=h)}f>k&&g!=b&&(e.push(g),c(a,b,g,k),c(a,g,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.LineString.geodesic=function(a,b,c){for(var d=[],e=a(0),f=a(1),g=b(e),h=b(f),k=[f,e],l=[h,g],m=[1,0],p={},n=1E5,q,r,t,u,v;0<--n&&0<m.length;)t=m.pop(),e=k.pop(),g=l.pop(),f=t.toString(),f in p||(d.push(g),p[f]=!0),u=m.pop(),f=k.pop(),h=l.pop(),v=(t+u)/2,q=a(v),r=b(q),OpenLayers.Geometry.distanceSquaredToSegment(r,{x1:g.x,y1:g.y,x2:h.x,y2:h.y}).distance<c?(d.push(h),f=u.toString(),p[f]=!0):(m.push(u,v,v,t),l.push(h,r,r,g),k.push(f,q,q,e));return new OpenLayers.Geometry.LineString(d)};
+OpenLayers.Geometry.LineString.geodesicMeridian=function(a,b,c,d,e){var f=new OpenLayers.Projection("EPSG:4326");return OpenLayers.Geometry.LineString.geodesic(function(d){return new OpenLayers.Geometry.Point(a,b+(c-b)*d)},function(a){return a.transform(f,d)},e)};
+OpenLayers.Geometry.LineString.geodesicParallel=function(a,b,c,d,e){var f=new OpenLayers.Projection("EPSG:4326");return OpenLayers.Geometry.LineString.geodesic(function(d){return new OpenLayers.Geometry.Point(b+(c-b)*d,a)},function(a){return a.transform(f,d)},e)};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(){var a;if(this.components){var b=this.components.length;if(0<b&&2>=b)return this.components[0].clone();if(2<b){var c=a=0,d=this.components[0].x,e=this.components[0].y,f=-1*this.getArea();if(0!=f){for(var g=0;g<b-1;g++){var h=this.components[g],k=this.components[g+1];a+=(h.x+k.x-2*d)*((h.x-d)*(k.y-e)-(k.x-d)*(h.y-e));c+=(h.y+k.y-2*e)*((h.x-d)*(k.y-e)-(k.x-d)*(h.y-e))}a=d+a/(6*f);b=e+c/(6*f)}else{for(g=0;g<b-1;g++)a+=this.components[g].x,c+=this.components[g].y;
+a/=b-1;b=c/(b-1)}return new OpenLayers.Geometry.Point(a,b)}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+=(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=a*OpenLayers.Util.VincentyConstants.a*OpenLayers.Util.VincentyConstants.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((h-g)/(f-e)*(a-f)+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){a+=Math.abs(this.components[0].getArea());for(var 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){b+=Math.abs(this.components[0].getGeodesicArea(a));for(var 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;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){var d=0;for(c=
+this.components.length;d<c&&!(b=a.intersects(this.components[d]));++d);if(!b)for(d=0,c=a.components.length;d<c&&!(b=this.containsPoint(a.components[d]));++d);}else for(d=0,c=a.components.length;d<c&&!(b=this.intersects(a.components[d]));++d);if(!b&&"OpenLayers.Geometry.Polygon"==a.CLASS_NAME){var e=this.components[0];d=0;for(c=e.components.length;d<c&&!(b=a.containsPoint(e.components[d]));++d);}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-.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.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);b=!1;for(var 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(r){}try{var b=a._object,c=b.responseXML,d=b.responseText;h&&d&&c&&!c.documentElement&&b.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)&&
+(c=new window.ActiveXObject("Microsoft.XMLDOM"),c.async=!1,c.validateOnParse=!1,c.loadXML(d));var e=c&&(h&&0!=c.parseError||!c.documentElement||c.documentElement&&"parsererror"==c.documentElement.tagName)?null:c;a.responseXML=e}catch(r){}try{a.status=a._object.status}catch(r){}try{a.statusText=a._object.statusText}catch(r){}}function e(a){a._object.onreadystatechange=new window.Function}var f=window.XMLHttpRequest,g=!!window.controllers,h=window.document.all&&!window.opera,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,n,q){delete this._headers;3>arguments.length&&(k=!0);this._async=k;var l=this,
+m=this.readyState;if(h&&k){var p=function(){m!=b.DONE&&(e(l),l.abort())};window.attachEvent("onunload",p)}b.onopen&&b.onopen.apply(this,arguments);4<arguments.length?this._object.open(a,f,k,n,q):3<arguments.length?this._object.open(a,f,k,n):this._object.open(a,f,k);this.readyState=b.OPENED;c(this);this._object.onreadystatechange=function(){if(!g||k)l.readyState=l._object.readyState,d(l),l._aborted?l.readyState=b.UNSENT:(l.readyState==b.DONE&&(delete l._data,e(l),h&&k&&window.detachEvent("onunload",
+p)),m!=l.readyState&&c(l),m=l.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.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],worldExtent:[-180,-90,180,90],yx:!0},"CRS:84":{units:"degrees",maxExtent:[-180,-90,180,90],worldExtent:[-180,-90,180,90]},"EPSG:900913":{units:"m",maxExtent:[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7],worldExtent:[-180,-89,180,89]}};
+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/2.003750834E7;a.y=180/Math.PI*(2*Math.atan(Math.exp(a.y/2.003750834E7*Math.PI))-Math.PI/2);return a}function b(a){a.x=2.003750834E7*a.x/180;a.y=Math.max(-2.003750834E7,Math.min(Math.log(Math.tan((90+a.y)*Math.PI/360))/Math.PI*2.003750834E7,2.003750834E7));return a}function c(c,d){var e=OpenLayers.Projection.addTransform,f=OpenLayers.Projection.nullTransform,g,h;var n=0;for(g=d.length;n<g;++n){var q=d[n];e(c,q,b);e(q,c,a);for(h=n+1;h<g;++h){var r=d[h];e(q,r,f);
+e(r,q,f)}}}var d=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100","OSGEO:41001"],e=["CRS:84","urn:ogc:def:crs:EPSG:6.6:4326","EPSG:4326"],f;for(f=d.length-1;0<=f;--f)c(d[f],e);for(f=e.length-1;0<=f;--f)c(e[f],d)})();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;b=OpenLayers.Util.extend({},b);b.depth++;for(var c=0,d=a.length;c<d;c++){var e=this.parseProperty(a[c],"*","href");e&&!this.fetched[e]&&(this.fetched[e]=!0,(e=this.fetchLink(e))&&this.parseData(e,b))}},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,d={},e=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],f,g,h=0,k=e.length;h<k;++h)if(f=e[h],g=this.getElementsByTagNameNS(a,"*",f)[0])switch(f.toLowerCase()){case "linestyle":f=this.parseProperty(g,"*","color");if(f=this.parseKmlColor(f))d.strokeColor=f.color,d.strokeOpacity=f.opacity;(f=this.parseProperty(g,"*","width"))&&(d.strokeWidth=
+f);break;case "polystyle":f=this.parseProperty(g,"*","color");if(f=this.parseKmlColor(f))d.fillOpacity=f.opacity,d.fillColor=f.color;"0"==this.parseProperty(g,"*","fill")&&(d.fillColor="none");"0"==this.parseProperty(g,"*","outline")&&(d.strokeWidth="0");break;case "iconstyle":var l=parseFloat(this.parseProperty(g,"*","scale")||1);f=32*l;var m=32*l;if(b=this.getElementsByTagNameNS(g,"*","Icon")[0])if(c=this.parseProperty(b,"*","href")){var p=this.parseProperty(b,"*","w"),n=this.parseProperty(b,"*",
+"h");!OpenLayers.String.startsWith(c,"http://maps.google.com/mapfiles/kml")||p||n||(n=p=64,l/=2);p=p||n;n=n||p;p&&(f=parseInt(p)*l);n&&(m=parseInt(n)*l);if(n=c.match(this.regExes.kmlIconPalette))p=n[1],n=n[2],c=this.parseProperty(b,"*","x"),b=this.parseProperty(b,"*","y"),c="http://maps.google.com/mapfiles/kml/pal"+p+"/icon"+(8*(b?7-b/32:7)+(c?c/32:0))+n;d.graphicOpacity=1;d.externalGraphic=c}if(g=this.getElementsByTagNameNS(g,"*","hotSpot")[0])c=parseFloat(g.getAttribute("x")),b=parseFloat(g.getAttribute("y")),
+p=g.getAttribute("xunits"),"pixels"==p?d.graphicXOffset=-c*l:"insetPixels"==p?d.graphicXOffset=-f+c*l:"fraction"==p&&(d.graphicXOffset=-f*c),g=g.getAttribute("yunits"),"pixels"==g?d.graphicYOffset=-m+b*l+1:"insetPixels"==g?d.graphicYOffset=-(b*l)+1:"fraction"==g&&(d.graphicYOffset=-m*(1-b)+1);d.graphicWidth=f;d.graphicHeight=m;break;case "balloonstyle":(g=OpenLayers.Util.getXmlNodeValue(g))&&(d.balloonStyle=g.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(f=this.parseProperty(g,
+"*","color"),f=this.parseKmlColor(f))d.fontColor=f.color,d.fontOpacity=f.opacity}!d.strokeColor&&d.fillColor&&(d.strokeColor=d.fillColor);(a=a.getAttribute("id"))&&d&&(d.id=a);return d},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair");e=e.getAttribute("id");for(var 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){c.attributes={};for(var d=0,e=this.trackAttributes.length;d<
+e;++d){var f=this.trackAttributes[d];c.attributes[f]=[];f in this.readers.kml||(this.readers.kml[f]=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.");if((a=0<c.angles.length)&&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.");d=0;
+for(e=c.whens.length;d<e;++d){var g=b.feature.clone();g.fid=b.feature.fid||b.feature.id;f=c.points[d];g.geometry=f;"z"in f&&(g.attributes.altitude=f.z);this.internalProjection&&this.externalProjection&&g.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes)for(var h=0,k=this.trackAttributes.length;h<k;++h)f=this.trackAttributes[h],g.attributes[f]=c.attributes[f][d];g.attributes.when=c.whens[d];g.attributes.trackId=b.feature.id;a&&(f=c.angles[d],g.attributes.heading=
+parseFloat(f[0]),g.attributes.tilt=parseFloat(f[1]),g.attributes.roll=parseFloat(f[2]));b.features.push(g)}},coord:function(a,b){a=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/);var c=new OpenLayers.Geometry.Point(a[0],a[1]);2<a.length&&(c.z=parseFloat(a[2]));b.points.push(c)},angles:function(a,b){a=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/);b.angles.push(a)}}},parseFeature:function(a){var b=["MultiGeometry","Polygon","LineString","Point"];for(var 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);b=OpenLayers.Util.extend({},b);b.depth++;b.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&b.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,b);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){a=this.getElementsByTagNameNS(a,this.internalns,"coordinates");var b=[];if(0<a.length){var c=a[0].firstChild.nodeValue;
+c=c.replace(this.regExes.removeSpace,"");b=c.split(",")}if(1<b.length)2==b.length&&(b[2]=null),c=new OpenLayers.Geometry.Point(b[0],b[1],b[2]);else throw"Bad coordinate string: "+c;return c},linestring:function(a,b){a=this.getElementsByTagNameNS(a,this.internalns,"coordinates");var c=null;if(0<a.length){a=this.getChildValue(a[0]);a=a.replace(this.regExes.trimSpace,"");a=a.replace(this.regExes.trimComma,",");c=a.split(this.regExes.splitSpace);for(var d=c.length,e=Array(d),f,g,h=0;h<d;++h)if(f=c[h].split(","),
+g=f.length,1<g)2==f.length&&(f[2]=null),e[h]=new OpenLayers.Geometry.Point(f[0],f[1],f[2]);else throw"Bad LineString point coordinates: "+c[h];if(d)c=b?new OpenLayers.Geometry.LinearRing(e):new OpenLayers.Geometry.LineString(e);else throw"Bad LineString coordinates: "+a;}return c},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]));a=a.childNodes;c=0;for(var d=a.length;c<d;++c){var e=a[c];if(1==e.nodeType){var f=
+e.childNodes;if(1<=f.length&&3>=f.length){switch(f.length){case 1:var g=f[0];break;case 2:g=f[0];f=f[1];g=3==g.nodeType||4==g.nodeType?g:f;break;default:g=f[1]}if(3==g.nodeType||4==g.nodeType)if(e=e.prefix?e.nodeName.split(":")[1]:e.nodeName,g=OpenLayers.Util.getXmlNodeValue(g))g=g.replace(this.regExes.trimSpace,""),b[e]=g}}}return b},parseExtendedData:function(a){var b={},c,d=a.getElementsByTagName("Data");var e=0;for(c=d.length;e<c;e++){var f=d[e];var g=f.getAttribute("name");var h={};var k=f.getElementsByTagName("value");
+k.length&&(h.value=this.getChildValue(k[0]));this.kvpAttributes?b[g]=h.value:(f=f.getElementsByTagName("displayName"),f.length&&(h.displayName=this.getChildValue(f[0])),b[g]=h)}a=a.getElementsByTagName("SimpleData");e=0;for(c=a.length;e<c;e++)h={},f=a[e],g=f.getAttribute("name"),h.value=this.getChildValue(f),this.kvpAttributes?b[g]=h.value:(h.displayName=g,b[g]=h);return b},parseProperty:function(a,b,c){a=this.getElementsByTagNameNS(a,b,c);try{var 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);a.attributes&&(b=this.buildExtendedData(a.attributes))&&c.appendChild(b);a=this.buildGeometryNode(a.geometry);c.appendChild(a);return c},buildGeometryNode:function(a){var b=a.CLASS_NAME;b=b.substring(b.lastIndexOf(".")+1);b=this.buildGeometry[b.toLowerCase()];var c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},
+multipoint:function(a){return this.buildGeometry.collection.apply(this,[a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){var b=this.createElementNS(this.kmlns,"Polygon");a=a.components;
+for(var c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=
+this.createElementNS(this.kmlns,"coordinates"),c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),
+c;for(c in a)if(a[c]&&"name"!=c&&"description"!=c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?
+null:b},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Format.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){if(this.nativeJSON)var 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;b=null;var c=typeof a;if(this.serialize[c])try{b=!this.pretty&&this.nativeJSON?JSON.stringify(a):this.serialize[c].apply(this,[a])}catch(d){OpenLayers.Console.error("Trouble serializing: "+d)}return b},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=!1;for(c in a)if(a.hasOwnProperty(c)){var e=OpenLayers.Format.JSON.prototype.write.apply(this,[c,this.pretty]);var f=OpenLayers.Format.JSON.prototype.write.apply(this,
+[a[c],this.pretty]);null!=e&&null!=f&&(d&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),e,":",this.writeSpace(),f),d=!0)}--this.level;b.push(this.writeNewline(),this.writeIndent(),"}");return b.join("")},array:function(a){var b=["["];this.level+=1;for(var c=0,d=a.length;c<d;++c){var e=OpenLayers.Format.JSON.prototype.write.apply(this,[a[c],this.pretty]);null!=e&&(0<c&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),e))}--this.level;b.push(this.writeNewline(),this.writeIndent(),
+"]");return b.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){if(a=b[d])return a;a=d.charCodeAt();return"\\u00"+Math.floor(a/16).toString(16)+(a%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.Filter=OpenLayers.Class({initialize:function(a){OpenLayers.Util.extend(this,a)},destroy:function(){},evaluate:function(a){return!0},clone:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.CQL?OpenLayers.Format.CQL.prototype.write(this):Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,evaluate:function(a){var b=!1;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(a.geometry){var c=this.value;"OpenLayers.Bounds"==this.value.CLASS_NAME&&(c=this.value.toGeometry());a.geometry.intersects(c)&&(b=!0)}break;default:throw Error("evaluate is not implemented for this filter type.");}return b},clone:function(){var a=
+OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(a)},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Filter.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];if(void 0===a)return!1;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=(new 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(new RegExp("\\"+(c?c:"!")+"(.|$)","g"),"\\$1");this.value=this.value.replace(new RegExp("\\"+
+b,"g"),".");this.value=this.value.replace(new RegExp("\\"+a,"g"),".*");this.value=this.value.replace(/\\.\*/g,"\\"+a);return this.value=this.value.replace(/\\\./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.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;switch(this.type){case OpenLayers.Filter.Logical.AND:var c=0;for(b=this.filters.length;c<b;c++)if(0==this.filters[c].evaluate(a))return!1;return!0;case OpenLayers.Filter.Logical.OR:c=0;for(b=this.filters.length;c<
+b;c++)if(1==this.filters[c].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.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.Format.OGCExceptionReport=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},defaultPrefix:"ogc",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b={exceptionReport:null};a.documentElement&&(this.readChildNodes(a,b),null===b.exceptionReport&&(b=(new OpenLayers.Format.OWSCommon).read(a)));return b},readers:{ogc:{ServiceExceptionReport:function(a,
+b){b.exceptionReport={exceptions:[]};this.readChildNodes(a,b.exceptionReport)},ServiceException:function(a,b){a={code:a.getAttribute("code"),locator:a.getAttribute("locator"),text:this.getChildValue(a)};b.exceptions.push(a)}}},CLASS_NAME:"OpenLayers.Format.OGCExceptionReport"});OpenLayers.Format.XML.VersionedOGC=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:null,version:null,profile:null,allowFallback:!1,name:null,stringifyOutput:!1,parser:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);a=this.CLASS_NAME;this.name=a.substring(a.lastIndexOf(".")+1)},getVersion:function(a,b){a?(b=this.version,b||(b=a.getAttribute("version"),b||(b=this.defaultVersion))):b=b&&b.version||this.version||this.defaultVersion;return b},getParser:function(a){a=
+a||this.defaultVersion;var b=this.profile?"_"+this.profile:"";if(!this.parser||this.parser.VERSION!=a){var c=OpenLayers.Format[this.name]["v"+a.replace(/\./g,"_")+b];if(!c&&(""!==b&&this.allowFallback&&(b="",c=OpenLayers.Format[this.name]["v"+a.replace(/\./g,"_")]),!c))throw"Can't find a "+this.name+" parser for version "+a+b;this.parser=new c(this.options)}return this.parser},write:function(a,b){var c=this.getVersion(null,b);this.parser=this.getParser(c);a=this.parser.write(a,b);return!1===this.stringifyOutput?
+a:OpenLayers.Format.XML.prototype.write.apply(this,[a])},read:function(a,b){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var c=this.getVersion(a.documentElement);this.parser=this.getParser(c);b=this.parser.read(a,b);var d=this.parser.errorProperty||null;null!==d&&void 0===b[d]&&(d=new OpenLayers.Format.OGCExceptionReport,b.error=d.read(a));b.version=c;b.requestType=this.name;return b},CLASS_NAME:"OpenLayers.Format.XML.VersionedOGC"});OpenLayers.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",yx:{"urn:ogc:def:crs:EPSG::4326":!0},createLayer:function(a,b){if(!("layer"in b))throw Error("Missing property 'layer' in configuration.");for(var c=a.contents,d,e=0,f=c.layers.length;e<f;++e)if(c.layers[e].identifier===b.layer){d=c.layers[e];break}if(!d)throw Error("Layer not found");var g=b.format;!g&&d.formats&&d.formats.length&&(g=d.formats[0]);if(b.matrixSet)var h=c.tileMatrixSets[b.matrixSet];
+else if(b.projection){e=0;for(var k=d.tileMatrixSetLinks.length;e<k;e++)if(c.tileMatrixSets[d.tileMatrixSetLinks[e].tileMatrixSet].supportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3")===b.projection){h=c.tileMatrixSets[d.tileMatrixSetLinks[e].tileMatrixSet];break}}else 1<=d.tileMatrixSetLinks.length&&(h=c.tileMatrixSets[d.tileMatrixSetLinks[0].tileMatrixSet]);if(!h)throw Error("matrixSet not found");e=0;for(f=d.styles.length;e<f;++e){var l=d.styles[e];if(l.isDefault)break}c=b.requestEncoding;
+if(!c&&(c="KVP",a.operationsMetadata.GetTile.dcp.http)){var m=a.operationsMetadata.GetTile.dcp.http;m.get[0].constraints&&(m=m.get[0].constraints.GetEncoding.allowedValues,m.KVP||!m.REST&&!m.RESTful||(c="REST"))}m=[];var p=b.params||{};delete b.params;for(var n=0,q=d.dimensions.length;n<q;n++)e=d.dimensions[n],m.push(e.identifier),p.hasOwnProperty(e.identifier)||(p[e.identifier]=e["default"]);n=b.projection||h.supportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3");var r=b.units||("EPSG:4326"===
+n?"degrees":"m"),t=[],u,v;q=[];var x=d.tileMatrixSetLinks;f=function(a){t.push(2.8E-4*a/OpenLayers.METERS_PER_INCH/OpenLayers.INCHES_PER_UNIT[r]);if(!u||u>a)u=a;if(!v||v<a)v=a};var w=0;for(k=x.length;w<k;w++)if(e=x[w],e.tileMatrixSet===h.identifier){if(e.tileMatrixSetLimits){k={};w=0;for(var y=h.matrixIds.length;w<y;w++)k[h.matrixIds[w].identifier]=h.matrixIds[w];w=0;for(y=e.tileMatrixSetLimits.length;w<y;w++)x=k[e.tileMatrixSetLimits[w].tileMatrix],q.push(x),f(x.scaleDenominator)}else for(w=0,y=
+h.matrixIds.length;w<y;w++)f(h.matrixIds[w].scaleDenominator);break}if("REST"===c&&d.resourceUrls)for(a=[],f=0,k=d.resourceUrls.length;f<k;++f)e=d.resourceUrls[f],e.format===g&&"tile"===e.resourceType&&a.push(e.template);else for(k=a.operationsMetadata.GetTile.dcp.http.get,a=[],e=0,f=k.length;e<f;e++)x=k[e].constraints,(!x||x&&x.GetEncoding.allowedValues[c])&&a.push(k[e].url);t.sort(function(a,b){return b-a});b=OpenLayers.Util.applyDefaults(b,{url:a,requestEncoding:c,name:d.title,style:l&&l.identifier||
+"",format:g,matrixIds:q.length?q:h.matrixIds,matrixSet:h.identifier,projection:n,units:r,tileFullExtent:h.bounds,dimensions:m,params:p,resolutions:!1===b.isBaseLayer?void 0:t,serverResolutions:t,minScale:1/Math.ceil(v),maxScale:1/Math.floor(u)});return new OpenLayers.Layer.WMTS(b)},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});OpenLayers.Format.OWSCommon=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",getVersion:function(a,b){b=this.version;b||((a=a.getAttribute("xmlns:ows"))&&"1.1"===a.substring(a.lastIndexOf("/")+1)&&(b="1.1.0"),b||(b=this.defaultVersion));return b},CLASS_NAME:"OpenLayers.Format.OWSCommon"});OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);b={};this.readChildNodes(a,b);return b},readers:{ows:{Exception:function(a,b){var c={code:a.getAttribute("exceptionCode"),locator:a.getAttribute("locator"),texts:[]};b.exceptions.push(c);this.readChildNodes(a,c)},ExceptionText:function(a,b){a=this.getChildValue(a);b.texts.push(a)},
+ServiceIdentification:function(a,b){b.serviceIdentification={};this.readChildNodes(a,b.serviceIdentification)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},Keywords:function(a,b){b.keywords={};this.readChildNodes(a,b.keywords)},Keyword:function(a,b){b[this.getChildValue(a)]=!0},ServiceType:function(a,b){b.serviceType={codeSpace:a.getAttribute("codeSpace"),value:this.getChildValue(a)}},ServiceTypeVersion:function(a,b){b.serviceTypeVersion=
+this.getChildValue(a)},Fees:function(a,b){b.fees=this.getChildValue(a)},AccessConstraints:function(a,b){b.accessConstraints=this.getChildValue(a)},ServiceProvider:function(a,b){b.serviceProvider={};this.readChildNodes(a,b.serviceProvider)},ProviderName:function(a,b){b.providerName=this.getChildValue(a)},ProviderSite:function(a,b){b.providerSite=this.getAttributeNS(a,this.namespaces.xlink,"href")},ServiceContact:function(a,b){b.serviceContact={};this.readChildNodes(a,b.serviceContact)},IndividualName:function(a,
+b){b.individualName=this.getChildValue(a)},PositionName:function(a,b){b.positionName=this.getChildValue(a)},ContactInfo:function(a,b){b.contactInfo={};this.readChildNodes(a,b.contactInfo)},Phone:function(a,b){b.phone={};this.readChildNodes(a,b.phone)},Voice:function(a,b){b.voice=this.getChildValue(a)},Facsimile:function(a,b){b.facsimile=this.getChildValue(a)},Address:function(a,b){b.address={};this.readChildNodes(a,b.address)},DeliveryPoint:function(a,b){b.deliveryPoint=this.getChildValue(a)},City:function(a,
+b){b.city=this.getChildValue(a)},AdministrativeArea:function(a,b){b.administrativeArea=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ElectronicMailAddress:function(a,b){b.electronicMailAddress=this.getChildValue(a)},Role:function(a,b){b.role=this.getChildValue(a)},OperationsMetadata:function(a,b){b.operationsMetadata={};this.readChildNodes(a,b.operationsMetadata)},Operation:function(a,b){var c=a.getAttribute("name");
+b[c]={};this.readChildNodes(a,b[c])},DCP:function(a,b){b.dcp={};this.readChildNodes(a,b.dcp)},HTTP:function(a,b){b.http={};this.readChildNodes(a,b.http)},Get:function(a,b){b.get||(b.get=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.get.push(c)},Post:function(a,b){b.post||(b.post=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.post.push(c)},Parameter:function(a,b){b.parameters||(b.parameters={});var c=a.getAttribute("name");
+b.parameters[c]={};this.readChildNodes(a,b.parameters[c])},Constraint:function(a,b){b.constraints||(b.constraints={});var c=a.getAttribute("name");b.constraints[c]={};this.readChildNodes(a,b.constraints[c])},Value:function(a,b){b[this.getChildValue(a)]=!0},OutputFormat:function(a,b){b.formats.push({value:this.getChildValue(a)});this.readChildNodes(a,b)},WGS84BoundingBox:function(a,b){var c={};c.crs=a.getAttribute("crs");b.BoundingBox?b.BoundingBox.push(c):(b.projection=c.crs,c=b);this.readChildNodes(a,
+c)},BoundingBox:function(a,b){this.readers.ows.WGS84BoundingBox.apply(this,[a,b])},LowerCorner:function(a,b){a=this.getChildValue(a).replace(this.regExes.trimSpace,"");a=a.replace(this.regExes.trimComma,",");a=a.split(this.regExes.splitSpace);b.left=a[0];b.bottom=a[1]},UpperCorner:function(a,b){a=this.getChildValue(a).replace(this.regExes.trimSpace,"");a=a.replace(this.regExes.trimComma,",");a=a.split(this.regExes.splitSpace);b.right=a[0];b.top=a[1];b.bounds=new OpenLayers.Bounds(b.left,b.bottom,
+b.right,b.top);delete b.left;delete b.bottom;delete b.right;delete b.top},Language:function(a,b){b.language=this.getChildValue(a)}}},writers:{ows:{BoundingBox:function(a,b){b=this.createElementNSPlus(b||"ows:BoundingBox",{attributes:{crs:a.projection}});this.writeNode("ows:LowerCorner",a,b);this.writeNode("ows:UpperCorner",a,b);return b},LowerCorner:function(a){return this.createElementNSPlus("ows:LowerCorner",{value:a.bounds.left+" "+a.bounds.bottom})},UpperCorner:function(a){return this.createElementNSPlus("ows:UpperCorner",
+{value:a.bounds.right+" "+a.bounds.top})},Identifier:function(a){return this.createElementNSPlus("ows:Identifier",{value:a})},Title:function(a){return this.createElementNSPlus("ows:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("ows:Abstract",{value:a})},OutputFormat:function(a){return this.createElementNSPlus("ows:OutputFormat",{value:a})}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("xml:lang"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)},AllowedValues:function(a,b){b.allowedValues={};this.readChildNodes(a,b.allowedValues)},AnyValue:function(a,b){b.anyValue=
+!0},DataType:function(a,b){b.dataType=this.getChildValue(a)},Range:function(a,b){b.range={};this.readChildNodes(a,b.range)},MinimumValue:function(a,b){b.minValue=this.getChildValue(a)},MaximumValue:function(a,b){b.maxValue=this.getChildValue(a)},Identifier:function(a,b){b.identifier=this.getChildValue(a)},SupportedCRS:function(a,b){b.supportedCRS=this.getChildValue(a)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Util.applyDefaults({Range:function(a){var b=this.createElementNSPlus("ows:Range",
+{attributes:{"ows:rangeClosure":a.closure}});this.writeNode("ows:MinimumValue",a.minValue,b);this.writeNode("ows:MaximumValue",a.maxValue,b);return b},MinimumValue:function(a){return this.createElementNSPlus("ows:MinimumValue",{value:a})},MaximumValue:function(a){return this.createElementNSPlus("ows:MaximumValue",{value:a})},Value:function(a){return this.createElementNSPlus("ows:Value",{value:a})}},OpenLayers.Format.OWSCommon.v1.prototype.writers.ows)},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a;a=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(a,this.yx)},read:function(a){"string"==
+typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);b.version=this.version;return b},readers:{wmts:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,b){b.contents={};b.contents.layers=[];b.contents.tileMatrixSets={};this.readChildNodes(a,b.contents)},Layer:function(a,b){var c={styles:[],formats:[],dimensions:[],tileMatrixSetLinks:[]};this.readChildNodes(a,c);b.layers.push(c)},Style:function(a,
+b){var c={};c.isDefault="true"===a.getAttribute("isDefault");this.readChildNodes(a,c);b.styles.push(c)},Format:function(a,b){b.formats.push(this.getChildValue(a))},TileMatrixSetLink:function(a,b){var c={};this.readChildNodes(a,c);b.tileMatrixSetLinks.push(c)},TileMatrixSet:function(a,b){if(b.layers){var c={matrixIds:[]};this.readChildNodes(a,c);b.tileMatrixSets[c.identifier]=c}else b.tileMatrixSet=this.getChildValue(a)},TileMatrixSetLimits:function(a,b){b.tileMatrixSetLimits=[];this.readChildNodes(a,
+b)},TileMatrixLimits:function(a,b){var c={};this.readChildNodes(a,c);b.tileMatrixSetLimits.push(c)},MinTileRow:function(a,b){b.minTileRow=parseInt(this.getChildValue(a))},MaxTileRow:function(a,b){b.maxTileRow=parseInt(this.getChildValue(a))},MinTileCol:function(a,b){b.minTileCol=parseInt(this.getChildValue(a))},MaxTileCol:function(a,b){b.maxTileCol=parseInt(this.getChildValue(a))},TileMatrix:function(a,b){if(b.identifier){var c={supportedCRS:b.supportedCRS};this.readChildNodes(a,c);b.matrixIds.push(c)}else b.tileMatrix=
+this.getChildValue(a)},ScaleDenominator:function(a,b){b.scaleDenominator=parseFloat(this.getChildValue(a))},TopLeftCorner:function(a,b){a=this.getChildValue(a).split(" ");if(b.supportedCRS){var c=b.supportedCRS.replace(/urn:ogc:def:crs:(\w+):.+:(\w+)$/,"urn:ogc:def:crs:$1::$2");c=!!this.yx[c]}b.topLeftCorner=c?new OpenLayers.LonLat(a[1],a[0]):new OpenLayers.LonLat(a[0],a[1])},TileWidth:function(a,b){b.tileWidth=parseInt(this.getChildValue(a))},TileHeight:function(a,b){b.tileHeight=parseInt(this.getChildValue(a))},
+MatrixWidth:function(a,b){b.matrixWidth=parseInt(this.getChildValue(a))},MatrixHeight:function(a,b){b.matrixHeight=parseInt(this.getChildValue(a))},ResourceURL:function(a,b){b.resourceUrl=b.resourceUrl||{};var c=a.getAttribute("resourceType");b.resourceUrls||(b.resourceUrls=[]);a=b.resourceUrl[c]={format:a.getAttribute("format"),template:a.getAttribute("template"),resourceType:c};b.resourceUrls.push(a)},LegendURL:function(a,b){b.legends=b.legends||[];var c={format:a.getAttribute("format"),href:a.getAttribute("xlink:href")},
+d=a.getAttribute("width"),e=a.getAttribute("height"),f=a.getAttribute("minScaleDenominator");a=a.getAttribute("maxScaleDenominator");null!==d&&(c.width=parseInt(d));null!==e&&(c.height=parseInt(e));null!==f&&(c.minScaleDenominator=parseInt(f));null!==a&&(c.maxScaleDenominator=parseInt(a));b.legends.push(c)},InfoFormat:function(a,b){b.infoFormats=b.infoFormats||[];b.infoFormats.push(this.getChildValue(a))},WSDL:function(a,b){b.wsdl={};b.wsdl.href=a.getAttribute("xlink:href")},ServiceMetadataURL:function(a,
+b){b.serviceMetadataUrl={};b.serviceMetadataUrl.href=a.getAttribute("xlink:href")},Dimension:function(a,b){var c={values:[]};this.readChildNodes(a,c);b.dimensions.push(c)},Default:function(a,b){b["default"]=this.getChildValue(a)},Value:function(a,b){b.values.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});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+=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);d.equals(c)?d=c:(c={w:d.w<c.w?d.w:null,h:d.h<c.h?d.h:null},c.w&&c.h||(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),d=this.getSafeContentSize(a)));this.setSize(d)},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+=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.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:!0,autoDestroy:!0,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a;this.active=!1},destroy:function(){this.deactivate();this.options=this.layer=null},setLayer:function(a){this.layer=a},activate:function(){return this.active?!1:this.active=!0},deactivate:function(){return this.active?(this.active=!1,!0):!1},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.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&&!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(c&&d&&!d.equals(c))for(var e,f=0,g=b.length;f<g;++f)(e=b[f].geometry)&&e.transform(c,d);this.layer.addFeatures(b)}}else this.bounds=null;this.response=null;this.layer.events.triggerEvent("loadend",{response:a})},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.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}),1==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.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.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";b={url:c,callback:this.createCallback(this.handleDelete,d,b),headers:b.headers};this.deleteWithPOST&&(b.data=this.format.write(a));d.priv=OpenLayers.Request[e](b);
+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);q=q&&a.success();f++;f>=n&&b.callback&&(r.code=q?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,p=a.length;m<p;++m)if(h=
+a[m],k=g[h.state])k.push(h),l.push(h);var n=(0<g[OpenLayers.State.INSERT].length?1:0)+g[OpenLayers.State.UPDATE].length+g[OpenLayers.State.DELETE].length,q=!0,r=new OpenLayers.Protocol.Response({reqFeatures:l});a=g[OpenLayers.State.INSERT];0<a.length&&e.push(this.create(a,OpenLayers.Util.applyDefaults({callback:c,scope:this},b.create)));a=g[OpenLayers.State.UPDATE];for(m=a.length-1;0<=m;--m)e.push(this.update(a[m],OpenLayers.Util.applyDefaults({callback:d,scope:this},b.update)));a=g[OpenLayers.State.DELETE];
+for(m=a.length-1;0<=m;--m)e.push(this["delete"](a[m],OpenLayers.Util.applyDefaults({callback:d,scope:this},b["delete"])));return e},abort:function(a){a&&a.priv.abort()},callUserCallback:function(a,b){(b=b[a.requestType])&&b.callback&&b.callback.call(b.scope,a)},CLASS_NAME:"OpenLayers.Protocol.HTTP"});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.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",template:"${layers}",layerTemplate:'<a href="${href}" target="_blank">${title}</a>',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()&&(d="object"==typeof d.attribution?OpenLayers.String.format(this.layerTemplate,d.attribution):d.attribution,-1===OpenLayers.Util.indexOf(a,d)&&a.push(d))}this.div.innerHTML=
+OpenLayers.String.format(this.template,{layers:a.join(this.separator)})}},CLASS_NAME:"OpenLayers.Control.Attribution"});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)&&this._pointerId==a.pointerId&&(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):(delete this._pointerId,this.started=!1,this.last=this.start=null);return b},dragmove:function(a){this.lastMoveEvt=a;!this.started||this._pointerId!=a.pointerId||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&&this._pointerId==a.pointerId){!0===this.documentDrag&&this.documentEvents&&(this.adjustXY(a),this.removeDocumentEvents());var b=this.start!=this.last;this.dragging=this.started=!1;delete this._pointerId;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();"_pointerId"in this||(this._pointerId=a.pointerId);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.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){if(5<Math.abs(this.dragHandler.start.x-a.x)||5<Math.abs(this.dragHandler.start.y-a.y)){var b=this.dragHandler.start;a=new OpenLayers.Bounds(Math.min(b.x,a.x),Math.max(b.y,a.y),Math.max(b.x,a.x),Math.min(b.y,
+a.y))}else a=this.dragHandler.start.clone();this.removeBox();this.callback("done",[a])},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);a=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width"));var 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=a.getCenterPixel();if(this.out){var c=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(b),f=e.lon-d.getWidth()/
+2*c;a=e.lon+d.getWidth()/2*c;var g=e.lat-d.getHeight()/2*c;c=e.lat+d.getHeight()/2*c;c=new OpenLayers.Bounds(f,g,a,c)}else f=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),c=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;c=this.map.getZoomForExtent(c);d=this.map.getResolution();e=this.map.getResolutionForZoom(c);d==e?this.map.setCenter(this.map.getLonLatFromPixel(b)):this.map.zoomTo(c,
+{x:(d*b.x-e*a)/(d-e),y:(d*b.y-e*g)/(d-e)});f==this.map.getZoom()&&1==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(l){}if(!c&&(c=OpenLayers.Element.hasClass(e,"olScrollable"),!c)){d=0;for(var g=this.map.layers.length;d<g;d++){var h=this.map.layers[d];if(e==h.div||e==h.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*=.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 k=OpenLayers.Util.extend({},a);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(k)},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.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();b=Math.max(c+b,0);b=Math.min(b,this.map.getNumZoomLevels());b!==c&&this.map.zoomTo(b,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.Events.buttonclick=OpenLayers.Class({target:null,events:"mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),startRegEx:/^mousedown|touchstart$/,cancelRegEx:/^touchmove$/,completeRegEx:/^mouseup|touchend$/,isDeviceTouchCapable:"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,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;do{if(OpenLayers.Element.hasClass(a,"olButton")){var 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)&&
+!this.isDeviceTouchCapable||!~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)){b=OpenLayers.Util.pagePosition(c);var 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)&&a.touches&&this.startEvt.touches&&4<(4<Math.abs(a.touches[0].olClientX-this.startEvt.touches[0].olClientX)||Math.abs(a.touches[0].olClientY-this.startEvt.touches[0].olClientY))&&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.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.outsideViewport&&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);if(this.outsideViewport){this.events.attachToElement(this.div);var b=this}else b=this.map;b.events.register("buttonclick",this,this.onButtonClick)},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position;this.buttons=[];var b={w:18,h:18},c=new OpenLayers.Pixel(a.x+b.w/2,a.y);this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft","west-mini.png",a,b);
+this._addButton("panright","east-mini.png",a.add(b.w,0),b);this._addButton("pandown","south-mini.png",c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);this._addButton("zoomworld","zoom-world-mini.png",c.add(0,4*b.h+5),b);this._addButton("zoomout","zoom-minus-mini.png",c.add(0,5*b.h+5),b);return this.div},_addButton:function(a,b,c,d){b=OpenLayers.Util.getImageLocation(b);c=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+a,c,d,b,"absolute");c.style.cursor="pointer";
+this.div.appendChild(c);c.action=a;c.className="olButton";this.buttons.push(c);return c},_removeButton:function(a){this.div.removeChild(a);OpenLayers.Util.removeItem(this.buttons,a)},removeButtons:function(){for(var a=this.buttons.length-1;0<=a;--a)this._removeButton(this.buttons[a])},onButtonClick:function(a){switch(a.buttonElement.action){case "panup":this.map.pan(0,-this.getSlideFactor("h"));break;case "pandown":this.map.pan(0,this.getSlideFactor("h"));break;case "panleft":this.map.pan(-this.getSlideFactor("w"),
+0);break;case "panright":this.map.pan(this.getSlideFactor("w"),0);break;case "zoomin":this.map.zoomIn();break;case "zoomout":this.map.zoomOut();break;case "zoomworld":this.map.zoomToMaxExtent()}},getSlideFactor:function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.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.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.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,h="undefined"!==typeof a.cssText;for(g[b]=null;e<f;e++)if((c=d[e])?(h||(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 g=++e,h=+new Date;f[g]=function(){f[g]&&+new Date-h<=b?(a(),f[g]&&d(f[g],c)):delete f[g]};d(f[g],c);return g},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.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){var c=OpenLayers.Util.isElement(a);1!==arguments.length||"object"!==typeof a||c||(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");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){c=!0;for(var 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)){b=0;for(var c=this.layers.length;b<c;b++){var d=this.layers[b];if(d.isBaseLayer||this.allOverlays){this.setBaseLayer(d);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);c=0;for(var 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){b=this.getLayerIndex(a)+b;this.setLayerIndex(a,b)},setBaseLayer:function(a){if(a!=this.baseLayer&&-1!=OpenLayers.Util.indexOf(this.layers,a)){var b=this.getCachedCenter(),c=this.getResolution(),d=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(d||this.resolution,!0),this.setCenter(b,a,!1,c!=d));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);(b=a.draw(b))&&!a.outsideViewport&&(b.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length,this.viewPortDiv.appendChild(b));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(b=this.popups.length-1;0<=b;--b)this.removePopup(this.popups[b]);a.map=this;this.popups.push(a);if(a=a.draw())a.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length,this.layerContainerDiv.appendChild(a)},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());null!=a&&null!=b&&(c=this.size.w*b/2,b=this.size.h*b/2,c=new OpenLayers.Bounds(a.lon-c,a.lat-b,a.lon+c,a.lat+b));
+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)){b=this.getPixelFromLonLat(b);var 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());d=c.dragging||this.dragging;var 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();f=this.getMaxExtent({restricted:!0});
+var h=f.getCenterLonLat();g=this.center.lon-h.lon;h=h.lat-this.center.lat;var 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)){c.baseLayer.wrapDateLine&&(a=c.adjustZoom(a));var d=b?c.getZoomTargetCenter(b,c.getResolutionForZoom(a)):c.getCenter();d&&c.events.triggerEvent("zoomstart",{center:d,zoom:a});if(c.zoomTween){c.zoomTween.stop();var e=c.getResolution();a=c.getResolutionForZoom(a);e={scale:e/a};b||(a=c.getSize(),b={x:a.w/2,y:a.h/2});c.zoomTween.start({scale:1},e,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();var e=c.getResolution()/a.scale,f=c.getZoomForResolution(e,!0);a=1===a.scale?d:c.getZoomTargetCenter(b,e);c.moveTo(a,f)}}})}else c.setCenter(d,a)}},zoomIn:function(){this.zoomTween&&this.zoomTween.stop();this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTween&&this.zoomTween.stop();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);a=this.size.w*c/2;c=this.size.h*c/2;var d=
+this.getCachedCenter();a=new OpenLayers.Bounds(d.lon-a,d.lat-c,d.lon+a,d.lat+c);this.zoomToExtent(a,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;(a=this.getLonLatFromPixel(a))&&(c=new OpenLayers.LonLat(a.lon+
+e*b,a.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");var 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.projection&&this.projection.getUnits()?this.units=this.projection.getUnits():this.units=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=!0;var d=0;for(a=this.RESOLUTION_PROPERTIES.length;d<a;d++){var e=this.RESOLUTION_PROPERTIES[d];b[e]=this.options[e];c&&this.options[e]&&(c=!1)}null==this.options.alwaysInRange&&(this.alwaysInRange=c);null==b.resolutions&&(b.resolutions=this.resolutionsFromScales(b.scales));null==b.resolutions&&(b.resolutions=this.calculateResolutions(b));if(null==
+b.resolutions){d=0;for(a=this.RESOLUTION_PROPERTIES.length;d<a;d++)e=this.RESOLUTION_PROPERTIES[d],b[e]=null!=this.options[e]?this.options[e]:this.map[e];null==b.resolutions&&(b.resolutions=this.resolutionsFromScales(b.scales));null==b.resolutions&&(b.resolutions=this.calculateResolutions(b))}if(this.options.maxResolution&&"auto"!==this.options.maxResolution)var f=this.options.maxResolution;this.options.minScale&&(f=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units));if(this.options.minResolution&&
+"auto"!==this.options.minResolution)var g=this.options.minResolution;this.options.maxScale&&(g=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,this.units));b.resolutions&&(b.resolutions.sort(function(a,b){return b-a}),f||(f=b.resolutions[0]),g||(g=b.resolutions[b.resolutions.length-1]));if(this.resolutions=b.resolutions){a=this.resolutions.length;this.scales=Array(a);for(d=0;d<a;d++)this.scales[d]=OpenLayers.Util.getScaleFromResolution(this.resolutions[d],this.units);this.numZoomLevels=
+a}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;var c=a.length;var d=Array(c);for(b=0;b<c;b++)d[b]=OpenLayers.Util.getResolutionFromScale(a[b],this.units);return d}},calculateResolutions:function(a){var b=a.maxResolution;if(null!=a.minScale)b=OpenLayers.Util.getResolutionFromScale(a.minScale,this.units);else if("auto"==
+b&&null!=this.maxExtent){var c=this.map.getSize();var d=this.maxExtent.getWidth()/c.w;c=this.maxExtent.getHeight()/c.h;b=Math.max(d,c)}d=a.minResolution;null!=a.maxScale?d=OpenLayers.Util.getResolutionFromScale(a.maxScale,this.units):"auto"==a.minResolution&&null!=this.minExtent&&(c=this.map.getSize(),d=this.minExtent.getWidth()/c.w,c=this.minExtent.getHeight()/c.h,d=Math.max(d,c));"number"!==typeof b&&"number"!==typeof d&&null!=this.maxExtent&&(b=this.map.getTileSize(),b=Math.max(this.maxExtent.getWidth()/
+b.w,this.maxExtent.getHeight()/b.h));c=a.maxZoomLevel;a=a.numZoomLevels;"number"===typeof d&&"number"===typeof b&&void 0===a?a=Math.floor(Math.log(b/d)/Math.log(2))+1:void 0===a&&null!=c&&(a=c+1);if(!("number"!==typeof a||0>=a||"number"!==typeof b&&"number"!==typeof d)){c=Array(a);var e=2;"number"==typeof d&&"number"==typeof b&&(e=Math.pow(b/d,1/(a-1)));var f;if("number"===typeof b)for(f=0;f<a;f++)c[f]=b/Math.pow(e,f);else for(f=0;f<a;f++)c[a-1-f]=d*Math.pow(e,f);return c}},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();a=Math.max(a.getWidth()/c.w,a.getHeight()/c.h);return this.getZoomForResolution(a,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);a=this.resolutions[b]-(a-b)*(this.resolutions[b]-this.resolutions[Math.ceil(a)])}else a=
+this.resolutions[Math.round(a)];return a},getZoomForResolution:function(a,b){var c;if(this.map.fractionalZoom){b=0;var d=this.resolutions[b],e=this.resolutions[this.resolutions.length-1];var f=0;for(c=this.resolutions.length;f<c;++f){var g=this.resolutions[f];g>=a&&(d=g,b=f);if(g<=a){e=g;break}}f=d-e;a=0<f?b+(d-a)/f:b}else{e=Number.POSITIVE_INFINITY;f=0;for(c=this.resolutions.length;f<c;f++)if(b){d=Math.abs(this.resolutions[f]-a);if(d>e)break;e=d}else if(this.resolutions[f]<a)break;a=Math.max(0,f-
+1)}return a},getLonLatFromViewPortPx:function(a){var b=null,c=this.map;if(null!=a&&c.minPx){b=c.getResolution();var 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.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;b&&(b=b.getWidth(),this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.left+this.extent.right)/
+2)/b)*b)},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.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;var b=0;for(a=this.strategies.length;b<a;b++){var c=this.strategies[b];c.autoDestroy&&c.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;var b=0;for(a=this.strategies.length;b<a;b++){var c=this.strategies[b];c.autoActivate&&c.activate()}}},removeMap:function(a){this.drawn=!1;if(this.strategies){var b;var c=0;for(b=this.strategies.length;c<b;c++)a=this.strategies[c],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";d=this.map.getSize();var e=d.w;d=d.h;e=e/2*this.ratio-e/2;d=d/2*this.ratio-d/2;e+=this.map.layerContainerOriginPx.x;e=-Math.round(e);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]);if(b=!b||!b.silent){a={features:a};if(!1===this.events.triggerEvent("beforefeaturesadded",a))return;a=a.features}for(var c=[],d=0,e=a.length;d<e;d++){this.renderer.locked=d!=a.length-1?!0:!1;var f=a[d];if(this.geometryType&&!(f.geometry instanceof this.geometryType))throw new TypeError("addFeatures: component should be an "+this.geometryType.prototype.CLASS_NAME);f.layer=this;!f.style&&this.style&&
+(f.style=OpenLayers.Util.extend({},this.style));if(b){if(!1===this.events.triggerEvent("beforefeatureadded",{feature:f}))continue;this.preFeatureInsert(f)}c.push(f);this.features.push(f);this.drawFeature(f);b&&(this.events.triggerEvent("featureadded",{feature:f}),this.onFeatureInsert(f))}b&&this.events.triggerEvent("featuresadded",{features:c})},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());(b=!b||!b.silent)&&this.events.triggerEvent("beforefeaturesremoved",{features:a});for(var c=a.length-1;0<=c;c--){this.renderer.locked=0!=c&&a[c-1].geometry?!0:!1;var d=a[c];delete this.unrenderedFeatures[d.id];b&&this.events.triggerEvent("beforefeatureremoved",{feature:d});this.features=OpenLayers.Util.removeItem(this.features,d);d.layer=null;d.geometry&&this.renderer.eraseFeatures(d);-1!=OpenLayers.Util.indexOf(this.selectedFeatures,d)&&OpenLayers.Util.removeItem(this.selectedFeatures,
+d);b&&this.events.triggerEvent("featureremoved",{feature:d})}b&&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)for(this.removeFeatures(a,b),b=a.length-1;0<=b;b--)a[b].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))}b=this.renderer.drawFeature(a,b);!1===b||null===b?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,d=0,e=b.length;d<e;d++)if(c=b[d].geometry)null===a&&(a=
+new OpenLayers.Bounds),a.extend(c.getBounds());return a},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:!1,layers:null,display:function(){},getFeatureFromEvent:function(a){for(var b=this.layers,c,d=0;d<b.length;d++)if(c=b[d].getFeatureFromEvent(a))return c},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();a.events.register("changelayer",this,this.handleChangeLayer)},removeMap:function(a){a.events.unregister("changelayer",this,this.handleChangeLayer);
+this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments)},collectRoots:function(){for(var a,b=0;b<this.map.layers.length;++b)a=this.map.layers[b],-1!=OpenLayers.Util.indexOf(this.layers,a)&&a.renderer.moveRoot(this.renderer)},resetRoots:function(){for(var a,b=0;b<this.layers.length;++b)a=this.layers[b],this.renderer&&a.renderer.getRenderLayerId()==this.id&&this.renderer.moveRoot(a.renderer)},handleChangeLayer:function(a){var b=a.layer;"order"==a.property&&-1!=OpenLayers.Util.indexOf(this.layers,
+b)&&(this.resetRoots(),this.collectRoots())},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:!1,clickout:!0,toggle:!1,hover:!1,highlightOnly:!1,box:!1,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);null===this.scope&&(this.scope=this);this.initLayer(a);a=
+{click:this.clickFeature,clickout:this.clickoutFeature};this.hover&&(a.over=this.overFeature,a.out=this.outFeature);this.callbacks=OpenLayers.Util.extend(a,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;for(c=0;c<b.length;++c){var d=b[c];var e=0;if(null!=d.selectedFeatures)for(;d.selectedFeatures.length>e;){var f=d.selectedFeatures[e];a&&a.except==f?++e:this.unselect(f)}}},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()},addLayer:function(a){var b=this.active;this.deactivate();null==this.layers?null!=this.layer?(this.layers=[this.layer],this.layers.push(a)):this.layers=[a]:this.layers.push(a);this.initLayer(this.layers);this.handlers.feature.layer=this.layer;b&&this.activate()},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(a,b){},onDrag:function(a,b){},onComplete:function(a,b){},onEnter:function(a){},onLeave:function(a){},documentDrag:!1,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,
+up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})}},clickFeature:function(a){this.handlers.feature.touch&&!this.over&&this.overFeature(a)&&(this.handlers.drag.dragstart(this.handlers.feature.evt),this.handlers.drag.stopDown=
+!1)},clickoutFeature:function(a){this.handlers.feature.touch&&this.over&&(this.outFeature(a),this.handlers.drag.stopDown=!0)},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=!1;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,
+this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},overFeature:function(a){var b=!1;this.handlers.drag.dragging?this.over=this.feature.id==a.id?!0:!1:(this.feature=a,this.handlers.drag.activate(),this.over=b=!0,OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onEnter(a));return b},downFeature:function(a){this.lastPixel=a;this.onStart(this.feature,a)},moveFeature:function(a){var b=this.map.getResolution();this.feature.geometry.move(b*
+(a.x-this.lastPixel.x),b*(this.lastPixel.y-a.y));this.layer.drawFeature(this.feature);this.lastPixel=a;this.onDrag(this.feature,a)},upFeature:function(a){this.over||this.handlers.drag.deactivate()},doneDragging:function(a){this.onComplete(this.feature,a)},outFeature:function(a){this.handlers.drag.dragging?this.feature.id==a.id&&(this.over=!1):(this.over=!1,this.handlers.drag.deactivate(),OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onLeave(a),this.feature=null)},
+cancel:function(){this.handlers.drag.deactivate();this.over=!1},setMap:function(a){this.handlers.drag.setMap(a);this.handlers.feature.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.Control.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("#")&&0==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.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){this.currentCenter=this.pinchOrigin=a=this.preserveCenter?this.map.getPixelFromLonLat(this.map.getCenter()):
+a.xy},pinchMove:function(a,b){b=b.scale;var c=this.map.layerContainerOriginPx,d=this.pinchOrigin;a=this.preserveCenter?this.map.getPixelFromLonLat(this.map.getCenter()):a.xy;this.map.applyTransform(Math.round(c.x+a.x-d.x+(b-1)*(c.x-d.x)),Math.round(c.y+a.y-d.y+(b-1)*(c.y-d.y)),b);this.currentCenter=a},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.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._clearRectId=OpenLayers.Util.createUniqueID();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){if(a.geometry){b=this.applyDefaultSymbolizer(b||a.style);var 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){d=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent();for(var e=0;e<a.components.length;e++)this.calculateFeatureDx(a.components[e].getBounds(),d),this.drawGeometry(a.components[e],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;var h=void 0!=b.graphicXOffset?b.graphicXOffset:-(.5*f),k=void 0!=b.graphicYOffset?b.graphicYOffset:-(.5*g),l=this._clearRectId,m=b.graphicOpacity||b.fillOpacity;
+d.onload=OpenLayers.Function.bind(function(){if(this.features[c]&&l===this._clearRectId){var b=this.getLocalXY(a),e=b[0];b=b[1];if(!isNaN(e)&&!isNaN(b)){e=e+h|0;b=b+k|0;var q=this.canvas;q.globalAlpha=m;var r=OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);q.drawImage(d,e*r,b*r,f*r,g*r);this.hitDetection&&(this.setHitContextStyle("fill",c),this.hitContext.fillRect(e,b,
+f,g))}}},this);d.src=b.externalGraphic;d.complete&&(d.onload(),d.onload=null)},drawNamedSymbol:function(a,b,c){var d=Math.PI/180;var e=OpenLayers.Renderer.symbol[b.graphicName];if(!e)throw Error(b.graphicName+" is not a valid symbol name");if(e.length&&!(2>e.length)){a=this.getLocalXY(a);var f=a[0];var g=a[1];if(!isNaN(f)&&!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)var h=
+this.cachedSymbolBounds[b.graphicName];else{h=new OpenLayers.Bounds;for(a=0;a<e.length;a+=2)h.extend(new OpenLayers.LonLat(e[a],e[a+1]));this.cachedSymbolBounds[b.graphicName]=h}this.canvas.save();this.hitDetection&&this.hitContext.save();this.canvas.translate(f,g);this.hitDetection&&this.hitContext.translate(f,g);a=d*b.rotation;isNaN(a)||(this.canvas.rotate(a),this.hitDetection&&this.hitContext.rotate(a));d=2*b.pointRadius/Math.max(h.getWidth(),h.getHeight());this.canvas.scale(d,d);this.hitDetection&&
+this.hitContext.scale(d,d);a=h.getCenterLonLat().lon;h=h.getCenterLonLat().lat;this.canvas.translate(-a,-h);this.hitDetection&&this.hitContext.translate(-a,-h);g=b.strokeWidth;b.strokeWidth=g/d;if(!1!==b.fill){this.setCanvasStyle("fill",b);this.canvas.beginPath();for(a=0;a<e.length;a+=2)h=e[a],f=e[a+1],0==a&&this.canvas.moveTo(h,f),this.canvas.lineTo(h,f);this.canvas.closePath();this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",c,b);this.hitContext.beginPath();for(a=0;a<e.length;a+=
+2)h=e[a],f=e[a+1],0==a&&this.canvas.moveTo(h,f),this.hitContext.lineTo(h,f);this.hitContext.closePath();this.hitContext.fill()}}if(!1!==b.stroke){this.setCanvasStyle("stroke",b);this.canvas.beginPath();for(a=0;a<e.length;a+=2)h=e[a],f=e[a+1],0==a&&this.canvas.moveTo(h,f),this.canvas.lineTo(h,f);this.canvas.closePath();this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",c,b,d);this.hitContext.beginPath();for(a=0;a<e.length;a+=2)h=e[a],f=e[a+1],0==a&&this.hitContext.moveTo(h,
+f),this.hitContext.lineTo(h,f);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){a=this.getLocalXY(a);this.setCanvasStyle("reset");this.canvas.fillStyle=b.fontColor;this.canvas.globalAlpha=b.fontOpacity||1;var c=[b.fontStyle?b.fontStyle:"normal","normal",b.fontWeight?b.fontWeight:"normal",b.fontSize?b.fontSize:"1em",b.fontFamily?b.fontFamily:"sans-serif"].join(" ");var d=b.label.split("\n"),e=d.length;
+if(this.canvas.fillText){this.canvas.font=c;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 f=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==f&&(f=-.5);c=this.canvas.measureText("Mg").height||this.canvas.measureText("xx").width;a[1]+=c*f*(e-1);for(f=0;f<e;f++)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(d[f],a[0],a[1]+c*f+1),this.canvas.restore()),this.canvas.fillText(d[f],a[0],a[1]+c*f)}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=c;var g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];null==g&&(g=-.5);f=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==f&&(f=-.5);c=this.canvas.mozMeasureText("xx");a[1]+=c*(1+f*e);for(f=0;f<e;f++){b=a[0]+g*this.canvas.mozMeasureText(d[f]);
+var h=a[1]+f*c;this.canvas.translate(b,h);this.canvas.mozDrawText(d[f]);this.canvas.translate(-b,-h)}}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(){this.clearCanvas();this.features={}},clearCanvas:function(){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,0,b,a);this._clearRectId=OpenLayers.Util.createUniqueID();this.hitDetection&&this.hitContext.clearRect(0,0,
+b,a)},getFeatureIdFromEvent:function(a){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{var 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){this.clearCanvas();
+var a=[],b=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent(),c;for(c in this.features)if(this.features.hasOwnProperty(c)){var d=this.features[c][0];var e=d.geometry;this.calculateFeatureDx(e.getBounds(),b);var f=this.features[c][1];this.drawGeometry(e,f,d.id);f.label&&a.push([d,f])}e=0;for(f=a.length;e<f;++e)d=a[e],this.drawText(d[0].geometry.getCentroid(),d[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.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;for(var b=void 0;a<this.order.length&&void 0==b;a++)b=OpenLayers.Util.getElement(this.order[a]);return b||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){d=0;for(var 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));0==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};switch(b.CLASS_NAME){case "OpenLayers.Geometry.Point":!1===c.graphic&&(d.isFilled=!1,d.isStroked=!1);var 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 0!=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(b=OpenLayers.Util.getElement(a.id))&&
+b.parentNode&&(b.geometry&&(b.geometry.destroy(),b.geometry=null),b.parentNode.removeChild(b),this.indexer&&this.indexer.remove(b),b._style.backgroundGraphic&&(a=OpenLayers.Util.getElement(a.id+this.BACKGROUND_ID_SUFFIX))&&a.parentNode&&a.parentNode.removeChild(a))},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;e=[this.root,this.vectorRoot,this.textRoot];for(var 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;e=b.graphicWidth||b.graphicHeight;f=b.graphicHeight||b.graphicWidth;e=e?e:2*b.pointRadius;f=f?f:2*b.pointRadius;var g=this.getResolution();var h=void 0!=b.graphicXOffset?b.graphicXOffset:-(.5*e);var k=void 0!=b.graphicYOffset?b.graphicYOffset:-(.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);k=a.getElementsByTagName("stroke");k=0==k.length?null:k[0];c.isStroked?(k||(k=this.createNode("olv:stroke",a.id+"_stroke"),a.appendChild(k)),k.on=!0,k.color=b.strokeColor,k.weight=b.strokeWidth+"px",k.opacity=b.strokeOpacity,k.endcap="butt"==b.strokeLinecap?"flat":b.strokeLinecap||"round",b.strokeDashstyle&&(k.dashstyle=this.dashStyle(b))):(a.stroked=!1,k&&(k.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;if(d.graphicWidth&&d.graphicHeight){var f=Math.max(d.graphicWidth,d.graphicHeight);var g=d.graphicWidth/d.graphicHeight;var h=Math.round(d.graphicWidth||f*g),k=Math.round(d.graphicHeight||f);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)g=m.width/m.height,f=Math.max(2*d.pointRadius,d.graphicWidth||0,d.graphicHeight||0),b*=g,d.graphicWidth=f*g,d.graphicHeight=f,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){if(b=b.getBounds()){var c=this.getResolution();b=new OpenLayers.Bounds((b.left-this.featureDx)/c-this.offset.x|0,b.bottom/c-this.offset.y|0,(b.right-this.featureDx)/c-this.offset.x|0,b.top/c-this.offset.y|0);a.style.left=b.left+"px";a.style.top=b.top+"px";a.style.width=b.getWidth()+"px";a.style.height=b.getHeight()+"px";a.coordorigin=b.left+" "+b.top;a.coordsize=b.getWidth()+" "+b.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){a=document.createElement(a);b&&(a.id=b);a.unselectable="on";a.onselectstart=OpenLayers.Function.False;return a},nodeTypeCompare:function(a,b){var c=b.indexOf(":");-1!=c&&(b=b.substr(c+1));a=a.nodeName;c=a.indexOf(":");-1!=c&&(a=a.substr(c+1));return b==a},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;var h=0;for(e=b.components.length;h<e;h++){d.push("m");var k=b.components[h].components;var l=0===h;var m=f=null;var p=
+0;for(g=k.length;p<g;p++){var n=k[p];var q=(n.x-this.featureDx)/c-this.offset.x|0;n=n.y/c-this.offset.y|0;q=" "+q+","+n;d.push(q);0==p&&d.push(" l");l||(f?f!=q&&(m?m!=q&&(l=!0):m=q):f=q)}d.push(l?" 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:.5,r:1,t:0,m:.5,b:1};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))}e=parseFloat(a.getAttributeNS(null,"r"));d=1;if("OpenLayers.Geometry.Point"==a._geometryClass&&e){a.style.visibility="";if(!1===b.graphic)a.style.visibility="hidden";else if(b.externalGraphic){var f=this.getPosition(a);b.graphicWidth&&b.graphicHeight&&
+a.setAttributeNS(null,"preserveAspectRatio","none");e=b.graphicWidth||b.graphicHeight;var g=b.graphicHeight||b.graphicWidth;e=e?e:2*b.pointRadius;g=g?g:2*b.pointRadius;var h=void 0!=b.graphicYOffset?b.graphicYOffset:-(.5*g),k=b.graphicOpacity||b.fillOpacity;a.setAttributeNS(null,"x",(f.x+(void 0!=b.graphicXOffset?b.graphicXOffset:-(.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)){e=3*b.pointRadius;g=2*e;var 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+")"):(l=this.symbolMetrics[l.id],a.firstChild.setAttributeNS(null,"transform","rotate("+e+" "+l[1]+" "+l[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){b*=a.strokeWidth;a=a.strokeDashstyle;switch(a){case "solid":return"none";case "dot":return[1,4*b].join();case "dash":return[4*b,4*b].join();case "dashdot":return[4*b,4*b,1,4*b].join();case "longdash":return[8*b,4*b].join();case "longdashdot":return[8*b,4*b,1,4*b].join();default:return OpenLayers.String.trim(a).replace(/\s+/g,",")}},createNode:function(a,
+b){a=document.createElementNS(this.xmlns,a);b&&a.setAttributeNS(null,"id",b);return a},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){b=this.getComponentsString(b.components);return b.path?(a.setAttributeNS(null,"points",b.path),b.complete?a:null):!1},drawLinearRing:function(a,b){b=this.getComponentsString(b.components);return b.path?(a.setAttributeNS(null,"points",
+b.path),b.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;var 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 p=OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];null==p&&(p=-.5);m.setAttribute("dy",p*(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;b=this.top-b.y/c;var g=(a.x-this.featureDx)/c+this.left;a=this.top-a.y/c;if(g<-d||g>d)c=(a-b)/(g-f),g=0>g?-d:d,a=b+(g-f)*c;if(a<-e||a>e)c=(g-f)/(a-b),a=0>a?-e:e,g=f+(a-b)*c;return g+","+a},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);c=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);for(var 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.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.events.triggerEvent("refresh"),this.mergeNewParams({_olSalt:Math.random()})):OpenLayers.Layer.prototype.redraw.apply(this,[])},selectUrl:function(a,b){for(var c=1,d=0,e=a.length;d<e;d++)c*=
+a.charCodeAt(d)*this.URL_HASH_FACTOR,c-=Math.floor(c);return b[Math.floor(c*b.length)]},getFullRequestString:function(a,b){b=b||this.url;var c=OpenLayers.Util.extend({},this.params);c=OpenLayers.Util.extend(c,a);a=OpenLayers.Util.getParameterString(c);OpenLayers.Util.isArray(b)&&(b=this.selectUrl(a,b));a=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(b));for(var d in c)d.toUpperCase()in a&&delete c[d];a=OpenLayers.Util.getParameterString(c);return OpenLayers.Util.urlAppend(b,a)},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=this.layer.gutter/this.layer.tileSize.w*100,c=this.layer.gutter/this.layer.tileSize.h*100);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){if(this.frame){var a=this.frame.cloneNode(!1);a.appendChild(this.imgDiv)}else 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.visibility&&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();c+=l*Math.ceil((k-c)/l)}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;for(c=this.serverResolutions.length-1;0<=c;c--){var d=this.serverResolutions[c];var e=Math.abs(d-a);if(e>b)break;b=e;var f=d}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}c=this.backBufferResolution/a;for(var d=b.childNodes,e,f=d.length-1;0<=f;--f)e=d[f],e.style.top=(c*e._i*b._th|0)+"px",e.style.left=(c*e._j*b._tw|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(){if(0<this.grid.length){var 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));b=0;for(var 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=this.singleTile?this.getImageSize(f.bounds).w:f.size.w,g._h=f.size.h,g.id=f.id+"_bb",a.appendChild(g))}a._tw=this.tileSize.w;a._th=this.tileSize.h}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){a=this.grid[b-1][0].bounds;b=this.grid[0].length*a.getWidth();var 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);this.gridResolution=this.getServerResolution();(c=this.maxExtent)&&(!this.displayOutsideMaxExtent||this.map.baseLayer.wrapDateLine&&this.maxExtent.equals(this.map.getMaxExtent()))&&(b.left=Math.max(b.left,c.left),b.right=Math.min(b.right,c.right));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)},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}},getImageSize:function(a){var b=OpenLayers.Layer.HTTPRequest.prototype.getImageSize.apply(this,arguments);this.singleTile&&(b=new OpenLayers.Size(Math.round(a.getWidth()/this.gridResolution),b.h));return b},getTileOrigin:function(){var a=this.tileOrigin;
+if(!a){a=this.getMaxExtent();var 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;var 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;var 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);c=e.tilelon;var h=e.tilelat;e=this.map.layerContainerOriginPx.x;var k=this.map.layerContainerOriginPx.y;var 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;e=[];var p=this.map.getCenter(),n=0;do{var q=this.grid[n];q||(q=[],this.grid.push(q));k=0;do{l=this.getTileBoundsForGridIndex(n,k);var r=m.clone();r.x+=k*Math.round(d);r.y+=n*Math.round(f);var t=q[k];t?t.moveTo(l,r,!1):(t=this.addTile(l,r),this.addTileMonitoringHooks(t),q.push(t));r=l.getCenterLonLat();e.push({tile:t,distance:Math.pow(r.lon-p.lon,2)+Math.pow(r.lat-p.lat,2)});k+=1}while(l.right<=a.right+c*this.buffer||k<b);n+=1}while(l.bottom>=a.bottom-h*this.buffer||n<g);this.removeExcessTiles(n,
+k);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){a=new this.tileClass(this,b,a,null,this.tileSize,this.tileOptions);this.events.triggerEvent("addtile",{tile:a});return a},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;
+var 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,e,f;this.grid.length>a;)for(d=this.grid.pop(),e=0,f=d.length;e<f;e++)c=d[e],this.destroyTile(c);e=0;for(f=
+this.grid.length;e<f;e++)for(;this.grid[e].length>b;)d=this.grid[e],c=d.pop(),this.destroyTile(c)},onMapResize:function(){this.singleTile&&(this.clearGrid(),this.setTileSize())},getTileBounds:function(a){var b=this.maxExtent,c=this.getResolution(),d=c*this.tileSize.w;c*=this.tileSize.h;var 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.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,serverResolutions:null,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png",png:"png","image/jpeg":"jpg","image/jpg":"jpg",jpeg:"jpg",jpg:"jpg"},matrix:null,initialize:function(a){var b=
+{url:!0,layer:!0,style:!0,matrixSet:!0},c;for(c in b)if(!(c in a))throw Error("Missing property '"+c+"' in layer configuration.");a.params=OpenLayers.Util.upperCaseObject(a.params);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,a.params,a]);this.formatSuffix||(this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop());if(this.matrixIds&&(a=this.matrixIds.length)&&"string"===typeof this.matrixIds[0])for(b=this.matrixIds,this.matrixIds=Array(a),c=0;c<a;++c)this.matrixIds[c]=
+{identifier:b[c]}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments)},updateMatrixProperties:function(){if(this.matrix=this.getMatrix())this.matrix.topLeftCorner&&(this.tileOrigin=this.matrix.topLeftCorner),this.matrix.tileWidth&&this.matrix.tileHeight&&(this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight)),this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top)),this.tileFullExtent||(this.tileFullExtent=
+this.maxExtent)},moveTo:function(a,b,c){!b&&this.matrix||this.updateMatrixProperties();return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMTS(this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getIdentifier:function(){return this.getServerZoom()},getMatrix:function(){if(this.matrixIds&&0!==this.matrixIds.length)if("scaleDenominator"in this.matrixIds[0])for(var a=OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*
+this.getServerResolution()/2.8E-4,b=Number.POSITIVE_INFINITY,c,d=0,e=this.matrixIds.length;d<e;++d){if(c=Math.abs(1-this.matrixIds[d].scaleDenominator/a),c<b){b=c;var f=this.matrixIds[d]}}else f=this.matrixIds[this.getIdentifier()];else f={identifier:this.getIdentifier()};return f},getTileInfo:function(a){var b=this.getServerResolution(),c=(a.lon-this.tileOrigin.lon)/(b*this.tileSize.w);a=(this.tileOrigin.lat-a.lat)/(b*this.tileSize.h);b=Math.floor(c);var d=Math.floor(a);return{col:b,row:d,i:Math.floor((c-
+b)*this.tileSize.w),j:Math.floor((a-d)*this.tileSize.h)}},getURL:function(a){a=this.adjustBounds(a);var b="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(a)){a=a.getCenterLonLat();var c=this.getTileInfo(a),d=this.dimensions;b=OpenLayers.Util.isArray(this.url)?this.selectUrl([this.version,this.style,this.matrixSet,this.matrix.identifier,c.row,c.col].join(),this.url):this.url;if("REST"===this.requestEncoding.toUpperCase()){var e=this.params;if(-1!==b.indexOf("{")){b=b.replace(/\{/g,
+"${");c={style:this.style,Style:this.style,TileMatrixSet:this.matrixSet,TileMatrix:this.matrix.identifier,TileRow:c.row,TileCol:c.col};if(d)for(a=d.length-1;0<=a;--a){var f=d[a];c[f]=e[f.toUpperCase()]}b=OpenLayers.String.format(b,c)}else{f=this.version+"/"+this.layer+"/"+this.style+"/";if(d)for(a=0;a<d.length;a++)void 0!==e[d[a]]&&(f=f+e[d[a]]+"/");f=f+this.matrixSet+"/"+this.matrix.identifier+"/"+c.row+"/"+c.col+"."+this.formatSuffix;b.match(/\/$/)||(b+="/");b+=f}}else"KVP"===this.requestEncoding.toUpperCase()&&
+(e={SERVICE:"WMTS",REQUEST:"GetTile",VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:c.row,TILECOL:c.col,FORMAT:this.format},b=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[e]))}return b},mergeNewParams:function(a){return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(a)])},CLASS_NAME:"OpenLayers.Layer.WMTS"});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:this.serverResolutions?this.serverResolutions.length: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.tileOrigin.lon)/(b*this.tileSize.w));a=Math.round((this.tileOrigin.lat-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.top))},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.SphericalMercator={getExtent:function(){return 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){c=OpenLayers.Projection.transform({x:c,y:d},a,b);return new OpenLayers.LonLat(c.x,c.y)}}(),inverseMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){c=OpenLayers.Projection.transform({x:c,y:d},b,
+a);return new OpenLayers.LonLat(c.x,c.y)}}()};
diff --git a/web/js/OpenLayers/img/blank.gif b/web/vendor/OpenLayers/img/blank.gif
index 4bcc753a1..4bcc753a1 100644
--- a/web/js/OpenLayers/img/blank.gif
+++ b/web/vendor/OpenLayers/img/blank.gif
Binary files differ
diff --git a/web/js/OpenLayers/img/cloud-popup-relative.png b/web/vendor/OpenLayers/img/cloud-popup-relative.png
index c9fd4c411..c9fd4c411 100755
--- a/web/js/OpenLayers/img/cloud-popup-relative.png
+++ b/web/vendor/OpenLayers/img/cloud-popup-relative.png
Binary files differ
diff --git a/web/js/OpenLayers/img/drag-rectangle-off.png b/web/vendor/OpenLayers/img/drag-rectangle-off.png
index 382a81d9a..382a81d9a 100644
--- a/web/js/OpenLayers/img/drag-rectangle-off.png
+++ b/web/vendor/OpenLayers/img/drag-rectangle-off.png
Binary files differ
diff --git a/web/js/OpenLayers/img/drag-rectangle-on.png b/web/vendor/OpenLayers/img/drag-rectangle-on.png
index 2ed2d5b08..2ed2d5b08 100644
--- a/web/js/OpenLayers/img/drag-rectangle-on.png
+++ b/web/vendor/OpenLayers/img/drag-rectangle-on.png
Binary files differ
diff --git a/web/js/OpenLayers/img/east-mini.png b/web/vendor/OpenLayers/img/east-mini.png
index ecedc5ef9..ecedc5ef9 100644
--- a/web/js/OpenLayers/img/east-mini.png
+++ b/web/vendor/OpenLayers/img/east-mini.png
Binary files differ
diff --git a/web/js/OpenLayers/img/layer-switcher-maximize.png b/web/vendor/OpenLayers/img/layer-switcher-maximize.png
index f346086b3..f346086b3 100644
--- a/web/js/OpenLayers/img/layer-switcher-maximize.png
+++ b/web/vendor/OpenLayers/img/layer-switcher-maximize.png
Binary files differ
diff --git a/web/js/OpenLayers/img/layer-switcher-minimize.png b/web/vendor/OpenLayers/img/layer-switcher-minimize.png
index b4aab0bf7..b4aab0bf7 100644
--- a/web/js/OpenLayers/img/layer-switcher-minimize.png
+++ b/web/vendor/OpenLayers/img/layer-switcher-minimize.png
Binary files differ
diff --git a/web/js/OpenLayers/img/marker-blue.png b/web/vendor/OpenLayers/img/marker-blue.png
index f5b4efcfe..f5b4efcfe 100644
--- a/web/js/OpenLayers/img/marker-blue.png
+++ b/web/vendor/OpenLayers/img/marker-blue.png
Binary files differ
diff --git a/web/js/OpenLayers/img/marker-gold.png b/web/vendor/OpenLayers/img/marker-gold.png
index 0b62f9618..0b62f9618 100644
--- a/web/js/OpenLayers/img/marker-gold.png
+++ b/web/vendor/OpenLayers/img/marker-gold.png
Binary files differ
diff --git a/web/js/OpenLayers/img/marker-green.png b/web/vendor/OpenLayers/img/marker-green.png
index c36b164b5..c36b164b5 100644
--- a/web/js/OpenLayers/img/marker-green.png
+++ b/web/vendor/OpenLayers/img/marker-green.png
Binary files differ
diff --git a/web/js/OpenLayers/img/marker.png b/web/vendor/OpenLayers/img/marker.png
index ea3e59a56..ea3e59a56 100644
--- a/web/js/OpenLayers/img/marker.png
+++ b/web/vendor/OpenLayers/img/marker.png
Binary files differ
diff --git a/web/js/OpenLayers/img/measuring-stick-off.png b/web/vendor/OpenLayers/img/measuring-stick-off.png
index efbf63fb3..efbf63fb3 100644
--- a/web/js/OpenLayers/img/measuring-stick-off.png
+++ b/web/vendor/OpenLayers/img/measuring-stick-off.png
Binary files differ
diff --git a/web/js/OpenLayers/img/measuring-stick-on.png b/web/vendor/OpenLayers/img/measuring-stick-on.png
index 2d41c84e8..2d41c84e8 100644
--- a/web/js/OpenLayers/img/measuring-stick-on.png
+++ b/web/vendor/OpenLayers/img/measuring-stick-on.png
Binary files differ
diff --git a/web/js/OpenLayers/img/north-mini.png b/web/vendor/OpenLayers/img/north-mini.png
index dfd7211ff..dfd7211ff 100644
--- a/web/js/OpenLayers/img/north-mini.png
+++ b/web/vendor/OpenLayers/img/north-mini.png
Binary files differ
diff --git a/web/js/OpenLayers/img/panning-hand-off.png b/web/vendor/OpenLayers/img/panning-hand-off.png
index d1c593e1d..d1c593e1d 100644
--- a/web/js/OpenLayers/img/panning-hand-off.png
+++ b/web/vendor/OpenLayers/img/panning-hand-off.png
Binary files differ
diff --git a/web/js/OpenLayers/img/panning-hand-on.png b/web/vendor/OpenLayers/img/panning-hand-on.png
index 9b7e0646d..9b7e0646d 100644
--- a/web/js/OpenLayers/img/panning-hand-on.png
+++ b/web/vendor/OpenLayers/img/panning-hand-on.png
Binary files differ
diff --git a/web/js/OpenLayers/img/slider.png b/web/vendor/OpenLayers/img/slider.png
index 433536422..433536422 100644
--- a/web/js/OpenLayers/img/slider.png
+++ b/web/vendor/OpenLayers/img/slider.png
Binary files differ
diff --git a/web/js/OpenLayers/img/south-mini.png b/web/vendor/OpenLayers/img/south-mini.png
index 2970875c4..2970875c4 100644
--- a/web/js/OpenLayers/img/south-mini.png
+++ b/web/vendor/OpenLayers/img/south-mini.png
Binary files differ
diff --git a/web/js/OpenLayers/img/west-mini.png b/web/vendor/OpenLayers/img/west-mini.png
index 363cd3d7b..363cd3d7b 100644
--- a/web/js/OpenLayers/img/west-mini.png
+++ b/web/vendor/OpenLayers/img/west-mini.png
Binary files differ
diff --git a/web/js/OpenLayers/img/zoom-minus-mini.png b/web/vendor/OpenLayers/img/zoom-minus-mini.png
index 8f0d77fff..8f0d77fff 100644
--- a/web/js/OpenLayers/img/zoom-minus-mini.png
+++ b/web/vendor/OpenLayers/img/zoom-minus-mini.png
Binary files differ
diff --git a/web/js/OpenLayers/img/zoom-plus-mini.png b/web/vendor/OpenLayers/img/zoom-plus-mini.png
index a73ab4e95..a73ab4e95 100644
--- a/web/js/OpenLayers/img/zoom-plus-mini.png
+++ b/web/vendor/OpenLayers/img/zoom-plus-mini.png
Binary files differ
diff --git a/web/js/OpenLayers/img/zoom-world-mini.png b/web/vendor/OpenLayers/img/zoom-world-mini.png
index aebf22d95..aebf22d95 100644
--- a/web/js/OpenLayers/img/zoom-world-mini.png
+++ b/web/vendor/OpenLayers/img/zoom-world-mini.png
Binary files differ
diff --git a/web/js/OpenLayers/img/zoombar.png b/web/vendor/OpenLayers/img/zoombar.png
index 47110ab3e..47110ab3e 100644
--- a/web/js/OpenLayers/img/zoombar.png
+++ b/web/vendor/OpenLayers/img/zoombar.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/google.css b/web/vendor/OpenLayers/theme/default/google.css
index 1b748ef3e..1b748ef3e 100644
--- a/web/js/OpenLayers/theme/default/google.css
+++ b/web/vendor/OpenLayers/theme/default/google.css
diff --git a/web/js/OpenLayers/theme/default/google.tidy.css b/web/vendor/OpenLayers/theme/default/google.tidy.css
index c0e07ace6..c0e07ace6 100644
--- a/web/js/OpenLayers/theme/default/google.tidy.css
+++ b/web/vendor/OpenLayers/theme/default/google.tidy.css
diff --git a/web/js/OpenLayers/theme/default/img/add_point_off.png b/web/vendor/OpenLayers/theme/default/img/add_point_off.png
index 26c023309..26c023309 100644
--- a/web/js/OpenLayers/theme/default/img/add_point_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/add_point_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/add_point_on.png b/web/vendor/OpenLayers/theme/default/img/add_point_on.png
index 1294a2c16..1294a2c16 100644
--- a/web/js/OpenLayers/theme/default/img/add_point_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/add_point_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/blank.gif b/web/vendor/OpenLayers/theme/default/img/blank.gif
index 4bcc753a1..4bcc753a1 100644
--- a/web/js/OpenLayers/theme/default/img/blank.gif
+++ b/web/vendor/OpenLayers/theme/default/img/blank.gif
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/close.gif b/web/vendor/OpenLayers/theme/default/img/close.gif
index a8958de9b..a8958de9b 100644
--- a/web/js/OpenLayers/theme/default/img/close.gif
+++ b/web/vendor/OpenLayers/theme/default/img/close.gif
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/drag-rectangle-off.png b/web/vendor/OpenLayers/theme/default/img/drag-rectangle-off.png
index 382a81d9a..382a81d9a 100644
--- a/web/js/OpenLayers/theme/default/img/drag-rectangle-off.png
+++ b/web/vendor/OpenLayers/theme/default/img/drag-rectangle-off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/drag-rectangle-on.png b/web/vendor/OpenLayers/theme/default/img/drag-rectangle-on.png
index 2ed2d5b08..2ed2d5b08 100644
--- a/web/js/OpenLayers/theme/default/img/drag-rectangle-on.png
+++ b/web/vendor/OpenLayers/theme/default/img/drag-rectangle-on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/draw_line_off.png b/web/vendor/OpenLayers/theme/default/img/draw_line_off.png
index a4d67b3b9..a4d67b3b9 100644
--- a/web/js/OpenLayers/theme/default/img/draw_line_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/draw_line_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/draw_line_on.png b/web/vendor/OpenLayers/theme/default/img/draw_line_on.png
index 90dcf3e35..90dcf3e35 100644
--- a/web/js/OpenLayers/theme/default/img/draw_line_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/draw_line_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/draw_point_off.png b/web/vendor/OpenLayers/theme/default/img/draw_point_off.png
index 56334072a..56334072a 100644
--- a/web/js/OpenLayers/theme/default/img/draw_point_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/draw_point_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/draw_point_on.png b/web/vendor/OpenLayers/theme/default/img/draw_point_on.png
index fff50b7b0..fff50b7b0 100644
--- a/web/js/OpenLayers/theme/default/img/draw_point_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/draw_point_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/draw_polygon_off.png b/web/vendor/OpenLayers/theme/default/img/draw_polygon_off.png
index 917af3597..917af3597 100644
--- a/web/js/OpenLayers/theme/default/img/draw_polygon_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/draw_polygon_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/draw_polygon_on.png b/web/vendor/OpenLayers/theme/default/img/draw_polygon_on.png
index 05a2cc5a8..05a2cc5a8 100644
--- a/web/js/OpenLayers/theme/default/img/draw_polygon_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/draw_polygon_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/editing_tool_bar.png b/web/vendor/OpenLayers/theme/default/img/editing_tool_bar.png
index 5977856cf..5977856cf 100644
--- a/web/js/OpenLayers/theme/default/img/editing_tool_bar.png
+++ b/web/vendor/OpenLayers/theme/default/img/editing_tool_bar.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/move_feature_off.png b/web/vendor/OpenLayers/theme/default/img/move_feature_off.png
index ed4472dd8..ed4472dd8 100644
--- a/web/js/OpenLayers/theme/default/img/move_feature_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/move_feature_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/move_feature_on.png b/web/vendor/OpenLayers/theme/default/img/move_feature_on.png
index 62226a2d7..62226a2d7 100644
--- a/web/js/OpenLayers/theme/default/img/move_feature_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/move_feature_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/navigation_history.png b/web/vendor/OpenLayers/theme/default/img/navigation_history.png
index 84e348985..84e348985 100644
--- a/web/js/OpenLayers/theme/default/img/navigation_history.png
+++ b/web/vendor/OpenLayers/theme/default/img/navigation_history.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/overview_replacement.gif b/web/vendor/OpenLayers/theme/default/img/overview_replacement.gif
index a82cf5fc5..a82cf5fc5 100644
--- a/web/js/OpenLayers/theme/default/img/overview_replacement.gif
+++ b/web/vendor/OpenLayers/theme/default/img/overview_replacement.gif
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/pan-panel-NOALPHA.png b/web/vendor/OpenLayers/theme/default/img/pan-panel-NOALPHA.png
index 698726884..698726884 100644
--- a/web/js/OpenLayers/theme/default/img/pan-panel-NOALPHA.png
+++ b/web/vendor/OpenLayers/theme/default/img/pan-panel-NOALPHA.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/pan-panel.png b/web/vendor/OpenLayers/theme/default/img/pan-panel.png
index dfe67481c..dfe67481c 100644
--- a/web/js/OpenLayers/theme/default/img/pan-panel.png
+++ b/web/vendor/OpenLayers/theme/default/img/pan-panel.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/pan_off.png b/web/vendor/OpenLayers/theme/default/img/pan_off.png
index 30b2aed4d..30b2aed4d 100644
--- a/web/js/OpenLayers/theme/default/img/pan_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/pan_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/pan_on.png b/web/vendor/OpenLayers/theme/default/img/pan_on.png
index e3953a824..e3953a824 100644
--- a/web/js/OpenLayers/theme/default/img/pan_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/pan_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/panning-hand-off.png b/web/vendor/OpenLayers/theme/default/img/panning-hand-off.png
index d1c593e1d..d1c593e1d 100644
--- a/web/js/OpenLayers/theme/default/img/panning-hand-off.png
+++ b/web/vendor/OpenLayers/theme/default/img/panning-hand-off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/panning-hand-on.png b/web/vendor/OpenLayers/theme/default/img/panning-hand-on.png
index 9b7e0646d..9b7e0646d 100644
--- a/web/js/OpenLayers/theme/default/img/panning-hand-on.png
+++ b/web/vendor/OpenLayers/theme/default/img/panning-hand-on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/remove_point_off.png b/web/vendor/OpenLayers/theme/default/img/remove_point_off.png
index 76c8606f5..76c8606f5 100644
--- a/web/js/OpenLayers/theme/default/img/remove_point_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/remove_point_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/remove_point_on.png b/web/vendor/OpenLayers/theme/default/img/remove_point_on.png
index cc8d7b2c6..cc8d7b2c6 100644
--- a/web/js/OpenLayers/theme/default/img/remove_point_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/remove_point_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/ruler.png b/web/vendor/OpenLayers/theme/default/img/ruler.png
index aa4883bcd..aa4883bcd 100644
--- a/web/js/OpenLayers/theme/default/img/ruler.png
+++ b/web/vendor/OpenLayers/theme/default/img/ruler.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/save_features_off.png b/web/vendor/OpenLayers/theme/default/img/save_features_off.png
index 3d305b622..3d305b622 100644
--- a/web/js/OpenLayers/theme/default/img/save_features_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/save_features_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/save_features_on.png b/web/vendor/OpenLayers/theme/default/img/save_features_on.png
index 5640ae888..5640ae888 100644
--- a/web/js/OpenLayers/theme/default/img/save_features_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/save_features_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/view_next_off.png b/web/vendor/OpenLayers/theme/default/img/view_next_off.png
index 9149a2420..9149a2420 100644
--- a/web/js/OpenLayers/theme/default/img/view_next_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/view_next_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/view_next_on.png b/web/vendor/OpenLayers/theme/default/img/view_next_on.png
index e41fb7bdd..e41fb7bdd 100644
--- a/web/js/OpenLayers/theme/default/img/view_next_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/view_next_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/view_previous_off.png b/web/vendor/OpenLayers/theme/default/img/view_previous_off.png
index 8a9ef2179..8a9ef2179 100644
--- a/web/js/OpenLayers/theme/default/img/view_previous_off.png
+++ b/web/vendor/OpenLayers/theme/default/img/view_previous_off.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/view_previous_on.png b/web/vendor/OpenLayers/theme/default/img/view_previous_on.png
index c009c255e..c009c255e 100644
--- a/web/js/OpenLayers/theme/default/img/view_previous_on.png
+++ b/web/vendor/OpenLayers/theme/default/img/view_previous_on.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/zoom-panel-NOALPHA.png b/web/vendor/OpenLayers/theme/default/img/zoom-panel-NOALPHA.png
index cdde6fc7e..cdde6fc7e 100644
--- a/web/js/OpenLayers/theme/default/img/zoom-panel-NOALPHA.png
+++ b/web/vendor/OpenLayers/theme/default/img/zoom-panel-NOALPHA.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/img/zoom-panel.png b/web/vendor/OpenLayers/theme/default/img/zoom-panel.png
index c91a4ef3c..c91a4ef3c 100644
--- a/web/js/OpenLayers/theme/default/img/zoom-panel.png
+++ b/web/vendor/OpenLayers/theme/default/img/zoom-panel.png
Binary files differ
diff --git a/web/js/OpenLayers/theme/default/style.css b/web/vendor/OpenLayers/theme/default/style.css
index cefab060b..cefab060b 100644
--- a/web/js/OpenLayers/theme/default/style.css
+++ b/web/vendor/OpenLayers/theme/default/style.css
diff --git a/web/js/OpenLayers/theme/default/style.mobile.css b/web/vendor/OpenLayers/theme/default/style.mobile.css
index 92e7d00d4..92e7d00d4 100644
--- a/web/js/OpenLayers/theme/default/style.mobile.css
+++ b/web/vendor/OpenLayers/theme/default/style.mobile.css
diff --git a/web/js/OpenLayers/theme/default/style.mobile.tidy.css b/web/vendor/OpenLayers/theme/default/style.mobile.tidy.css
index bf7eeaf3d..bf7eeaf3d 100644
--- a/web/js/OpenLayers/theme/default/style.mobile.tidy.css
+++ b/web/vendor/OpenLayers/theme/default/style.mobile.tidy.css
diff --git a/web/js/OpenLayers/theme/default/style.tidy.css b/web/vendor/OpenLayers/theme/default/style.tidy.css
index f973d450b..f973d450b 100644
--- a/web/js/OpenLayers/theme/default/style.tidy.css
+++ b/web/vendor/OpenLayers/theme/default/style.tidy.css
diff --git a/web/vendor/accessible-autocomplete.min.js b/web/vendor/accessible-autocomplete.min.js
new file mode 100644
index 000000000..9eafe639f
--- /dev/null
+++ b/web/vendor/accessible-autocomplete.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.accessibleAutocomplete=t():e.accessibleAutocomplete=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=1)}([function(e,t,n){!function(){"use strict";function t(){}function n(e,n){var o,r,l,i,u=T;for(i=arguments.length;i-- >2;)D.push(arguments[i]);for(n&&null!=n.children&&(D.length||D.push(n.children),delete n.children);D.length;)if((r=D.pop())&&void 0!==r.pop)for(i=r.length;i--;)D.push(r[i]);else!0!==r&&!1!==r||(r=null),(l="function"!=typeof e)&&(null==r?r="":"number"==typeof r?r=String(r):"string"!=typeof r&&(l=!1)),l&&o?u[u.length-1]+=r:u===T?u=[r]:u.push(r),o=l;var s=new t;return s.nodeName=e,s.children=u,s.attributes=null==n?void 0:n,s.key=null==n?void 0:n.key,void 0!==A.vnode&&A.vnode(s),s}function o(e,t){for(var n in t)e[n]=t[n];return e}function r(e,t){return n(e.nodeName,o(o({},e.attributes),t),arguments.length>2?[].slice.call(arguments,2):e.children)}function l(e){!e.__d&&(e.__d=!0)&&1==V.push(e)&&(A.debounceRendering||setTimeout)(i)}function i(){var e,t=V;for(V=[];e=t.pop();)e.__d&&N(e)}function u(e,t,n){return"string"==typeof t||"number"==typeof t?void 0!==e.splitText:"string"==typeof t.nodeName?!e._componentConstructor&&s(e,t.nodeName):n||e._componentConstructor===t.nodeName}function s(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function a(e){var t=o({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var r in n)void 0===t[r]&&(t[r]=n[r]);return t}function p(e,t){var n=t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);return n.__n=e,n}function c(e){e.parentNode&&e.parentNode.removeChild(e)}function d(e,t,n,o,r){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),o&&o(e);else if("class"!==t||r)if("style"===t){if(o&&"string"!=typeof o&&"string"!=typeof n||(e.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var l in n)l in o||(e.style[l]="");for(var l in o)e.style[l]="number"==typeof o[l]&&!1===L.test(l)?o[l]+"px":o[l]}}else if("dangerouslySetInnerHTML"===t)o&&(e.innerHTML=o.__html||"");else if("o"==t[0]&&"n"==t[1]){var i=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),o?n||e.addEventListener(t,h,i):e.removeEventListener(t,h,i),(e.__l||(e.__l={}))[t]=o}else if("list"!==t&&"type"!==t&&!r&&t in e)f(e,t,null==o?"":o),null!=o&&!1!==o||e.removeAttribute(t);else{var u=r&&t!==(t=t.replace(/^xlink\:?/,""));null==o||!1===o?u?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof o&&(u?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),o):e.setAttribute(t,o))}else e.className=o||""}function f(e,t,n){try{e[t]=n}catch(e){}}function h(e){return this.__l[e.type](A.event&&A.event(e)||e)}function m(){for(var e;e=j.pop();)A.afterMount&&A.afterMount(e),e.componentDidMount&&e.componentDidMount()}function _(e,t,n,o,r,l){P++||(q=null!=r&&void 0!==r.ownerSVGElement,B=null!=e&&!("__preactattr_"in e));var i=v(e,t,n,o,l);return r&&i.parentNode!==r&&r.appendChild(i),--P||(B=!1,l||m()),i}function v(e,t,n,o,r){var l=e,i=q;if(null==t&&(t=""),"string"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(l=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(l,e),b(e,!0))),l.__preactattr_=!0,l;if("function"==typeof t.nodeName)return I(e,t,n,o);if(q="svg"===t.nodeName||"foreignObject"!==t.nodeName&&q,(!e||!s(e,String(t.nodeName)))&&(l=p(String(t.nodeName),q),e)){for(;e.firstChild;)l.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(l,e),b(e,!0)}var u=l.firstChild,a=l.__preactattr_||(l.__preactattr_={}),c=t.children;return!B&&c&&1===c.length&&"string"==typeof c[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=c[0]&&(u.nodeValue=c[0]):(c&&c.length||null!=u)&&y(l,c,n,o,B||null!=a.dangerouslySetInnerHTML),O(l,t.attributes,a),q=i,l}function y(e,t,n,o,r){var l,i,s,a,p=e.childNodes,d=[],f={},h=0,m=0,_=p.length,y=0,g=t?t.length:0;if(0!==_)for(var O=0;O<_;O++){var w=p[O],C=w.__preactattr_,E=g&&C?w._component?w._component.__k:C.key:null;null!=E?(h++,f[E]=w):(C||(void 0!==w.splitText?!r||w.nodeValue.trim():r))&&(d[y++]=w)}if(0!==g)for(var O=0;O<g;O++){s=t[O],a=null;var E=s.key;if(null!=E)h&&void 0!==f[E]&&(a=f[E],f[E]=void 0,h--);else if(!a&&m<y)for(l=m;l<y;l++)if(void 0!==d[l]&&u(i=d[l],s,r)){a=i,d[l]=void 0,l===y-1&&y--,l===m&&m++;break}(a=v(a,s,n,o))&&a!==e&&(O>=_?e.appendChild(a):a!==p[O]&&(a===p[O+1]?c(p[O]):e.insertBefore(a,p[O]||null)))}if(h)for(var O in f)void 0!==f[O]&&b(f[O],!1);for(;m<=y;)void 0!==(a=d[y--])&&b(a,!1)}function b(e,t){var n=e._component;n?k(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||c(e),g(e))}function g(e){for(e=e.lastChild;e;){var t=e.previousSibling;b(e,!0),e=t}}function O(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||d(e,o,n[o],n[o]=void 0,q);for(o in t)"children"===o||"innerHTML"===o||o in n&&t[o]===("value"===o||"checked"===o?e[o]:n[o])||d(e,o,n[o],n[o]=t[o],q)}function w(e){var t=e.constructor.name;(U[t]||(U[t]=[])).push(e)}function C(e,t,n){var o,r=U[e.name];if(e.prototype&&e.prototype.render?(o=new e(t,n),M.call(o,t,n)):(o=new M(t,n),o.constructor=e,o.render=E),r)for(var l=r.length;l--;)if(r[l].constructor===e){o.__b=r[l].__b,r.splice(l,1);break}return o}function E(e,t,n){return this.constructor(e,n)}function x(e,t,n,o,r){e.__x||(e.__x=!0,(e.__r=t.ref)&&delete t.ref,(e.__k=t.key)&&delete t.key,!e.base||r?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,o),o&&o!==e.context&&(e.__c||(e.__c=e.context),e.context=o),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===A.syncComponentUpdates&&e.base?l(e):N(e,1,r)),e.__r&&e.__r(e))}function N(e,t,n,r){if(!e.__x){var l,i,u,s=e.props,p=e.state,c=e.context,d=e.__p||s,f=e.__s||p,h=e.__c||c,v=e.base,y=e.__b,g=v||y,O=e._component,w=!1;if(v&&(e.props=d,e.state=f,e.context=h,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(s,p,c)?w=!0:e.componentWillUpdate&&e.componentWillUpdate(s,p,c),e.props=s,e.state=p,e.context=c),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!w){l=e.render(s,p,c),e.getChildContext&&(c=o(o({},c),e.getChildContext()));var E,I,M=l&&l.nodeName;if("function"==typeof M){var S=a(l);i=O,i&&i.constructor===M&&S.key==i.__k?x(i,S,1,c,!1):(E=i,e._component=i=C(M,S,c),i.__b=i.__b||y,i.__u=e,x(i,S,0,c,!1),N(i,1,n,!0)),I=i.base}else u=g,E=O,E&&(u=e._component=null),(g||1===t)&&(u&&(u._component=null),I=_(u,l,c,n||!v,g&&g.parentNode,!0));if(g&&I!==g&&i!==O){var D=g.parentNode;D&&I!==D&&(D.replaceChild(I,g),E||(g._component=null,b(g,!1)))}if(E&&k(E),e.base=I,I&&!r){for(var T=e,L=e;L=L.__u;)(T=L).base=I;I._component=T,I._componentConstructor=T.constructor}}if(!v||n?j.unshift(e):w||(m(),e.componentDidUpdate&&e.componentDidUpdate(d,f,h),A.afterUpdate&&A.afterUpdate(e)),null!=e.__h)for(;e.__h.length;)e.__h.pop().call(e);P||r||m()}}function I(e,t,n,o){for(var r=e&&e._component,l=r,i=e,u=r&&e._componentConstructor===t.nodeName,s=u,p=a(t);r&&!s&&(r=r.__u);)s=r.constructor===t.nodeName;return r&&s&&(!o||r._component)?(x(r,p,3,n,o),e=r.base):(l&&!u&&(k(l),e=i=null),r=C(t.nodeName,p,n),e&&!r.__b&&(r.__b=e,i=null),x(r,p,1,n,o),e=r.base,i&&e!==i&&(i._component=null,b(i,!1))),e}function k(e){A.beforeUnmount&&A.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?k(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),e.__b=t,c(t),w(e),g(t)),e.__r&&e.__r(null)}function M(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{}}function S(e,t,n){return _(n,e,{},!1,t,!1)}var A={},D=[],T=[],L=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,V=[],j=[],P=0,q=!1,B=!1,U={};o(M.prototype,{setState:function(e,t){var n=this.state;this.__s||(this.__s=o({},n)),o(n,"function"==typeof e?e(n,this.props):e),t&&(this.__h=this.__h||[]).push(t),l(this)},forceUpdate:function(e){e&&(this.__h=this.__h||[]).push(e),N(this,2)},render:function(){}});var R={h:n,createElement:n,cloneElement:r,Component:M,render:S,rerender:i,options:A};e.exports=R}()},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";function o(e){if(!e.element)throw new Error("element is not defined");if(!e.id)throw new Error("id is not defined");if(!e.source)throw new Error("source is not defined");Array.isArray(e.source)&&(e.source=s(e.source)),(0,l.render)((0,l.createElement)(u.default,e),e.element)}var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},l=n(0),i=n(3),u=function(e){return e&&e.__esModule?e:{default:e}}(i),s=function(e){return function(t,n){n(e.filter(function(e){return-1!==e.toLowerCase().indexOf(t.toLowerCase())}))}};o.enhanceSelectElement=function(e){if(!e.selectElement)throw new Error("selectElement is not defined");if(!e.source){var t=[].filter.call(e.selectElement.options,function(t){return t.value||e.preserveNullOptions});e.source=t.map(function(e){return e.textContent||e.innerText})}if(e.onConfirm=e.onConfirm||function(t){var n=[].filter.call(e.selectElement.options,function(e){return(e.textContent||e.innerText)===t})[0];n&&(n.selected=!0)},e.selectElement.value||void 0===e.defaultValue){var n=e.selectElement.options[e.selectElement.options.selectedIndex];e.defaultValue=n.textContent||n.innerText}void 0===e.name&&(e.name=""),void 0===e.id&&(void 0===e.selectElement.id?e.id="":e.id=e.selectElement.id),void 0===e.autoselect&&(e.autoselect=!0);var l=document.createElement("span");e.selectElement.parentNode.insertBefore(l,e.selectElement),o(r({},e,{element:l})),e.selectElement.style.display="none",e.selectElement.id=e.selectElement.id+"-select"},e.exports=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){}function l(e,t){if(e)return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){"function"!=typeof t&&null!==t||(e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t))}function u(){return!(!navigator.userAgent.match(/(iPod|iPhone|iPad)/g)||!navigator.userAgent.match(/AppleWebKit/g))}function s(e){return e>47&&e<58||32===e||8===e||e>64&&e<91||e>95&&e<112||e>185&&e<193||e>218&&e<223}function a(e){return y?{onInput:e}:b?{onChange:e}:void 0}t.__esModule=!0,t.default=void 0;var p,c,d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},f=n(0),h=n(4),m=o(h),_=n(5),v=o(_),y=!0,b=!1,g={13:"enter",27:"escape",32:"space",38:"up",40:"down"},O=function(){var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}(),w=(c=p=function(e){function t(n){r(this,t);var o=l(this,e.call(this,n));return o.elementReferences={},o.state={focused:null,hovered:null,menuOpen:!1,options:n.defaultValue?[n.defaultValue]:[],query:n.defaultValue,selected:null},o.handleComponentBlur=o.handleComponentBlur.bind(o),o.handleKeyDown=o.handleKeyDown.bind(o),o.handleUpArrow=o.handleUpArrow.bind(o),o.handleDownArrow=o.handleDownArrow.bind(o),o.handleEnter=o.handleEnter.bind(o),o.handlePrintableKey=o.handlePrintableKey.bind(o),o.handleOptionBlur=o.handleOptionBlur.bind(o),o.handleOptionClick=o.handleOptionClick.bind(o),o.handleOptionFocus=o.handleOptionFocus.bind(o),o.handleOptionMouseDown=o.handleOptionMouseDown.bind(o),o.handleOptionMouseEnter=o.handleOptionMouseEnter.bind(o),o.handleOptionMouseOut=o.handleOptionMouseOut.bind(o),o.handleOptionTouchEnd=o.handleOptionTouchEnd.bind(o),o.handleInputBlur=o.handleInputBlur.bind(o),o.handleInputChange=o.handleInputChange.bind(o),o.handleInputFocus=o.handleInputFocus.bind(o),o.pollInputElement=o.pollInputElement.bind(o),o.getDirectInputChanges=o.getDirectInputChanges.bind(o),o}return i(t,e),t.prototype.componentDidMount=function(){this.pollInputElement()},t.prototype.componentWillUnmount=function(){clearTimeout(this.$pollInput)},t.prototype.pollInputElement=function(){var e=this;this.getDirectInputChanges(),this.$pollInput=setTimeout(function(){e.pollInputElement()},100)},t.prototype.getDirectInputChanges=function(){var e=this.elementReferences[-1];e.value!==this.state.query&&this.handleInputChange({target:{value:e.value}})},t.prototype.componentDidUpdate=function(e,t){var n=this.state.focused,o=null===n,r=t.focused!==n;r&&!o&&this.elementReferences[n].focus();var l=-1===n,i=r&&null===t.focused;if(l&&i){var u=this.elementReferences[n];u.setSelectionRange(0,u.value.length)}},t.prototype.hasAutoselect=function(){return!u()&&this.props.autoselect},t.prototype.templateInputValue=function(e){var t=this.props.templates&&this.props.templates.inputValue;return t?t(e):e},t.prototype.templateSuggestion=function(e){var t=this.props.templates&&this.props.templates.suggestion;return t?t(e):e},t.prototype.handleComponentBlur=function(e){var t=this.state,n=t.options,o=t.query,r=t.selected,l=void 0;this.props.confirmOnBlur?(l=e.query||o,this.props.onConfirm(n[r])):l=o,this.setState({focused:null,menuOpen:e.menuOpen||!1,query:l,selected:null})},t.prototype.handleOptionBlur=function(e,t){var n=this.state,o=n.focused,r=n.menuOpen,l=n.options,i=n.selected,s=null===e.relatedTarget,a=e.relatedTarget===this.elementReferences[-1],p=o!==t&&-1!==o;if(s||!p&&!a){var c=r&&u();this.handleComponentBlur({menuOpen:c,query:this.templateInputValue(l[i])})}},t.prototype.handleInputBlur=function(e){var t=this.state,n=t.focused,o=t.menuOpen,r=t.options,l=t.query,i=t.selected;if(-1===n){var s=o&&u(),a=u()?l:this.templateInputValue(r[i]);this.handleComponentBlur({menuOpen:s,query:a})}},t.prototype.handleInputChange=function(e){var t=this,n=this.props,o=n.minLength,r=n.source,l=n.showAllValues,i=this.hasAutoselect(),u=e.target.value,s=0===u.length,a=this.state.query.length!==u.length,p=u.length>=o;this.setState({query:u}),l||!s&&a&&p?r(u,function(e){var n=e.length>0;t.setState({menuOpen:n,options:e,selected:i&&n?0:-1})}):!s&&p||this.setState({menuOpen:!1,options:[]})},t.prototype.handleInputClick=function(e){this.handleInputChange(e)},t.prototype.handleInputFocus=function(e){this.setState({focused:-1})},t.prototype.handleOptionFocus=function(e){this.setState({focused:e,hovered:null,selected:e})},t.prototype.handleOptionMouseEnter=function(e,t){this.setState({hovered:t})},t.prototype.handleOptionMouseOut=function(e,t){this.setState({hovered:null})},t.prototype.handleOptionTouchEnd=function(e,t){this.handleOptionClick(e,t)},t.prototype.handleOptionClick=function(e,t){var n=this.state.options[t],o=this.templateInputValue(n);this.props.onConfirm(n),this.setState({focused:-1,menuOpen:!1,query:o,selected:-1})},t.prototype.handleOptionMouseDown=function(e){e.preventDefault()},t.prototype.handleUpArrow=function(e){e.preventDefault();var t=this.state,n=t.menuOpen,o=t.selected;-1!==o&&n&&this.handleOptionFocus(o-1)},t.prototype.handleDownArrow=function(e){var t=this;if(e.preventDefault(),this.props.showAllValues&&!1===this.state.menuOpen)e.preventDefault(),this.props.source("",function(e){t.setState({menuOpen:!0,options:e,selected:0,focused:0,hovered:null})});else if(!0===this.state.menuOpen){var n=this.state,o=n.menuOpen,r=n.options,l=n.selected,i=l!==r.length-1,u=i&&o;u&&this.handleOptionFocus(l+1)}},t.prototype.handleSpace=function(e){var t=this;this.props.showAllValues&&!1===this.state.menuOpen&&(e.preventDefault(),this.props.source("",function(e){t.setState({menuOpen:!0,options:e})}))},t.prototype.handleEnter=function(e){this.state.menuOpen&&(e.preventDefault(),this.state.selected>=0&&this.handleOptionClick(e,this.state.selected))},t.prototype.handlePrintableKey=function(e){var t=this.elementReferences[-1];e.target===t||t.focus()},t.prototype.handleKeyDown=function(e){switch(g[e.keyCode]){case"up":this.handleUpArrow(e);break;case"down":this.handleDownArrow(e);break;case"space":this.handleSpace(e);break;case"enter":this.handleEnter(e);break;case"escape":this.handleComponentBlur({query:this.state.query});break;default:s(e.keyCode)&&this.handlePrintableKey(e)}},t.prototype.render=function(){var e=this,t=this.props,n=t.cssNamespace,o=t.displayMenu,r=t.id,l=t.minLength,i=t.name,u=t.placeholder,s=t.required,p=t.showAllValues,c=this.state,h=c.focused,_=c.hovered,y=c.menuOpen,b=c.options,g=c.query,w=c.selected,C=this.hasAutoselect(),E=-1===h,x=0===b.length,N=0!==g.length,I=g.length>=l,k=this.props.showNoOptionsFound&&E&&x&&N&&I,M=n+"__wrapper",S=n+"__input",A=null!==h,D=A?" "+S+"--focused":"",T=this.props.showAllValues?" "+S+"--show-all-values":" "+S+"--default",L=n+"__dropdown-arrow-down",V=-1!==h&&null!==h,j=n+"__menu",P=j+"--"+o,q=y||k,B=j+"--"+(q?"visible":"hidden"),U=n+"__option",R=n+"__hint",F=this.templateInputValue(b[w]),W=F&&0===F.toLowerCase().indexOf(g.toLowerCase()),K=W&&C?g+F.substr(g.length):"",H=O&&K;return(0,f.createElement)("div",{className:M,onKeyDown:this.handleKeyDown},(0,f.createElement)(m.default,{length:b.length,queryLength:g.length,minQueryLength:l,selectedOption:this.templateInputValue(b[w])}),H&&(0,f.createElement)("span",null,(0,f.createElement)("input",{className:R,readonly:!0,tabIndex:"-1",value:K})),(0,f.createElement)("input",d({"aria-activedescendant":!!V&&r+"__option--"+h,"aria-expanded":y,"aria-owns":r+"__listbox",autoComplete:"off",className:""+S+D+T,id:r,onClick:function(t){return e.handleInputClick(t)},onBlur:this.handleInputBlur},a(this.handleInputChange),{onFocus:this.handleInputFocus,name:i,placeholder:u,ref:function(t){e.elementReferences[-1]=t},role:"combobox",type:"text",required:s,value:g})),p&&(0,f.createElement)(v.default,{className:L}),(0,f.createElement)("ul",{className:j+" "+P+" "+B,id:r+"__listbox",role:"listbox"},b.map(function(t,n){var o=-1===h?w===n:h===n,l=o&&null===_?" "+U+"--focused":"",i=n%2?" "+U+"--odd":"";return(0,f.createElement)("li",{"aria-selected":h===n,className:""+U+l+i,dangerouslySetInnerHTML:{__html:e.templateSuggestion(t)},id:r+"__option--"+n,key:n,onBlur:function(t){return e.handleOptionBlur(t,n)},onClick:function(t){return e.handleOptionClick(t,n)},onMouseDown:e.handleOptionMouseDown,onMouseEnter:function(t){return e.handleOptionMouseEnter(t,n)},onMouseOut:function(t){return e.handleOptionMouseOut(t,n)},onTouchEnd:function(t){return e.handleOptionTouchEnd(t,n)},ref:function(t){e.elementReferences[n]=t},role:"option",tabIndex:"-1"})}),k&&(0,f.createElement)("li",{className:U+" "+U+"--no-results"},"No results found")))},t}(f.Component),p.defaultProps={autoselect:!1,cssNamespace:"autocomplete",defaultValue:"",displayMenu:"inline",minLength:0,name:"input-autocomplete",placeholder:"",onConfirm:function(){},confirmOnBlur:!0,showNoOptionsFound:!0,showAllValues:!1,required:!1},c);t.default=w},function(e,t,n){"use strict";function o(e,t){}function r(e,t){if(e)return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){"function"!=typeof t&&null!==t||(e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t))}t.__esModule=!0,t.default=void 0;var i=n(0),u=function(e){function t(){var n,l,i;o(this,t);for(var u=arguments.length,s=Array(u),a=0;a<u;a++)s[a]=arguments[a];return n=l=r(this,e.call.apply(e,[this].concat(s))),l.state={bump:!1},i=n,r(l,i)}return l(t,e),t.prototype.componentWillReceiveProps=function(e){e.queryLength!==this.props.queryLength&&this.setState(function(e){return{bump:!e.bump}})},t.prototype.render=function(){var e=this.props,t=e.length,n=e.queryLength,o=e.minQueryLength,r=e.selectedOption,l=this.state.bump,u={result:1===t?"result":"results",is:1===t?"is":"are"},s=n<o,a=0===t,p=r?(0,i.createElement)("span",null,r," (1 of ",t,") is selected."):null,c=null;return c=s?(0,i.createElement)("span",null,"Type in ",o," or more characters for results."):a?(0,i.createElement)("span",null,"No search results."):(0,i.createElement)("span",null,t," ",u.result," ",u.is," available. ",p),(0,i.createElement)("div",{"aria-atomic":"true","aria-live":"polite",role:"status",style:{border:"0",clip:"rect(0 0 0 0)",height:"1px",marginBottom:"-1px",marginRight:"-1px",overflow:"hidden",padding:"0",position:"absolute",whiteSpace:"nowrap",width:"1px"}},c,(0,i.createElement)("span",null,l?",":",,"))},t}(i.Component);t.default=u},function(e,t,n){"use strict";function o(e,t){}function r(e,t){if(e)return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){"function"!=typeof t&&null!==t||(e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t))}t.__esModule=!0,t.default=void 0;var i=n(0),u=function(e){function t(){return o(this,t),r(this,e.apply(this,arguments))}return l(t,e),t.prototype.render=function(){return(0,i.createElement)("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",className:this.props.className},(0,i.createElement)("g",{stroke:"none",fill:"none","fill-rule":"evenodd"},(0,i.createElement)("polygon",{fill:"#000000",points:"0 0 22 0 11 17"})))},t}(i.Component);t.default=u}])});
+//# sourceMappingURL=accessible-autocomplete.min.js.map \ No newline at end of file
diff --git a/web/vendor/chart.min.js b/web/vendor/chart.min.js
new file mode 100644
index 000000000..899fbaf48
--- /dev/null
+++ b/web/vendor/chart.min.js
@@ -0,0 +1,79 @@
+Chart=function(){return function p(m,n,g){function l(a,c){if(!n[a]){if(!m[a]){var e="function"==typeof require&&require;if(!c&&e)return e(a,!0);if(f)return f(a,!0);e=Error("Cannot find module '"+a+"'");throw e.code="MODULE_NOT_FOUND",e;}e=n[a]={exports:{}};m[a][0].call(e.exports,function(e){var c=m[a][1][e];return l(c?c:e)},e,e.exports,p,m,n,g)}return n[a].exports}for(var f="function"==typeof require&&require,b=0;b<g.length;b++)l(g[b]);return l}({7:[function(p,m,n){n=p(28)();p(26)(n);p(40)(n);p(22)(n);
+p(25)(n);p(23)(n);p(24)(n);p(29)(n);p(32)(n);p(33)(n);p(31)(n);p(36)(n);p(37)(n);p(46)(n);p(44)(n);p(45)(n);p(18)(n);m.exports=n;window.Chart=n},{18:18,22:22,23:23,24:24,25:25,26:26,28:28,29:29,31:31,32:32,33:33,36:36,37:37,40:40,44:44,45:45,46:46}],18:[function(p,m,n){m.exports=function(g){var l=g.helpers;g.defaults.line={showLines:!0,spanGaps:!1,scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}};g.controllers.line=g.DatasetController.extend({datasetElementType:g.elements.Line,
+dataElementType:g.elements.Point,update:function(f){var b=this.getMeta(),a=b.dataset,c=b.data||[],e=this.chart.options,d=e.elements.line,k=this.getScaleForId(b.yAxisID),h=this.getDataset();if(b=l.getValueOrDefault(h.showLine,e.showLines))a._scale=k,a._datasetIndex=this.index,a._children=c,a._model={spanGaps:h.spanGaps?h.spanGaps:e.spanGaps,tension:l.getValueOrDefault(h.lineTension,d.tension),backgroundColor:h.backgroundColor||d.backgroundColor,borderWidth:h.borderWidth||d.borderWidth,borderColor:h.borderColor||
+d.borderColor,borderCapStyle:h.borderCapStyle||d.borderCapStyle,borderDash:h.borderDash||d.borderDash,borderDashOffset:h.borderDashOffset||d.borderDashOffset,borderJoinStyle:h.borderJoinStyle||d.borderJoinStyle,steppedLine:l.getValueOrDefault(h.steppedLine,d.stepped)},a.pivot();e=0;for(d=c.length;e<d;++e)this.updateElement(c[e],e,f);b&&0!==a._model.tension&&this.updateBezierControlPoints();e=0;for(d=c.length;e<d;++e)c[e].pivot()},updateElement:function(f,b,a){var c=this.getMeta(),e=this.getDataset(),
+d=this.index,k=e.data[b],h=this.getScaleForId(c.yAxisID),V=this.getScaleForId(c.xAxisID),g=this.chart.options.elements.point,q;q=V.getPixelForValue("object"===typeof k?k:NaN,b,d,1===(this.chart.data.labels||[]).length||1===e.data.length||this.chart.isCombo);a=a?h.getBasePixel():this.calculatePointY(k,b,d);f._xScale=V;f._yScale=h;f._datasetIndex=d;f._index=b;f._model={x:q,y:a,skip:isNaN(q)||isNaN(a),radius:l.getValueAtIndexOrDefault(e.pointRadius,b,g.radius),pointStyle:l.getValueAtIndexOrDefault(e.pointStyle,
+b,g.pointStyle),backgroundColor:e.pointBackgroundColor,borderColor:e.borderColor,borderWidth:e.pointBorderWidth,tension:c.dataset._model?c.dataset._model.tension:0,steppedLine:c.dataset._model?c.dataset._model.steppedLine:!1}},calculatePointY:function(f,b,a){b=this.getMeta();return this.getScaleForId(b.yAxisID).getPixelForValue(f)},updateBezierControlPoints:function(){var f=this.getMeta(),b=this.chart.chartArea,a=f.data||[],c,e,d,k;f.dataset._model.spanGaps&&(a=a.filter(function(a){return!a._model.skip}));
+c=0;for(e=a.length;c<e;++c)d=a[c],d=d._model,k=l.splineCurve(l.previousItem(a,c)._model,d,l.nextItem(a,c)._model,f.dataset._model.tension),d.controlPointPreviousX=k.previous.x,d.controlPointPreviousY=k.previous.y,d.controlPointNextX=k.next.x,d.controlPointNextY=k.next.y;if(this.chart.options.elements.line.capBezierPoints)for(c=0,e=a.length;c<e;++c)d=a[c]._model,d.controlPointPreviousX=Math.max(Math.min(d.controlPointPreviousX,b.right),b.left),d.controlPointPreviousY=Math.max(Math.min(d.controlPointPreviousY,
+b.bottom),b.top),d.controlPointNextX=Math.max(Math.min(d.controlPointNextX,b.right),b.left),d.controlPointNextY=Math.max(Math.min(d.controlPointNextY,b.bottom),b.top)},draw:function(){var f=this.chart,b=this.getMeta(),a=b.data||[],c=f.chartArea,e=a.length,d=0;g.canvasHelpers.clipArea(f.ctx,c);var k=this.getDataset();l.getValueOrDefault(k.showLine,f.options.showLines)&&b.dataset.draw();for(g.canvasHelpers.unclipArea(f.ctx);d<e;++d)a[d].draw(c)}})}},{}],22:[function(p,m,n){m.exports=function(g){var l=
+g.canvasHelpers={};l.drawPoint=function(f,b,a,c,e){isNaN(a)||0>=a||(f.beginPath(),f.arc(c,e,a,0,2*Math.PI),f.closePath(),f.fill(),f.stroke())};l.clipArea=function(f,b){f.save();f.beginPath();f.rect(b.left,b.top,b.right-b.left,b.bottom-b.top);f.clip()};l.unclipArea=function(f){f.restore()};l.lineTo=function(f,b,a,c){a.steppedLine?("after"===a.steppedLine?f.lineTo(b.x,a.y):f.lineTo(a.x,b.y),f.lineTo(a.x,a.y)):a.tension?f.bezierCurveTo(c?b.controlPointPreviousX:b.controlPointNextX,c?b.controlPointPreviousY:
+b.controlPointNextY,c?a.controlPointNextX:a.controlPointPreviousX,c?a.controlPointNextY:a.controlPointPreviousY,a.x,a.y):f.lineTo(a.x,a.y)};g.helpers.canvas=l}},{}],23:[function(p,m,n){m.exports=function(g){function l(e){e=e||{};var c=e.data=e.data||{};c.datasets=c.datasets||[];c.labels=c.labels||[];e.options=a.configMerge(g.defaults.global,g.defaults[e.type],e.options||{});return e}function f(a){var c=a.options;c.scale?a.scale.options=c.scale:c.scales&&c.scales.xAxes.concat(c.scales.yAxes).forEach(function(c){a.scales[c.id].options=
+c})}function b(a){return"top"===a||"bottom"===a}var a=g.helpers,c=g.platform;g.types={};g.instances={};g.controllers={};a.extend(g.prototype,{construct:function(e,d){var b=this;d=l(d);var h=c.acquireContext(e,d),f=h&&h.canvas,N=f&&f.height,q=f&&f.width;b.id=a.uid();b.ctx=h;b.canvas=f;b.config=d;b.width=q;b.height=N;b.aspectRatio=N?q/N:null;b.options=d.options;b._bufferedRender=!1;b.chart=b;b.controller=b;g.instances[b.id]=b;Object.defineProperty(b,"data",{get:function(){return b.config.data},set:function(a){b.config.data=
+a}});h&&f?(b.initialize(),b.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){a.retinaScale(this);this.bindEvents();this.resize(!0);this.ensureScalesHaveIDs();this.buildScales();return this},clear:function(){a.clear(this);return this},resize:function(c){var b=this.canvas,k=this.options.maintainAspectRatio&&this.aspectRatio||null,h=Math.floor(a.getMaximumWidth(b)),k=Math.floor(k?h/k:a.getMaximumHeight(b));if(this.width!==h||this.height!==
+k)if(b.width=this.width=h,b.height=this.height=k,b.style.width=h+"px",b.style.height=k+"px",a.retinaScale(this),!c){c={width:h,height:k};if(this.options.onResize)this.options.onResize(this,c);this.update(0)}},ensureScalesHaveIDs:function(){var c=this.options,b=c.scales||{},c=c.scale;a.each(b.xAxes,function(a,c){a.id=a.id||"x-axis-"+c});a.each(b.yAxes,function(a,c){a.id=a.id||"y-axis-"+c});c&&(c.id=c.id||"scale")},buildScales:function(){var c=this,d=c.options,k=c.scales={},h=[];d.scales&&(h=h.concat((d.scales.xAxes||
+[]).map(function(a){return{options:a,dtype:"category",dposition:"bottom"}}),(d.scales.yAxes||[]).map(function(a){return{options:a,dtype:"linear",dposition:"left"}})));d.scale&&h.push({options:d.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"});a.each(h,function(d){var h=d.options,f=a.getValueOrDefault(h.type,d.dtype);if(f=g.scaleService.getScaleConstructor(f))b(h.position)!==b(d.dposition)&&(h.position=d.dposition),h=new f({id:h.id,options:h,ctx:c.ctx,chart:c}),k[h.id]=h,d.isDefault&&
+(c.scale=h)});g.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var c=this,b=[],k=[];a.each(c.data.datasets,function(a,h){var f=c.getDatasetMeta(h);f.type||(f.type=a.type||c.config.type);b.push(f.type);if(f.controller)f.controller.updateIndex(h);else{var l=g.controllers[f.type];if(void 0===l)throw Error('"'+f.type+'" is not a chart type.');f.controller=new l(c,h);k.push(f.controller)}},c);if(1<b.length)for(var h=1;h<b.length;h++)if(b[h]!==b[h-1]){c.isCombo=!0;break}return k},
+update:function(c,b){var k=this;f(k);var h=k.buildOrUpdateControllers();a.each(k.data.datasets,function(a,c){k.getDatasetMeta(c).controller.buildOrUpdateElements()},k);k.updateLayout();a.each(h,function(a){a.reset()});k.updateDatasets();k._bufferedRender?k._bufferedRequest={lazy:b,duration:c}:k.render(c,b)},updateLayout:function(){g.layoutService.update(this,this.width,this.height)},updateDatasets:function(){for(var a=0,c=this.data.datasets.length;a<c;++a)this.updateDataset(a)},updateDataset:function(a){this.getDatasetMeta(a).controller.update()},
+render:function(c,b){var k=this.options.animation;this.draw();a.callback(k&&k.onComplete,[void 0],this);return this},draw:function(){var c=this;c.clear();c.transition();a.each(c.boxes,function(a){a.draw(c.chartArea)},c);c.scale&&c.scale.draw();c.drawDatasets()},transition:function(){for(var a=0,c=(this.data.datasets||[]).length;a<c;++a)this.isDatasetVisible(a)&&this.getDatasetMeta(a).controller.transition()},drawDatasets:function(){for(var a=(this.data.datasets||[]).length-1;0<=a;--a)this.isDatasetVisible(a)&&
+this.drawDataset(a)},drawDataset:function(a){this.getDatasetMeta(a).controller.draw()},getDatasetMeta:function(a){a=this.data.datasets[a];a._meta||(a._meta={});var c=a._meta[this.id];c||(c=a._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null});return c},getVisibleDatasetCount:function(){for(var a=0,c=0,b=this.data.datasets.length;c<b;++c)this.isDatasetVisible(c)&&a++;return a},isDatasetVisible:function(a){var c=this.getDatasetMeta(a);return"boolean"===
+typeof c.hidden?!c.hidden:!this.data.datasets[a].hidden},bindEvents:function(){var a=this,b=a._listeners={},k=function(){a.resize()};c.addEventListener(a,"resize",k);b.resize=k}});g.Controller=g}},{}],24:[function(p,m,n){m.exports=function(g){function l(c,e){c._chartjs?c._chartjs.listeners.push(e):(Object.defineProperty(c,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),a.forEach(function(a){var e="onData"+a.charAt(0).toUpperCase()+a.slice(1),h=c[a];Object.defineProperty(c,a,{configurable:!0,
+enumerable:!1,value:function(){var a=Array.prototype.slice.call(arguments),d=h.apply(this,a);b.each(c._chartjs.listeners,function(c){"function"===typeof c[e]&&c[e].apply(c,a)});return d}})}))}function f(c,b){var d=c._chartjs;if(d){var d=d.listeners,k=d.indexOf(b);-1!==k&&d.splice(k,1);0<d.length||(a.forEach(function(a){delete c[a]}),delete c._chartjs)}}var b=g.helpers,a=["push","pop","shift","splice","unshift"];g.DatasetController=function(a,b){this.initialize(a,b)};b.extend(g.DatasetController.prototype,
+{datasetElementType:null,dataElementType:null,initialize:function(a,b){this.chart=a;this.index=b;this.linkScales();this.addElements()},updateIndex:function(a){this.index=a},linkScales:function(){var a=this.getMeta(),b=this.getDataset();null===a.xAxisID&&(a.xAxisID=b.xAxisID||this.chart.options.scales.xAxes[0].id);null===a.yAxisID&&(a.yAxisID=b.yAxisID||this.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},
+getScaleForId:function(a){return this.chart.scales[a]},reset:function(){this.update(!0)},createMetaDataset:function(){var a=this.datasetElementType;return a&&new a({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(a){var b=this.dataElementType;return b&&new b({_chart:this.chart,_datasetIndex:this.index,_index:a})},addElements:function(){var a=this.getMeta(),b=this.getDataset().data||[],d=a.data,k;k=0;for(b=b.length;k<b;++k)d[k]=d[k]||this.createMetaData(k);a.dataset=a.dataset||
+this.createMetaDataset()},addElementAndReset:function(a){var b=this.createMetaData(a);this.getMeta().data.splice(a,0,b);this.updateElement(b,a,!0)},buildOrUpdateElements:function(){var a=this.getDataset(),a=a.data||(a.data=[]);this._data!==a&&(this._data&&f(this._data,this),l(a,this),this._data=a);this.resyncElements()},update:b.noop,transition:function(){for(var a=this.getMeta(),b=a.data||[],d=b.length,k=0;k<d;++k)b[k].transition();a.dataset&&a.dataset.transition()},draw:function(){var a=this.getMeta(),
+b=a.data||[],d=b.length,k=0;for(a.dataset&&a.dataset.draw();k<d;++k)b[k].draw()},resyncElements:function(){var a=this.getMeta(),b=this.getDataset().data,d=a.data.length,b=b.length;b<d?a.data.splice(b,d-b):b>d&&this.insertElements(d,b-d)},insertElements:function(a,b){for(var d=0;d<b;++d)this.addElementAndReset(a+d)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},
+onDataSplice:function(a,b){this.getMeta().data.splice(a,b);this.insertElements(a,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}});g.DatasetController.extend=b.inherits}},{}],25:[function(p,m,n){m.exports=function(g){var l=g.helpers;g.elements={};g.Element=function(f){l.extend(this,f);this.initialize.apply(this,arguments)};l.extend(g.Element.prototype,{initialize:function(){this.hidden=!1},pivot:function(){this._view||(this._view=l.clone(this._model));this._start=
+{};return this},transition:function(){this._view=this._model;this._start=null;return this},hasValue:function(){return l.isNumber(this._model.x)&&l.isNumber(this._model.y)}});g.Element.extend=l.inherits}},{}],26:[function(p,m,n){m.exports=function(g){function l(a,c,b){var d;"string"===typeof a?(d=parseInt(a,10),-1!==a.indexOf("%")&&(d=d/100*c.parentNode[b])):d=a;return d}function f(a,c,b){var d=document.defaultView,k=a.parentNode,h=d.getComputedStyle(a)[c];c=d.getComputedStyle(k)[c];var d=void 0!==
+h&&null!==h&&"none"!==h,f=void 0!==c&&null!==c&&"none"!==c,g=Number.POSITIVE_INFINITY;return d||f?Math.min(d?l(h,a,b):g,f?l(c,k,b):g):"none"}var b=g.helpers={};b.each=function(a,c,e,d){var k;if(b.isArray(a))if(k=a.length,d)for(d=k-1;0<=d;d--)c.call(e,a[d],d);else for(d=0;d<k;d++)c.call(e,a[d],d);else if("object"===typeof a){var h=Object.keys(a);k=h.length;for(d=0;d<k;d++)c.call(e,a[h[d]],h[d])}};b.clone=function(a){var c={};b.each(a,function(a,d){b.isArray(a)?c[d]=a.slice(0):c[d]="object"===typeof a&&
+null!==a?b.clone(a):a});return c};b.extend=function(a){for(var c=function(c,b){a[b]=c},e=1,d=arguments.length;e<d;e++)b.each(arguments[e],c);return a};b.configMerge=function(a){var c=b.clone(a);b.each(Array.prototype.slice.call(arguments,1),function(a){b.each(a,function(a,e){var h=c.hasOwnProperty(e),f=h?c[e]:{};"scales"===e?c[e]=b.scaleMerge(f,a):"scale"===e?c[e]=b.configMerge(f,g.scaleService.getScaleDefaults(a.type),a):!h||"object"!==typeof f||b.isArray(f)||null===f||"object"!==typeof a||b.isArray(a)?
+c[e]=a:c[e]=b.configMerge(f,a)})});return c};b.scaleMerge=function(a,c){var e=b.clone(a);b.each(c,function(a,c){"xAxes"===c||"yAxes"===c?e.hasOwnProperty(c)?b.each(a,function(a,d){var f=b.getValueOrDefault(a.type,"xAxes"===c?"category":"linear"),f=g.scaleService.getScaleDefaults(f);d>=e[c].length||!e[c][d].type?e[c].push(b.configMerge(f,a)):e[c][d]=a.type&&a.type!==e[c][d].type?b.configMerge(e[c][d],f,a):b.configMerge(e[c][d],a)}):(e[c]=[],b.each(a,function(a){var d=b.getValueOrDefault(a.type,"xAxes"===
+c?"category":"linear");e[c].push(b.configMerge(g.scaleService.getScaleDefaults(d),a))})):e.hasOwnProperty(c)&&"object"===typeof e[c]&&null!==e[c]&&"object"===typeof a?e[c]=b.configMerge(e[c],a):e[c]=a});return e};b.getValueAtIndexOrDefault=function(a,c,e){return void 0===a||null===a?e:b.isArray(a)?c<a.length?a[c]:e:a};b.getValueOrDefault=function(a,c){return void 0===a?c:a};b.indexOf=Array.prototype.indexOf?function(a,c){return a.indexOf(c)}:function(a,c){for(var b=0,d=a.length;b<d;++b)if(a[b]===
+c)return b;return-1};b.where=function(a,c){if(b.isArray(a)&&Array.prototype.filter)return a.filter(c);var e=[];b.each(a,function(a){c(a)&&e.push(a)});return e};b.findIndex=Array.prototype.findIndex?function(a,c,b){return a.findIndex(c,b)}:function(a,c,b){b=void 0===b?a:b;for(var d=0,k=a.length;d<k;++d)if(c.call(b,a[d],d,a))return d;return-1};b.findNextWhere=function(a,c,b){if(void 0===b||null===b)b=-1;for(b+=1;b<a.length;b++){var d=a[b];if(c(d))return d}};b.findPreviousWhere=function(a,c,b){if(void 0===
+b||null===b)b=a.length;for(--b;0<=b;b--){var d=a[b];if(c(d))return d}};b.inherits=function(a){var c=this,e=a&&a.hasOwnProperty("constructor")?a.constructor:function(){return c.apply(this,arguments)},d=function(){this.constructor=e};d.prototype=c.prototype;e.prototype=new d;e.extend=b.inherits;a&&b.extend(e.prototype,a);e.__super__=c.prototype;return e};b.noop=function(){};b.uid=function(){var a=0;return function(){return a++}}();b.isNumber=function(a){return!isNaN(parseFloat(a))&&isFinite(a)};b.almostEquals=
+function(a,c,b){return Math.abs(a-c)<b};b.almostWhole=function(a,c){var b=Math.round(a);return b-c<a&&b+c>a};b.max=function(a){return a.reduce(function(a,b){return isNaN(b)?a:Math.max(a,b)},Number.NEGATIVE_INFINITY)};b.min=function(a){return a.reduce(function(a,b){return isNaN(b)?a:Math.min(a,b)},Number.POSITIVE_INFINITY)};b.sign=Math.sign?function(a){return Math.sign(a)}:function(a){a=+a;return 0===a||isNaN(a)?a:0<a?1:-1};b.log10=Math.log10?function(a){return Math.log10(a)}:function(a){return Math.log(a)/
+Math.LN10};b.toRadians=function(a){return Math.PI/180*a};b.aliasPixel=function(a){return 0===a%2?0:.5};b.splineCurve=function(a,c,b,d){a=a.skip?c:a;b=b.skip?c:b;var k=Math.sqrt(Math.pow(c.x-a.x,2)+Math.pow(c.y-a.y,2)),f=Math.sqrt(Math.pow(b.x-c.x,2)+Math.pow(b.y-c.y,2)),g=k/(k+f),k=f/(k+f),g=isNaN(g)?0:g,k=isNaN(k)?0:k,g=d*g;d*=k;return{previous:{x:c.x-g*(b.x-a.x),y:c.y-g*(b.y-a.y)},next:{x:c.x+d*(b.x-a.x),y:c.y+d*(b.y-a.y)}}};b.nextItem=function(a,c,b){return b?c>=a.length-1?a[0]:a[c+1]:c>=a.length-
+1?a[a.length-1]:a[c+1]};b.previousItem=function(a,b,e){return e?0>=b?a[a.length-1]:a[b-1]:0>=b?a[0]:a[b-1]};b.niceNum=function(a,c){var e=Math.floor(b.log10(a)),d=a/Math.pow(10,e);return(c?1.5>d?1:3>d?2:7>d?5:10:1>=d?1:2>=d?2:5>=d?5:10)*Math.pow(10,e)};b.requestAnimFrame=function(){return"undefined"===typeof window?function(a){a()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,
+1E3/60)}}();b.addEvent=function(a,b,e){a.addEventListener?a.addEventListener(b,e):a.attachEvent?a.attachEvent("on"+b,e):a["on"+b]=e};b.getConstraintWidth=function(a){return f(a,"max-width","clientWidth")};b.getConstraintHeight=function(a){return f(a,"max-height","clientHeight")};b.getMaximumWidth=function(a){var c=a.parentNode,e=parseInt(b.getStyle(c,"padding-left"),10),d=parseInt(b.getStyle(c,"padding-right"),10),c=c.clientWidth-e-d;a=b.getConstraintWidth(a);return isNaN(a)?c:Math.min(c,a)};b.getMaximumHeight=
+function(a){var c=a.parentNode,e=parseInt(b.getStyle(c,"padding-top"),10),d=parseInt(b.getStyle(c,"padding-bottom"),10),c=c.clientHeight-e-d;a=b.getConstraintHeight(a);return isNaN(a)?c:Math.min(c,a)};b.getStyle=function(a,b){return a.currentStyle?a.currentStyle[b]:document.defaultView.getComputedStyle(a,null).getPropertyValue(b)};b.retinaScale=function(a){var b=a.currentDevicePixelRatio=window.devicePixelRatio||1;if(1!==b){var e=a.canvas,d=a.height,f=a.width;e.height=d*b;e.width=f*b;a.ctx.scale(b,
+b);e.style.height=d+"px";e.style.width=f+"px"}};b.clear=function(a){a.ctx.clearRect(0,0,a.width,a.height)};b.fontString=function(a,b,e){return b+" "+a+"px "+e};b.longestText=function(a,c,e,d){d=d||{};var f=d.data=d.data||{},h=d.garbageCollect=d.garbageCollect||[];d.font!==c&&(f=d.data={},h=d.garbageCollect=[],d.font=c);a.font=c;var g=0;b.each(e,function(c){void 0!==c&&null!==c&&!0!==b.isArray(c)?g=b.measureText(a,f,h,g,c):b.isArray(c)&&b.each(c,function(c){void 0===c||null===c||b.isArray(c)||(g=b.measureText(a,
+f,h,g,c))})});c=h.length/2;if(c>e.length){for(e=0;e<c;e++)delete f[h[e]];h.splice(0,c)}return g};b.measureText=function(a,b,e,d,f){var h=b[f];h||(h=b[f]=a.measureText(f).width,e.push(f));h>d&&(d=h);return d};b.numberOfLabelLines=function(a){var c=1;b.each(a,function(a){b.isArray(a)&&a.length>c&&(c=a.length)});return c};b.isArray=Array.isArray?function(a){return Array.isArray(a)}:function(a){return"[object Array]"===Object.prototype.toString.call(a)};b.arrayEquals=function(a,c){var e,d,f,h;if(!a||
+!c||a.length!==c.length)return!1;e=0;for(d=a.length;e<d;++e)if(f=a[e],h=c[e],f instanceof Array&&h instanceof Array){if(!b.arrayEquals(f,h))return!1}else if(f!==h)return!1;return!0};b.callback=function(a,b,e){a&&"function"===typeof a.call&&a.apply(e,b)};b.callCallback=b.callback}},{}],28:[function(p,m,n){m.exports=function(){var g=function(g,f){this.construct(g,f);return this};g.defaults={global:{maintainAspectRatio:!0,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
+defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{}}};return g.Chart=g}},{}],29:[function(p,m,n){m.exports=function(g){function l(a,c){return b.where(a,function(a){return a.position===c})}function f(a,b){a.forEach(function(a,b){a._tmpIndex_=b;return a});a.sort(function(a,d){var f=b?d:a,h=b?a:d;return f.weight===h.weight?f._tmpIndex_-h._tmpIndex_:f.weight-h.weight});a.forEach(function(a){delete a._tmpIndex_})}var b=g.helpers;g.layoutService={defaults:{},addBox:function(a,b){a.boxes||
+(a.boxes=[]);b.fullWidth=b.fullWidth||!1;b.position=b.position||"top";b.weight=b.weight||0;a.boxes.push(b)},removeBox:function(a,b){var e=a.boxes?a.boxes.indexOf(b):-1;-1!==e&&a.boxes.splice(e,1)},configure:function(a,b,e){a=["fullWidth","position","weight"];for(var d=a.length,f=0,h;f<d;++f)h=a[f],e.hasOwnProperty(h)&&(b[h]=e[h])},update:function(a,c,e){function d(a){var b,c=a.isHorizontal();c?(b=a.update(a.fullWidth?z:B,Q),D-=b.height):(b=a.update(R,J),B-=b.width);S.push({horizontal:c,minSize:b,
+box:a})}function k(a){var c=b.findNextWhere(S,function(b){return b.box===a});c&&(a.isHorizontal()?a.update(a.fullWidth?z:B,I/2,{left:Math.max(r,K),right:Math.max(y,L),top:0,bottom:0}):a.update(c.minSize.width,D))}function h(a){var c=b.findNextWhere(S,function(b){return b.box===a}),d={left:0,right:0,top:v,bottom:E};c&&a.update(c.minSize.width,D,d)}function g(a){a.isHorizontal()?(a.left=a.fullWidth?n:r,a.right=a.fullWidth?c-p:r+B,a.top=A,a.bottom=A+a.height,A=a.bottom):(a.left=F,a.right=F+a.width,a.top=
+v,a.bottom=v+D,F=a.right)}if(a){var m=a.options.layout,q=m?m.padding:null,n=0,p=0,t=m=0;isNaN(q)?(n=q.left||0,p=q.right||0,m=q.top||0,t=q.bottom||0):t=m=p=n=q;var q=l(a.boxes,"left"),w=l(a.boxes,"right"),x=l(a.boxes,"top"),u=l(a.boxes,"bottom"),M=l(a.boxes,"chartArea");f(q,!0);f(w,!1);f(x,!0);f(u,!1);var z=c-n-p,I=e-m-t,J=I/2,R=(c-z/2)/(q.length+w.length),Q=(e-J)/(x.length+u.length),B=z,D=I,S=[];b.each(q.concat(w,x,u),d);var K=0,L=0,T=0,U=0;b.each(x.concat(u),function(a){a.getPadding&&(a=a.getPadding(),
+K=Math.max(K,a.left),L=Math.max(L,a.right))});b.each(q.concat(w),function(a){a.getPadding&&(a=a.getPadding(),T=Math.max(T,a.top),U=Math.max(U,a.bottom))});var r=n,y=p,v=m,E=t;b.each(q.concat(w),k);b.each(q,function(a){r+=a.width});b.each(w,function(a){y+=a.width});b.each(x.concat(u),k);b.each(x,function(a){v+=a.height});b.each(u,function(a){E+=a.height});b.each(q.concat(w),h);r=n;y=p;v=m;E=t;b.each(q,function(a){r+=a.width});b.each(w,function(a){y+=a.width});b.each(x,function(a){v+=a.height});b.each(u,
+function(a){E+=a.height});var t=Math.max(K-r,0),r=r+t,y=y+Math.max(L-y,0),X=Math.max(T-v,0),v=v+X,E=E+Math.max(U-E,0),G=e-v-E,H=c-r-y;if(H!==B||G!==D)b.each(q,function(a){a.height=G}),b.each(w,function(a){a.height=G}),b.each(x,function(a){a.fullWidth||(a.width=H)}),b.each(u,function(a){a.fullWidth||(a.width=H)}),D=G,B=H;var F=n+t,A=m+X;b.each(q.concat(x),g);F+=B;A+=D;b.each(w,g);b.each(u,g);a.chartArea={left:r,top:v,right:r+B,bottom:v+D};b.each(M,function(b){b.left=a.chartArea.left;b.top=a.chartArea.top;
+b.right=a.chartArea.right;b.bottom=a.chartArea.bottom;b.update(B,D)})}}}}},{}],31:[function(p,m,n){m.exports=function(g){function l(a,c,e){return b.isArray(c)?b.longestText(a,e,c):a.measureText(c).width}function f(a){var c=g.defaults.global;a=c.defaultFontSize;var e=c.defaultFontStyle,c=c.defaultFontFamily;return{size:a,style:e,family:c,font:b.fontString(a,e,c)}}var b=g.helpers;g.defaults.scale={display:!0,position:"left",gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawOnChartArea:!0,
+drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},ticks:{minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:g.Ticks.formatters.values}};g.Scale=g.Element.extend({getPadding:function(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}},
+update:function(a,c,e){this.maxWidth=a;this.maxHeight=c;this.margins=b.extend({left:0,right:0,top:0,bottom:0},e);this.longestTextCache=this.longestTextCache||{};this.setDimensions();this.determineDataLimits();this.buildTicks();this.convertTicksToLabels();this.calculateTickRotation();this.fit();return this.minSize},setDimensions:function(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height);this.paddingBottom=
+this.paddingRight=this.paddingTop=this.paddingLeft=0},determineDataLimits:b.noop,buildTicks:b.noop,convertTicksToLabels:function(){var a=this.options.ticks;this.ticks=this.ticks.map(a.userCallback||a.callback)},calculateTickRotation:function(){var a=this.ctx,c=this.options.ticks,e=f(c);a.font=e.font;var d=c.minRotation||0;if(this.options.display&&this.isHorizontal())for(var k=a=b.longestText(a,e.font,this.ticks,this.longestTextCache),h,e=this.getPixelForTick(1)-this.getPixelForTick(0)-6;k>e&&d<c.maxRotation;){h=
+b.toRadians(d);k=Math.cos(h);h=Math.sin(h);if(h*a>this.maxHeight){d--;break}d++;k*=a}this.labelRotation=d},fit:function(){var a=this.minSize={width:0,height:0},c=this.options,e=c.ticks,d=c.gridLines,k=c.display,h=this.isHorizontal(),g=f(e),m=c.gridLines.tickMarkLength;a.width=h?this.isFullWidth()?this.maxWidth-this.margins.left-this.margins.right:this.maxWidth:k&&d.drawTicks?m:0;a.height=h?k&&d.drawTicks?m:0:this.maxHeight;e.display&&k&&(k=b.longestText(this.ctx,g.font,this.ticks,this.longestTextCache),
+m=b.numberOfLabelLines(this.ticks),d=.5*g.size,h?(this.longestLabelWidth=k,h=b.toRadians(this.labelRotation),e=Math.cos(h),a.height=Math.min(this.maxHeight,a.height+(Math.sin(h)*k+g.size*m+d*m)),this.ctx.font=g.font,h=l(this.ctx,this.ticks[0],g.font),g=l(this.ctx,this.ticks[this.ticks.length-1],g.font),0!==this.labelRotation?(this.paddingLeft="bottom"===c.position?e*h+3:e*d+3,this.paddingRight="bottom"===c.position?e*d+3:e*g+3):(this.paddingLeft=h/2+3,this.paddingRight=g/2+3)):(k=e.mirror?0:k+this.options.ticks.padding,
+a.width=Math.min(this.maxWidth,a.width+k),this.paddingTop=g.size/2,this.paddingBottom=g.size/2));this.handleMargins();this.width=a.width;this.height=a.height},handleMargins:function(){this.margins&&(this.paddingLeft=Math.max(this.paddingLeft-this.margins.left,0),this.paddingTop=Math.max(this.paddingTop-this.margins.top,0),this.paddingRight=Math.max(this.paddingRight-this.margins.right,0),this.paddingBottom=Math.max(this.paddingBottom-this.margins.bottom,0))},isHorizontal:function(){return"top"===
+this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(a){return null===a||"undefined"===typeof a||"number"===typeof a&&!isFinite(a)?NaN:"object"===typeof a?a instanceof Date||a.isValid?a:this.getRightValue(this.isHorizontal()?a.x:a.y):a},getPixelForValue:b.noop,getValueForPixel:b.noop,getPixelForTick:function(a,b){if(this.isHorizontal()){var e=(this.width-(this.paddingLeft+this.paddingRight))/Math.max(this.ticks.length-
+(this.options.gridLines.offsetGridLines?0:1),1),d=e*a+this.paddingLeft;b&&(d+=e/2);e=this.left+Math.round(d);return e+=this.isFullWidth()?this.margins.left:0}return this.top+(this.height-(this.paddingTop+this.paddingBottom))/(this.ticks.length-1)*a},getPixelForDecimal:function(a){return this.isHorizontal()?(a=this.left+Math.round((this.width-(this.paddingLeft+this.paddingRight))*a+this.paddingLeft),a+=this.isFullWidth()?this.margins.left:0):this.top+a*this.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},
+getBaseValue:function(){var a=this.min,b=this.max;return 0>a&&0>b?b:0<a&&0<b?a:0},draw:function(a){var c=this,e=c.options;if(e.display){var d=c.ctx,k=g.defaults.global,h=e.ticks,l=e.gridLines,m=0!==c.labelRotation,n,p=h.autoSkip,W=c.isHorizontal(),t;h.maxTicksLimit&&(t=h.maxTicksLimit);var w=b.getValueOrDefault(h.fontColor,k.defaultFontColor),x=f(h),u=l.drawTicks?l.tickMarkLength:0,M=b.toRadians(c.labelRotation),z=c.longestLabelWidth*Math.cos(M);d.fillStyle=w;var I=[];if(W){n=!1;(z+h.autoSkipPadding)*
+c.ticks.length>c.width-(c.paddingLeft+c.paddingRight)&&(n=1+Math.floor((z+h.autoSkipPadding)*c.ticks.length/(c.width-(c.paddingLeft+c.paddingRight))));if(t&&c.ticks.length>t)for(;!n||c.ticks.length/(n||1)>t;)n||(n=1),n+=1;p||(n=!1)}var J="right"===e.position?c.left:c.right-u,R="right"===e.position?c.left+u:c.right,Q="bottom"===e.position?c.top:c.bottom-u,B="bottom"===e.position?c.top+u:c.bottom;b.each(c.ticks,function(d,f){if(void 0!==d&&null!==d){var g=c.ticks.length===f+1;if((!(1<n&&0<f%n||0===
+f%n&&f+n>=c.ticks.length)||g)&&void 0!==d&&null!==d){var p,t,w;f===("undefined"!==typeof c.zeroLineIndex?c.zeroLineIndex:0)?(g=l.zeroLineWidth,p=l.zeroLineColor,t=l.zeroLineBorderDash,w=l.zeroLineBorderDashOffset):(g=b.getValueAtIndexOrDefault(l.lineWidth,f),p=b.getValueAtIndexOrDefault(l.color,f),t=b.getValueOrDefault(l.borderDash,k.borderDash),w=b.getValueOrDefault(l.borderDashOffset,k.borderDashOffset));var r,y,v,x,O,G,H,F,A,C,z,P="middle";W?("bottom"===e.position?(P=m?"middle":"top",z=m?"right":
+"center",C=c.top+u):(P=m?"middle":"bottom",z=m?"left":"center",C=c.bottom-u),r=c.getPixelForTick(f)+b.aliasPixel(g),A=c.getPixelForTick(f,l.offsetGridLines)+h.labelOffset,r=v=O=H=r,y=Q,x=B,G=a.top,F=a.bottom):(A="left"===e.position,C=h.padding,h.mirror?z=A?"left":"right":(z=A?"right":"left",C=u+C),A=A?c.right-C:c.left+C,y=c.getPixelForTick(f),y+=b.aliasPixel(g),C=c.getPixelForTick(f,l.offsetGridLines),r=J,v=R,O=a.left,H=a.right,y=x=G=F=y);I.push({tx1:r,ty1:y,tx2:v,ty2:x,x1:O,y1:G,x2:H,y2:F,labelX:A,
+labelY:C,glWidth:g,glColor:p,glBorderDash:t,glBorderDashOffset:w,rotation:-1*M,label:d,textBaseline:P,textAlign:z})}}});b.each(I,function(a){l.display&&(d.save(),d.lineWidth=a.glWidth,d.strokeStyle=a.glColor,d.setLineDash&&(d.setLineDash(a.glBorderDash),d.lineDashOffset=a.glBorderDashOffset),d.beginPath(),l.drawTicks&&(d.moveTo(a.tx1,a.ty1),d.lineTo(a.tx2,a.ty2)),l.drawOnChartArea&&(d.moveTo(a.x1,a.y1),d.lineTo(a.x2,a.y2)),d.stroke(),d.restore());if(h.display){d.save();d.translate(a.labelX,a.labelY);
+d.rotate(a.rotation);d.font=x.font;d.textBaseline=a.textBaseline;d.textAlign=a.textAlign;a=a.label;if(b.isArray(a))for(var c=0,e=0;c<a.length;++c)d.fillText(""+a[c],0,e),e+=1.5*x.size;else d.fillText(a,0,0);d.restore()}})}}})}},{}],32:[function(p,m,n){m.exports=function(g){var l=g.helpers;g.scaleService={constructors:{},defaults:{},registerScaleType:function(f,b,a){this.constructors[f]=b;this.defaults[f]=l.clone(a)},getScaleConstructor:function(f){return this.constructors.hasOwnProperty(f)?this.constructors[f]:
+void 0},getScaleDefaults:function(f){return this.defaults.hasOwnProperty(f)?l.scaleMerge(g.defaults.scale,this.defaults[f]):{}},updateScaleDefaults:function(f,b){var a=this.defaults;a.hasOwnProperty(f)&&(a[f]=l.extend(a[f],b))},addScalesToLayout:function(f){l.each(f.scales,function(b){b.fullWidth=b.options.fullWidth;b.position=b.options.position;b.weight=b.options.weight;g.layoutService.addBox(f,b)})}}}},{}],33:[function(p,m,n){m.exports=function(g){var l=g.helpers;g.Ticks={generators:{linear:function(f,
+b){var a=[],c;f.stepSize&&0<f.stepSize?c=f.stepSize:(c=l.niceNum(b.max-b.min,!1),c=l.niceNum(c/(f.maxTicks-1),!0));var e=Math.floor(b.min/c)*c,d=Math.ceil(b.max/c)*c;f.min&&f.max&&f.stepSize&&l.almostWhole((f.max-f.min)/f.stepSize,c/1E3)&&(e=f.min,d=f.max);var g=(d-e)/c,g=l.almostEquals(g,Math.round(g),c/1E3)?Math.round(g):Math.ceil(g);a.push(void 0!==f.min?f.min:e);for(var h=1;h<g;++h)a.push(e+h*c);a.push(void 0!==f.max?f.max:d);return a}},formatters:{values:function(f){return l.isArray(f)?f:""+
+f},linear:function(f,b,a){b=3<a.length?a[2]-a[1]:a[1]-a[0];1<Math.abs(b)&&f!==Math.floor(f)&&(b=f-Math.floor(f));b=l.log10(Math.abs(b));0!==f?(b=-1*Math.floor(b),b=Math.max(Math.min(b,20),0),f=f.toFixed(b)):f="0";return f}}}}},{}],36:[function(p,m,n){m.exports=function(g){var l=g.helpers,f=g.defaults.global;g.defaults.global.elements.line={tension:.4,backgroundColor:f.defaultColor,borderWidth:3,borderColor:f.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",
+capBezierPoints:!0};g.elements.Line=g.Element.extend({draw:function(){var b=this._view,a=this._chart.ctx,c=b.spanGaps,e=this._children.slice(),d=f.elements.line,g,h,m;this._loop&&e.length&&e.push(e[0]);a.save();a.lineCap=b.borderCapStyle||d.borderCapStyle;a.setLineDash&&a.setLineDash(b.borderDash||d.borderDash);a.lineDashOffset=b.borderDashOffset||d.borderDashOffset;a.lineJoin=b.borderJoinStyle||d.borderJoinStyle;a.lineWidth=b.borderWidth||d.borderWidth;a.strokeStyle=b.borderColor||f.defaultColor;
+a.beginPath();b=-1;for(d=0;d<e.length;++d)g=e[d],h=l.previousItem(e,d),m=g._view,0===d?m.skip||(a.moveTo(m.x,m.y),b=d):(h=-1===b?h:e[b],m.skip||(b!==d-1&&!c||-1===b?a.moveTo(m.x,m.y):l.canvas.lineTo(a,h._view,g._view),b=d));a.stroke();a.restore()}})}},{}],37:[function(p,m,n){m.exports=function(g){var l=g.helpers,f=g.defaults.global,b=f.defaultColor;f.elements.point={radius:3,pointStyle:"circle",backgroundColor:b,borderWidth:0,borderColor:b};g.elements.Point=g.Element.extend({getCenterPoint:function(){var a=
+this._view;return{x:a.x,y:a.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},draw:function(a){a=this._view;var c=this._chart.ctx,e=a.pointStyle,d=a.radius,k=a.x,h=a.y;a.skip||(c.strokeStyle=a.borderColor||b,c.lineWidth=l.getValueOrDefault(a.borderWidth,f.elements.point.borderWidth),c.fillStyle=a.backgroundColor||b,g.canvasHelpers.drawPoint(c,e,d,k,h))}})}},{}],39:[function(p,m,n){m.exports=function(g){function l(b,e){var d=a.getStyle(b,e);return(d=d&&d.match(/^(\d+)(\.\d+)?px$/))?
+Number(d[1]):void 0}function f(b){var e=document.createElement("iframe");e.className="chartjs-hidden-iframe";e.style.cssText="display:block;overflow:hidden;border:0;margin:0;top:0;left:0;bottom:0;right:0;height:100%;width:100%;position:absolute;pointer-events:none;z-index:-1;";e.tabIndex=-1;a.addEvent(e,"load",function(){a.addEvent(e.contentWindow||e,"resize",b);b()});return e}function b(b,e,d){var g=b._chartjs={ticking:!1};g.resizer=f(function(){g.ticking||(g.ticking=!0,a.requestAnimFrame.call(window,
+function(){if(g.resizer)return g.ticking=!1,e({type:"resize",chart:d,"native":null,x:null,y:null})}))});b.insertBefore(g.resizer,b.firstChild)}var a=g.helpers;return{acquireContext:function(a,b){"string"===typeof a?a=document.getElementById(a):a.length&&(a=a[0]);a&&a.canvas&&(a=a.canvas);var d=a&&a.getContext&&a.getContext("2d");if(d&&d.canvas===a){var f=a,g=f.style,m=f.getAttribute("height"),n=f.getAttribute("width");f._chartjs={initial:{height:m,width:n,style:{display:g.display,height:g.height,
+width:g.width}}};g.display=g.display||"block";if(null===n||""===n){var p=l(f,"width");void 0!==p&&(f.width=p)}if(null===m||""===m)""===f.style.height?f.height=f.width/(b.options.aspectRatio||2):(g=l(f,"height"),void 0!==p&&(f.height=g));return d}return null},addEventListener:function(a,e,d){var f=a.canvas;"resize"===e&&b(f.parentNode,d,a)}}}},{}],40:[function(p,m,n){var g=p(39);m.exports=function(l){l.platform=g(l)}},{39:39}],44:[function(p,m,n){m.exports=function(g){var l=g.helpers,f=g.Scale.extend({getLabels:function(){var b=
+this.chart.data;return(this.isHorizontal()?b.xLabels:b.yLabels)||b.labels},determineDataLimits:function(){var b=this.getLabels();this.minIndex=0;this.maxIndex=b.length-1;var a;void 0!==this.options.ticks.min&&(a=l.indexOf(b,this.options.ticks.min),this.minIndex=-1!==a?a:this.minIndex);void 0!==this.options.ticks.max&&(a=l.indexOf(b,this.options.ticks.max),this.maxIndex=-1!==a?a:this.maxIndex);this.min=b[this.minIndex];this.max=b[this.maxIndex]},buildTicks:function(){var b=this.getLabels();this.ticks=
+0===this.minIndex&&this.maxIndex===b.length-1?b:b.slice(this.minIndex,this.maxIndex+1)},getPixelForValue:function(b,a,c,e){c=Math.max(this.maxIndex+1-this.minIndex-(this.options.gridLines.offsetGridLines?0:1),1);var d;void 0!==b&&null!==b&&(d=this.isHorizontal()?b.x:b.y);if(void 0!==d||void 0!==b&&isNaN(a))b=this.getLabels().indexOf(d||b),a=-1!==b?b:a;if(this.isHorizontal()){b=this.width/c;a=b*(a-this.minIndex);if(this.options.gridLines.offsetGridLines&&e||this.maxIndex===this.minIndex&&e)a+=b/2;
+return this.left+Math.round(a)}b=this.height/c;a=b*(a-this.minIndex);this.options.gridLines.offsetGridLines&&e&&(a+=b/2);return this.top+Math.round(a)},getPixelForTick:function(b,a){return this.getPixelForValue(this.ticks[b],b+this.minIndex,null,a)},getValueForPixel:function(b){var a=Math.max(this.ticks.length-(this.options.gridLines.offsetGridLines?0:1),1),c=this.isHorizontal(),a=(c?this.width:this.height)/a;b-=c?this.left:this.top;this.options.gridLines.offsetGridLines&&(b-=a/2);return 0>=b?0:Math.round(b/
+a)},getBasePixel:function(){return this.bottom}});g.scaleService.registerScaleType("category",f,{position:"bottom"})}},{}],45:[function(p,m,n){m.exports=function(g){var l=g.helpers,f={position:"left",ticks:{callback:g.Ticks.formatters.linear}},b=g.LinearScaleBase.extend({determineDataLimits:function(){var a=this,b=a.chart,e=b.data.datasets,d=a.isHorizontal();a.min=null;a.max=null;l.each(e,function(e,f){var g=b.getDatasetMeta(f);b.isDatasetVisible(f)&&(d?g.xAxisID===a.id:g.yAxisID===a.id)&&l.each(e.data,
+function(b,c){var d=+a.getRightValue(b);isNaN(d)||g.data[c].hidden||(null===a.min?a.min=d:d<a.min&&(a.min=d),null===a.max?a.max=d:d>a.max&&(a.max=d))})});a.min=isFinite(a.min)?a.min:0;a.max=isFinite(a.max)?a.max:1;this.handleTickRangeOptions()},getTickLimit:function(){var a;a=this.options.ticks;if(this.isHorizontal())a=Math.min(a.maxTicksLimit?a.maxTicksLimit:11,Math.ceil(this.width/50));else{var b=l.getValueOrDefault(a.fontSize,g.defaults.global.defaultFontSize);a=Math.min(a.maxTicksLimit?a.maxTicksLimit:
+11,Math.ceil(this.height/(2*b)))}return a},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getPixelForValue:function(a){var b=this.start;a=+this.getRightValue(a);var e=this.end-b;if(this.isHorizontal())return b=this.left+this.width/e*(a-b),Math.round(b);b=this.bottom-this.height/e*(a-b);return Math.round(b)},getValueForPixel:function(a){var b=this.isHorizontal();return this.start+(b?a-this.left:this.bottom-a)/(b?this.width:this.height)*(this.end-this.start)},getPixelForTick:function(a){return this.getPixelForValue(this.ticksAsNumbers[a])}});
+g.scaleService.registerScaleType("linear",b,f)}},{}],46:[function(p,m,n){m.exports=function(g){var l=g.helpers,f=l.noop;g.LinearScaleBase=g.Scale.extend({handleTickRangeOptions:function(){var b=this.options.ticks;void 0!==b.min?this.min=b.min:void 0!==b.suggestedMin&&(this.min=null===this.min?b.suggestedMin:Math.min(this.min,b.suggestedMin));void 0!==b.max?this.max=b.max:void 0!==b.suggestedMax&&(this.max=null===this.max?b.suggestedMax:Math.max(this.max,b.suggestedMax));this.min===this.max&&(this.max++,
+this.min--)},getTickLimit:f,handleDirectionalChanges:f,buildTicks:function(){var b=this.options.ticks,a=this.getTickLimit(),a=Math.max(2,a),a={maxTicks:a,min:b.min,max:b.max,stepSize:l.getValueOrDefault(b.fixedStepSize,b.stepSize)},a=this.ticks=g.Ticks.generators.linear(a,this);this.handleDirectionalChanges();this.max=l.max(a);this.min=l.min(a);b.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max)},convertTicksToLabels:function(){this.ticksAsNumbers=
+this.ticks.slice();this.zeroLineIndex=this.ticks.indexOf(0);g.Scale.prototype.convertTicksToLabels.call(this)}})}},{}]},{},[7])(7)}();
diff --git a/web/vendor/dropzone.min.js b/web/vendor/dropzone.min.js
new file mode 100644
index 000000000..dd326fc51
--- /dev/null
+++ b/web/vendor/dropzone.min.js
@@ -0,0 +1 @@
+(function(){var a={};window.EXIF=a;function b(f,d){var l="";for(var e=d;e<d+4;e++){l+=String.fromCharCode(f.getUint8(e))}if(l!="Exif"){return false}var j,m=d+6;if(f.getUint16(m)==18761){j=false}else{if(f.getUint16(m)==19789){j=true}else{return false}}if(f.getUint16(m+2,!j)!=42){return false}var c=f.getUint32(m+4,!j);if(c<8){return false}var p=m+c,h=f.getUint16(p,!j),o={},k,g;for(g=0;g<h;g++){k=p+g*12+2;if(f.getUint16(k,!j)==274){return parseInt(f.getUint16(k+8,!j),10)}}return false}a.getData=function(l){if((l instanceof Image||l instanceof HTMLImageElement)&&!l.complete){return false}var k=l.src;if(k.match(/^http/)){var d=document.createElement("canvas"),q=d.getContext("2d");d.width=l.width;d.height=l.height;q.drawImage(l,0,0);k=d.toDataURL("image/jpeg")}var m=k.replace(/^data\:([^\;]+)\;base64,/gmi,"");var j=atob(m);var n=j.length;var e=new ArrayBuffer(n);var o=new Uint8Array(e);for(var h=0;h<n;h++){o[h]=j.charCodeAt(h)}var p=new DataView(e);if((p.getUint8(0)!=255)||(p.getUint8(1)!=216)){return false}var f=2,c=e.byteLength,g;while(f<c){if(p.getUint8(f)!=255){return false}g=p.getUint8(f+1);if(g==225){return b(p,f+4)}else{f+=2+p.getUint16(f+2)}}}})();(function(){var g,i,f,c,d,b,e,l,k,j=[].slice,a=function(p,n){for(var m in n){if(h.call(n,m)){p[m]=n[m]}}function o(){this.constructor=p}o.prototype=n.prototype;p.prototype=new o();p.__super__=n.prototype;return p},h={}.hasOwnProperty;l=function(){};i=(function(){function m(){}m.prototype.addEventListener=m.prototype.on;m.prototype.on=function(o,n){this._callbacks=this._callbacks||{};if(!this._callbacks[o]){this._callbacks[o]=[]}this._callbacks[o].push(n);return this};m.prototype.emit=function(){var p,s,r,q,o,n;q=arguments[0],p=2<=arguments.length?j.call(arguments,1):[];this._callbacks=this._callbacks||{};r=this._callbacks[q];if(r){for(o=0,n=r.length;o<n;o++){s=r[o];s.apply(this,p)}}return this};m.prototype.removeListener=m.prototype.off;m.prototype.removeAllListeners=m.prototype.off;m.prototype.removeEventListener=m.prototype.off;m.prototype.off=function(s,q){var t,r,p,o,n;if(!this._callbacks||arguments.length===0){this._callbacks={};return this}r=this._callbacks[s];if(!r){return this}if(arguments.length===1){delete this._callbacks[s];return this}for(p=o=0,n=r.length;o<n;p=++o){t=r[p];if(t===q){r.splice(p,1);break}}return this};return m})();g=(function(o){var p,m;a(n,o);n.prototype.Emitter=i;n.prototype.events=["drop","dragstart","dragend","dragenter","dragover","dragleave","addedfile","addedfiles","removedfile","thumbnail","error","errormultiple","processing","processingmultiple","uploadprogress","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","reset","maxfilesexceeded","maxfilesreached","queuecomplete"];n.prototype.defaultOptions={url:null,method:"post",withCredentials:false,timeout:30000,parallelUploads:2,uploadMultiple:false,maxFilesize:256,paramName:"file",createImageThumbnails:true,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,thumbnailMethod:"crop",resizeWidth:null,resizeHeight:null,resizeMimeType:null,resizeQuality:0.8,resizeMethod:"contain",filesizeBase:1000,maxFiles:null,params:{},headers:null,clickable:true,ignoreHiddenFiles:true,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:true,autoQueue:true,addRemoveLinks:false,previewsContainer:null,hiddenInputContainer:"body",capture:null,renameFilename:null,renameFile:null,forceFallback:false,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",dictFileSizeUnits:{tb:"TB",gb:"GB",mb:"MB",kb:"KB",b:"b"},init:function(){return l},accept:function(r,q){return q()},fallback:function(){var v,r,q,s,u,t;this.element.className=this.element.className+" dz-browser-not-supported";u=this.element.getElementsByTagName("div");for(r=0,q=u.length;r<q;r++){v=u[r];if(/(^| )dz-message($| )/.test(v.className)){s=v;v.className="dz-message";continue}}if(!s){s=n.createElement('<div class="dz-message"><span></span></div>');this.element.appendChild(s)}t=s.getElementsByTagName("span")[0];if(t){if(t.textContent!=null){t.textContent=this.options.dictFallbackMessage}else{if(t.innerText!=null){t.innerText=this.options.dictFallbackMessage}}}return this.element.appendChild(this.getFallbackForm())},resize:function(s,u,q,w){var v,t,r;v={srcX:0,srcY:0,srcWidth:s.width,srcHeight:s.height};t=s.width/s.height;if((u==null)&&(q==null)){u=v.srcWidth;q=v.srcHeight}else{if(u==null){u=q*t}else{if(q==null){q=u/t}}}u=Math.min(u,v.srcWidth);q=Math.min(q,v.srcHeight);r=u/q;if(v.srcWidth>u||v.srcHeight>q){if(w==="crop"){if(t>r){v.srcHeight=s.height;v.srcWidth=v.srcHeight*r}else{v.srcWidth=s.width;v.srcHeight=v.srcWidth/r}}else{if(w==="contain"){if(t>r){q=u/t}else{u=q*t}}else{throw new Error("Unknown resizeMethod '"+w+"'")}}}v.srcX=(s.width-v.srcWidth)/2;v.srcY=(s.height-v.srcHeight)/2;v.trgWidth=u;v.trgHeight=q;return v},transformFile:function(r,q){if((this.options.resizeWidth||this.options.resizeHeight)&&r.type.match(/image.*/)){return this.resizeImage(r,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,q)}else{return q(r)}},previewTemplate:'<div class="dz-preview dz-file-preview">\n <div class="dz-image"><img data-dz-thumbnail /></div>\n <div class="dz-details">\n <div class="dz-size"><span data-dz-size></span></div>\n <div class="dz-filename"><span data-dz-name></span></div>\n </div>\n <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n <div class="dz-error-message"><span data-dz-errormessage></span></div>\n <div class="dz-success-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Check</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>\n </g>\n </svg>\n </div>\n <div class="dz-error-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Error</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <g id="Check-+-Oval-2" sketch:type="MSLayerGroup" stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" sketch:type="MSShapeGroup"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>',drop:function(q){return this.element.classList.remove("dz-drag-hover")},dragstart:l,dragend:function(q){return this.element.classList.remove("dz-drag-hover")},dragenter:function(q){return this.element.classList.add("dz-drag-hover")},dragover:function(q){return this.element.classList.add("dz-drag-hover")},dragleave:function(q){return this.element.classList.remove("dz-drag-hover")},paste:l,reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(s){var w,u,t,B,x,v,r,q,C,A,z,D,y;if(this.element===this.previewsContainer){this.element.classList.add("dz-started")}if(this.previewsContainer){s.previewElement=n.createElement(this.options.previewTemplate.trim());s.previewTemplate=s.previewElement;this.previewsContainer.appendChild(s.previewElement);q=s.previewElement.querySelectorAll("[data-dz-name]");for(w=0,B=q.length;w<B;w++){r=q[w];r.textContent=s.name}C=s.previewElement.querySelectorAll("[data-dz-size]");for(u=0,x=C.length;u<x;u++){r=C[u];r.innerHTML=this.filesize(s.size)}if(this.options.addRemoveLinks){s._removeLink=n.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'+this.options.dictRemoveFile+"</a>");s.previewElement.appendChild(s._removeLink)}z=(function(E){return function(F){F.preventDefault();F.stopPropagation();if(s.status===n.UPLOADING){return n.confirm(E.options.dictCancelUploadConfirmation,function(){return E.removeFile(s)})}else{if(E.options.dictRemoveFileConfirmation){return n.confirm(E.options.dictRemoveFileConfirmation,function(){return E.removeFile(s)})}else{return E.removeFile(s)}}}})(this);A=s.previewElement.querySelectorAll("[data-dz-remove]");y=[];for(t=0,v=A.length;t<v;t++){D=A[t];y.push(D.addEventListener("click",z))}return y}},removedfile:function(q){var r;if(q.previewElement){if((r=q.previewElement)!=null){r.parentNode.removeChild(q.previewElement)}}return this._updateMaxFilesReachedClass()},thumbnail:function(t,v){var s,q,u,r;if(t.previewElement){t.previewElement.classList.remove("dz-file-preview");u=t.previewElement.querySelectorAll("[data-dz-thumbnail]");for(s=0,q=u.length;s<q;s++){r=u[s];r.alt=t.name;r.src=v}return setTimeout(((function(w){return function(){return t.previewElement.classList.add("dz-image-preview")}})(this)),1)}},error:function(t,w){var r,q,v,u,s;if(t.previewElement){t.previewElement.classList.add("dz-error");if(typeof w!=="String"&&w.error){w=w.error}u=t.previewElement.querySelectorAll("[data-dz-errormessage]");s=[];for(r=0,q=u.length;r<q;r++){v=u[r];s.push(v.textContent=w)}return s}},errormultiple:l,processing:function(q){if(q.previewElement){q.previewElement.classList.add("dz-processing");if(q._removeLink){return q._removeLink.textContent=this.options.dictCancelUpload}}},processingmultiple:l,uploadprogress:function(v,s,u){var r,q,x,w,t;if(v.previewElement){w=v.previewElement.querySelectorAll("[data-dz-uploadprogress]");t=[];for(r=0,q=w.length;r<q;r++){x=w[r];if(x.nodeName==="PROGRESS"){t.push(x.value=s)}else{t.push(x.style.width=s+"%")}}return t}},totaluploadprogress:l,sending:l,sendingmultiple:l,success:function(q){if(q.previewElement){return q.previewElement.classList.add("dz-success")}},successmultiple:l,canceled:function(q){return this.emit("error",q,"Upload canceled.")},canceledmultiple:l,complete:function(q){if(q._removeLink){q._removeLink.textContent=this.options.dictRemoveFile}if(q.previewElement){return q.previewElement.classList.add("dz-complete")}},completemultiple:l,maxfilesexceeded:l,maxfilesreached:l,queuecomplete:l,addedfiles:l};p=function(){var s,t,q,r,u,v,w;v=arguments[0],u=2<=arguments.length?j.call(arguments,1):[];for(s=0,q=u.length;s<q;s++){r=u[s];for(t in r){w=r[t];v[t]=w}}return v};function n(t,r){var q,u,s;this.element=t;this.version=n.version;this.defaultOptions.previewTemplate=this.defaultOptions.previewTemplate.replace(/\n*/g,"");this.clickableElements=[];this.listeners=[];this.files=[];if(typeof this.element==="string"){this.element=document.querySelector(this.element)}if(!(this.element&&(this.element.nodeType!=null))){throw new Error("Invalid dropzone element.")}if(this.element.dropzone){throw new Error("Dropzone already attached.")}n.instances.push(this);this.element.dropzone=this;q=(s=n.optionsForElement(this.element))!=null?s:{};this.options=p({},this.defaultOptions,q,r!=null?r:{});if(this.options.forceFallback||!n.isBrowserSupported()){return this.options.fallback.call(this)}if(this.options.url==null){this.options.url=this.element.getAttribute("action")}if(!this.options.url){throw new Error("No URL provided.")}if(this.options.acceptedFiles&&this.options.acceptedMimeTypes){throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.")}if(this.options.acceptedMimeTypes){this.options.acceptedFiles=this.options.acceptedMimeTypes;delete this.options.acceptedMimeTypes}if(this.options.renameFilename!=null){this.options.renameFile=(function(v){return function(w){return v.options.renameFilename.call(v,w.name,w)}})(this)}this.options.method=this.options.method.toUpperCase();if((u=this.getExistingFallback())&&u.parentNode){u.parentNode.removeChild(u)}if(this.options.previewsContainer!==false){if(this.options.previewsContainer){this.previewsContainer=n.getElement(this.options.previewsContainer,"previewsContainer")}else{this.previewsContainer=this.element}}if(this.options.clickable){if(this.options.clickable===true){this.clickableElements=[this.element]}else{this.clickableElements=n.getElements(this.options.clickable,"clickable")}}this.init()}n.prototype.getAcceptedFiles=function(){var t,r,q,u,s;u=this.files;s=[];for(r=0,q=u.length;r<q;r++){t=u[r];if(t.accepted){s.push(t)}}return s};n.prototype.getRejectedFiles=function(){var t,r,q,u,s;u=this.files;s=[];for(r=0,q=u.length;r<q;r++){t=u[r];if(!t.accepted){s.push(t)}}return s};n.prototype.getFilesWithStatus=function(r){var u,s,q,v,t;v=this.files;t=[];for(s=0,q=v.length;s<q;s++){u=v[s];if(u.status===r){t.push(u)}}return t};n.prototype.getQueuedFiles=function(){return this.getFilesWithStatus(n.QUEUED)};n.prototype.getUploadingFiles=function(){return this.getFilesWithStatus(n.UPLOADING)};n.prototype.getAddedFiles=function(){return this.getFilesWithStatus(n.ADDED)};n.prototype.getActiveFiles=function(){var t,r,q,u,s;u=this.files;s=[];for(r=0,q=u.length;r<q;r++){t=u[r];if(t.status===n.UPLOADING||t.status===n.QUEUED){s.push(t)}}return s};n.prototype.init=function(){var s,t,q,w,u,r,v;if(this.element.tagName==="form"){this.element.setAttribute("enctype","multipart/form-data")}if(this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")){this.element.appendChild(n.createElement('<div class="dz-default dz-message"><span>'+this.options.dictDefaultMessage+"</span></div>"))}if(this.clickableElements.length){v=(function(x){return function(){if(x.hiddenFileInput){x.hiddenFileInput.parentNode.removeChild(x.hiddenFileInput)}x.hiddenFileInput=document.createElement("input");x.hiddenFileInput.setAttribute("type","file");if((x.options.maxFiles==null)||x.options.maxFiles>1){x.hiddenFileInput.setAttribute("multiple","multiple")}x.hiddenFileInput.className="dz-hidden-input";if(x.options.acceptedFiles!=null){x.hiddenFileInput.setAttribute("accept",x.options.acceptedFiles)}if(x.options.capture!=null){x.hiddenFileInput.setAttribute("capture",x.options.capture)}x.hiddenFileInput.style.visibility="hidden";x.hiddenFileInput.style.position="absolute";x.hiddenFileInput.style.top="0";x.hiddenFileInput.style.left="0";x.hiddenFileInput.style.height="0";x.hiddenFileInput.style.width="0";document.querySelector(x.options.hiddenInputContainer).appendChild(x.hiddenFileInput);return x.hiddenFileInput.addEventListener("change",function(){var A,B,z,y;B=x.hiddenFileInput.files;if(B.length){for(z=0,y=B.length;z<y;z++){A=B[z];x.addFile(A)}}x.emit("addedfiles",B);return v()})}})(this);v()}this.URL=(u=window.URL)!=null?u:window.webkitURL;r=this.events;for(t=0,q=r.length;t<q;t++){s=r[t];this.on(s,this.options[s])}this.on("uploadprogress",(function(x){return function(){return x.updateTotalUploadProgress()}})(this));this.on("removedfile",(function(x){return function(){return x.updateTotalUploadProgress()}})(this));this.on("canceled",(function(x){return function(y){return x.emit("complete",y)}})(this));this.on("complete",(function(x){return function(y){if(x.getAddedFiles().length===0&&x.getUploadingFiles().length===0&&x.getQueuedFiles().length===0){return setTimeout((function(){return x.emit("queuecomplete")}),0)}}})(this));w=function(x){x.stopPropagation();if(x.preventDefault){return x.preventDefault()}else{return x.returnValue=false}};this.listeners=[{element:this.element,events:{dragstart:(function(x){return function(y){return x.emit("dragstart",y)}})(this),dragenter:(function(x){return function(y){w(y);return x.emit("dragenter",y)}})(this),dragover:(function(x){return function(z){var y;try{y=z.dataTransfer.effectAllowed}catch(A){}z.dataTransfer.dropEffect="move"===y||"linkMove"===y?"move":"copy";w(z);return x.emit("dragover",z)}})(this),dragleave:(function(x){return function(y){return x.emit("dragleave",y)}})(this),drop:(function(x){return function(y){w(y);return x.drop(y)}})(this),dragend:(function(x){return function(y){return x.emit("dragend",y)}})(this)}}];this.clickableElements.forEach((function(x){return function(y){return x.listeners.push({element:y,events:{click:function(z){if((y!==x.element)||(z.target===x.element||n.elementInside(z.target,x.element.querySelector(".dz-message")))){x.hiddenFileInput.click()}return true}}})}})(this));this.enable();return this.options.init.call(this)};n.prototype.destroy=function(){var q;this.disable();this.removeAllFiles(true);if((q=this.hiddenFileInput)!=null?q.parentNode:void 0){this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);this.hiddenFileInput=null}delete this.element.dropzone;return n.instances.splice(n.instances.indexOf(this),1)};n.prototype.updateTotalUploadProgress=function(){var t,u,s,r,v,x,q,w;q=0;x=0;t=this.getActiveFiles();if(t.length){v=this.getActiveFiles();for(s=0,r=v.length;s<r;s++){u=v[s];q+=u.upload.bytesSent;x+=u.upload.total}w=100*q/x}else{w=100}return this.emit("totaluploadprogress",w,x,q)};n.prototype._getParamName=function(q){if(typeof this.options.paramName==="function"){return this.options.paramName(q)}else{return""+this.options.paramName+(this.options.uploadMultiple?"["+q+"]":"")}};n.prototype._renameFile=function(q){if(typeof this.options.renameFile!=="function"){return q.name}return this.options.renameFile(q)};n.prototype.getFallbackForm=function(){var r,q,t,s;if(r=this.getExistingFallback()){return r}t='<div class="dz-fallback">';if(this.options.dictFallbackText){t+="<p>"+this.options.dictFallbackText+"</p>"}t+='<input type="file" name="'+(this._getParamName(0))+'" '+(this.options.uploadMultiple?'multiple="multiple"':void 0)+' /><input type="submit" value="Upload!"></div>';q=n.createElement(t);if(this.element.tagName!=="FORM"){s=n.createElement('<form action="'+this.options.url+'" enctype="multipart/form-data" method="'+this.options.method+'"></form>');s.appendChild(q)}else{this.element.setAttribute("enctype","multipart/form-data");this.element.setAttribute("method",this.options.method)}return s!=null?s:q};n.prototype.getExistingFallback=function(){var v,t,r,q,u,s;t=function(z){var y,x,w;for(x=0,w=z.length;x<w;x++){y=z[x];if(/(^| )fallback($| )/.test(y.className)){return y}}};u=["div","form"];for(r=0,q=u.length;r<q;r++){s=u[r];if(v=t(this.element.getElementsByTagName(s))){return v}}};n.prototype.setupEventListeners=function(){var v,u,r,q,w,t,s;t=this.listeners;s=[];for(r=0,q=t.length;r<q;r++){v=t[r];s.push((function(){var x,y;x=v.events;y=[];for(u in x){w=x[u];y.push(v.element.addEventListener(u,w,false))}return y})())}return s};n.prototype.removeEventListeners=function(){var v,u,r,q,w,t,s;t=this.listeners;s=[];for(r=0,q=t.length;r<q;r++){v=t[r];s.push((function(){var x,y;x=v.events;y=[];for(u in x){w=x[u];y.push(v.element.removeEventListener(u,w,false))}return y})())}return s};n.prototype.disable=function(){var t,r,q,u,s;this.clickableElements.forEach(function(v){return v.classList.remove("dz-clickable")});this.removeEventListeners();u=this.files;s=[];for(r=0,q=u.length;r<q;r++){t=u[r];s.push(this.cancelUpload(t))}return s};n.prototype.enable=function(){this.clickableElements.forEach(function(q){return q.classList.add("dz-clickable")});return this.setupEventListeners()};n.prototype.filesize=function(y){var r,u,t,v,s,q,x,w;s=0;q="b";if(y>0){w=["tb","gb","mb","kb","b"];for(u=t=0,v=w.length;t<v;u=++t){x=w[u];r=Math.pow(this.options.filesizeBase,4-u)/10;if(y>=r){s=y/Math.pow(this.options.filesizeBase,4-u);q=x;break}}s=Math.round(10*s)/10}return"<strong>"+s+"</strong> "+this.options.dictFileSizeUnits[q]};n.prototype._updateMaxFilesReachedClass=function(){if((this.options.maxFiles!=null)&&this.getAcceptedFiles().length>=this.options.maxFiles){if(this.getAcceptedFiles().length===this.options.maxFiles){this.emit("maxfilesreached",this.files)}return this.element.classList.add("dz-max-files-reached")}else{return this.element.classList.remove("dz-max-files-reached")}};n.prototype.drop=function(s){var r,q;if(!s.dataTransfer){return}this.emit("drop",s);r=s.dataTransfer.files;this.emit("addedfiles",r);if(r.length){q=s.dataTransfer.items;if(q&&q.length&&(q[0].webkitGetAsEntry!=null)){this._addFilesFromItems(q)}else{this.handleFiles(r)}}};n.prototype.paste=function(s){var q,r;if((s!=null?(r=s.clipboardData)!=null?r.items:void 0:void 0)==null){return}this.emit("paste",s);q=s.clipboardData.items;if(q.length){return this._addFilesFromItems(q)}};n.prototype.handleFiles=function(u){var t,r,q,s;s=[];for(r=0,q=u.length;r<q;r++){t=u[r];s.push(this.addFile(t))}return s};n.prototype._addFilesFromItems=function(r){var v,u,s,q,t;t=[];for(s=0,q=r.length;s<q;s++){u=r[s];if((u.webkitGetAsEntry!=null)&&(v=u.webkitGetAsEntry())){if(v.isFile){t.push(this.addFile(u.getAsFile()))}else{if(v.isDirectory){t.push(this._addFilesFromDirectory(v,v.name))}else{t.push(void 0)}}}else{if(u.getAsFile!=null){if((u.kind==null)||u.kind==="file"){t.push(this.addFile(u.getAsFile()))}else{t.push(void 0)}}else{t.push(void 0)}}}return t};n.prototype._addFilesFromDirectory=function(q,u){var t,s,r;t=q.createReader();s=function(v){return typeof console!=="undefined"&&console!==null?typeof console.log==="function"?console.log(v):void 0:void 0};r=(function(v){return function(){return t.readEntries(function(x){var z,y,w;if(x.length>0){for(y=0,w=x.length;y<w;y++){z=x[y];if(z.isFile){z.file(function(A){if(v.options.ignoreHiddenFiles&&A.name.substring(0,1)==="."){return}A.fullPath=u+"/"+A.name;return v.addFile(A)})}else{if(z.isDirectory){v._addFilesFromDirectory(z,u+"/"+z.name)}}}r()}return null},s)}})(this);return r()};n.prototype.accept=function(r,q){if(r.size>this.options.maxFilesize*1024*1024){return q(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(r.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize))}else{if(!n.isValidFile(r,this.options.acceptedFiles)){return q(this.options.dictInvalidFileType)}else{if((this.options.maxFiles!=null)&&this.getAcceptedFiles().length>=this.options.maxFiles){q(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles));return this.emit("maxfilesexceeded",r)}else{return this.options.accept.call(this,r,q)}}}};n.prototype.addFile=function(q){q.upload={progress:0,total:q.size,bytesSent:0,filename:this._renameFile(q)};this.files.push(q);q.status=n.ADDED;this.emit("addedfile",q);this._enqueueThumbnail(q);return this.accept(q,(function(r){return function(s){if(s){q.accepted=false;r._errorProcessing([q],s)}else{q.accepted=true;if(r.options.autoQueue){r.enqueueFile(q)}}return r._updateMaxFilesReachedClass()}})(this))};n.prototype.enqueueFiles=function(t){var s,r,q;for(r=0,q=t.length;r<q;r++){s=t[r];this.enqueueFile(s)}return null};n.prototype.enqueueFile=function(q){if(q.status===n.ADDED&&q.accepted===true){q.status=n.QUEUED;if(this.options.autoProcessQueue){return setTimeout(((function(r){return function(){return r.processQueue()}})(this)),0)}}else{throw new Error("This file can't be queued because it has already been processed or was rejected.")}};n.prototype._thumbnailQueue=[];n.prototype._processingThumbnail=false;n.prototype._enqueueThumbnail=function(q){if(this.options.createImageThumbnails&&q.type.match(/image.*/)&&q.size<=this.options.maxThumbnailFilesize*1024*1024){this._thumbnailQueue.push(q);return setTimeout(((function(r){return function(){return r._processThumbnailQueue()}})(this)),0)}};n.prototype._processThumbnailQueue=function(){var q;if(this._processingThumbnail||this._thumbnailQueue.length===0){return}this._processingThumbnail=true;q=this._thumbnailQueue.shift();return this.createThumbnail(q,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,true,(function(r){return function(s){r.emit("thumbnail",q,s);r._processingThumbnail=false;return r._processThumbnailQueue()}})(this))};n.prototype.removeFile=function(q){if(q.status===n.UPLOADING){this.cancelUpload(q)}this.files=k(this.files,q);this.emit("removedfile",q);if(this.files.length===0){return this.emit("reset")}};n.prototype.removeAllFiles=function(u){var s,r,q,t;if(u==null){u=false}t=this.files.slice();for(r=0,q=t.length;r<q;r++){s=t[r];if(s.status!==n.UPLOADING||u){this.removeFile(s)}}return null};n.prototype.resizeImage=function(r,s,q,t,u){return this.createThumbnail(r,s,q,t,false,(function(v){return function(z,w){var x,y;if(w===null){return u(r)}else{x=v.options.resizeMimeType;if(x==null){x=r.type}y=w.toDataURL(x,v.options.resizeQuality);if(x==="image/jpeg"||x==="image/jpg"){y=f.restore(r.dataURL,y)}return u(n.dataURItoBlob(y))}}})(this))};n.prototype.createThumbnail=function(t,u,q,v,s,w){var r;r=new FileReader;r.onload=(function(x){return function(){t.dataURL=r.result;if(t.type==="image/svg+xml"){if(w!=null){w(r.result)}return}return x.createThumbnailFromUrl(t,u,q,v,s,w)}})(this);return r.readAsDataURL(t)};n.prototype.createThumbnailFromUrl=function(u,v,q,w,t,x,s){var r;r=document.createElement("img");if(s){r.crossOrigin=s}r.onload=(function(y){return function(){var z;z=function(A){return A(1)};if((typeof EXIF!=="undefined"&&EXIF!==null)&&t){z=function(A){return A(EXIF.getData(r))}}return z(function(B){var C,I,D,G,F,E,H,A;u.width=r.width;u.height=r.height;H=y.options.resize.call(y,u,v,q,w);C=document.createElement("canvas");I=C.getContext("2d");C.width=H.trgWidth;C.height=H.trgHeight;if(B>4){C.width=H.trgHeight;C.height=H.trgWidth}switch(B){case 2:I.translate(C.width,0);I.scale(-1,1);break;case 3:I.translate(C.width,C.height);I.rotate(Math.PI);break;case 4:I.translate(0,C.height);I.scale(1,-1);break;case 5:I.rotate(0.5*Math.PI);I.scale(1,-1);break;case 6:I.rotate(0.5*Math.PI);I.translate(0,-C.height);break;case 7:I.rotate(0.5*Math.PI);I.translate(C.width,-C.height);I.scale(-1,1);break;case 8:I.rotate(-0.5*Math.PI);I.translate(-C.width,0)}e(I,r,(D=H.srcX)!=null?D:0,(G=H.srcY)!=null?G:0,H.srcWidth,H.srcHeight,(F=H.trgX)!=null?F:0,(E=H.trgY)!=null?E:0,H.trgWidth,H.trgHeight);A=C.toDataURL("image/png");if(x!=null){return x(A,C)}})}})(this);if(x!=null){r.onerror=x}return r.src=u.dataURL};n.prototype.processQueue=function(){var r,t,q,s;t=this.options.parallelUploads;q=this.getUploadingFiles().length;r=q;if(q>=t){return}s=this.getQueuedFiles();if(!(s.length>0)){return}if(this.options.uploadMultiple){return this.processFiles(s.slice(0,t-q))}else{while(r<t){if(!s.length){return}this.processFile(s.shift());r++}}};n.prototype.processFile=function(q){return this.processFiles([q])};n.prototype.processFiles=function(t){var s,r,q;for(r=0,q=t.length;r<q;r++){s=t[r];s.processing=true;s.status=n.UPLOADING;this.emit("processing",s)}if(this.options.uploadMultiple){this.emit("processingmultiple",t)}return this.uploadFiles(t)};n.prototype._getFilesWithXhr=function(s){var q,r;return r=(function(){var u,t,w,v;w=this.files;v=[];for(u=0,t=w.length;u<t;u++){q=w[u];if(q.xhr===s){v.push(q)}}return v}).call(this)};n.prototype.cancelUpload=function(w){var r,v,u,s,q,t,x;if(w.status===n.UPLOADING){v=this._getFilesWithXhr(w.xhr);for(u=0,q=v.length;u<q;u++){r=v[u];r.status=n.CANCELED}w.xhr.abort();for(s=0,t=v.length;s<t;s++){r=v[s];this.emit("canceled",r)}if(this.options.uploadMultiple){this.emit("canceledmultiple",v)}}else{if((x=w.status)===n.ADDED||x===n.QUEUED){w.status=n.CANCELED;this.emit("canceled",w);if(this.options.uploadMultiple){this.emit("canceledmultiple",[w])}}}if(this.options.autoProcessQueue){return this.processQueue()}};m=function(){var q,r;r=arguments[0],q=2<=arguments.length?j.call(arguments,1):[];if(typeof r==="function"){return r.apply(this,q)}return r};n.prototype.uploadFile=function(q){return this.uploadFiles([q])};n.prototype.uploadFiles=function(L){var K,O,I,r,aa,M,v,R,Y,q,J,u,X,W,F,V,G,z,y,x,U,Z,S,N,T,P,E,D,C,B,A,s,H,w,t,Q,ab;ab=new XMLHttpRequest();for(X=0,G=L.length;X<G;X++){I=L[X];I.xhr=ab}Z=m(this.options.method,L);t=m(this.options.url,L);ab.open(Z,t,true);ab.timeout=m(this.options.timeout,L);ab.withCredentials=!!this.options.withCredentials;s=null;aa=(function(ac){return function(){var ad,ae,af;af=[];for(ad=0,ae=L.length;ad<ae;ad++){I=L[ad];af.push(ac._errorProcessing(L,s||ac.options.dictResponseError.replace("{{statusCode}}",ab.status),ab))}return af}})(this);w=(function(ac){return function(am){var ae,ai,ag,ak,aj,ah,af,ad,al;if(am!=null){ad=100*am.loaded/am.total;for(ai=0,ak=L.length;ai<ak;ai++){I=L[ai];I.upload.progress=ad;I.upload.total=am.total;I.upload.bytesSent=am.loaded}}else{ae=true;ad=100;for(ag=0,aj=L.length;ag<aj;ag++){I=L[ag];if(!(I.upload.progress===100&&I.upload.bytesSent===I.upload.total)){ae=false}I.upload.progress=ad;I.upload.bytesSent=I.upload.total}if(ae){return}}al=[];for(af=0,ah=L.length;af<ah;af++){I=L[af];al.push(ac.emit("uploadprogress",I,ad,I.upload.bytesSent))}return al}})(this);ab.onload=(function(ac){return function(ae){var af,ad;if(L[0].status===n.CANCELED){return}if(ab.readyState!==4){return}if(ab.responseType!=="arraybuffer"&&ab.responseType!=="blob"){s=ab.responseText;if(ab.getResponseHeader("content-type")&&~ab.getResponseHeader("content-type").indexOf("application/json")){try{s=JSON.parse(s)}catch(af){ae=af;s="Invalid JSON response from server."}}}w();if(!((200<=(ad=ab.status)&&ad<300))){return aa()}else{return ac._finished(L,s,ae)}}})(this);ab.onerror=(function(ac){return function(){if(L[0].status===n.CANCELED){return}return aa()}})(this);T=(P=ab.upload)!=null?P:ab;T.onprogress=w;R={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};if(this.options.headers){p(R,this.options.headers)}for(M in R){v=R[M];if(v){ab.setRequestHeader(M,v)}}r=new FormData();if(this.options.params){E=this.options.params;for(F in E){Q=E[F];r.append(F,Q)}}for(W=0,z=L.length;W<z;W++){I=L[W];this.emit("sending",I,ab,r)}if(this.options.uploadMultiple){this.emit("sendingmultiple",L,ab,r)}if(this.element.tagName==="FORM"){D=this.element.querySelectorAll("input, textarea, select, button");for(V=0,y=D.length;V<y;V++){q=D[V];J=q.getAttribute("name");u=q.getAttribute("type");if(q.tagName==="SELECT"&&q.hasAttribute("multiple")){C=q.options;for(U=0,x=C.length;U<x;U++){N=C[U];if(N.selected){r.append(J,N.value)}}}else{if(!u||((B=u.toLowerCase())!=="checkbox"&&B!=="radio")||q.checked){r.append(J,q.value)}}}}K=0;H=[];for(Y=S=0,A=L.length-1;0<=A?S<=A:S>=A;Y=0<=A?++S:--S){O=(function(ac){return function(ad,ae,af){return function(ag){r.append(ae,ag,af);if(++K===L.length){return ac.submitRequest(ab,r,L)}}}})(this);H.push(this.options.transformFile.call(this,L[Y],O(L[Y],this._getParamName(Y),L[Y].upload.filename)))}return H};n.prototype.submitRequest=function(s,r,q){return s.send(r)};n.prototype._finished=function(t,u,v){var s,r,q;for(r=0,q=t.length;r<q;r++){s=t[r];s.status=n.SUCCESS;this.emit("success",s,u,v);this.emit("complete",s)}if(this.options.uploadMultiple){this.emit("successmultiple",t,u,v);this.emit("completemultiple",t)}if(this.options.autoProcessQueue){return this.processQueue()}};n.prototype._errorProcessing=function(u,t,v){var s,r,q;for(r=0,q=u.length;r<q;r++){s=u[r];s.status=n.ERROR;this.emit("error",s,t,v);this.emit("complete",s)}if(this.options.uploadMultiple){this.emit("errormultiple",u,t,v);this.emit("completemultiple",u)}if(this.options.autoProcessQueue){return this.processQueue()}};return n})(i);g.version="5.1.1";g.options={};g.optionsForElement=function(m){if(m.getAttribute("id")){return g.options[c(m.getAttribute("id"))]}else{return void 0}};g.instances=[];g.forElement=function(m){if(typeof m==="string"){m=document.querySelector(m)}if((m!=null?m.dropzone:void 0)==null){throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.")}return m.dropzone};g.autoDiscover=true;g.discover=function(){var r,n,q,o,m,p;if(document.querySelectorAll){q=document.querySelectorAll(".dropzone")}else{q=[];r=function(w){var v,t,s,u;u=[];for(t=0,s=w.length;t<s;t++){v=w[t];if(/(^| )dropzone($| )/.test(v.className)){u.push(q.push(v))}else{u.push(void 0)}}return u};r(document.getElementsByTagName("div"));r(document.getElementsByTagName("form"))}p=[];for(o=0,m=q.length;o<m;o++){n=q[o];if(g.optionsForElement(n)!==false){p.push(new g(n))}else{p.push(void 0)}}return p};g.blacklistedBrowsers=[/opera.*(Windows Phone|Macintosh).*version\/12/i];g.isBrowserSupported=function(){var o,n,m,q,p;o=true;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector){if(!("classList" in document.createElement("a"))){o=false}else{q=g.blacklistedBrowsers;for(n=0,m=q.length;n<m;n++){p=q[n];if(p.test(navigator.userAgent)){o=false;continue}}}}else{o=false}return o};g.dataURItoBlob=function(n){var s,t,q,o,p,m,r;t=atob(n.split(",")[1]);m=n.split(",")[0].split(":")[1].split(";")[0];s=new ArrayBuffer(t.length);o=new Uint8Array(s);for(q=p=0,r=t.length;0<=r?p<=r:p>=r;q=0<=r?++p:--p){o[q]=t.charCodeAt(q)}return new Blob([s],{type:m})};k=function(r,n){var q,o,m,p;p=[];for(o=0,m=r.length;o<m;o++){q=r[o];if(q!==n){p.push(q)}}return p};c=function(m){return m.replace(/[\-_](\w)/g,function(n){return n.charAt(1).toUpperCase()})};g.createElement=function(m){var n;n=document.createElement("div");n.innerHTML=m;return n.childNodes[0]};g.elementInside=function(n,m){if(n===m){return true}while(n=n.parentNode){if(n===m){return true}}return false};g.getElement=function(o,m){var n;if(typeof o==="string"){n=document.querySelector(o)}else{if(o.nodeType!=null){n=o}}if(n==null){throw new Error("Invalid `"+m+"` option provided. Please provide a CSS selector or a plain HTML element.")}return n};g.getElements=function(s,n){var v,o,m,w,t,q,u,r,p;if(s instanceof Array){m=[];try{for(t=0,u=s.length;t<u;t++){o=s[t];m.push(this.getElement(o,n))}}catch(w){v=w;m=null}}else{if(typeof s==="string"){m=[];p=document.querySelectorAll(s);for(q=0,r=p.length;q<r;q++){o=p[q];m.push(o)}}else{if(s.nodeType!=null){m=[s]}}}if(!((m!=null)&&m.length)){throw new Error("Invalid `"+n+"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.")}return m};g.confirm=function(m,o,n){if(window.confirm(m)){return o()}else{if(n!=null){return n()}}};g.isValidFile=function(q,n){var o,p,m,s,r;if(!n){return true}n=n.split(",");s=q.type;o=s.replace(/\/.*$/,"");for(p=0,m=n.length;p<m;p++){r=n[p];r=r.trim();if(r.charAt(0)==="."){if(q.name.toLowerCase().indexOf(r.toLowerCase(),q.name.length-r.length)!==-1){return true}}else{if(/\/\*$/.test(r)){if(o===r.replace(/\/.*$/,"")){return true}}else{if(s===r){return true}}}}return false};if(typeof jQuery!=="undefined"&&jQuery!==null){jQuery.fn.dropzone=function(m){return this.each(function(){return new g(this,m)})}}if(typeof module!=="undefined"&&module!==null){module.exports=g}else{window.Dropzone=g}g.ADDED="added";g.QUEUED="queued";g.ACCEPTED=g.QUEUED;g.UPLOADING="uploading";g.PROCESSING=g.UPLOADING;g.CANCELED="canceled";g.ERROR="error";g.SUCCESS="success";b=function(q){var o,m,w,p,r,v,n,u,s,t;n=q.naturalWidth;v=q.naturalHeight;m=document.createElement("canvas");m.width=1;m.height=v;w=m.getContext("2d");w.drawImage(q,0,0);p=w.getImageData(1,0,1,v).data;t=0;r=v;u=v;while(u>t){o=p[(u-1)*4+3];if(o===0){r=u}else{t=u}u=(r+t)>>1}s=u/v;if(s===0){return 1}else{return s}};e=function(u,n,s,r,t,o,w,v,m,q){var p;p=b(n);return u.drawImage(n,s,r,t,o,w,v,m,q/p)};f=(function(){function m(){}m.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";m.encode64=function(p){var w,u,s,v,t,r,q,o,n;n="";w=void 0;u=void 0;s="";v=void 0;t=void 0;r=void 0;q="";o=0;while(true){w=p[o++];u=p[o++];s=p[o++];v=w>>2;t=(w&3)<<4|u>>4;r=(u&15)<<2|s>>6;q=s&63;if(isNaN(u)){r=q=64}else{if(isNaN(s)){q=64}}n=n+this.KEY_STR.charAt(v)+this.KEY_STR.charAt(t)+this.KEY_STR.charAt(r)+this.KEY_STR.charAt(q);w=u=s="";v=t=r=q="";if(!(o<p.length)){break}}return n};m.restore=function(n,r){var q,p,o;if(!n.match("data:image/jpeg;base64,")){return r}p=this.decode64(n.replace("data:image/jpeg;base64,",""));o=this.slice2Segments(p);q=this.exifManipulation(r,o);return"data:image/jpeg;base64,"+this.encode64(q)};m.exifManipulation=function(r,p){var q,n,o;n=this.getExifArray(p);o=this.insertExif(r,n);q=new Uint8Array(o);return q};m.getExifArray=function(p){var o,n;o=void 0;n=0;while(n<p.length){o=p[n];if(o[0]===255&o[1]===225){return o}n++}return[]};m.insertExif=function(o,v){var u,w,q,n,t,r;n=o.replace("data:image/jpeg;base64,","");q=this.decode64(n);for(var s=0;s<q.length;s++){if(q[s]===255&&q[s+1]===225){var p=q[s+2]*256+q[s+3]+2;q.splice(s,p)}}r=q.indexOf(255,3);t=q.slice(0,r);w=q.slice(r);u=t;u=u.concat(v);u=u.concat(w);return u};m.slice2Segments=function(o){var r,q,s,n,p;q=0;p=[];while(true){if(o[q]===255&o[q+1]===218){break}if(o[q]===255&o[q+1]===216){q+=2}else{s=o[q+2]*256+o[q+3];r=q+s+2;n=o.slice(q,r);p.push(n);q=r}if(q>o.length){break}}return p};m.decode64=function(r){var n,o,y,w,u,x,v,t,s,q,p;p="";y=void 0;w=void 0;u="";x=void 0;v=void 0;t=void 0;s="";q=0;o=[];n=/[^A-Za-z0-9\+\/\=]/g;if(n.exec(r)){console.warning("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding.")}r=r.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(true){x=this.KEY_STR.indexOf(r.charAt(q++));v=this.KEY_STR.indexOf(r.charAt(q++));t=this.KEY_STR.indexOf(r.charAt(q++));s=this.KEY_STR.indexOf(r.charAt(q++));y=x<<2|v>>4;w=(v&15)<<4|t>>2;u=(t&3)<<6|s;o.push(y);if(t!==64){o.push(w)}if(s!==64){o.push(u)}y=w=u="";x=v=t=s="";if(!(q<r.length)){break}}return o};return m})();d=function(p,t){var x,u,o,w,q,n,v,s,r;o=false;r=true;u=p.document;s=u.documentElement;x=(u.addEventListener?"addEventListener":"attachEvent");v=(u.addEventListener?"removeEventListener":"detachEvent");n=(u.addEventListener?"":"on");w=function(y){if(y.type==="readystatechange"&&u.readyState!=="complete"){return}(y.type==="load"?p:u)[v](n+y.type,w,false);if(!o&&(o=true)){return t.call(p,y.type||y)}};q=function(){var y,z;try{s.doScroll("left")}catch(z){y=z;setTimeout(q,50);return}return w("poll")};if(u.readyState!=="complete"){if(u.createEventObject&&s.doScroll){try{r=!p.frameElement}catch(m){}if(r){q()}}u[x](n+"DOMContentLoaded",w,false);u[x](n+"readystatechange",w,false);return p[x](n+"load",w,false)}};g._autoDiscoverFunction=function(){if(g.autoDiscover){return g.discover()}};d(window,g._autoDiscoverFunction)}).call(this); \ No newline at end of file
diff --git a/web/js/fancybox/blank.gif b/web/vendor/fancybox/blank.gif
index 35d42e808..35d42e808 100644
--- a/web/js/fancybox/blank.gif
+++ b/web/vendor/fancybox/blank.gif
Binary files differ
diff --git a/web/js/fancybox/fancy_close.png b/web/vendor/fancybox/fancy_close.png
index 07035307a..07035307a 100644
--- a/web/js/fancybox/fancy_close.png
+++ b/web/vendor/fancybox/fancy_close.png
Binary files differ
diff --git a/web/js/fancybox/fancy_loading.png b/web/vendor/fancybox/fancy_loading.png
index 250301796..250301796 100644
--- a/web/js/fancybox/fancy_loading.png
+++ b/web/vendor/fancybox/fancy_loading.png
Binary files differ
diff --git a/web/js/fancybox/fancy_nav_left.png b/web/vendor/fancybox/fancy_nav_left.png
index ebaa6a4fd..ebaa6a4fd 100644
--- a/web/js/fancybox/fancy_nav_left.png
+++ b/web/vendor/fancybox/fancy_nav_left.png
Binary files differ
diff --git a/web/js/fancybox/fancy_nav_right.png b/web/vendor/fancybox/fancy_nav_right.png
index 873294e96..873294e96 100644
--- a/web/js/fancybox/fancy_nav_right.png
+++ b/web/vendor/fancybox/fancy_nav_right.png
Binary files differ
diff --git a/web/js/fancybox/fancy_shadow_e.png b/web/vendor/fancybox/fancy_shadow_e.png
index 2eda08936..2eda08936 100644
--- a/web/js/fancybox/fancy_shadow_e.png
+++ b/web/vendor/fancybox/fancy_shadow_e.png
Binary files differ
diff --git a/web/js/fancybox/fancy_shadow_n.png b/web/vendor/fancybox/fancy_shadow_n.png
index 69aa10e23..69aa10e23 100644
--- a/web/js/fancybox/fancy_shadow_n.png
+++ b/web/vendor/fancybox/fancy_shadow_n.png
Binary files differ
diff --git a/web/js/fancybox/fancy_shadow_ne.png b/web/vendor/fancybox/fancy_shadow_ne.png
index 79f6980a3..79f6980a3 100644
--- a/web/js/fancybox/fancy_shadow_ne.png
+++ b/web/vendor/fancybox/fancy_shadow_ne.png
Binary files differ
diff --git a/web/js/fancybox/fancy_shadow_nw.png b/web/vendor/fancybox/fancy_shadow_nw.png
index 7182cd938..7182cd938 100644
--- a/web/js/fancybox/fancy_shadow_nw.png
+++ b/web/vendor/fancybox/fancy_shadow_nw.png
Binary files differ
diff --git a/web/js/fancybox/fancy_shadow_s.png b/web/vendor/fancybox/fancy_shadow_s.png
index d8858bfb7..d8858bfb7 100644
--- a/web/js/fancybox/fancy_shadow_s.png
+++ b/web/vendor/fancybox/fancy_shadow_s.png
Binary files differ
diff --git a/web/js/fancybox/fancy_shadow_se.png b/web/vendor/fancybox/fancy_shadow_se.png
index 541e3ffd3..541e3ffd3 100644
--- a/web/js/fancybox/fancy_shadow_se.png
+++ b/web/vendor/fancybox/fancy_shadow_se.png
Binary files differ
diff --git a/web/js/fancybox/fancy_shadow_sw.png b/web/vendor/fancybox/fancy_shadow_sw.png
index b451689fa..b451689fa 100644
--- a/web/js/fancybox/fancy_shadow_sw.png
+++ b/web/vendor/fancybox/fancy_shadow_sw.png
Binary files differ
diff --git a/web/js/fancybox/fancy_shadow_w.png b/web/vendor/fancybox/fancy_shadow_w.png
index 8a4e4a887..8a4e4a887 100644
--- a/web/js/fancybox/fancy_shadow_w.png
+++ b/web/vendor/fancybox/fancy_shadow_w.png
Binary files differ
diff --git a/web/js/fancybox/fancy_title_left.png b/web/vendor/fancybox/fancy_title_left.png
index 6049223d1..6049223d1 100644
--- a/web/js/fancybox/fancy_title_left.png
+++ b/web/vendor/fancybox/fancy_title_left.png
Binary files differ
diff --git a/web/js/fancybox/fancy_title_main.png b/web/vendor/fancybox/fancy_title_main.png
index 8044271f2..8044271f2 100644
--- a/web/js/fancybox/fancy_title_main.png
+++ b/web/vendor/fancybox/fancy_title_main.png
Binary files differ
diff --git a/web/js/fancybox/fancy_title_over.png b/web/vendor/fancybox/fancy_title_over.png
index d9f458f4b..d9f458f4b 100644
--- a/web/js/fancybox/fancy_title_over.png
+++ b/web/vendor/fancybox/fancy_title_over.png
Binary files differ
diff --git a/web/js/fancybox/fancy_title_right.png b/web/vendor/fancybox/fancy_title_right.png
index e36d9db2a..e36d9db2a 100644
--- a/web/js/fancybox/fancy_title_right.png
+++ b/web/vendor/fancybox/fancy_title_right.png
Binary files differ
diff --git a/web/js/fancybox/fancybox-x.png b/web/vendor/fancybox/fancybox-x.png
index c2130f869..c2130f869 100644
--- a/web/js/fancybox/fancybox-x.png
+++ b/web/vendor/fancybox/fancybox-x.png
Binary files differ
diff --git a/web/js/fancybox/fancybox-y.png b/web/vendor/fancybox/fancybox-y.png
index 7ef399b99..7ef399b99 100644
--- a/web/js/fancybox/fancybox-y.png
+++ b/web/vendor/fancybox/fancybox-y.png
Binary files differ
diff --git a/web/js/fancybox/fancybox.png b/web/vendor/fancybox/fancybox.png
index 65e14f68f..65e14f68f 100644
--- a/web/js/fancybox/fancybox.png
+++ b/web/vendor/fancybox/fancybox.png
Binary files differ
diff --git a/web/js/fancybox/jquery.easing-1.3.pack.js b/web/vendor/fancybox/jquery.easing-1.3.pack.js
index 9028179e7..9028179e7 100644
--- a/web/js/fancybox/jquery.easing-1.3.pack.js
+++ b/web/vendor/fancybox/jquery.easing-1.3.pack.js
diff --git a/web/js/fancybox/jquery.fancybox-1.3.4.css b/web/vendor/fancybox/jquery.fancybox-1.3.4.css
index 54c6f2479..54c6f2479 100644
--- a/web/js/fancybox/jquery.fancybox-1.3.4.css
+++ b/web/vendor/fancybox/jquery.fancybox-1.3.4.css
diff --git a/web/js/fancybox/jquery.fancybox-1.3.4.js b/web/vendor/fancybox/jquery.fancybox-1.3.4.js
index 728aa6a51..728aa6a51 100644
--- a/web/js/fancybox/jquery.fancybox-1.3.4.js
+++ b/web/vendor/fancybox/jquery.fancybox-1.3.4.js
diff --git a/web/js/fancybox/jquery.fancybox-1.3.4.pack.js b/web/vendor/fancybox/jquery.fancybox-1.3.4.pack.js
index d5bd61fe9..d5bd61fe9 100644
--- a/web/js/fancybox/jquery.fancybox-1.3.4.pack.js
+++ b/web/vendor/fancybox/jquery.fancybox-1.3.4.pack.js
diff --git a/web/js/fancybox/jquery.mousewheel-3.0.4.pack.js b/web/vendor/fancybox/jquery.mousewheel-3.0.4.pack.js
index cb66588e2..cb66588e2 100644
--- a/web/js/fancybox/jquery.mousewheel-3.0.4.pack.js
+++ b/web/vendor/fancybox/jquery.mousewheel-3.0.4.pack.js
diff --git a/web/js/geo.min.js b/web/vendor/geo.min.js
index 4f44b30ca..4f44b30ca 100644
--- a/web/js/geo.min.js
+++ b/web/vendor/geo.min.js
diff --git a/web/js/history.polyfill.min.js b/web/vendor/history.polyfill.min.js
index f773e6bef..f773e6bef 100644
--- a/web/js/history.polyfill.min.js
+++ b/web/vendor/history.polyfill.min.js
diff --git a/web/js/html5shiv.js b/web/vendor/html5shiv.js
index 21c062e98..21c062e98 100644
--- a/web/js/html5shiv.js
+++ b/web/vendor/html5shiv.js
diff --git a/web/js/jquery-ui/css/smoothness/images/animated-overlay.gif b/web/vendor/jquery-ui/css/smoothness/images/animated-overlay.gif
index d441f75eb..d441f75eb 100755
--- a/web/js/jquery-ui/css/smoothness/images/animated-overlay.gif
+++ b/web/vendor/jquery-ui/css/smoothness/images/animated-overlay.gif
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
index c09235f60..c09235f60 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
index d29011d2a..d29011d2a 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
index 1558bea51..1558bea51 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
index 0359b121f..0359b121f 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
index 4fce6c462..4fce6c462 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
index 5299b5a0b..5299b5a0b 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
index 398c56a9c..398c56a9c 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
index d819aa58a..d819aa58a 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
index c1cb1170c..c1cb1170c 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
index 84b601bf0..84b601bf0 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
index b6db1acdd..b6db1acdd 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
index feea0e202..feea0e202 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
index ed5b6b093..ed5b6b093 100755
--- a/web/js/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
+++ b/web/vendor/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css b/web/vendor/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css
index 604cd558d..604cd558d 100755
--- a/web/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css
+++ b/web/vendor/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css
diff --git a/web/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js b/web/vendor/jquery-ui/js/jquery-ui-1.10.3.custom.min.js
index 774c48050..774c48050 100755
--- a/web/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js
+++ b/web/vendor/jquery-ui/js/jquery-ui-1.10.3.custom.min.js
diff --git a/web/js/jquery.validate.js b/web/vendor/jquery.validate.js
index b7ed45b4a..b7ed45b4a 100644
--- a/web/js/jquery.validate.js
+++ b/web/vendor/jquery.validate.js
diff --git a/web/js/jquery.validate.min.js b/web/vendor/jquery.validate.min.js
index edd645255..edd645255 100644
--- a/web/js/jquery.validate.min.js
+++ b/web/vendor/jquery.validate.min.js
diff --git a/web/js/modernizr.custom.js b/web/vendor/modernizr.custom.js
index c3a4408ee..c3a4408ee 100644
--- a/web/js/modernizr.custom.js
+++ b/web/vendor/modernizr.custom.js
diff --git a/web/js/yepnope.js b/web/vendor/yepnope.js
index d48d17427..d48d17427 100644
--- a/web/js/yepnope.js
+++ b/web/vendor/yepnope.js