aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md15
-rw-r--r--cgeo-calendar/res/values-it/strings.xml12
-rw-r--r--main/.classpath1
-rw-r--r--main/.settings/org.eclipse.jdt.core.prefs24
-rw-r--r--main/AndroidManifest.xml46
-rw-r--r--main/compile-libs/org.eclipse.jdt.annotation_1.1.0.v20130513-1648.jarbin0 -> 14613 bytes
-rw-r--r--main/libs/commons-collections-3.2.1.jarbin575389 -> 0 bytes
-rw-r--r--main/libs/commons-collections4-4.0-alpha1.jarbin0 -> 607450 bytes
-rw-r--r--main/libs/commons-io-2.4.jarbin0 -> 185140 bytes
-rw-r--r--main/libs/commons-lang3-3.1.jar.properties1
-rw-r--r--main/libs/src/commons-collections-3.2.1-src.zipbin0 -> 1237027 bytes
-rw-r--r--main/libs/src/commons-lang3-3.1-src.zipbin0 -> 880646 bytes
-rw-r--r--main/proguard-project.txt3
-rwxr-xr-xmain/project/localization/findmissingtranslations.sh2
-rw-r--r--main/project/localization/funcs.sh2
-rw-r--r--main/res/layout/authorization_activity.xml24
-rw-r--r--main/res/layout/cachedetail_details_page.xml2
-rw-r--r--main/res/layout/logs_item.xml2
-rw-r--r--main/res/values-cs/strings.xml10
-rw-r--r--main/res/values-da/strings.xml9
-rw-r--r--main/res/values-de/strings.xml26
-rw-r--r--main/res/values-es/strings.xml9
-rw-r--r--main/res/values-fr/strings.xml42
-rw-r--r--main/res/values-hu/strings.xml10
-rw-r--r--main/res/values-it/strings.xml2189
-rw-r--r--main/res/values-ja/strings.xml24
-rw-r--r--main/res/values-nb/strings.xml9
-rw-r--r--main/res/values-nl/strings.xml10
-rw-r--r--main/res/values-pl/strings.xml21
-rw-r--r--main/res/values-pt/strings.xml42
-rw-r--r--main/res/values-sk/strings.xml10
-rw-r--r--main/res/values-sl/strings.xml28
-rw-r--r--main/res/values-sv/strings.xml31
-rw-r--r--main/res/values/changelog_master.xml10
-rw-r--r--main/res/values/preference_keys.xml6
-rw-r--r--main/res/values/strings.xml42
-rw-r--r--main/res/xml/preferences.xml821
-rw-r--r--main/src/cgeo/geocaching/AboutActivity.java2
-rw-r--r--main/src/cgeo/geocaching/AbstractPopupActivity.java33
-rw-r--r--main/src/cgeo/geocaching/AddressListActivity.java4
-rw-r--r--main/src/cgeo/geocaching/CacheCache.java2
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java41
-rw-r--r--main/src/cgeo/geocaching/CacheListActivity.java (renamed from main/src/cgeo/geocaching/cgeocaches.java)147
-rw-r--r--main/src/cgeo/geocaching/CachePopup.java1
-rw-r--r--main/src/cgeo/geocaching/CgeoApplication.java (renamed from main/src/cgeo/geocaching/cgeoapplication.java)45
-rw-r--r--main/src/cgeo/geocaching/CompassActivity.java4
-rw-r--r--main/src/cgeo/geocaching/DataStore.java (renamed from main/src/cgeo/geocaching/cgData.java)99
-rw-r--r--main/src/cgeo/geocaching/EditWaypointActivity.java18
-rw-r--r--main/src/cgeo/geocaching/Geocache.java101
-rw-r--r--main/src/cgeo/geocaching/GpxFileListActivity.java1
-rw-r--r--main/src/cgeo/geocaching/ImageSelectActivity.java5
-rw-r--r--main/src/cgeo/geocaching/ImagesActivity.java4
-rw-r--r--main/src/cgeo/geocaching/LogCacheActivity.java48
-rw-r--r--main/src/cgeo/geocaching/LogEntry.java9
-rw-r--r--main/src/cgeo/geocaching/LogTrackableActivity.java4
-rw-r--r--main/src/cgeo/geocaching/MainActivity.java30
-rw-r--r--main/src/cgeo/geocaching/NavigateAnyPointActivity.java14
-rw-r--r--main/src/cgeo/geocaching/SearchActivity.java16
-rw-r--r--main/src/cgeo/geocaching/SearchResult.java12
-rw-r--r--main/src/cgeo/geocaching/StaticMapsActivity.java6
-rw-r--r--main/src/cgeo/geocaching/StaticMapsProvider.java33
-rw-r--r--main/src/cgeo/geocaching/StatusFragment.java4
-rw-r--r--main/src/cgeo/geocaching/TrackableActivity.java2
-rw-r--r--main/src/cgeo/geocaching/UsefulAppsActivity.java2
-rw-r--r--main/src/cgeo/geocaching/Waypoint.java5
-rw-r--r--main/src/cgeo/geocaching/WaypointPopup.java2
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java6
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractListActivity.java9
-rw-r--r--main/src/cgeo/geocaching/apps/AbstractApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/AbstractLocusApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java16
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java15
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/AbstractLocusCacheListApp.java (renamed from main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java)8
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java14
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/LocusExportCacheListApp.java9
-rw-r--r--main/src/cgeo/geocaching/apps/cachelist/LocusShowCacheListApp.java9
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel13.java4
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel13Emulation.java4
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/IConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java37
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConstants.java1
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCLoggingManager.java9
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCMap.java16
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java78
-rw-r--r--main/src/cgeo/geocaching/connector/gc/Login.java29
-rw-r--r--main/src/cgeo/geocaching/connector/gc/SearchHandler.java2
-rw-r--r--main/src/cgeo/geocaching/connector/gc/UTFGridPosition.java9
-rw-r--r--main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java29
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java18
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java75
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java7
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java2
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java7
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java2
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiClient.java10
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java5
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java4
-rw-r--r--main/src/cgeo/geocaching/connector/trackable/GeokretyParser.java12
-rw-r--r--main/src/cgeo/geocaching/enumerations/CacheAttribute.java4
-rw-r--r--main/src/cgeo/geocaching/enumerations/CacheListType.java27
-rw-r--r--main/src/cgeo/geocaching/enumerations/CacheSize.java4
-rw-r--r--main/src/cgeo/geocaching/enumerations/CacheType.java6
-rw-r--r--main/src/cgeo/geocaching/enumerations/LiveMapStrategy.java4
-rw-r--r--main/src/cgeo/geocaching/enumerations/LogType.java4
-rw-r--r--main/src/cgeo/geocaching/enumerations/WaypointType.java4
-rw-r--r--main/src/cgeo/geocaching/export/AbstractExport.java6
-rw-r--r--main/src/cgeo/geocaching/export/FieldnoteExport.java6
-rw-r--r--main/src/cgeo/geocaching/export/GpxExport.java6
-rw-r--r--main/src/cgeo/geocaching/export/GpxSerializer.java4
-rw-r--r--main/src/cgeo/geocaching/files/AbstractFileListActivity.java4
-rw-r--r--main/src/cgeo/geocaching/files/FileParser.java5
-rw-r--r--main/src/cgeo/geocaching/files/GPXImporter.java31
-rw-r--r--main/src/cgeo/geocaching/files/GPXParser.java27
-rw-r--r--main/src/cgeo/geocaching/files/LocParser.java4
-rw-r--r--main/src/cgeo/geocaching/files/LocalStorage.java31
-rw-r--r--main/src/cgeo/geocaching/files/SimpleDirChooser.java5
-rw-r--r--main/src/cgeo/geocaching/filter/AbstractRangeFilter.java4
-rw-r--r--main/src/cgeo/geocaching/filter/AttributeFilter.java10
-rw-r--r--main/src/cgeo/geocaching/filter/DistanceFilter.java10
-rw-r--r--main/src/cgeo/geocaching/filter/FilterUserInterface.java4
-rw-r--r--main/src/cgeo/geocaching/filter/ModifiedFilter.java4
-rw-r--r--main/src/cgeo/geocaching/filter/StateFilter.java4
-rw-r--r--main/src/cgeo/geocaching/filter/TrackablesFilter.java4
-rw-r--r--main/src/cgeo/geocaching/gcvote/GCVote.java132
-rw-r--r--main/src/cgeo/geocaching/gcvote/GCVoteRating.java2
-rw-r--r--main/src/cgeo/geocaching/list/AbstractList.java28
-rw-r--r--main/src/cgeo/geocaching/list/PseudoList.java37
-rw-r--r--main/src/cgeo/geocaching/list/StoredList.java (renamed from main/src/cgeo/geocaching/StoredList.java)89
-rw-r--r--main/src/cgeo/geocaching/loaders/HistoryGeocacheListLoader.java4
-rw-r--r--main/src/cgeo/geocaching/loaders/OfflineGeocacheListLoader.java4
-rw-r--r--main/src/cgeo/geocaching/loaders/RemoveFromHistoryLoader.java6
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java48
-rw-r--r--main/src/cgeo/geocaching/maps/CachesOverlay.java32
-rw-r--r--main/src/cgeo/geocaching/maps/MapProviderFactory.java4
-rw-r--r--main/src/cgeo/geocaching/maps/PositionHistory.java2
-rw-r--r--main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java4
-rw-r--r--main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java6
-rw-r--r--main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java5
-rw-r--r--main/src/cgeo/geocaching/network/HtmlImage.java10
-rw-r--r--main/src/cgeo/geocaching/network/Network.java94
-rw-r--r--main/src/cgeo/geocaching/network/OAuth.java6
-rw-r--r--main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java249
-rw-r--r--main/src/cgeo/geocaching/network/Parameters.java9
-rw-r--r--main/src/cgeo/geocaching/network/StatusUpdater.java6
-rw-r--r--main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java46
-rw-r--r--main/src/cgeo/geocaching/settings/OAuthPreference.java (renamed from main/src/cgeo/geocaching/settings/AuthorizeOcPreference.java)46
-rw-r--r--main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java2
-rw-r--r--main/src/cgeo/geocaching/settings/Settings.java48
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java42
-rw-r--r--main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java4
-rw-r--r--main/src/cgeo/geocaching/sorting/DateComparator.java4
-rw-r--r--main/src/cgeo/geocaching/sorting/FindsComparator.java4
-rw-r--r--main/src/cgeo/geocaching/speech/SpeechService.java4
-rw-r--r--main/src/cgeo/geocaching/speech/TextFactory.java13
-rw-r--r--main/src/cgeo/geocaching/twitter/Twitter.java14
-rw-r--r--main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java78
-rw-r--r--main/src/cgeo/geocaching/ui/AbstractUIFactory.java4
-rw-r--r--main/src/cgeo/geocaching/ui/AbstractUserClickListener.java6
-rw-r--r--main/src/cgeo/geocaching/ui/AddressListAdapter.java8
-rw-r--r--main/src/cgeo/geocaching/ui/CacheDetailsCreator.java18
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java6
-rw-r--r--main/src/cgeo/geocaching/ui/DecryptTextClickListener.java26
-rw-r--r--main/src/cgeo/geocaching/ui/DirectionImage.java2
-rw-r--r--main/src/cgeo/geocaching/ui/Formatter.java14
-rw-r--r--main/src/cgeo/geocaching/ui/ImagesList.java4
-rw-r--r--main/src/cgeo/geocaching/ui/LoggingUI.java13
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/CustomProgressDialog.java7
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java4
-rw-r--r--main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java4
-rw-r--r--main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java4
-rw-r--r--main/src/cgeo/geocaching/utils/ApplicationSettings.java2
-rw-r--r--main/src/cgeo/geocaching/utils/CancellableHandler.java4
-rw-r--r--main/src/cgeo/geocaching/utils/ClipboardUtils.java4
-rw-r--r--main/src/cgeo/geocaching/utils/CryptUtils.java40
-rw-r--r--main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java45
-rw-r--r--main/src/cgeo/geocaching/utils/GeoDirHandler.java4
-rw-r--r--main/src/cgeo/geocaching/utils/IOUtils.java22
-rw-r--r--main/src/cgeo/geocaching/utils/ImageUtils.java15
-rw-r--r--main/src/cgeo/geocaching/utils/Log.java8
-rw-r--r--main/src/cgeo/geocaching/utils/ProcessUtils.java10
-rw-r--r--main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java1
-rw-r--r--main/src/cgeo/geocaching/utils/SimpleHandler.java37
-rw-r--r--main/src/cgeo/geocaching/utils/TextUtils.java6
-rw-r--r--main/src/cgeo/geocaching/utils/TranslationUtils.java22
-rw-r--r--main/src/cgeo/geocaching/utils/UncertainProperty.java5
-rw-r--r--send2cgeo/firefox-addon/send2cgeo/data/LICENSE202
-rw-r--r--send2cgeo/firefox-addon/send2cgeo/data/NOTICE10
-rw-r--r--send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.48.pngbin0 -> 4077 bytes
-rw-r--r--send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.64.pngbin0 -> 5970 bytes
l---------send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.user.js1
-rw-r--r--send2cgeo/firefox-addon/send2cgeo/lib/main.js8
-rw-r--r--send2cgeo/firefox-addon/send2cgeo/package.json17
-rw-r--r--tests/AndroidManifest.xml8
-rw-r--r--tests/res/layout/cgeo_tests_activity.xml54
-rw-r--r--tests/res/raw/gc366bq.html2697
-rw-r--r--tests/res/raw/gc430fm_published.html2828
-rw-r--r--tests/res/raw/gc431f2_published.html2825
-rw-r--r--tests/res/raw/gc433yc_owner_unpublished.html2188
-rw-r--r--tests/res/values/strings.xml2
-rw-r--r--tests/src/cgeo/CGeoTestCase.java70
-rw-r--r--tests/src/cgeo/geocaching/DataStoreTest.java (renamed from tests/src/cgeo/geocaching/cgDataTest.java)91
-rw-r--r--tests/src/cgeo/geocaching/GeocacheTest.java53
-rw-r--r--tests/src/cgeo/geocaching/PersonalNoteTest.java2
-rw-r--r--tests/src/cgeo/geocaching/StoredListTest.java18
-rw-r--r--tests/src/cgeo/geocaching/activity/ProgressTest.java10
-rw-r--r--tests/src/cgeo/geocaching/cgeoApplicationTest.java178
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/GCBaseTest.java13
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/GCParserTest.java11
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/UTFGridPositionTest.java34
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/WaypointsTest.java4
-rw-r--r--tests/src/cgeo/geocaching/connector/oc/OCConnectorTest.java25
-rw-r--r--tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java8
-rw-r--r--tests/src/cgeo/geocaching/connector/trackable/GeokretyParserTest.java4
-rw-r--r--tests/src/cgeo/geocaching/export/ExportTest.java6
-rw-r--r--tests/src/cgeo/geocaching/export/GpxSerializerTest.java45
-rw-r--r--tests/src/cgeo/geocaching/files/GPXImporterTest.java26
-rw-r--r--tests/src/cgeo/geocaching/files/GPXParserTest.java11
-rw-r--r--tests/src/cgeo/geocaching/list/PseudoListTest.java18
-rw-r--r--tests/src/cgeo/geocaching/list/StoredListTest.java31
-rw-r--r--tests/src/cgeo/geocaching/speech/TextFactoryTest.java6
-rw-r--r--tests/src/cgeo/geocaching/test/AbstractResourceInstrumentationTestCase.java14
-rw-r--r--tests/src/cgeo/geocaching/test/BottomAwareScrollView.java36
-rw-r--r--tests/src/cgeo/geocaching/test/CgeoTestsActivity.java147
-rw-r--r--tests/src/cgeo/geocaching/ui/FormatterTest.java4
-rw-r--r--tests/src/cgeo/geocaching/utils/CryptUtilsTest.java12
-rw-r--r--tests/src/cgeo/geocaching/utils/UncertainPropertyTest.java19
-rw-r--r--tests/src/cgeo/geocaching/utils/XmlUtilsTest.java48
232 files changed, 7920 insertions, 10168 deletions
diff --git a/README.md b/README.md
index 0d79262..37e40ca 100644
--- a/README.md
+++ b/README.md
@@ -49,13 +49,14 @@ If the workspace directory name contains a space and leads to errors in the -dex
1. copy `./main/templates/private.properties` to `./main/`
2. edit `private.properties` (see comments in the file)
3. copy `./main/templates/local.properties` to `./main/`
-3. copy `./main/templates/local.properties` to `./tests/`
-4. edit `local.properties` (see comments in the file)
-5. copy `./main/templates/mapsapikey.xml` to `./main/res/values/`
-6. edit `./main/res/values/mapsapikey.xml` and insert your Maps API key (see comments in the file)
-7. copy `./main/templates/ocde_okapi.xml` to `./main/res/values/`
-8. request your personal ConsumerKey and -Secret at [opencaching.de OKAPI signup](http://www.opencaching.de/okapi/signup.html)
-9. edit `./main/res/values/ocde_okapi.xml` and insert your keys there.
+4. copy `./main/templates/local.properties` to `./tests/`
+5. edit `local.properties` (see comments in the file)
+6. copy `./main/templates/mapsapikey.xml` to `./main/res/values/`
+7. edit `./main/res/values/mapsapikey.xml` and insert your Maps API key (see comments in the file)
+8. copy `./main/templates/ocde_okapi.xml` to `./main/res/values/`
+9. request your personal ConsumerKey and -Secret at [opencaching.de OKAPI signup](http://www.opencaching.de/okapi/signup.html)
+10. edit `./main/res/values/ocde_okapi.xml` and insert your keys there.
+11. Repeat steps 8-10 with `ocpl_okapi.xml` and [opencaching.pl OKAPI signup](http://www.opencaching.pl/okapi/signup.html)
### Building with Ant ###
diff --git a/cgeo-calendar/res/values-it/strings.xml b/cgeo-calendar/res/values-it/strings.xml
index dfea587..8fa5391 100644
--- a/cgeo-calendar/res/values-it/strings.xml
+++ b/cgeo-calendar/res/values-it/strings.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.net-->
<resources>
-
- <string name="calendars">Calendari</string>
- <string name="event_success">Evento aggiunto al calendario</string>
- <string name="event_fail">Aggiunta evento fallita</string>
-
-</resources> \ No newline at end of file
+ <string name="app_name">c:geo - calendario (add-on)</string>
+ <string name="calendars">Calendari</string>
+ <string name="event_success">Evento aggiunto al calendario</string>
+ <string name="event_fail">Aggiunta evento fallita</string>
+</resources>
diff --git a/main/.classpath b/main/.classpath
index 72adb52..d7bb252 100644
--- a/main/.classpath
+++ b/main/.classpath
@@ -19,5 +19,6 @@
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+ <classpathentry kind="lib" path="compile-libs/org.eclipse.jdt.annotation_1.1.0.v20130513-1648.jar"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
diff --git a/main/.settings/org.eclipse.jdt.core.prefs b/main/.settings/org.eclipse.jdt.core.prefs
index 41c73f0..3e9e8a8 100644
--- a/main/.settings/org.eclipse.jdt.core.prefs
+++ b/main/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,10 @@
eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
@@ -18,6 +24,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
@@ -25,7 +32,7 @@ org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
@@ -36,7 +43,9 @@ org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
@@ -53,12 +62,18 @@ org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warni
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
@@ -68,10 +83,12 @@ org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
@@ -90,6 +107,7 @@ org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.processAnnotations=enabled
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index 2d01358..5a204e9 100644
--- a/main/AndroidManifest.xml
+++ b/main/AndroidManifest.xml
@@ -30,7 +30,7 @@
android:xlargeScreens="true" />
<application
- android:name=".cgeoapplication"
+ android:name=".CgeoApplication"
android:allowBackup="true"
android:backupAgent="cgeo.geocaching.backup.CentralBackupAgent"
android:icon="@drawable/cgeo"
@@ -111,7 +111,19 @@
android:name=".twitter.TwitterAuthorizationActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/auth_twitter"
- android:windowSoftInputMode="stateHidden" >
+ android:windowSoftInputMode="stateHidden"
+ android:launchMode="singleTask" >
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.BROWSABLE" />
+
+ <data
+ android:host="www.cgeo.org"
+ android:pathPrefix="/twitter/"
+ android:scheme="callback" />
+ </intent-filter>
</activity>
<activity
android:name=".EditWaypointActivity_"
@@ -137,7 +149,7 @@
android:configChanges="keyboardHidden|orientation" >
</activity>
<activity
- android:name=".cgeocaches"
+ android:name=".CacheListActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name" >
@@ -375,13 +387,37 @@
android:name=".connector.oc.OCDEAuthorizationActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
- android:windowSoftInputMode="stateHidden" >
+ android:windowSoftInputMode="stateHidden"
+ android:launchMode="singleTask">
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.BROWSABLE" />
+
+ <data
+ android:host="www.cgeo.org"
+ android:pathPrefix="/opencaching.de/"
+ android:scheme="callback" />
+ </intent-filter>
</activity>
<activity
android:name=".connector.oc.OCPLAuthorizationActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
- android:windowSoftInputMode="stateHidden" >
+ android:windowSoftInputMode="stateHidden"
+ android:launchMode="singleTask">
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.BROWSABLE" />
+
+ <data
+ android:host="www.cgeo.org"
+ android:pathPrefix="/opencaching.pl/"
+ android:scheme="callback" />
+ </intent-filter>
</activity>
</application>
</manifest>
diff --git a/main/compile-libs/org.eclipse.jdt.annotation_1.1.0.v20130513-1648.jar b/main/compile-libs/org.eclipse.jdt.annotation_1.1.0.v20130513-1648.jar
new file mode 100644
index 0000000..daca164
--- /dev/null
+++ b/main/compile-libs/org.eclipse.jdt.annotation_1.1.0.v20130513-1648.jar
Binary files differ
diff --git a/main/libs/commons-collections-3.2.1.jar b/main/libs/commons-collections-3.2.1.jar
deleted file mode 100644
index c35fa1f..0000000
--- a/main/libs/commons-collections-3.2.1.jar
+++ /dev/null
Binary files differ
diff --git a/main/libs/commons-collections4-4.0-alpha1.jar b/main/libs/commons-collections4-4.0-alpha1.jar
new file mode 100644
index 0000000..580a405
--- /dev/null
+++ b/main/libs/commons-collections4-4.0-alpha1.jar
Binary files differ
diff --git a/main/libs/commons-io-2.4.jar b/main/libs/commons-io-2.4.jar
new file mode 100644
index 0000000..90035a4
--- /dev/null
+++ b/main/libs/commons-io-2.4.jar
Binary files differ
diff --git a/main/libs/commons-lang3-3.1.jar.properties b/main/libs/commons-lang3-3.1.jar.properties
new file mode 100644
index 0000000..adbaad3
--- /dev/null
+++ b/main/libs/commons-lang3-3.1.jar.properties
@@ -0,0 +1 @@
+src=src/commons-lang3-3.1-src.zip \ No newline at end of file
diff --git a/main/libs/src/commons-collections-3.2.1-src.zip b/main/libs/src/commons-collections-3.2.1-src.zip
new file mode 100644
index 0000000..e195370
--- /dev/null
+++ b/main/libs/src/commons-collections-3.2.1-src.zip
Binary files differ
diff --git a/main/libs/src/commons-lang3-3.1-src.zip b/main/libs/src/commons-lang3-3.1-src.zip
new file mode 100644
index 0000000..13010f4
--- /dev/null
+++ b/main/libs/src/commons-lang3-3.1-src.zip
Binary files differ
diff --git a/main/proguard-project.txt b/main/proguard-project.txt
index d4991f6..3edd33f 100644
--- a/main/proguard-project.txt
+++ b/main/proguard-project.txt
@@ -49,3 +49,6 @@
# Butter knife view injection, see http://jakewharton.github.io/butterknife/
-dontwarn butterknife.Views$InjectViewProcessor
-keep class **$$ViewInjector { *; }
+
+# Null analysis annotations of Eclipse JDT are just used by the Eclipse compiler, so ignore them here
+-dontwarn org.eclipse.jdt.annotation.** \ No newline at end of file
diff --git a/main/project/localization/findmissingtranslations.sh b/main/project/localization/findmissingtranslations.sh
index ea14f90..52fc053 100755
--- a/main/project/localization/findmissingtranslations.sh
+++ b/main/project/localization/findmissingtranslations.sh
@@ -5,7 +5,7 @@ cd `dirname "$0"`
. ./funcs.sh
finddiffs () {
- echo "translations missing or not in the right place for language '$1':" > $1.missing
+ echo "translations missing for language '$1':" > $1.missing
diff -y en.str $1.str > tmp.str
echo "Only in values/strings.xml:" >> $1.missing
grep "<\||" tmp.str | cut -d " " -f 1 | while read s; do
diff --git a/main/project/localization/funcs.sh b/main/project/localization/funcs.sh
index 198fbae..c61a12e 100644
--- a/main/project/localization/funcs.sh
+++ b/main/project/localization/funcs.sh
@@ -1,5 +1,5 @@
# Utility functions for location-aware programs
getnames () {
- sed -ne 's/^.*<\(string\|plurals\)\s*name\s*=\s*"\([^\"]*\)".*$/\2/p' $1
+ sed -ne 's/^.*<\(string\|plurals\)\s*name\s*=\s*"\([^\"]*\)".*$/\2/p' $1 | sort
}
diff --git a/main/res/layout/authorization_activity.xml b/main/res/layout/authorization_activity.xml
index 771592d..28c1987 100644
--- a/main/res/layout/authorization_activity.xml
+++ b/main/res/layout/authorization_activity.xml
@@ -44,27 +44,11 @@
android:textColor="?text_color"
android:textSize="14sp" />
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:padding="7dip" >
-
- <Button
- android:id="@+id/start"
- style="@style/button_full" />
-
- <EditText
- android:id="@+id/pin"
- style="@style/edittext_full"
- android:inputType="number"
- android:visibility="gone" />
+ <Button
+ android:id="@+id/start"
+ style="@style/button_full"
+ android:layout_margin="7dip" />
- <Button
- android:id="@+id/pin_button"
- style="@style/button_full"
- android:visibility="visible" />
- </LinearLayout>
</LinearLayout>
</ScrollView>
diff --git a/main/res/layout/cachedetail_details_page.xml b/main/res/layout/cachedetail_details_page.xml
index 484385e..e735699 100644
--- a/main/res/layout/cachedetail_details_page.xml
+++ b/main/res/layout/cachedetail_details_page.xml
@@ -261,7 +261,7 @@
<ImageView
android:id="@+id/map_preview"
android:layout_width="fill_parent"
- android:layout_height="80dip"
+ android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:onClick="showNavigationMenu"
diff --git a/main/res/layout/logs_item.xml b/main/res/layout/logs_item.xml
index 6bfe30a..6ce20bb 100644
--- a/main/res/layout/logs_item.xml
+++ b/main/res/layout/logs_item.xml
@@ -58,9 +58,7 @@
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginTop="22dip"
- android:autoLink="web"
android:gravity="left"
- android:linksClickable="true"
android:textColor="?text_color"
android:textSize="14sp" />
diff --git a/main/res/values-cs/strings.xml b/main/res/values-cs/strings.xml
index f82e199..cfb304f 100644
--- a/main/res/values-cs/strings.xml
+++ b/main/res/values-cs/strings.xml
@@ -321,7 +321,6 @@
<!-- caches lists -->
<string name="list_menu">Seznam</string>
<string name="list_menu_create">Vytvořit nový seznam</string>
- <string name="list_menu_all_lists">Všechny keše</string>
<string name="list_menu_drop">Smazat aktuální seznam</string>
<string name="list_menu_change">Změnit seznam</string>
<string name="list_menu_rename">Přejmenovat aktuální seznam</string>
@@ -363,7 +362,7 @@
<string name="init_login_popup_ok">Přihlášení bylo úspěšné</string>
<string name="init_login_popup_failed">Přihlášení selhalo</string>
<string name="init_login_popup_failed_reason">Přihlášení se nezdařilo, protože:</string>
- <string name="init_twitter_authorize">Autorizovat c:geo</string>
+ <string name="settings_authorize">Autorizovat c:geo</string>
<string name="init_signature">Podpis</string>
<string name="init_signature_help_text">Zadej podpis k použití při logování.\nSpeciální řetězce, které můžeš použít jsou: [DATE] , [TIME], [DATETIME], [USER] &amp; [NUMBER].\nTyto řetězce budou nahrazeny při vkládání podpisu do Logu.</string>
<string name="init_signature_template_button">Vložit šablonu</string>
@@ -475,12 +474,7 @@
<string name="auth_authorize">Autorizovat c:geo</string>
<string name="auth_start">Zahájit autorizaci</string>
<string name="auth_again">Znovu autorizovat</string>
- <string name="auth_pin_hint">PIN přidělený Twitterem</string>
<string name="auth_finish">Dokončit</string>
- <string name="auth_dialog_wait">Čekání na Twitter…</string>
- <string name="auth_dialog_pin_title">PIN kód</string>
- <string name="auth_dialog_pin_message">Prosím, napiš PIN kód přidělený Twitterem. Je to nutné pro dokončení autorizace.</string>
- <string name="auth_dialog_completed">c:geo nyní může posílat zprávy na Tvůj Twitter.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -1040,8 +1034,6 @@
<string name="twitter">Twitter: <a href="">@android_GC</a></string>
<string name="nutshellmanual">Návod: <a href="">c:geo v Nutshell</a></string>
<string name="about_twitter">Má <b>c:geo</b> publikovat nový status na Twitteru vždy, když zaloguješ keš?</string>
- <string name="about_auth_1">Následující proces dovoluje aplikaci <b>c:geo</b> přístup na Twitter - pokud budeš souhlasit.</string>
- <string name="about_auth_2">Klepnutím na tlačítko \"Zahájit autorizaci\" bude proces zahájen. Tento proces otevře webový prohlížeč s Twitterem. Přihlaš se na této stránce a povol <b>c:geu</b> přístup k tvému účtu. Pokud je to povoleno, Twitter ti ukáže číselný PIN kód. Tento PIN kód musíš zadat do <b>c:geo</b> a potvrdit. To je vše.</string>
<!-- status (used via string based resource loading) -->
<string name="status_new_release" tools:ignore="UnusedResources">Dostupné nové vydání.\nKlepni pro instalaci.</string>
diff --git a/main/res/values-da/strings.xml b/main/res/values-da/strings.xml
index 5deb999..e452af5 100644
--- a/main/res/values-da/strings.xml
+++ b/main/res/values-da/strings.xml
@@ -132,7 +132,7 @@
<string name="init_twitter">Twitter</string>
<string name="init_username">Brugernavn</string>
<string name="init_password">Password</string>
- <string name="init_twitter_authorize">Godkend c:geo</string>
+ <string name="settings_authorize">Godkend c:geo</string>
<string name="init_signature">Signatur</string>
<string name="init_skin">Light skin (genstart af c:geo nødvendig)</string>
<string name="init_summary_skin">Light skin (genstart af c:geo nødvendig)</string>
@@ -156,12 +156,7 @@
<string name="auth_authorize">Godkend c:geo</string>
<string name="auth_start">Start godkendelse</string>
<string name="auth_again">Start igen</string>
- <string name="auth_pin_hint">PIN tildelt af Twitter</string>
<string name="auth_finish">Færdig</string>
- <string name="auth_dialog_wait">Venter på Twitter…</string>
- <string name="auth_dialog_pin_title">PIN-kode</string>
- <string name="auth_dialog_pin_message">Indtast PIN-kode fra Twitter. PIN er påkrævet for at gennemføre godkendelse.</string>
- <string name="auth_dialog_completed">c:geo er nu godkendt til at poste beskeder på Twitter.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -287,7 +282,5 @@
<string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
<string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
<string name="about_twitter">Skal <b>c:geo</b> sende status til Twitter hvergang du logger en cache?</string>
- <string name="about_auth_1">Med denne proces tillader du at <b>c:geo</b> får adgang til din Twitter.</string>
- <string name="about_auth_2">Klik på \"godkend c:geo\" knappen for at starte godkendelsesprocessen. Det vil åbne Twitter i en webbrowser. Log ind på siden og tillad <b>c:geo</b> at tilgå din Twitter. Når godkendt, vil Twitter vise en PIN-kode. Denne PIN skal tastes ind i <b>c:geo</b> og bekræftes.</string>
</resources>
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index 80f5c38..fa526a7 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -293,7 +293,6 @@
<string name="caches_clear_offlinelogs_progress">Lösche Offline-Logs</string>
<string name="list_menu">Liste</string>
<string name="list_menu_create">Neue Liste</string>
- <string name="list_menu_all_lists">Alle</string>
<string name="list_menu_drop">Aktuelle Liste löschen</string>
<string name="list_menu_change">Andere Liste anzeigen</string>
<string name="list_menu_rename">Aktuelle Liste umbenennen</string>
@@ -346,13 +345,11 @@
<string name="init_oc">Opencaching.de</string>
<string name="settings_activate_oc">Aktivieren</string>
<string name="init_oc_de_description">Autorisiere c:geo auf opencaching.de zuzugreifen um Caches zu suchen und nach deinen Funden zu filtern.</string>
- <string name="init_register_oc_de">c:geo autorisieren</string>
- <string name="init_reregister_oc_de">c:geo neu autorisieren</string>
+ <string name="settings_authorize">c:geo autorisieren</string>
+ <string name="settings_reauthorize">c:geo neu autorisieren</string>
<string name="init_oc_pl">Opencaching.pl</string>
<string name="settings_activate_oc_pl">Aktiviere</string>
<string name="init_oc_pl_description">Autorisiere c:geo auf opencaching.pl zuzugreifen um Caches zu suchen und nach deinen Funden zu filtern.</string>
- <string name="init_register_oc_pl">c:geo autorisieren</string>
- <string name="init_reregister_oc_pl">c:geo neu autorisieren</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="settings_activate_twitter">Aktivieren</string>
@@ -365,8 +362,6 @@
<string name="init_login_popup_failed">Login fehlgeschlagen</string>
<string name="init_login_popup_failed_reason">Login fehlgeschlagen:</string>
<string name="init_login_popup_not_authorized">Nicht autorisiert</string>
- <string name="init_twitter_authorize">c:geo autorisieren</string>
- <string name="init_twitter_reauthorize">c:geo neu autorisieren</string>
<string name="init_signature">Signatur</string>
<string name="init_signature_help_text">Verwendete Signatur für Logtexte.\nErlaubte Platzhalter sind: [DATE], [TIME], [DATETIME], [USER] &amp; [NUMBER]. Diese werden beim Einfügen der Signatur durch die entsprechenden Werte ersetzt.</string>
<string name="init_signature_template_button">Platzhalter einfügen</string>
@@ -482,27 +477,10 @@
<string name="auth_authorize">c:geo autorisieren</string>
<string name="auth_start">Starte Autorisierung</string>
<string name="auth_again">Neustarten</string>
- <string name="auth_pin_hint">Twitter-PIN</string>
<string name="auth_finish">Fertig</string>
- <string name="auth_dialog_wait">Warten auf Twitter…</string>
- <string name="auth_dialog_pin_title">PIN Code</string>
- <string name="auth_dialog_pin_message">Bitte den Twitter-PIN-Code eingeben, dies ist notwendig um die Autorisierung abzuschließen.</string>
- <string name="auth_dialog_completed">c:geo ist nun autorisiert, Tweets bei Twitter zu erstellen.</string>
- <string name="about_auth_1">Der folgende Prozess erlaubt es <b>c:geo</b> auf den persönlichen Twitter-Account zuzugreifen, wenn zugestimmt wird.</string>
- <string name="about_auth_2">Ein Klick auf \"Starte Autorisierung\" öffnet eine Twitter-Seite in einem Browserfenster. Durch die Anmeldung und die Bestätigung wird <b>c:geo</b> ermöglicht, auf den persönlichen Twitter-Account zuzugreifen. Wird dies bestätigt, nennt Twitter eine numerische PIN, diese muss kopiert und in <b>c:geo</b> eingefügt werden. Das ist alles.</string>
<string name="auth_ocde">opencaching.de</string>
<string name="auth_ocpl">opencaching.pl</string>
- <string name="auth_authorize_oc">c:geo autorisieren</string>
- <string name="auth_start_oc">Starte Autorisierung</string>
- <string name="auth_again_oc">Neustarten</string>
- <string name="auth_pin_hint_oc">%s-PIN</string>
- <string name="auth_finish_oc">Fertig</string>
- <string name="auth_dialog_wait_oc">Warten auf %s…</string>
- <string name="auth_dialog_pin_title_oc">PIN Code</string>
- <string name="auth_dialog_pin_message_oc">Bitte den %s-PIN-Code eingeben, dies ist notwendig um die Autorisierung abzuschließen.</string>
<string name="auth_dialog_completed_oc">c:geo ist nun autorisiert, caches zu laden und auf %s zu loggen.</string>
- <string name="about_auth_1_oc">Der folgende Prozess erlaubt es <b>c:geo</b> auf den persönlichen %s-Account zuzugreifen, wenn zugestimmt wird.</string>
- <string name="about_auth_2_oc">Ein Klick auf \"Starte Autorisierung\" öffnet eine %s-Seite in einem Browserfenster. Durch die Anmeldung und die Bestätigung wird <b>c:geo</b> ermöglicht, auf den persönlichen Account zuzugreifen. Wird dies bestätigt, nennt %s eine numerische PIN, diese muss kopiert und in <b>c:geo</b> eingefügt werden. Das ist alles.</string>
<string name="cache_offline">Offline</string>
<string name="cache_offline_refresh">Aktualisieren</string>
<string name="cache_offline_drop">Löschen</string>
diff --git a/main/res/values-es/strings.xml b/main/res/values-es/strings.xml
index 26bbe73..e692f15 100644
--- a/main/res/values-es/strings.xml
+++ b/main/res/values-es/strings.xml
@@ -322,7 +322,7 @@
<string name="init_login_popup_ok">Acceso conseguido.</string>
<string name="init_login_popup_failed">Error en el acceso.</string>
<string name="init_login_popup_failed_reason">El acceso ha fallado debido a </string>
- <string name="init_twitter_authorize">Autorizar a c:geo</string>
+ <string name="settings_authorize">Autorizar a c:geo</string>
<string name="init_signature">Firma</string>
<string name="init_signature_help_text">Escribe la firma que quieres usar en los registros.\nLas palabras especiales que puedes usar son: [DATE], [TIME], [USER] y [NUMBER].\nSerán reemplazados por sus valores al insertar la firma.</string>
<string name="init_signature_template_button">Insertar plantilla</string>
@@ -386,12 +386,7 @@
<string name="auth_authorize">Autorizar c:geo</string>
<string name="auth_start">Iniciar autorización</string>
<string name="auth_again">Volver a iniciar</string>
- <string name="auth_pin_hint">PIN asignado por Twitter</string>
<string name="auth_finish">Fin</string>
- <string name="auth_dialog_wait">Esperando por Twitter…</string>
- <string name="auth_dialog_pin_title">Código PIN</string>
- <string name="auth_dialog_pin_message">Debes usar el codigo PIN suministrado por Twitter. Es obligatorio completar la autorización.</string>
- <string name="auth_dialog_completed">c:geo ahora está autorizado para publicar en Twitter.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -771,7 +766,5 @@
<string name="twitter">Twitter: <a href="">@android_GC</a></string>
<string name="nutshellmanual">Manual: <a href="">c:geo en breve</a></string>
<string name="about_twitter">¿Debe <b>c:geo</b> publicar el nuevo estado en Twitter cuando registras un escondite?</string>
- <string name="about_auth_1">El siguiente proceso permite a <b>c:geo</b> acceder a Twitter - si estás de acuerdo.</string>
- <string name="about_auth_2">Hacer clic en el botón \"autorizar c:geo\" iniciará el proceso. Este proceso abrirá un navegador con la web de Twitter. Identifícate y permite a <b>c:geo</b> acceder a tu cuenta. Si aceptas Twitter te mostrará un código PIN. Este PIN debe ser pegado en <b>c:geo</b> y ser confirmado. Eso es todo.</string>
</resources>
diff --git a/main/res/values-fr/strings.xml b/main/res/values-fr/strings.xml
index 539bf37..246a767 100644
--- a/main/res/values-fr/strings.xml
+++ b/main/res/values-fr/strings.xml
@@ -100,7 +100,7 @@
<string name="log_stars_4_description">plutôt bien</string>
<string name="log_stars_45_description">très bien</string>
<string name="log_stars_5_description">super</string>
- <string name="log_webcam">photo webcam prise</string>
+ <string name="log_webcam">Photo prise par la webcam</string>
<string name="log_new_log">Carnet</string>
<string name="log_new_log_text">Message</string>
<string name="log_announcement">Annonce</string>
@@ -293,7 +293,6 @@
<string name="caches_clear_offlinelogs_progress">Effacement des entrées de carnet hors-ligne</string>
<string name="list_menu">Listes</string>
<string name="list_menu_create">Nouvelle liste</string>
- <string name="list_menu_all_lists">Toutes les caches</string>
<string name="list_menu_drop">Effacer la liste courante</string>
<string name="list_menu_change">Changer de liste</string>
<string name="list_menu_rename">Renommer la liste courante</string>
@@ -343,16 +342,14 @@
<string name="settings_gc_legal_note">En utilisant les services de geocaching.com, vous acceptez les conditions d\'utilisation de Groundspeak.</string>
<string name="settings_info_facebook_login_title">Connexion Facebook</string>
<string name="settings_info_facebook_login">Vous ne pouvez pas faire que c:geo se connecte à geocaching.com avec votre compte Facebook. Mais il existe une solution simple…</string>
- <string name="init_oc">opencaching.de</string>
+ <string name="settings_authorize">Autoriser c:geo</string>
+ <string name="settings_reauthorize">Ré-autoriser c:geo</string>
+ <string name="init_oc">Opencaching.de</string>
<string name="settings_activate_oc">Activer</string>
<string name="init_oc_de_description">Autoriser c:geo à utiliser opencaching.de pour chercher des caches et accéder/filtrer vos caches trouvées.</string>
- <string name="init_register_oc_de">Autoriser c:geo</string>
- <string name="init_reregister_oc_de">Ré-autoriser c:geo</string>
<string name="init_oc_pl">Opencaching.pl</string>
<string name="settings_activate_oc_pl">Activer</string>
<string name="init_oc_pl_description">Autoriser c:geo à utiliser opencaching.pl pour chercher des caches et accéder/filtrer vos caches trouvées.</string>
- <string name="init_register_oc_pl">Autoriser c:geo</string>
- <string name="init_reregister_oc_pl">Ré-autoriser c:geo</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="settings_activate_twitter">Activer</string>
@@ -365,8 +362,6 @@
<string name="init_login_popup_failed">Erreur de connexion</string>
<string name="init_login_popup_failed_reason">Erreur de connexion: </string>
<string name="init_login_popup_not_authorized">Non autorisé</string>
- <string name="init_twitter_authorize">Autorisation de c:geo</string>
- <string name="init_twitter_reauthorize">Ré-autoriser c:geo</string>
<string name="init_signature">Signature</string>
<string name="init_signature_help_text">Écrivez votre propre signature pour vos visites.\nLes codes spéciaux supportés sont : [DATE] , [TIME], [DATETIME], [USER] &amp; [NUMBER].\nAu moment de l\'insertion de la signature, ces codes seront remplacés par la valeur correspondante.</string>
<string name="init_signature_template_button">Insérer un modèle</string>
@@ -427,10 +422,12 @@
<string name="init_backup_last">Sauvegarde disponible depuis</string>
<string name="init_backup_last_no">Il n\'y a pas de fichier avec une sauvegarde.</string>
<string name="settings_info_offline_maps_title">Informations sur les cartes hors-ligne</string>
- <string name="settings_info_offline_maps">c:geo prend en charge les cartes hors-ligne. Vous pouvez télécharger des cartes depuis Mapsforge ou même créer vos propres cartes à partir des données d\'OSM.</string>
+ <string name="settings_info_offline_maps">c:geo prend en charge les cartes hors-ligne. Vous pouvez télécharger des cartes depuis Mapsforge ou même créer vos propres cartes à partir des données d\'OSM. Vous devez d\'abord sélectionner le répertoire des cartes en mode hors-ligne pour pouvoir utiliser cette fonctionnalité.</string>
<string name="settings_info_themes_title">Informations sur les thèmes de cartes</string>
<string name="settings_info_themes">c:geo prend en charge des thèmes personnalisés pour les cartes en mode hors-ligne. Ils peuvent être utilisés pour modifier le style de couleur de la carte (par exemple d\'avoir une vue de nuit) ou mettre en évidence certains objets comme les pistes cyclables ou les lignes de niveau.</string>
<string name="init_mapsource_select">Choisir la source des cartes</string>
+ <string name="settings_title_scale_map_text">Zoom du texte</string>
+ <string name="settings_summary_scale_map_text">Mise à l\'échelle des textes sur la carte hors-ligne en fonction de la résolution de l\'appareil</string>
<string name="init_map_directory_description">Dossier contenant les cartes hors-ligne</string>
<string name="init_gpx_exportdir">Dossier d\'exportation GPX</string>
<string name="init_gpx_importdir">Dossier d\'importation GPX</string>
@@ -463,6 +460,9 @@
<string name="init_use_native_ua">S\'identifier comme le navigateur web Android. Peut résoudre des problèmes de connexion avec certains opérateurs mobiles.</string>
<string name="init_summary_use_native_ua">S\'identifier comme le navigateur Android. Résout les problèmes de connexion lors de l\'utilisation de certains fournisseurs d\'accès au réseau.</string>
<string name="init_rendertheme_folder">Dossier contenant les cartes hors-ligne personnelles (optionnelles).</string>
+ <string name="settings_open_website">Ouvrir le site dans un navigateur</string>
+ <string name="settings_settings">Paramètres</string>
+ <string name="settings_information">Information</string>
<string name="map_source_google_map">Google Maps : plan</string>
<string name="map_source_google_satellite">Google Maps : satellite</string>
<string name="map_source_osm_mapnik">OSM : rendu Mapnik</string>
@@ -482,27 +482,14 @@
<string name="auth_authorize">autorisation de c:geo</string>
<string name="auth_start">début d\'autorisation</string>
<string name="auth_again">redémarre</string>
- <string name="auth_pin_hint">code donné par Twitter</string>
<string name="auth_finish">terminé</string>
- <string name="auth_dialog_wait">en attente de Twitter…</string>
- <string name="auth_dialog_pin_title">code PIN</string>
- <string name="auth_dialog_pin_message">Veuillez saisir votre code PIN fourni par Twitter. Il est obligatoire pour finaliser l\'autorisation.</string>
- <string name="auth_dialog_completed">c:geo est maintenant autorisé à poster sur Twitter.</string>
- <string name="about_auth_1">Le processus suivant permet à <b>c:geo</b> d\'accéder à votre compte Twitter - si vous acceptez.</string>
- <string name="about_auth_2">Cliquer sur le bouton \"début d\'autorisation\" pour démarrer. Une fenêtre de navigateur va s\'ouvrir pour vous connecter sur Twitter. Accepter pour que <b>c:geo</b> accéde à votre compte. Twitter vous affichera alors une code PIN composé de chiffres. Merci de coller ce code dans <b>c:geo</b> puis confirmer. C\'est tout!</string>
+ <string name="auth_dialog_waiting">En attente de %s…</string>
+ <string name="auth_explain_short">Le processus suivant autorisera <b>c:geo</b> à accéder à %s.</string>
+ <string name="auth_explain_long">L\'appui sur \"Autoriser c:geo\" démarrera le processus. Un navigateur web ouvrira la page de %s. Vous pourrez vous connecter sur votre compte et en autoriser l\'accès à <b>c:geo</b>. C\'est tout.</string>
+ <string name="auth_dialog_completed_twitter">c:geo est maintenant autorisé à poster sur Twitter.</string>
<string name="auth_ocde">opencaching.de</string>
<string name="auth_ocpl">opencaching.pl</string>
- <string name="auth_authorize_oc">Autoriser c:geo</string>
- <string name="auth_start_oc">Commencer l\'autorisation</string>
- <string name="auth_again_oc">Recommencer</string>
- <string name="auth_pin_hint_oc">Code donné par %s</string>
- <string name="auth_finish_oc">Terminer</string>
- <string name="auth_dialog_wait_oc">En attente de %s…</string>
- <string name="auth_dialog_pin_title_oc">Code PIN</string>
- <string name="auth_dialog_pin_message_oc">Veuillez saisir votre code PIN fourni par %s. Il est nécessaire pour finaliser l\'autorisation.</string>
<string name="auth_dialog_completed_oc">c:geo est désormais autorisé à interagir avec %s.</string>
- <string name="about_auth_1_oc">La procédure suivante permet à <b>c:geo</b> d\'accéder à %s - si vous acceptez.</string>
- <string name="about_auth_2_oc">Cliquer sur le bouton \"début d\'autorisation\" pour démarrer. Une fenêtre de navigateur va s\'ouvrir pour vous connecter sur %s. Accepter pour que <b>c:geo</b> accède à votre compte. %s vous affichera alors un code PIN composé de chiffres. Merci de recopier ce code dans <b>c:geo</b> et de confirmer. C\'est tout.</string>
<string name="cache_offline">Hors ligne</string>
<string name="cache_offline_refresh">Recharger</string>
<string name="cache_offline_drop">Effacer</string>
@@ -798,6 +785,7 @@
<string name="destination_set">Définir une destination</string>
<string name="navigation_direct_navigation">Navigation directe</string>
<string name="navigation_target">Cible</string>
+ <string name="err_nav_no_coordinates">Impossible de démarrer la navigation en l\'absence de coordonnées</string>
<string name="license">Licence</string>
<string name="license_show">Afficher la licence</string>
<string name="license_dismiss">Rejeter</string>
diff --git a/main/res/values-hu/strings.xml b/main/res/values-hu/strings.xml
index d2ae86c..3c63b2e 100644
--- a/main/res/values-hu/strings.xml
+++ b/main/res/values-hu/strings.xml
@@ -290,7 +290,6 @@
<!-- caches lists -->
<string name="list_menu">Lista</string>
<string name="list_menu_create">Új lista létrehozása</string>
- <string name="list_menu_all_lists">Az összes láda</string>
<string name="list_menu_drop">Jelenlegi lista elvetése</string>
<string name="list_menu_change">Lista megváltoztatása</string>
<string name="list_menu_rename">Az aktuális lista átnevezése</string>
@@ -328,7 +327,7 @@
<string name="init_login_popup_ok">Belépés ok.</string>
<string name="init_login_popup_failed">Belépés sikertelen.</string>
<string name="init_login_popup_failed_reason">Belépés sikertelen, mert </string>
- <string name="init_twitter_authorize">Engedélyezés</string>
+ <string name="settings_authorize">Engedélyezés</string>
<string name="init_signature">Aláírás</string>
<string name="init_signature_help_text">Add meg az aláírásod amit a bejegyzés szövegében szeretnél használni.\nHasználható speciális címkék: [DATE] , [TIME], [DATETIME], [USER] &amp; [NUMBER].\nEzek az aláírás beillesztése után válnak láthatóvá.</string>
<string name="init_signature_template_button">Sablon beillesztése</string>
@@ -438,12 +437,7 @@
<string name="auth_authorize">Hozzáférés engedélyezése a c:geo-nak</string>
<string name="auth_start">Engedélyezés indítása</string>
<string name="auth_again">Engedélyezés indítása újra</string>
- <string name="auth_pin_hint">PIN hozzárendelve a Twitter által</string>
<string name="auth_finish">Befejezés</string>
- <string name="auth_dialog_wait">Várakozás a Twitterre…</string>
- <string name="auth_dialog_pin_title">PIN kód</string>
- <string name="auth_dialog_pin_message">Kérlek írd be a PIN kódot amit a Twittertől kaptál. Ez szükséges lépés az engedélyezés befejezéséhez.</string>
- <string name="auth_dialog_completed">A c:geo engedélyt kapott, hogy bejegyzéseket küldjön a Twitterre.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -922,8 +916,6 @@
<string name="twitter">Twitter: <a href="">@android_GC</a></string>
<string name="nutshellmanual">Kézikönyv: <a href="">A c:geo dióhéjban</a></string>
<string name="about_twitter">Akarod, hogy <b>c:geo</b> új bejegyzést írjon Twitterre mindig mikor egy ládát megtalálsz?</string>
- <string name="about_auth_1">A következő folyamat engedélyezi a <b>c:geo</b>-nak, hogy hozzáférjen a Twitterhez – ha jóváhagyod.</string>
- <string name="about_auth_2">Kattints a \"c:geo engedélyezése\" gombra, hogy elindítsd a folyamatot. Ez a folyamat meg fog nyitni egy böngészőt a Twitter weboldallal. Lépj be ezen az oldalon és hagyd jóvá, hogy a <b>c:geo</b> hozzáférjen a felhasználói fiókodhoz. Ha elfogadod, a Twitter mutatni fog egy számokból álló PIN kódot. Ezt a PIN kódot kell a <b>c:geo</b>-ban beillesztened és jóváhagynod. Ilyen egyszerű.</string>
<!-- status -->
<string name="status_new_release" tools:ignore="UnusedResources">Új kiadás található.\nKattints a telepítéshez.</string>
diff --git a/main/res/values-it/strings.xml b/main/res/values-it/strings.xml
index f5774fe..d8142a8 100644
--- a/main/res/values-it/strings.xml
+++ b/main/res/values-it/strings.xml
@@ -1,1117 +1,1078 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.net-->
<resources xmlns:tools="http://schemas.android.com/tools">
-
- <string name="app_name">c:geo</string>
-
- <!-- basics -->
- <string name="cache">Cache</string>
- <string name="detail">Dettaglio</string>
- <string name="search">Cerca</string>
- <string name="settings_titlebar">c:geo Settaggi</string>
- <string name="helpers">Apps utili</string>
- <string name="about">Info c:geo</string>
- <string name="latitude">Latitudine</string>
- <string name="longitude">Longitudine</string>
-
- <!-- actionbar -->
- <string name="action_bar_share_title">Condividi link al cache</string>
-
- <!-- caches -->
- <string name="all_types">Tutti i tipi di cache</string>
- <string name="traditional">Traditional cache</string>
- <string name="multi">Multi-cache</string>
- <string name="mystery">Mystery cache</string>
- <string name="letterbox">Letterbox hybrid</string>
- <string name="event">Event cache</string>
- <string name="mega">Mega-event cache</string>
- <string name="earth">Earthcache</string>
- <string name="cito">Evento Cache In Trash Out</string>
- <string name="webcam">Webcam cache</string>
- <string name="virtual">Virtual cache</string>
- <string name="wherigo">Wherigo cache</string>
- <string name="lostfound">Lost &amp; Found</string>
- <string name="ape">Project Ape cache</string>
- <string name="gchq">Groundspeak hq</string>
- <string name="gps">Fiera GPS cache</string>
- <string name="block">Groundspeak Block Party</string>
- <string name="unknown">Tipo sconosciuto</string>
-
- <!-- cache sizes -->
- <string name="cache_size_micro">micro</string>
- <string name="cache_size_small">small</string>
- <string name="cache_size_regular">regular</string>
- <string name="cache_size_large">large</string>
- <string name="cache_size_other">altro</string>
- <string name="cache_size_virtual">virtual</string>
- <string name="cache_size_notchosen">non selezionato</string>
- <string name="cache_size_unknown">sconosciuto</string>
-
- <!-- waypoints -->
- <string name="wp_final">Destinazione finale</string>
- <string name="wp_stage">Step intermedio multi-cache</string>
- <string name="wp_puzzle">Quesito da risolvere</string>
- <string name="wp_pkg">Area parcheggio</string>
- <string name="wp_trailhead">Partenza percorso</string>
- <string name="wp_waypoint">Punto di riferimento</string>
- <string name="wp_original">Coordinate originali</string>
-
- <!-- logs -->
- <string name="log_found">Trovato</string>
- <string name="log_dnf">Non trovato (DNF)</string>
- <string name="log_note">Note</string>
- <string name="log_published">Pubblicato</string>
- <string name="log_enabled">Attivo</string>
- <string name="log_disabled">Non attivo</string>
- <string name="log_attend">Parteciperà</string>
- <string name="log_attended">Partecipato</string>
- <string name="log_retrieved">Prelevato</string>
- <string name="log_placed">Inserito</string>
- <string name="log_grabbed">Prelevato da qualche parte</string>
- <string name="log_movecollection">Sposta in collezione</string>
- <string name="log_moveinventory">Sposta in inventario</string>
- <string name="log_maintained">Manutenzione effettuata</string>
- <string name="log_maintenance_needed">Richiede manutenzione</string>
- <string name="log_update">Coordinate aggiornate</string>
- <string name="log_archived">Archiviato</string>
- <string name="log_unarchived">Reinserito</string>
- <string name="log_needs_archived">Necessita archiviazione</string>
- <string name="log_discovered">Scoperto</string>
- <string name="log_reviewer">Nota del reviewer</string>
- <string name="log_retractlisting">Ritirato</string>
- <string name="log_marked_missing">Segnalato come mancante</string>
- <string name="log_tb_nothing">Non fare nulla</string>
- <string name="log_tb_visit">Visitato</string>
- <string name="log_tb_drop">Lasciato</string>
- <string name="log_tb_changeall">Cambia tutto</string>
- <string name="log_save">Salva</string>
- <string name="log_saving">Invio log…</string>
- <string name="log_saving_and_uploading">Invio log e immagine…</string>
- <string name="log_clear">Azzera</string>
- <string name="log_post">Invia log</string>
- <string name="log_post_rate">Invia log + voto</string>
- <string name="log_post_no_rate">Invia log senza voto</string>
- <string name="log_post_not_possible">Connessione…</string>
- <string name="log_add">Aggiungi</string>
- <string name="log_rating">Voto</string>
- <string name="log_no_rating">Nessun voto</string>
- <string name="log_stars_1">1 stella</string>
- <string name="log_stars_15">1.5 stelle</string>
- <string name="log_stars_2">2 stelle</string>
- <string name="log_stars_25">2.5 stelle</string>
- <string name="log_stars_3">3 stelle</string>
- <string name="log_stars_35">3.5 stelle</string>
- <string name="log_stars_4">4 stelle</string>
- <string name="log_stars_45">4.5 stelle</string>
- <string name="log_stars_5">5 stelle</string>
- <string name="log_stars_1_description">proprio brutto</string>
- <string name="log_stars_15_description">abbastanza brutto</string>
- <string name="log_stars_2_description">bruttino</string>
- <string name="log_stars_25_description">sotto la media</string>
- <string name="log_stars_3_description">nella media</string>
- <string name="log_stars_35_description">non male</string>
- <string name="log_stars_4_description">bene</string>
- <string name="log_stars_45_description">molto bene</string>
- <string name="log_stars_5_description">favoloso</string>
- <string name="log_webcam">Scattata foto Webcam</string>
- <string name="log_new_log">Log</string>
- <string name="log_new_log_text">Testo Log</string>
- <string name="log_announcement">Annuncio</string>
- <string name="log_today">Oggi</string>
- <string name="log_yesterday">Ieri</string>
- <string name="log_smilies">Smile</string>
- <string name="log_image">Immagine</string>
- <string name="log_image_attach">Aggiungi immagine</string>
- <string name="log_image_edit">Modifica immagine</string>
- <string name="log_image_stored">Esistente</string>
- <string name="log_image_camera">Nuova</string>
- <string name="log_image_caption">Didascalia</string>
- <string name="log_image_description">Descrizione</string>
- <string name="log_image_scale">Ridimensiona</string>
-
- <string-array name="log_image_scales">
- <item>Dimensioni originali</item>
- <item>512 px</item>
- <item>640 px</item>
- <item>800 px</item>
- <item>1024 px</item>
- </string-array>
-
- <!-- translation -->
- <string name="translate_to_sys_lang">Traduci in %s</string>
- <string name="translate_to_english">Traduci in inglese</string>
- <string name="translate_length_warning">La traduzione può fallire quando c\'è molto testo.</string>
-
- <!-- errors, warnings, info toasts -->
- <string name="err_none">Ok</string>
- <string name="err_start">Comunicazione non avviata</string>
- <string name="err_parse">Errore analizzando la pagina di login</string>
- <string name="err_server">Connessione fallita con Geocaching.com (server o connessione non disponibile?)</string>
- <string name="err_login">Informazioni di login non memorizzate</string>
- <string name="err_login_failed">c:geo non può effettuare login.</string>
- <string name="err_login_failed_toast">c:geo non può effettuare login. Attivata la modalità offline. Verificare le informazioni di login nei settaggi o abilitare una connessione internet.</string>
- <string name="err_unknown">Errore sconosciuto</string>
- <string name="err_comm">Errore sconosciuto di comunicazione</string>
- <string name="err_missing_auth">username e/o password non settati.</string>
- <string name="err_wrong">Informazioni di login errate</string>
- <string name="err_maintenance">Geocaching.com è in manutenzione, riprovare più tardi. Attivata la modalità offline.</string>
- <string name="err_license">L\'utente non ha approvato le condizione del Geocaching.com license agreement, così c:geo non può caricare le coordinate dei cache.</string>
- <string name="err_unvalidated_account">Come prima cosa devi convalidare il tuo account su Geocaching.com.</string>
- <string name="err_unpublished">Il cache richiesto è stato ritirato</string>
- <string name="err_premium_only">Cache disponibile solo per utenti premium di Geocaching.com</string>
- <string name="err_detail_open">c:geo non può aprire i dettagli del cache.</string>
- <string name="err_detail_cache">c:geo non può visualizzare il cache richiesto. È veramente un geocache?</string>
- <string name="err_detail_cache_find">c:geo non trova il geocache</string>
- <string name="err_detail_cache_find_some">c:geo non trova quel geocache.</string>
- <string name="err_detail_cache_find_any">c:geo non trova nessun geocache.</string>
- <string name="err_detail_cache_forgot">c:geo ha dimenticato quale geocache hai richiesto.</string>
- <string name="err_detail_google_maps_limit_reached">c:geo non riesce a scaricare le mappe statiche. Forse raggiunto il limite di google map. Riprova domani.</string>
- <string name="err_detail_no_spoiler">c:geo non trova alcuna immagine spoiler per questo cache.</string>
- <string name="err_detail_no_map_static">c:geo non trova alcuna mappa statica per questo cache.</string>
- <string name="err_detail_not_load_map_static">c:geo non riesce a caricare la mappe statiche.</string>
- <string name="err_detail_still_working">Momentaneamente occupato a svolgere un altro compito.</string>
- <string name="err_watchlist_still_managing">Sto ancora gestendo la tua watchlist.</string>
- <string name="err_watchlist_failed">La modifica alla tua watchlist è fallita.</string>
- <string name="err_application_no">c:geo non trova nessuna applicazione compatibile.</string>
- <string name="err_auth_initialize">c:geo ha fallito l\'inizializzazione del processo di autorizzazione.</string>
- <string name="err_auth_process">Processo di autorizzazione fallito.</string>
- <string name="err_cannot_log_visit">c:geo non ha abbastanza informazioni per salvare il log. Per cortesia effettuarlo dalla pagina dei dettagli completi del cache.</string>
- <string name="err_download_fail">c:geo ha fallito il download dei cache perché </string>
- <string name="err_dwld_details_failed">c:geo ha fallito il download dei dettagli del cache.</string>
- <string name="err_load_descr_failed">c:geo non può caricare la descrizione.</string>
- <string name="err_location_unknown">c:geo non conosce la posizione dei cache.</string>
- <string name="err_missing_device_name">Per cortesia inserire il nome del dispositivo prima di registrarsi.</string>
- <string name="err_favorite_failed">Errore nella modifica dello stato preferiti.</string>
- <string name="err_select_logimage_failed">La selezione dell\'immagine per il log è fallita.</string>
- <string name="err_acquire_image_failed">Acquisizione immagine fallita.</string>
- <string name="err_tb_display">c:geo non riesce a visualizzare il trackable che vuoi. È veramente un trackable?</string>
- <string name="err_tb_details_open">c:geo non riesce ad aprire i dettagli del trackable.</string>
- <string name="err_tb_forgot_saw">c:geo ha dimenticato quale trackable vedevi.</string>
- <string name="err_tb_find">c:geo non trova nessun trackable</string>
- <string name="err_tb_find_that">c:geo non trova quel trackable.</string>
- <string name="err_waypoint_cache_unknown">c:geo non conosce a quale cache vuoi aggiungere un waypoint.</string>
- <string name="err_waypoint_add_failed">c:geo non è riuscito ad aggiungere il tuo waypoint.</string>
- <string name="err_point_unknown_position">c:geo non capisce dove ti trovi.</string>
- <string name="err_point_no_position_given_title">Info richieste</string>
- <string name="err_point_no_position_given">Inserisci almeno latitudine, o longitudine, o distanza e angolo. Puoi anche inserire tutti e quattro i valori.</string>
- <string name="err_point_curr_position_unavailable">c:geo non ha le coordinate attuali. Attendere, prego…</string>
- <string name="err_point_bear_and_dist_title">Necessiti di aiuto?</string>
- <string name="err_point_bear_and_dist">Inserisci angolo e distanza. Angolo specifica un valore in gradi tra 0 e 360 relativo al nord. La distanza può avere (o no) l\'unità di misura.</string>
- <string name="err_log_load_data">c:geo non riesce a caricare i dati necessari per salvare il log della tua visita.</string>
- <string name="err_log_load_data_again">c:geo non riesce a caricare i dati necessari per salvare il log della tua visita. Nuovo tentativo in corso.</string>
- <string name="err_log_load_data_still">c:geo sta ancora caricando i dati necessari per salvare il log. Per cortesia attendere ancora un pochino.</string>
- <string name="err_log_failed_server">c:geo non è riuscito ad inviare il log perché il server non risponde.</string>
- <string name="err_log_post_failed">Sembra che il log non sia stato inviato. Prego verificare su Geocaching.com.</string>
- <string name="err_logimage_post_failed">Sembra la l\'immagine non sia stata caricata. Si prega di controllare su Geocaching.com.</string>
- <string name="err_search_address_forgot">c:geo ha dimenticato l\'indirizzo che vuoi trovare.</string>
- <string name="err_parse_lat">c:geo non riesce ad interpretare la latitudine.</string>
- <string name="err_parse_lon">c:geo non riesce ad interpretare la longitudine.</string>
- <string name="err_parse_dist">c:geo non riesce ad interpretare la distanza.</string>
- <string name="err_parse_lat_lon">c:geo non riesce ad interpretare la latitudine o la longitudine.</string>
- <string name="warn_save_nothing">Non c\'è nulla da salvare.</string>
- <string name="warn_no_cache_coord">Non ci sono cache con coordinate.</string>
- <string name="warn_no_coordinates">Coordinate non fornite.</string>
- <string name="warn_no_keyword">Parola chiave non fornita.</string>
- <string name="warn_no_username">Nome utente non fornito.</string>
- <string name="warn_search_help_title">Necessiti di aiuto?</string>
- <string name="warn_search_help_address">Inserisci indirizzo o nome di luogo. Per esempio, usa un indirizzo simile a questo: \"Via Alessandro Volta, 1, Milano, Italia\", oppure solo la città come \"Milano\" o di un luogo famoso come ad esempio \"Colosseo\".</string>
- <string name="warn_search_help_gccode">Inserisci il codice del geocache. Per esempio \"GC1VCAZ\".</string>
- <string name="warn_search_help_keyword">Inserisci delle parole che supponi siano citate da qualche parte all\'interno del cache che vuoi trovare.</string>
- <string name="warn_search_help_user">Inserisci il nome dell\'utente di Geocaching.com.</string>
- <string name="warn_search_help_tb">Inserisci il codice del trackable. Per esempio \"TB29QMZ\".</string>
- <string name="warn_log_text_fill">Prego, inserire del testo nel log.</string>
- <string name="warn_load_images">c:geo non riesce a caricare immagini.</string>
- <string name="warn_invalid_mapfile">La mappa selezionata non è mapsforge versione 0.3.0.\nMappa offline non disponibile.</string>
- <string name="warn_deprecated_mapfile">Stai usando una vecchia mappa 0.2.4.\nAggiornala alla 0.3.0 appena puoi.\nIl supporto alla 0.2.4 sarà rimosso nella prossima versione.</string>
- <string name="warn_nonexistant_mapfile">La mappa selezionata non esiste.\nMappa offline non disponibile.</string>
- <string name="warn_rendertheme_missing">Tema mappa non trovato.</string>
- <string name="info_log_posted">c:geo ha inviato il log con successo.</string>
- <string name="info_log_saved">c:geo ha salvato il log.</string>
- <string name="info_log_cleared">Il log è stato azzerato.</string>
- <string name="info_log_type_changed">Il tipo di log è cambiato!</string>
- <string name="info_select_logimage_cancelled">Selezione o cattura immagine annnulata.</string>
- <string name="info_stored_image">Nuova immagine salvata su:</string>
- <string name="info_storing_static_maps">Tento di salvare la static map</string>
-
- <!-- location service -->
- <string name="loc_last">Ultima nota</string>
- <string name="loc_net">Network</string>
- <string name="loc_gps">GPS</string>
- <string name="loc_sat">Sat</string>
- <string name="loc_trying">Localizzazione in corso</string>
- <string name="loc_no_addr">Indirizzo sconosciuto</string>
- <string name="loc_gps_disabled">GPS non attivo</string>
-
- <!-- standard menu -->
- <string name="menu_about">Info c:geo</string>
- <string name="menu_helpers">Programmi utili</string>
- <string name="menu_settings">Settaggi</string>
- <string name="menu_history">Cronologia</string>
- <string name="menu_filter">Filtri</string>
- <string name="menu_scan_geo">Scan geocode</string>
-
- <!-- main screen -->
- <string name="live_map_button">Mappa</string>
- <string name="caches_nearby_button">Vicini</string>
- <string name="advanced_search_button">Cerca</string>
- <string name="stored_caches_button">Salvati</string>
- <string name="any_button">Ovunque</string>
- <string name="unknown_scan">Nessun geo code trovato nello scan.</string>
-
- <!-- caches -->
- <string name="caches_no_cache">Non ci sono cache</string>
- <string name="caches_more_caches">Carica altri cache</string>
- <string name="caches_more_caches_no">Nessun\'altro cache</string>
- <string name="caches_more_caches_loading">Caricamento dei cache…</string>
- <string name="caches_more_caches_currently">attualmente</string>
- <string name="caches_downloading">Download cache in corso…\nETA: </string>
- <string name="caches_eta_ltm">Meno di un minuto</string>
-
- <plurals name="caches_eta_mins">
- <item quantity="one">minuto</item>
- <item quantity="other">minuti</item>
- </plurals>
-
- <string name="caches_store_offline">Salva per Offline</string>
- <string name="caches_store_selected">Salva selezionati</string>
- <string name="caches_history">Cronologia</string>
- <string name="caches_on_map">Visualizza sulla mappa</string>
- <string name="caches_sort">Ordina</string>
- <string name="caches_sort_title">Ordina per</string>
- <string name="caches_sort_distance">Distanza</string>
- <string name="caches_sort_difficulty">Difficoltà</string>
- <string name="caches_sort_terrain">Terreno</string>
- <string name="caches_sort_size">Dimensione</string>
- <string name="caches_sort_favorites">Popolarità</string>
- <string name="caches_sort_name">Nome</string>
- <string name="caches_sort_geocode">Geo Code</string>
- <string name="caches_sort_rating">Voto</string>
- <string name="caches_sort_vote">Il tuo voto</string>
- <string name="caches_sort_inventory">Oggetti trackables</string>
- <string name="caches_sort_date_hidden">Data</string>
- <string name="caches_sort_date_logged">Data Log</string>
- <string name="caches_sort_finds">Numero ritrovamenti</string>
- <string name="caches_sort_state">Stato</string>
- <string name="caches_sort_storage">Data salvataggio</string>
- <string name="caches_select_mode">Modo Selezione</string>
- <string name="caches_select_mode_exit">Esci dal modo Selezione</string>
- <string name="caches_select_invert">Inverti selezione</string>
- <string name="caches_nearby">Qui vicino</string>
- <string name="caches_manage">Gestisci</string>
- <string name="caches_drop_selected">Elimina selezionati</string>
- <string name="caches_drop_selected_ask">Vuoi rimuovere i cache selezionati dal dispositivo?</string>
- <string name="caches_drop_all">Elimina tutti</string>
- <string name="caches_drop_all_ask">Vuoi rimuovere tutti i cache dalla lista corrente?</string>
- <string name="caches_drop_stored">Elimina i cache salvati</string>
- <string name="caches_drop_progress">Eliminando caches</string>
- <string name="caches_drop_all_and_list">Elimina tutti ed elimina la lista</string>
- <string name="caches_delete_events">Cancella eventi passati</string>
- <string name="caches_refresh_selected">Aggiorna i cache selezionati</string>
- <string name="caches_refresh_all">Aggiorna tutti</string>
- <string name="caches_move_selected">Muovi i cache selezionati</string>
- <string name="caches_move_all">Muovi tutti</string>
- <string name="caches_map_locus">Locus</string>
- <string name="caches_map_locus_export">Esporta in Locus</string>
- <string name="caches_recaptcha_title">reCAPTCHA</string>
- <string name="caches_recaptcha_explanation">Per cortesia riporta il testo letto sull\'immagine. È importante per scaricare le coordinate dei cache. È tuttavia opzionale e può essere disattivato nei settaggi.</string>
- <string name="caches_recaptcha_hint">Testo da immagine</string>
- <string name="caches_recaptcha_continue">Continua</string>
- <string name="caches_filter">Filtra</string>
- <string name="caches_filter_title">Filtra per</string>
- <string name="caches_filter_size">Dimensione</string>
- <string name="caches_filter_type">Tipo</string>
- <string name="caches_filter_track">Con oggetti trackables</string>
- <string name="caches_filter_clear">Rimuovi filtri</string>
- <string name="caches_filter_modified">Con coordinate modificate</string>
- <string name="caches_filter_origin">Origine</string>
- <string name="caches_removing_from_history">Rimozione dalla cronologia…</string>
- <string name="caches_clear_offlinelogs">Cancella i log offline</string>
- <string name="caches_clear_offlinelogs_progress">Cancellazione logs offline</string>
-
- <!-- caches lists -->
- <string name="list_menu">Lista</string>
- <string name="list_menu_create">Crea nuova lista</string>
- <string name="list_menu_all_lists">Tutte i cache</string>
- <string name="list_menu_drop">Elimina la lista corrente</string>
- <string name="list_menu_change">Cambia lista</string>
- <string name="list_menu_rename">Rinomina la lista corrente</string>
- <string name="list_title">Seleziona una lista</string>
- <string name="list_inbox">Salvate</string>
- <string name="list_all_lists">Tutti i cache</string>
- <string name="list_dialog_create_title">Nuova lista</string>
- <string name="list_dialog_create">Crea</string>
- <string name="list_dialog_cancel">Annulla</string>
- <string name="list_dialog_create_ok">Lista creata</string>
- <string name="list_dialog_create_err">c:geo non è riuscito a creare la lista</string>
- <string name="list_dialog_remove_title">Rimuovi lista</string>
- <string name="list_dialog_remove_description">Vuoi rimuovere la lista corrente? Tutti i cache contenuti verranno spostate nella lista base \"Salvati\".</string>
- <string name="list_dialog_remove">Rimuovi</string>
- <string name="list_dialog_remove_ok">Lista rimossa</string>
- <string name="list_dialog_remove_err">c:geo non è riuscito a rimuovere la lista corrente</string>
- <string name="list_dialog_rename_title">Rinomina lista</string>
- <string name="list_dialog_rename">Rinomina</string>
-
- <!-- about -->
- <string name="about_version">Versione</string>
- <string name="about_changelog">Modifiche</string>
- <string name="about_donate">Donazioni</string>
- <string name="about_donation_more">Donazione\nsviluppo</string>
- <string name="about_contributors">Contributori</string>
-
- <!-- init -->
- <string name="init_oc">opencaching.de</string>
- <string name="init_oc_de_description">Autorizza c:geo a cercare cache ed accedere/filtrare i ritrovamenti su opencaching.de</string>
- <string name="init_register_oc_de">Autorizza c:geo</string>
- <string name="init_gcvote">GCvote.com</string>
- <string name="init_twitter">Twitter</string>
- <string name="init_username">Utente</string>
- <string name="init_password">Password</string>
- <string name="init_login">Verifica login</string>
- <string name="init_login_popup">Login</string>
- <string name="init_login_popup_working">Logging…</string>
- <string name="init_login_popup_ok">Login OK.</string>
- <string name="init_login_popup_failed">Login fallito.</string>
- <string name="init_login_popup_failed_reason">Login fallito perché </string>
- <string name="init_twitter_authorize">Autorizza c:geo</string>
- <string name="init_signature">Firma</string>
- <string name="init_signature_help_text">Scrivi la tua firma da usare nei testi di log.\nStringhe speciali possono essere usate come: [DATE], [TIME], [DATETIME], [USER] e [NUMBER].\nSaranno espanse quando la firma viene inserita.</string>
- <string name="init_signature_template_button">Stringhe speciali</string>
- <string name="init_signature_template_date">Data</string>
- <string name="init_signature_template_time">Ora</string>
- <string name="init_signature_template_datetime">Data e Ora</string>
- <string name="init_signature_template_user">Utente</string>
- <string name="init_signature_template_number">Numero cache</string>
- <string name="init_signature_template_owner">Proprietario</string>
- <string name="init_ratingwanted">Carica il rating del cache da GCvote.com</string>
- <string name="init_summary_ratingwanted">Carica il rating del cache da GCvote.com</string>
- <string name="init_friendlogswanted">Carica logbook addizionale con i log dei miei amici</string>
- <string name="init_summary_friendlogswanted">Carica logbook addizionale con i log dei miei amici</string>
- <string name="init_openlastdetailspage">Ricorda l\'ultima pagina usata nei dettagli</string>
- <string name="init_summary_openlastdetailspage">Ricorda l\'ultima pagina usata nei dettagli</string>
- <string name="init_autoload">Carica automaticamente descrizione estesa</string>
- <string name="init_summary_autoload">Carica automaticamente descrizione estesa</string>
- <string name="init_skin">Tema chiaro\n(richiede riavvio di c:geo)</string>
- <string name="init_summary_skin">Tema chiaro\n(richiede riavvio di c:geo)</string>
- <string name="init_address">Visualizza indirizzo invece delle coordinate su pagina principale</string>
- <string name="init_summary_address">Visualizza indirizzo invece delle coordinate su pagina principale</string>
- <string name="init_captcha">Visualizza CAPTCHA se necessario (solo utenti base, non Premium)</string>
- <string name="init_summary_captcha">Visualizza CAPTCHA se necessario (solo utenti base, non Premium)</string>
- <string name="init_useenglish">Usa sempre English in c:geo\n(richiede riavvio)</string>
- <string name="init_summary_useenglish">Usa sempre English in c:geo\n(richiede riavvio)</string>
- <string name="init_exclude">Escludi i miei cache e queli che ho già trovato</string>
- <string name="init_summary_exclude">Escludi i miei cache e queli che ho già trovato</string>
- <string name="init_showwaypoints">Mostra waypoints sulla mappa</string>
- <string name="init_showwaypoint_description">Se sulla mappa sono mostrati meno cache di quelli indicati, saranno mostrati anche i relativi waypoints.</string>
- <string name="init_disabled">Escludi cache disattivati</string>
- <string name="init_summary_disabled">Escludi cache disattivati</string>
- <string name="init_offline">Salva le mappe per uso offline</string>
- <string name="init_summary_offline">Salva le mappe per uso offline</string>
- <string name="init_offline_wp">Salva i waypoints delle mappe per uso offline</string>
- <string name="init_summary_offline_wp">Salva i waypoints delle mappe per uso offline</string>
- <string name="init_save_log_img">Salva immagini contenute nei log</string>
- <string name="init_summary_save_log_img">Salva immagini contenute nei log</string>
- <string name="init_units">Usa miglia/piedi</string>
- <string name="init_summary_units">Usa miglia/piedi</string>
- <string name="init_log_offline">Attiva log offline (non visualizzerà lo schermo di log online, non invierà subito il log)</string>
- <string name="init_summary_log_offline">Attiva log offline (non visualizzerà lo schermo di log online, non invierà subito il log)</string>
- <string name="init_choose_list">Chiedi la lista quando salvi un cache</string>
- <string name="init_summary_choose_list">Chiedi la lista quando salvi un cache</string>
- <string name="init_livelist">Visualizza in che direzione sono i cache, nelle liste</string>
- <string name="init_summary_livelist">Visualizza in che direzione sono i cache, nelle liste</string>
- <string name="init_backup">Backup</string>
- <string name="init_backup_backup">Backup</string>
- <string name="init_backup_running">Creazione del backup del database dei cache in corso…</string>
- <string name="init_backup_note">Si prega di notare che questa opzione farà backup o ripristino del database contenente i cache ed i waypoint, ma non i settaggi. Quindi le tue informazioni di login non lasceranno mai questo dispositivo.</string>
- <string name="init_backup_restore">Ripristino</string>
- <string name="init_backup_success">Il database di c:geo è stato salvato con successo nel file</string>
- <string name="init_backup_failed">Backup del database di c:geo fallito.</string>
- <string name="init_backup_unnecessary">Il database è vuoto, il backup non è necessario.</string>
- <string name="init_restore_success">Ripristino completato.</string>
- <string name="init_restore_failed">Ripristino fallito.</string>
- <string name="init_restore_running">Ripristino del database dei cache…</string>
- <string name="init_restore_confirm">Il database è vuoto. Vuoi ripristinare il backup?</string>
- <string name="init_backup_last">Disponibile Backup delle</string>
- <string name="init_backup_last_no">Non esiste il file con il backup.</string>
- <string name="init_mapsource_select">Seleziona il tipo di mappa</string>
- <string name="init_map_directory_description">Cartella con le mappe offline</string>
- <string name="init_gpx_exportdir">Cartella di export GPX</string>
- <string name="init_gpx_importdir">Cartella di import GPX</string>
- <string name="init_maptrail">Mostra la scia nella Mappa</string>
- <string name="init_summary_maptrail">Mostra la scia nella Mappa</string>
- <string name="init_share_after_export">Apri menu condividi dopo export GPX</string>
- <string name="init_trackautovisit">Setta i miei oggetti Trackables automaticamente su \"visit\" quando invio log</string>
- <string name="init_summary_trackautovisit">Setta i miei oggetti Trackables automaticamente su \"visit\" quando invio log</string>
- <string name="init_sigautoinsert">Inserisce automaticamente</string>
- <string name="init_loaddirectionimg">Carica le immagini di direzione se necessario</string>
- <string name="init_summary_loaddirectionimg">Carica le immagini di direzione se necessario</string>
- <string name="init_default_navigation_tool">Navigatore preferito</string>
- <string name="init_default_navigation_tool_description">Qui puoi scegliere il tuo strumento di navigazione preferito. Sarà attivato cliccando l\'icona di navigazione vicino al titolo del cache.</string>
- <string name="init_default_navigation_tool_select">Scegli navigatore</string>
- <string name="init_default_navigation_tool_2_description">Qui puoi scegliere il tuo secondo navigatore preferito. Sarà attivato tenendo premuto l\'icona di navigazione vicino al titolo del cache.</string>
- <string name="init_debug_title">Informazioni di Debug</string>
- <string name="init_debug_note">c:geo può generare molte informazioni di debug. Per quanto queste informazioni non sono generalmente utili agli utenti di c:geo, gli sviluppatori potrebbero averne bisogno per analizzare un eventuale problema. In questo caso, vi sarà chiesto di settare l\'opzione sottostante ed inviare il log.</string>
- <string name="init_debug">Genera informazioni di debug</string>
- <string name="init_dbonsdcard_title">Posizione Database</string>
- <string name="init_dbonsdcard_note">Puoi decidere di salvare il database su memoria esterna. In questo caso risparmierai memoria interna ma potresti perdere un pochino di velocità e c:geo non funzionerà se la tua sdcard non sarà disponibile.</string>
- <string name="init_dbonsdcard">Su memoria esterna</string>
- <string name="init_dbmove_dbmove">Spostamento Database</string>
- <string name="init_dbmove_running">Spostamento Database</string>
- <string name="init_dbmove_success">Database spostato con successo.</string>
- <string name="init_dbmove_failed">Spostamento fallito</string>
- <string name="init_plain_logs">Visualizza i LOG senza colori</string>
- <string name="init_summary_plain_logs">Visualizza i LOG senza colori</string>
- <string name="init_use_native_ua">Identifica come browser Android. Risolve alcuni problemi di login con alcuni provider di rete.</string>
- <string name="init_summary_use_native_ua">Identifica come browser Android. Risolve alcuni problemi di login con alcuni provider di rete.</string>
- <!-- map sources -->
- <string name="map_source_google_map">Google: Map</string>
- <string name="map_source_google_satellite">Google: Satellite</string>
- <string name="map_source_osm_mapnik">OSM: Mapnik</string>
- <string name="map_source_osm_cyclemap">OSM: Cyclemap</string>
- <string name="map_source_osm_offline">Offline</string>
- <string name="init_sendToCgeo">Send to c:geo</string>
- <string name="init_sendToCgeo_name">Nome dispositivo</string>
- <string name="init_sendToCgeo_description">\"Send to c:geo\" permette di ricevere cache direttamente dal sito geocaching.com tramite un plugin speciale per Firefox o Chrome. Prima della registrazione leggere <a href="http://send2.cgeo.org/">http://send2.cgeo.org/</a>. È necessario registrare questo dispositivo solo se intendi usare send2cgeo. C:geo funzionerà anche senza questa registrazione e senza send2cgeo.</string>
- <string name="init_sendToCgeo_register">Richiedi registrazione</string>
- <string name="init_sendToCgeo_registering">Registrazione in corso a \"Send to c:geo\"…</string>
- <string name="init_sendToCgeo_register_ok">Registrazione terminata. Il tuo PIN code è ####. Usalo sul sito di c:geo per aggiungere il dispositivo al tuo browser Firefox o Chrome.</string>
- <string name="init_sendToCgeo_register_fail">Registrazione fallita.</string>
- <string name="sendToCgeo_download_fail">c:geo non riesce a scaricare cache. Nessuna connessione internet o server send2c:geo non attivo.</string>
- <string name="sendToCgeo_no_registration">c:geo non riesce a scaricare cache. La registrazione a send2c:geo è scaduta. Si prega di ripeterla nei settaggi.</string>
-
- <!-- auth -->
- <string name="auth_twitter">Twitter</string>
- <string name="auth_authorize">Autorizza c:geo</string>
- <string name="auth_start">Avvia autorizzazione</string>
- <string name="auth_again">Avvia ancora</string>
- <string name="auth_pin_hint">PIN assegnato da Twitter</string>
- <string name="auth_finish">Fine</string>
- <string name="auth_dialog_wait">In attesa di Twitter…</string>
- <string name="auth_dialog_pin_title">Codice PIN</string>
- <string name="auth_dialog_pin_message">Prego inserire il codice PIN fornito dal sito Twitter. È necessario per completare l\'autorizzazione.</string>
- <string name="auth_dialog_completed">c:geo è ora autorizzato ad inviare a Twitter.</string>
-
- <!-- auth opencaching -->
- <string name="auth_ocde">opencaching.de</string>
- <string name="auth_authorize_oc">Autorizza c:geo</string>
- <string name="auth_start_oc">Start autorizzazione</string>
- <string name="auth_again_oc">Start nuovamente</string>
- <string name="auth_pin_hint_oc">PIN assegnato da %s</string>
- <string name="auth_finish_oc">Fine</string>
- <string name="auth_dialog_wait_oc">In attesa di %s…</string>
- <string name="auth_dialog_pin_title_oc">PIN code</string>
- <string name="auth_dialog_pin_message_oc">Prego riportare il PIN fornito dal sito %s. È necessario per completare l\'autorizzazione.</string>
- <string name="auth_dialog_completed_oc">c:geo è ora autorizzato ad accedere a %s.</string>
- <string name="about_auth_1_oc">La procedura seguente consentirà a <b>c:geo</b></string>
- <string name="about_auth_2_oc">Un click sul pulsante \"Autorizza c:geo\" inizierà la procedura. Verrà aperta la pagina %s nel browser. Effettua Login sulla pagina ed acconsenti a <b>c:geo</b></string>
-
- <!-- cache -->
- <plurals name="cache_counts">
- <item quantity="one">Un cache</item>
- <item quantity="other">%1$d cache</item>
- </plurals>
-
- <string name="cache_offline">Offline</string>
- <string name="cache_offline_refresh">Aggiorna</string>
- <string name="cache_offline_drop">Elimina</string>
- <string name="cache_offline_store">Salva</string>
- <string name="cache_offline_stored">Salvato nel dispositivo</string>
- <string name="cache_offline_not_ready">Non disponibile offline</string>
- <string name="cache_offline_time_about">circa</string>
- <string name="cache_offline_time_mins">minuti fa</string>
- <string name="cache_offline_time_mins_few">qualche minuto fa</string>
- <string name="cache_offline_time_hour">un\'ora fa</string>
- <string name="cache_offline_time_hours">ore fa</string>
- <string name="cache_offline_time_days">giorni fa</string>
- <string name="cache_premium">Premium</string>
- <string name="cache_attributes">Attributi</string>
- <string name="cache_inventory">Oggetti</string>
- <string name="cache_log_offline">Log Offline</string>
- <string name="cache_log_images_title">Immagini Log</string>
- <string name="cache_log_image_default_title">Foto</string>
- <string name="cache_personal_note">Note personali</string>
- <string name="cache_personal_note_edit">Modifica</string>
- <string name="cache_personal_note_unstored">Cache non salvati</string>
- <string name="cache_personal_note_store">Il cache verrà prima salvato per abilitare le note personali.</string>
- <string name="cache_description">Descrizione</string>
- <string name="cache_description_long">Descrizione estesa</string>
- <string name="cache_description_table_note">La descrizione contiene una tabella formattata in modo tale che potresti aver bisogno di andare su %s per vederla correttamente.</string>
- <string name="cache_watchlist_on">Questo cache è nella tua watchlist.</string>
- <string name="cache_watchlist_not_on">Questo cache non è nella tua watchlist.</string>
- <string name="cache_watchlist_add">Aggiungi alla watchlist</string>
- <string name="cache_watchlist_remove">Rimuovi dalla watchlist</string>
- <string name="cache_favpoint_on">Questo cache è uno dei tuoi favoriti.</string>
- <string name="cache_favpoint_not_on">Questo cache non è uno dei tuoi favoriti.</string>
- <string name="cache_favpoint_add">Aggiungi</string>
- <string name="cache_favpoint_remove">Rimuovi</string>
- <string name="cache_list_text">Lista:</string>
- <string name="cache_list_change">Sposta</string>
- <string name="cache_list_unknown">Non in una lista</string>
- <string name="cache_images">Immagini</string>
- <string name="cache_waypoints">Waypoints</string>
-
- <plurals name="waypoints">
- <item quantity="one">1 Waypoint</item>
- <item quantity="other">%d Waypoint</item>
- </plurals>
-
- <string name="cache_waypoints_add">Aggiungi waypoint</string>
- <string name="cache_hint">Aiuto (spoiler)</string>
- <string name="cache_logs">Logbook</string>
- <string name="cache_logsfriends">Log amici</string>
- <string name="cache_dialog_loading_details">Caricamento dettagli del cache…</string>
- <string name="cache_dialog_loading_details_status_loadpage">Caricamento pagina</string>
- <string name="cache_dialog_loading_details_status_details">Elaborazione dettagli</string>
- <string name="cache_dialog_loading_details_status_spoilers">Caricamento immagini spoiler</string>
- <string name="cache_dialog_loading_details_status_logs">Caricamento log</string>
- <string name="cache_dialog_loading_details_status_waypoints">Elaborazione waypoints</string>
- <string name="cache_dialog_loading_details_status_gcvote">Caricamento GCVote</string>
- <string name="cache_dialog_loading_details_status_cache">Salvataggio dati</string>
- <string name="cache_dialog_loading_details_status_render">Creazione pagina</string>
- <string name="cache_dialog_offline_save_title">Offline</string>
- <string name="cache_dialog_offline_save_message">Salvataggio del cache per uso offline…</string>
- <string name="cache_dialog_offline_drop_title">Offline</string>
- <string name="cache_dialog_offline_drop_message">Eliminazione del cache dalla memoria del dispositivo…</string>
- <string name="cache_dialog_refresh_title">Aggiorna</string>
- <string name="cache_dialog_refresh_message">Ricaricamento dettagli cache…</string>
- <string name="cache_dialog_watchlist_add_title">Watchlist</string>
- <string name="cache_dialog_watchlist_add_message">Aggiunto il cache alla watchlist in corso…</string>
- <string name="cache_dialog_watchlist_remove_title">Watchlist</string>
- <string name="cache_dialog_watchlist_remove_message">Rimozione dei cache dalla tua watchlist…</string>
- <string name="cache_dialog_favorite_add_title">Preferiti</string>
- <string name="cache_dialog_favorite_add_message">Aggiungi il cache ai tuoi preferiti…</string>
- <string name="cache_dialog_favorite_remove_title">Preferiti</string>
- <string name="cache_dialog_favorite_remove_message">Rimozione cache dai tuoi preferiti…</string>
- <string name="cache_menu_navigate">Naviga</string>
- <string name="cache_menu_navigation_drive">Naviga (in auto)</string>
- <string name="cache_menu_navigation_walk">Naviga (a piedi)</string>
- <string name="cache_menu_maps_directions">Direzioni su Google Maps</string>
- <string name="cache_menu_radar">Radar</string>
- <string name="cache_menu_map">Mappa</string>
- <string name="cache_menu_map_static">Mappe statiche</string>
- <string name="cache_menu_download_map_static">Scarica mappe statiche</string>
- <string name="cache_menu_rmaps">Rmaps</string>
- <string name="cache_menu_map_ext">Mappa su app esterna</string>
- <string name="cache_menu_streetview">Street View</string>
- <string name="cache_menu_browser">Apri nel browser</string>
- <string name="cache_menu_visit">Scrivi Log</string>
- <string name="cache_menu_visit_offline">Scrivi Log offline</string>
- <string name="cache_menu_spoilers">Immagini spoiler</string>
- <string name="cache_menu_around">Cache qui intorno</string>
- <string name="cache_menu_event">Aggiungi al calendario</string>
- <string name="cache_menu_details">Dettagli</string>
- <string name="cache_menu_refresh">Aggiorna</string>
- <string name="cache_menu_share">Condividi cache</string>
- <string name="cache_menu_move_list">Muovi in un\'altra lista</string>
- <string name="cache_menu_gcc">GCC</string>
- <string name="cache_menu_whereyougo">WhereYouGo</string>
- <string name="cache_menu_oruxmaps">OruxMaps</string>
- <string name="cache_menu_cachebeacon">Cache Beacon</string>
- <string name="cache_status">Stato</string>
- <string name="cache_status_offline_log">Log salvato</string>
- <string name="cache_status_found">Trovato</string>
- <string name="cache_status_archived">Archiviato</string>
- <string name="cache_status_disabled">Non attivo</string>
- <string name="cache_status_premium">Solo per utenti Premium</string>
- <string name="cache_status_not_premium">Per tutti gli utenti</string>
- <string name="cache_status_stored">Salvato</string>
- <string name="cache_status_not_stored">Non salvato</string>
- <string name="cache_geocode">geo code</string>
- <string name="cache_name">Nome</string>
- <string name="cache_type">Tipo</string>
- <string name="cache_size">Dimensione</string>
- <string name="cache_distance">Distanza</string>
- <string name="cache_difficulty">Difficoltà</string>
- <string name="cache_terrain">Terreno</string>
- <string name="cache_rating">Voto</string>
- <string name="cache_own_rating">Il tuo voto</string>
- <string name="cache_rating_of">di</string>
- <string name="cache_favorite">Popolarità</string>
- <string name="cache_owner">Proprietario</string>
- <string name="cache_hidden">Nascosto il</string>
- <string name="cache_event">Data</string>
- <string name="cache_location">Luogo</string>
- <string name="cache_coordinates">Coordinate</string>
- <string name="cache_coordinates_original">Coordinate originali</string>
- <string name="cache_spoiler_images_title">Immagini spoiler</string>
- <string name="cache_images_title">Immaginis</string>
- <string name="cache_log_types">Tipi di Log</string>
- <string name="cache_coordinates_no">Questo cache non ha coordinate.</string>
- <string name="cache_clear_history">Cancella cronologia</string>
- <string name="cache_remove_from_history">Rimuovi dalla cronologia</string>
- <string name="cache_license">Licenza</string>
- <string name="cache_image">Immagine</string>
- <string name="cache_image_open_file">Apri un file</string>
- <string name="cache_image_open_browser">Apri nel browser</string>
- <string name="cache_share_field">Condividi</string>
- <string name="cache_time_full_hours">Precise</string>
- <string name="cache_listed_on">Elencato su %s</string>
-
- <!-- editor dialog -->
-
- <!-- file list base -->
- <string name="file_searching_in">Ricerca file\nin</string>
- <string name="file_searching_sdcard_in">Nessun file trovato nella cartella di default:\n%1$s\n\nRicerca in tutta la SD i files:\n</string>
- <string name="file_list_no_files">c:geo non ha trovato file appropriati.</string>
- <string name="file_searching">Ricerca file corrispondenti</string>
- <string name="file_title_searching">Ricerca in corso</string>
-
- <!-- simple_dir_chooser -->
- <string name="simple_dir_chooser_title">Scegli cartella</string>
- <string name="simple_dir_chooser_current_path">Path:</string>
-
- <!-- gpx -->
- <string name="gpx_import_loading_caches">Caricamento dei cache da file GPX</string>
- <string name="gpx_import_loading_waypoints">Caricamento file waypoints</string>
- <string name="gpx_import_store_static_maps">Salvataggio mappe statiche</string>
- <string name="gpx_import_caches_imported">cache importati</string>
- <string name="gpx_import_static_maps_skipped">Download mappe statiche interrotto</string>
- <string name="gpx_import_title_static_maps">Salva mappe statiche</string>
- <string name="gpx_import_title_reading_file">Lettura file</string>
- <string name="gpx_import_title">Importa GPX</string>
- <string name="gpx_import_title_caches_imported">Risultato</string>
- <string name="gpx_import_title_caches_import_failed">Importazione fallita</string>
- <string name="gpx_import_error_io">Impossibile leggere il file</string>
- <string name="gpx_import_error_parser">Il formato del file non è compatibile</string>
- <string name="gpx_import_error_unexpected">Errore inaspettato</string>
- <string name="gpx_import_canceled">Importazione GPX annullata</string>
- <string name="gpx_import_delete_title">Cancella file</string>
- <string name="gpx_import_delete_message">Vuoi cancellare %s?</string>
-
- <!-- map file select -->
- <string name="map_file_select_title">Seleziona il file mappa</string>
-
- <!-- import -->
- <string name="web_import_title">Importa dal web</string>
- <string name="web_import_waiting">In attesa di nuovi cache dal web…</string>
- <string name="web_downloading">Download in corso</string>
- <string name="web_downloaded">Download terminato</string>
-
- <!-- popup -->
- <string name="popup_more">Altri dettagli</string>
-
- <!-- waypoint -->
- <string name="waypoint">Waypoint</string>
- <string name="waypoint_cache_coordinates">Coordinate cache</string>
- <string name="waypoint_custom">Custom</string>
- <string name="waypoint_my_coordinates">Coordinate attuali</string>
- <string name="waypoint_bearing">Angolo in gradi</string>
- <string name="waypoint_distance">Distanza</string>
- <string name="waypoint_name">Nome</string>
- <string name="waypoint_edit">Modifica</string>
- <string name="waypoint_delete">Elimina</string>
- <string name="waypoint_edit_title">Modifica waypoint</string>
- <string name="waypoint_add_title">Aggiungi waypoint</string>
- <string name="waypoint_note">Note</string>
- <string name="waypoint_visited">Visitato</string>
- <string name="waypoint_save">Salva</string>
- <string name="waypoint_loading">Caricamento waypoint…</string>
- <string name="waypoint_do_not_touch_cache_coordinates">Nessuna modifica alle coordinate cache</string>
- <string name="waypoint_set_as_cache_coords">Setta come coordinate cache</string>
- <string name="waypoint_coordinates_has_been_reset_on_website">Le coordinates sono state resettate su web</string>
- <string name="waypoint_save_and_modify_on_website">Setta come coordinate cache in c:geo e su web</string>
- <string name="waypoint_reset_cache_coords">Resetta le coordinate cache</string>
- <string name="waypoint_coordinates_being_reset_on_website">Le coordinate sono in fase di reset su web</string>
- <string name="waypoint_reset">Reset</string>
- <string name="waypoint_localy_reset_cache_coords">Resetta in c:geo</string>
- <string name="waypoint_reset_local_and_remote_cache_coords">Resetta in c:geo e su web.</string>
- <string name="waypoint_being_saved">Salvataggio Waypoint…</string>
- <string name="waypoint_coordinates_couldnt_be_modified_on_website">Il sito web non supporta la modifica delle coordinate</string>
- <string name="waypoint_coordinates_upload_error">Errore durante il caricamento delle coordinate su web</string>
- <string name="waypoint_coordinates_uploading_to_website">Caricamento delle coordinate %s su web</string>
- <string name="waypoint_coordinates_has_been_modified_on_website">Le coordinate cache su web sono state modificate in: %s.</string>
- <string name="waypoint_done">Fatto</string>
- <string name="waypoint_duplicate">Duplicato</string>
- <string name="waypoint_copy_of">Copia di</string>
- <string name="search_history">Cronologia</string>
- <string name="search_history_empty">Nessuna precedente destinazione</string>
- <string name="search_remove_destination">Destinazione rimossa</string>
- <string name="search_clear_history">Cancella cronologia</string>
- <string name="search_history_cleared">Cronologia azzerata</string>
- <string name="waypoint_coordinate_formats_plain">Plain</string>
-
- <!-- visit -->
- <string name="visit_tweet">Segnala questo ritrovamento su Twitter</string>
-
- <!-- map -->
- <string name="map_map">Mappa</string>
- <string name="map_live">Mappa Live</string>
- <string name="map_view_map">Scegli mappa</string>
- <string name="map_modes">Modi mappa</string>
- <string name="map_trail_show">Mostra scia</string>
- <string name="map_trail_hide">Nasconde scia</string>
- <string name="map_circles_show">Mostra area cache</string>
- <string name="map_circles_hide">Nascondi area cache</string>
- <string name="map_theme_builtin">Tema predefinito</string>
- <string name="map_theme_select">Scegli un tema mappa</string>
- <string name="map_live_enable">Attiva online</string>
- <string name="map_live_disable">Disattiva online</string>
- <string name="map_static_title">Mappe statiche</string>
- <string name="map_static_loading">Caricamento mappe statiche…</string>
- <string name="map_token_err">Dato che c:geo riesce a scaricare solo dati parziali, le coordinate dei cache potrebbero non essere accurate.</string>
- <string name="map_as_list">Mostra lista dei cache</string>
- <string name="map_strategy">Strategia</string>
- <string name="map_strategy_title">Strategia mappa Live</string>
- <string name="map_strategy_fastest">La più veloce</string>
- <string name="map_strategy_fast">Veloce</string>
- <string name="map_strategy_auto">In base alla tua velocità</string>
- <string name="map_strategy_detailed">Dettagliata</string>
- <string name="live_map_notification">Nella nuova Mappa Live le coordinate potrebbero non essere sempre precise. Coordinate possibilmente imprecise sono marcate da un cerchio arancione.\nAprendo i dettagli del cache o salvando il cache per uso offline farà calcolare sempre coordinate precise.\n\nInformazioni addizionali su tutte le modifiche si possono trovare nel menu \"Info c:geo\" sulla pagina principale di questa app.</string>
- <string name="live_map_note_dontshow">Non mostrare ancora</string>
-
- <!-- search -->
- <string name="search_bar_hint">Cerca caches</string>
- <string name="search_bar_desc">Cache (geo code, parole chiave), Oggetti trackables (TB-code)</string>
- <string name="search_coordinates">Coordinate</string>
- <string name="search_coordinates_button">Cerca per coordinate</string>
- <string name="search_address">Indirizzo</string>
- <string name="search_address_button">Cerca per indirizzo</string>
- <string name="search_geo">Geo code</string>
- <string name="search_geo_button">Cerca per geo code</string>
- <string name="search_kw">Parole chiave</string>
- <string name="search_kw_prefill">Parola chiave</string>
- <string name="search_kw_button">Cerca per parola chiave</string>
- <string name="search_fbu">Trovata dall\'utente</string>
- <string name="search_fbu_prefill">Nome utente</string>
- <string name="search_fbu_button">Cerca per nome utente</string>
- <string name="search_hbu">Nascosta dall\'utente</string>
- <string name="search_hbu_prefill">Proprietario</string>
- <string name="search_hbu_button">Cerca per proprietario</string>
- <string name="search_tb">Oggetto trackable</string>
- <string name="search_tb_hint">Identificativo Trackable</string>
- <string name="search_tb_button">Cerca per trackable</string>
- <string name="search_destination">Destinazione</string>
- <string name="search_direction_rel">Dalla posizione attuale</string>
- <string name="search_address_started">Cerca per luoghi</string>
- <string name="search_address_result">Cerca luoghi</string>
- <string name="search_own_caches">Cerca i miei cache</string>
-
- <!-- trackable -->
- <string name="trackable">Oggetto trackable</string>
- <string name="trackable_details_loading">Caricamento dettagli trackable…</string>
- <string name="trackable_log_touch">Documenta il contatto</string>
- <string name="trackable_browser_open">Apri nel Browser</string>
- <string name="trackable_goal">Obbiettivo</string>
- <string name="trackable_details">Dettagli</string>
- <string name="trackable_image">Immagine</string>
- <string name="trackable_code">TB-Code</string>
- <string name="trackable_name">Nome</string>
- <string name="trackable_type">Tipo</string>
- <string name="trackable_owner">Proprietario</string>
- <string name="trackable_spotted">Contattato</string>
- <string name="trackable_spotted_in_cache">In</string>
- <string name="trackable_spotted_at_user">Nelle mani di</string>
- <string name="trackable_spotted_unknown_location">Posizione sconosciuta</string>
- <string name="trackable_spotted_owner">Nelle mani del proprietario</string>
- <string name="trackable_origin">Origine</string>
- <string name="trackable_unknown">Sconosciuto</string>
- <string name="trackable_released">Rilasciato</string>
- <string name="trackable_distance">Portato</string>
- <string name="trackable_touch">Contatto</string>
-
- <!-- user -->
- <string name="user_menu_title">Info</string>
- <string name="user_menu_view_hidden">Cache nascosti</string>
- <string name="user_menu_view_found">Cache trovati</string>
- <string name="user_menu_open_browser">Apri profilo nel browser</string>
- <string name="user_menu_send_message">Invia messaggio</string>
-
- <!-- navigation -->
- <string name="navigation">Navigazione</string>
- <string name="compass_title">Bussola</string>
- <string name="use_gps">Usa Nord solo da GPS</string>
- <string name="use_compass">Usa Nord da GPS e bussola</string>
- <string name="destination_select">Scegli destinazione</string>
- <string name="destination_set">Attiva destinazione</string>
- <string name="navigation_direct_navigation">Navigazione diretta</string>
- <string name="navigation_target">Destinazione</string>
-
- <!-- license -->
- <string name="license">Licenza</string>
- <string name="license_show">Mostra licenza</string>
- <string name="license_dismiss">Chiudi</string>
-
- <!-- helpers -->
- <string name="helper_calendar_title">c:geo calendario add-on</string>
- <string name="helper_calendar_missing">c:geo calendario add-on non installato</string>
- <string name="helper_calendar_description">Permette di esportare gli eventi cache nel calendario del tuo dispositivo.</string>
- <string name="helper_locus_title">Locus</string>
- <string name="helper_locus_description">Applicazione semplice da usare che mostra mappe online permettendo di scaricarle direttamente per l\'uso offline (solo mappe raster). Supporta inoltra la registrazione di traccia, gestione dei waypoints e altre utili funzioni.</string>
- <string name="helper_gpsstatus_title">GPS Status</string>
- <string name="helper_gpsstatus_description">Puoi usare il radar di questa applicazione con c:geo. Offre inoltre molte informazioni addizionali legate al GPS.</string>
- <string name="helper_bluetoothgps_title">Bluetooth GPS</string>
- <string name="helper_bluetoothgps_description">Permette di utilizzare un GPS esterno, garantendo maggiore precisione, migliore ricezione e prolungando la durata della batteria del dispositivo.</string>
- <string name="helper_barcode_title">Barcode Scanner</string>
- <string name="helper_barcode_description">Ci sono script Greasemonkey e siti web che consentono di visualizzare un geocode come codice a barre. Con questa app c:geo può leggere il geocode direttamente dallo schermo del tuo computer.</string>
- <string name="helper_pocketquery_title">Creatore di Pocket Query</string>
- <string name="helper_pocketquery_description">Consente di creare facilmente Pocket Queries centrate sulla tua posizione attuale o un punto scelto dalla mappa. Richiede un account premium su Geocaching.com.</string>
- <!-- add-ons -->
- <string name="addon_missing_title">Add-On mancante</string>
- <string name="addon_download_prompt">Scaricalo ora da Google Play.</string>
-
- <!-- export -->
- <string name="export">Esporta</string>
- <string name="export_exportedto">esportato in</string>
- <string name="export_failed">Esportazione fallita</string>
- <string name="export_fieldnotes">Field Note</string>
- <string name="export_fieldnotes_info">Field Note saranno esportate in /sdcard/field-notes con data e ora corrente nel nome file.</string>
- <string name="export_fieldnotes_upload">Carica su geocaching.com</string>
- <string name="export_fieldnotes_uploading">Caricamento…</string>
- <string name="export_fieldnotes_upload_success">Caricato su geocaching.com con successo</string>
- <string name="export_fieldnotes_onlynew">Solo quelli nuovi rispetto all\'ultima esportazione</string>
- <string name="export_fieldnotes_creating">Creazione Field Notes…</string>
- <string name="export_gpx">GPX</string>
- <string name="export_gpx_info">Il file GPX sarà esportato in %1$s con data ed ora correnti come nome file.</string>
- <string name="export_gpx_to">Invia il GPX esportato a</string>
-
- <!-- GC attributes -->
- <string name="attribute_dogs_yes">Cani permessi</string>
- <string name="attribute_dogs_no">Cani NON permessi</string>
- <string name="attribute_bicycles_yes">Biciclette permesse</string>
- <string name="attribute_bicycles_no">Biciclette NON permesse</string>
- <string name="attribute_motorcycles_yes">Moto permesse</string>
- <string name="attribute_motorcycles_no">Moto NON permesse</string>
- <string name="attribute_quads_yes">Quad permessi</string>
- <string name="attribute_quads_no">Quad NON permessi</string>
- <string name="attribute_jeeps_yes">Veicoli fuoristrada permessi</string>
- <string name="attribute_jeeps_no">Veicoli fuoristrada NON permessi</string>
- <string name="attribute_snowmobiles_yes">Motoslitte permesse</string>
- <string name="attribute_snowmobiles_no">Motoslitte NON permesse</string>
- <string name="attribute_horses_yes">Cavalli permessi</string>
- <string name="attribute_horses_no">Cavalli NON permessi</string>
- <string name="attribute_campfires_yes">Fuochi da campo permessi</string>
- <string name="attribute_campfires_no">Fuochi da campo NON permessi</string>
- <string name="attribute_rv_yes">Camper/roulotte permessi</string>
- <string name="attribute_rv_no">Camper/roulotte NON permessi</string>
- <string name="attribute_kids_yes">Raccomandato per bambini</string>
- <string name="attribute_kids_no">Non raccomandato per bambini</string>
- <string name="attribute_onehour_yes">Richiede meno di un\'ora</string>
- <string name="attribute_onehour_no">Richiede più di un\'ora</string>
- <string name="attribute_scenic_yes">Panoramico</string>
- <string name="attribute_scenic_no">Non panoramico</string>
- <string name="attribute_hiking_yes">Trekking impegnativo</string>
- <string name="attribute_hiking_no">Trekking facile</string>
- <string name="attribute_climbing_yes">Arrampicata difficile</string>
- <string name="attribute_climbing_no">Arrampicata facile o assente </string>
- <string name="attribute_wading_yes">Può richiedere un guado</string>
- <string name="attribute_wading_no">Non prevede guadi</string>
- <string name="attribute_swimming_yes">Può richiedere nuoto</string>
- <string name="attribute_swimming_no">Non richiede nuoto</string>
- <string name="attribute_available_yes">Disponibile ad ogni ora</string>
- <string name="attribute_available_no">Non disponibile ad ogni ora</string>
- <string name="attribute_night_yes">Raccomandato di notte</string>
- <string name="attribute_night_no">Non raccomandato di notte</string>
- <string name="attribute_winter_yes">Disponibile d\'inverno</string>
- <string name="attribute_winter_no">Non disponibile d\'inverno</string>
- <string name="attribute_stealth_yes">Richiede invisibilità</string>
- <string name="attribute_stealth_no">Non richiede invisibilità</string>
- <string name="attribute_firstaid_yes">Necessita di manutenzione</string>
- <string name="attribute_firstaid_no">Non necessita di manutenzione</string>
- <string name="attribute_cow_yes">Attenzione agli animali</string>
- <string name="attribute_cow_no">Non ci sono animali</string>
- <string name="attribute_field_puzzle_yes">Terreno accidentato</string>
- <string name="attribute_field_puzzle_no">Terreno non accidentato</string>
- <string name="attribute_nightcache_yes">Cache notturno</string>
- <string name="attribute_nightcache_no">Cache non notturno</string>
- <string name="attribute_parkngrab_yes">Parcheggia e trova!</string>
- <string name="attribute_parkngrab_no">Parcheggio lontano</string>
- <string name="attribute_abandonedbuilding_yes">Struttura abbandonata</string>
- <string name="attribute_abandonedbuilding_no">Struttura non abbandonata</string>
- <string name="attribute_hike_short_yes">Breve trekking (meno di 1 km)</string>
- <string name="attribute_hike_short_no">Trekking non breve</string>
- <string name="attribute_hike_med_yes">Medio trekking (da 1 km a 10 km)</string>
- <string name="attribute_hike_med_no">Trekking non medio</string>
- <string name="attribute_hike_long_yes">Lungo trekking (più di 10 km)</string>
- <string name="attribute_hike_long_no">Trekking non lungo</string>
- <string name="attribute_seasonal_yes">Accesso stagionale</string>
- <string name="attribute_seasonal_no">Nessun limite stagionale</string>
- <string name="attribute_touristok_yes">Turistico</string>
- <string name="attribute_touristok_no">Non turistico</string>
- <string name="attribute_frontyard_yes">Residenza privata</string>
- <string name="attribute_frontyard_no">Residenza non privata</string>
- <string name="attribute_teamwork_yes">Richiesto lavoro di gruppo</string>
- <string name="attribute_teamwork_no">Fattibile anche da soli</string>
- <string name="attribute_landf_yes">Tour \"Lost and found\"</string>
- <string name="attribute_landf_no">Non è un tour \"Lost and found\"</string>
- <string name="attribute_partnership_yes">Cache di gruppo</string>
- <string name="attribute_partnership_no">Cache non di gruppo</string>
- <string name="attribute_fee_yes">Accesso o parcheggio a pagamento</string>
- <string name="attribute_fee_no">Accesso o parcheggio non a pagamento</string>
- <string name="attribute_rappelling_yes">Richiesta attrezzatura da arrampicata</string>
- <string name="attribute_rappelling_no">Attrezzatura da arrampicata non necessaria</string>
- <string name="attribute_boat_yes">Necessaria imbarcazione</string>
- <string name="attribute_boat_no">Imbarcazione non necessaria</string>
- <string name="attribute_scuba_yes">Richiesta attrezzatura da sub</string>
- <string name="attribute_scuba_no">Attrezzatura da sub non necessaria</string>
- <string name="attribute_flashlight_yes">Richiesta torcia elettrica</string>
- <string name="attribute_flashlight_no">Torcia elettrica non necessaria</string>
- <string name="attribute_uv_yes">Richiesta lampada UV</string>
- <string name="attribute_uv_no">Lampada UV non necessaria</string>
- <string name="attribute_snowshoes_yes">Richiesta calzature da neve</string>
- <string name="attribute_snowshoes_no">Calzature da neve non necessarie</string>
- <string name="attribute_skiis_yes">Richiesti sci da fondo</string>
- <string name="attribute_skiis_no">Sci da fondo non necessari</string>
- <string name="attribute_s_tool_yes">Richiesti attrezzi speciali</string>
- <string name="attribute_s_tool_no">Attrezzi speciali non necessari</string>
- <string name="attribute_wirelessbeacon_yes">Segnalatore radio necessario</string>
- <string name="attribute_wirelessbeacon_no">Segnalatore radio non necessario</string>
- <string name="attribute_treeclimbing_yes">Richiede di salire su un albero</string>
- <string name="attribute_treeclimbing_no">Non richiede di salire su un albero</string>
- <string name="attribute_poisonoak_yes">Piante velenose</string>
- <string name="attribute_poisonoak_no">Piante non velenose</string>
- <string name="attribute_dangerousanimals_yes">Animali pericolosi</string>
- <string name="attribute_dangerousanimals_no">Animali non pericolosi</string>
- <string name="attribute_ticks_yes">Zecche / insetti</string>
- <string name="attribute_ticks_no">Non ci sono zecche / insetti</string>
- <string name="attribute_mine_yes">Miniere abbandonate</string>
- <string name="attribute_mine_no">Miniere non abbandonate</string>
- <string name="attribute_cliff_yes">Strapiombo / caduta massi</string>
- <string name="attribute_cliff_no">Nessun strapiombo / caduta massi</string>
- <string name="attribute_hunting_yes">Zona di caccia</string>
- <string name="attribute_hunting_no">Zona non di caccia</string>
- <string name="attribute_danger_yes">Area pericolosa</string>
- <string name="attribute_danger_no">Area non pericolosa</string>
- <string name="attribute_thorn_yes">Rovi</string>
- <string name="attribute_thorn_no">Senza rovi</string>
- <string name="attribute_wheelchair_yes">Accessibile con sedia a rotelle</string>
- <string name="attribute_wheelchair_no">Non accessibile con sedia a rotelle</string>
- <string name="attribute_parking_yes">Parcheggio</string>
- <string name="attribute_parking_no">Parcheggio non disponibile</string>
- <string name="attribute_public_yes">Servito da trasporto pubblico</string>
- <string name="attribute_public_no">Non servito da trasporto pubblico</string>
- <string name="attribute_water_yes">Vicino ad acqua potabile</string>
- <string name="attribute_water_no">Lontano da acqua potabile</string>
- <string name="attribute_restrooms_yes">Vicino ad alloggi pubblici</string>
- <string name="attribute_restrooms_no">Lontano da alloggi pubblici</string>
- <string name="attribute_phone_yes">Vicino a telefono pubblico</string>
- <string name="attribute_phone_no">Lontano da telefoni</string>
- <string name="attribute_picnic_yes">Vicino a zona picnic</string>
- <string name="attribute_picnic_no">Zone picnic non vicine</string>
- <string name="attribute_camping_yes">Campeggio disponibile</string>
- <string name="attribute_camping_no">Campeggio non disponibile</string>
- <string name="attribute_stroller_yes">Accessibile con passeggino</string>
- <string name="attribute_stroller_no">Non accessibile con passeggino</string>
- <string name="attribute_fuel_yes">Vicino a pompa carburante</string>
- <string name="attribute_fuel_no">Lontano da pompa carburante</string>
- <string name="attribute_food_yes">Vicino a punto ristoro</string>
- <string name="attribute_food_no">Lontano da punti ristoro</string>
- <string name="attribute_oc_only_yes">Loggabile solo su Opencaching</string>
- <string name="attribute_oc_only_no">Loggabile non solo su Opencaching</string>
- <string name="attribute_link_only_yes">Hyperlink solo verso un altro portale di cache</string>
- <string name="attribute_link_only_no">Non solo hyperlink ad un altro portale di cache</string>
- <string name="attribute_letterbox_yes">Lettera (richiede francobollo)</string>
- <string name="attribute_letterbox_no">No lettera (non richiede francobollo)</string>
- <string name="attribute_railway_yes">Ferrovia attiva nelle vicinanze</string>
- <string name="attribute_railway_no">Nessuna ferrovia nelle vicinanze</string>
- <string name="attribute_syringe_yes">Pronto soccorso disponibile</string>
- <string name="attribute_syringe_no">Pronto soccorso non disponibile</string>
- <string name="attribute_swamp_yes">Paludoso</string>
- <string name="attribute_swamp_no">Non paludoso</string>
- <string name="attribute_hills_yes">Area collinare</string>
- <string name="attribute_hills_no">Area non collinare</string>
- <string name="attribute_easy_climbing_yes">Facile scalata</string>
- <string name="attribute_easy_climbing_no">Nessuna facile scalata</string>
- <string name="attribute_poi_yes">Punto di interesse</string>
- <string name="attribute_poi_no">Nessun punto di interesse</string>
- <string name="attribute_moving_target_yes">Obiettivo in movimento</string>
- <string name="attribute_moving_target_no">Obiettivo non in movimento</string>
- <string name="attribute_webcam_yes">Webcam</string>
- <string name="attribute_webcam_no">No webcam</string>
- <string name="attribute_inside_yes">Con aree interne (cave, edifici etc.)</string>
- <string name="attribute_inside_no">Senza aree interne</string>
- <string name="attribute_in_water_yes">In acqua</string>
- <string name="attribute_in_water_no">Non in acqua</string>
- <string name="attribute_no_gps_yes">Senza GPS (lettere, cistes, carta e bussola…)</string>
- <string name="attribute_no_gps_no">Con GPS</string>
- <string name="attribute_overnight_yes">Necessario permanere di notte</string>
- <string name="attribute_overnight_no">Permanenza notturna non necessaria</string>
- <string name="attribute_specific_times_yes">Disponibile solo in certi orari</string>
- <string name="attribute_specific_times_no">Disponibile a tutte le ore</string>
- <string name="attribute_day_yes">Solo di giorno</string>
- <string name="attribute_day_no">Non solo di giorno</string>
- <string name="attribute_tide_yes">Marea</string>
- <string name="attribute_tide_no">Senza marea</string>
- <string name="attribute_all_seasons_yes">Tutte le stagioni</string>
- <string name="attribute_all_seasons_no">Non in tutte le stagioni</string>
- <string name="attribute_breeding_yes">Stagione di riproduzione / natura protetta</string>
- <string name="attribute_breeding_no">Disponibile anche in stagione di riproduzione / natura protetta</string>
- <string name="attribute_snow_proof_yes">Nascondiglio a prova di neve</string>
- <string name="attribute_snow_proof_no">Nascondiglio non a prova di neve</string>
- <string name="attribute_compass_yes">Bussola</string>
- <string name="attribute_compass_no">Senza bussola</string>
- <string name="attribute_cave_yes">Equipaggiamento da caverna</string>
- <string name="attribute_cave_no">Senza equipaggiamento da caverna</string>
- <string name="attribute_aircraft_yes">Aircraft</string>
- <string name="attribute_aircraft_no">Senza aircraft</string>
- <string name="attribute_investigation_yes">Investigazione</string>
- <string name="attribute_investigation_no">Senza investigazione</string>
- <string name="attribute_puzzle_yes">Puzzle / Mystery</string>
- <string name="attribute_puzzle_no">No puzzle / mystery</string>
- <string name="attribute_arithmetic_yes">Problema aritmetico</string>
- <string name="attribute_arithmetic_no">Problema non aritmetico</string>
- <string name="attribute_other_cache_yes">Cache di altro tipo</string>
- <string name="attribute_other_cache_no">Cache non di altro tipo</string>
- <string name="attribute_ask_owner_yes">Chiedere al proprietario per le condizioni di partenza</string>
- <string name="attribute_ask_owner_no">Non chiedere al proprietario per le condizioni di partenza</string>
- <string name="attribute_unknown_yes">Attributo sconosciuto</string>
- <string name="attribute_unknown_no">Senza attributo sconosciuto</string>
- <string name="attribute_geotour_yes">Parte di un GeoTour</string>
- <string name="attribute_geotour_no">Non fa parte di un GeoTour</string>
-
- <!-- next things -->
- <string name="settings_gc_legal_note">Per usare i servizi di Geocaching.com, si applicano i termini e le condizioni del Contratto Groundspeak che deve essere approvato dall\'utente.</string>
- <string name="quote">Per rendere il geocaching più facile e rendere gli utenti più pigri.</string>
- <string name="powered_by">carnero</string>
- <!-- Note: Links here are just for appearance. See AboutActivity to make changes -->
- <string name="support">Supporto: <a href="">support@cgeo.org</a></string>
- <string name="website">Sito: <a href="">cgeo.org</a></string>
- <string name="facebook">Facebook: <a href="">pagina c:geo </a></string>
- <string name="twitter">Twitter: <a href="">@android_GC</a></string>
- <string name="nutshellmanual">Manuale: <a href="">c:geo in a Nutshell</a></string>
- <string name="market">Android: <a href="">c:geo su Google Play</a></string>
- <string name="about_twitter">Può <b>c:geo</b> pubblicare su Twitter ogni volta che logghi un cache?</string>
- <string name="about_auth_1">La procesura seguente autorizza <b>c:geo</b> ad accedere a Twitter - se confermato.</string>
- <string name="about_auth_2">Clicca sul pulsante \"Autorizza c:geo\" per iniziare. Questa procedura aprirà il browser sulla pagina Twitter. Fai Login su questa pagina e autorizza <b>c:geo</b> ad accedere al tuo account. Se accettato, Twitter mostrerà un PIN code numerico. Questo PIN deve essere riportato in <b>c:geo</b> e confermato.</string>
-
- <!-- status -->
- <string name="status_new_release" tools:ignore="UnusedResources">Una nuova versione è disponibile.\nClicca per installarla.</string>
- <string name="status_new_nightly" tools:ignore="UnusedResources">Una nuova versione nightly è disponibile.\nClicca per installarla.</string>
- <string name="status_new_rc" tools:ignore="UnusedResources">Una nuova release candidate è disponibile.\nClicca per installarla.</string>
- <string name="status_geocaching_change" tools:ignore="UnusedResources">Modifiche recenti al sito geocaching hanno disattivato c:geo.\nCi stiamo lavorando, riprova più tardi.</string>
- <string name="status_geocaching_livemap" tools:ignore="UnusedResources">Modifiche recenti al sito geocaching hanno disattivato la mappa live.\nCi stiamo lavorando, riprova più tardi.</string>
+ <string name="app_name">c:geo</string>
+ <string name="cache">Cache</string>
+ <string name="detail">Dettaglio</string>
+ <string name="search">Cerca</string>
+ <string name="helpers">Apps utili</string>
+ <string name="about">Info c:geo</string>
+ <string name="latitude">Latitudine</string>
+ <string name="longitude">Longitudine</string>
+ <string name="action_bar_share_title">Condividi link al cache</string>
+ <string name="settings_titlebar">Impostazioni di c:geo</string>
+ <string name="all_types">Tutti i tipi di cache</string>
+ <string name="traditional">Traditional cache</string>
+ <string name="multi">Multi-cache</string>
+ <string name="mystery">Mystery cache</string>
+ <string name="letterbox">Letterbox hybrid</string>
+ <string name="event">Cache Evento</string>
+ <string name="mega">Mega-event cache</string>
+ <string name="earth">Earthcache</string>
+ <string name="cito">Evento Cache In Trash Out</string>
+ <string name="webcam">Webcam cache</string>
+ <string name="virtual">Cache Virtuale</string>
+ <string name="wherigo">Wherigo cache</string>
+ <string name="lostfound">Lost and Found</string>
+ <string name="ape">Project Ape cache</string>
+ <string name="gchq">Groundspeak HQ</string>
+ <string name="gps">Fiera GPS cache</string>
+ <string name="block">Groundspeak Block Party</string>
+ <string name="unknown">Tipo sconosciuto</string>
+ <string name="cache_size_micro">micro</string>
+ <string name="cache_size_small">small</string>
+ <string name="cache_size_regular">regular</string>
+ <string name="cache_size_large">large</string>
+ <string name="cache_size_other">altro</string>
+ <string name="cache_size_virtual">virtual</string>
+ <string name="cache_size_notchosen">non selezionato</string>
+ <string name="cache_size_unknown">sconosciuto</string>
+ <string name="wp_final">Destinazione finale</string>
+ <string name="wp_stage">Step intermedio multi-cache</string>
+ <string name="wp_puzzle">Quesito da risolvere</string>
+ <string name="wp_pkg">Area parcheggio</string>
+ <string name="wp_trailhead">Partenza percorso</string>
+ <string name="wp_waypoint">Punto di riferimento</string>
+ <string name="wp_original">Coordinate originali</string>
+ <string name="log_found">Trovato</string>
+ <string name="log_dnf">Non trovato (DNF)</string>
+ <string name="log_note">Note</string>
+ <string name="log_published">Pubblicato</string>
+ <string name="log_enabled">Attivo</string>
+ <string name="log_disabled">Non attivo</string>
+ <string name="log_attend">Parteciperà</string>
+ <string name="log_attended">Partecipato</string>
+ <string name="log_retrieved">Prelevato</string>
+ <string name="log_placed">Inserito</string>
+ <string name="log_grabbed">Prelevato da qualche parte</string>
+ <string name="log_movecollection">Sposta in collezione</string>
+ <string name="log_moveinventory">Sposta in inventario</string>
+ <string name="log_maintained">Manutenzione effettuata</string>
+ <string name="log_maintenance_needed">Richiede manutenzione</string>
+ <string name="log_update">Coordinate aggiornate</string>
+ <string name="log_archived">Archiviato</string>
+ <string name="log_unarchived">Reinserito</string>
+ <string name="log_needs_archived">Necessita archiviazione</string>
+ <string name="log_discovered">Scoperto</string>
+ <string name="log_reviewer">Nota del revisore</string>
+ <string name="log_retractlisting">Ritirato</string>
+ <string name="log_marked_missing">Segnalato come mancante</string>
+ <string name="log_tb_nothing">Non fare nulla</string>
+ <string name="log_tb_visit">Visitato</string>
+ <string name="log_tb_drop">Lasciato</string>
+ <string name="log_tb_changeall">Cambia tutto</string>
+ <string name="log_save">Salva</string>
+ <string name="log_saving">Invio log…</string>
+ <string name="log_saving_and_uploading">Invio log e immagine…</string>
+ <string name="log_clear">Azzera</string>
+ <string name="log_post">Invia log</string>
+ <string name="log_post_rate">Invia log + voto</string>
+ <string name="log_post_no_rate">Invia log senza voto</string>
+ <string name="log_post_not_possible">Connessione…</string>
+ <string name="log_add">Aggiungi</string>
+ <string name="log_rating">Voto</string>
+ <string name="log_no_rating">Nessun voto</string>
+ <string name="log_stars_1">1 stella</string>
+ <string name="log_stars_15">1.5 stelle</string>
+ <string name="log_stars_2">2 stelle</string>
+ <string name="log_stars_25">2.5 stelle</string>
+ <string name="log_stars_3">3 stelle</string>
+ <string name="log_stars_35">3.5 stelle</string>
+ <string name="log_stars_4">4 stelle</string>
+ <string name="log_stars_45">4.5 stelle</string>
+ <string name="log_stars_5">5 stelle</string>
+ <string name="log_stars_1_description">proprio brutto</string>
+ <string name="log_stars_15_description">abbastanza brutto</string>
+ <string name="log_stars_2_description">bruttino</string>
+ <string name="log_stars_25_description">sotto la media</string>
+ <string name="log_stars_3_description">nella media</string>
+ <string name="log_stars_35_description">non male</string>
+ <string name="log_stars_4_description">bene</string>
+ <string name="log_stars_45_description">molto bene</string>
+ <string name="log_stars_5_description">favoloso</string>
+ <string name="log_webcam">Scattata foto Webcam</string>
+ <string name="log_new_log">Log</string>
+ <string name="log_new_log_text">Testo Log</string>
+ <string name="log_announcement">Annuncio</string>
+ <string name="log_today">Oggi</string>
+ <string name="log_yesterday">Ieri</string>
+ <string name="log_smilies">Faccine</string>
+ <string name="log_image">Immagine</string>
+ <string name="log_image_attach">Aggiungi immagine</string>
+ <string name="log_image_edit">Modifica immagine</string>
+ <string name="log_image_stored">Esistente</string>
+ <string name="log_image_camera">Nuova</string>
+ <string name="log_image_caption">Didascalia</string>
+ <string name="log_image_description">Descrizione</string>
+ <string name="log_image_scale">Ridimensiona</string>
+ <string name="log_password_title">Log Password:</string>
+ <string name="log_hint_log_password">Inserisci la password per il log</string>
+ <string name="translate_to_sys_lang">Traduci in %s</string>
+ <string name="translate_to_english">Traduci in inglese</string>
+ <string name="translate_length_warning">La traduzione può fallire quando c\'è molto testo.</string>
+ <string name="err_none">OK</string>
+ <string name="err_start">Comunicazione non avviata</string>
+ <string name="err_parse">Errore analizzando la pagina di login</string>
+ <string name="err_server">Connessione fallita con Geocaching.com (server o connessione non disponibile?)</string>
+ <string name="err_login">Informazioni di login non memorizzate</string>
+ <string name="err_login_failed">c:geo non può effettuare login.</string>
+ <string name="err_login_failed_toast">c:geo non può effettuare login. Attivata la modalità offline. Verificare le informazioni di login nelle impostazioni o abilitare una connessione internet.</string>
+ <string name="err_unknown">Errore sconosciuto</string>
+ <string name="err_comm">Errore sconosciuto di comunicazione</string>
+ <string name="err_missing_auth">username e/o password non settati.</string>
+ <string name="err_wrong">Informazioni di login errate</string>
+ <string name="err_maintenance">Geocaching.com è in manutenzione, riprovare più tardi. Attivata la modalità offline.</string>
+ <string name="err_license">L\'utente non ha approvato le condizioni del contratto Geocaching.com. Così c:geo non può caricare le coordinate dei cache.</string>
+ <string name="err_unvalidated_account">Come prima cosa devi convalidare il tuo account su Geocaching.com.</string>
+ <string name="err_unpublished">Il cache richiesto è stato ritirato</string>
+ <string name="err_premium_only">Cache disponibile solo per utenti premium di Geocaching.com</string>
+ <string name="err_detail_open">c:geo non può aprire i dettagli del cache.</string>
+ <string name="err_detail_cache">c:geo non può visualizzare il cache richiesto. È veramente un geocache?</string>
+ <string name="err_detail_cache_find">c:geo non trova il geocache</string>
+ <string name="err_detail_cache_find_some">c:geo non trova quel geocache.</string>
+ <string name="err_detail_cache_find_any">c:geo non trova nessun geocache.</string>
+ <string name="err_detail_cache_forgot">c:geo ha dimenticato quale geocache avevi richiesto.</string>
+ <string name="err_detail_google_maps_limit_reached">c:geo non riesce a scaricare le mappe statiche. Forse raggiunto il limite di google map. Riprova domani.</string>
+ <string name="err_detail_no_spoiler">c:geo non trova alcuna immagine spoiler per questo cache.</string>
+ <string name="err_detail_no_map_static">c:geo non trova alcuna mappa statica per questo cache.</string>
+ <string name="err_detail_not_load_map_static">c:geo non riesce a caricare la mappe statiche.</string>
+ <string name="err_detail_still_working">Momentaneamente occupato a svolgere un altro compito.</string>
+ <string name="err_watchlist_still_managing">Sto ancora gestendo la tua watchlist.</string>
+ <string name="err_watchlist_failed">La modifica alla tua watchlist è fallita.</string>
+ <string name="err_application_no">c:geo non trova nessuna applicazione compatibile.</string>
+ <string name="err_auth_initialize">c:geo ha fallito l\'inizializzazione del processo di autorizzazione.</string>
+ <string name="err_auth_process">Processo di autorizzazione fallito.</string>
+ <string name="err_cannot_log_visit">c:geo non ha abbastanza informazioni per salvare il log. Per cortesia riprova dalla pagina dei dettagli completi del cache.</string>
+ <string name="err_download_fail">c:geo ha fallito il download dei cache.</string>
+ <string name="err_dwld_details_failed">c:geo ha fallito il download dei dettagli del cache.</string>
+ <string name="err_load_descr_failed">c:geo non può caricare la descrizione.</string>
+ <string name="err_location_unknown">c:geo non conosce la posizione dei cache.</string>
+ <string name="err_missing_device_name">Per cortesia inserire il nome del dispositivo prima di registrarsi.</string>
+ <string name="err_favorite_failed">Errore nella modifica dello stato preferiti.</string>
+ <string name="err_select_logimage_failed">La selezione dell\'immagine per il log è fallita.</string>
+ <string name="err_acquire_image_failed">Acquisizione immagine fallita.</string>
+ <string name="err_tb_display">c:geo non riesce a visualizzare il trackable che vuoi. È veramente un trackable?</string>
+ <string name="err_tb_details_open">c:geo non riesce ad aprire i dettagli del trackable.</string>
+ <string name="err_tb_forgot_saw">c:geo ha dimenticato quale trackable vedevi.</string>
+ <string name="err_tb_find">c:geo non trova nessun trackable</string>
+ <string name="err_tb_find_that">c:geo non trova quel trackable.</string>
+ <string name="err_waypoint_cache_unknown">c:geo non conosce a quale cache vuoi aggiungere un waypoint.</string>
+ <string name="err_waypoint_add_failed">c:geo non è riuscito ad aggiungere il tuo waypoint.</string>
+ <string name="err_point_unknown_position">c:geo non capisce dove ti trovi.</string>
+ <string name="err_point_no_position_given_title">Info richieste</string>
+ <string name="err_point_no_position_given">Inserisci almeno latitudine e longitudine, o distanza e angolo. Puoi anche inserire tutti e quattro i valori.</string>
+ <string name="err_point_curr_position_unavailable">c:geo non ha le coordinate attuali. Attendere, prego…</string>
+ <string name="err_point_bear_and_dist_title">Necessiti di aiuto?</string>
+ <string name="err_point_bear_and_dist">Inserisci angolo e distanza. Angolo specifica un valore in gradi tra 0 e 360 relativo al nord. La distanza non richiede unità di misura.</string>
+ <string name="err_log_load_data">c:geo non riesce a caricare i dati necessari per salvare il log della tua visita.</string>
+ <string name="err_log_load_data_again">c:geo non riesce a caricare i dati necessari per salvare il log della tua visita. Nuovo tentativo in corso.</string>
+ <string name="err_log_load_data_still">c:geo sta ancora caricando i dati necessari per salvare il log. Per cortesia attendere ancora un pochino.</string>
+ <string name="err_log_failed_server">c:geo non è riuscito ad inviare il log perché il server non risponde.</string>
+ <string name="err_log_post_failed">Sembra che il log non sia stato inviato. Prego verificare su Geocaching.com.</string>
+ <string name="err_logimage_post_failed">Sembra che l\'immagine del tuo log non sia stata caricata. Si prega di controllare su Geocaching.com.</string>
+ <string name="err_search_address_forgot">c:geo ha dimenticato l\'indirizzo che vuoi trovare.</string>
+ <string name="err_parse_lat">c:geo non riesce ad interpretare la latitudine.</string>
+ <string name="err_parse_lon">c:geo non riesce ad interpretare la longitudine.</string>
+ <string name="err_parse_dist">c:geo non riesce ad interpretare la distanza.</string>
+ <string name="err_parse_lat_lon">c:geo non riesce ad interpretare la latitudine o la longitudine.</string>
+ <string name="warn_save_nothing">Non c\'è nulla da salvare.</string>
+ <string name="warn_no_cache_coord">Non ci sono cache con coordinate.</string>
+ <string name="warn_no_coordinates">Coordinate non fornite.</string>
+ <string name="warn_no_keyword">Parola chiave non fornita.</string>
+ <string name="warn_no_username">Nome utente non fornito.</string>
+ <string name="warn_search_help_title">Necessiti di aiuto?</string>
+ <string name="warn_search_help_address">Inserisci indirizzo o nome di luogo. Per esempio, usa un indirizzo simile a questo: \"Via Alessandro Volta 1, Milano, Italia\", oppure solo la città come \"Milano\" o di un luogo famoso come ad esempio \"Colosseo\".</string>
+ <string name="warn_search_help_gccode">Inserisci il codice del geocache. Per esempio \"GC1VCAZ\".</string>
+ <string name="warn_search_help_keyword">Inserisci delle parole che supponi siano citate da qualche parte all\'interno del cache che vuoi trovare.</string>
+ <string name="warn_search_help_user">Inserisci il nome dell\'utente di Geocaching.com.</string>
+ <string name="warn_search_help_tb">Inserisci il codice del trackable. Per esempio \"TB29QMZ\".</string>
+ <string name="warn_log_text_fill">Prego, inserire del testo nel log.</string>
+ <string name="warn_load_images">c:geo non riesce a caricare immagini.</string>
+ <string name="warn_invalid_mapfile">La mappa selezionata non è mapsforge versione 0.3.0.\nMappa offline non disponibile.</string>
+ <string name="warn_deprecated_mapfile">Stai usando una vecchia mappa 0.2.4.\nAggiornala alla 0.3.0 appena puoi.\nIl supporto alla 0.2.4 sarà rimosso nella prossima versione.</string>
+ <string name="warn_nonexistant_mapfile">La mappa selezionata non esiste.\nMappa offline non disponibile.</string>
+ <string name="warn_rendertheme_missing">Tema mappa non trovato.</string>
+ <string name="info_log_posted">c:geo ha inviato il log con successo.</string>
+ <string name="info_log_saved">c:geo ha salvato il log.</string>
+ <string name="info_log_cleared">Il log è stato azzerato.</string>
+ <string name="info_log_type_changed">Il tipo di log è cambiato!</string>
+ <string name="info_select_logimage_cancelled">Selezione o cattura immagine annulata.</string>
+ <string name="info_stored_image">Nuova immagine salvata su:</string>
+ <string name="info_storing_static_maps">Tento di salvare le mappe statiche</string>
+ <string name="loc_last">Ultima nota</string>
+ <string name="loc_net">Network</string>
+ <string name="loc_gps">GPS</string>
+ <string name="loc_sat">Sat</string>
+ <string name="loc_trying">Localizzazione in corso</string>
+ <string name="loc_no_addr">Indirizzo sconosciuto</string>
+ <string name="loc_gps_disabled">GPS non attivo</string>
+ <string name="menu_about">Info su c:geo</string>
+ <string name="menu_helpers">Programmi utili</string>
+ <string name="menu_settings">Impostazioni</string>
+ <string name="menu_history">Cronologia</string>
+ <string name="menu_filter">Filtri</string>
+ <string name="menu_scan_geo">Scansiona geocode</string>
+ <string name="live_map_button">Mappa</string>
+ <string name="caches_nearby_button">Vicini</string>
+ <string name="advanced_search_button">Cerca</string>
+ <string name="stored_caches_button">Salvati</string>
+ <string name="any_button">Ovunque</string>
+ <string name="unknown_scan">Nessun geocode trovato nello scan.</string>
+ <string name="caches_no_cache">Non ci sono cache</string>
+ <string name="caches_more_caches">Carica altri cache</string>
+ <string name="caches_more_caches_no">Nessun\'altro cache</string>
+ <string name="caches_more_caches_loading">Caricamento dei cache…</string>
+ <string name="caches_more_caches_currently">attualmente</string>
+ <string name="caches_downloading">Download cache in corso…\nETA: </string>
+ <string name="caches_eta_ltm">Meno di un minuto</string>
+ <string name="caches_store_offline">Salva per Offline</string>
+ <string name="caches_store_selected">Salva selezionati</string>
+ <string name="caches_history">Cronologia</string>
+ <string name="caches_on_map">Visualizza sulla mappa</string>
+ <string name="caches_sort">Ordina</string>
+ <string name="caches_sort_title">Ordina per</string>
+ <string name="caches_sort_distance">Distanza</string>
+ <string name="caches_sort_difficulty">Difficoltà</string>
+ <string name="caches_sort_terrain">Terreno</string>
+ <string name="caches_sort_size">Dimensione</string>
+ <string name="caches_sort_favorites">Popolarità</string>
+ <string name="caches_sort_name">Nome</string>
+ <string name="caches_sort_geocode">Geo Code</string>
+ <string name="caches_sort_rating">Voto</string>
+ <string name="caches_sort_vote">Il tuo voto</string>
+ <string name="caches_sort_inventory">Oggetti trackables</string>
+ <string name="caches_sort_date_hidden">Data</string>
+ <string name="caches_sort_date_logged">Data Log</string>
+ <string name="caches_sort_finds">Numero ritrovamenti</string>
+ <string name="caches_sort_state">Stato</string>
+ <string name="caches_sort_storage">Data salvataggio</string>
+ <string name="caches_select_mode">Modo Selezione</string>
+ <string name="caches_select_mode_exit">Esci dal modo Selezione</string>
+ <string name="caches_select_invert">Inverti selezione</string>
+ <string name="caches_nearby">Qui vicino</string>
+ <string name="caches_manage">Gestisci</string>
+ <string name="caches_drop_selected">Elimina selezionati</string>
+ <string name="caches_drop_selected_ask">Vuoi rimuovere i cache selezionati dal dispositivo?</string>
+ <string name="caches_drop_all">Elimina tutti</string>
+ <string name="caches_drop_all_ask">Vuoi rimuovere tutti i cache dalla lista corrente?</string>
+ <string name="caches_drop_stored">Elimina i cache salvati</string>
+ <string name="caches_drop_progress">Eliminazione dei cache</string>
+ <string name="caches_drop_all_and_list">Elimina tutti ed elimina la lista</string>
+ <string name="caches_delete_events">Cancella eventi passati</string>
+ <string name="caches_refresh_selected">Aggiorna i cache selezionati</string>
+ <string name="caches_refresh_all">Aggiorna tutti</string>
+ <string name="caches_move_selected">Muovi i cache selezionati</string>
+ <string name="caches_move_all">Muovi tutti</string>
+ <string name="caches_map_locus">Locus</string>
+ <string name="caches_map_locus_export">Esporta in Locus</string>
+ <string name="caches_recaptcha_title">reCAPTCHA</string>
+ <string name="caches_recaptcha_explanation">Per cortesia riporta il testo letto sull\'immagine. È importante per scaricare le coordinate dei cache. È tuttavia opzionale e può essere disattivato nei settaggi.</string>
+ <string name="caches_recaptcha_hint">Testo da immagine</string>
+ <string name="caches_recaptcha_continue">Continua</string>
+ <string name="caches_filter">Filtra</string>
+ <string name="caches_filter_title">Filtra per</string>
+ <string name="caches_filter_size">Dimensione</string>
+ <string name="caches_filter_type">Tipo</string>
+ <string name="caches_filter_track">Con oggetti trackables</string>
+ <string name="caches_filter_clear">Rimuovi filtri</string>
+ <string name="caches_filter_modified">Con coordinate modificate</string>
+ <string name="caches_filter_origin">Origine</string>
+ <string name="caches_filter_distance">Distanza</string>
+ <string name="caches_removing_from_history">Rimozione dalla cronologia…</string>
+ <string name="caches_clear_offlinelogs">Cancella i log offline</string>
+ <string name="caches_clear_offlinelogs_progress">Cancellazione logs offline</string>
+ <string name="list_menu">Lista</string>
+ <string name="list_menu_create">Crea nuova lista</string>
+ <string name="list_menu_drop">Elimina la lista corrente</string>
+ <string name="list_menu_change">Cambia lista</string>
+ <string name="list_menu_rename">Rinomina la lista corrente</string>
+ <string name="list_title">Seleziona una lista</string>
+ <string name="list_inbox">Salvate</string>
+ <string name="list_all_lists">Tutti i cache</string>
+ <string name="list_dialog_create_title">Nuova lista</string>
+ <string name="list_dialog_create">Crea</string>
+ <string name="list_dialog_cancel">Annulla</string>
+ <string name="list_dialog_create_ok">Lista creata</string>
+ <string name="list_dialog_create_err">c:geo non è riuscito a creare la lista</string>
+ <string name="list_dialog_remove_title">Rimuovi lista</string>
+ <string name="list_dialog_remove_description">Vuoi rimuovere la lista corrente? Tutti i cache contenuti verranno spostati nella lista base \"Salvati\".</string>
+ <string name="list_dialog_remove">Rimuovi</string>
+ <string name="list_dialog_remove_ok">Lista rimossa</string>
+ <string name="list_dialog_remove_err">c:geo non è riuscito a rimuovere la lista corrente</string>
+ <string name="list_dialog_rename_title">Rinomina lista</string>
+ <string name="list_dialog_rename">Rinomina</string>
+ <string name="about_version">Versione</string>
+ <string name="about_changelog">Modifiche</string>
+ <string name="about_donate">Donazioni</string>
+ <string name="about_donation_more">Donazione\nsviluppo</string>
+ <string name="about_contributors">Contributori</string>
+ <string name="about_license">Licenza</string>
+ <string name="about_apache_license"><a href="">Licenza Apache, versione 2.0</a></string>
+ <string name="about_help">Guida</string>
+ <string name="settings_title_services">Servizi</string>
+ <string name="settings_title_appearance">Aspetto</string>
+ <string name="settings_title_cachedetails">Dettagli cache</string>
+ <string name="settings_title_offlinedata">Dati offline</string>
+ <string name="settings_title_logging">Registro Log</string>
+ <string name="settings_title_map">Mappa</string>
+ <string name="settings_title_map_data">Dati mappa</string>
+ <string name="settings_title_map_content">Contenuto Mappa</string>
+ <string name="settings_title_gpx">GPX</string>
+ <string name="settings_title_basicmembers">Membri Basic</string>
+ <string name="settings_title_navigation">Navigazione</string>
+ <string name="settings_title_system">Sistema</string>
+ <string name="settings_title_navigation_menu">Menu di navigazione</string>
+ <string name="settings_category_browser">Browser</string>
+ <string name="settings_category_geocaching">Geocaching</string>
+ <string name="settings_category_social">Social media</string>
+ <string name="settings_category_logging_other">Altre opzioni di log</string>
+ <string name="settings_goto_url_button">altro …</string>
+ <string name="settings_title_gc">Geocaching.com</string>
+ <string name="settings_activate_gc">Attiva</string>
+ <string name="settings_gc_legal_note">Per usare i servizi di Geocaching.com, si applicano i termini e le condizioni del Contratto Groundspeak che deve essere approvato dall\'utente.</string>
+ <string name="settings_info_facebook_login_title">Facebook Login</string>
+ <string name="settings_info_facebook_login">Con il tuo account di Facebook non puoi fare login su geocaching.com. Ma c\'è una soluzione semplice …</string>
+ <string name="settings_authorize">Autorizza c:geo</string>
+ <string name="settings_reauthorize">Autorizza nuovamente c:geo</string>
+ <string name="init_oc">opencaching.de</string>
+ <string name="settings_activate_oc">Attiva</string>
+ <string name="init_oc_de_description">Autorizza c:geo a cercare cache ed accedere/filtrare i ritrovamenti su opencaching.de</string>
+ <string name="init_oc_pl">Opencaching.pl</string>
+ <string name="settings_activate_oc_pl">Attiva</string>
+ <string name="init_oc_pl_description">Autorizza c:geo a cercare cache ed accedere/filtrare i ritrovamenti su opencaching.de.</string>
+ <string name="init_gcvote">GCvote.com</string>
+ <string name="init_twitter">Twitter</string>
+ <string name="settings_activate_twitter">Attiva</string>
+ <string name="init_username">Utente</string>
+ <string name="init_password">Password</string>
+ <string name="init_login">Verifica login</string>
+ <string name="init_login_popup">Login</string>
+ <string name="init_login_popup_working">Logging…</string>
+ <string name="init_login_popup_ok">Login OK.</string>
+ <string name="init_login_popup_failed">Login fallito.</string>
+ <string name="init_login_popup_failed_reason">Login fallito: </string>
+ <string name="init_login_popup_not_authorized">Non autorizzato</string>
+ <string name="init_signature">Firma</string>
+ <string name="init_signature_help_text">Scrivi la tua firma da usare nei testi di log.\nStringhe speciali possono essere usate come: [DATE], [TIME], [DATETIME], [USER] e [NUMBER].\nSaranno espanse quando la firma viene inserita.</string>
+ <string name="init_signature_template_button">Stringhe speciali</string>
+ <string name="init_signature_template_date">Data</string>
+ <string name="init_signature_template_time">Ora</string>
+ <string name="init_signature_template_datetime">Data e Ora</string>
+ <string name="init_signature_template_user">Utente</string>
+ <string name="init_signature_template_number">Numero cache</string>
+ <string name="init_signature_template_owner">Proprietario</string>
+ <string name="init_ratingwanted">Rating GCvote.com</string>
+ <string name="init_summary_ratingwanted">Carica il rating del cache da GCvote.com</string>
+ <string name="init_friendlogswanted">Visualizza log dei miei amici</string>
+ <string name="init_summary_friendlogswanted">Carica logbook addizionale con i log dei miei amici</string>
+ <string name="init_openlastdetailspage">L\'ultima pagina usata nei dettagli</string>
+ <string name="init_summary_openlastdetailspage">Ricorda l\'ultima pagina usata nei dettagli</string>
+ <string name="init_autoload">Descrizione estesa</string>
+ <string name="init_summary_autoload">Carica automaticamente descrizione estesa</string>
+ <string name="init_skin">Tema chiaro</string>
+ <string name="init_summary_skin">Usa tema chiaro\n(richiede riavvio di c:geo)</string>
+ <string name="init_address">Visualizza indirizzo</string>
+ <string name="init_summary_address">Visualizza indirizzo invece delle coordinate su pagina principale</string>
+ <string name="init_captcha">Visualizza CAPTCHA</string>
+ <string name="init_summary_captcha">Visualizza CAPTCHA se necessario (solo utenti base, non Premium)</string>
+ <string name="init_useenglish">Usa English in c:geo</string>
+ <string name="init_summary_useenglish">Usa sempre English in c:geo\n(richiede riavvio)</string>
+ <string name="init_exclude">Escludi i cache miei e trovati</string>
+ <string name="init_summary_exclude">Escludi i miei cache e queli che ho già trovato</string>
+ <string name="init_showwaypoints">Mostra waypoints</string>
+ <string name="init_showwaypoint_description">Se sulla mappa si vedono meno cache del numero indicato, saranno mostrati anche i loro waypoints.</string>
+ <string name="init_disabled">Escludi disattivati</string>
+ <string name="init_summary_disabled">Escludi cache disattivati</string>
+ <string name="init_offline">Mappe statiche</string>
+ <string name="init_summary_offline">Salva le mappe statiche per uso offline</string>
+ <string name="init_offline_wp">Mappe statiche (WP)</string>
+ <string name="init_summary_offline_wp">Salva i waypoints delle mappe per uso offline</string>
+ <string name="init_save_log_img">Salva immagini</string>
+ <string name="init_summary_save_log_img">Salva immagini contenute nei log</string>
+ <string name="init_units">Usa sistema imperiale</string>
+ <string name="init_summary_units">Usa miglia/piedi invece del sistema metrico</string>
+ <string name="init_log_offline">Log offline</string>
+ <string name="init_summary_log_offline">Attiva log offline (non visualizzerà lo schermo di log online, non invierà subito il log)</string>
+ <string name="init_choose_list">Chiedi lista</string>
+ <string name="init_summary_choose_list">Chiedi la lista quando salvi un cache</string>
+ <string name="init_livelist">Visualizza direzione</string>
+ <string name="init_summary_livelist">Visualizza in che direzione sono i cache, nelle liste</string>
+ <string name="init_backup">Backup</string>
+ <string name="init_backup_backup">Backup</string>
+ <string name="init_backup_running">Creazione del backup del database dei cache in corso…</string>
+ <string name="init_backup_note">Si prega di notare che questa opzione farà backup o ripristino del database contenente i cache ed i waypoint, ma non le impostazioni. Quindi le tue informazioni di login non lasceranno mai questo dispositivo.</string>
+ <string name="init_backup_restore">Ripristino</string>
+ <string name="init_backup_success">Il database di c:geo è stato salvato con successo nel file: </string>
+ <string name="init_backup_failed">Backup del database di c:geo fallito.</string>
+ <string name="init_backup_unnecessary">Il database è vuoto, il backup non è necessario.</string>
+ <string name="init_restore_success">Ripristino completato.</string>
+ <string name="init_restore_failed">Ripristino fallito.</string>
+ <string name="init_restore_running">Ripristino del database dei cache…</string>
+ <string name="init_restore_confirm">Il database è vuoto. Vuoi ripristinare il backup?</string>
+ <string name="init_backup_last">Disponibile Backup di </string>
+ <string name="init_backup_last_no">Non esiste il file con il backup.</string>
+ <string name="settings_info_offline_maps_title">Informazioni su mappe Offline</string>
+ <string name="settings_info_offline_maps">c:Geo supporta le mappe per l\'utilizzo offline. Puoi scaricare le mappe da Mapsforge o addirittura creare le tue mappe dai dati di OSM. È necessario selezionare la directory locale dove cercare le mappe offline per attivare questa funzionalità.</string>
+ <string name="settings_info_themes_title">Informazioni sui temi mappa</string>
+ <string name="settings_info_themes">c:geo supporta i temi personalizzati per mappe offline. Questi possono essere usati per modificare lo stile di colore della mappa (ad esempio per avere una mappa notturna) o per evidenziare alcuni oggetti come piste ciclabili o linee di altitudine.</string>
+ <string name="init_mapsource_select">Seleziona il tipo di mappa</string>
+ <string name="settings_title_scale_map_text">Ridimensiona testo mappa</string>
+ <string name="settings_summary_scale_map_text">Ridimensiona il testo della mappa offline a seconda del dpi del dispositivo</string>
+ <string name="init_map_directory_description">Cartella con le mappe offline</string>
+ <string name="init_gpx_exportdir">Cartella di export GPX</string>
+ <string name="init_gpx_importdir">Cartella di import GPX</string>
+ <string name="init_maptrail">Mostra scia</string>
+ <string name="init_summary_maptrail">Mostra la scia nella Mappa</string>
+ <string name="init_share_after_export">Apri menu condivisione dopo export GPX</string>
+ <string name="init_trackautovisit">Visita TB</string>
+ <string name="init_summary_trackautovisit">Setta i miei oggetti Trackables automaticamente su \"visit\" quando invio log</string>
+ <string name="init_sigautoinsert">Inserisce automaticamente</string>
+ <string name="init_loaddirectionimg">Immagine di direzione</string>
+ <string name="init_summary_loaddirectionimg">Carica le immagini di direzione se necessario</string>
+ <string name="init_default_navigation_tool">Navigatore preferito</string>
+ <string name="init_secondary_navigation_tool">Navigazione secondaria</string>
+ <string name="init_default_navigation_tool_description">Qui puoi scegliere il tuo strumento di navigazione preferito. Sarà attivato cliccando l\'icona di navigazione vicino al titolo del cache.</string>
+ <string name="init_default_navigation_tool_select">Scegli navigatore</string>
+ <string name="init_default_navigation_tool_2_description">Qui puoi scegliere il tuo secondo navigatore preferito. Sarà attivato tenendo premuto l\'icona di navigazione vicino al titolo del cache.</string>
+ <string name="init_navigation_menu_description">Qui è possibile selezionare quale dei metodi disponibili di navigazione sarà visualizzato nel menu di navigazione per un cache o un waypoint. Gli strumenti non installati su questo dispositivo sono disabilitati.</string>
+ <string name="init_debug_title">Informazioni di Debug</string>
+ <string name="init_debug_note">c:geo può generare molte informazioni di debug. Per quanto queste informazioni non sono generalmente utili agli utenti di c:geo, gli sviluppatori potrebbero averne bisogno per analizzare un eventuale problema. In questo caso, vi sarà chiesto di settare l\'opzione sottostante ed inviare il log.</string>
+ <string name="init_debug">Attiva informazioni di debug</string>
+ <string name="init_dbonsdcard_title">Posizione Database</string>
+ <string name="init_dbonsdcard_note">Puoi decidere di salvare il database su memoria esterna. In questo caso risparmierai memoria interna ma potresti perdere un pochino di velocità e c:geo non funzionerà se la tua scheda SD non sarà disponibile.</string>
+ <string name="init_dbonsdcard">Su memoria esterna</string>
+ <string name="init_dbmove_dbmove">Spostamento Database</string>
+ <string name="init_dbmove_running">Spostamento Database</string>
+ <string name="init_dbmove_success">Database spostato con successo.</string>
+ <string name="init_dbmove_failed">Spostamento fallito</string>
+ <string name="init_plain_logs">LOG semplificati</string>
+ <string name="init_summary_plain_logs">Visualizza i LOG senza colori</string>
+ <string name="init_use_native_ua">Browser Android</string>
+ <string name="init_summary_use_native_ua">Identifica come browser Android. Risolve alcuni problemi di login con alcuni provider di rete.</string>
+ <string name="init_rendertheme_folder">Directory per i temi mappa</string>
+ <string name="settings_open_website">Apri sito</string>
+ <string name="settings_settings">Impostazioni</string>
+ <string name="settings_information">Informazioni</string>
+ <string name="map_source_google_map">Google: Map</string>
+ <string name="map_source_google_satellite">Google: Satellite</string>
+ <string name="map_source_osm_mapnik">OSM: Mapnik</string>
+ <string name="map_source_osm_cyclemap">OSM: Cyclemap</string>
+ <string name="map_source_osm_offline">Offline</string>
+ <string name="init_sendToCgeo">Send to c:geo</string>
+ <string name="settings_info_send2cgeo_title">Informazioni su send2cgeo</string>
+ <string name="init_sendToCgeo_name">Nome dispositivo</string>
+ <string name="init_sendToCgeo_description">\"Send to c:geo\" permette di ricevere cache direttamente dal sito geocaching.com tramite un plugin speciale per Firefox o Chrome. Prima della registrazione leggere <a href="http://send2.cgeo.org/">http://send2.cgeo.org/</a>. È necessario registrare questo dispositivo solo se intendi usare send2cgeo. C:geo funzionerà anche senza questa registrazione e senza send2cgeo.</string>
+ <string name="init_sendToCgeo_register">Richiedi registrazione</string>
+ <string name="init_sendToCgeo_registering">Registrazione in corso a \"Send to c:geo\"…</string>
+ <string name="init_sendToCgeo_register_ok">Registrazione terminata. Il tuo PIN code è ####. Usalo sul sito di c:geo per aggiungere il dispositivo al tuo browser Firefox o Chrome.</string>
+ <string name="init_sendToCgeo_register_fail">Registrazione fallita.</string>
+ <string name="sendToCgeo_download_fail">c:geo non riesce a scaricare cache. Nessuna connessione internet o server send2c:geo non attivo.</string>
+ <string name="sendToCgeo_no_registration">c:geo non riesce a scaricare cache. La registrazione a send2c:geo è scaduta. Si prega di ripeterla nelle impostazioni.</string>
+ <string name="auth_twitter">Twitter</string>
+ <string name="auth_authorize">Autorizza c:geo</string>
+ <string name="auth_start">Avvia autorizzazione</string>
+ <string name="auth_again">Avvia ancora</string>
+ <string name="auth_finish">Fine</string>
+ <string name="auth_dialog_waiting">In attesa di %s…</string>
+ <string name="auth_explain_short">Il processo seguente permetterà a <b>c:geo</b> di accedere a %s.</string>
+ <string name="auth_explain_long">Premendo il pulsante \"autorizza c:geo\" avrà inizio il processo. Verrà aperto un browser web con la pagina %s. Accedere alla pagina e lasciare che <b>c:geo</b> acceda al tuo account.</string>
+ <string name="auth_dialog_completed_twitter">c:geo è ora autorizzato a pubblicare su Twitter.</string>
+ <string name="auth_ocde">opencaching.de</string>
+ <string name="auth_ocpl">opencaching.pl</string>
+ <string name="auth_dialog_completed_oc">c:geo è ora autorizzato ad accedere a %s.</string>
+ <string name="cache_offline">Offline</string>
+ <string name="cache_offline_refresh">Aggiorna</string>
+ <string name="cache_offline_drop">Elimina</string>
+ <string name="cache_offline_store">Salva</string>
+ <string name="cache_offline_stored">Salvato nel dispositivo</string>
+ <string name="cache_offline_not_ready">Non disponibile offline</string>
+ <string name="cache_offline_time_about">circa</string>
+ <string name="cache_offline_time_mins">minuti fa</string>
+ <string name="cache_offline_time_mins_few">qualche minuto fa</string>
+ <string name="cache_offline_time_hour">un\'ora fa</string>
+ <string name="cache_offline_time_hours">ore fa</string>
+ <string name="cache_offline_time_days">giorni fa</string>
+ <string name="cache_premium">Premium</string>
+ <string name="cache_attributes">Attributi</string>
+ <string name="cache_inventory">Oggetti</string>
+ <string name="cache_log_offline">Log Offline</string>
+ <string name="cache_log_images_title">Immagini Log</string>
+ <string name="cache_log_image_default_title">Foto</string>
+ <string name="cache_personal_note">Note personali</string>
+ <string name="cache_personal_note_edit">Modifica</string>
+ <string name="cache_personal_note_upload">Carica</string>
+ <string name="cache_personal_note_uploading">Nota personale in caricamento</string>
+ <string name="cache_personal_note_upload_done">Nota personale caricata</string>
+ <string name="cache_personal_note_upload_cancelled">Caricamento nota personale annullato</string>
+ <string name="cache_personal_note_unstored">Cache non salvati</string>
+ <string name="cache_personal_note_store">Il cache verrà prima salvato per abilitare le note personali.</string>
+ <string name="cache_description">Descrizione</string>
+ <string name="cache_description_long">Descrizione estesa</string>
+ <string name="cache_description_table_note">La descrizione contiene una tabella formattata in modo tale che potresti aver bisogno di andare su %s per vederla correttamente.</string>
+ <string name="cache_watchlist_on">Questo cache è nella tua watchlist.</string>
+ <string name="cache_watchlist_not_on">Questo cache non è nella tua watchlist.</string>
+ <string name="cache_watchlist_add">Aggiungi alla watchlist</string>
+ <string name="cache_watchlist_remove">Rimuovi dalla watchlist</string>
+ <string name="cache_favpoint_on">Questo cache è uno dei tuoi favoriti.</string>
+ <string name="cache_favpoint_not_on">Questo cache non è uno dei tuoi favoriti.</string>
+ <string name="cache_favpoint_add">Aggiungi</string>
+ <string name="cache_favpoint_remove">Rimuovi</string>
+ <string name="cache_list_text">Lista:</string>
+ <string name="cache_list_change">Sposta</string>
+ <string name="cache_list_unknown">Non in una lista</string>
+ <string name="cache_images">Immagini</string>
+ <string name="cache_waypoints">Waypoints</string>
+ <string name="cache_waypoints_add">Aggiungi waypoint</string>
+ <string name="cache_hint">Aiuto (spoiler)</string>
+ <string name="cache_logs">Logbook</string>
+ <string name="cache_logsfriends">Log amici</string>
+ <string name="cache_dialog_loading_details">Caricamento dettagli del cache…</string>
+ <string name="cache_dialog_loading_details_status_loadpage">Caricamento pagina</string>
+ <string name="cache_dialog_loading_details_status_details">Elaborazione dettagli</string>
+ <string name="cache_dialog_loading_details_status_spoilers">Caricamento immagini spoiler</string>
+ <string name="cache_dialog_loading_details_status_logs">Caricamento log</string>
+ <string name="cache_dialog_loading_details_status_waypoints">Elaborazione waypoints</string>
+ <string name="cache_dialog_loading_details_status_gcvote">Caricamento GCVote</string>
+ <string name="cache_dialog_loading_details_status_cache">Salvataggio dati</string>
+ <string name="cache_dialog_loading_details_status_render">Creazione pagina</string>
+ <string name="cache_dialog_offline_save_title">Offline</string>
+ <string name="cache_dialog_offline_save_message">Salvataggio del cache per uso offline…</string>
+ <string name="cache_dialog_offline_drop_title">Offline</string>
+ <string name="cache_dialog_offline_drop_message">Eliminazione del cache dalla memoria del dispositivo…</string>
+ <string name="cache_dialog_refresh_title">Aggiorna</string>
+ <string name="cache_dialog_refresh_message">Ricaricamento dettagli cache…</string>
+ <string name="cache_dialog_watchlist_add_title">Watchlist</string>
+ <string name="cache_dialog_watchlist_add_message">Aggiunto il cache alla watchlist in corso…</string>
+ <string name="cache_dialog_watchlist_remove_title">Watchlist</string>
+ <string name="cache_dialog_watchlist_remove_message">Rimozione dei cache dalla tua watchlist…</string>
+ <string name="cache_dialog_favorite_add_title">Preferiti</string>
+ <string name="cache_dialog_favorite_add_message">Aggiungi il cache ai tuoi preferiti…</string>
+ <string name="cache_dialog_favorite_remove_title">Preferiti</string>
+ <string name="cache_dialog_favorite_remove_message">Rimozione cache dai tuoi preferiti…</string>
+ <string name="cache_menu_navigate">Naviga</string>
+ <string name="cache_menu_navigation_drive">Naviga (in auto)</string>
+ <string name="cache_menu_navigation_walk">Naviga (a piedi)</string>
+ <string name="cache_menu_navigation_bike">Naviga (in moto)</string>
+ <string name="cache_menu_maps_directions">Direzioni su Google Maps</string>
+ <string name="cache_menu_radar">Radar</string>
+ <string name="cache_menu_map">Mappa c:geo</string>
+ <string name="cache_menu_map_static">Mappe statiche</string>
+ <string name="cache_menu_download_map_static">Scarica mappe statiche</string>
+ <string name="cache_menu_rmaps">Rmaps</string>
+ <string name="cache_menu_map_ext">Mappa su app esterna</string>
+ <string name="cache_menu_streetview">Street View</string>
+ <string name="cache_menu_browser">Apri nel browser</string>
+ <string name="cache_menu_visit">Scrivi Log</string>
+ <string name="cache_menu_visit_offline">Scrivi Log offline</string>
+ <string name="cache_menu_spoilers">Immagini spoiler</string>
+ <string name="cache_menu_around">Cache qui intorno</string>
+ <string name="cache_menu_event">Aggiungi al calendario</string>
+ <string name="cache_menu_details">Dettagli</string>
+ <string name="cache_menu_refresh">Aggiorna</string>
+ <string name="cache_menu_share">Condividi cache</string>
+ <string name="cache_menu_move_list">Muovi in un\'altra lista</string>
+ <string name="cache_menu_gcc">GCC</string>
+ <string name="cache_menu_whereyougo">WhereYouGo</string>
+ <string name="cache_menu_oruxmaps">OruxMaps</string>
+ <string name="cache_menu_cachebeacon">Cache Beacon</string>
+ <string name="cache_menu_navigon">Navigon</string>
+ <string name="cache_status">Stato</string>
+ <string name="cache_status_offline_log">Log salvato</string>
+ <string name="cache_status_found">Trovato</string>
+ <string name="cache_status_archived">Archiviato</string>
+ <string name="cache_status_disabled">Non attivo</string>
+ <string name="cache_status_premium">Solo per utenti Premium</string>
+ <string name="cache_status_not_premium">Per tutti gli utenti</string>
+ <string name="cache_status_stored">Salvato</string>
+ <string name="cache_status_not_stored">Non salvato</string>
+ <string name="cache_geocode">Geo code</string>
+ <string name="cache_name">Nome</string>
+ <string name="cache_type">Tipo</string>
+ <string name="cache_size">Dimensione</string>
+ <string name="cache_distance">Distanza</string>
+ <string name="cache_difficulty">Difficoltà</string>
+ <string name="cache_terrain">Terreno</string>
+ <string name="cache_rating">Voto</string>
+ <string name="cache_own_rating">Il tuo voto</string>
+ <string name="cache_rating_of">di</string>
+ <string name="cache_favorite">Popolarità</string>
+ <string name="cache_owner">Proprietario</string>
+ <string name="cache_hidden">Nascosto il</string>
+ <string name="cache_event">Data</string>
+ <string name="cache_location">Luogo</string>
+ <string name="cache_coordinates">Coordinate</string>
+ <string name="cache_coordinates_original">Coordinate originali</string>
+ <string name="cache_spoiler_images_title">Immagini spoiler</string>
+ <string name="cache_images_title">Immagini</string>
+ <string name="cache_log_types">Tipi di Log</string>
+ <string name="cache_coordinates_no">Questo cache non ha coordinate.</string>
+ <string name="cache_clear_history">Cancella cronologia</string>
+ <string name="cache_remove_from_history">Rimuovi dalla cronologia</string>
+ <string name="cache_license">Licenza</string>
+ <string name="cache_image">Immagine</string>
+ <string name="cache_image_open_file">Apri come file</string>
+ <string name="cache_image_open_browser">Apri nel browser</string>
+ <string name="cache_share_field">Condividi</string>
+ <string name="cache_time_full_hours">Precise</string>
+ <string name="cache_listed_on">Elencato su %s</string>
+ <string name="file_searching_in">Ricerca file\nin</string>
+ <string name="file_searching_sdcard_in">Nessun file trovato nella cartella di default:\n%1$s\n\nRicerca in tutta la SD dei file:\n</string>
+ <string name="file_list_no_files">c:geo non ha trovato file appropriati.</string>
+ <string name="file_searching">Ricerca file corrispondenti</string>
+ <string name="file_title_searching">Ricerca in corso</string>
+ <string name="simple_dir_chooser_title">Scegli cartella</string>
+ <string name="simple_dir_chooser_current_path">Path:</string>
+ <string name="gpx_import_loading_caches">Caricamento dei cache da file GPX</string>
+ <string name="gpx_import_loading_waypoints">Caricamento file waypoints</string>
+ <string name="gpx_import_store_static_maps">Salvataggio mappe statiche</string>
+ <string name="gpx_import_caches_imported">cache importati</string>
+ <string name="gpx_import_static_maps_skipped">Download mappe statiche interrotto</string>
+ <string name="gpx_import_title_static_maps">Salva mappe statiche</string>
+ <string name="gpx_import_title_reading_file">Lettura file</string>
+ <string name="gpx_import_title">Importa GPX</string>
+ <string name="gpx_import_title_caches_imported">Risultato</string>
+ <string name="gpx_import_title_caches_import_failed">Importazione fallita</string>
+ <string name="gpx_import_error_io">Impossibile leggere il file</string>
+ <string name="gpx_import_error_parser">Il formato del file non è compatibile</string>
+ <string name="gpx_import_error_unexpected">Errore inaspettato</string>
+ <string name="gpx_import_canceled">Importazione GPX annullata</string>
+ <string name="gpx_import_delete_title">Cancella file</string>
+ <string name="gpx_import_delete_message">Vuoi cancellare %s?</string>
+ <string name="gpx_import_select_list_title">Importa GPX nella lista</string>
+ <string name="map_file_select_title">Seleziona il file mappa</string>
+ <string name="web_import_title">Importa dal web</string>
+ <string name="web_import_waiting">In attesa di nuovi cache dal web…</string>
+ <string name="web_downloading">Download in corso</string>
+ <string name="web_downloaded">Download terminato</string>
+ <string name="popup_more">Altri dettagli</string>
+ <string name="waypoint">Waypoint</string>
+ <string name="waypoint_cache_coordinates">Coordinate cache</string>
+ <string name="waypoint_custom">Custom</string>
+ <string name="waypoint_my_coordinates">Coordinate attuali</string>
+ <string name="waypoint_bearing">Angolo in gradi</string>
+ <string name="waypoint_distance">Distanza</string>
+ <string name="waypoint_name">Nome</string>
+ <string name="waypoint_edit">Modifica</string>
+ <string name="waypoint_delete">Elimina</string>
+ <string name="waypoint_edit_title">Modifica waypoint</string>
+ <string name="waypoint_add_title">Aggiungi waypoint</string>
+ <string name="waypoint_note">Note</string>
+ <string name="waypoint_visited">Visitato</string>
+ <string name="waypoint_save">Salva</string>
+ <string name="waypoint_loading">Caricamento waypoint…</string>
+ <string name="waypoint_do_not_touch_cache_coordinates">Nessuna modifica alle coordinate cache</string>
+ <string name="waypoint_set_as_cache_coords">Setta come coordinate cache in c:geo</string>
+ <string name="waypoint_save_and_modify_on_website">Setta come coordinate cache in c:geo e su web</string>
+ <string name="waypoint_reset_cache_coords">Resetta coordinate originali</string>
+ <string name="waypoint_coordinates_has_been_reset_on_website">Le coordinates sono state resettate su web</string>
+ <string name="waypoint_coordinates_being_reset_on_website">Le coordinate sono in fase di reset su web</string>
+ <string name="waypoint_reset">Reset</string>
+ <string name="waypoint_localy_reset_cache_coords">Resetta in c:geo</string>
+ <string name="waypoint_reset_local_and_remote_cache_coords">Resetta in c:geo e su web.</string>
+ <string name="waypoint_being_saved">Salvataggio Waypoint…</string>
+ <string name="waypoint_coordinates_couldnt_be_modified_on_website">Il sito web non supporta la modifica delle coordinate</string>
+ <string name="waypoint_coordinates_upload_error">Errore durante il caricamento delle coordinate su web</string>
+ <string name="waypoint_coordinates_uploading_to_website">Caricamento delle coordinate %s su web</string>
+ <string name="waypoint_coordinates_has_been_modified_on_website">Le coordinate cache su web sono state modificate in: %s.</string>
+ <string name="waypoint_done">Fatto</string>
+ <string name="waypoint_duplicate">Duplicato</string>
+ <string name="waypoint_copy_of">Copia di</string>
+ <string name="search_history">Cronologia</string>
+ <string name="search_history_empty">Nessuna precedente destinazione</string>
+ <string name="search_remove_destination">Destinazione rimossa</string>
+ <string name="search_clear_history">Cancella cronologia</string>
+ <string name="search_history_cleared">Cronologia azzerata</string>
+ <string name="waypoint_coordinate_formats_plain">Plain</string>
+ <string name="visit_tweet">Segnala questo ritrovamento su Twitter</string>
+ <string name="map_map">Mappa</string>
+ <string name="map_live">Mappa Live</string>
+ <string name="map_view_map">Scegli mappa</string>
+ <string name="map_modes">Modi mappa</string>
+ <string name="map_trail_show">Mostra scia</string>
+ <string name="map_trail_hide">Nasconde scia</string>
+ <string name="map_circles_show">Mostra area cache</string>
+ <string name="map_circles_hide">Nascondi area cache</string>
+ <string name="map_mycaches_show">Visualizza cache tuoi o che hai trovato</string>
+ <string name="map_mycaches_hide">Nascondi i tuoi cache o che hai trovato</string>
+ <string name="map_theme_builtin">Tema predefinito</string>
+ <string name="map_theme_select">Scegli un tema mappa</string>
+ <string name="map_live_enable">Attiva live</string>
+ <string name="map_live_disable">Disattiva live</string>
+ <string name="map_static_title">Mappe statiche</string>
+ <string name="map_static_loading">Caricamento mappe statiche…</string>
+ <string name="map_token_err">Dato che c:geo riesce a scaricare solo dati parziali, le coordinate dei cache potrebbero non essere accurate.</string>
+ <string name="map_as_list">Mostra lista dei cache</string>
+ <string name="map_strategy">Strategia</string>
+ <string name="map_strategy_title">Strategia mappa Live</string>
+ <string name="map_strategy_fastest">La più veloce</string>
+ <string name="map_strategy_fast">Veloce</string>
+ <string name="map_strategy_auto">In base alla tua velocità di movimento</string>
+ <string name="map_strategy_detailed">Dettagliata</string>
+ <string name="live_map_notification">Nella nuova Mappa Live le coordinate potrebbero non essere sempre precise. Coordinate possibilmente imprecise sono marcate da un cerchio arancione.\nAprendo i dettagli del cache o salvando il cache per uso offline farà calcolare sempre coordinate precise.\n\nInformazioni addizionali su tutte le modifiche si possono trovare nel menu \"Info su c:geo\" sulla pagina principale di questa app.</string>
+ <string name="live_map_note_dontshow">Non mostrare ancora</string>
+ <string name="search_bar_hint">Cerca cache</string>
+ <string name="search_bar_desc">Cache (geo code, parole chiave), oggetti Trackables (TB-code)</string>
+ <string name="search_coordinates">Coordinate</string>
+ <string name="search_coordinates_button">Cerca per coordinate</string>
+ <string name="search_address">Indirizzo</string>
+ <string name="search_address_button">Cerca per indirizzo</string>
+ <string name="search_geo">Geo code</string>
+ <string name="search_geo_button">Cerca per geo code</string>
+ <string name="search_kw">Parole chiave</string>
+ <string name="search_kw_prefill">Parola chiave</string>
+ <string name="search_kw_button">Cerca per parola chiave</string>
+ <string name="search_fbu">Trovata dall\'utente</string>
+ <string name="search_fbu_prefill">Nome utente</string>
+ <string name="search_fbu_button">Cerca per nome utente</string>
+ <string name="search_hbu">Nascosta dall\'utente</string>
+ <string name="search_hbu_prefill">Proprietario</string>
+ <string name="search_hbu_button">Cerca per proprietario</string>
+ <string name="search_tb">Oggetto Trackable</string>
+ <string name="search_tb_hint">Identificativo Trackable</string>
+ <string name="search_tb_button">Cerca per trackable</string>
+ <string name="search_destination">Destinazione</string>
+ <string name="search_direction_rel">Dalla posizione attuale</string>
+ <string name="search_address_started">Cerca per luoghi</string>
+ <string name="search_address_result">Cerca luoghi</string>
+ <string name="search_own_caches">Cerca i miei cache</string>
+ <string name="trackable">Oggetto Trackable</string>
+ <string name="trackable_details_loading">Caricamento dettagli Trackable…</string>
+ <string name="trackable_log_touch">Documenta il contatto</string>
+ <string name="trackable_browser_open">Apri nel Browser</string>
+ <string name="trackable_goal">Obiettivo</string>
+ <string name="trackable_details">Dettagli</string>
+ <string name="trackable_image">Immagine</string>
+ <string name="trackable_code">TB-Code</string>
+ <string name="trackable_name">Nome</string>
+ <string name="trackable_type">Tipo</string>
+ <string name="trackable_owner">Proprietario</string>
+ <string name="trackable_spotted">Contattato</string>
+ <string name="trackable_spotted_in_cache">In</string>
+ <string name="trackable_spotted_at_user">Nelle mani di</string>
+ <string name="trackable_spotted_unknown_location">Posizione sconosciuta</string>
+ <string name="trackable_spotted_owner">Nelle mani del proprietario</string>
+ <string name="trackable_origin">Origine</string>
+ <string name="trackable_unknown">Sconosciuto</string>
+ <string name="trackable_released">Rilasciato</string>
+ <string name="trackable_distance">Portato</string>
+ <string name="trackable_touch">Contatto</string>
+ <string name="trackable_not_activated">Trackable non attivato</string>
+ <string name="geokret_type_traditional">Tradizionale</string>
+ <string name="geokret_type_book_or_media">Libro o media elettronici</string>
+ <string name="geokret_type_human">Umano</string>
+ <string name="geokret_type_coin">Moneta</string>
+ <string name="geokret_type_post">Posta</string>
+ <string name="user_menu_title">Info</string>
+ <string name="user_menu_view_hidden">Cache nascosti</string>
+ <string name="user_menu_view_found">Cache trovati</string>
+ <string name="user_menu_open_browser">Apri profilo nel browser</string>
+ <string name="user_menu_send_message">Invia messaggio</string>
+ <string name="navigation">Navigazione</string>
+ <string name="compass_title">Bussola</string>
+ <string name="use_gps">Usa Nord solo da GPS</string>
+ <string name="use_compass">Usa Nord da GPS e bussola</string>
+ <string name="destination_select">Scegli destinazione</string>
+ <string name="destination_set">Attiva destinazione</string>
+ <string name="navigation_direct_navigation">Navigazione diretta</string>
+ <string name="navigation_target">Destinazione</string>
+ <string name="err_nav_no_coordinates">Non è possibile avviare la navigazione senza coordinate</string>
+ <string name="license">Licenza</string>
+ <string name="license_show">Mostra licenza</string>
+ <string name="license_dismiss">Chiudi</string>
+ <string name="helper_calendar_title">c:geo calendario add-on</string>
+ <string name="helper_calendar_missing">c:geo calendario add-on non installato</string>
+ <string name="helper_calendar_description">Permette di esportare gli eventi cache nel calendario del tuo dispositivo.</string>
+ <string name="helper_locus_title">Locus</string>
+ <string name="helper_locus_description">Applicazione semplice da usare che mostra mappe online permettendo di scaricarle direttamente per l\'uso offline (solo mappe raster). Supporta inoltra la registrazione di traccia, gestione dei waypoints e altre utili funzioni.</string>
+ <string name="helper_gpsstatus_title">GPS Status</string>
+ <string name="helper_gpsstatus_description">Puoi usare il radar di questa applicazione con c:geo. Offre inoltre molte informazioni addizionali legate al GPS.</string>
+ <string name="helper_bluetoothgps_title">Bluetooth GPS</string>
+ <string name="helper_bluetoothgps_description">Permette di utilizzare un GPS esterno, garantendo maggiore precisione, migliore ricezione e prolungando la durata della batteria del tuo dispositivo.</string>
+ <string name="helper_barcode_title">Barcode Scanner</string>
+ <string name="helper_barcode_description">Ci sono script Greasemonkey e siti web che consentono di visualizzare un geocode come codice a barre. Con questa app c:geo può leggere il geocode direttamente dallo schermo del tuo computer.</string>
+ <string name="helper_pocketquery_title">Creatore di Pocket Query</string>
+ <string name="helper_pocketquery_description">Consente di creare facilmente Pocket Queries centrate sulla tua posizione attuale o un punto scelto dalla mappa. Richiede un account premium su Geocaching.com.</string>
+ <string name="addon_missing_title">Add-On mancante</string>
+ <string name="addon_download_prompt">Scaricalo ora da Google Play.</string>
+ <string name="export">Esporta</string>
+ <string name="export_exportedto">esportato in</string>
+ <string name="export_failed">Esportazione fallita</string>
+ <string name="export_fieldnotes">Field Note</string>
+ <string name="export_fieldnotes_info">Field Note saranno esportate in /sdcard/field-notes con data e ora corrente nel nome file.</string>
+ <string name="export_fieldnotes_upload">Carica su geocaching.com</string>
+ <string name="export_fieldnotes_uploading">Caricamento…</string>
+ <string name="export_fieldnotes_upload_success">Caricato su geocaching.com con successo</string>
+ <string name="export_fieldnotes_onlynew">Solo quelli nuovi rispetto all\'ultima esportazione</string>
+ <string name="export_fieldnotes_creating">Creazione Field Notes…</string>
+ <string name="export_gpx">GPX</string>
+ <string name="export_gpx_info">Il file GPX sarà esportato in %1$s con data ed ora correnti come nome file.</string>
+ <string name="export_gpx_to">Invia il GPX esportato a</string>
+ <string name="attribute_dogs_yes">Cani permessi</string>
+ <string name="attribute_dogs_no">Cani NON permessi</string>
+ <string name="attribute_bicycles_yes">Biciclette permesse</string>
+ <string name="attribute_bicycles_no">Biciclette NON permesse</string>
+ <string name="attribute_motorcycles_yes">Moto permesse</string>
+ <string name="attribute_motorcycles_no">Moto NON permesse</string>
+ <string name="attribute_quads_yes">Quad permessi</string>
+ <string name="attribute_quads_no">Quad NON permessi</string>
+ <string name="attribute_jeeps_yes">Veicoli fuoristrada permessi</string>
+ <string name="attribute_jeeps_no">Veicoli fuoristrada NON permessi</string>
+ <string name="attribute_snowmobiles_yes">Motoslitte permesse</string>
+ <string name="attribute_snowmobiles_no">Motoslitte NON permesse</string>
+ <string name="attribute_horses_yes">Cavalli permessi</string>
+ <string name="attribute_horses_no">Cavalli NON permessi</string>
+ <string name="attribute_campfires_yes">Fuochi da campo permessi</string>
+ <string name="attribute_campfires_no">Fuochi da campo NON permessi</string>
+ <string name="attribute_rv_yes">Camper/roulotte permessi</string>
+ <string name="attribute_rv_no">Camper/roulotte NON permessi</string>
+ <string name="attribute_kids_yes">Raccomandato per bambini</string>
+ <string name="attribute_kids_no">Non raccomandato per bambini</string>
+ <string name="attribute_onehour_yes">Richiede meno di un\'ora</string>
+ <string name="attribute_onehour_no">Richiede più di un\'ora</string>
+ <string name="attribute_scenic_yes">Panoramico</string>
+ <string name="attribute_scenic_no">Non panoramico</string>
+ <string name="attribute_hiking_yes">Trekking impegnativo</string>
+ <string name="attribute_hiking_no">Trekking facile</string>
+ <string name="attribute_climbing_yes">Arrampicata difficile</string>
+ <string name="attribute_climbing_no">Arrampicata facile o assente </string>
+ <string name="attribute_wading_yes">Può richiedere un guado</string>
+ <string name="attribute_wading_no">Non prevede guadi</string>
+ <string name="attribute_swimming_yes">Può richiedere nuoto</string>
+ <string name="attribute_swimming_no">Non richiede nuoto</string>
+ <string name="attribute_available_yes">Disponibile ad ogni ora del giorno</string>
+ <string name="attribute_available_no">Non disponibile ad ogni ora del giorno</string>
+ <string name="attribute_night_yes">Raccomandato di notte</string>
+ <string name="attribute_night_no">Non raccomandato di notte</string>
+ <string name="attribute_winter_yes">Disponibile d\'inverno</string>
+ <string name="attribute_winter_no">Non disponibile d\'inverno</string>
+ <string name="attribute_stealth_yes">Richiede invisibilità</string>
+ <string name="attribute_stealth_no">Non richiede invisibilità</string>
+ <string name="attribute_firstaid_yes">Necessita di manutenzione</string>
+ <string name="attribute_firstaid_no">Non necessita di manutenzione</string>
+ <string name="attribute_cow_yes">Attenzione agli animali selvatici</string>
+ <string name="attribute_cow_no">Non ci sono animali selvatici</string>
+ <string name="attribute_field_puzzle_yes">Terreno accidentato</string>
+ <string name="attribute_field_puzzle_no">Terreno non accidentato</string>
+ <string name="attribute_nightcache_yes">Cache notturno</string>
+ <string name="attribute_nightcache_no">Cache non notturno</string>
+ <string name="attribute_parkngrab_yes">Parcheggia e trova! (park and grab)</string>
+ <string name="attribute_parkngrab_no">Parcheggio lontano</string>
+ <string name="attribute_abandonedbuilding_yes">Struttura abbandonata</string>
+ <string name="attribute_abandonedbuilding_no">Struttura non abbandonata</string>
+ <string name="attribute_hike_short_yes">Breve trekking (meno di 1 km)</string>
+ <string name="attribute_hike_short_no">Trekking non breve</string>
+ <string name="attribute_hike_med_yes">Medio trekking (da 1 km a 10 km)</string>
+ <string name="attribute_hike_med_no">Trekking non medio</string>
+ <string name="attribute_hike_long_yes">Lungo trekking (più di 10 km)</string>
+ <string name="attribute_hike_long_no">Trekking non lungo</string>
+ <string name="attribute_seasonal_yes">Accesso stagionale</string>
+ <string name="attribute_seasonal_no">Nessun limite stagionale</string>
+ <string name="attribute_touristok_yes">Turistico</string>
+ <string name="attribute_touristok_no">Non turistico</string>
+ <string name="attribute_frontyard_yes">Residenza privata</string>
+ <string name="attribute_frontyard_no">Residenza non privata</string>
+ <string name="attribute_teamwork_yes">Richiesto lavoro di gruppo</string>
+ <string name="attribute_teamwork_no">Fattibile anche da soli</string>
+ <string name="attribute_landf_yes">Tour \"Lost and found\"</string>
+ <string name="attribute_landf_no">Non è un tour \"Lost and found\"</string>
+ <string name="attribute_partnership_yes">Cache di gruppo</string>
+ <string name="attribute_partnership_no">Cache non di gruppo</string>
+ <string name="attribute_fee_yes">Accesso o parcheggio a pagamento</string>
+ <string name="attribute_fee_no">Accesso o parcheggio non a pagamento</string>
+ <string name="attribute_rappelling_yes">Richiesta attrezzatura da arrampicata</string>
+ <string name="attribute_rappelling_no">Attrezzatura da arrampicata non necessaria</string>
+ <string name="attribute_boat_yes">Necessaria imbarcazione</string>
+ <string name="attribute_boat_no">Imbarcazione non necessaria</string>
+ <string name="attribute_scuba_yes">Richiesta attrezzatura da sub</string>
+ <string name="attribute_scuba_no">Attrezzatura da sub non necessaria</string>
+ <string name="attribute_flashlight_yes">Richiesta torcia elettrica</string>
+ <string name="attribute_flashlight_no">Torcia elettrica non necessaria</string>
+ <string name="attribute_uv_yes">Richiesta lampada UV</string>
+ <string name="attribute_uv_no">Lampada UV non necessaria</string>
+ <string name="attribute_snowshoes_yes">Richieste calzature da neve</string>
+ <string name="attribute_snowshoes_no">Calzature da neve non necessarie</string>
+ <string name="attribute_skiis_yes">Richiesti sci da fondo</string>
+ <string name="attribute_skiis_no">Sci da fondo non necessari</string>
+ <string name="attribute_s_tool_yes">Richiesti attrezzi speciali</string>
+ <string name="attribute_s_tool_no">Attrezzi speciali non necessari</string>
+ <string name="attribute_wirelessbeacon_yes">Segnalatore radio necessario</string>
+ <string name="attribute_wirelessbeacon_no">Segnalatore radio non necessario</string>
+ <string name="attribute_treeclimbing_yes">Richiede di salire su un albero</string>
+ <string name="attribute_treeclimbing_no">Non richiede di salire su un albero</string>
+ <string name="attribute_poisonoak_yes">Piante velenose</string>
+ <string name="attribute_poisonoak_no">Piante non velenose</string>
+ <string name="attribute_dangerousanimals_yes">Animali pericolosi</string>
+ <string name="attribute_dangerousanimals_no">Animali non pericolosi</string>
+ <string name="attribute_ticks_yes">Zecche / insetti</string>
+ <string name="attribute_ticks_no">Non ci sono zecche / insetti</string>
+ <string name="attribute_mine_yes">Miniere abbandonate</string>
+ <string name="attribute_mine_no">Miniere non abbandonate</string>
+ <string name="attribute_cliff_yes">Strapiombo / caduta massi</string>
+ <string name="attribute_cliff_no">Nessun strapiombo / caduta massi</string>
+ <string name="attribute_hunting_yes">Zona di caccia</string>
+ <string name="attribute_hunting_no">Zona non di caccia</string>
+ <string name="attribute_danger_yes">Area pericolosa</string>
+ <string name="attribute_danger_no">Area non pericolosa</string>
+ <string name="attribute_thorn_yes">Rovi</string>
+ <string name="attribute_thorn_no">Senza rovi</string>
+ <string name="attribute_wheelchair_yes">Accessibile con sedia a rotelle</string>
+ <string name="attribute_wheelchair_no">Non accessibile con sedia a rotelle</string>
+ <string name="attribute_parking_yes">Parcheggio</string>
+ <string name="attribute_parking_no">Parcheggio non disponibile</string>
+ <string name="attribute_public_yes">Servito da trasporto pubblico</string>
+ <string name="attribute_public_no">Non servito da trasporto pubblico</string>
+ <string name="attribute_water_yes">Vicino ad acqua potabile</string>
+ <string name="attribute_water_no">Lontano da acqua potabile</string>
+ <string name="attribute_restrooms_yes">Vicino ad alloggi pubblici</string>
+ <string name="attribute_restrooms_no">Lontano da alloggi pubblici</string>
+ <string name="attribute_phone_yes">Vicino a telefono pubblico</string>
+ <string name="attribute_phone_no">Lontano da telefoni</string>
+ <string name="attribute_picnic_yes">Vicino a zona picnic</string>
+ <string name="attribute_picnic_no">Zone picnic non vicine</string>
+ <string name="attribute_camping_yes">Campeggio disponibile</string>
+ <string name="attribute_camping_no">Campeggio non disponibile</string>
+ <string name="attribute_stroller_yes">Accessibile con passeggino</string>
+ <string name="attribute_stroller_no">Non accessibile con passeggino</string>
+ <string name="attribute_fuel_yes">Vicino a pompa carburante</string>
+ <string name="attribute_fuel_no">Lontano da pompa carburante</string>
+ <string name="attribute_food_yes">Vicino a punto ristoro</string>
+ <string name="attribute_food_no">Lontano da punti ristoro</string>
+ <string name="attribute_oc_only_yes">Loggabile solo su Opencaching</string>
+ <string name="attribute_oc_only_no">Loggabile non solo su Opencaching</string>
+ <string name="attribute_link_only_yes">Hyperlink solo verso un altro portale di cache</string>
+ <string name="attribute_link_only_no">Non solo hyperlink ad un altro portale di cache</string>
+ <string name="attribute_letterbox_yes">Lettera (richiede francobollo)</string>
+ <string name="attribute_letterbox_no">No lettera (non richiede francobollo)</string>
+ <string name="attribute_railway_yes">Ferrovia attiva nelle vicinanze</string>
+ <string name="attribute_railway_no">Nessuna ferrovia nelle vicinanze</string>
+ <string name="attribute_syringe_yes">Pronto soccorso disponibile</string>
+ <string name="attribute_syringe_no">Pronto soccorso non disponibile</string>
+ <string name="attribute_swamp_yes">Paludoso</string>
+ <string name="attribute_swamp_no">Non paludoso</string>
+ <string name="attribute_hills_yes">Area collinare</string>
+ <string name="attribute_hills_no">Area non collinare</string>
+ <string name="attribute_easy_climbing_yes">Facile scalata</string>
+ <string name="attribute_easy_climbing_no">Non è una facile scalata</string>
+ <string name="attribute_poi_yes">Punto di interesse</string>
+ <string name="attribute_poi_no">Non è un punto di interesse</string>
+ <string name="attribute_moving_target_yes">Obiettivo in movimento</string>
+ <string name="attribute_moving_target_no">Obiettivo non in movimento</string>
+ <string name="attribute_webcam_yes">Webcam</string>
+ <string name="attribute_webcam_no">No webcam</string>
+ <string name="attribute_inside_yes">Con aree interne (cave, edifici etc.)</string>
+ <string name="attribute_inside_no">Senza aree interne ad edifici</string>
+ <string name="attribute_in_water_yes">In acqua</string>
+ <string name="attribute_in_water_no">Non in acqua</string>
+ <string name="attribute_no_gps_yes">Senza GPS (lettere, carta e bussola…)</string>
+ <string name="attribute_no_gps_no">Con GPS</string>
+ <string name="attribute_overnight_yes">Necessario permanere di notte</string>
+ <string name="attribute_overnight_no">Permanenza notturna non necessaria</string>
+ <string name="attribute_specific_times_yes">Disponibile solo in certi orari</string>
+ <string name="attribute_specific_times_no">Disponibile a tutte le ore</string>
+ <string name="attribute_day_yes">Solo di giorno</string>
+ <string name="attribute_day_no">Non solo di giorno</string>
+ <string name="attribute_tide_yes">Marea</string>
+ <string name="attribute_tide_no">Senza marea</string>
+ <string name="attribute_all_seasons_yes">Tutte le stagioni</string>
+ <string name="attribute_all_seasons_no">Non in tutte le stagioni</string>
+ <string name="attribute_breeding_yes">Stagione di riproduzione / natura protetta</string>
+ <string name="attribute_breeding_no">Disponibile anche in stagione di riproduzione / natura protetta</string>
+ <string name="attribute_snow_proof_yes">Nascondiglio a prova di neve</string>
+ <string name="attribute_snow_proof_no">Nascondiglio non a prova di neve</string>
+ <string name="attribute_compass_yes">Bussola</string>
+ <string name="attribute_compass_no">Senza bussola</string>
+ <string name="attribute_cave_yes">Equipaggiamento da caverna</string>
+ <string name="attribute_cave_no">Senza equipaggiamento da caverna</string>
+ <string name="attribute_aircraft_yes">Aereo</string>
+ <string name="attribute_aircraft_no">Senza aereo</string>
+ <string name="attribute_investigation_yes">Investigazione richiesta</string>
+ <string name="attribute_investigation_no">Investigazione non richiesta</string>
+ <string name="attribute_puzzle_yes">Puzzle / Mystery</string>
+ <string name="attribute_puzzle_no">No puzzle / mystery</string>
+ <string name="attribute_arithmetic_yes">Problema aritmetico</string>
+ <string name="attribute_arithmetic_no">Problema non aritmetico</string>
+ <string name="attribute_other_cache_yes">Cache di altro tipo</string>
+ <string name="attribute_other_cache_no">Cache non di altro tipo</string>
+ <string name="attribute_ask_owner_yes">Chiedere al proprietario per le condizioni di partenza</string>
+ <string name="attribute_ask_owner_no">Non chiedere al proprietario per le condizioni di partenza</string>
+ <string name="attribute_unknown_yes">Attributo sconosciuto</string>
+ <string name="attribute_unknown_no">Senza attributo sconosciuto</string>
+ <string name="attribute_geotour_yes">Parte di un GeoTour</string>
+ <string name="attribute_geotour_no">Non fa parte di un GeoTour</string>
+ <string name="quote">Per rendere il geocaching più facile e gli utenti più pigri.</string>
+ <string name="powered_by">carnero</string>
+ <string name="support">Supporto: <a href="">support@cgeo.org</a></string>
+ <string name="website">Sito: <a href="">cgeo.org</a></string>
+ <string name="facebook">Facebook: <a href="">c:geo page</a></string>
+ <string name="twitter">Twitter: <a href="">@android_GC</a></string>
+ <string name="nutshellmanual">Manuale: <a href="">c:geo in a Nutshell</a></string>
+ <string name="market">Android: <a href="">c:geo su Google Play</a></string>
+ <string name="about_twitter">Può <b>c:geo</b> pubblicare su Twitter ogni volta che logghi un cache?</string>
+ <string name="faq">FAQ: <a href="">faq.cgeo.org</a></string>
+ <string name="status_new_release" tools:ignore="UnusedResources">Una nuova versione è disponibile.\nClicca per installarla.</string>
+ <string name="status_new_nightly" tools:ignore="UnusedResources">Una nuova versione nightly è disponibile.\nClicca per installarla.</string>
+ <string name="status_new_rc" tools:ignore="UnusedResources">Una nuova release candidate è disponibile.\nClicca per installarla.</string>
+ <string name="status_geocaching_change" tools:ignore="UnusedResources">Modifiche recenti al sito geocaching hanno disattivato c:geo.\nCi stiamo lavorando, riprova più tardi.</string>
+ <string name="status_geocaching_livemap" tools:ignore="UnusedResources">Modifiche recenti al sito geocaching hanno disattivato la mappa live.\nCi stiamo lavorando, riprova più tardi.</string>
<string name="status_closeout_warning" tools:ignore="UnusedResources">Sembra che tu stia utilizzando una versione di Android precedente alla 2.1. Le future versioni di c:geo potrebbero non supportare il tuo dispositivo.</string>
-
- <!-- text-to-speech for compass view -->
- <string name="tts_service">Bussola parlante</string>
- <string name="tts_start">Start voce</string>
- <string name="tts_stop">Stop voce</string>
- <string name="tts_one_kilometer">un chilometro</string>
- <plurals name="tts_kilometers">
- <item quantity="one">un chilometro</item>
- <item quantity="other">%s chilometri</item>
- </plurals>
- <string name="tts_one_meter">un metro</string>
- <plurals name="tts_meters">
- <item quantity="one">un metro</item>
- <item quantity="other">%s metri</item>
- </plurals>
- <string name="tts_one_mile">un miglio</string>
- <plurals name="tts_miles">
- <item quantity="one">un miglio</item>
- <item quantity="other">%s miglia</item>
- </plurals>
- <string name="tts_one_foot">un piede</string>
- <plurals name="tts_feet">
- <item quantity="one">un piede</item>
- <item quantity="other">%s piedi</item>
- </plurals>
- <string name="tts_one_oclock">a ore una</string>
- <string name="tts_oclock">a ore %s</string>
-
- <!-- various -->
- <string name="clipboard_copy_ok">Copiato nella clipboard</string>
-
- <plurals name="days_ago">
- <item quantity="one">ieri</item>
- <item quantity="other">%d giorni fa</item>
- </plurals>
-
+ <string name="tts_service">Bussola parlante</string>
+ <string name="tts_start">Start voce</string>
+ <string name="tts_stop">Stop voce</string>
+ <string name="err_tts_lang_not_supported">Il linguaggio attivo non è supportato dal modulo di sintesi vocale.</string>
+ <string name="tts_one_kilometer">un chilometro</string>
+ <string name="tts_one_meter">un metro</string>
+ <string name="tts_one_mile">un miglio</string>
+ <string name="tts_one_foot">un piede</string>
+ <string name="tts_one_oclock">a ore una</string>
+ <string name="tts_oclock">a ore %s</string>
+ <string name="clipboard_copy_ok">Copiato nella clipboard</string>
+ <string-array name="log_image_scales">
+ <item>Dimensioni originali</item>
+ <item>512 px</item>
+ <item>640 px</item>
+ <item>800 px</item>
+ <item>1024 px</item>
+ </string-array>
+ <plurals name="caches_eta_mins">
+ <item quantity="one">minuto</item>
+ <item quantity="other">minuti</item>
+ </plurals>
+ <plurals name="cache_counts">
+ <item quantity="one">Un cache</item>
+ <item quantity="other">%1$d cache</item>
+ </plurals>
+ <plurals name="waypoints">
+ <item quantity="one">1 Waypoint</item>
+ <item quantity="other">%d Waypoint</item>
+ </plurals>
+ <plurals name="tts_kilometers">
+ <item quantity="one">un chilometro</item>
+ <item quantity="other">%s chilometri</item>
+ </plurals>
+ <plurals name="tts_meters">
+ <item quantity="one">un metro</item>
+ <item quantity="other">%s metri</item>
+ </plurals>
+ <plurals name="tts_miles">
+ <item quantity="one">un miglio</item>
+ <item quantity="other">%s miglia</item>
+ </plurals>
+ <plurals name="tts_feet">
+ <item quantity="one">un piede</item>
+ <item quantity="other">%s piedi</item>
+ </plurals>
+ <plurals name="days_ago">
+ <item quantity="one">ieri</item>
+ <item quantity="other">%d giorni fa</item>
+ </plurals>
</resources>
diff --git a/main/res/values-ja/strings.xml b/main/res/values-ja/strings.xml
index 377b2b4..fab02c2 100644
--- a/main/res/values-ja/strings.xml
+++ b/main/res/values-ja/strings.xml
@@ -332,7 +332,6 @@
<!-- caches lists -->
<string name="list_menu">リスト</string>
<string name="list_menu_create">新しいリストを作成</string>
- <string name="list_menu_all_lists">全てのキャッシュ</string>
<string name="list_menu_drop">このリストを消去</string>
<string name="list_menu_change">別のリストにする</string>
<string name="list_menu_rename">このリスト名を変更</string>
@@ -386,8 +385,8 @@
<string name="init_oc">Opencaching.de</string>
<string name="settings_activate_oc">有効化</string>
<string name="init_oc_de_description">キャッシュを検索したり見つけたキャッシュにアクセス/フィルタリングしたりするためにc:geoにopencaching.deを認証させる。</string>
- <string name="init_register_oc_de">c:geoを認証</string>
- <string name="init_reregister_oc_de">再度c:geoを認証</string>
+ <string name="settings_authorize">c:geoを認証</string>
+ <string name="settings_reauthorize">再度c:geoを認証</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="settings_activate_twitter">有効化</string>
@@ -400,8 +399,6 @@
<string name="init_login_popup_failed">ログイン失敗</string>
<string name="init_login_popup_failed_reason">ログインに失敗しました。原因: </string>
<string name="init_login_popup_not_authorized">認証できませんでした</string>
- <string name="init_twitter_authorize">c:geoを認証</string>
- <string name="init_twitter_reauthorize">再度c:geoを認証</string>
<string name="init_signature">署名</string>
<string name="init_signature_help_text">ログ本文で使う署名を入力してください。\n特別な文字として、[DATE]、[TIME]、[DATETIME]、[USER]や[NUMBER]があります。\nこれらは署名の挿入時に、日付、時間、日時、ユーザ名や見つけたキャッシュ数+1に変換されます。</string>
<string name="init_signature_template_button">テンプレートを挿入</string>
@@ -519,28 +516,11 @@
<string name="auth_authorize">c:geoを認証</string>
<string name="auth_start">認証を開始</string>
<string name="auth_again">再度認証を開始</string>
- <string name="auth_pin_hint">TwitterのPINコード</string>
<string name="auth_finish">完了</string>
- <string name="auth_dialog_wait">Twitterからの返答を待っています…</string>
- <string name="auth_dialog_pin_title">PINコード</string>
- <string name="auth_dialog_pin_message">Twitterのサイトで表示されたPINコードを入力してください。認証を完了するために必要です。</string>
- <string name="auth_dialog_completed">c:geoはTwitterにポストするための認証を受けました。</string>
- <string name="about_auth_1"><b>c:geo</b>がTwitterにアクセスする許可を得るには次のようにしてください。</string>
- <string name="about_auth_2">「認証を開始する」ボタンを押すとブラウザでTwitterのページが開きます。そのページにログインすれば<b>c:geo</b>があなたのアカウントにアクセルする許可が得られます。ログインに成功したら数字のPINコードが表示されるので、この下の入力欄にコピー&amp;ペーストして「完了」ボタンを押してください。</string>
<!-- auth opencaching -->
<string name="auth_ocde">opencaching.de</string>
- <string name="auth_authorize_oc">c:geoを認証</string>
- <string name="auth_start_oc">認証を開始</string>
- <string name="auth_again_oc">再度認証を開始</string>
- <string name="auth_pin_hint_oc">%sのPINコード</string>
- <string name="auth_finish_oc">完了</string>
- <string name="auth_dialog_wait_oc">%sからの返答を待っています…</string>
- <string name="auth_dialog_pin_title_oc">PINコード</string>
- <string name="auth_dialog_pin_message_oc">%sのサイトで表示されたPINコードを入力してください。認証を完了するために必要です。</string>
<string name="auth_dialog_completed_oc">c:geoは%sと連携するための認証を受けました。</string>
- <string name="about_auth_1_oc"><b>c:geo</b>が%sにアクセスする許可を得るには次のようにしてください。</string>
- <string name="about_auth_2_oc">「認証を開始する」ボタンを押すとブラウザで%sのページが開きます。そのページにログインすれば<b>c:geo</b>があなたのアカウントにアクセルする許可が得られます。ログインに成功したら数字のPINコードが表示されるので、この下の入力欄にコピー&amp;ペーストして「完了」ボタンを押してください。</string>
<!-- cache -->
<plurals name="cache_counts">
diff --git a/main/res/values-nb/strings.xml b/main/res/values-nb/strings.xml
index d49583e..57545e6 100644
--- a/main/res/values-nb/strings.xml
+++ b/main/res/values-nb/strings.xml
@@ -196,7 +196,7 @@
<string name="init_login_popup_ok">Innlogging fullført.</string>
<string name="init_login_popup_failed">Innlogging mislyktes.</string>
<string name="init_login_popup_failed_reason">Innlogging mislyktes p.g.a.</string>
- <string name="init_twitter_authorize">Autoriser c:geo</string>
+ <string name="settings_authorize">Autoriser c:geo</string>
<string name="init_signature">Signatur</string>
<string name="init_skin">Hvitt tema</string>
<string name="init_summary_skin">Hvitt tema</string>
@@ -220,12 +220,7 @@
<string name="auth_authorize">Autoriser c:geo</string>
<string name="auth_start">Start autorisasjon</string>
<string name="auth_again">Prøv igjen</string>
- <string name="auth_pin_hint">PIN-kode oppgitt av Twitter</string>
<string name="auth_finish">Fullfør</string>
- <string name="auth_dialog_wait">venter på Twitter…</string>
- <string name="auth_dialog_pin_title">PIN-kode</string>
- <string name="auth_dialog_pin_message">Vennligst tast inn PIN-koden oppgitt av Twitter. Det er obligatorisk at du fullfører autorisasjonen.</string>
- <string name="auth_dialog_completed">c:geo kan nå poste på Twitter.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -389,7 +384,5 @@
<string name="website">web-side: <a href="http://cgeo.org/">cgeo.org</a></string>
<string name="facebook">facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">c:geo page</a></string>
<string name="about_twitter">Ønsker du at <b>c:geo</b> skal poste en status på Twitter hver gang du logger ett funn via <b>c:geo</b>?</string>
- <string name="about_auth_1">Den følgende prosessen tillater <b>c:geo</b> tilgang til Twitter - hvis bruker samtykker.</string>
- <string name="about_auth_2">Trykk på \"Start autorisasjon\" knappen for å starte prosessen. Denne prosessen vil åpne Twitter i web-leseren. Logg inn, og tillat <b>c:geo</b> tilgang til kontoen din. Hvis du aksepterer, vil Twitter oppgi en numerisk PIN-kode. Denne PIN-koden må så limes inn i <b>c:geo</b>. Verre er det ikke.</string>
</resources>
diff --git a/main/res/values-nl/strings.xml b/main/res/values-nl/strings.xml
index bdecc02..19829d4 100644
--- a/main/res/values-nl/strings.xml
+++ b/main/res/values-nl/strings.xml
@@ -305,7 +305,6 @@
<!-- caches lists -->
<string name="list_menu">Lijst</string>
<string name="list_menu_create">Maak nieuwe lijst</string>
- <string name="list_menu_all_lists">Alle caches</string>
<string name="list_menu_drop">Verwijder huidige lijst</string>
<string name="list_menu_change">Pas lijst aan</string>
<string name="list_menu_rename">Hernoem huidige lijst</string>
@@ -344,7 +343,7 @@
<string name="init_login_popup_ok">Ingelogd.</string>
<string name="init_login_popup_failed">Inloggen mislukt.</string>
<string name="init_login_popup_failed_reason">Inloggen mislukt omdat </string>
- <string name="init_twitter_authorize">c:geo Autoriseren</string>
+ <string name="settings_authorize">c:geo Autoriseren</string>
<string name="init_signature">Handtekening</string>
<string name="init_signature_help_text">Maak een handtekening om te gebruiken in logs.\nSpeciale teksten die gebruikt kunnen worden zijn: [DATE] , [TIME], [DATETIME], [USER] &amp; [NUMBER].\nDeze worden ingevuld op het moment dat de handtekening ingevoegd word.</string>
<string name="init_signature_template_button">Voeg template toe</string>
@@ -456,12 +455,7 @@
<string name="auth_authorize">c:geo Autoriseren</string>
<string name="auth_start">Start autorisatie</string>
<string name="auth_again">Nogmaals starten</string>
- <string name="auth_pin_hint">Door Twitter toegekende pin</string>
<string name="auth_finish">Afronden</string>
- <string name="auth_dialog_wait">Wachten op Twitter…</string>
- <string name="auth_dialog_pin_title">Pin code</string>
- <string name="auth_dialog_pin_message">Voer de door de Twitter website verstrekte PIN code in. Deze is verplicht om de autorisatie af te ronden.</string>
- <string name="auth_dialog_completed">c:geo Is nu geautoriseerd om naar Twitter te posten.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -1018,8 +1012,6 @@
<string name="twitter">Twitter: <a href="">@android_GC</a></string>
<string name="nutshellmanual">Handleiding: <a href="">c:geo in een notendop</a></string>
<string name="about_twitter">Moet <b>c:geo</b> elke cache vondst publiceren naar Twitter?</string>
- <string name="about_auth_1">Het volgende proces staat <b>c:geo</b> toe om Twitter toegang te verkrijgen bij goedkeuring.</string>
- <string name="about_auth_2">Klik op de \"autoriseer c:geo\" knop om het proces te starten. Dit proces zal een browser openen met een Twitter pagina. Login op deze pagina en sta <b>c:geo</b> toegang tot je account toe. Bij goedkeuring laat Twitter een numerieke PIN code zien. Deze PIN dien je te plakken en te bevestigen in <b>c:geo</b>.</string>
<!-- status (used via string based resource loading) -->
<string name="status_new_release" tools:ignore="UnusedResources">Nieuwe release beschikbaar.\nTik om te installeren.</string>
diff --git a/main/res/values-pl/strings.xml b/main/res/values-pl/strings.xml
index 9b1bc87..967098f 100644
--- a/main/res/values-pl/strings.xml
+++ b/main/res/values-pl/strings.xml
@@ -326,7 +326,6 @@
<!-- caches lists -->
<string name="list_menu">Lista</string>
<string name="list_menu_create">Utwórz nową listę</string>
- <string name="list_menu_all_lists">Wszystkie skrzynki</string>
<string name="list_menu_drop">Usuń aktualną listę</string>
<string name="list_menu_change">Zmień listę</string>
<string name="list_menu_rename">Zmień nazwę aktualnej listy</string>
@@ -381,7 +380,7 @@
<string name="init_oc">Opencaching.de</string>
<string name="settings_activate_oc">Aktywuj</string>
<string name="init_oc_de_description">Autoryzuj c:geo z opencaching.de aby wyszukiwać skrzynki i mieć dostęp/filtrować znalezione skrzynki.</string>
- <string name="init_register_oc_de">Autoryzuj c:geo</string>
+ <string name="settings_authorize">Autoryzuj c:geo</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="settings_activate_twitter">Aktywuj</string>
@@ -394,7 +393,6 @@
<string name="init_login_popup_failed">Logowanie nie powiodło się</string>
<string name="init_login_popup_failed_reason">Logowanie nie powiodło się, ponieważ </string>
<string name="init_login_popup_not_authorized">Brak autoryzacji</string>
- <string name="init_twitter_authorize">Autoryzacja c:geo</string>
<string name="init_signature">Podpis</string>
<string name="init_signature_help_text">Wprowadź Twój podpis, który będzie używany przy wpisie do dziennika.\nWyrażenia specjalne, które mogą być użyte to: [DATE] , [TIME], [DATETIME], [USER] &amp; [NUMBER].\nBędą one zastępowane w momencie wstawiania podpisu.</string>
<string name="init_signature_template_button">Wstaw szablon</string>
@@ -514,26 +512,11 @@
<string name="auth_authorize">Autoryzacja c:geo</string>
<string name="auth_start">Rozpoczynam autoryzację</string>
<string name="auth_again">Rozpoczynam ponownie autoryzację</string>
- <string name="auth_pin_hint">PIN nadany przez Twitter</string>
<string name="auth_finish">Gotowe</string>
- <string name="auth_dialog_wait">Czekam na Twitter…</string>
- <string name="auth_dialog_pin_title">Kod PIN</string>
- <string name="auth_dialog_pin_message">Proszę wpisać kod PIN dostarczony przez stronę Twitter. To jest obowiązkowe do ukończenia autoryzacji.</string>
- <string name="auth_dialog_completed">c:geo jest teraz upoważniony do postu na Twitter.</string>
<!-- auth opencaching -->
<string name="auth_ocde">opencaching.de</string>
- <string name="auth_authorize_oc">Autoryzuj c:geo</string>
- <string name="auth_start_oc">Rozpocznij autoryzację</string>
- <string name="auth_again_oc">Spróbuj ponownie</string>
- <string name="auth_pin_hint_oc">PIN przypisany przez %s</string>
- <string name="auth_finish_oc">Zakończ</string>
- <string name="auth_dialog_wait_oc">Czekam na %s…</string>
- <string name="auth_dialog_pin_title_oc">Kod PIN</string>
- <string name="auth_dialog_pin_message_oc">Proszę wpisz kod PIN dostarczony przez stronę %s. Jest to konieczne by zakończyć autoryzację.</string>
<string name="auth_dialog_completed_oc">c:geo został zautoryzowany by komunikować się z %s.</string>
- <string name="about_auth_1_oc">Następujący proces pozwolił <b>c:geo</b> aby uzyskać dostęp do %s - jeśli wyrażono zgodę.</string>
- <string name="about_auth_2_oc">Kliknięcie na przycisk \"autoryzuj c:geo\" rozpocznie proces. Zostanie otwarta przeglądarka ze stroną %s. Zaloguj się i pozwól <b>c:geo</b> uzyskać dostęp do Twojego konta. Po zaakceptowaniu, %s pokaże kod numeryczny PIN. Ten kod PIN musi być wklejony do <b>c:geo</b> i potwierdzony. To wszystko.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -1121,8 +1104,6 @@
<string name="nutshellmanual">Podręcznik: <a href="">c:geo skrócona instrukcja obsługi</a></string>
<string name="market">Android: <a href="">c:geo w Google Play</a></string>
<string name="about_twitter">Czy chczesz aby <b>c:geo</b> publikował nowy status na Twitter za każdym razem kiedy znajdziesz skrzynkę?</string>
- <string name="about_auth_1">Poniższy proces pozwala <b>c:geo</b> uzyskać dostęp do Twitter za Twoim pozwoleniem.</string>
- <string name="about_auth_2">Kliknięcie na \"Autoryzacja c:geo\" spowoduje rozpoczęcie procesu. Ten proces spowoduje otwarcie przeglądarki internetowej na stronie Twitter. Zaloguj się na tej stronie i pozwól <b>c:geo</b> uzyskać dostęp do Twojego konta. Jeśli zostanie zaakceptowany, Twitter wyświetli kod numeryczny PIN. Kod PIN musi zostać wklejony do <b>c:geo</b> i potwierdzony. To wszystko.</string>
<!-- status (used via string based resource loading) -->
<string name="status_new_release" tools:ignore="UnusedResources">Dostępna nowa wersja.\nKliknij aby zainstalować.</string>
diff --git a/main/res/values-pt/strings.xml b/main/res/values-pt/strings.xml
index acd15a3..d0fdd9e 100644
--- a/main/res/values-pt/strings.xml
+++ b/main/res/values-pt/strings.xml
@@ -293,13 +293,12 @@
<string name="caches_clear_offlinelogs_progress">A limpar registos offline</string>
<string name="list_menu">Listas</string>
<string name="list_menu_create">Criar nova lista</string>
- <string name="list_menu_all_lists">caches todas</string>
<string name="list_menu_drop">Apagar lista actual</string>
<string name="list_menu_change">Mudar de lista</string>
<string name="list_menu_rename">Mudar o nome da lista corrente.</string>
<string name="list_title">Escolha uma lista</string>
<string name="list_inbox">Arquivadas</string>
- <string name="list_all_lists">caches todas</string>
+ <string name="list_all_lists">Todas as caches</string>
<string name="list_dialog_create_title">Nova lista</string>
<string name="list_dialog_create">Criar</string>
<string name="list_dialog_cancel">Cancelar</string>
@@ -346,13 +345,11 @@
<string name="init_oc">Opencaching.de</string>
<string name="settings_activate_oc">Activar</string>
<string name="init_oc_de_description">Autorizar c:geo com opencaching.de para pesquisar por caches e aceder/filtrar as suas caches encontradas.</string>
- <string name="init_register_oc_de">Autorizar c:geo</string>
- <string name="init_reregister_oc_de">Reautorizar c:geo</string>
+ <string name="settings_authorize">Autorizar c:geo</string>
+ <string name="settings_reauthorize">Reautorizar c:geo</string>
<string name="init_oc_pl">Opencaching.pl</string>
<string name="settings_activate_oc_pl">Activar</string>
<string name="init_oc_pl_description">Autorizar c:geo com opencaching.pl para pesquisar por caches e aceder/filtrar as suas caches encontradas.</string>
- <string name="init_register_oc_pl">Autorizar c:geo</string>
- <string name="init_reregister_oc_pl">Reautorizar c:geo</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="settings_activate_twitter">Activar</string>
@@ -365,8 +362,6 @@
<string name="init_login_popup_failed">Login falhado.</string>
<string name="init_login_popup_failed_reason">Login falhado porque </string>
<string name="init_login_popup_not_authorized">Não autorizado</string>
- <string name="init_twitter_authorize">Autorize o c:geo</string>
- <string name="init_twitter_reauthorize">Reautorizar c:geo</string>
<string name="init_signature">Assinatura</string>
<string name="init_signature_help_text">Escreva a sua assinatura, para adicionar ao texto de registo na cache.\nPode usar algumas palavras-chave: [DATE] , [TIME], [USER] &amp; [NUMBER].\nEstas serão expandidas quando a assinatura for inserida.</string>
<string name="init_signature_template_button">Inserir modelo</string>
@@ -427,10 +422,12 @@
<string name="init_backup_last">Disponível backup de</string>
<string name="init_backup_last_no">Não existe nenhum ficheiro de backup.</string>
<string name="settings_info_offline_maps_title">Informações sobre Offline Maps</string>
- <string name="settings_info_offline_maps">c: geo suporta mapas para uso offline. Pode baixar mapas de Mapsforge ou até mesmo criar seus próprios mapas a partir de dados OSM.</string>
+ <string name="settings_info_offline_maps">c:geo supports maps for offline use. You can download maps from Mapsforge or even create your own maps from OSM data. You need to select the offline map directory first to to get offline map support.</string>
<string name="settings_info_themes_title">Informações sobre Map Themes</string>
<string name="settings_info_themes">c: geo suporta temas customizados para os mapas off-line. Estes podem ser usados ​​para alterar o estilo de cores do mapa (por exemplo, ter um mapa para visão nocturna) ou para realçar certos objetos, como ciclovias ou linhas de altura dentro do mapa.</string>
<string name="init_mapsource_select">Seleccione a fonte de mapa</string>
+ <string name="settings_title_scale_map_text">Scale Map Text</string>
+ <string name="settings_summary_scale_map_text">Scale text labels on offline map according to device dpi</string>
<string name="init_map_directory_description">Directório com os mapas offline</string>
<string name="init_gpx_exportdir">Directório para exportar GPX</string>
<string name="init_gpx_importdir">Directório para importar GPX</string>
@@ -463,6 +460,9 @@
<string name="init_use_native_ua">Identificar como se fosse o browser do Android. Resolve os problemas de login em alguns provedores de rede.</string>
<string name="init_summary_use_native_ua">Identificar como se fosse o browser do Android. Resolve os problemas de login em alguns provedores de rede.</string>
<string name="init_rendertheme_folder">Directório de Temas de Mapas</string>
+ <string name="settings_open_website">Abrir o website</string>
+ <string name="settings_settings">Definições</string>
+ <string name="settings_information">Informações</string>
<string name="map_source_google_map">Google: Mapa</string>
<string name="map_source_google_satellite">Google: Satélite</string>
<string name="map_source_osm_mapnik">OSM: Mapnik</string>
@@ -482,27 +482,14 @@
<string name="auth_authorize">Autorizar c:geo</string>
<string name="auth_start">Iniciar autorização</string>
<string name="auth_again">Iniciar de novo</string>
- <string name="auth_pin_hint">PIN atribuído pelo Twitter</string>
<string name="auth_finish">Fim</string>
- <string name="auth_dialog_wait">A esperar pelo Twitter…</string>
- <string name="auth_dialog_pin_title">Código PIN</string>
- <string name="auth_dialog_pin_message">Por favor insira o código PIN fornecido pelo site do Twitter. É imperativo para que se complete a autorização.</string>
- <string name="auth_dialog_completed">O c:geo está agora autorizado a publicar no Twitter.</string>
- <string name="about_auth_1">O processo seguinte permite <b>c:geo</b> aceder ao Twitter - se concordar.</string>
- <string name="about_auth_2">Um clique sobre o botão \"autorizar c:geo \" irá iniciar o processo. Este processo irá abrir um navegador com uma página no Twitter. Entre nesta página e permita o <b>c:geo</b> aceder à sua conta. Se isso for aceite, o Twitter vai mostrar um código PIN numérico. Este PIN deve ser colado em <b>c:geo</b> e confirmado. É tudo.</string>
+ <string name="auth_dialog_waiting">Esperando por %s…</string>
+ <string name="auth_explain_short">O processo a seguir permitirá que <b>c:geo</b> acesse o %s.</string>
+ <string name="auth_explain_long">Pressing the \"authorize c:geo\" button will start the process. This process will open up a web browser with a %s page. Log in on this page and allow <b>c:geo</b> to access your account. That\'s all.</string>
+ <string name="auth_dialog_completed_twitter">O c:geo está agora autorizado a publicar no Twitter.</string>
<string name="auth_ocde">opencaching.de</string>
<string name="auth_ocpl">Opencaching.pl</string>
- <string name="auth_authorize_oc">Autorizar c:geo</string>
- <string name="auth_start_oc">Começar autorização</string>
- <string name="auth_again_oc">Iniciar de novo</string>
- <string name="auth_pin_hint_oc">PIN atribuído por %s</string>
- <string name="auth_finish_oc">Fim</string>
- <string name="auth_dialog_wait_oc">A esperar pot %s…</string>
- <string name="auth_dialog_pin_title_oc">Código PIN</string>
- <string name="auth_dialog_pin_message_oc">Por favor insira o código PIN fornecido pelo site %s. É imperativo para que se complete a autorização.</string>
<string name="auth_dialog_completed_oc">c:geo está agora autorizado a interagir com %s.</string>
- <string name="about_auth_1_oc">O processo seguinte permite <b>c:geo</b> aceder ao Twitter - se concordar.</string>
- <string name="about_auth_2_oc">Um clique sobre o botão \"autorizar c:geo \" irá iniciar o processo. Este processo irá abrir um navegador com uma página em %s. Entre nesta página e permita o <b>c:geo</b> aceder à sua conta. Se isso for aceite, %s vai mostrar um código PIN numérico. Este PIN deve ser colado em <b>c:geo</b> e confirmado. É tudo.</string>
<string name="cache_offline">Arquivo</string>
<string name="cache_offline_refresh">Actualizar</string>
<string name="cache_offline_drop">Apagar</string>
@@ -798,6 +785,7 @@
<string name="destination_set">Definir destino</string>
<string name="navigation_direct_navigation">Navegação directa</string>
<string name="navigation_target">Destino</string>
+ <string name="err_nav_no_coordinates">Não pode iniciar a navegação sem coordenadas</string>
<string name="license">Licença</string>
<string name="license_show">Mostrar licença</string>
<string name="license_dismiss">Dispensar</string>
@@ -1029,7 +1017,7 @@
<string name="twitter">Twitter: <a href="">@android_GC</a></string>
<string name="nutshellmanual">Manual: <a href="">o essencial do c:geo</a></string>
<string name="market">Android: <a href="">c:geo no Google Play</a></string>
- <string name="about_twitter">O <b>c:geo</b> deve publicar no Twitter de cada vez que uma cache for registada?</string>
+ <string name="about_twitter">O <b>c:geo</b> deve publicar no Twitter de cada vez que uma cache foi registrada?</string>
<string name="faq">FAQ: <a href="">faq.cgeo.org</a></string>
<string name="status_new_release" tools:ignore="UnusedResources">Nova versão disponível.\nClique para instalar.</string>
<string name="status_new_nightly" tools:ignore="UnusedResources">Nova \'nightly build\' disponível.\nClique para instalar.</string>
diff --git a/main/res/values-sk/strings.xml b/main/res/values-sk/strings.xml
index de25c00..948ebf7 100644
--- a/main/res/values-sk/strings.xml
+++ b/main/res/values-sk/strings.xml
@@ -298,7 +298,6 @@
<!-- caches lists -->
<string name="list_menu">Zoznam</string>
<string name="list_menu_create">Vytvoriť nový zoznam</string>
- <string name="list_menu_all_lists">Všetky skrýše</string>
<string name="list_menu_drop">Zahodiť aktuálny zoznam</string>
<string name="list_menu_change">Zmeniť zoznam</string>
<string name="list_menu_rename">Premenovať tento zoznam</string>
@@ -336,7 +335,7 @@
<string name="init_login_popup_ok">Prihlásenie úspešné</string>
<string name="init_login_popup_failed">Prihlásenie neúspešné</string>
<string name="init_login_popup_failed_reason">Prihlásenie neúspešné: </string>
- <string name="init_twitter_authorize">Autorizovať c:geo</string>
+ <string name="settings_authorize">Autorizovať c:geo</string>
<string name="init_signature">Podpis</string>
<string name="init_signature_help_text">Zapíšte váš podpis, ktorý chcete použiť v texte záznamov.\nMôžete použiť špeciálne slová: [DATE] , [TIME], [DATETIME], [USER] a [NUMBER].\nTieto budú nahradené pri vložení podpisu.</string>
<string name="init_signature_template_button">Vložiť šablónu</string>
@@ -446,12 +445,7 @@
<string name="auth_authorize">autorizovať c:geo</string>
<string name="auth_start">Zahájiť autorizáciu</string>
<string name="auth_again">Znovu autorizovať</string>
- <string name="auth_pin_hint">PIN pridelený Twitterom</string>
<string name="auth_finish">Dokončiť</string>
- <string name="auth_dialog_wait">Čakanie na Twitter…</string>
- <string name="auth_dialog_pin_title">PIN kód</string>
- <string name="auth_dialog_pin_message">Prosím, napíšte PIN kód, ktorý vám zobrazil Twitter. Je to potrebné pre dokončenie autorizácie.</string>
- <string name="auth_dialog_completed">c:geo teraz môže posielať správy na váš Twitter.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -937,8 +931,6 @@
<string name="twitter">Twitter: <a href="">@android_GC</a></string>
<string name="nutshellmanual">Manuál: <a href="">c:geo v kocke</a></string>
<string name="about_twitter">Chcete, aby <b>c:geo</b> napísalo na váš Twitter vždy keď zapíšete nájdenie skrýše?</string>
- <string name="about_auth_1">Pomocou nasledujúceho procesu môžete aplikácii <b>c:geo</b> umožniť odosielanie príspevkov na váš Twitter. </string>
- <string name="about_auth_2">Ťuknutím na tlačidlo „Zahájiť autorizáciu“ celý proces začne. Tento proces otvorí webovú stránku Twitteru, kde sa sa prihlásite a tlačidlom „Authorize app“ umožníte aplikácii <b>c:geo</b> prístup k vášmu Twitter účtu. Potom čo ťuknete na „Authorize app“, Twitter vám pridelí PIN kód. Tento kód skopírujte a vložte do aplikácie <b>c:geo</b>. A potvrďte. To je všetko.</string>
<!-- status -->
<string name="status_new_release" tools:ignore="UnusedResources">Je dostupné nové vydanie.\nKliknite pre inštaláciu.</string>
diff --git a/main/res/values-sl/strings.xml b/main/res/values-sl/strings.xml
index 11bf1a0..c42be97 100644
--- a/main/res/values-sl/strings.xml
+++ b/main/res/values-sl/strings.xml
@@ -335,7 +335,6 @@
<!-- caches lists -->
<string name="list_menu">Seznam</string>
<string name="list_menu_create">Ustvari nov seznam</string>
- <string name="list_menu_all_lists">Vsi zakladi</string>
<string name="list_menu_drop">Izbriši trenutni seznam</string>
<string name="list_menu_change">Spremeni seznam</string>
<string name="list_menu_rename">Preimenuj trenutni seznam</string>
@@ -395,13 +394,11 @@
<string name="init_oc">Opencaching.de</string>
<string name="settings_activate_oc">Aktiviraj</string>
<string name="init_oc_de_description">Poveži c:geo z opencaching.de za iskanje zakladov in dostop in filter najdenih zakladov.</string>
- <string name="init_register_oc_de">Poveži c:geo z opencaching.de</string>
- <string name="init_reregister_oc_de">Ponovno poveži c:geo</string>
+ <string name="settings_authorize">Poveži c:geo</string>
+ <string name="settings_reauthorize">Ponovno poveži c:geo</string>
<string name="init_oc_pl">Opencaching.pl</string>
<string name="settings_activate_oc_pl">Aktiviraj</string>
<string name="init_oc_pl_description">Poveži c:geo z opencaching.pl za iskanje zakladov in dostop in filter najdenih zakladov.</string>
- <string name="init_register_oc_pl">Poveži c:geo z opencaching.pl</string>
- <string name="init_reregister_oc_pl">Ponovno poveži c:geo</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="settings_activate_twitter">Aktiviraj</string>
@@ -414,8 +411,6 @@
<string name="init_login_popup_failed">Prijava neuspešna</string>
<string name="init_login_popup_failed_reason">Prijava neuspešna:</string>
<string name="init_login_popup_not_authorized">Ni avtoriziran</string>
- <string name="init_twitter_authorize">Poveži c:geo s Twitterjem</string>
- <string name="init_twitter_reauthorize">Ponovno poveži c:geo s Twitterjem</string>
<string name="init_signature">Podpis</string>
<string name="init_signature_help_text">Vnesite podpis, ki bo uporabljen b baših zapisih obiskov.\nPosebni nizi, ki jih lahko uporabite so: [DATE] - datum, [TIME] - ura, [DATETIME] - datum in ura, [USER] - uporabniško ime in [NUMBER] - število najdb.\nTi nizi bodo zamenjani s pravimi podatki ob vpisu.</string>
<string name="init_signature_template_button">Vnesi predlogo</string>
@@ -535,29 +530,12 @@
<string name="auth_authorize">Poveži c:geo s Twitterjem</string>
<string name="auth_start">Začni z avtorizacijo</string>
<string name="auth_again">Ponovno začni</string>
- <string name="auth_pin_hint">PIN, ki ga dodeli Twitter</string>
<string name="auth_finish">Končaj</string>
- <string name="auth_dialog_wait">Čakam na Twitter…</string>
- <string name="auth_dialog_pin_title">PIN koda</string>
- <string name="auth_dialog_pin_message">Vnesite PIN kodo, ki ste jo dobili na spletni strani Twitterja.</string>
- <string name="auth_dialog_completed">c:geo je sedaj povezan s Twitterjem za objavo sporočil.</string>
- <string name="about_auth_1">Sledeči postopek omogoča <b>c:geotu</b> povezavo s Twitterjem.</string>
- <string name="about_auth_2">Klik na gumb \"Poveži c:geo\" bo začel s postopkom avtorizacije. Med postopkom se bo odprl brskalnik s Twitterjem. V brskalniku se prijavite v Twitter in dovolite aplikaciji <b>c:geo</b> da dostopa do vašega računa. Ko to potrdite, vam bo Twitter izpisal PIN kodo. To kodo prepišite v <b>c:geo</b> in potrdite.</string>
<!-- auth opencaching -->
<string name="auth_ocde">opencaching.de</string>
<string name="auth_ocpl">opencaching.pl</string>
- <string name="auth_authorize_oc">Poveži c:geo</string>
- <string name="auth_start_oc">Začni z avtorizacijo</string>
- <string name="auth_again_oc">Ponovno začni</string>
- <string name="auth_pin_hint_oc">PIN, ki ga dodeli %s</string>
- <string name="auth_finish_oc">Končaj</string>
- <string name="auth_dialog_wait_oc">Čakam na %s…</string>
- <string name="auth_dialog_pin_title_oc">PIN koda</string>
- <string name="auth_dialog_pin_message_oc">Vnesite PIN kodo, ki ste jo dobili na spletni strani %s.</string>
<string name="auth_dialog_completed_oc">c:geo je sedaj povezan z %s.</string>
- <string name="about_auth_1_oc">Sledeči postopek omogoča <b>c:geotu</b> povezavo z %s.</string>
- <string name="about_auth_2_oc">Klik na gumb \"Poveži c:geo\" bo začel s postopkom avtorizacije. Med postopkom se bo odprl brskalnik s stranjo %s. V brskalniku se prijavite na to stran in dovolite aplikaciji <b>c:geo</b> da dostopa do vašega računa. Ko to potrdite, vam bo %s izpisal PIN kodo. To kodo prepišite v <b>c:geo</b> in potrdite.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -1171,4 +1149,4 @@
<item quantity="other">Pred %d dnevi</item>
</plurals>
-</resources> \ No newline at end of file
+</resources>
diff --git a/main/res/values-sv/strings.xml b/main/res/values-sv/strings.xml
index 6abc9a1..a232c06 100644
--- a/main/res/values-sv/strings.xml
+++ b/main/res/values-sv/strings.xml
@@ -333,7 +333,6 @@
<!-- caches lists -->
<string name="list_menu">Listor</string>
<string name="list_menu_create">Skapa en ny lista</string>
- <string name="list_menu_all_lists">Alla cacher</string>
<string name="list_menu_drop">Ta bort den här listan</string>
<string name="list_menu_change">Byt lista</string>
<string name="list_menu_rename">Byt namn på den här listan</string>
@@ -393,13 +392,11 @@
<string name="init_oc">Opencaching.de</string>
<string name="settings_activate_oc">Aktivera</string>
<string name="init_oc_de_description">Använd c:geo med opencaching.de för att söka efter cacher samt för att filtrera dina funna cacher.</string>
- <string name="init_register_oc_de">Konfigurera inloggning</string>
- <string name="init_reregister_oc_de">Konfigurera inloggning igen</string>
+ <string name="settings_authorize">Konfigurera inloggning</string>
+ <string name="settings_reauthorize">Konfigurera inloggning igen</string>
<string name="init_oc_pl">Opencaching.pl</string>
<string name="settings_activate_oc_pl">Aktivera</string>
<string name="init_oc_pl_description">Använd c:geo med opencaching.pl för att söka efter cacher samt för att filtrera dina funna cacher.</string>
- <string name="init_register_oc_pl">Konfigurera inloggning</string>
- <string name="init_reregister_oc_pl">Konfigurera inloggning igen</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="settings_activate_twitter">Aktivera</string>
@@ -412,8 +409,6 @@
<string name="init_login_popup_failed">Inloggning misslyckades</string>
<string name="init_login_popup_failed_reason">Inloggning misslyckades:</string>
<string name="init_login_popup_not_authorized">Ej godkänd</string>
- <string name="init_twitter_authorize">Inställningar för Twitter</string>
- <string name="init_twitter_reauthorize">Ändra inställningar för Twitter</string>
<string name="init_signature">Signatur</string>
<string name="init_signature_help_text">Skriv den signatur som du vill använda i dina loggtexter.\nDet finns några speciella texter som kan användas och som expanderas när signaturen läggs in: [DATE] , [TIME], [USER] &amp; [NUMBER].</string>
<string name="init_signature_template_button">Infoga makro</string>
@@ -510,6 +505,9 @@
<string name="init_use_native_ua">Identifiering</string>
<string name="init_summary_use_native_ua">Identifiera som en Android webbläsare. Löser problem med inloggning vid uppkoppling via vissa operatörer.</string>
<string name="init_rendertheme_folder">Katalog för kartteman</string>
+ <string name="settings_open_website">Öppna hemsida</string>
+ <string name="settings_settings">Inställningar</string>
+ <string name="settings_information">Information</string>
<!-- map sources -->
<string name="map_source_google_map">Google: Map</string>
@@ -533,29 +531,12 @@
<string name="auth_authorize">Koppla c:geo mot Twitter</string>
<string name="auth_start">Påbörja koppling mot Twitter</string>
<string name="auth_again">Koppla mot Twitter igen</string>
- <string name="auth_pin_hint">PIN erhållen från Twitter</string>
<string name="auth_finish">Bekräfta PIN</string>
- <string name="auth_dialog_wait">Väntar på Twitter…</string>
- <string name="auth_dialog_pin_title">PIN kod</string>
- <string name="auth_dialog_pin_message">Vänligen skriv in PIN koden du fick på Twitters hemsida. Den krävs för att slutföra kopplingen.</string>
- <string name="auth_dialog_completed">c:geo är nu godkänd att posta på Twitter.</string>
- <string name="about_auth_1">Nedan tillåter du <b>c:geo</b> att ansluta till Twitter.</string>
- <string name="about_auth_2">Klicka på \"Påbörja koppling mot Twitter\" om du vill koppla ihop <b>c:geo</b> med Twitter. Twitters hemsida kommer att öppnas i en webbläsare. Logga in på den sidan och tillåt <b>c:geo</b> att ansluta till ditt konto. När du godkänt så kommer Twitter att visa en PIN kod. Kom ihåg denna PIN kod, stäng webbläsaren och skriv in PIN koden i <b>c:geo</b> och bekräfta.</string>
<!-- auth opencaching -->
<string name="auth_ocde">opencaching.de</string>
<string name="auth_ocpl">opencaching.pl</string>
- <string name="auth_authorize_oc">Tillåt c:geo</string>
- <string name="auth_start_oc">Starta godkännande</string>
- <string name="auth_again_oc">Starta igen</string>
- <string name="auth_pin_hint_oc">PIN erhållen från %s</string>
- <string name="auth_finish_oc">Slutför</string>
- <string name="auth_dialog_wait_oc">Väntar på %s…</string>
- <string name="auth_dialog_pin_title_oc">PIN kod</string>
- <string name="auth_dialog_pin_message_oc">Vänlig ange PIN koden som du fått från %s. Den krävs för att slutföra godkännandet.</string>
<string name="auth_dialog_completed_oc">c:geo är nu godkänd för att kommunicera med %s.</string>
- <string name="about_auth_1_oc">Nedan tillåter du <b>c:geo</b> att kommunicera med %s.</string>
- <string name="about_auth_2_oc">Klicka på \"Tillåt c:geo\" nedan för att koppla ihop <b>c:geo</b> med %s. Logga in på den sida som kommer att öppnas i din webbläsare. Tillåt sedan <b>c:geo</b> att komma åt till konto. Efter detta kommer %s att visa en numerisk PIN kod. Denna PIN kod måste sedan anges i <b>c:geo</b> och godkännas.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -991,4 +972,4 @@
<item quantity="other">%d dagar sedan</item>
</plurals>
-</resources> \ No newline at end of file
+</resources>
diff --git a/main/res/values/changelog_master.xml b/main/res/values/changelog_master.xml
index 09ed0f5..c01be4a 100644
--- a/main/res/values/changelog_master.xml
+++ b/main/res/values/changelog_master.xml
@@ -1,5 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- changelog for the master branch -->
- <string name="changelog_master" translatable="false"></string>
+ <string name="changelog_master" translatable="false">
+ <b>Next feature release</b>\n
+ <b>New Features:</b>\n
+ · Popup on map shows date of event caches\n
+ · \n
+ \n
+ <b>Bugfixes:</b>\n
+ · \n
+ </string>
</resources>
diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml
index e82c9d6..38012f5 100644
--- a/main/res/values/preference_keys.xml
+++ b/main/res/values/preference_keys.xml
@@ -38,6 +38,7 @@
<string name="pref_choose_list">choose_list</string>
<string name="pref_mapsource">mapsource</string>
<string name="pref_mapDirectory">mapDirectory</string>
+ <string name="pref_mapsforge_scale_text">mapsforgeScaleText</string>
<string name="pref_renderthemepath">renderthemepath</string>
<string name="pref_showwaypointsthreshold">waypointsthreshold</string>
<string name="pref_maptrail">maptrail</string>
@@ -112,4 +113,9 @@
<string name="pref_ocpl_tokenpublic">ocpl_tokenpublic</string>
<string name="pref_temp_ocpl_token_secret">ocpl-temp-token-secret</string>
<string name="pref_temp_ocpl_token_public">ocpl-temp-token-public</string>
+ <string name="pref_fakekey_gc_website">fakekey_gc_website</string>
+ <string name="pref_fakekey_ocde_website">fakekey_ocde_website</string>
+ <string name="pref_fakekey_ocpl_website">fakekey_ocpl_website</string>
+ <string name="pref_fakekey_gcvote_website">fakekey_gcvote_website</string>
+ <string name="pref_fakekey_sendtocgeo_website">fakekey_sendtocgeo_website</string>
</resources>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 554ab0e..39b61d3 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -333,7 +333,6 @@
<!-- caches lists -->
<string name="list_menu">List</string>
<string name="list_menu_create">Create new list</string>
- <string name="list_menu_all_lists">All caches</string>
<string name="list_menu_drop">Drop current list</string>
<string name="list_menu_change">Change list</string>
<string name="list_menu_rename">Rename current list</string>
@@ -390,16 +389,14 @@
<string name="settings_gc_legal_note">With using the service of geocaching.com, you accept the Groundspeak Terms of Use.</string>
<string name="settings_info_facebook_login_title">Facebook Login</string>
<string name="settings_info_facebook_login">You can\'t make c:geo login to geocaching.com with your Facebook account. But there is a simple workaround …</string>
+ <string name="settings_authorize">Authorize c:geo</string>
+ <string name="settings_reauthorize">Authorize c:geo again</string>
<string name="init_oc">Opencaching.de</string>
<string name="settings_activate_oc">Activate</string>
<string name="init_oc_de_description">Authorize c:geo with opencaching.de to search for caches and access/filter your found caches.</string>
- <string name="init_register_oc_de">Authorize c:geo</string>
- <string name="init_reregister_oc_de">Authorize c:geo again</string>
<string name="init_oc_pl">Opencaching.pl</string>
<string name="settings_activate_oc_pl">Activate</string>
<string name="init_oc_pl_description">Authorize c:geo with opencaching.pl to search for caches and access/filter your found caches.</string>
- <string name="init_register_oc_pl">Authorize c:geo</string>
- <string name="init_reregister_oc_pl">Authorize c:geo again</string>
<string name="init_gcvote">GCvote.com</string>
<string name="init_twitter">Twitter</string>
<string name="settings_activate_twitter">Activate</string>
@@ -412,8 +409,6 @@
<string name="init_login_popup_failed">Login failed</string>
<string name="init_login_popup_failed_reason">Login failed:</string>
<string name="init_login_popup_not_authorized">Not authorized</string>
- <string name="init_twitter_authorize">Authorize c:geo</string>
- <string name="init_twitter_reauthorize">Authorize c:geo again</string>
<string name="init_signature">Signature</string>
<string name="init_signature_help_text">Enter a signature to be appended to your logs.\nSpecial strings that can be used are: [DATE] , [TIME], [DATETIME], [USER] &amp; [NUMBER].\nThese will be expanded when the signature is inserted.</string>
<string name="init_signature_template_button">Insert Template</string>
@@ -478,6 +473,8 @@
<string name="settings_info_themes_title">Info on Map Themes</string>
<string name="settings_info_themes">c:geo supports custom themes for offline maps. These can be used to change the color style of the map (e.g. to have a nightview map) or to highlight certain objects like cycle paths or height lines within the map.</string>
<string name="init_mapsource_select">Select Map Source</string>
+ <string name="settings_title_scale_map_text">Scale Map Text</string>
+ <string name="settings_summary_scale_map_text">Scale text labels on offline map according to device dpi</string>
<string name="init_map_directory_description">Directory with offline maps</string>
<string name="init_gpx_exportdir">GPX Export Directory</string>
<string name="init_gpx_importdir">GPX Import Directory</string>
@@ -510,7 +507,10 @@
<string name="init_use_native_ua">Android browser</string>
<string name="init_summary_use_native_ua">Identify as Android browser. Solves login problems when using certain network providers.</string>
<string name="init_rendertheme_folder">Map Themes Directory</string>
-
+ <string name="settings_open_website">Open website</string>
+ <string name="settings_settings">Settings</string>
+ <string name="settings_information">Information</string>
+
<!-- map sources -->
<string name="map_source_google_map">Google: Map</string>
<string name="map_source_google_satellite">Google: Satellite</string>
@@ -528,34 +528,23 @@
<string name="sendToCgeo_download_fail">c:geo failed to download caches. No internet connection, or send2c:geo is down.</string>
<string name="sendToCgeo_no_registration">c:geo failed to download caches. Registration for send2c:geo expired. Please register in settings.</string>
- <!-- auth twitter -->
+ <!-- auth generic -->
<string name="auth_twitter">Twitter</string>
<string name="auth_authorize">Authorize c:geo</string>
<string name="auth_start">Start authorization</string>
<string name="auth_again">Start again</string>
- <string name="auth_pin_hint">PIN assigned by Twitter</string>
<string name="auth_finish">Finish</string>
- <string name="auth_dialog_wait">Waiting for Twitter…</string>
- <string name="auth_dialog_pin_title">PIN code</string>
- <string name="auth_dialog_pin_message">Please type in the PIN code provided by Twitter. It is required to complete authorization.</string>
- <string name="auth_dialog_completed">c:geo is now authorized to post on Twitter.</string>
- <string name="about_auth_1">The following process will allow <b>c:geo</b> to access Twitter.</string>
- <string name="about_auth_2">Pressing the \"authorize c:geo\" button will start the process. This process will open up a web browser with a Twitter page. Log in on this page and allow <b>c:geo</b> to access your account. After this, Twitter will show up a numeric PIN code. This PIN must be pasted into <b>c:geo</b> and confirmed. That\'s all.</string>
+ <string name="auth_dialog_waiting">Waiting for %s…</string>
+ <string name="auth_explain_short">The following process will allow <b>c:geo</b> to access %s.</string>
+ <string name="auth_explain_long">Pressing the \"authorize c:geo\" button will start the process. This process will open up a web browser with a %s page. Log in on this page and allow <b>c:geo</b> to access your account. That\'s all.</string>
+
+ <!-- auth Twitter -->
+ <string name="auth_dialog_completed_twitter">c:geo is now authorized to post on Twitter.</string>
<!-- auth opencaching -->
<string name="auth_ocde">opencaching.de</string>
<string name="auth_ocpl">opencaching.pl</string>
- <string name="auth_authorize_oc">Authorize c:geo</string>
- <string name="auth_start_oc">Start authorization</string>
- <string name="auth_again_oc">Start again</string>
- <string name="auth_pin_hint_oc">PIN assigned by %s</string>
- <string name="auth_finish_oc">Finish</string>
- <string name="auth_dialog_wait_oc">Waiting for %s…</string>
- <string name="auth_dialog_pin_title_oc">PIN code</string>
- <string name="auth_dialog_pin_message_oc">Please type in PIN code provided by the %s website. It is required to complete authorization.</string>
<string name="auth_dialog_completed_oc">c:geo is now authorized to interact with %s.</string>
- <string name="about_auth_1_oc">The following process allows <b>c:geo</b> to access %s.</string>
- <string name="about_auth_2_oc">Pressing the \"authorize c:geo\" button will start the process. This process will open up a web browser with a %s page. Log in on this page and allow <b>c:geo</b> to access your account. After this, %s will show up a numeric PIN code. This PIN must be pasted into <b>c:geo</b> and confirmed. That\'s all.</string>
<!-- cache -->
<plurals name="cache_counts">
@@ -894,6 +883,7 @@
<string name="destination_set">Set destination</string>
<string name="navigation_direct_navigation">Direct Navigation</string>
<string name="navigation_target">Target</string>
+ <string name="err_nav_no_coordinates">Cannot start navigation with no coordinates</string>
<!-- license -->
<string name="license">License</string>
diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml
index 7ea3b59..6001783 100644
--- a/main/res/xml/preferences.xml
+++ b/main/res/xml/preferences.xml
@@ -1,564 +1,531 @@
<?xml version="1.0" encoding="UTF-8"?>
-<PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android"
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cgeo="http://schemas.android.com/apk/res/cgeo.geocaching"
android:key="@string/pref_fakekey_main_screen" >
<PreferenceScreen
- android:title="@string/settings_title_services"
android:icon="?attr/settings_cloud"
- android:key="@string/pref_fakekey_services_screen" >
-
- <PreferenceCategory
- android:title="@string/settings_category_geocaching" >
-
- <PreferenceScreen
- android:title="@string/settings_title_gc" >
-
- <cgeo.geocaching.settings.CheckBoxWithPopupPreference
- android:key="@string/pref_connectorGCActive"
- android:title="@string/settings_activate_gc"
- cgeo:title="@string/settings_title_gc"
- cgeo:text="@string/settings_gc_legal_note"
- cgeo:url="@string/settings_gc_legal_note_url"
- cgeo:urlButton="@string/settings_goto_url_button"
- android:defaultValue="true" />
- <EditTextPreference
- android:key="@string/pref_username"
- android:title="@string/init_username"
- android:dialogTitle="@string/init_username"
- android:hint="@string/init_username"
- android:dependency="@string/pref_connectorGCActive"
- android:singleLine="true"
- android:imeOptions="actionDone" />
- <cgeo.geocaching.settings.EditPasswordPreference
- android:key="@string/pref_password"
- android:title="@string/init_password"
- android:dialogTitle="@string/init_password"
- android:hint="@string/init_password"
- android:inputType="textPassword"
- android:dependency="@string/pref_connectorGCActive"
- android:singleLine="true"
- android:imeOptions="actionDone" />
- <cgeo.geocaching.settings.CheckGcCredentialsPreference
- android:title="@string/init_login"
- android:dependency="@string/pref_connectorGCActive" />
- <PreferenceScreen
- android:title="@string/settings_title_basicmembers"
- android:key="@string/pref_fakekey_basicmembers_screen"
- android:dependency="@string/pref_connectorGCActive" >
- <CheckBoxPreference
- android:key="@string/pref_showcaptcha"
- android:title="@string/init_captcha"
- android:summary="@string/init_summary_captcha"
- android:defaultValue="false" />
- <CheckBoxPreference
- android:key="@string/pref_loaddirectionimg"
- android:title="@string/init_loaddirectionimg"
- android:summary="@string/init_summary_loaddirectionimg"
- android:defaultValue="true" />
- </PreferenceScreen>
- <cgeo.geocaching.settings.InfoPreference
- android:title="@string/settings_info_facebook_login_title"
- android:text="@string/settings_info_facebook_login"
- cgeo:url="@string/settings_facebook_login_url"
- cgeo:urlButton="@string/settings_goto_url_button" />
-
- </PreferenceScreen>
-
- <PreferenceScreen
- android:title="@string/init_oc" >
-
- <CheckBoxPreference
- android:key="@string/pref_connectorOCActive"
- android:title="@string/settings_activate_oc"
- android:defaultValue="false" />
- <cgeo.geocaching.settings.TextPreference
- android:layout="@layout/text_preference"
- android:text="@string/init_oc_de_description"
- android:dependency="@string/pref_connectorOCActive" />
- <cgeo.geocaching.settings.AuthorizeOcPreference
- android:key="@string/pref_fakekey_ocde_authorization"
- android:dependency="@string/pref_connectorOCActive" />
-
- </PreferenceScreen>
-
- <PreferenceScreen
- android:title="@string/init_oc_pl" >
-
- <CheckBoxPreference
- android:key="@string/pref_connectorOCPLActive"
- android:title="@string/settings_activate_oc_pl"
- android:defaultValue="false" />
- <cgeo.geocaching.settings.TextPreference
- android:layout="@layout/text_preference"
- android:text="@string/init_oc_pl_description"
- android:dependency="@string/pref_connectorOCPLActive" />
- <cgeo.geocaching.settings.AuthorizeOcPreference
- android:key="@string/pref_fakekey_ocpl_authorization"
- android:dependency="@string/pref_connectorOCPLActive" />
-
- </PreferenceScreen>
-
- <PreferenceScreen
- android:title="@string/init_gcvote" >
-
- <cgeo.geocaching.settings.EditPasswordPreference
- android:key="@string/pref_pass_vote"
- android:title="@string/init_password"
- android:dialogTitle="@string/init_password"
- android:hint="@string/init_password"
- android:inputType="textPassword"
- android:singleLine="true"
- android:imeOptions="actionDone" />
-
- </PreferenceScreen>
-
- <PreferenceScreen
- android:title="@string/init_sendToCgeo" >
-
- <cgeo.geocaching.settings.InfoPreference
- android:title="@string/settings_info_send2cgeo_title"
- android:text="@string/init_sendToCgeo_description"
- cgeo:url="@string/settings_send2cgeo_url"
- cgeo:urlButton="@string/settings_goto_url_button" />
- <EditTextPreference
- android:key="@string/pref_webDeviceName"
- android:title="@string/init_sendToCgeo_name"
- android:dialogTitle="@string/init_sendToCgeo_name"
- android:singleLine="true"
- android:imeOptions="actionDone" />
- <cgeo.geocaching.settings.RegisterSend2CgeoPreference
- android:title="@string/init_sendToCgeo_register" />
-
- </PreferenceScreen>
- </PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/settings_category_social" >
- <PreferenceScreen
- android:title="@string/init_twitter" >
-
- <CheckBoxPreference
- android:key="@string/pref_twitter"
- android:title="@string/settings_activate_twitter"
- android:defaultValue="false" />
- <cgeo.geocaching.settings.TextPreference
- android:layout="@layout/text_preference"
- android:text="@string/about_twitter"
- android:dependency="@string/pref_twitter" />
- <cgeo.geocaching.settings.AuthorizeTwitterPreference
- android:key="@string/pref_fakekey_twitter_authorization"
- android:dependency="@string/pref_twitter" />
-
- </PreferenceScreen>
+ android:key="@string/pref_fakekey_services_screen"
+ android:title="@string/settings_title_services" >
+ <PreferenceCategory android:title="@string/settings_category_geocaching" >
+ <PreferenceScreen android:title="@string/settings_title_gc" >
+ <PreferenceCategory android:title="@string/settings_settings" >
+ <cgeo.geocaching.settings.CheckBoxWithPopupPreference
+ android:defaultValue="true"
+ android:key="@string/pref_connectorGCActive"
+ android:title="@string/settings_activate_gc"
+ cgeo:text="@string/settings_gc_legal_note"
+ cgeo:title="@string/settings_title_gc"
+ cgeo:url="@string/settings_gc_legal_note_url"
+ cgeo:urlButton="@string/settings_goto_url_button" />
+
+ <EditTextPreference
+ android:dependency="@string/pref_connectorGCActive"
+ android:dialogTitle="@string/init_username"
+ android:hint="@string/init_username"
+ android:imeOptions="actionDone"
+ android:key="@string/pref_username"
+ android:singleLine="true"
+ android:title="@string/init_username" />
+
+ <cgeo.geocaching.settings.EditPasswordPreference
+ android:dependency="@string/pref_connectorGCActive"
+ android:dialogTitle="@string/init_password"
+ android:hint="@string/init_password"
+ android:imeOptions="actionDone"
+ android:inputType="textPassword"
+ android:key="@string/pref_password"
+ android:singleLine="true"
+ android:title="@string/init_password" />
+
+ <cgeo.geocaching.settings.CheckGcCredentialsPreference
+ android:dependency="@string/pref_connectorGCActive"
+ android:title="@string/init_login" />
+
+ <PreferenceScreen
+ android:dependency="@string/pref_connectorGCActive"
+ android:key="@string/pref_fakekey_basicmembers_screen"
+ android:title="@string/settings_title_basicmembers" >
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="@string/pref_showcaptcha"
+ android:summary="@string/init_summary_captcha"
+ android:title="@string/init_captcha" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="@string/pref_loaddirectionimg"
+ android:summary="@string/init_summary_loaddirectionimg"
+ android:title="@string/init_loaddirectionimg" />
+ </PreferenceScreen>
+ </PreferenceCategory>
+ <PreferenceCategory android:title="@string/settings_information" >
+ <cgeo.geocaching.settings.InfoPreference
+ android:text="@string/settings_info_facebook_login"
+ android:title="@string/settings_info_facebook_login_title"
+ cgeo:url="@string/settings_facebook_login_url"
+ cgeo:urlButton="@string/settings_goto_url_button" />
+
+ <Preference
+ android:key="@string/pref_fakekey_gc_website"
+ android:title="@string/settings_open_website" />
+ </PreferenceCategory>
+ </PreferenceScreen>
+ <PreferenceScreen android:title="@string/init_oc" >
+ <PreferenceCategory android:title="@string/settings_settings" >
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="@string/pref_connectorOCActive"
+ android:title="@string/settings_activate_oc" />
+
+ <cgeo.geocaching.settings.TextPreference
+ android:dependency="@string/pref_connectorOCActive"
+ android:layout="@layout/text_preference"
+ android:text="@string/init_oc_de_description" />
+
+ <cgeo.geocaching.settings.OAuthPreference
+ android:dependency="@string/pref_connectorOCActive"
+ android:key="@string/pref_fakekey_ocde_authorization" />
+ </PreferenceCategory>
+ <PreferenceCategory android:title="@string/settings_information" >
+ <Preference
+ android:key="@string/pref_fakekey_ocde_website"
+ android:title="@string/settings_open_website" />
+ </PreferenceCategory>
+ </PreferenceScreen>
+ <PreferenceScreen android:title="@string/init_oc_pl" >
+ <PreferenceCategory android:title="@string/settings_settings" >
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="@string/pref_connectorOCPLActive"
+ android:title="@string/settings_activate_oc_pl" />
+
+ <cgeo.geocaching.settings.TextPreference
+ android:dependency="@string/pref_connectorOCPLActive"
+ android:layout="@layout/text_preference"
+ android:text="@string/init_oc_pl_description" />
+
+ <cgeo.geocaching.settings.OAuthPreference
+ android:dependency="@string/pref_connectorOCPLActive"
+ android:key="@string/pref_fakekey_ocpl_authorization" />
+ </PreferenceCategory>
+ <PreferenceCategory android:title="@string/settings_information" >
+ <Preference
+ android:key="@string/pref_fakekey_ocpl_website"
+ android:title="@string/settings_open_website" />
+ </PreferenceCategory>
+ </PreferenceScreen>
+ <PreferenceScreen android:title="@string/init_gcvote" >
+ <PreferenceCategory android:title="@string/settings_settings" >
+ <cgeo.geocaching.settings.EditPasswordPreference
+ android:dialogTitle="@string/init_password"
+ android:hint="@string/init_password"
+ android:imeOptions="actionDone"
+ android:inputType="textPassword"
+ android:key="@string/pref_pass_vote"
+ android:singleLine="true"
+ android:title="@string/init_password" />
+ </PreferenceCategory>
+ <PreferenceCategory android:title="@string/settings_information" >
+ <Preference
+ android:key="@string/pref_fakekey_gcvote_website"
+ android:title="@string/settings_open_website" />
+ </PreferenceCategory>
+ </PreferenceScreen>
+ <PreferenceScreen android:title="@string/init_sendToCgeo" >
+ <PreferenceCategory android:title="@string/settings_settings" >
+ <EditTextPreference
+ android:dialogTitle="@string/init_sendToCgeo_name"
+ android:imeOptions="actionDone"
+ android:key="@string/pref_webDeviceName"
+ android:singleLine="true"
+ android:title="@string/init_sendToCgeo_name" />
+
+ <cgeo.geocaching.settings.RegisterSend2CgeoPreference android:title="@string/init_sendToCgeo_register" />
+ </PreferenceCategory>
+ <PreferenceCategory android:title="@string/settings_information" >
+ <cgeo.geocaching.settings.InfoPreference
+ android:text="@string/init_sendToCgeo_description"
+ android:title="@string/settings_info_send2cgeo_title"
+ cgeo:url="@string/settings_send2cgeo_url"
+ cgeo:urlButton="@string/settings_goto_url_button" />
+
+ <Preference
+ android:key="@string/pref_fakekey_sendtocgeo_website"
+ android:title="@string/settings_open_website" />
+ </PreferenceCategory>
+ </PreferenceScreen>
</PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/settings_category_browser" >
-
- <CheckBoxPreference
+ <PreferenceCategory android:title="@string/settings_category_social" >
+ <PreferenceScreen android:title="@string/init_twitter" >
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="@string/pref_twitter"
+ android:title="@string/settings_activate_twitter" />
+
+ <cgeo.geocaching.settings.TextPreference
+ android:dependency="@string/pref_twitter"
+ android:layout="@layout/text_preference"
+ android:text="@string/about_twitter" />
+
+ <cgeo.geocaching.settings.OAuthPreference
+ android:dependency="@string/pref_twitter"
+ android:key="@string/pref_fakekey_twitter_authorization" />
+ </PreferenceScreen>
+ </PreferenceCategory>
+ <PreferenceCategory android:title="@string/settings_category_browser" >
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_nativeUa"
- android:title="@string/init_use_native_ua"
android:summary="@string/init_summary_use_native_ua"
- android:defaultValue="false" />
-
+ android:title="@string/init_use_native_ua" />
</PreferenceCategory>
-
</PreferenceScreen>
-
<PreferenceScreen
- android:title="@string/settings_title_appearance"
- android:icon="?attr/settings_eye" >
-
- <CheckBoxPreference
+ android:icon="?attr/settings_eye"
+ android:title="@string/settings_title_appearance" >
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_skin"
- android:title="@string/init_skin"
android:summary="@string/init_summary_skin"
- android:defaultValue="false" />
- <CheckBoxPreference
+ android:title="@string/init_skin" />
+ <CheckBoxPreference
+ android:defaultValue="true"
android:key="@string/pref_showaddress"
- android:title="@string/init_address"
android:summary="@string/init_summary_address"
- android:defaultValue="true" />
- <CheckBoxPreference
+ android:title="@string/init_address" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_plainLogs"
- android:title="@string/init_plain_logs"
android:summary="@string/init_summary_plain_logs"
- android:defaultValue="false" />
- <CheckBoxPreference
+ android:title="@string/init_plain_logs" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_useenglish"
- android:title="@string/init_useenglish"
android:summary="@string/init_summary_useenglish"
- android:defaultValue="false" />
- <CheckBoxPreference
+ android:title="@string/init_useenglish" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_units"
- android:title="@string/init_units"
android:summary="@string/init_summary_units"
- android:defaultValue="false" />
-
+ android:title="@string/init_units" />
</PreferenceScreen>
-
<PreferenceScreen
- android:title="@string/settings_title_cachedetails"
- android:icon="?attr/settings_details" >
-
- <CheckBoxPreference
+ android:icon="?attr/settings_details"
+ android:title="@string/settings_title_cachedetails" >
+ <CheckBoxPreference
+ android:defaultValue="true"
android:key="@string/pref_autoloaddesc"
- android:title="@string/init_autoload"
android:summary="@string/init_summary_autoload"
- android:defaultValue="true" />
- <CheckBoxPreference
+ android:title="@string/init_autoload" />
+ <CheckBoxPreference
+ android:defaultValue="true"
android:key="@string/pref_ratingwanted"
- android:title="@string/init_ratingwanted"
android:summary="@string/init_summary_ratingwanted"
- android:defaultValue="true" />
- <CheckBoxPreference
+ android:title="@string/init_ratingwanted" />
+ <CheckBoxPreference
+ android:defaultValue="true"
android:key="@string/pref_friendlogswanted"
- android:title="@string/init_friendlogswanted"
android:summary="@string/init_summary_friendlogswanted"
- android:defaultValue="true" />
- <CheckBoxPreference
+ android:title="@string/init_friendlogswanted" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_opendetailslastpage"
- android:title="@string/init_openlastdetailspage"
android:summary="@string/init_summary_openlastdetailspage"
- android:defaultValue="false" />
- <CheckBoxPreference
+ android:title="@string/init_openlastdetailspage" />
+ <CheckBoxPreference
+ android:defaultValue="true"
android:key="@string/pref_livelist"
- android:title="@string/init_livelist"
android:summary="@string/init_summary_livelist"
- android:defaultValue="true" />
- <CheckBoxPreference
+ android:title="@string/init_livelist" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_excludemine"
- android:title="@string/init_exclude"
android:summary="@string/init_summary_exclude"
- android:defaultValue="false" />
- <CheckBoxPreference
+ android:title="@string/init_exclude" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_excludedisabled"
- android:title="@string/init_disabled"
android:summary="@string/init_summary_disabled"
- android:defaultValue="false" />
-
+ android:title="@string/init_disabled" />
</PreferenceScreen>
-
<PreferenceScreen
- android:title="@string/settings_title_map"
- android:icon="?attr/settings_map" >
-
- <PreferenceCategory
- android:title="@string/settings_title_map_data" >
-
+ android:icon="?attr/settings_map"
+ android:title="@string/settings_title_map" >
+ <PreferenceCategory android:title="@string/settings_title_map_data" >
<ListPreference
- android:key="@string/pref_mapsource"
- android:title="@string/init_mapsource_select"
+ android:defaultValue="0"
android:dialogTitle="@string/init_mapsource_select"
- android:defaultValue="0" />
-
- <cgeo.geocaching.settings.InfoPreference
- android:title="@string/settings_info_offline_maps_title"
+ android:key="@string/pref_mapsource"
+ android:title="@string/init_mapsource_select" />
+
+ <cgeo.geocaching.settings.InfoPreference
android:text="@string/settings_info_offline_maps"
+ android:title="@string/settings_info_offline_maps_title"
cgeo:url="@string/settings_offline_maps_url"
cgeo:urlButton="@string/settings_goto_url_button" />
-
+
<Preference
android:key="@string/pref_mapDirectory"
android:title="@string/init_map_directory_description" />
-
- <cgeo.geocaching.settings.InfoPreference
- android:title="@string/settings_info_themes_title"
+
+ <cgeo.geocaching.settings.InfoPreference
android:text="@string/settings_info_themes"
+ android:title="@string/settings_info_themes_title"
cgeo:url="@string/settings_themes_url"
cgeo:urlButton="@string/settings_goto_url_button" />
-
+
<Preference
android:key="@string/pref_renderthemepath"
android:title="@string/init_rendertheme_folder" />
+ <CheckBoxPreference
+ android:key="@string/pref_mapsforge_scale_text"
+ android:title="@string/settings_title_scale_map_text"
+ android:summary="@string/settings_summary_scale_map_text"
+ android:defaultValue="true" />
</PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/settings_title_map_content" >
-
+ <PreferenceCategory android:title="@string/settings_title_map_content" >
<Preference
- android:title="@string/init_showwaypoints"
+ android:selectable="false"
android:summary="@string/init_showwaypoint_description"
- android:selectable="false" />
+ android:title="@string/init_showwaypoints" />
+
<cgeo.geocaching.settings.WpThresholdPreference
android:key="@string/pref_showwaypointsthreshold"
android:layout="@layout/wp_threshold_preference" />
- <CheckBoxPreference
+ <CheckBoxPreference
+ android:defaultValue="true"
android:key="@string/pref_maptrail"
- android:title="@string/init_maptrail"
android:summary="@string/init_summary_maptrail"
- android:defaultValue="true" />
-
+ android:title="@string/init_maptrail" />
</PreferenceCategory>
-
</PreferenceScreen>
-
<PreferenceScreen
- android:title="@string/settings_title_logging"
- android:icon="?attr/settings_pen" >
-
- <PreferenceCategory
- android:title="@string/init_signature">
-
+ android:icon="?attr/settings_pen"
+ android:title="@string/settings_title_logging" >
+ <PreferenceCategory android:title="@string/init_signature" >
<cgeo.geocaching.settings.LogSignaturePreference
android:key="@string/pref_signature"
android:title="@string/init_signature" />
- <CheckBoxPreference
- android:key="@string/pref_sigautoinsert"
- android:title="@string/init_sigautoinsert"
- android:defaultValue="true" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="@string/pref_sigautoinsert"
+ android:title="@string/init_sigautoinsert" />
</PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/settings_category_logging_other">
-
- <CheckBoxPreference
+ <PreferenceCategory android:title="@string/settings_category_logging_other" >
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_trackautovisit"
- android:title="@string/init_trackautovisit"
android:summary="@string/init_summary_trackautovisit"
- android:defaultValue="false" />
- <CheckBoxPreference
+ android:title="@string/init_trackautovisit" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_log_offline"
- android:title="@string/init_log_offline"
android:summary="@string/init_summary_log_offline"
- android:defaultValue="false" />
-
+ android:title="@string/init_log_offline" />
</PreferenceCategory>
-
</PreferenceScreen>
-
<PreferenceScreen
- android:title="@string/settings_title_offlinedata"
- android:icon="?attr/settings_sdcard" >
-
- <CheckBoxPreference
+ android:icon="?attr/settings_sdcard"
+ android:title="@string/settings_title_offlinedata" >
+ <CheckBoxPreference
+ android:defaultValue="true"
android:key="@string/pref_offlinemaps"
- android:title="@string/init_offline"
android:summary="@string/init_summary_offline"
- android:defaultValue="true" />
- <CheckBoxPreference
+ android:title="@string/init_offline" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_offlinewpmaps"
- android:title="@string/init_offline_wp"
android:summary="@string/init_summary_offline_wp"
- android:defaultValue="false" />
- <CheckBoxPreference
+ android:title="@string/init_offline_wp" />
+ <CheckBoxPreference
+ android:defaultValue="false"
android:key="@string/pref_logimages"
- android:title="@string/init_save_log_img"
android:summary="@string/init_summary_save_log_img"
- android:defaultValue="false" />
- <CheckBoxPreference
+ android:title="@string/init_save_log_img" />
+ <CheckBoxPreference
+ android:defaultValue="true"
android:key="@string/pref_choose_list"
- android:title="@string/init_choose_list"
android:summary="@string/init_summary_choose_list"
- android:defaultValue="true" />
-
+ android:title="@string/init_choose_list" />
</PreferenceScreen>
-
<PreferenceScreen
- android:title="@string/settings_title_navigation"
- android:icon="?attr/settings_arrow" >
-
- <PreferenceCategory
- android:title="@string/init_default_navigation_tool" >
-
+ android:icon="?attr/settings_arrow"
+ android:title="@string/settings_title_navigation" >
+ <PreferenceCategory android:title="@string/init_default_navigation_tool" >
<cgeo.geocaching.settings.TextPreference
android:layout="@layout/text_preference"
android:text="@string/init_default_navigation_tool_description" />
<ListPreference
- android:key="@string/pref_defaultNavigationTool"
- android:title="@string/init_default_navigation_tool_select"
+ android:defaultValue="0"
android:dialogTitle="@string/init_default_navigation_tool_select"
- android:defaultValue="0" />
+ android:key="@string/pref_defaultNavigationTool"
+ android:title="@string/init_default_navigation_tool_select" />
</PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/init_secondary_navigation_tool" >
-
+ <PreferenceCategory android:title="@string/init_secondary_navigation_tool" >
<cgeo.geocaching.settings.TextPreference
android:layout="@layout/text_preference"
android:text="@string/init_default_navigation_tool_2_description" />
<ListPreference
- android:key="@string/pref_defaultNavigationTool2"
- android:title="@string/init_default_navigation_tool_select"
+ android:defaultValue="0"
android:dialogTitle="@string/init_default_navigation_tool_select"
- android:defaultValue="0" />
-
+ android:key="@string/pref_defaultNavigationTool2"
+ android:title="@string/init_default_navigation_tool_select" />
</PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/settings_title_navigation_menu" >
-
+ <PreferenceCategory android:title="@string/settings_title_navigation_menu" >
<cgeo.geocaching.settings.TextPreference
android:layout="@layout/text_preference"
android:text="@string/init_navigation_menu_description" />
-
+
<PreferenceScreen
- android:title="@string/settings_title_navigation_menu"
- android:key="@string/pref_fakekey_navigation_menu_screen" >
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_compass"
- android:title="@string/compass_title" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_radar"
- android:title="@string/cache_menu_radar" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_internal_map"
- android:title="@string/cache_menu_map" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_static_map"
- android:title="@string/cache_menu_map_static" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_static_map_download"
- android:title="@string/cache_menu_download_map_static" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_locus"
- android:title="@string/caches_map_locus" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_rmaps"
- android:title="@string/cache_menu_rmaps" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_google_maps"
- android:title="@string/cache_menu_map_ext" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_google_navigation"
- android:title="@string/cache_menu_navigation_drive" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_google_streetview"
- android:title="@string/cache_menu_streetview" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_oruxmaps"
- android:title="@string/cache_menu_oruxmaps" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_navigon"
- android:title="@string/cache_menu_navigon" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_sygic"
- android:title="@string/cache_menu_sygic" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_google_walk"
- android:title="@string/cache_menu_navigation_walk" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_google_bike"
- android:title="@string/cache_menu_navigation_bike" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_google_maps_directions"
- android:title="@string/cache_menu_maps_directions" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_cache_beacon"
- android:title="@string/cache_menu_cachebeacon" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_gcc"
- android:title="@string/cache_menu_gcc" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:enabled="false"
- android:key="@string/pref_navigation_menu_where_you_go"
- android:title="@string/cache_menu_whereyougo" />
- </PreferenceScreen>
- </PreferenceCategory>
+ android:key="@string/pref_fakekey_navigation_menu_screen"
+ android:title="@string/settings_title_navigation_menu" >
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_compass"
+ android:title="@string/compass_title" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_radar"
+ android:title="@string/cache_menu_radar" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_internal_map"
+ android:title="@string/cache_menu_map" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_static_map"
+ android:title="@string/cache_menu_map_static" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_static_map_download"
+ android:title="@string/cache_menu_download_map_static" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_locus"
+ android:title="@string/caches_map_locus" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_rmaps"
+ android:title="@string/cache_menu_rmaps" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_google_maps"
+ android:title="@string/cache_menu_map_ext" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_google_navigation"
+ android:title="@string/cache_menu_navigation_drive" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_google_streetview"
+ android:title="@string/cache_menu_streetview" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_oruxmaps"
+ android:title="@string/cache_menu_oruxmaps" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_navigon"
+ android:title="@string/cache_menu_navigon" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_sygic"
+ android:title="@string/cache_menu_sygic" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_google_walk"
+ android:title="@string/cache_menu_navigation_walk" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_google_bike"
+ android:title="@string/cache_menu_navigation_bike" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_google_maps_directions"
+ android:title="@string/cache_menu_maps_directions" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_cache_beacon"
+ android:title="@string/cache_menu_cachebeacon" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_gcc"
+ android:title="@string/cache_menu_gcc" />
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:enabled="false"
+ android:key="@string/pref_navigation_menu_where_you_go"
+ android:title="@string/cache_menu_whereyougo" />
+ </PreferenceScreen>
+ </PreferenceCategory>
</PreferenceScreen>
-
<PreferenceScreen
- android:title="@string/settings_title_system"
- android:icon="?attr/settings_nut" >
-
- <PreferenceCategory
- android:title="@string/settings_title_gpx" >
-
+ android:icon="?attr/settings_nut"
+ android:title="@string/settings_title_system" >
+ <PreferenceCategory android:title="@string/settings_title_gpx" >
<Preference
android:key="@string/pref_gpxExportDir"
android:title="@string/init_gpx_exportdir" />
<Preference
android:key="@string/pref_gpxImportDir"
android:title="@string/init_gpx_importdir" />
-
</PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/init_backup" >
-
+ <PreferenceCategory android:title="@string/init_backup" >
<cgeo.geocaching.settings.TextPreference
android:key="@string/pref_fakekey_preference_backup_info"
android:layout="@layout/text_preference"
android:text="@string/init_backup_note" />
- <Preference
+
+ <Preference
android:key="@string/pref_fakekey_preference_backup"
android:title="@string/init_backup_backup" />
- <Preference
+ <Preference
android:key="@string/pref_fakekey_preference_restore"
android:title="@string/init_backup_restore" />
-
</PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/init_dbonsdcard_title" >
-
+ <PreferenceCategory android:title="@string/init_dbonsdcard_title" >
<cgeo.geocaching.settings.TextPreference
android:layout="@layout/text_preference"
android:text="@string/init_dbonsdcard_note" />
- <CheckBoxPreference
- android:key="@string/pref_dbonsdcard"
- android:title="@string/init_dbonsdcard"
- android:defaultValue="false" />
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="@string/pref_dbonsdcard"
+ android:title="@string/init_dbonsdcard" />
</PreferenceCategory>
-
- <PreferenceCategory
- android:title="@string/init_debug_title" >
-
+ <PreferenceCategory android:title="@string/init_debug_title" >
<cgeo.geocaching.settings.TextPreference
android:layout="@layout/text_preference"
android:text="@string/init_debug_note" />
- <CheckBoxPreference
- android:key="@string/pref_debug"
- android:title="@string/init_debug"
- android:defaultValue="false" />
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="@string/pref_debug"
+ android:title="@string/init_debug" />
</PreferenceCategory>
-
</PreferenceScreen>
-</PreferenceScreen>
+</PreferenceScreen> \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/AboutActivity.java b/main/src/cgeo/geocaching/AboutActivity.java
index 997dd2f..3ab9904 100644
--- a/main/src/cgeo/geocaching/AboutActivity.java
+++ b/main/src/cgeo/geocaching/AboutActivity.java
@@ -140,7 +140,7 @@ public class AboutActivity extends AbstractViewPagerActivity<AboutActivity.Page>
}
@Override
- public final void onCreate(final Bundle savedInstanceState) {
+ public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState, R.layout.viewpager_activity);
createViewPager(0, null);
reinitializeViewPager();
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java
index 1cf0353..02f89a6 100644
--- a/main/src/cgeo/geocaching/AbstractPopupActivity.java
+++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java
@@ -21,8 +21,6 @@ import android.content.Intent;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
@@ -42,18 +40,6 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
private TextView cacheDistance = null;
private final int layout;
- private final Handler ratingHandler = new Handler() {
-
- @Override
- public void handleMessage(Message msg) {
- try {
- details.addRating(cache);
- } catch (final Exception e) {
- // nothing
- }
- }
- };
-
private final GeoDirHandler geoUpdate = new GeoDirHandler() {
@Override
@@ -64,7 +50,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
cacheDistance.bringToFront();
}
onUpdateGeoData(geo);
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
Log.w("Failed to UpdateLocation location.");
}
}
@@ -91,8 +77,8 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
if (!cache.supportsGCVote()) {
return;
}
- (new Thread("Load GCVote") {
+ (new Thread("Load GCVote") {
@Override
public void run() {
final GCVoteRating rating = GCVote.getRating(cache.getGuid(), geocode);
@@ -102,14 +88,17 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
}
cache.setRating(rating.getRating());
cache.setVotes(rating.getVotes());
- final Message msg = Message.obtain();
- ratingHandler.sendMessage(msg);
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ details.addRating(cache); }
+ });
}
}).start();
}
protected void init() {
- cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
if (cache == null) {
showToast(res.getString(R.string.err_detail_cache_find));
@@ -209,7 +198,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
menu.findItem(R.id.menu_default_navigation).setTitle(NavigationAppFactory.getDefaultNavigationApplication().getName());
LoggingUI.onPrepareOptionsMenu(menu, cache);
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// nothing
}
@@ -243,6 +232,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
protected abstract void startDefaultNavigation2();
protected final void addCacheDetails() {
+ assert cache != null;
// cache type
final String cacheType = cache.getType().getL10n();
final String cacheSize = cache.getSize() != CacheSize.UNKNOWN ? " (" + cache.getSize().getL10n() + ")" : "";
@@ -256,6 +246,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
details.addDifficulty(cache);
details.addTerrain(cache);
+ details.addEventDate(cache);
// rating
if (cache.getRating() > 0) {
@@ -285,7 +276,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
showToast(res.getString(R.string.err_location_unknown));
return;
}
- cgeocaches.startActivityCoordinates(this, coords);
+ CacheListActivity.startActivityCoordinates(this, coords);
finish();
}
diff --git a/main/src/cgeo/geocaching/AddressListActivity.java b/main/src/cgeo/geocaching/AddressListActivity.java
index c984d28..dc0239f 100644
--- a/main/src/cgeo/geocaching/AddressListActivity.java
+++ b/main/src/cgeo/geocaching/AddressListActivity.java
@@ -4,7 +4,7 @@ import cgeo.geocaching.activity.AbstractListActivity;
import cgeo.geocaching.ui.AddressListAdapter;
import cgeo.geocaching.utils.Log;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.app.ProgressDialog;
@@ -66,7 +66,7 @@ public class AddressListActivity extends AbstractListActivity {
}
} else {
finish();
- cgeocaches.startActivityAddress(AddressListActivity.this, null, keyword);
+ CacheListActivity.startActivityAddress(AddressListActivity.this, null, keyword);
}
}
diff --git a/main/src/cgeo/geocaching/CacheCache.java b/main/src/cgeo/geocaching/CacheCache.java
index e70b7a0..b3c674c 100644
--- a/main/src/cgeo/geocaching/CacheCache.java
+++ b/main/src/cgeo/geocaching/CacheCache.java
@@ -1,6 +1,6 @@
package cgeo.geocaching;
-import cgeo.geocaching.cgData.StorageLocation;
+import cgeo.geocaching.DataStore.StorageLocation;
import cgeo.geocaching.connector.gc.Tile;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.geopoint.Viewport;
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index 4a9cc6e..174a036 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -18,6 +18,7 @@ import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.GeopointFormatter;
import cgeo.geocaching.geopoint.Units;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.network.HtmlImage;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
@@ -52,7 +53,7 @@ import cgeo.geocaching.utils.TextUtils;
import cgeo.geocaching.utils.TranslationUtils;
import cgeo.geocaching.utils.UnknownTagsHandler;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -291,7 +292,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
title = geocode;
}
progress.show(this, title, res.getString(R.string.cache_dialog_loading_details), true, loadCacheHandler.cancelMessage());
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// nothing, we lost the window
}
@@ -422,7 +423,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
break;
}
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
}
}
break;
@@ -438,11 +439,11 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
menu.setHeaderTitle(fieldTitle);
menu.add(viewId, MENU_FIELD_COPY, 0, res.getString(android.R.string.copy));
if (!copyOnly) {
- if (clickedItemText.length() > TranslationUtils.translationTextLengthToWarn) {
+ if (clickedItemText.length() > TranslationUtils.TRANSLATION_TEXT_LENGTH_WARN) {
showToast(res.getString(R.string.translate_length_warning));
}
menu.add(viewId, MENU_FIELD_TRANSLATE, 0, res.getString(R.string.translate_to_sys_lang, Locale.getDefault().getDisplayLanguage()));
- if (Settings.isUseEnglish() && !StringUtils.equals(Locale.getDefault().getLanguage(), Locale.ENGLISH.getLanguage())) {
+ if (!StringUtils.equals(Locale.getDefault().getLanguage(), Locale.ENGLISH.getLanguage())) {
menu.add(viewId, MENU_FIELD_TRANSLATE_EN, 0, res.getString(R.string.translate_to_english));
}
@@ -493,14 +494,14 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
case CONTEXT_MENU_WAYPOINT_DUPLICATE:
final Waypoint waypointDuplicate = cache.getWaypoint(index);
if (cache.duplicateWaypoint(waypointDuplicate)) {
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
notifyDataSetChanged();
}
break;
case CONTEXT_MENU_WAYPOINT_DELETE:
final Waypoint waypointDelete = cache.getWaypoint(index);
if (cache.deleteWaypoint(waypointDelete)) {
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
notifyDataSetChanged();
}
break;
@@ -519,7 +520,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
case CONTEXT_MENU_WAYPOINT_CACHES_AROUND:
final Waypoint waypointAround = cache.getWaypoint(index);
if (waypointAround != null) {
- cgeocaches.startActivityCoordinates(this, waypointAround.getCoords());
+ CacheListActivity.startActivityCoordinates(this, waypointAround.getCoords());
}
break;
@@ -588,7 +589,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
cache.openInBrowser(this);
return true;
case MENU_CACHES_AROUND:
- cgeocaches.startActivityCoordinates(this, cache.getCoords());
+ CacheListActivity.startActivityCoordinates(this, cache.getCoords());
return true;
case MENU_CALENDAR:
addToCalendarWithIntent();
@@ -1134,7 +1135,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
if (time > 0) {
String dateString = Formatter.formatFullDate(time);
if (cache.isEventCache()) {
- dateString = DateUtils.formatDateTime(cgeoapplication.getInstance().getBaseContext(), time, DateUtils.FORMAT_SHOW_WEEKDAY) + ", " + dateString;
+ dateString = DateUtils.formatDateTime(CgeoApplication.getInstance().getBaseContext(), time, DateUtils.FORMAT_SHOW_WEEKDAY) + ", " + dateString;
}
details.add(cache.isEventCache() ? R.string.cache_event : R.string.cache_hidden, dateString);
}
@@ -1279,7 +1280,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
private Handler handler;
public DropCacheThread(Handler handler) {
- super();
this.handler = handler;
}
@@ -1481,7 +1481,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
Settings.saveLastList(listId);
- cgData.moveToList(cache, listId);
+ DataStore.moveToList(cache, listId);
updateListBox();
}
@@ -1564,7 +1564,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
// update text
final TextView text = (TextView) view.findViewById(R.id.list_text);
- final StoredList list = cgData.getList(cache.getListId());
+ final StoredList list = DataStore.getList(cache.getListId());
if (list != null) {
text.setText(res.getString(R.string.cache_list_text) + " " + list.title);
} else {
@@ -1615,7 +1615,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
return;
}
- ((ImageView) view.findViewById(R.id.map_preview)).setImageDrawable(image);
+ final ImageView imageView = (ImageView) view.findViewById(R.id.map_preview);
+ imageView.setImageDrawable(image);
view.findViewById(R.id.map_preview_box).setVisibility(View.VISIBLE);
} catch (final Exception e) {
Log.e("CacheDetailActivity.PreviewMapTask", e);
@@ -1706,12 +1707,16 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
hintView.setVisibility(View.VISIBLE);
hintView.setClickable(true);
- hintView.setOnClickListener(new DecryptTextClickListener());
+ hintView.setOnClickListener(new DecryptTextClickListener(hintView));
+ hintBoxView.setOnClickListener(new DecryptTextClickListener(hintView));
+ hintBoxView.setClickable(true);
registerForContextMenu(hintView);
} else {
hintView.setVisibility(View.GONE);
hintView.setClickable(false);
hintView.setOnClickListener(null);
+ hintBoxView.setClickable(false);
+ hintBoxView.setOnClickListener(null);
}
final TextView spoilerlinkView = ((TextView) view.findViewById(R.id.hint_spoilerlink));
@@ -2197,7 +2202,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
cache.setCoords(wpt.getCoords());
cache.setUserModifiedCoords(false);
cache.deleteWaypointForce(wpt);
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
handler.sendEmptyMessage(LOCAL);
}
@@ -2452,7 +2457,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
protected void storeCache(final int listId, final StoreCacheHandler storeCacheHandler) {
- progress.show(CacheDetailActivity.this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage());
+ progress.show(this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage());
if (storeThread != null) {
storeThread.interrupt();
@@ -2491,7 +2496,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
cache.parseWaypointsFromNote();
TextView personalNoteView = (TextView) activity.findViewById(R.id.personalnote);
setPersonalNote(personalNoteView, note);
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
activity.notifyDataSetChanged();
}
};
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/CacheListActivity.java
index 59174f5..848518d 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/CacheListActivity.java
@@ -16,6 +16,7 @@ import cgeo.geocaching.files.GPXImporter;
import cgeo.geocaching.filter.FilterUserInterface;
import cgeo.geocaching.filter.IFilter;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.loaders.AbstractSearchLoader;
import cgeo.geocaching.loaders.AbstractSearchLoader.CacheListLoaderType;
import cgeo.geocaching.loaders.AddressGeocacheListLoader;
@@ -44,9 +45,10 @@ import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.RunnableWithArgument;
import ch.boye.httpclientandroidlib.HttpResponse;
-
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
import android.app.AlertDialog;
import android.app.ProgressDialog;
@@ -80,7 +82,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-public class cgeocaches extends AbstractListActivity implements FilteredActivity, LoaderManager.LoaderCallbacks<SearchResult> {
+public class CacheListActivity extends AbstractListActivity implements FilteredActivity, LoaderManager.LoaderCallbacks<SearchResult> {
private static final int MAX_LIST_ITEMS = 1000;
private static final int MENU_REFRESH_STORED = 2;
@@ -152,7 +154,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
}
if (app.currentGeo().getSpeed() <= 5) { // use compass when speed is lower than 18 km/h) {
- final float northHeading = DirectionProvider.getDirectionNow(cgeocaches.this, direction);
+ final float northHeading = DirectionProvider.getDirectionNow(CacheListActivity.this, direction);
adapter.setActualHeading(northHeading);
}
}
@@ -211,7 +213,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
setAdapterCurrentCoordinates(false);
} catch (final Exception e) {
showToast(res.getString(R.string.err_detail_cache_find_any));
- Log.e("cgeocaches.loadCachesHandler", e);
+ Log.e("CacheListActivity.loadCachesHandler", e);
hideLoading();
showProgress(false);
@@ -224,7 +226,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
hideLoading();
showProgress(false);
} catch (final Exception e2) {
- Log.e("cgeocaches.loadCachesHandler.2", e2);
+ Log.e("CacheListActivity.loadCachesHandler.2", e2);
}
adapter.setSelectMode(false);
@@ -232,15 +234,15 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private final Handler loadCachesHandler = new LoadCachesHandler(this);
- private static class LoadCachesHandler extends WeakReferenceHandler<cgeocaches> {
+ private static class LoadCachesHandler extends WeakReferenceHandler<CacheListActivity> {
- protected LoadCachesHandler(cgeocaches activity) {
+ protected LoadCachesHandler(CacheListActivity activity) {
super(activity);
}
@Override
public void handleMessage(Message msg) {
- final cgeocaches activity = getActivity();
+ final CacheListActivity activity = getActivity();
if (activity == null) {
return;
}
@@ -398,7 +400,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private AbstractSearchLoader currentLoader;
private String newListName = StringUtils.EMPTY;
- public cgeocaches() {
+ public CacheListActivity() {
super(true);
}
@@ -433,7 +435,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
@Override
public void onClick(View v) {
- selectList(v);
+ selectList();
}
});
@@ -469,7 +471,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private boolean isConcreteList() {
return type == CacheListType.OFFLINE &&
- (listId == StoredList.STANDARD_LIST_ID || listId >= cgData.customListIdOffset);
+ (listId == StoredList.STANDARD_LIST_ID || listId >= DataStore.customListIdOffset);
}
private boolean isInvokedFromAttachment() {
@@ -481,7 +483,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
@Override
public void run(Integer listId) {
- new GPXImporter(cgeocaches.this, listId, importGpxAttachementFinishedHandler).importGPX();
+ new GPXImporter(CacheListActivity.this, listId, importGpxAttachementFinishedHandler).importGPX();
switchListById(listId);
}
}, true, 0);
@@ -503,7 +505,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
// refresh standard list if it has changed (new caches downloaded)
if (type == CacheListType.OFFLINE && listId >= StoredList.STANDARD_LIST_ID && search != null) {
- final SearchResult newSearch = cgData.getBatchOfStoredCaches(coords, Settings.getCacheType(), listId);
+ final SearchResult newSearch = DataStore.getBatchOfStoredCaches(coords, Settings.getCacheType(), listId);
if (newSearch.getTotal() != search.getTotal()) {
refreshCurrentList();
}
@@ -643,7 +645,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
item.setVisible(isNonDefaultList);
}
- final boolean multipleLists = cgData.getLists().size() >= 2;
+ final boolean multipleLists = DataStore.getLists().size() >= 2;
item = menu.findItem(MENU_SWITCH_LIST);
if (item != null) {
item.setVisible(multipleLists);
@@ -655,8 +657,8 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
setMenuItemLabel(menu, MENU_REMOVE_FROM_HISTORY, R.string.cache_remove_from_history, R.string.cache_clear_history);
setMenuItemLabel(menu, MENU_EXPORT, R.string.export, R.string.export);
- } catch (final Exception e) {
- Log.e("cgeocaches.onPrepareOptionsMenu", e);
+ } catch (final RuntimeException e) {
+ Log.e("CacheListActivity.onPrepareOptionsMenu", e);
}
return true;
@@ -733,7 +735,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
invalidateOptionsMenuCompatible();
return false;
case MENU_SWITCH_LIST:
- selectList(null);
+ selectList();
invalidateOptionsMenuCompatible();
return false;
case MENU_FILTER:
@@ -832,7 +834,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
try {
adapterInfo = (AdapterContextMenuInfo) info;
} catch (final Exception e) {
- Log.w("cgeocaches.onCreateContextMenu", e);
+ Log.w("CacheListActivity.onCreateContextMenu", e);
}
if (adapterInfo == null || adapterInfo.position >= adapter.getCount()) {
@@ -866,7 +868,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
@Override
public void run(Integer newListId) {
- cgData.moveToList(adapter.getCheckedOrAllCaches(), newListId);
+ DataStore.moveToList(adapter.getCheckedOrAllCaches(), newListId);
adapter.setSelectMode(false);
refreshCurrentList();
@@ -889,7 +891,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
try {
adapterInfo = (AdapterContextMenuInfo) info;
} catch (final Exception e) {
- Log.w("cgeocaches.onContextItemSelected", e);
+ Log.w("CacheListActivity.onContextItemSelected", e);
}
final Geocache cache = adapterInfo != null ? getCacheFromAdapter(adapterInfo) : null;
@@ -924,7 +926,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
@Override
public void run(Integer newListId) {
- cgData.moveToList(Collections.singletonList(cache), newListId);
+ DataStore.moveToList(Collections.singletonList(cache), newListId);
adapter.setSelectMode(false);
refreshCurrentList();
}
@@ -1200,7 +1202,6 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
final private Handler handler;
final private int listIdLD;
private volatile boolean needToStop = false;
- private long last = 0L;
final private List<Geocache> caches;
public LoadDetailsThread(Handler handlerIn, List<Geocache> caches, int listId) {
@@ -1218,21 +1219,14 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
@Override
public void run() {
removeGeoAndDir();
-
- final List<Geocache> cachesWithStaticMaps = new ArrayList<Geocache>(this.caches.size());
- for (final Geocache cache : this.caches) {
- if (Settings.isStoreOfflineMaps() && cache.hasStaticMap()) {
- cachesWithStaticMaps.add(cache);
- continue;
- }
- if (!refreshCache(cache)) {
- // in case of interruption avoid the second loop
- cachesWithStaticMaps.clear();
- break;
- }
- }
-
- for (final Geocache cache : cachesWithStaticMaps) {
+ // First refresh caches that do not yet have static maps to get them a chance to get a copy
+ // before the limit expires, unless we do not want to store offline maps.
+ final List<Geocache> allCaches = Settings.isStoreOfflineMaps() ?
+ ListUtils.union(ListUtils.selectRejected(caches, Geocache.hasStaticMap),
+ ListUtils.select(caches, Geocache.hasStaticMap)) :
+ caches;
+
+ for (final Geocache cache : allCaches) {
if (!refreshCache(cache)) {
break;
}
@@ -1255,38 +1249,16 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
if (needToStop) {
throw new InterruptedException("Stopped storing process.");
}
-
- if ((System.currentTimeMillis() - last) < 1500) {
- try {
- int delay = 1000 + ((Double) (Math.random() * 1000)).intValue() - (int) (System.currentTimeMillis() - last);
- if (delay < 0) {
- delay = 500;
- }
-
- Log.i("Waiting for next cache " + delay + " ms");
- } catch (final Exception e) {
- Log.e("cgeocaches.LoadDetailsThread.sleep", e);
- }
- }
-
- if (needToStop) {
- throw new InterruptedException("Stopped storing process.");
- }
-
detailProgress++;
cache.refresh(listIdLD, null);
-
handler.sendEmptyMessage(cacheList.indexOf(cache));
-
- yield();
} catch (final InterruptedException e) {
Log.i(e.getMessage());
return false;
} catch (final Exception e) {
- Log.e("cgeocaches.LoadDetailsThread", e);
+ Log.e("CacheListActivity.LoadDetailsThread", e);
}
- last = System.currentTimeMillis();
return true;
}
}
@@ -1326,7 +1298,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
if (responseFromWeb != null && responseFromWeb.getStatusLine().getStatusCode() == 200) {
final String response = Network.getResponseData(responseFromWeb);
- if (response.length() > 2) {
+ if (response != null && response.length() > 2) {
delay = 1;
handler.sendMessage(handler.obtainMessage(1, response));
yield();
@@ -1363,7 +1335,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
times = 0;
}
} catch (final InterruptedException e) {
- Log.e("cgeocaches.LoadFromWebThread.sleep", e);
+ Log.e("CacheListActivity.LoadFromWebThread.sleep", e);
}
}
@@ -1378,14 +1350,14 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private final boolean removeListAfterwards;
public DropDetailsTask(boolean removeListAfterwards) {
- super(cgeocaches.this, null, res.getString(R.string.caches_drop_progress), true);
+ super(CacheListActivity.this, null, res.getString(R.string.caches_drop_progress), true);
this.removeListAfterwards = removeListAfterwards;
}
@Override
protected Void doInBackgroundInternal(Geocache[] caches) {
removeGeoAndDir();
- cgData.markDropped(Arrays.asList(caches));
+ DataStore.markDropped(Arrays.asList(caches));
startGeoAndDir();
return null;
}
@@ -1416,7 +1388,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
@Override
public void run() {
- cgData.clearLogsOffline(selected);
+ DataStore.clearLogsOffline(selected);
handler.sendEmptyMessage(MSG_DONE);
}
}
@@ -1429,7 +1401,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
showFooterLoadingCaches();
listFooter.setOnClickListener(null);
- getSupportLoaderManager().restartLoader(CacheListLoaderType.NEXT_PAGE.ordinal(), null, cgeocaches.this);
+ getSupportLoaderManager().restartLoader(CacheListLoaderType.NEXT_PAGE.ordinal(), null, CacheListActivity.this);
}
}
@@ -1442,17 +1414,14 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
}
}
- /**
- * @param view
- * unused here but needed since this method is referenced from XML layout
- */
- public void selectList(View view) {
- if (type != CacheListType.OFFLINE) {
+ public void selectList() {
+ if (!type.canSwitch) {
return;
}
new StoredList.UserInterface(this).promptForListSelection(R.string.list_title, getListSwitchingRunnable());
}
+ @NonNull
private RunnableWithArgument<Integer> getListSwitchingRunnable() {
return new RunnableWithArgument<Integer>() {
@@ -1468,7 +1437,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
return;
}
- final StoredList list = cgData.getList(id);
+ final StoredList list = DataStore.getList(id);
if (list == null) {
return;
}
@@ -1480,7 +1449,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
showProgress(true);
showFooterLoadingCaches();
- cgData.moveToList(adapter.getCheckedCaches(), listId);
+ DataStore.moveToList(adapter.getCheckedCaches(), listId);
currentLoader = (OfflineGeocacheListLoader) getSupportLoaderManager().initLoader(CacheListType.OFFLINE.ordinal(), new Bundle(), this);
currentLoader.reset();
@@ -1503,7 +1472,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
}
private void removeListInternal() {
- if (cgData.removeList(listId)) {
+ if (DataStore.removeList(listId)) {
showToast(res.getString(R.string.list_dialog_remove_ok));
switchListById(StoredList.STANDARD_LIST_ID);
} else {
@@ -1576,7 +1545,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
}
public static void startActivityOffline(final Context context) {
- final Intent cachesIntent = new Intent(context, cgeocaches.class);
+ final Intent cachesIntent = new Intent(context, CacheListActivity.class);
cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.OFFLINE);
context.startActivity(cachesIntent);
}
@@ -1585,7 +1554,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
if (!isValidUsername(context, userName)) {
return;
}
- final Intent cachesIntent = new Intent(context, cgeocaches.class);
+ final Intent cachesIntent = new Intent(context, CacheListActivity.class);
cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.OWNER);
cachesIntent.putExtra(Intents.EXTRA_USERNAME, userName);
context.startActivity(cachesIntent);
@@ -1593,7 +1562,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private static boolean isValidUsername(AbstractActivity context, String username) {
if (StringUtils.isBlank(username)) {
- context.showToast(cgeoapplication.getInstance().getString(R.string.warn_no_username));
+ context.showToast(CgeoApplication.getInstance().getString(R.string.warn_no_username));
return false;
}
return true;
@@ -1603,7 +1572,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
if (!isValidUsername(context, userName)) {
return;
}
- final Intent cachesIntent = new Intent(context, cgeocaches.class);
+ final Intent cachesIntent = new Intent(context, CacheListActivity.class);
cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.USERNAME);
cachesIntent.putExtra(Intents.EXTRA_USERNAME, userName);
context.startActivity(cachesIntent);
@@ -1629,20 +1598,20 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
if (!isValidCoords(context, coordsNow)) {
return;
}
- final Intent cachesIntent = new Intent(context, cgeocaches.class);
+ final Intent cachesIntent = new Intent(context, CacheListActivity.class);
cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.NEAREST);
cachesIntent.putExtra(Intents.EXTRA_COORDS, coordsNow);
context.startActivity(cachesIntent);
}
public static void startActivityHistory(Context context) {
- final Intent cachesIntent = new Intent(context, cgeocaches.class);
+ final Intent cachesIntent = new Intent(context, CacheListActivity.class);
cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.HISTORY);
context.startActivity(cachesIntent);
}
public static void startActivityAddress(final Context context, final Geopoint coords, final String address) {
- final Intent addressIntent = new Intent(context, cgeocaches.class);
+ final Intent addressIntent = new Intent(context, CacheListActivity.class);
addressIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.ADDRESS);
addressIntent.putExtra(Intents.EXTRA_COORDS, coords);
addressIntent.putExtra(Intents.EXTRA_ADDRESS, address);
@@ -1653,7 +1622,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
if (!isValidCoords(context, coords)) {
return;
}
- final Intent cachesIntent = new Intent(context, cgeocaches.class);
+ final Intent cachesIntent = new Intent(context, CacheListActivity.class);
cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.COORDINATE);
cachesIntent.putExtra(Intents.EXTRA_COORDS, coords);
context.startActivity(cachesIntent);
@@ -1661,7 +1630,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
private static boolean isValidCoords(AbstractActivity context, Geopoint coords) {
if (coords == null) {
- context.showToast(cgeoapplication.getInstance().getString(R.string.warn_no_coordinates));
+ context.showToast(CgeoApplication.getInstance().getString(R.string.warn_no_coordinates));
return false;
}
return true;
@@ -1669,17 +1638,17 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
public static void startActivityKeyword(final AbstractActivity context, final String keyword) {
if (keyword == null) {
- context.showToast(cgeoapplication.getInstance().getString(R.string.warn_no_keyword));
+ context.showToast(CgeoApplication.getInstance().getString(R.string.warn_no_keyword));
return;
}
- final Intent cachesIntent = new Intent(context, cgeocaches.class);
+ final Intent cachesIntent = new Intent(context, CacheListActivity.class);
cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.KEYWORD);
cachesIntent.putExtra(Intents.EXTRA_KEYWORD, keyword);
context.startActivity(cachesIntent);
}
public static void startActivityMap(final Context context, final SearchResult search) {
- final Intent cachesIntent = new Intent(context, cgeocaches.class);
+ final Intent cachesIntent = new Intent(context, CacheListActivity.class);
cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.MAP);
cachesIntent.putExtra(Intents.EXTRA_SEARCH, search);
context.startActivity(cachesIntent);
@@ -1701,7 +1670,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity
listId = StoredList.STANDARD_LIST_ID;
title = res.getString(R.string.stored_caches_button);
} else {
- final StoredList list = cgData.getList(listId);
+ final StoredList list = DataStore.getList(listId);
// list.id may be different if listId was not valid
listId = list.id;
title = list.title;
diff --git a/main/src/cgeo/geocaching/CachePopup.java b/main/src/cgeo/geocaching/CachePopup.java
index 873801e..683ebe7 100644
--- a/main/src/cgeo/geocaching/CachePopup.java
+++ b/main/src/cgeo/geocaching/CachePopup.java
@@ -3,6 +3,7 @@ package cgeo.geocaching;
import cgeo.geocaching.activity.Progress;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.ui.CacheDetailsCreator;
diff --git a/main/src/cgeo/geocaching/cgeoapplication.java b/main/src/cgeo/geocaching/CgeoApplication.java
index 5a793f5..2c419cf 100644
--- a/main/src/cgeo/geocaching/cgeoapplication.java
+++ b/main/src/cgeo/geocaching/CgeoApplication.java
@@ -9,12 +9,10 @@ import android.app.Activity;
import android.app.Application;
import android.app.ProgressDialog;
import android.content.res.Resources;
-import android.os.Handler;
-import android.os.Message;
import java.util.concurrent.atomic.AtomicBoolean;
-public class cgeoapplication extends Application {
+public class CgeoApplication extends Application {
private volatile GeoDataProvider geo;
private volatile DirectionProvider dir;
@@ -22,17 +20,17 @@ public class cgeoapplication extends Application {
public boolean showLoginToast = true; //login toast shown just once.
private boolean liveMapHintShown = false; // livemap hint has been shown
final private StatusUpdater statusUpdater = new StatusUpdater();
- private static cgeoapplication instance;
+ private static CgeoApplication instance;
- public cgeoapplication() {
+ public CgeoApplication() {
setInstance(this);
}
- private static void setInstance(final cgeoapplication application) {
+ private static void setInstance(final CgeoApplication application) {
instance = application;
}
- public static cgeoapplication getInstance() {
+ public static CgeoApplication getInstance() {
return instance;
}
@@ -46,15 +44,15 @@ public class cgeoapplication extends Application {
@Override
public void onLowMemory() {
Log.i("Cleaning applications cache.");
- cgData.removeAllFromCache();
+ DataStore.removeAllFromCache();
}
@Override
public void onTerminate() {
Log.d("Terminating c:geo…");
- cgData.clean();
- cgData.closeDb();
+ DataStore.clean();
+ DataStore.closeDb();
super.onTerminate();
}
@@ -69,24 +67,21 @@ public class cgeoapplication extends Application {
final Resources res = this.getResources();
final ProgressDialog dialog = ProgressDialog.show(fromActivity, res.getString(R.string.init_dbmove_dbmove), res.getString(R.string.init_dbmove_running), true, false);
final AtomicBoolean atomic = new AtomicBoolean(false);
- Thread moveThread = new Thread() {
- final Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- dialog.dismiss();
- boolean success = atomic.get();
- String message = success ? res.getString(R.string.init_dbmove_success) : res.getString(R.string.init_dbmove_failed);
- ActivityMixin.helpDialog(fromActivity, res.getString(R.string.init_dbmove_dbmove), message);
- }
- };
-
+ new Thread() {
@Override
public void run() {
- atomic.set(cgData.moveDatabase());
- handler.sendMessage(handler.obtainMessage());
+ atomic.set(DataStore.moveDatabase());
+ fromActivity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ dialog.dismiss();
+ boolean success = atomic.get();
+ String message = success ? res.getString(R.string.init_dbmove_success) : res.getString(R.string.init_dbmove_failed);
+ ActivityMixin.helpDialog(fromActivity, res.getString(R.string.init_dbmove_dbmove), message);
+ }
+ });
}
- };
- moveThread.start();
+ }.start();
}
/**
diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java
index 002f00e..b7bed7d 100644
--- a/main/src/cgeo/geocaching/CompassActivity.java
+++ b/main/src/cgeo/geocaching/CompassActivity.java
@@ -134,7 +134,7 @@ public class CompassActivity extends AbstractActivity {
setCacheInfo();
// Force a refresh of location and direction when data is available.
- final cgeoapplication app = cgeoapplication.getInstance();
+ final CgeoApplication app = CgeoApplication.getInstance();
final IGeoData geo = app.currentGeo();
if (geo != null) {
geoDirHandler.update(geo);
@@ -282,7 +282,7 @@ public class CompassActivity extends AbstractActivity {
if (!Settings.isUseCompass() || geo.getSpeed() > 5) { // use GPS when speed is higher than 18 km/h
updateNorthHeading(geo.getBearing());
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Log.w("Failed to LocationUpdater location.");
}
}
diff --git a/main/src/cgeo/geocaching/cgData.java b/main/src/cgeo/geocaching/DataStore.java
index 9d636f9..7c19a83 100644
--- a/main/src/cgeo/geocaching/cgData.java
+++ b/main/src/cgeo/geocaching/DataStore.java
@@ -13,13 +13,17 @@ import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.files.LocalStorage;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.list.AbstractList;
+import cgeo.geocaching.list.PseudoList;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.FileUtils;
import cgeo.geocaching.utils.Log;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.MapUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
import android.content.ContentValues;
import android.content.Context;
@@ -51,9 +55,9 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.regex.Pattern;
-public class cgData {
+public class DataStore {
- private cgData() {
+ private DataStore() {
// utility class
}
@@ -293,10 +297,10 @@ public class cgData {
}
try {
- final DbHelper dbHelper = new DbHelper(new DBContext(cgeoapplication.getInstance()));
+ final DbHelper dbHelper = new DbHelper(new DBContext(CgeoApplication.getInstance()));
database = dbHelper.getWritableDatabase();
} catch (Exception e) {
- Log.e("cgData.init: unable to open database for R/W", e);
+ Log.e("DataStore.init: unable to open database for R/W", e);
}
}
@@ -756,7 +760,7 @@ public class cgData {
// to NPE traces.
final int staleHistorySearches = db.delete(dbTableSearchDestionationHistory, "date is null", null);
if (staleHistorySearches > 0) {
- Log.w(String.format(Locale.getDefault(), "cgData.dbHelper.onOpen: removed %d bad search history entries", staleHistorySearches));
+ Log.w(String.format(Locale.getDefault(), "DataStore.dbHelper.onOpen: removed %d bad search history entries", staleHistorySearches));
}
}
@@ -859,7 +863,7 @@ public class cgData {
return getFirstColumn(cursor);
} catch (final Exception e) {
- Log.e("cgData.allDetailedThere", e);
+ Log.e("DataStore.allDetailedThere", e);
return new String[0];
}
}
@@ -906,7 +910,7 @@ public class cgData {
cursor.close();
} catch (final Exception e) {
- Log.e("cgData.isThere", e);
+ Log.e("DataStore.isThere", e);
}
if (detailed && dataDetailed == 0) {
@@ -953,7 +957,7 @@ public class cgData {
} catch (SQLiteDoneException e) {
// Do nothing, it only means we have no information on the cache
} catch (Exception e) {
- Log.e("cgData.isOffline", e);
+ Log.e("DataStore.isOffline", e);
}
return false;
@@ -974,7 +978,7 @@ public class cgData {
} catch (SQLiteDoneException e) {
// Do nothing, it only means we have no information on the cache
} catch (Exception e) {
- Log.e("cgData.getGeocodeForGuid", e);
+ Log.e("DataStore.getGeocodeForGuid", e);
}
return null;
@@ -995,7 +999,7 @@ public class cgData {
} catch (SQLiteDoneException e) {
// Do nothing, it only means we have no information on the cache
} catch (Exception e) {
- Log.e("cgData.getCacheidForGeocode", e);
+ Log.e("DataStore.getCacheidForGeocode", e);
}
return null;
@@ -1496,7 +1500,7 @@ public class cgData {
}
if (remaining.size() >= 1) {
- Log.d("cgData.loadCaches(" + remaining.toString() + ") returned no results");
+ Log.d("DataStore.loadCaches(" + remaining.toString() + ") returned no results");
}
return result;
}
@@ -1527,7 +1531,7 @@ public class cgData {
}
query.append(" WHERE ").append(dbTableCaches).append('.');
- query.append(cgData.whereGeocodeIn(geocodes));
+ query.append(DataStore.whereGeocodeIn(geocodes));
Cursor cursor = database.rawQuery(query.toString(), null);
try {
@@ -1535,7 +1539,7 @@ public class cgData {
int logIndex = -1;
while (cursor.moveToNext()) {
- Geocache cache = cgData.createCacheFromDatabaseContent(cursor);
+ Geocache cache = DataStore.createCacheFromDatabaseContent(cursor);
if (loadFlags.contains(LoadFlag.LOAD_ATTRIBUTES)) {
cache.setAttributes(loadAttributes(cache.getGeocode()));
@@ -1716,7 +1720,7 @@ public class cgData {
null,
"1");
- Log.d("cgData.loadWaypoint(" + id + ")");
+ Log.d("DataStore.loadWaypoint(" + id + ")");
final Waypoint waypoint = cursor.moveToFirst() ? createWaypointFromDatabaseContent(cursor) : null;
@@ -2018,7 +2022,7 @@ public class cgData {
reasonIndex = 1;
}
String listKey;
- if (list == StoredList.ALL_LIST_ID) {
+ if (list == PseudoList.ALL_LIST.id) {
sql.append(" and reason > 0");
listKey = "all_list";
} else {
@@ -2032,12 +2036,12 @@ public class cgData {
if (cacheType != CacheType.ALL) {
compiledStmnt.bindString(1, cacheType.id);
}
- if (list != StoredList.ALL_LIST_ID) {
+ if (list != PseudoList.ALL_LIST.id) {
compiledStmnt.bindLong(reasonIndex, list);
}
return (int) compiledStmnt.simpleQueryForLong();
} catch (Exception e) {
- Log.e("cgData.loadAllStoredCachesCount", e);
+ Log.e("DataStore.loadAllStoredCachesCount", e);
}
return 0;
@@ -2049,7 +2053,7 @@ public class cgData {
try {
return (int) PreparedStatements.getCountHistoryCaches().simpleQueryForLong();
} catch (Exception e) {
- Log.e("cgData.getAllHistoricCachesCount", e);
+ Log.e("DataStore.getAllHistoricCachesCount", e);
}
return 0;
@@ -2075,7 +2079,7 @@ public class cgData {
final StringBuilder selection = new StringBuilder();
selection.append("reason ");
- selection.append(listId != StoredList.ALL_LIST_ID ? "=" + Math.max(listId, 1) : ">= " + StoredList.STANDARD_LIST_ID);
+ selection.append(listId != PseudoList.ALL_LIST.id ? "=" + Math.max(listId, 1) : ">= " + StoredList.STANDARD_LIST_ID);
selection.append(" and detailed = 1 ");
String[] selectionArgs = null;
@@ -2114,7 +2118,7 @@ public class cgData {
cursor.close();
} catch (final Exception e) {
- Log.e("cgData.loadBatchOfStoredGeocodes", e);
+ Log.e("DataStore.loadBatchOfStoredGeocodes", e);
}
return geocodes;
@@ -2151,7 +2155,7 @@ public class cgData {
}
cursor.close();
} catch (Exception e) {
- Log.e("cgData.loadBatchOfHistoricGeocodes", e);
+ Log.e("DataStore.loadBatchOfHistoricGeocodes", e);
}
return geocodes;
@@ -2221,7 +2225,7 @@ public class cgData {
cursor.close();
} catch (final Exception e) {
- Log.e("cgData.loadInViewport", e);
+ Log.e("DataStore.loadInViewport", e);
}
return new SearchResult(geocodes);
@@ -2285,7 +2289,7 @@ public class cgData {
removeCaches(geocodes, LoadFlags.REMOVE_ALL);
}
} catch (final Exception e) {
- Log.w("cgData.clean", e);
+ Log.w("DataStore.clean", e);
}
Log.d("Database clean: finished");
@@ -2356,11 +2360,11 @@ public class cgData {
public static boolean saveLogOffline(String geocode, Date date, LogType type, String log) {
if (StringUtils.isBlank(geocode)) {
- Log.e("cgData.saveLogOffline: cannot log a blank geocode");
+ Log.e("DataStore.saveLogOffline: cannot log a blank geocode");
return false;
}
if (LogType.UNKNOWN == type && StringUtils.isBlank(log)) {
- Log.e("cgData.saveLogOffline: cannot log an unknown log type and no message");
+ Log.e("DataStore.saveLogOffline: cannot log an unknown log type and no message");
return false;
}
@@ -2451,7 +2455,7 @@ public class cgData {
return logCount.simpleQueryForLong() > 0;
}
} catch (Exception e) {
- Log.e("cgData.hasLogOffline", e);
+ Log.e("DataStore.hasLogOffline", e);
}
return false;
@@ -2479,10 +2483,11 @@ public class cgData {
}
}
+ @NonNull
public static List<StoredList> getLists() {
init();
- final Resources res = cgeoapplication.getInstance().getResources();
+ final Resources res = CgeoApplication.getInstance().getResources();
final List<StoredList> lists = new ArrayList<StoredList>();
lists.add(new StoredList(StoredList.STANDARD_LIST_ID, res.getString(R.string.list_inbox), (int) PreparedStatements.getCountCachesOnStandardList().simpleQueryForLong()));
@@ -2498,7 +2503,7 @@ public class cgData {
lists.addAll(storedLists);
cursor.close();
} catch (final Exception e) {
- Log.e("cgData.readLists", e);
+ Log.e("DataStore.readLists", e);
}
return lists;
}
@@ -2534,9 +2539,9 @@ public class cgData {
}
}
- Resources res = cgeoapplication.getInstance().getResources();
- if (id == StoredList.ALL_LIST_ID) {
- return new StoredList(StoredList.ALL_LIST_ID, res.getString(R.string.list_all_lists), getAllCachesCount());
+ Resources res = CgeoApplication.getInstance().getResources();
+ if (id == PseudoList.ALL_LIST.id) {
+ return new StoredList(PseudoList.ALL_LIST.id, res.getString(R.string.list_all_lists), getAllCachesCount());
}
// fall back to standard list in case of invalid list id
@@ -2651,7 +2656,11 @@ public class cgData {
}
public static void moveToList(final List<Geocache> caches, final int listId) {
- if (listId == StoredList.ALL_LIST_ID) {
+ final AbstractList list = AbstractList.getListById(listId);
+ if (list == null) {
+ return;
+ }
+ if (!list.isConcrete()) {
return;
}
if (caches.isEmpty()) {
@@ -2738,7 +2747,7 @@ public class cgData {
} catch (SQLiteDoneException e) {
// Do nothing, it only means we have no information on the cache
} catch (Exception e) {
- Log.e("cgData.getCacheDescription", e);
+ Log.e("DataStore.getCacheDescription", e);
}
return partial;
@@ -2848,7 +2857,7 @@ public class cgData {
}
public static boolean saveChangedCache(Geocache cache) {
- return cgData.saveCache(cache, cache.getStorageLocation().contains(StorageLocation.DATABASE) ? LoadFlags.SAVE_ALL : EnumSet.of(SaveFlag.SAVE_CACHE));
+ return DataStore.saveCache(cache, cache.getStorageLocation().contains(StorageLocation.DATABASE) ? LoadFlags.SAVE_ALL : EnumSet.of(SaveFlag.SAVE_CACHE));
}
private static class PreparedStatements {
@@ -2910,7 +2919,7 @@ public class cgData {
}
private static SQLiteStatement getLogCountOfGeocode() {
- return getStatement("LogCountFromGeocode", "SELECT count(_id) FROM " + cgData.dbTableLogsOffline + " WHERE geocode = ?");
+ return getStatement("LogCountFromGeocode", "SELECT count(_id) FROM " + DataStore.dbTableLogsOffline + " WHERE geocode = ?");
}
private static SQLiteStatement getCountCachesOnStandardList() {
@@ -2960,7 +2969,7 @@ public class cgData {
return null;
}
- return cgData.getBounds(Collections.singleton(geocode));
+ return DataStore.getBounds(Collections.singleton(geocode));
}
public static void clearVisitDate(String[] selected) {
@@ -2968,18 +2977,18 @@ public class cgData {
}
public static SearchResult getBatchOfStoredCaches(Geopoint coords, CacheType cacheType, int listId) {
- final Set<String> geocodes = cgData.loadBatchOfStoredGeocodes(coords, cacheType, listId);
- return new SearchResult(geocodes, cgData.getAllStoredCachesCount(cacheType, listId));
+ final Set<String> geocodes = DataStore.loadBatchOfStoredGeocodes(coords, cacheType, listId);
+ return new SearchResult(geocodes, DataStore.getAllStoredCachesCount(cacheType, listId));
}
public static SearchResult getHistoryOfCaches(boolean detailedOnly, CacheType cacheType) {
- final Set<String> geocodes = cgData.loadBatchOfHistoricGeocodes(detailedOnly, cacheType);
- return new SearchResult(geocodes, cgData.getAllHistoryCachesCount());
+ final Set<String> geocodes = DataStore.loadBatchOfHistoricGeocodes(detailedOnly, cacheType);
+ return new SearchResult(geocodes, DataStore.getAllHistoryCachesCount());
}
public static boolean saveWaypoint(int id, String geocode, Waypoint waypoint) {
- if (cgData.saveWaypointInternal(id, geocode, waypoint)) {
- cgData.removeCache(geocode, EnumSet.of(RemoveFlag.REMOVE_CACHE));
+ if (DataStore.saveWaypointInternal(id, geocode, waypoint)) {
+ DataStore.removeCache(geocode, EnumSet.of(RemoveFlag.REMOVE_CACHE));
return true;
}
return false;
@@ -2987,7 +2996,7 @@ public class cgData {
public static Set<String> getCachedMissingFromSearch(final SearchResult searchResult, final Set<Tile> tiles, final IConnector connector, final int maxZoom) {
- // get cached cgeocaches
+ // get cached CacheListActivity
final Set<String> cachedGeocodes = new HashSet<String>();
for (Tile tile : tiles) {
cachedGeocodes.addAll(cacheCache.getInViewport(tile.getViewport(), CacheType.ALL));
diff --git a/main/src/cgeo/geocaching/EditWaypointActivity.java b/main/src/cgeo/geocaching/EditWaypointActivity.java
index 56ee959..ad6d743 100644
--- a/main/src/cgeo/geocaching/EditWaypointActivity.java
+++ b/main/src/cgeo/geocaching/EditWaypointActivity.java
@@ -107,14 +107,14 @@ public class EditWaypointActivity extends AbstractActivity {
note.setText(StringUtils.trimToEmpty(waypoint.getNote()));
}
}
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_ONLY);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_ONLY);
setCoordsModificationVisibility(ConnectorFactory.getConnector(geocode), cache);
}
if (own) {
initializeWaypointTypeSelector();
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Log.e("EditWaypointActivity.loadWaypointHandler", e);
} finally {
if (waitDialog != null) {
@@ -168,7 +168,7 @@ public class EditWaypointActivity extends AbstractActivity {
initializeWaypointTypeSelector();
if (geocode != null) {
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
setCoordsModificationVisibility(ConnectorFactory.getConnector(geocode), cache);
}
}
@@ -259,7 +259,7 @@ public class EditWaypointActivity extends AbstractActivity {
@Override
public void run() {
try {
- waypoint = cgData.loadWaypoint(id);
+ waypoint = DataStore.loadWaypoint(id);
loadWaypointHandler.sendMessage(Message.obtain());
} catch (Exception e) {
@@ -278,7 +278,7 @@ public class EditWaypointActivity extends AbstractActivity {
} catch (Geopoint.ParseException e) {
// button text is blank when creating new waypoint
}
- Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
+ Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
CoordinatesInputDialog coordsDialog = new CoordinatesInputDialog(EditWaypointActivity.this, cache, gp, app.currentGeo());
coordsDialog.setCancelable(true);
coordsDialog.setOnCoordinateUpdate(new CoordinatesInputDialog.CoordinateUpdate() {
@@ -416,14 +416,14 @@ public class EditWaypointActivity extends AbstractActivity {
waypoint.setVisited(visited);
waypoint.setId(id);
- Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
+ Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
if (cache == null) {
finishHandler.sendEmptyMessage(SAVE_ERROR);
return null;
}
Waypoint oldWaypoint = cache.getWaypointById(id);
if (cache.addOrChangeWaypoint(waypoint, true)) {
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
if (!StaticMapsProvider.hasAllStaticMapsForWaypoint(geocode, waypoint)) {
StaticMapsProvider.removeWpStaticMaps(oldWaypoint, geocode);
if (Settings.isStoreOfflineWpMaps()) {
@@ -432,13 +432,13 @@ public class EditWaypointActivity extends AbstractActivity {
}
if (modifyLocal.isChecked() || modifyBoth.isChecked()) {
if (!cache.hasUserModifiedCoords()) {
- final Waypoint origWaypoint = new Waypoint(cgeoapplication.getInstance().getString(R.string.cache_coordinates_original), WaypointType.ORIGINAL, false);
+ final Waypoint origWaypoint = new Waypoint(CgeoApplication.getInstance().getString(R.string.cache_coordinates_original), WaypointType.ORIGINAL, false);
origWaypoint.setCoords(cache.getCoords());
cache.addOrChangeWaypoint(origWaypoint, false);
cache.setUserModifiedCoords(true);
}
cache.setCoords(waypoint.getCoords());
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
if (modifyBoth.isChecked() && waypoint.getCoords() != null) {
finishHandler.sendEmptyMessage(UPLOAD_START);
diff --git a/main/src/cgeo/geocaching/Geocache.java b/main/src/cgeo/geocaching/Geocache.java
index 96fbc06..912d1be 100644
--- a/main/src/cgeo/geocaching/Geocache.java
+++ b/main/src/cgeo/geocaching/Geocache.java
@@ -1,8 +1,7 @@
package cgeo.geocaching;
-import cgeo.geocaching.cgData.StorageLocation;
+import cgeo.geocaching.DataStore.StorageLocation;
import cgeo.geocaching.activity.ActivityMixin;
-import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
import cgeo.geocaching.connector.ILoggingManager;
@@ -22,6 +21,7 @@ import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.files.GPXParser;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.network.HtmlImage;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.CancellableHandler;
@@ -32,7 +32,9 @@ import cgeo.geocaching.utils.LogTemplateProvider.LogContext;
import cgeo.geocaching.utils.MatcherWrapper;
import cgeo.geocaching.utils.UncertainProperty;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@@ -112,20 +114,20 @@ public class Geocache implements ICache, IWaypoint {
private final List<String> attributes = new LazyInitializedList<String>() {
@Override
public List<String> call() {
- return cgData.loadAttributes(geocode);
+ return DataStore.loadAttributes(geocode);
}
};
private final List<Waypoint> waypoints = new LazyInitializedList<Waypoint>() {
@Override
public List<Waypoint> call() {
- return cgData.loadWaypoints(geocode);
+ return DataStore.loadWaypoints(geocode);
}
};
private List<Image> spoilers = null;
private final List<LogEntry> logs = new LazyInitializedList<LogEntry>() {
@Override
public List<LogEntry> call() {
- return cgData.loadLogs(geocode);
+ return DataStore.loadLogs(geocode);
}
};
private List<Trackable> inventory = null;
@@ -447,16 +449,16 @@ public class Geocache implements ICache, IWaypoint {
return cacheType.getValue().isEvent();
}
- public void logVisit(final IAbstractActivity fromActivity) {
+ public void logVisit(final Activity fromActivity) {
if (!getConnector().canLog(this)) {
- fromActivity.showToast(((Activity) fromActivity).getResources().getString(R.string.err_cannot_log_visit));
+ ActivityMixin.showToast(fromActivity, fromActivity.getResources().getString(R.string.err_cannot_log_visit));
return;
}
- final Intent logVisitIntent = new Intent((Activity) fromActivity, LogCacheActivity.class);
+ final Intent logVisitIntent = new Intent(fromActivity, LogCacheActivity.class);
logVisitIntent.putExtra(LogCacheActivity.EXTRAS_ID, cacheId);
logVisitIntent.putExtra(LogCacheActivity.EXTRAS_GEOCODE, geocode);
- ((Activity) fromActivity).startActivity(logVisitIntent);
+ fromActivity.startActivity(logVisitIntent);
}
public void logOffline(final Activity fromActivity, final LogType logType) {
@@ -469,12 +471,12 @@ public class Geocache implements ICache, IWaypoint {
if (logType == LogType.UNKNOWN) {
return;
}
- final boolean status = cgData.saveLogOffline(geocode, date.getTime(), logType, log);
+ final boolean status = DataStore.saveLogOffline(geocode, date.getTime(), logType, log);
final Resources res = fromActivity.getResources();
if (status) {
ActivityMixin.showToast(fromActivity, res.getString(R.string.info_log_saved));
- cgData.saveVisitDate(geocode);
+ DataStore.saveVisitDate(geocode);
logOffline = Boolean.TRUE;
notifyChange();
@@ -484,7 +486,7 @@ public class Geocache implements ICache, IWaypoint {
}
public void clearOfflineLog() {
- cgData.clearLogOffline(geocode);
+ DataStore.clearLogOffline(geocode);
notifyChange();
}
@@ -568,7 +570,7 @@ public class Geocache implements ICache, IWaypoint {
return getConnector().supportsOwnCoordinates();
}
- public ILoggingManager getLoggingManager(Activity activity) {
+ public ILoggingManager getLoggingManager(final LogCacheActivity activity) {
return getConnector().getLoggingManager(activity, this);
}
@@ -602,21 +604,21 @@ public class Geocache implements ICache, IWaypoint {
@Override
public boolean isArchived() {
- return (archived != null && archived.booleanValue());
+ return BooleanUtils.isTrue(archived);
}
@Override
public boolean isDisabled() {
- return (disabled != null && disabled.booleanValue());
+ return BooleanUtils.isTrue(disabled);
}
@Override
public boolean isPremiumMembersOnly() {
- return (premiumMembersOnly != null && premiumMembersOnly.booleanValue());
+ return BooleanUtils.isTrue(premiumMembersOnly);
}
public void setPremiumMembersOnly(boolean members) {
- this.premiumMembersOnly = Boolean.valueOf(members);
+ this.premiumMembersOnly = members;
}
@Override
@@ -664,7 +666,7 @@ public class Geocache implements ICache, IWaypoint {
*/
private void initializeCacheTexts() {
if (description == null || shortdesc == null || hint == null || location == null) {
- final Geocache partial = cgData.loadCacheTexts(this.getGeocode());
+ final Geocache partial = DataStore.loadCacheTexts(this.getGeocode());
if (description == null) {
setDescription(partial.getDescription());
}
@@ -767,16 +769,16 @@ public class Geocache implements ICache, IWaypoint {
@Override
public boolean isFound() {
- return (found != null && found.booleanValue());
+ return BooleanUtils.isTrue(found);
}
@Override
public boolean isFavorite() {
- return (favorite != null && favorite.booleanValue());
+ return BooleanUtils.isTrue(favorite);
}
public void setFavorite(boolean favorite) {
- this.favorite = Boolean.valueOf(favorite);
+ this.favorite = favorite;
}
@Override
@@ -990,11 +992,11 @@ public class Geocache implements ICache, IWaypoint {
@Override
public boolean isOnWatchlist() {
- return (onWatchlist != null && onWatchlist.booleanValue());
+ return BooleanUtils.isTrue(onWatchlist);
}
public void setOnWatchlist(boolean onWatchlist) {
- this.onWatchlist = Boolean.valueOf(onWatchlist);
+ this.onWatchlist = onWatchlist;
}
/**
@@ -1028,7 +1030,7 @@ public class Geocache implements ICache, IWaypoint {
}
}
}
- return saveToDatabase && cgData.saveWaypoints(this);
+ return saveToDatabase && DataStore.saveWaypoints(this);
}
/**
@@ -1063,11 +1065,11 @@ public class Geocache implements ICache, IWaypoint {
}
public boolean isLogOffline() {
- return (logOffline != null && logOffline.booleanValue());
+ return BooleanUtils.isTrue(logOffline);
}
public void setLogOffline(boolean logOffline) {
- this.logOffline = Boolean.valueOf(logOffline);
+ this.logOffline = logOffline;
}
public boolean isStatusChecked() {
@@ -1140,15 +1142,15 @@ public class Geocache implements ICache, IWaypoint {
}
public void setDisabled(boolean disabled) {
- this.disabled = Boolean.valueOf(disabled);
+ this.disabled = disabled;
}
public void setArchived(boolean archived) {
- this.archived = Boolean.valueOf(archived);
+ this.archived = archived;
}
public void setFound(boolean found) {
- this.found = Boolean.valueOf(found);
+ this.found = found;
}
public void setAttributes(List<String> attributes) {
@@ -1244,7 +1246,7 @@ public class Geocache implements ICache, IWaypoint {
// when waypoint was edited, finalDefined may have changed
resetFinalDefined();
}
- return saveToDatabase && cgData.saveWaypoint(waypoint.getId(), geocode, waypoint);
+ return saveToDatabase && DataStore.saveWaypoint(waypoint.getId(), geocode, waypoint);
}
public boolean hasWaypoints() {
@@ -1295,9 +1297,9 @@ public class Geocache implements ICache, IWaypoint {
final int index = getWaypointIndex(original);
final Waypoint copy = new Waypoint(original);
copy.setUserDefined();
- copy.setName(cgeoapplication.getInstance().getString(R.string.waypoint_copy_of) + " " + copy.getName());
+ copy.setName(CgeoApplication.getInstance().getString(R.string.waypoint_copy_of) + " " + copy.getName());
waypoints.add(index + 1, copy);
- return cgData.saveWaypoint(-1, geocode, copy);
+ return DataStore.saveWaypoint(-1, geocode, copy);
}
/**
@@ -1317,8 +1319,8 @@ public class Geocache implements ICache, IWaypoint {
if (waypoint.isUserDefined()) {
final int index = getWaypointIndex(waypoint);
waypoints.remove(index);
- cgData.deleteWaypoint(waypoint.getId());
- cgData.removeCache(geocode, EnumSet.of(RemoveFlag.REMOVE_CACHE));
+ DataStore.deleteWaypoint(waypoint.getId());
+ DataStore.removeCache(geocode, EnumSet.of(RemoveFlag.REMOVE_CACHE));
// Check status if Final is defined
if (waypoint.isFinalWithCoords()) {
resetFinalDefined();
@@ -1337,8 +1339,8 @@ public class Geocache implements ICache, IWaypoint {
public void deleteWaypointForce(Waypoint waypoint) {
final int index = getWaypointIndex(waypoint);
waypoints.remove(index);
- cgData.deleteWaypoint(waypoint.getId());
- cgData.removeCache(geocode, EnumSet.of(RemoveFlag.REMOVE_CACHE));
+ DataStore.deleteWaypoint(waypoint.getId());
+ DataStore.removeCache(geocode, EnumSet.of(RemoveFlag.REMOVE_CACHE));
resetFinalDefined();
}
@@ -1406,7 +1408,7 @@ public class Geocache implements ICache, IWaypoint {
if (point.getLatitudeE6() != 0 && point.getLongitudeE6() != 0 &&
((point.getLatitudeE6() % 1000) != 0 || (point.getLongitudeE6() % 1000) != 0) &&
!hasIdenticalWaypoint(point)) {
- final String name = cgeoapplication.getInstance().getString(R.string.cache_personal_note) + " " + count;
+ final String name = CgeoApplication.getInstance().getString(R.string.cache_personal_note) + " " + count;
final String potentialWaypointType = note.substring(Math.max(0, matcher.start() - 15));
final Waypoint waypoint = new Waypoint(name, parseWaypointType(potentialWaypointType), false);
waypoint.setCoords(point);
@@ -1511,8 +1513,8 @@ public class Geocache implements ICache, IWaypoint {
public void drop(Handler handler) {
try {
- cgData.markDropped(Collections.singletonList(this));
- cgData.removeCache(getGeocode(), EnumSet.of(RemoveFlag.REMOVE_CACHE));
+ DataStore.markDropped(Collections.singletonList(this));
+ DataStore.removeCache(getGeocode(), EnumSet.of(RemoveFlag.REMOVE_CACHE));
handler.sendMessage(Message.obtain());
} catch (final Exception e) {
@@ -1563,7 +1565,7 @@ public class Geocache implements ICache, IWaypoint {
}
public void refresh(int newListId, CancellableHandler handler) {
- cgData.removeCache(geocode, EnumSet.of(RemoveFlag.REMOVE_CACHE));
+ DataStore.removeCache(geocode, EnumSet.of(RemoveFlag.REMOVE_CACHE));
storeCache(null, geocode, newListId, true, handler);
}
@@ -1639,7 +1641,7 @@ public class Geocache implements ICache, IWaypoint {
}
cache.setListId(listId);
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
if (CancellableHandler.isCancelled(handler)) {
return;
@@ -1661,9 +1663,9 @@ public class Geocache implements ICache, IWaypoint {
return null;
}
- if (!forceReload && listId == StoredList.TEMPORARY_LIST_ID && (cgData.isOffline(geocode, guid) || cgData.isThere(geocode, guid, true, true))) {
+ if (!forceReload && listId == StoredList.TEMPORARY_LIST_ID && (DataStore.isOffline(geocode, guid) || DataStore.isThere(geocode, guid, true, true))) {
final SearchResult search = new SearchResult();
- final String realGeocode = StringUtils.isNotBlank(geocode) ? geocode : cgData.getGeocodeForGuid(guid);
+ final String realGeocode = StringUtils.isNotBlank(geocode) ? geocode : DataStore.getGeocodeForGuid(guid);
search.addGeocode(realGeocode);
return search;
}
@@ -1708,7 +1710,7 @@ public class Geocache implements ICache, IWaypoint {
}
}
// 12 o'clock
- final String hourLocalized = cgeoapplication.getInstance().getString(R.string.cache_time_full_hours);
+ final String hourLocalized = CgeoApplication.getInstance().getString(R.string.cache_time_full_hours);
if (StringUtils.isNotBlank(hourLocalized)) {
final Pattern fullHours = Pattern.compile("\\b(\\d{1,2})\\s+" + Pattern.quote(hourLocalized), Pattern.CASE_INSENSITIVE);
final MatcherWrapper matcherHours = new MatcherWrapper(fullHours, getDescription());
@@ -1735,7 +1737,7 @@ public class Geocache implements ICache, IWaypoint {
* @return
*/
public boolean hasAttribute(CacheAttribute attribute, boolean yes) {
- Geocache fullCache = cgData.loadCache(getGeocode(), EnumSet.of(LoadFlag.LOAD_ATTRIBUTES));
+ Geocache fullCache = DataStore.loadCache(getGeocode(), EnumSet.of(LoadFlag.LOAD_ATTRIBUTES));
if (fullCache == null) {
fullCache = this;
}
@@ -1746,6 +1748,13 @@ public class Geocache implements ICache, IWaypoint {
return StaticMapsProvider.hasStaticMap(this);
}
+ public static final Predicate<Geocache> hasStaticMap = new Predicate<Geocache>() {
+ @Override
+ public boolean evaluate(final Geocache cache) {
+ return cache.hasStaticMap();
+ }
+ };
+
public List<Image> getImages() {
final List<Image> result = new ArrayList<Image>();
result.addAll(getSpoilers());
diff --git a/main/src/cgeo/geocaching/GpxFileListActivity.java b/main/src/cgeo/geocaching/GpxFileListActivity.java
index 8b10d5b..dae52c4 100644
--- a/main/src/cgeo/geocaching/GpxFileListActivity.java
+++ b/main/src/cgeo/geocaching/GpxFileListActivity.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
import cgeo.geocaching.files.AbstractFileListActivity;
import cgeo.geocaching.files.GPXImporter;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.ui.GPXListAdapter;
diff --git a/main/src/cgeo/geocaching/ImageSelectActivity.java b/main/src/cgeo/geocaching/ImageSelectActivity.java
index e24c34a..790741f 100644
--- a/main/src/cgeo/geocaching/ImageSelectActivity.java
+++ b/main/src/cgeo/geocaching/ImageSelectActivity.java
@@ -9,6 +9,8 @@ import cgeo.geocaching.utils.ImageUtils;
import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import android.content.Intent;
import android.database.Cursor;
@@ -263,7 +265,8 @@ public class ImageSelectActivity extends AbstractActivity {
* @param filePath
* @return the scaled image path, or <tt>null</tt> if the image cannot be decoded
*/
- private String writeScaledImage(final String filePath) {
+ @Nullable
+ private String writeScaledImage(@NonNull final String filePath) {
scaleChoiceIndex = scaleView.getSelectedItemPosition();
final int maxXY = getResources().getIntArray(R.array.log_image_scale_values)[scaleChoiceIndex];
return ImageUtils.readScaleAndWriteImage(filePath, maxXY);
diff --git a/main/src/cgeo/geocaching/ImagesActivity.java b/main/src/cgeo/geocaching/ImagesActivity.java
index 0b80d53..29bc8c7 100644
--- a/main/src/cgeo/geocaching/ImagesActivity.java
+++ b/main/src/cgeo/geocaching/ImagesActivity.java
@@ -5,7 +5,7 @@ import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.ui.ImagesList;
import cgeo.geocaching.ui.ImagesList.ImageType;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import android.content.Context;
import android.content.Intent;
@@ -58,7 +58,7 @@ public class ImagesActivity extends AbstractActivity {
return;
}
- offline = cgData.isOffline(geocode, null) && (imgType == ImageType.SpoilerImages
+ offline = DataStore.isOffline(geocode, null) && (imgType == ImageType.SpoilerImages
|| Settings.isStoreLogImages());
}
diff --git a/main/src/cgeo/geocaching/LogCacheActivity.java b/main/src/cgeo/geocaching/LogCacheActivity.java
index 78ec82d..9d8d053 100644
--- a/main/src/cgeo/geocaching/LogCacheActivity.java
+++ b/main/src/cgeo/geocaching/LogCacheActivity.java
@@ -19,7 +19,7 @@ import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.LogTemplateProvider;
import cgeo.geocaching.utils.LogTemplateProvider.LogContext;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
@@ -47,7 +47,6 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
-import java.util.Locale;
public class LogCacheActivity extends AbstractLoggingActivity implements DateDialog.DateDialogParent {
static final String EXTRAS_GEOCODE = "geocode";
@@ -80,7 +79,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
private ILoggingManager loggingManager;
// Data to be saved while reconfiguring
- private double rating;
+ private float rating;
private LogType typeSelected;
private Calendar date;
private String imageCaption;
@@ -215,13 +214,13 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
if (!postButton.isEnabled()) {
return res.getString(R.string.log_post_not_possible);
}
- if (!Settings.isGCvoteLogin() || !cache.supportsGCVote()) {
+ if (!GCVote.isVotingPossible(cache)) {
return res.getString(R.string.log_post);
}
- if (rating == 0) {
- return res.getString(R.string.log_post_no_rate);
+ if (GCVote.isValidRating(rating)) {
+ return res.getString(R.string.log_post_rate) + " " + GCVote.getRatingText(rating) + "*";
}
- return res.getString(R.string.log_post_rate) + " " + ratingTextValue(rating) + "*";
+ return res.getString(R.string.log_post_no_rate);
}
@Override
@@ -236,13 +235,13 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
}
if ((StringUtils.isBlank(cacheid)) && StringUtils.isNotBlank(geocode)) {
- cacheid = cgData.getCacheidForGeocode(geocode);
+ cacheid = DataStore.getCacheidForGeocode(geocode);
}
if (StringUtils.isBlank(geocode) && StringUtils.isNotBlank(cacheid)) {
- geocode = cgData.getGeocodeForGuid(cacheid);
+ geocode = DataStore.getGeocodeForGuid(cacheid);
}
- cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
possibleLogTypes = cache.getPossibleLogTypes();
if (StringUtils.isNotBlank(cache.getName())) {
@@ -262,7 +261,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
// Restore previous state
if (savedInstanceState != null) {
- rating = savedInstanceState.getDouble(SAVED_STATE_RATING);
+ rating = savedInstanceState.getFloat(SAVED_STATE_RATING);
typeSelected = LogType.getById(savedInstanceState.getInt(SAVED_STATE_TYPE));
date.setTimeInMillis(savedInstanceState.getLong(SAVED_STATE_DATE));
imageCaption = savedInstanceState.getString(SAVED_STATE_IMAGE_CAPTION);
@@ -270,7 +269,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
imageUri = Uri.parse(savedInstanceState.getString(SAVED_STATE_IMAGE_URI));
} else {
// If log had been previously saved, load it now, otherwise initialize signature as needed
- final LogEntry log = cgData.loadLogOffline(geocode);
+ final LogEntry log = DataStore.loadLogOffline(geocode);
if (log != null) {
typeSelected = log.type;
date.setTime(new Date(log.date));
@@ -342,7 +341,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
private void setDefaultValues() {
date = Calendar.getInstance();
- rating = 0.0;
+ rating = GCVote.NO_RATING;
if (cache.isEventCache()) {
final Date eventDate = cache.getHiddenDate();
boolean expired = DateUtils.daysSince(eventDate.getTime()) >= 0;
@@ -418,8 +417,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- final boolean voteAvailable = Settings.isGCvoteLogin() && StringUtils.isNotBlank(cache.getGuid()) && cache.supportsGCVote();
- menu.findItem(SUBMENU_VOTE).setVisible(voteAvailable);
+ menu.findItem(SUBMENU_VOTE).setVisible(GCVote.isVotingPossible(cache));
return true;
}
@@ -432,9 +430,9 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
final int id = item.getItemId();
if (id >= 10 && id <= 19) {
- rating = (id - 9) / 2.0;
- if (rating < 1) {
- rating = 0;
+ rating = (id - 9) / 2.0f;
+ if (!GCVote.isValidRating(rating)) {
+ rating = GCVote.NO_RATING;
}
updatePostButtonText();
return true;
@@ -443,10 +441,6 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
return false;
}
- private static String ratingTextValue(final double rating) {
- return String.format(Locale.getDefault(), "%.1f", rating);
- }
-
@Override
protected void onSaveInstanceState(final Bundle outState) {
super.onSaveInstanceState(outState);
@@ -533,7 +527,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
final LogResult logResult = loggingManager.postLog(cache, typeSelected, date, log, logPwd, trackables);
if (logResult.getPostLogResult() == StatusCode.NO_ERROR) {
- final LogEntry logNow = new LogEntry(date, typeSelected, log);
+ final LogEntry logNow = new LogEntry(date.getTimeInMillis(), typeSelected, log);
cache.getLogs().add(0, logNow);
@@ -542,7 +536,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
cache.setVisitedDate(new Date().getTime());
}
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
cache.clearOfflineLog();
if (typeSelected == LogType.FOUND_IT) {
@@ -550,7 +544,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
Twitter.postTweetCache(geocode);
}
}
- if (rating > 0) {
+ if (GCVote.isValidRating(rating)) {
GCVote.setRating(cache, rating);
}
@@ -559,14 +553,14 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia
final String uploadedImageUrl = imageResult.getImageUri();
if (StringUtils.isNotEmpty(uploadedImageUrl)) {
logNow.addLogImage(new Image(uploadedImageUrl, imageCaption, imageDescription));
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return imageResult.getPostResult();
}
}
return logResult.getPostLogResult();
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Log.e("VisitCacheActivity.Poster.doInBackgroundInternal", e);
}
diff --git a/main/src/cgeo/geocaching/LogEntry.java b/main/src/cgeo/geocaching/LogEntry.java
index 0121424..b922398 100644
--- a/main/src/cgeo/geocaching/LogEntry.java
+++ b/main/src/cgeo/geocaching/LogEntry.java
@@ -5,11 +5,10 @@ import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.DateUtils;
import cgeo.geocaching.utils.MatcherWrapper;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
-import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
@@ -30,10 +29,6 @@ public final class LogEntry {
public String cacheName = ""; // used for trackables
public String cacheGuid = ""; // used for trackables
- public LogEntry(final Calendar date, final LogType type, final String text) {
- this(Settings.getUsername(), date.getTimeInMillis(), type, text);
- }
-
public LogEntry(final long dateInMilliSeconds, final LogType type, final String text) {
this(Settings.getUsername(), dateInMilliSeconds, type, text);
}
@@ -94,7 +89,7 @@ public final class LogEntry {
}
}
if (titles.isEmpty()) {
- titles.add(cgeoapplication.getInstance().getString(R.string.cache_log_image_default_title));
+ titles.add(CgeoApplication.getInstance().getString(R.string.cache_log_image_default_title));
}
return StringUtils.join(titles, ", ");
}
diff --git a/main/src/cgeo/geocaching/LogTrackableActivity.java b/main/src/cgeo/geocaching/LogTrackableActivity.java
index a45d584..2761658 100644
--- a/main/src/cgeo/geocaching/LogTrackableActivity.java
+++ b/main/src/cgeo/geocaching/LogTrackableActivity.java
@@ -16,7 +16,7 @@ import cgeo.geocaching.ui.dialog.DateDialog;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.LogTemplateProvider.LogContext;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.app.Dialog;
@@ -130,7 +130,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat
}
}
- trackable = cgData.loadTrackable(geocode);
+ trackable = DataStore.loadTrackable(geocode);
if (StringUtils.isNotBlank(trackable.getName())) {
setTitle(res.getString(R.string.trackable_touch) + ": " + trackable.getName());
diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java
index 0fd6759..8a79786 100644
--- a/main/src/cgeo/geocaching/MainActivity.java
+++ b/main/src/cgeo/geocaching/MainActivity.java
@@ -10,6 +10,7 @@ import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Units;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.maps.CGeoMap;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.settings.SettingsActivity;
@@ -24,7 +25,7 @@ import cgeo.geocaching.utils.Version;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.app.AlertDialog;
@@ -47,6 +48,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -141,7 +143,7 @@ public class MainActivity extends AbstractActivity {
navLocation.setText(StringUtils.join(addressParts, ", "));
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
// nothing
}
@@ -283,7 +285,7 @@ public class MainActivity extends AbstractActivity {
startActivity(new Intent(this, SettingsActivity.class));
return true;
case R.id.menu_history:
- cgeocaches.startActivityHistory(this);
+ CacheListActivity.startActivityHistory(this);
return true;
case R.id.menu_scan:
startScannerApplication();
@@ -366,7 +368,7 @@ public class MainActivity extends AbstractActivity {
@Override
public void run(final Integer selectedListId) {
Settings.saveLastList(selectedListId);
- cgeocaches.startActivityOffline(MainActivity.this);
+ CacheListActivity.startActivityOffline(MainActivity.this);
}
});
return true;
@@ -468,7 +470,7 @@ public class MainActivity extends AbstractActivity {
}
private void checkRestore() {
- if (!cgData.isNewlyCreatedDatebase() || null == DatabaseBackupUtils.getRestoreFile()) {
+ if (!DataStore.isNewlyCreatedDatebase() || null == DatabaseBackupUtils.getRestoreFile()) {
return;
}
new AlertDialog.Builder(this)
@@ -479,7 +481,7 @@ public class MainActivity extends AbstractActivity {
@Override
public void onClick(final DialogInterface dialog, final int id) {
dialog.dismiss();
- cgData.resetNewlyCreatedDatabase();
+ DataStore.resetNewlyCreatedDatabase();
DatabaseBackupUtils.restoreDatabase(MainActivity.this);
}
})
@@ -487,7 +489,7 @@ public class MainActivity extends AbstractActivity {
@Override
public void onClick(final DialogInterface dialog, final int id) {
dialog.cancel();
- cgData.resetNewlyCreatedDatabase();
+ DataStore.resetNewlyCreatedDatabase();
}
})
.create()
@@ -542,7 +544,7 @@ public class MainActivity extends AbstractActivity {
navAccuracy.setText(null);
navLocation.setText(res.getString(R.string.loc_trying));
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Log.w("Failed to update location.");
}
}
@@ -567,7 +569,7 @@ public class MainActivity extends AbstractActivity {
}
nearestView.setPressed(true);
- cgeocaches.startActivityNearest(this, app.currentGeo().getCoords());
+ CacheListActivity.startActivityNearest(this, app.currentGeo().getCoords());
}
/**
@@ -576,7 +578,7 @@ public class MainActivity extends AbstractActivity {
*/
public void cgeoFindByOffline(final View v) {
findByOffline.setPressed(true);
- cgeocaches.startActivityOffline(this);
+ CacheListActivity.startActivityOffline(this);
}
/**
@@ -640,7 +642,7 @@ public class MainActivity extends AbstractActivity {
}
int checks = 0;
- while (!cgData.isInitialized()) {
+ while (!DataStore.isInitialized()) {
try {
wait(500);
checks++;
@@ -653,7 +655,7 @@ public class MainActivity extends AbstractActivity {
}
}
- countBubbleCnt = cgData.getAllCachesCount();
+ countBubbleCnt = DataStore.getAllCachesCount();
countBubbleHandler.sendEmptyMessage(0);
}
@@ -678,7 +680,7 @@ public class MainActivity extends AbstractActivity {
}
cleanupRunning = true;
- cgData.clean(more);
+ DataStore.clean(more);
cleanupRunning = false;
if (version > 0) {
@@ -721,7 +723,7 @@ public class MainActivity extends AbstractActivity {
final Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
final Geopoint coords = app.currentGeo().getCoords();
addresses = geocoder.getFromLocation(coords.getLatitude(), coords.getLongitude(), 1);
- } catch (Exception e) {
+ } catch (IOException e) {
Log.i("Failed to obtain address");
}
diff --git a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
index 741414b..ddafb51 100644
--- a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
+++ b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
@@ -214,7 +214,7 @@ public class NavigateAnyPointActivity extends AbstractActivity {
private List<Destination> getHistoryOfSearchedLocations() {
if (historyOfSearchedLocations == null) {
// Load from database
- historyOfSearchedLocations = cgData.loadHistoryOfSearchedLocations();
+ historyOfSearchedLocations = DataStore.loadHistoryOfSearchedLocations();
}
return historyOfSearchedLocations;
@@ -331,7 +331,7 @@ public class NavigateAnyPointActivity extends AbstractActivity {
menu.findItem(R.id.menu_caches_around).setVisible(visible);
menu.findItem(R.id.menu_clear_history).setEnabled(!getHistoryOfSearchedLocations().isEmpty());
- } catch (Exception e) {
+ } catch (RuntimeException e) {
// nothing
}
@@ -377,7 +377,7 @@ public class NavigateAnyPointActivity extends AbstractActivity {
getHistoryOfSearchedLocations().add(0, loc);
// Save location
- cgData.saveSearchedDestination(loc);
+ DataStore.saveSearchedDestination(loc);
// Ensure to remove the footer
historyListView.removeFooterView(getEmptyHistoryFooter());
@@ -396,7 +396,7 @@ public class NavigateAnyPointActivity extends AbstractActivity {
getHistoryOfSearchedLocations().remove(destination);
// Save
- cgData.removeSearchedDestination(destination);
+ DataStore.removeSearchedDestination(destination);
if (getHistoryOfSearchedLocations().isEmpty()) {
if (historyListView.getFooterViewsCount() == 0) {
@@ -415,7 +415,7 @@ public class NavigateAnyPointActivity extends AbstractActivity {
getHistoryOfSearchedLocations().clear();
// Save
- cgData.clearSearchedDestinations();
+ DataStore.clearSearchedDestinations();
if (historyListView.getFooterViewsCount() == 0) {
historyListView.addFooterView(getEmptyHistoryFooter());
@@ -443,7 +443,7 @@ public class NavigateAnyPointActivity extends AbstractActivity {
return;
}
- cgeocaches.startActivityCoordinates(this, coords);
+ CacheListActivity.startActivityCoordinates(this, coords);
finish();
}
@@ -454,7 +454,7 @@ public class NavigateAnyPointActivity extends AbstractActivity {
try {
latButton.setHint(geo.getCoords().format(GeopointFormatter.Format.LAT_DECMINUTE_RAW));
lonButton.setHint(geo.getCoords().format(GeopointFormatter.Format.LON_DECMINUTE_RAW));
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
Log.w("Failed to update location.");
}
}
diff --git a/main/src/cgeo/geocaching/SearchActivity.java b/main/src/cgeo/geocaching/SearchActivity.java
index 57b391f..c6c13cf 100644
--- a/main/src/cgeo/geocaching/SearchActivity.java
+++ b/main/src/cgeo/geocaching/SearchActivity.java
@@ -142,7 +142,7 @@ public class SearchActivity extends AbstractActivity {
}
if (keywordSearch) { // keyword fallback, if desired by caller
- cgeocaches.startActivityKeyword(this, query.trim());
+ CacheListActivity.startActivityKeyword(this, query.trim());
return true;
}
@@ -171,7 +171,7 @@ public class SearchActivity extends AbstractActivity {
findByGeocodeFn();
}
});
- addHistoryEntries(geocodeEdit, cgData.getRecentGeocodesForSearch());
+ addHistoryEntries(geocodeEdit, DataStore.getRecentGeocodesForSearch());
displayByGeocode.setOnClickListener(new FindByGeocodeListener());
EditUtils.setActionListener((EditText) findViewById(R.id.keyword), new Runnable() {
@@ -214,7 +214,7 @@ public class SearchActivity extends AbstractActivity {
findTrackableFn();
}
});
- addHistoryEntries(trackable, cgData.getTrackableCodes());
+ addHistoryEntries(trackable, DataStore.getTrackableCodes());
disableSuggestions(trackable);
displayTrackable.setOnClickListener(new FindTrackableListener());
}
@@ -238,7 +238,7 @@ public class SearchActivity extends AbstractActivity {
lonEdit.setHint(geo.getCoords().format(GeopointFormatter.Format.LON_DECMINUTE_RAW));
}
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
Log.w("Failed to update location.");
}
}
@@ -281,7 +281,7 @@ public class SearchActivity extends AbstractActivity {
}
} else {
try {
- cgeocaches.startActivityCoordinates(this, new Geopoint(StringUtils.trim(latText), StringUtils.trim(lonText)));
+ CacheListActivity.startActivityCoordinates(this, new Geopoint(StringUtils.trim(latText), StringUtils.trim(lonText)));
} catch (final Geopoint.ParseException e) {
showToast(res.getString(e.resource));
}
@@ -305,7 +305,7 @@ public class SearchActivity extends AbstractActivity {
return;
}
- cgeocaches.startActivityKeyword(this, StringUtils.trim(keyText));
+ CacheListActivity.startActivityKeyword(this, StringUtils.trim(keyText));
}
private class FindByAddressListener implements View.OnClickListener {
@@ -344,7 +344,7 @@ public class SearchActivity extends AbstractActivity {
return;
}
- cgeocaches.startActivityUserName(this, StringUtils.trim(usernameText));
+ CacheListActivity.startActivityUserName(this, StringUtils.trim(usernameText));
}
private void findByOwnerFn() {
@@ -359,7 +359,7 @@ public class SearchActivity extends AbstractActivity {
return;
}
- cgeocaches.startActivityOwner(this, StringUtils.trim(usernameText));
+ CacheListActivity.startActivityOwner(this, StringUtils.trim(usernameText));
}
private class FindByGeocodeListener implements View.OnClickListener {
diff --git a/main/src/cgeo/geocaching/SearchResult.java b/main/src/cgeo/geocaching/SearchResult.java
index e637d1f..0bdf6c6 100644
--- a/main/src/cgeo/geocaching/SearchResult.java
+++ b/main/src/cgeo/geocaching/SearchResult.java
@@ -8,7 +8,7 @@ import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.gcvote.GCVote;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.os.Parcel;
@@ -199,7 +199,7 @@ public class SearchResult implements Parcelable {
SearchResult result = new SearchResult(this);
result.geocodes.clear();
final ArrayList<Geocache> cachesForVote = new ArrayList<Geocache>();
- final Set<Geocache> caches = cgData.loadCaches(geocodes, LoadFlags.LOAD_CACHE_OR_DB);
+ final Set<Geocache> caches = DataStore.loadCaches(geocodes, LoadFlags.LOAD_CACHE_OR_DB);
int excluded = 0;
for (Geocache cache : caches) {
// Is there any reason to exclude the cache from the list?
@@ -220,11 +220,11 @@ public class SearchResult implements Parcelable {
}
public Geocache getFirstCacheFromResult(final EnumSet<LoadFlag> loadFlags) {
- return CollectionUtils.isNotEmpty(geocodes) ? cgData.loadCache(geocodes.iterator().next(), loadFlags) : null;
+ return CollectionUtils.isNotEmpty(geocodes) ? DataStore.loadCache(geocodes.iterator().next(), loadFlags) : null;
}
public Set<Geocache> getCachesFromSearchResult(final EnumSet<LoadFlag> loadFlags) {
- return cgData.loadCaches(geocodes, loadFlags);
+ return DataStore.loadCaches(geocodes, loadFlags);
}
/** Add the geocode to the search. No cache is loaded into the CacheCache */
@@ -243,7 +243,7 @@ public class SearchResult implements Parcelable {
/** Add the cache geocode to the search and store the cache in the CacheCache */
public boolean addAndPutInCache(final Geocache cache) {
addGeocode(cache.getGeocode());
- return cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_CACHE));
+ return DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_CACHE));
}
public boolean isEmpty() {
@@ -252,7 +252,7 @@ public class SearchResult implements Parcelable {
public boolean hasUnsavedCaches() {
for (final String geocode : getGeocodes()) {
- if (!cgData.isOffline(geocode, null)) {
+ if (!DataStore.isOffline(geocode, null)) {
return true;
}
}
diff --git a/main/src/cgeo/geocaching/StaticMapsActivity.java b/main/src/cgeo/geocaching/StaticMapsActivity.java
index 2268df9..7811da5 100644
--- a/main/src/cgeo/geocaching/StaticMapsActivity.java
+++ b/main/src/cgeo/geocaching/StaticMapsActivity.java
@@ -9,7 +9,7 @@ import com.googlecode.androidannotations.annotations.Extra;
import com.googlecode.androidannotations.annotations.OptionsItem;
import com.googlecode.androidannotations.annotations.OptionsMenu;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import android.app.ProgressDialog;
import android.content.Context;
@@ -117,7 +117,7 @@ public class StaticMapsActivity extends AbstractActivity {
for (int level = 1; level <= StaticMapsProvider.MAPS_LEVEL_MAX; level++) {
try {
if (waypointId != null) {
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
final Bitmap image = StaticMapsProvider.getWaypointMap(geocode, cache.getWaypointById(waypointId), level);
if (image != null) {
maps.add(image);
@@ -151,7 +151,7 @@ public class StaticMapsActivity extends AbstractActivity {
}
private boolean downloadStaticMaps() {
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
if (waypointId == null) {
showToast(res.getString(R.string.info_storing_static_maps));
StaticMapsProvider.storeCacheStaticMap(cache, true);
diff --git a/main/src/cgeo/geocaching/StaticMapsProvider.java b/main/src/cgeo/geocaching/StaticMapsProvider.java
index eb59bcb..d5cbb13 100644
--- a/main/src/cgeo/geocaching/StaticMapsProvider.java
+++ b/main/src/cgeo/geocaching/StaticMapsProvider.java
@@ -11,16 +11,12 @@ import cgeo.geocaching.utils.FileUtils;
import cgeo.geocaching.utils.Log;
import ch.boye.httpclientandroidlib.HttpResponse;
-
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
-import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Point;
-import android.util.DisplayMetrics;
-import android.view.Display;
-import android.view.WindowManager;
import java.io.File;
import java.util.concurrent.TimeUnit;
@@ -41,6 +37,11 @@ public final class StaticMapsProvider {
/** ThreadPool restricting this to 1 Thread. **/
private static final BlockingThreadPool POOL = new BlockingThreadPool(1, Thread.MIN_PRIORITY);
+ /**
+ * max size in free API version: https://developers.google.com/maps/documentation/staticmaps/#Imagesizes
+ */
+ private static final int GOOGLE_MAPS_MAX_SIZE = 640;
+
private StaticMapsProvider() {
// utility class
}
@@ -61,7 +62,7 @@ public final class StaticMapsProvider {
final Parameters params = new Parameters(
"center", latlonMap,
"zoom", String.valueOf(zoom),
- "size", String.valueOf(width) + 'x' + String.valueOf(height),
+ "size", String.valueOf(limitSize(width)) + 'x' + String.valueOf(limitSize(height)),
"maptype", mapType,
"markers", "icon:" + markerUrl + '|' + shadow + latlonMap,
"sensor", "false");
@@ -88,6 +89,10 @@ public final class StaticMapsProvider {
}
}
+ private static int limitSize(final int imageSize) {
+ return Math.min(imageSize, GOOGLE_MAPS_MAX_SIZE);
+ }
+
public static void downloadMaps(final Geocache cache) {
if ((!Settings.isStoreOfflineMaps() && !Settings.isStoreOfflineWpMaps()) || StringUtils.isBlank(cache.getGeocode())) {
return;
@@ -172,13 +177,10 @@ public final class StaticMapsProvider {
public static void storeCachePreviewMap(final Geocache cache) {
final String latlonMap = cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA);
- final Display display = ((WindowManager) cgeoapplication.getInstance().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
- DisplayMetrics metrics = new DisplayMetrics();
- display.getMetrics(metrics);
- final int width = metrics.widthPixels;
- final int height = (int) (110 * metrics.density);
+ final Point displaySize = Compatibility.getDisplaySize();
+ final int minSize = Math.min(displaySize.x, displaySize.y);
final String markerUrl = MARKERS_URL + "my_location_mdpi.png";
- downloadMap(cache.getGeocode(), 15, ROADMAP, markerUrl, PREFIX_PREVIEW, "shadow:false|", latlonMap, width, height, null);
+ downloadMap(cache.getGeocode(), 15, ROADMAP, markerUrl, PREFIX_PREVIEW, "shadow:false|", latlonMap, minSize, minSize, null);
}
private static int guessMaxDisplaySide() {
@@ -243,11 +245,8 @@ public final class StaticMapsProvider {
* @param cache
* @return <code>true</code> if at least one map file exists; <code>false</code> otherwise
*/
- public static boolean hasStaticMap(final Geocache cache) {
- if (cache == null) {
- return false;
- }
- final String geocode = cache.getGeocode();
+ public static boolean hasStaticMap(@NonNull final Geocache cache) {
+ final String geocode = cache.getGeocode();
if (StringUtils.isBlank(geocode)) {
return false;
}
diff --git a/main/src/cgeo/geocaching/StatusFragment.java b/main/src/cgeo/geocaching/StatusFragment.java
index e0e714a..4f70f0e 100644
--- a/main/src/cgeo/geocaching/StatusFragment.java
+++ b/main/src/cgeo/geocaching/StatusFragment.java
@@ -38,12 +38,12 @@ public class StatusFragment extends Fragment {
@Override
public void onResume() {
super.onResume();
- cgeoapplication.getInstance().getStatusUpdater().addObserver(statusHandler);
+ CgeoApplication.getInstance().getStatusUpdater().addObserver(statusHandler);
}
@Override
public void onPause() {
- cgeoapplication.getInstance().getStatusUpdater().deleteObserver(statusHandler);
+ CgeoApplication.getInstance().getStatusUpdater().deleteObserver(statusHandler);
super.onPause();
}
diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java
index a257b8e..a713093 100644
--- a/main/src/cgeo/geocaching/TrackableActivity.java
+++ b/main/src/cgeo/geocaching/TrackableActivity.java
@@ -234,7 +234,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
@Override
public void run() {
if (StringUtils.isNotEmpty(geocode)) {
- trackable = cgData.loadTrackable(geocode);
+ trackable = DataStore.loadTrackable(geocode);
if (trackable == null || trackable.isLoggable()) {
// iterate over the connectors as some codes may be handled by multiple connectors
diff --git a/main/src/cgeo/geocaching/UsefulAppsActivity.java b/main/src/cgeo/geocaching/UsefulAppsActivity.java
index 8093bba..41ea96e 100644
--- a/main/src/cgeo/geocaching/UsefulAppsActivity.java
+++ b/main/src/cgeo/geocaching/UsefulAppsActivity.java
@@ -50,7 +50,7 @@ public class UsefulAppsActivity extends AbstractActivity {
marketIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
activity.startActivity(marketIntent);
- } catch (Exception e) {
+ } catch (RuntimeException e) {
// market not available in standard emulator
}
}
diff --git a/main/src/cgeo/geocaching/Waypoint.java b/main/src/cgeo/geocaching/Waypoint.java
index e39d26a..b204bdd 100644
--- a/main/src/cgeo/geocaching/Waypoint.java
+++ b/main/src/cgeo/geocaching/Waypoint.java
@@ -14,6 +14,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+/**
+ * Note: this class has a natural ordering that is inconsistent with equals.
+ */
public class Waypoint implements IWaypoint, Comparable<Waypoint> {
public static final String PREFIX_OWN = "OWN";
@@ -35,7 +38,7 @@ public class Waypoint implements IWaypoint, Comparable<Waypoint> {
public static void initializeScale() {
// Calculate visited inset based on screen density
- VISITED_INSET = (int) (6.6f * cgeoapplication.getInstance().getResources().getDisplayMetrics().density + 0.5f);
+ VISITED_INSET = (int) (6.6f * CgeoApplication.getInstance().getResources().getDisplayMetrics().density + 0.5f);
}
/**
diff --git a/main/src/cgeo/geocaching/WaypointPopup.java b/main/src/cgeo/geocaching/WaypointPopup.java
index a1ab36a..c33bbb5 100644
--- a/main/src/cgeo/geocaching/WaypointPopup.java
+++ b/main/src/cgeo/geocaching/WaypointPopup.java
@@ -56,7 +56,7 @@ public class WaypointPopup extends AbstractPopupActivity {
@Override
protected void init() {
super.init();
- waypoint = cgData.loadWaypoint(waypointId);
+ waypoint = DataStore.loadWaypoint(waypointId);
try {
if (StringUtils.isNotBlank(waypoint.getName())) {
setTitle(waypoint.getName());
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java
index 28c0cdd..1abc704 100644
--- a/main/src/cgeo/geocaching/activity/AbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.activity;
import butterknife.Views;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.compatibility.Compatibility;
import cgeo.geocaching.network.Cookies;
import cgeo.geocaching.settings.Settings;
@@ -18,7 +18,7 @@ import android.widget.EditText;
public abstract class AbstractActivity extends FragmentActivity implements IAbstractActivity {
- protected cgeoapplication app = null;
+ protected CgeoApplication app = null;
protected Resources res = null;
private boolean keepScreenOn = false;
@@ -101,7 +101,7 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst
private void initializeCommonFields() {
// initialize commonly used members
res = this.getResources();
- app = (cgeoapplication) this.getApplication();
+ app = (CgeoApplication) this.getApplication();
// only needed in some activities, but implemented in super class nonetheless
Cookies.restoreCookieStore(Settings.getCookieStore());
diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
index 47c747f..d2bc0b4 100644
--- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
@@ -1,7 +1,6 @@
package cgeo.geocaching.activity;
-import cgeo.geocaching.cgeoapplication;
-import cgeo.geocaching.compatibility.Compatibility;
+import cgeo.geocaching.CgeoApplication;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
@@ -14,7 +13,7 @@ public abstract class AbstractListActivity extends FragmentListActivity implemen
private boolean keepScreenOn = false;
- protected cgeoapplication app = null;
+ protected CgeoApplication app = null;
protected Resources res = null;
protected AbstractListActivity() {
@@ -66,7 +65,7 @@ public abstract class AbstractListActivity extends FragmentListActivity implemen
private void initializeCommonFields() {
// init
res = this.getResources();
- app = (cgeoapplication) this.getApplication();
+ app = (CgeoApplication) this.getApplication();
ActivityMixin.keepScreenOn(this, keepScreenOn);
}
@@ -77,7 +76,7 @@ public abstract class AbstractListActivity extends FragmentListActivity implemen
@Override
public void invalidateOptionsMenuCompatible() {
- Compatibility.invalidateOptionsMenu(this);
+ ActivityMixin.invalidateOptionsMenu(this);
}
public void onCreate(Bundle savedInstanceState, int resourceLayoutID) {
diff --git a/main/src/cgeo/geocaching/apps/AbstractApp.java b/main/src/cgeo/geocaching/apps/AbstractApp.java
index 7b6b3d9..d861542 100644
--- a/main/src/cgeo/geocaching/apps/AbstractApp.java
+++ b/main/src/cgeo/geocaching/apps/AbstractApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps;
import cgeo.geocaching.Geocache;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.utils.ProcessUtils;
import org.apache.commons.lang3.StringUtils;
@@ -53,7 +53,7 @@ public abstract class AbstractApp implements App {
}
protected static String getString(int ressourceId) {
- return cgeoapplication.getInstance().getString(ressourceId);
+ return CgeoApplication.getInstance().getString(ressourceId);
}
@Override
diff --git a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
index 53620e4..2db8918 100644
--- a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
+++ b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
@@ -3,7 +3,7 @@ package cgeo.geocaching.apps;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.WaypointType;
@@ -43,7 +43,7 @@ public abstract class AbstractLocusApp extends AbstractApp {
@Override
public boolean isInstalled() {
- return LocusUtils.isLocusAvailable(cgeoapplication.getInstance());
+ return LocusUtils.isLocusAvailable(CgeoApplication.getInstance());
}
/**
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
index a3ea57e..7542e24 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
@@ -1,8 +1,11 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.Geocache;
+import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractApp;
+import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
@@ -21,11 +24,22 @@ abstract class AbstractPointNavigationApp extends AbstractApp implements CacheNa
@Override
public void navigate(Activity activity, Geocache cache) {
- navigate(activity, cache.getCoords());
+ final Geopoint coords = cache.getCoords();
+ if (coords != null) {
+ navigate(activity, coords);
+ } else {
+ ActivityMixin.showToast(activity, activity.getResources().getString(R.string.err_nav_no_coordinates));
+ }
}
@Override
public void navigate(Activity activity, Waypoint waypoint) {
+ final Geopoint coords = waypoint.getCoords();
+ if (coords != null) {
+ navigate(activity, coords);
+ } else {
+ ActivityMixin.showToast(activity, activity.getResources().getString(R.string.err_nav_no_coordinates));
+ }
navigate(activity, waypoint.getCoords());
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
index d898d7e..d5c9435 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
@@ -6,7 +6,7 @@ import cgeo.geocaching.R;
import cgeo.geocaching.StaticMapsActivity;
import cgeo.geocaching.StaticMapsProvider;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgData;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractApp;
@@ -34,7 +34,7 @@ abstract class AbstractStaticMapsApp extends AbstractApp implements CacheNavigat
return false;
}
String geocode = waypoint.getGeocode();
- if (StringUtils.isNotEmpty(geocode) && cgData.isOffline(geocode, null)) {
+ if (StringUtils.isNotEmpty(geocode) && DataStore.isOffline(geocode, null)) {
return StaticMapsProvider.hasStaticMapForWaypoint(geocode, waypoint);
}
return false;
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
index 03fae9e..4cbfa00 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
@@ -27,7 +27,7 @@ class GoogleMapsApp extends AbstractPointNavigationApp {
activity.startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("geo:" + point.getLatitude() + "," + point.getLongitude())));
return;
- } catch (Exception e) {
+ } catch (RuntimeException e) {
// nothing
}
Log.i("GoogleMapsApp.navigate: No maps application available.");
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java
index a84b7e8..a5b9a94 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.IGeoData;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.utils.Log;
@@ -25,7 +25,7 @@ public class GoogleMapsDirectionApp extends AbstractPointNavigationApp {
@Override
public void navigate(Activity activity, Geopoint coords) {
try {
- IGeoData geo = cgeoapplication.getInstance().currentGeo();
+ IGeoData geo = CgeoApplication.getInstance().currentGeo();
final Geopoint coordsNow = geo == null ? null : geo.getCoords();
if (coordsNow != null) {
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
index ec6b3e1..c10da58 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.apps.cache.navi;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractAppFactory;
import cgeo.geocaching.apps.App;
@@ -16,6 +16,8 @@ import cgeo.geocaching.apps.cache.navi.GoogleNavigationApp.GoogleNavigationWalki
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.settings.Settings;
+import org.eclipse.jdt.annotation.Nullable;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
@@ -273,7 +275,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
return menuItem != null;
}
- private static void navigateCache(Activity activity, Geocache cache, App app) {
+ private static void navigateCache(Activity activity, Geocache cache, @Nullable App app) {
if (app instanceof CacheNavigationApp) {
final CacheNavigationApp cacheApp = (CacheNavigationApp) app;
cacheApp.navigate(activity, cache);
@@ -286,7 +288,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
return menuItem != null;
}
- private static void navigateWaypoint(Activity activity, Waypoint waypoint, App app) {
+ private static void navigateWaypoint(Activity activity, Waypoint waypoint, @Nullable App app) {
if (app instanceof WaypointNavigationApp) {
final WaypointNavigationApp waypointApp = (WaypointNavigationApp) app;
waypointApp.navigate(activity, waypoint);
@@ -300,6 +302,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
}
}
+ @Nullable
private static App getAppFromMenuItem(MenuItem item) {
final int id = item.getItemId();
for (final NavigationAppsEnum navApp : NavigationAppsEnum.values()) {
@@ -320,7 +323,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
*/
public static void startDefaultNavigationApplication(int defaultNavigation, Activity activity, Geocache cache) {
if (cache == null || cache.getCoords() == null) {
- ActivityMixin.showToast(activity, cgeoapplication.getInstance().getString(R.string.err_location_unknown));
+ ActivityMixin.showToast(activity, CgeoApplication.getInstance().getString(R.string.err_location_unknown));
return;
}
@@ -342,7 +345,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
*/
public static void startDefaultNavigationApplication(int defaultNavigation, Activity activity, Waypoint waypoint) {
if (waypoint == null || waypoint.getCoords() == null) {
- ActivityMixin.showToast(activity, cgeoapplication.getInstance().getString(R.string.err_location_unknown));
+ ActivityMixin.showToast(activity, CgeoApplication.getInstance().getString(R.string.err_location_unknown));
return;
}
navigateWaypoint(activity, waypoint, getDefaultNavigationApplication(defaultNavigation));
@@ -356,7 +359,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
*/
public static void startDefaultNavigationApplication(int defaultNavigation, Activity activity, final Geopoint destination) {
if (destination == null) {
- ActivityMixin.showToast(activity, cgeoapplication.getInstance().getString(R.string.err_location_unknown));
+ ActivityMixin.showToast(activity, CgeoApplication.getInstance().getString(R.string.err_location_unknown));
return;
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java b/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
index e2c0828..df67e43 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps.cache.navi;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.utils.ProcessUtils;
@@ -31,7 +31,7 @@ class StreetviewApp extends AbstractPointNavigationApp {
activity.startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("google.streetview:cbll=" + point.getLatitude() + "," + point.getLongitude())));
} catch (final ActivityNotFoundException e) {
- ActivityMixin.showToast(activity, cgeoapplication.getInstance().getString(R.string.err_application_no));
+ ActivityMixin.showToast(activity, CgeoApplication.getInstance().getString(R.string.err_application_no));
}
}
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java b/main/src/cgeo/geocaching/apps/cachelist/AbstractLocusCacheListApp.java
index cd0289a..49d75d7 100644
--- a/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java
+++ b/main/src/cgeo/geocaching/apps/cachelist/AbstractLocusCacheListApp.java
@@ -1,22 +1,22 @@
package cgeo.geocaching.apps.cachelist;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.Geocache;
import cgeo.geocaching.apps.AbstractLocusApp;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import android.app.Activity;
import android.content.Intent;
import java.util.List;
-class LocusCacheListApp extends AbstractLocusApp implements CacheListApp {
+abstract class AbstractLocusCacheListApp extends AbstractLocusApp implements CacheListApp {
private boolean export;
- public LocusCacheListApp(boolean export) {
+ public AbstractLocusCacheListApp(boolean export) {
super(getString(export ? R.string.caches_map_locus_export : R.string.caches_map_locus), Intent.ACTION_VIEW);
this.export = export;
}
diff --git a/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java b/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
index b747eee..551bc9d 100644
--- a/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.apps.cachelist;
+import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.Geocache;
-import cgeo.geocaching.activity.IAbstractActivity;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractAppFactory;
import cgeo.geocaching.utils.Log;
@@ -20,8 +20,8 @@ public final class CacheListAppFactory extends AbstractAppFactory {
private static class LazyHolder {
public static final CacheListApp[] apps = {
new InternalCacheListMap(),
- new LocusCacheListApp(false),
- new LocusCacheListApp(true)
+ new LocusShowCacheListApp(),
+ new LocusExportCacheListApp()
};
}
@@ -55,13 +55,13 @@ public final class CacheListAppFactory extends AbstractAppFactory {
}
}
- public static boolean onMenuItemSelected(final MenuItem item, final List<Geocache> caches, final IAbstractActivity activity,
+ public static boolean onMenuItemSelected(final MenuItem item, final List<Geocache> caches, final Activity activity,
final SearchResult search) {
final CacheListApp app = (CacheListApp) getAppFromMenuItem(item, LazyHolder.apps);
if (app != null) {
try {
- boolean result = app.invoke(caches, (Activity) activity, search);
- activity.invalidateOptionsMenuCompatible();
+ boolean result = app.invoke(caches, activity, search);
+ ActivityMixin.invalidateOptionsMenu(activity);
return result;
} catch (Exception e) {
Log.e("CacheListAppFactory.onMenuItemSelected", e);
diff --git a/main/src/cgeo/geocaching/apps/cachelist/LocusExportCacheListApp.java b/main/src/cgeo/geocaching/apps/cachelist/LocusExportCacheListApp.java
new file mode 100644
index 0000000..ef97be0
--- /dev/null
+++ b/main/src/cgeo/geocaching/apps/cachelist/LocusExportCacheListApp.java
@@ -0,0 +1,9 @@
+package cgeo.geocaching.apps.cachelist;
+
+final class LocusExportCacheListApp extends AbstractLocusCacheListApp {
+
+ public LocusExportCacheListApp() {
+ super(true);
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/apps/cachelist/LocusShowCacheListApp.java b/main/src/cgeo/geocaching/apps/cachelist/LocusShowCacheListApp.java
new file mode 100644
index 0000000..4b018f9
--- /dev/null
+++ b/main/src/cgeo/geocaching/apps/cachelist/LocusShowCacheListApp.java
@@ -0,0 +1,9 @@
+package cgeo.geocaching.apps.cachelist;
+
+final class LocusShowCacheListApp extends AbstractLocusCacheListApp {
+
+ public LocusShowCacheListApp() {
+ super(false);
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel13.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel13.java
index f08ac22..eb2be4b 100644
--- a/main/src/cgeo/geocaching/compatibility/AndroidLevel13.java
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel13.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.compatibility;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import android.annotation.TargetApi;
import android.content.Context;
@@ -18,7 +18,7 @@ public class AndroidLevel13 implements AndroidLevel13Interface {
@Override
public Point getDisplaySize() {
Point dimensions = new Point();
- ((WindowManager) cgeoapplication.getInstance().getSystemService(Context.WINDOW_SERVICE))
+ ((WindowManager) CgeoApplication.getInstance().getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay().getSize(dimensions);
return dimensions;
}
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel13Emulation.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel13Emulation.java
index ded20cb..56c784f 100644
--- a/main/src/cgeo/geocaching/compatibility/AndroidLevel13Emulation.java
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel13Emulation.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.compatibility;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import android.content.Context;
import android.graphics.Point;
@@ -22,7 +22,7 @@ public class AndroidLevel13Emulation implements AndroidLevel13Interface {
}
private static Display getDisplay() {
- return ((WindowManager) cgeoapplication.getInstance().getSystemService(Context.WINDOW_SERVICE))
+ return ((WindowManager) CgeoApplication.getInstance().getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay();
}
}
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 28ad12b..b93cda0 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -1,13 +1,12 @@
package cgeo.geocaching.connector;
import cgeo.geocaching.Geocache;
+import cgeo.geocaching.LogCacheActivity;
import cgeo.geocaching.R;
import cgeo.geocaching.geopoint.Geopoint;
import org.apache.commons.lang3.StringUtils;
-import android.app.Activity;
-
public abstract class AbstractConnector implements IConnector {
@Override
@@ -79,7 +78,7 @@ public abstract class AbstractConnector implements IConnector {
}
@Override
- public ILoggingManager getLoggingManager(Activity activity, Geocache cache) {
+ public ILoggingManager getLoggingManager(final LogCacheActivity activity, final Geocache cache) {
return new NoLoggingManager();
}
diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java
index 0c175cd..4ab7bde 100644
--- a/main/src/cgeo/geocaching/connector/IConnector.java
+++ b/main/src/cgeo/geocaching/connector/IConnector.java
@@ -2,10 +2,9 @@ package cgeo.geocaching.connector;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
+import cgeo.geocaching.LogCacheActivity;
import cgeo.geocaching.geopoint.Geopoint;
-import android.app.Activity;
-
public interface IConnector {
/**
* get name for display (currently only used in links)
@@ -87,7 +86,7 @@ public interface IConnector {
*
* @return
*/
- public ILoggingManager getLoggingManager(Activity activity, Geocache cache);
+ public ILoggingManager getLoggingManager(final LogCacheActivity activity, final Geocache cache);
/**
* get host name of the connector server for dynamic loading of data
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
index 835359a..111c865 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
@@ -1,11 +1,12 @@
package cgeo.geocaching.connector.gc;
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
+import cgeo.geocaching.LogCacheActivity;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.AbstractConnector;
import cgeo.geocaching.connector.ILoggingManager;
import cgeo.geocaching.connector.capability.ILogin;
@@ -15,15 +16,14 @@ import cgeo.geocaching.connector.capability.ISearchByViewPort;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
-import cgeo.geocaching.settings.SettingsActivity;
import cgeo.geocaching.settings.Settings;
+import cgeo.geocaching.settings.SettingsActivity;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.Log;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
-import android.app.Activity;
import android.content.Context;
import android.os.Handler;
@@ -104,7 +104,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public ILoggingManager getLoggingManager(Activity activity, Geocache cache) {
+ public ILoggingManager getLoggingManager(final LogCacheActivity activity, final Geocache cache) {
return new GCLoggingManager(activity, cache);
}
@@ -137,10 +137,10 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
if (StringUtils.isEmpty(page)) {
final SearchResult search = new SearchResult();
- if (cgData.isThere(geocode, guid, true, false)) {
+ if (DataStore.isThere(geocode, guid, true, false)) {
if (StringUtils.isBlank(geocode) && StringUtils.isNotBlank(guid)) {
Log.i("Loading old cache from cache.");
- search.addGeocode(cgData.getGeocodeForGuid(guid));
+ search.addGeocode(DataStore.getGeocodeForGuid(guid));
} else {
search.addGeocode(geocode);
}
@@ -152,6 +152,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
search.setError(StatusCode.COMMUNICATION_ERROR);
return search;
}
+ assert page != null;
final SearchResult searchResult = GCParser.parseCache(page, handler);
@@ -189,7 +190,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
public boolean addToWatchlist(Geocache cache) {
final boolean added = GCParser.addToWatchlist(cache);
if (added) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return added;
}
@@ -198,7 +199,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
public boolean removeFromWatchlist(Geocache cache) {
final boolean removed = GCParser.removeFromWatchlist(cache);
if (removed) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return removed;
}
@@ -215,7 +216,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
public static boolean addToFavorites(Geocache cache) {
final boolean added = GCParser.addToFavorites(cache);
if (added) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return added;
}
@@ -232,7 +233,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
public static boolean removeFromFavorites(Geocache cache) {
final boolean removed = GCParser.removeFromFavorites(cache);
if (removed) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return removed;
}
@@ -241,7 +242,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
public boolean uploadModifiedCoordinates(Geocache cache, Geopoint wpt) {
final boolean uploaded = GCParser.uploadModifiedCoordinates(cache, wpt);
if (uploaded) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return uploaded;
}
@@ -250,7 +251,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
public boolean deleteModifiedCoordinates(Geocache cache) {
final boolean deleted = GCParser.deleteModifiedCoordinates(cache);
if (deleted) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return deleted;
}
@@ -259,7 +260,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
public boolean uploadPersonalNote(Geocache cache) {
final boolean uploaded = GCParser.uploadPersonalNote(cache);
if (uploaded) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return uploaded;
}
@@ -299,13 +300,13 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
final StatusCode status = Login.login();
if (status == StatusCode.NO_ERROR) {
- cgeoapplication.getInstance().checkLogin = false;
+ CgeoApplication.getInstance().checkLogin = false;
Login.detectGcCustomDate();
}
- if (cgeoapplication.getInstance().showLoginToast && handler != null) {
+ if (CgeoApplication.getInstance().showLoginToast && handler != null) {
handler.sendMessage(handler.obtainMessage(0, status));
- cgeoapplication.getInstance().showLoginToast = false;
+ CgeoApplication.getInstance().showLoginToast = false;
// invoke settings activity to insert login details
if (status == StatusCode.NO_LOGIN_INFO_STORED && fromActivity != null) {
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConstants.java b/main/src/cgeo/geocaching/connector/gc/GCConstants.java
index 16aa967..cd43cfb 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConstants.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConstants.java
@@ -167,7 +167,6 @@ public final class GCConstants {
public final static String STRING_PREMIUMONLY_2 = "Sorry, the owner of this listing has made it viewable to Premium Members only.";
public final static String STRING_PREMIUMONLY_1 = "has chosen to make this cache listing visible to Premium Members only.";
- public final static String STRING_UNPUBLISHED_OWNER = "cache has not been published yet";
public final static String STRING_UNPUBLISHED_OTHER = "you cannot view this cache listing until it has been published";
public final static String STRING_UNPUBLISHED_FROM_SEARCH = "UnpublishedCacheSearchWidget";
public final static String STRING_UNKNOWN_ERROR = "An Error Has Occurred";
diff --git a/main/src/cgeo/geocaching/connector/gc/GCLoggingManager.java b/main/src/cgeo/geocaching/connector/gc/GCLoggingManager.java
index 2aa5c75..8bed2ea 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCLoggingManager.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCLoggingManager.java
@@ -3,7 +3,6 @@ package cgeo.geocaching.connector.gc;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogCacheActivity;
import cgeo.geocaching.R;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.TrackableLog;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.connector.ILoggingManager;
@@ -13,12 +12,13 @@ import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.loaders.UrlLoader;
import cgeo.geocaching.network.Parameters;
+import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.eclipse.jdt.annotation.Nullable;
-import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
@@ -38,11 +38,12 @@ public class GCLoggingManager implements ILoggingManager, LoaderManager.LoaderCa
private List<LogType> possibleLogTypes;
private boolean hasLoaderError = true;
- public GCLoggingManager(Activity activity, Geocache cache) {
- this.activity = (LogCacheActivity) activity;
+ public GCLoggingManager(final LogCacheActivity activity, final Geocache cache) {
+ this.activity = activity;
this.cache = cache;
}
+ @Nullable
@Override
public Loader<String> onCreateLoader(int arg0, Bundle arg1) {
if (!Settings.isLogin()) { // allow offline logging
diff --git a/main/src/cgeo/geocaching/connector/gc/GCMap.java b/main/src/cgeo/geocaching/connector/gc/GCMap.java
index 4fdde56..e2c7dfa 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCMap.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCMap.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.connector.gc;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy;
@@ -19,7 +19,7 @@ import cgeo.geocaching.ui.Formatter;
import cgeo.geocaching.utils.LeastRecentlyUsedMap;
import cgeo.geocaching.utils.Log;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONException;
@@ -236,7 +236,9 @@ public class GCMap {
}
Log.d("Retrieved " + searchResult.getCount() + " caches for tile " + tile.toString());
- } catch (Exception e) {
+ } catch (RuntimeException e) {
+ Log.e("GCMap.parseMapJSON", e);
+ } catch (JSONException e) {
Log.e("GCMap.parseMapJSON", e);
}
@@ -253,7 +255,7 @@ public class GCMap {
* @return
*/
public static SearchResult searchByViewport(final Viewport viewport, final String[] tokens) {
- int speed = (int) cgeoapplication.getInstance().currentGeo().getSpeed() * 60 * 60 / 1000; // in km/h
+ int speed = (int) CgeoApplication.getInstance().currentGeo().getSpeed() * 60 * 60 / 1000; // in km/h
Strategy strategy = Settings.getLiveMapStrategy();
if (strategy == Strategy.AUTO) {
strategy = speed >= 30 ? Strategy.FAST : Strategy.DETAILED;
@@ -359,7 +361,7 @@ public class GCMap {
// Check for vanished found caches
if (tiles.iterator().next().getZoomLevel() >= Tile.ZOOMLEVEL_MIN_PERSONALIZED) {
- searchResult.addFilteredGeocodes(cgData.getCachedMissingFromSearch(searchResult, tiles, GCConnector.getInstance(), Tile.ZOOMLEVEL_MIN_PERSONALIZED - 1));
+ searchResult.addFilteredGeocodes(DataStore.getCachedMissingFromSearch(searchResult, tiles, GCConnector.getInstance(), Tile.ZOOMLEVEL_MIN_PERSONALIZED - 1));
}
}
@@ -370,7 +372,7 @@ public class GCMap {
SearchResult search = GCParser.searchByCoords(center, Settings.getCacheType(), false, null);
if (search != null && !search.isEmpty()) {
final Set<String> geocodes = search.getGeocodes();
- lastSearchViewport = cgData.getBounds(geocodes);
+ lastSearchViewport = DataStore.getBounds(geocodes);
searchResult.addGeocodes(geocodes);
}
}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index b373cb1..20dc156 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -1,5 +1,7 @@
package cgeo.geocaching.connector.gc;
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.Image;
import cgeo.geocaching.LogEntry;
@@ -8,8 +10,6 @@ import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Trackable;
import cgeo.geocaching.TrackableLog;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
@@ -34,12 +34,14 @@ import cgeo.geocaching.utils.MatcherWrapper;
import cgeo.geocaching.utils.TextUtils;
import ch.boye.httpclientandroidlib.HttpResponse;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.ListUtils;
+
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -147,7 +149,7 @@ public abstract class GCParser {
}
}
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// failed to parse GUID and/or Disabled
Log.w("GCParser.parseSearch: Failed to parse GUID and/or Disabled data");
}
@@ -308,19 +310,15 @@ public abstract class GCParser {
final String coordinates = Network.getResponseData(Network.postRequest("http://www.geocaching.com/seek/nearest.aspx", params), false);
- if (StringUtils.isNotBlank(coordinates)) {
- if (coordinates.contains("You have not agreed to the license agreement. The license agreement is required before you can start downloading GPX or LOC files from Geocaching.com")) {
- Log.i("User has not agreed to the license agreement. Can\'t download .loc file.");
-
- searchResult.setError(StatusCode.UNAPPROVED_LICENSE);
-
- return searchResult;
- }
+ if (StringUtils.contains(coordinates, "You have not agreed to the license agreement. The license agreement is required before you can start downloading GPX or LOC files from Geocaching.com")) {
+ Log.i("User has not agreed to the license agreement. Can\'t download .loc file.");
+ searchResult.setError(StatusCode.UNAPPROVED_LICENSE);
+ return searchResult;
}
LocParser.parseLoc(searchResult, coordinates);
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
Log.e("GCParser.parseSearch.CIDs", e);
}
}
@@ -357,7 +355,7 @@ public abstract class GCParser {
// save full detailed caches
CancellableHandler.sendLoadProgressDetail(handler, R.string.cache_dialog_loading_details_status_cache);
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
// update progress message so user knows we're still working. This is more of a place holder than
// actual indication of what the program is doing
@@ -376,7 +374,7 @@ public abstract class GCParser {
final SearchResult searchResult = new SearchResult();
- if (pageIn.contains(GCConstants.STRING_UNPUBLISHED_OTHER) || pageIn.contains(GCConstants.STRING_UNPUBLISHED_OWNER) || pageIn.contains(GCConstants.STRING_UNPUBLISHED_FROM_SEARCH)) {
+ if (pageIn.contains(GCConstants.STRING_UNPUBLISHED_OTHER) || pageIn.contains(GCConstants.STRING_UNPUBLISHED_FROM_SEARCH)) {
searchResult.setError(StatusCode.UNPUBLISHED_CACHE);
return searchResult;
}
@@ -569,7 +567,7 @@ public abstract class GCParser {
}
cache.setAttributes(attributes);
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// failed to parse cache attributes
Log.w("GCParser.parseCache: Failed to parse cache attributes");
}
@@ -598,7 +596,7 @@ public abstract class GCParser {
}
cache.addSpoiler(new Image(url, title, description));
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// failed to parse cache spoilers
Log.w("GCParser.parseCache: Failed to parse cache spoilers");
}
@@ -632,7 +630,7 @@ public abstract class GCParser {
}
}
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// failed to parse cache inventory
Log.w("GCParser.parseCache: Failed to parse cache inventory (2)");
}
@@ -654,7 +652,7 @@ public abstract class GCParser {
}
}
}
- } catch (final Exception e) {
+ } catch (final NumberFormatException e) {
// failed to parse logs
Log.w("GCParser.parseCache: Failed to parse cache log count");
}
@@ -667,7 +665,7 @@ public abstract class GCParser {
final String originalCoords = TextUtils.getMatch(page, GCConstants.PATTERN_LATLON_ORIG, false, null);
if (null != originalCoords) {
- final Waypoint waypoint = new Waypoint(cgeoapplication.getInstance().getString(R.string.cache_coordinates_original), WaypointType.ORIGINAL, false);
+ final Waypoint waypoint = new Waypoint(CgeoApplication.getInstance().getString(R.string.cache_coordinates_original), WaypointType.ORIGINAL, false);
waypoint.setCoords(new Geopoint(originalCoords));
cache.addOrChangeWaypoint(waypoint, false);
cache.setUserModifiedCoords(true);
@@ -706,7 +704,7 @@ public abstract class GCParser {
// waypoint name
// res is null during the unit tests
- final String name = TextUtils.getMatch(wp[6], GCConstants.PATTERN_WPNAME, true, 1, cgeoapplication.getInstance().getString(R.string.waypoint), true);
+ final String name = TextUtils.getMatch(wp[6], GCConstants.PATTERN_WPNAME, true, 1, CgeoApplication.getInstance().getString(R.string.waypoint), true);
// waypoint type
final String resulttype = TextUtils.getMatch(wp[3], GCConstants.PATTERN_WPTYPE, null);
@@ -847,6 +845,7 @@ public abstract class GCParser {
* @param recaptchaReceiver
* @return
*/
+ @Nullable
private static SearchResult searchByAny(final CacheType cacheType, final boolean my, final boolean showCaptcha, final Parameters params, RecaptchaReceiver recaptchaReceiver) {
insertCacheType(params, cacheType);
@@ -858,6 +857,7 @@ public abstract class GCParser {
Log.e("GCParser.searchByAny: No data from server");
return null;
}
+ assert page != null;
final SearchResult searchResult = parseSearch(fullUri, page, showCaptcha, recaptchaReceiver);
if (searchResult == null || CollectionUtils.isEmpty(searchResult.getGeocodes())) {
@@ -944,6 +944,7 @@ public abstract class GCParser {
return null;
}
+ @Nullable
public static Trackable searchTrackable(final String geocode, final String guid, final String id) {
if (StringUtils.isBlank(geocode) && StringUtils.isBlank(guid) && StringUtils.isBlank(id)) {
Log.w("GCParser.searchTrackable: No geocode nor guid nor id given");
@@ -968,6 +969,7 @@ public abstract class GCParser {
Log.e("GCParser.searchTrackable: No data from server");
return trackable;
}
+ assert page != null;
trackable = parseTrackable(page, geocode);
if (trackable == null) {
@@ -1083,7 +1085,7 @@ public abstract class GCParser {
page = Network.getResponseData(Network.postRequest(uri, params));
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
Log.e("GCParser.postLog.confim", e);
}
@@ -1094,7 +1096,7 @@ public abstract class GCParser {
Log.i("Log successfully posted to cache #" + cacheid);
if (geocode != null) {
- cgData.saveVisitDate(geocode);
+ DataStore.saveVisitDate(geocode);
}
Login.getLoginStatus(page);
@@ -1136,6 +1138,7 @@ public abstract class GCParser {
Log.e("GCParser.uploadLogImage: No data from server");
return new ImmutablePair<StatusCode, String>(StatusCode.UNKNOWN_ERROR, null);
}
+ assert page != null;
final String[] viewstates = Login.getViewstates(page);
@@ -1293,7 +1296,8 @@ public abstract class GCParser {
return !guidOnPage; // on watch list (=error) / not on watch list
}
- static String requestHtmlPage(final String geocode, final String guid, final String log, final String numlogs) {
+ @Nullable
+ static String requestHtmlPage(@Nullable final String geocode, @Nullable final String guid, final String log, final String numlogs) {
final Parameters params = new Parameters("decrypt", "y");
if (StringUtils.isNotBlank(geocode)) {
params.put("wp", geocode);
@@ -1396,7 +1400,7 @@ public abstract class GCParser {
trackable.setOwnerGuid(matcherOwner.group(1));
trackable.setOwner(matcherOwner.group(2).trim());
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// failed to parse trackable owner name
Log.w("GCParser.parseTrackable: Failed to parse trackable owner name");
}
@@ -1427,7 +1431,7 @@ public abstract class GCParser {
if (TextUtils.matches(page, GCConstants.PATTERN_TRACKABLE_SPOTTEDOWNER)) {
trackable.setSpottedType(Trackable.SPOTTED_OWNER);
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// failed to parse trackable last known place
Log.w("GCParser.parseTrackable: Failed to parse trackable last known place");
}
@@ -1476,12 +1480,12 @@ public abstract class GCParser {
trackable.setDetails(convertLinks(details));
}
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// failed to parse trackable details & image
Log.w("GCParser.parseTrackable: Failed to parse trackable details & image");
}
if (StringUtils.isEmpty(trackable.getDetails()) && page.contains(GCConstants.ERROR_TB_NOT_ACTIVATED)) {
- trackable.setDetails(cgeoapplication.getInstance().getString(R.string.trackable_not_activated));
+ trackable.setDetails(CgeoApplication.getInstance().getString(R.string.trackable_not_activated));
}
// trackable logs
@@ -1538,8 +1542,8 @@ public abstract class GCParser {
trackable.setTrackingcode(possibleTrackingcode);
}
- if (cgeoapplication.getInstance() != null) {
- cgData.saveTrackable(trackable);
+ if (CgeoApplication.getInstance() != null) {
+ DataStore.saveTrackable(trackable);
}
return trackable;
@@ -1601,8 +1605,17 @@ public abstract class GCParser {
rawResponse = TextUtils.getMatch(page, GCConstants.PATTERN_LOGBOOK, "");
}
+ return parseLogs(friends, rawResponse);
+ }
+
+ private static List<LogEntry> parseLogs(final boolean friends, String rawResponse) {
final List<LogEntry> logs = new ArrayList<LogEntry>();
+ // for non logged in users the log book is not shown
+ if (StringUtils.isBlank(rawResponse)) {
+ return logs;
+ }
+
try {
final JSONObject resp = new JSONObject(rawResponse);
if (!resp.getString("status").equals("success")) {
@@ -1658,9 +1671,10 @@ public abstract class GCParser {
return logs;
}
+ @NonNull
public static List<LogType> parseTypes(String page) {
if (StringUtils.isEmpty(page)) {
- return ListUtils.EMPTY_LIST;
+ return Collections.emptyList();
}
final List<LogType> types = new ArrayList<LogType>();
diff --git a/main/src/cgeo/geocaching/connector/gc/Login.java b/main/src/cgeo/geocaching/connector/gc/Login.java
index 0d8fb05..beb49f1 100644
--- a/main/src/cgeo/geocaching/connector/gc/Login.java
+++ b/main/src/cgeo/geocaching/connector/gc/Login.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.connector.gc;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.network.Cookies;
import cgeo.geocaching.network.HtmlImage;
@@ -13,10 +13,11 @@ import cgeo.geocaching.utils.MatcherWrapper;
import cgeo.geocaching.utils.TextUtils;
import ch.boye.httpclientandroidlib.HttpResponse;
-
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import android.graphics.drawable.BitmapDrawable;
@@ -76,7 +77,7 @@ public abstract class Login {
return StatusCode.NO_LOGIN_INFO_STORED;
}
- Login.setActualStatus(cgeoapplication.getInstance().getString(R.string.init_login_popup_working));
+ Login.setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_working));
HttpResponse loginResponse = Network.getRequest("https://www.geocaching.com/login/default.aspx");
String loginData = Network.getResponseData(loginResponse);
if (loginResponse != null && loginResponse.getStatusLine().getStatusCode() == 503 && TextUtils.matches(loginData, GCConstants.PATTERN_MAINTENANCE)) {
@@ -119,6 +120,7 @@ public abstract class Login {
// FIXME: should it be CONNECTION_FAILED to match the first attempt?
return StatusCode.COMMUNICATION_ERROR; // no login page
}
+ assert loginData != null; // Caught above
if (Login.getLoginStatus(loginData)) {
Log.i("Successfully logged in Geocaching.com as " + login.left + " (" + Settings.getMemberStatus() + ')');
@@ -171,7 +173,7 @@ public abstract class Login {
resetLoginStatus();
setActualCachesFound(-1);
- setActualStatus(cgeoapplication.getInstance().getString(R.string.err_login));
+ setActualStatus(CgeoApplication.getInstance().getString(R.string.err_login));
}
static void setActualCachesFound(final int found) {
@@ -212,13 +214,14 @@ public abstract class Login {
* @param page
* @return <code>true</code> if user is logged in, <code>false</code> otherwise
*/
- public static boolean getLoginStatus(final String page) {
+ public static boolean getLoginStatus(@Nullable final String page) {
if (StringUtils.isBlank(page)) {
Log.e("Login.checkLogin: No page given");
return false;
}
+ assert page != null;
- setActualStatus(cgeoapplication.getInstance().getString(R.string.init_login_popup_ok));
+ setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_ok));
// on every page except login page
setActualLoginStatus(TextUtils.matches(page, GCConstants.PATTERN_LOGIN_NAME));
@@ -246,7 +249,7 @@ public abstract class Login {
return true;
}
- setActualStatus(cgeoapplication.getInstance().getString(R.string.init_login_popup_failed));
+ setActualStatus(CgeoApplication.getInstance().getString(R.string.init_login_popup_failed));
return false;
}
@@ -276,7 +279,8 @@ public abstract class Login {
public static BitmapDrawable downloadAvatarAndGetMemberStatus() {
try {
- final String profile = TextUtils.replaceWhitespace(Network.getResponseData(Network.getRequest("http://www.geocaching.com/my/")));
+ final String responseData = StringUtils.defaultString(Network.getResponseData(Network.getRequest("http://www.geocaching.com/my/")));
+ final String profile = TextUtils.replaceWhitespace(responseData);
Settings.setMemberStatus(TextUtils.getMatch(profile, GCConstants.PATTERN_MEMBER_STATUS, true, null));
if (profile.contains(GCConstants.MEMBER_STATUS_RENEW)) {
@@ -473,10 +477,13 @@ public abstract class Login {
* @param params
* @return
*/
- public static String getRequestLogged(final String uri, final Parameters params) {
- final String data = Network.getResponseData(Network.getRequest(uri, params), canRemoveWhitespace(uri));
+ @Nullable
+ public static String getRequestLogged(@NonNull final String uri, @Nullable final Parameters params) {
+ final HttpResponse response = Network.getRequest(uri, params);
+ final String data = Network.getResponseData(response, canRemoveWhitespace(uri));
- if (getLoginStatus(data)) {
+ // A page not found will not be found if the user logs in either
+ if (Network.isPageNotFound(response) || getLoginStatus(data)) {
return data;
}
diff --git a/main/src/cgeo/geocaching/connector/gc/SearchHandler.java b/main/src/cgeo/geocaching/connector/gc/SearchHandler.java
index 4358399..795ed2f 100644
--- a/main/src/cgeo/geocaching/connector/gc/SearchHandler.java
+++ b/main/src/cgeo/geocaching/connector/gc/SearchHandler.java
@@ -91,7 +91,7 @@ public class SearchHandler extends Handler {
dlg.create().show();
}
- } catch (Exception e) {
+ } catch (MalformedURLException e) {
Log.e("Error in reCAPTCHA handler", e);
}
}
diff --git a/main/src/cgeo/geocaching/connector/gc/UTFGridPosition.java b/main/src/cgeo/geocaching/connector/gc/UTFGridPosition.java
index 5965fff..eff193a 100644
--- a/main/src/cgeo/geocaching/connector/gc/UTFGridPosition.java
+++ b/main/src/cgeo/geocaching/connector/gc/UTFGridPosition.java
@@ -15,9 +15,12 @@ public final class UTFGridPosition {
private final static Pattern PATTERN_JSON_KEY = Pattern.compile("[^\\d]*" + "(\\d+),\\s*(\\d+)" + "[^\\d]*"); // (12, 34)
public UTFGridPosition(final int x, final int y) {
- assert x >= 0 && x <= UTFGrid.GRID_MAXX : "x outside bounds";
- assert y >= 0 && y <= UTFGrid.GRID_MAXY : "y outside bounds";
-
+ if (x < 0 || x > UTFGrid.GRID_MAXX) {
+ throw new IllegalArgumentException("x outside bounds");
+ }
+ if (y < 0 || y > UTFGrid.GRID_MAXY) {
+ throw new IllegalArgumentException("y outside bounds");
+ }
this.x = x;
this.y = y;
}
diff --git a/main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java b/main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java
index 5a140a1..dacb626 100644
--- a/main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java
+++ b/main/src/cgeo/geocaching/connector/oc/IOCAuthParams.java
@@ -3,58 +3,65 @@ package cgeo.geocaching.connector.oc;
public interface IOCAuthParams {
/**
- * The site name: 'www.openaching...'
- *
+ * The site name: 'www.opencaching...'
+ *
* @return
*/
String getSite();
/**
* ResId of the Consumer key
- *
+ *
* @return
*/
int getCKResId();
/**
* ResId of the Consumer secret
- *
+ *
* @return
*/
int getCSResId();
/**
- * ResId ot the Authorization title
- *
+ * ResId of the Authorization title
+ *
* @return
*/
- int getAuthTitelResId();
+ int getAuthTitleResId();
/**
* Preference key of the public token
- *
+ *
* @return
*/
int getTokenPublicPrefKey();
/**
* Preference key of the secret token
- *
+ *
* @return
*/
int getTokenSecretPrefKey();
/**
* Preference key of the temporary public token (OAuth)
- *
+ *
* @return
*/
int getTempTokenPublicPrefKey();
/**
* Preference key of the temporary secret token (OAuth)
- *
+ *
* @return
*/
int getTempTokenSecretPrefKey();
+
+ /**
+ * The URI to use as a callback (OAuth)
+ *
+ * @return
+ */
+ String getCallbackUri();
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
index d35e54b..8f38641 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
@@ -1,9 +1,10 @@
package cgeo.geocaching.connector.oc;
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
+import cgeo.geocaching.LogCacheActivity;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.ILoggingManager;
import cgeo.geocaching.connector.capability.ILogin;
import cgeo.geocaching.connector.capability.ISearchByCenter;
@@ -16,7 +17,6 @@ import cgeo.geocaching.utils.CryptUtils;
import org.apache.commons.lang3.StringUtils;
-import android.app.Activity;
import android.content.Context;
import android.os.Handler;
@@ -29,9 +29,9 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
private UserInfo userInfo = new UserInfo(StringUtils.EMPTY, 0, UserInfoStatus.NOT_RETRIEVED);
public OCApiLiveConnector(String name, String host, String prefix, String licenseString, int cKResId, int cSResId, int isActivePrefKeyId, int tokenPublicPrefKeyId, int tokenSecretPrefKeyId, ApiSupport apiSupport) {
- super(name, host, prefix, CryptUtils.rot13(cgeoapplication.getInstance().getResources().getString(cKResId)), licenseString, apiSupport);
+ super(name, host, prefix, CryptUtils.rot13(CgeoApplication.getInstance().getResources().getString(cKResId)), licenseString, apiSupport);
- cS = CryptUtils.rot13(cgeoapplication.getInstance().getResources().getString(cSResId));
+ cS = CryptUtils.rot13(CgeoApplication.getInstance().getResources().getString(cSResId));
this.isActivePrefKeyId = isActivePrefKeyId;
this.tokenPublicPrefKeyId = tokenPublicPrefKeyId;
this.tokenSecretPrefKeyId = tokenSecretPrefKeyId;
@@ -87,7 +87,7 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
final boolean added = OkapiClient.setWatchState(cache, true, this);
if (added) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return added;
@@ -98,7 +98,7 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
final boolean removed = OkapiClient.setWatchState(cache, false, this);
if (removed) {
- cgData.saveChangedCache(cache);
+ DataStore.saveChangedCache(cache);
}
return removed;
@@ -110,7 +110,7 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
}
@Override
- public ILoggingManager getLoggingManager(Activity activity, Geocache cache) {
+ public ILoggingManager getLoggingManager(final LogCacheActivity activity, final Geocache cache) {
return new OkapiLoggingManager(activity, this, cache);
}
@@ -145,7 +145,7 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
@Override
public String getLoginStatusString() {
- return cgeoapplication.getInstance().getString(userInfo.getStatus().resId);
+ return CgeoApplication.getInstance().getString(userInfo.getStatus().resId);
}
@Override
diff --git a/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
index 10d6a66..c082bac 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCAuthorizationActivity.java
@@ -1,13 +1,14 @@
package cgeo.geocaching.connector.oc;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.network.OAuthAuthorizationActivity;
import cgeo.geocaching.settings.Settings;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.eclipse.jdt.annotation.Nullable;
-public class OCAuthorizationActivity extends OAuthAuthorizationActivity {
+public abstract class OCAuthorizationActivity extends OAuthAuthorizationActivity {
final IOCAuthParams authParams;
@@ -17,8 +18,9 @@ public class OCAuthorizationActivity extends OAuthAuthorizationActivity {
"/okapi/services/oauth/authorize",
"/okapi/services/oauth/access_token",
false,
- cgeoapplication.getInstance().getResources().getString(authParams.getCKResId()),
- cgeoapplication.getInstance().getResources().getString(authParams.getCSResId()));
+ CgeoApplication.getInstance().getResources().getString(authParams.getCKResId()),
+ CgeoApplication.getInstance().getResources().getString(authParams.getCSResId()),
+ authParams.getCallbackUri());
this.authParams = authParams;
}
@@ -28,12 +30,12 @@ public class OCAuthorizationActivity extends OAuthAuthorizationActivity {
}
@Override
- protected void setTempTokens(String tokenPublic, String tokenSecret) {
+ protected void setTempTokens(@Nullable final String tokenPublic, @Nullable final String tokenSecret) {
Settings.setTokens(authParams.getTempTokenPublicPrefKey(), tokenPublic, authParams.getTempTokenSecretPrefKey(), tokenSecret);
}
@Override
- protected void setTokens(String tokenPublic, String tokenSecret, boolean enable) {
+ protected void setTokens(@Nullable final String tokenPublic, @Nullable final String tokenSecret, final boolean enable) {
Settings.setTokens(authParams.getTokenPublicPrefKey(), tokenPublic, authParams.getTokenSecretPrefKey(), tokenSecret);
if (tokenPublic != null) {
Settings.setTokens(authParams.getTempTokenPublicPrefKey(), null, authParams.getTempTokenSecretPrefKey(), null);
@@ -42,22 +44,7 @@ public class OCAuthorizationActivity extends OAuthAuthorizationActivity {
@Override
protected String getAuthTitle() {
- return res.getString(authParams.getAuthTitelResId());
- }
-
- @Override
- protected String getAuthAgain() {
- return res.getString(R.string.auth_again_oc);
- }
-
- @Override
- protected String getErrAuthInitialize() {
- return res.getString(R.string.err_auth_initialize);
- }
-
- @Override
- protected String getAuthStart() {
- return res.getString(R.string.auth_start_oc);
+ return res.getString(authParams.getAuthTitleResId());
}
@Override
@@ -65,48 +52,4 @@ public class OCAuthorizationActivity extends OAuthAuthorizationActivity {
return res.getString(R.string.auth_dialog_completed_oc, getAuthTitle());
}
- @Override
- protected String getErrAuthProcess() {
- return res.getString(R.string.err_auth_process);
- }
-
- @Override
- protected String getAuthDialogWait() {
- return res.getString(R.string.auth_dialog_wait_oc, getAuthTitle());
- }
-
- @Override
- protected String getAuthDialogPinTitle() {
- return res.getString(R.string.auth_dialog_pin_title_oc);
- }
-
- @Override
- protected String getAuthDialogPinMessage() {
- return res.getString(R.string.auth_dialog_pin_message_oc, getAuthTitle());
- }
-
- @Override
- protected String getAboutAuth1() {
- return res.getString(R.string.about_auth_1_oc, getAuthTitle());
- }
-
- @Override
- protected String getAboutAuth2() {
- return res.getString(R.string.about_auth_2_oc, getAuthTitle(), getAuthTitle());
- }
-
- @Override
- protected String getAuthAuthorize() {
- return res.getString(R.string.auth_authorize_oc);
- }
-
- @Override
- protected String getAuthPinHint() {
- return res.getString(R.string.auth_pin_hint_oc, getAuthTitle());
- }
-
- @Override
- protected String getAuthFinish() {
- return res.getString(R.string.auth_finish_oc);
- }
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java
index 734b383..17c1cb8 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCDEAuthParams.java
@@ -20,7 +20,7 @@ public class OCDEAuthParams implements IOCAuthParams {
}
@Override
- public int getAuthTitelResId() {
+ public int getAuthTitleResId() {
return R.string.auth_ocde;
}
@@ -43,4 +43,9 @@ public class OCDEAuthParams implements IOCAuthParams {
public int getTempTokenSecretPrefKey() {
return R.string.pref_temp_ocde_token_secret;
}
+
+ @Override
+ public String getCallbackUri() {
+ return "callback://www.cgeo.org/opencaching.de/";
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java
index caf114c..1d2aa49 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCDEAuthorizationActivity.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.connector.oc;
-public class OCDEAuthorizationActivity extends OCAuthorizationActivity {
+public final class OCDEAuthorizationActivity extends OCAuthorizationActivity {
public OCDEAuthorizationActivity() {
super(new OCDEAuthParams());
diff --git a/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java b/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java
index 117e990..dfe03e5 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCPLAuthParams.java
@@ -20,7 +20,7 @@ public class OCPLAuthParams implements IOCAuthParams {
}
@Override
- public int getAuthTitelResId() {
+ public int getAuthTitleResId() {
return R.string.auth_ocpl;
}
@@ -43,4 +43,9 @@ public class OCPLAuthParams implements IOCAuthParams {
public int getTempTokenSecretPrefKey() {
return R.string.pref_temp_ocpl_token_secret;
}
+
+ @Override
+ public String getCallbackUri() {
+ return "callback://www.cgeo.org/opencaching.pl/";
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java b/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java
index 4f9ef96..30ea150 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCPLAuthorizationActivity.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.connector.oc;
-public class OCPLAuthorizationActivity extends OCAuthorizationActivity {
+public final class OCPLAuthorizationActivity extends OCAuthorizationActivity {
public OCPLAuthorizationActivity() {
super(new OCPLAuthParams());
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
index 43ea8ad..309969e 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
@@ -1,12 +1,12 @@
package cgeo.geocaching.connector.oc;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.Image;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
import cgeo.geocaching.connector.LogResult;
@@ -265,7 +265,7 @@ final class OkapiClient {
parseCoreCache(response, cache);
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_CACHE));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_CACHE));
} catch (final JSONException e) {
Log.e("OkapiClient.parseSmallCache", e);
}
@@ -297,7 +297,7 @@ final class OkapiClient {
final StringBuilder description = new StringBuilder(500);
if (!response.isNull("gc_code")) {
final String gccode = response.getString("gc_code");
- description.append(cgeoapplication.getInstance().getResources()
+ description.append(CgeoApplication.getInstance().getResources()
.getString(R.string.cache_listed_on, GCConnector.getInstance().getName()))
.append(": <a href=\"http://coord.info/")
.append(gccode)
@@ -338,7 +338,7 @@ final class OkapiClient {
cache.setDetailedUpdatedNow();
// save full detailed caches
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
} catch (final JSONException e) {
Log.e("OkapiClient.parseCache", e);
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java b/main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java
index c995975..9ffe7a2 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiLoggingManager.java
@@ -9,7 +9,6 @@ import cgeo.geocaching.connector.LogResult;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.enumerations.StatusCode;
-import android.app.Activity;
import android.net.Uri;
import java.util.Arrays;
@@ -26,10 +25,10 @@ public class OkapiLoggingManager implements ILoggingManager {
private final static List<LogType> standardLogTypes = Arrays.asList(LogType.FOUND_IT, LogType.DIDNT_FIND_IT, LogType.NOTE);
private final static List<LogType> eventLogTypes = Arrays.asList(LogType.WILL_ATTEND, LogType.ATTENDED, LogType.NOTE);
- public OkapiLoggingManager(Activity activity, OCApiLiveConnector connector, Geocache cache) {
+ public OkapiLoggingManager(final LogCacheActivity activity, OCApiLiveConnector connector, Geocache cache) {
this.connector = connector;
this.cache = cache;
- this.activity = (LogCacheActivity) activity;
+ this.activity = activity;
}
@Override
diff --git a/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java b/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
index f25e289..9d1dfc7 100644
--- a/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
+++ b/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.connector.ox;
import cgeo.geocaching.Geocache;
-import cgeo.geocaching.StoredList;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.utils.CryptUtils;
@@ -11,7 +11,7 @@ import cgeo.geocaching.utils.Log;
import ch.boye.httpclientandroidlib.HttpResponse;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import java.util.Collection;
import java.util.Collections;
diff --git a/main/src/cgeo/geocaching/connector/trackable/GeokretyParser.java b/main/src/cgeo/geocaching/connector/trackable/GeokretyParser.java
index 66ca5f7..9f79896 100644
--- a/main/src/cgeo/geocaching/connector/trackable/GeokretyParser.java
+++ b/main/src/cgeo/geocaching/connector/trackable/GeokretyParser.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.connector.trackable;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
import cgeo.geocaching.Trackable;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.utils.Log;
import org.xml.sax.Attributes;
@@ -63,15 +63,15 @@ public class GeokretyParser {
protected static String getType(int type) {
switch (type) {
case 0:
- return cgeoapplication.getInstance().getString(R.string.geokret_type_traditional);
+ return CgeoApplication.getInstance().getString(R.string.geokret_type_traditional);
case 1:
- return cgeoapplication.getInstance().getString(R.string.geokret_type_book_or_media);
+ return CgeoApplication.getInstance().getString(R.string.geokret_type_book_or_media);
case 2:
- return cgeoapplication.getInstance().getString(R.string.geokret_type_human);
+ return CgeoApplication.getInstance().getString(R.string.geokret_type_human);
case 3:
- return cgeoapplication.getInstance().getString(R.string.geokret_type_coin);
+ return CgeoApplication.getInstance().getString(R.string.geokret_type_coin);
case 4:
- return cgeoapplication.getInstance().getString(R.string.geokret_type_post);
+ return CgeoApplication.getInstance().getString(R.string.geokret_type_post);
}
return null;
}
diff --git a/main/src/cgeo/geocaching/enumerations/CacheAttribute.java b/main/src/cgeo/geocaching/enumerations/CacheAttribute.java
index 243f63d..1ddfeaf 100644
--- a/main/src/cgeo/geocaching/enumerations/CacheAttribute.java
+++ b/main/src/cgeo/geocaching/enumerations/CacheAttribute.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.enumerations;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import org.apache.commons.lang3.StringUtils;
@@ -143,7 +143,7 @@ public enum CacheAttribute {
* @return the localized text
*/
public String getL10n(final boolean enabled) {
- return cgeoapplication.getInstance().getResources().getString(
+ return CgeoApplication.getInstance().getResources().getString(
enabled ? stringIdYes : stringIdNo);
}
diff --git a/main/src/cgeo/geocaching/enumerations/CacheListType.java b/main/src/cgeo/geocaching/enumerations/CacheListType.java
index 641947d..b75c118 100644
--- a/main/src/cgeo/geocaching/enumerations/CacheListType.java
+++ b/main/src/cgeo/geocaching/enumerations/CacheListType.java
@@ -1,13 +1,22 @@
package cgeo.geocaching.enumerations;
public enum CacheListType {
- OFFLINE,
- HISTORY,
- NEAREST,
- COORDINATE,
- KEYWORD,
- ADDRESS,
- USERNAME,
- OWNER,
- MAP;
+ OFFLINE(true),
+ HISTORY(true),
+ NEAREST(false),
+ COORDINATE(false),
+ KEYWORD(false),
+ ADDRESS(false),
+ USERNAME(false),
+ OWNER(false),
+ MAP(false);
+
+ /**
+ * whether or not this list allows switching to another list
+ */
+ public final boolean canSwitch;
+
+ private CacheListType(final boolean canSwitch) {
+ this.canSwitch = canSwitch;
+ }
}
diff --git a/main/src/cgeo/geocaching/enumerations/CacheSize.java b/main/src/cgeo/geocaching/enumerations/CacheSize.java
index 726ebe2..a6f8df3 100644
--- a/main/src/cgeo/geocaching/enumerations/CacheSize.java
+++ b/main/src/cgeo/geocaching/enumerations/CacheSize.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.enumerations;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import java.util.Collections;
import java.util.HashMap;
@@ -60,7 +60,7 @@ public enum CacheSize {
}
public final String getL10n() {
- return cgeoapplication.getInstance().getBaseContext().getResources().getString(stringId);
+ return CgeoApplication.getInstance().getBaseContext().getResources().getString(stringId);
}
}
diff --git a/main/src/cgeo/geocaching/enumerations/CacheType.java b/main/src/cgeo/geocaching/enumerations/CacheType.java
index c7a9130..c952ba0 100644
--- a/main/src/cgeo/geocaching/enumerations/CacheType.java
+++ b/main/src/cgeo/geocaching/enumerations/CacheType.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.enumerations;
import cgeo.geocaching.ICache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import java.util.Collections;
import java.util.HashMap;
@@ -85,7 +85,7 @@ public enum CacheType {
}
public final String getL10n() {
- return cgeoapplication.getInstance().getBaseContext().getResources().getString(stringId);
+ return CgeoApplication.getInstance().getBaseContext().getResources().getString(stringId);
}
public boolean isEvent() {
@@ -114,7 +114,7 @@ public enum CacheType {
}
public boolean applyDistanceRule() {
- return !isVirtual() && !isEvent();
+ return TRADITIONAL == this || PROJECT_APE == this || GCHQ == this;
}
public boolean isVirtual() {
diff --git a/main/src/cgeo/geocaching/enumerations/LiveMapStrategy.java b/main/src/cgeo/geocaching/enumerations/LiveMapStrategy.java
index 5f5b2c9..710c3ba 100644
--- a/main/src/cgeo/geocaching/enumerations/LiveMapStrategy.java
+++ b/main/src/cgeo/geocaching/enumerations/LiveMapStrategy.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.enumerations;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import java.util.EnumSet;
@@ -42,7 +42,7 @@ public interface LiveMapStrategy {
}
public final String getL10n() {
- return cgeoapplication.getInstance().getBaseContext().getResources().getString(stringId);
+ return CgeoApplication.getInstance().getBaseContext().getResources().getString(stringId);
}
}
}
diff --git a/main/src/cgeo/geocaching/enumerations/LogType.java b/main/src/cgeo/geocaching/enumerations/LogType.java
index 9902d3f..543f83d 100644
--- a/main/src/cgeo/geocaching/enumerations/LogType.java
+++ b/main/src/cgeo/geocaching/enumerations/LogType.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.enumerations;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import java.util.Collections;
import java.util.HashMap;
@@ -102,6 +102,6 @@ public enum LogType {
}
public final String getL10n() {
- return cgeoapplication.getInstance().getBaseContext().getResources().getString(stringId);
+ return CgeoApplication.getInstance().getBaseContext().getResources().getString(stringId);
}
}
diff --git a/main/src/cgeo/geocaching/enumerations/WaypointType.java b/main/src/cgeo/geocaching/enumerations/WaypointType.java
index 79c8106..272b2f2 100644
--- a/main/src/cgeo/geocaching/enumerations/WaypointType.java
+++ b/main/src/cgeo/geocaching/enumerations/WaypointType.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.enumerations;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import java.util.Collections;
import java.util.HashMap;
@@ -65,7 +65,7 @@ public enum WaypointType {
}
public final String getL10n() {
- return cgeoapplication.getInstance().getBaseContext().getResources().getString(stringId);
+ return CgeoApplication.getInstance().getBaseContext().getResources().getString(stringId);
}
@Override
diff --git a/main/src/cgeo/geocaching/export/AbstractExport.java b/main/src/cgeo/geocaching/export/AbstractExport.java
index e4ba5f0..5d15ecb 100644
--- a/main/src/cgeo/geocaching/export/AbstractExport.java
+++ b/main/src/cgeo/geocaching/export/AbstractExport.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.export;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
abstract class AbstractExport implements Export {
private final String name;
@@ -23,7 +23,7 @@ abstract class AbstractExport implements Export {
* @return localized string
*/
protected static String getString(int resourceId) {
- return cgeoapplication.getInstance().getString(resourceId);
+ return CgeoApplication.getInstance().getString(resourceId);
}
/**
@@ -36,7 +36,7 @@ abstract class AbstractExport implements Export {
* @return localized string
*/
protected static String getString(int resourceId, Object... params) {
- return cgeoapplication.getInstance().getString(resourceId, params);
+ return CgeoApplication.getInstance().getString(resourceId, params);
}
@Override
diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java
index d0040a9..d59434a 100644
--- a/main/src/cgeo/geocaching/export/FieldnoteExport.java
+++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.export;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.connector.gc.Login;
import cgeo.geocaching.enumerations.StatusCode;
@@ -13,9 +13,9 @@ import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.ui.Formatter;
import cgeo.geocaching.utils.AsyncTaskWithProgress;
import cgeo.geocaching.utils.FileUtils;
-import cgeo.geocaching.utils.IOUtils;
import cgeo.geocaching.utils.Log;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.CharEncoding;
import org.apache.commons.lang3.StringUtils;
@@ -134,7 +134,7 @@ class FieldnoteExport extends AbstractExport {
int i = 0;
for (final Geocache cache : caches) {
if (cache.isLogOffline()) {
- final LogEntry log = cgData.loadLogOffline(cache.getGeocode());
+ final LogEntry log = DataStore.loadLogOffline(cache.getGeocode());
if (!onlyNew || log.date > Settings.getFieldnoteExportDate()) {
appendFieldNote(fieldNoteBuffer, cache, log);
}
diff --git a/main/src/cgeo/geocaching/export/GpxExport.java b/main/src/cgeo/geocaching/export/GpxExport.java
index 821a3f6..a2e0f93 100644
--- a/main/src/cgeo/geocaching/export/GpxExport.java
+++ b/main/src/cgeo/geocaching/export/GpxExport.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.export;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.AsyncTaskWithProgress;
@@ -125,7 +125,7 @@ class GpxExport extends AbstractExport {
final List<String> allGeocodes = new ArrayList<String>(Arrays.asList(geocodes));
- setMessage(cgeoapplication.getInstance().getResources().getQuantityString(R.plurals.cache_counts, allGeocodes.size(), allGeocodes.size()));
+ setMessage(CgeoApplication.getInstance().getResources().getQuantityString(R.plurals.cache_counts, allGeocodes.size(), allGeocodes.size()));
final File exportFile = getExportFile();
BufferedWriter writer = null;
@@ -141,7 +141,7 @@ class GpxExport extends AbstractExport {
ExportTask.this.publishProgress(countExported);
}
});
- } catch (final Exception e) {
+ } catch (final IOException e) {
Log.e("GpxExport.ExportTask export", e);
if (writer != null) {
diff --git a/main/src/cgeo/geocaching/export/GpxSerializer.java b/main/src/cgeo/geocaching/export/GpxSerializer.java
index 1e39be4..e4051b5 100644
--- a/main/src/cgeo/geocaching/export/GpxSerializer.java
+++ b/main/src/cgeo/geocaching/export/GpxSerializer.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.export;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.CacheAttribute;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.geopoint.Geopoint;
@@ -81,7 +81,7 @@ public final class GpxSerializer {
}
private void exportBatch(final XmlSerializer gpx, Collection<String> geocodesOfBatch) throws IOException {
- final Set<Geocache> caches = cgData.loadCaches(geocodesOfBatch, LoadFlags.LOAD_ALL_DB_ONLY);
+ final Set<Geocache> caches = DataStore.loadCaches(geocodesOfBatch, LoadFlags.LOAD_ALL_DB_ONLY);
for (final Geocache cache : caches) {
gpx.startTag(PREFIX_GPX, "wpt");
gpx.attribute("", "lat", Double.toString(cache.getCoords().getLatitude()));
diff --git a/main/src/cgeo/geocaching/files/AbstractFileListActivity.java b/main/src/cgeo/geocaching/files/AbstractFileListActivity.java
index b0aba58..78cb2df 100644
--- a/main/src/cgeo/geocaching/files/AbstractFileListActivity.java
+++ b/main/src/cgeo/geocaching/files/AbstractFileListActivity.java
@@ -2,12 +2,12 @@ package cgeo.geocaching.files;
import cgeo.geocaching.Intents;
import cgeo.geocaching.R;
-import cgeo.geocaching.StoredList;
import cgeo.geocaching.activity.AbstractListActivity;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.utils.FileUtils;
import cgeo.geocaching.utils.Log;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.app.ProgressDialog;
diff --git a/main/src/cgeo/geocaching/files/FileParser.java b/main/src/cgeo/geocaching/files/FileParser.java
index f979d74..396a589 100644
--- a/main/src/cgeo/geocaching/files/FileParser.java
+++ b/main/src/cgeo/geocaching/files/FileParser.java
@@ -2,7 +2,8 @@ package cgeo.geocaching.files;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.utils.CancellableHandler;
-import cgeo.geocaching.utils.IOUtils;
+
+import org.apache.commons.io.IOUtils;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
@@ -51,7 +52,7 @@ public abstract class FileParser {
protected static StringBuilder readStream(InputStream is, CancellableHandler progressHandler) throws IOException {
final StringBuilder buffer = new StringBuilder();
ProgressInputStream progressInputStream = new ProgressInputStream(is);
- final BufferedReader input = new BufferedReader(new InputStreamReader(progressInputStream));
+ final BufferedReader input = new BufferedReader(new InputStreamReader(progressInputStream, "UTF-8"));
try {
String line;
diff --git a/main/src/cgeo/geocaching/files/GPXImporter.java b/main/src/cgeo/geocaching/files/GPXImporter.java
index a1c04d7..bf0aa72 100644
--- a/main/src/cgeo/geocaching/files/GPXImporter.java
+++ b/main/src/cgeo/geocaching/files/GPXImporter.java
@@ -3,12 +3,12 @@ package cgeo.geocaching.files;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.StaticMapsProvider;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.activity.IAbstractActivity;
+import cgeo.geocaching.DataStore;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.activity.Progress;
import cgeo.geocaching.enumerations.LoadFlags;
+import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.Log;
@@ -17,7 +17,6 @@ import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.ContentResolver;
-import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
@@ -61,13 +60,13 @@ public class GPXImporter {
private final Resources res;
private final int listId;
- private final IAbstractActivity fromActivity;
+ private final Activity fromActivity;
private final Handler importFinishedHandler;
- public GPXImporter(final IAbstractActivity fromActivity, final int listId, final Handler importFinishedHandler) {
+ public GPXImporter(final Activity fromActivity, final int listId, final Handler importFinishedHandler) {
this.listId = listId;
this.fromActivity = fromActivity;
- res = ((Activity) fromActivity).getResources();
+ res = fromActivity.getResources();
this.importFinishedHandler = importFinishedHandler;
}
@@ -91,8 +90,8 @@ public class GPXImporter {
* Import GPX provided via intent of activity that instantiated this GPXImporter.
*/
public void importGPX() {
- final ContentResolver contentResolver = ((Activity) fromActivity).getContentResolver();
- final Intent intent = ((Activity) fromActivity).getIntent();
+ final ContentResolver contentResolver = fromActivity.getContentResolver();
+ final Intent intent = fromActivity.getIntent();
final Uri uri = intent.getData();
String mimeType = intent.getType();
@@ -176,7 +175,7 @@ public class GPXImporter {
private boolean importStaticMaps(final SearchResult importedCaches) {
int storedCacheMaps = 0;
for (final String geocode : importedCaches.getGeocodes()) {
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
if (cache != null) {
Log.d("GPXImporter.ImportThread.importStaticMaps start downloadMaps for cache " + geocode);
StaticMapsProvider.downloadMaps(cache);
@@ -397,7 +396,7 @@ public class GPXImporter {
switch (msg.what) {
case IMPORT_STEP_START:
final Message cancelMessage = importStepHandler.obtainMessage(IMPORT_STEP_CANCEL);
- progress.show((Context) fromActivity, res.getString(R.string.gpx_import_title_reading_file), res.getString(R.string.gpx_import_loading_caches), ProgressDialog.STYLE_HORIZONTAL, cancelMessage);
+ progress.show(fromActivity, res.getString(R.string.gpx_import_title_reading_file), res.getString(R.string.gpx_import_loading_caches), ProgressDialog.STYLE_HORIZONTAL, cancelMessage);
break;
case IMPORT_STEP_READ_FILE:
@@ -409,7 +408,7 @@ public class GPXImporter {
case IMPORT_STEP_STORE_STATIC_MAPS:
progress.dismiss();
final Message skipMessage = importStepHandler.obtainMessage(IMPORT_STEP_STATIC_MAPS_SKIPPED, msg.arg2, 0);
- progress.show((Context) fromActivity, res.getString(R.string.gpx_import_title_static_maps), res.getString(R.string.gpx_import_store_static_maps), ProgressDialog.STYLE_HORIZONTAL, skipMessage);
+ progress.show(fromActivity, res.getString(R.string.gpx_import_title_static_maps), res.getString(R.string.gpx_import_store_static_maps), ProgressDialog.STYLE_HORIZONTAL, skipMessage);
progress.setMaxProgressAndReset(msg.arg2);
break;
@@ -418,19 +417,19 @@ public class GPXImporter {
progressHandler.cancel();
final StringBuilder bufferSkipped = new StringBuilder(20);
bufferSkipped.append(res.getString(R.string.gpx_import_static_maps_skipped)).append(", ").append(msg.arg1).append(' ').append(res.getString(R.string.gpx_import_caches_imported));
- fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_imported), bufferSkipped.toString());
+ ActivityMixin.helpDialog(fromActivity, res.getString(R.string.gpx_import_title_caches_imported), bufferSkipped.toString());
importFinished();
break;
case IMPORT_STEP_FINISHED:
progress.dismiss();
- fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_imported), msg.arg1 + " " + res.getString(R.string.gpx_import_caches_imported));
+ ActivityMixin.helpDialog(fromActivity, res.getString(R.string.gpx_import_title_caches_imported), msg.arg1 + " " + res.getString(R.string.gpx_import_caches_imported));
importFinished();
break;
case IMPORT_STEP_FINISHED_WITH_ERROR:
progress.dismiss();
- fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_import_failed), res.getString(msg.arg1) + "\n\n" + msg.obj);
+ ActivityMixin.helpDialog(fromActivity, res.getString(R.string.gpx_import_title_caches_import_failed), res.getString(msg.arg1) + "\n\n" + msg.obj);
importFinished();
break;
@@ -442,7 +441,7 @@ public class GPXImporter {
case IMPORT_STEP_CANCELED:
final StringBuilder bufferCanceled = new StringBuilder(20);
bufferCanceled.append(res.getString(R.string.gpx_import_canceled));
- fromActivity.showShortToast(bufferCanceled.toString());
+ ActivityMixin.showShortToast(fromActivity, bufferCanceled.toString());
importFinished();
break;
diff --git a/main/src/cgeo/geocaching/files/GPXParser.java b/main/src/cgeo/geocaching/files/GPXParser.java
index 7ea0a39..7d33769 100644
--- a/main/src/cgeo/geocaching/files/GPXParser.java
+++ b/main/src/cgeo/geocaching/files/GPXParser.java
@@ -1,13 +1,12 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
-import cgeo.geocaching.StoredList;
import cgeo.geocaching.Trackable;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
@@ -17,6 +16,7 @@ import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.MatcherWrapper;
@@ -205,7 +205,7 @@ public abstract class GPXParser extends FileParser {
// get text for string
String stringName;
try {
- stringName = cgeoapplication.getInstance().getResources().getResourceName(stringId);
+ stringName = CgeoApplication.getInstance().getResources().getResourceName(stringId);
} catch (final NullPointerException e) {
return null;
}
@@ -272,7 +272,7 @@ public abstract class GPXParser extends FileParser {
Double.valueOf(longitude)));
}
}
- } catch (final Exception e) {
+ } catch (final NumberFormatException e) {
Log.w("Failed to parse waypoint's latitude and/or longitude.");
}
}
@@ -312,10 +312,10 @@ public abstract class GPXParser extends FileParser {
// finally store the cache in the database
result.add(geocode);
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
// avoid the cachecache using lots of memory for caches which the user did not actually look at
- cgData.removeAllFromCache();
+ DataStore.removeAllFromCache();
showProgressMessage(progressHandler, progressStream.getProgress());
} else if (StringUtils.isNotBlank(cache.getName())
&& StringUtils.containsIgnoreCase(type, "waypoint")) {
@@ -331,7 +331,7 @@ public abstract class GPXParser extends FileParser {
if (cache.getName().length() > 2) {
final String cacheGeocodeForWaypoint = "GC" + cache.getName().substring(2).toUpperCase(Locale.US);
// lookup cache for waypoint in already parsed caches
- final Geocache cacheForWaypoint = cgData.loadCache(cacheGeocodeForWaypoint, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cacheForWaypoint = DataStore.loadCache(cacheGeocodeForWaypoint, LoadFlags.LOAD_CACHE_OR_DB);
if (cacheForWaypoint != null) {
final Waypoint waypoint = new Waypoint(cache.getShortDescription(), convertWaypointSym2Type(sym), false);
waypoint.setId(-1);
@@ -349,7 +349,7 @@ public abstract class GPXParser extends FileParser {
newPoints.add(waypoint);
Waypoint.mergeWayPoints(newPoints, mergedWayPoints, true);
cacheForWaypoint.setWaypoints(newPoints, false);
- cgData.saveCache(cacheForWaypoint, EnumSet.of(SaveFlag.SAVE_DB));
+ DataStore.saveCache(cacheForWaypoint, EnumSet.of(SaveFlag.SAVE_DB));
showProgressMessage(progressHandler, progressStream.getProgress());
}
}
@@ -501,7 +501,7 @@ public abstract class GPXParser extends FileParser {
if (attrs.getIndex("available") > -1) {
cache.setDisabled(!attrs.getValue("available").equalsIgnoreCase("true"));
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
Log.w("Failed to parse cache attributes.");
}
}
@@ -680,7 +680,7 @@ public abstract class GPXParser extends FileParser {
if (attrs.getIndex("ref") > -1) {
trackable.setGeocode(attrs.getValue("ref"));
}
- } catch (final Exception e) {
+ } catch (final RuntimeException e) {
// nothing
}
}
@@ -724,7 +724,7 @@ public abstract class GPXParser extends FileParser {
if (attrs.getIndex("id") > -1) {
log.id = Integer.parseInt(attrs.getValue("id"));
}
- } catch (final Exception e) {
+ } catch (final NumberFormatException e) {
// nothing
}
}
@@ -785,9 +785,8 @@ public abstract class GPXParser extends FileParser {
try {
progressStream = new ProgressInputStream(stream);
Xml.parse(progressStream, Xml.Encoding.UTF_8, root.getContentHandler());
- return cgData.loadCaches(result, EnumSet.of(LoadFlag.LOAD_DB_MINIMAL));
+ return DataStore.loadCaches(result, EnumSet.of(LoadFlag.LOAD_DB_MINIMAL));
} catch (final SAXException e) {
- Log.w("Cannot parse .gpx file as GPX " + version + ": could not parse XML - ", e);
throw new ParserException("Cannot parse .gpx file as GPX " + version + ": could not parse XML", e);
}
}
diff --git a/main/src/cgeo/geocaching/files/LocParser.java b/main/src/cgeo/geocaching/files/LocParser.java
index 1cfb2a3..3d01c1b 100644
--- a/main/src/cgeo/geocaching/files/LocParser.java
+++ b/main/src/cgeo/geocaching/files/LocParser.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
@@ -59,7 +59,7 @@ public final class LocParser extends FileParser {
contained.add(geocode);
}
}
- Set<Geocache> caches = cgData.loadCaches(contained, LoadFlags.LOAD_CACHE_OR_DB);
+ Set<Geocache> caches = DataStore.loadCaches(contained, LoadFlags.LOAD_CACHE_OR_DB);
for (Geocache cache : caches) {
Geocache coord = cidCoords.get(cache.getGeocode());
copyCoordToCache(coord, cache);
diff --git a/main/src/cgeo/geocaching/files/LocalStorage.java b/main/src/cgeo/geocaching/files/LocalStorage.java
index de1908d..40684f8 100644
--- a/main/src/cgeo/geocaching/files/LocalStorage.java
+++ b/main/src/cgeo/geocaching/files/LocalStorage.java
@@ -1,15 +1,15 @@
package cgeo.geocaching.files;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.utils.CryptUtils;
import cgeo.geocaching.utils.FileUtils;
-import cgeo.geocaching.utils.IOUtils;
import cgeo.geocaching.utils.Log;
import ch.boye.httpclientandroidlib.Header;
import ch.boye.httpclientandroidlib.HttpResponse;
-
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.Nullable;
import android.os.Environment;
@@ -21,11 +21,13 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
-import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
@@ -86,7 +88,7 @@ public final class LocalStorage {
private static File getInternalStorageBase() {
if (internalStorageBase == null) {
// A race condition will do no harm as the operation is idempotent. No need to synchronize.
- internalStorageBase = cgeoapplication.getInstance().getApplicationContext().getFilesDir().getParentFile();
+ internalStorageBase = CgeoApplication.getInstance().getApplicationContext().getFilesDir().getParentFile();
}
return internalStorageBase;
}
@@ -205,13 +207,19 @@ public final class LocalStorage {
return false;
}
- private static void saveHeader(final String name, final HttpResponse response, final File baseFile) {
+ private static void saveHeader(final String name, @Nullable final HttpResponse response, final File baseFile) {
final Header header = response != null ? response.getFirstHeader(name) : null;
final File file = filenameForHeader(baseFile, name);
if (header == null) {
FileUtils.deleteIgnoringFailure(file);
} else {
- saveToFile(new ByteArrayInputStream(header.getValue().getBytes()), file);
+ try {
+ saveToFile(new ByteArrayInputStream(header.getValue().getBytes("UTF-8")), file);
+ } catch (final UnsupportedEncodingException e) {
+ // Do not try to display the header in the log message, as our default encoding is
+ // likely to be UTF-8 and it will fail as well.
+ Log.e("LocalStorage.saveHeader: unable to decode header", e);
+ }
}
}
@@ -226,12 +234,13 @@ public final class LocalStorage {
* the name of the cached resource
* @param name
* the name of the header ("etag" or "last-modified")
- * @return null if no value has been cached, the value otherwise
+ * @return the cached value, or <tt>null</tt> if none has been cached
*/
+ @Nullable
public static String getSavedHeader(final File baseFile, final String name) {
try {
final File file = filenameForHeader(baseFile, name);
- final FileReader f = new FileReader(file);
+ final Reader f = new InputStreamReader(new FileInputStream(file), "UTF-8");
try {
// No header will be more than 256 bytes
final char[] value = new char[256];
@@ -417,10 +426,10 @@ public final class LocalStorage {
storages.add(new File(extStorage));
File file = new File("/system/etc/vold.fstab");
if (file.canRead()) {
- FileReader fr = null;
+ Reader fr = null;
BufferedReader br = null;
try {
- fr = new FileReader(file);
+ fr = new InputStreamReader(new FileInputStream(file), "UTF-8");
br = new BufferedReader(fr);
String s = br.readLine();
while (s != null) {
diff --git a/main/src/cgeo/geocaching/files/SimpleDirChooser.java b/main/src/cgeo/geocaching/files/SimpleDirChooser.java
index cf969dc..2d3565a 100644
--- a/main/src/cgeo/geocaching/files/SimpleDirChooser.java
+++ b/main/src/cgeo/geocaching/files/SimpleDirChooser.java
@@ -93,7 +93,7 @@ public class SimpleDirChooser extends AbstractListActivity {
for (File currentDir : dirs) {
listDirs.add(new Option(currentDir.getName(), currentDir.getAbsolutePath()));
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
}
Collections.sort(listDirs);
if (dir.getParent() != null) {
@@ -197,6 +197,9 @@ public class SimpleDirChooser extends AbstractListActivity {
}
}
+ /**
+ * Note: this class has a natural ordering that is inconsistent with equals.
+ */
public static class Option implements Comparable<Option> {
private final String name;
private final String path;
diff --git a/main/src/cgeo/geocaching/filter/AbstractRangeFilter.java b/main/src/cgeo/geocaching/filter/AbstractRangeFilter.java
index 96d256a..cafb92b 100644
--- a/main/src/cgeo/geocaching/filter/AbstractRangeFilter.java
+++ b/main/src/cgeo/geocaching/filter/AbstractRangeFilter.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.filter;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
abstract class AbstractRangeFilter extends AbstractFilter {
@@ -9,7 +9,7 @@ abstract class AbstractRangeFilter extends AbstractFilter {
protected final float rangeMax;
protected AbstractRangeFilter(final int ressourceId, final int range) {
- super(cgeoapplication.getInstance().getResources().getString(ressourceId) + ' ' + (range == 5 ? '5' : range + " + " + String.format("%.1f", range + 0.5)));
+ super(CgeoApplication.getInstance().getResources().getString(ressourceId) + ' ' + (range == 5 ? '5' : range + " + " + String.format("%.1f", range + 0.5)));
this.rangeMin = range;
rangeMax = rangeMin + 1f;
}
diff --git a/main/src/cgeo/geocaching/filter/AttributeFilter.java b/main/src/cgeo/geocaching/filter/AttributeFilter.java
index cadcf49..6f0d5da 100644
--- a/main/src/cgeo/geocaching/filter/AttributeFilter.java
+++ b/main/src/cgeo/geocaching/filter/AttributeFilter.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.filter;
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.LoadFlags.LoadFlag;
import android.content.res.Resources;
@@ -29,7 +29,7 @@ class AttributeFilter extends AbstractFilter {
@Override
public boolean accepts(final Geocache cache) {
- Geocache fullCache = cgData.loadCache(cache.getGeocode(), EnumSet.of(LoadFlag.LOAD_ATTRIBUTES));
+ Geocache fullCache = DataStore.loadCache(cache.getGeocode(), EnumSet.of(LoadFlag.LOAD_ATTRIBUTES));
if (fullCache == null) {
fullCache = cache;
}
@@ -40,8 +40,8 @@ class AttributeFilter extends AbstractFilter {
@Override
public List<IFilter> getFilters() {
- final String packageName = cgeoapplication.getInstance().getBaseContext().getPackageName();
- final Resources res = cgeoapplication.getInstance().getResources();
+ final String packageName = CgeoApplication.getInstance().getBaseContext().getPackageName();
+ final Resources res = CgeoApplication.getInstance().getResources();
final List<IFilter> filters = new LinkedList<IFilter>();
for (final String id: res.getStringArray(R.array.attribute_ids)) {
diff --git a/main/src/cgeo/geocaching/filter/DistanceFilter.java b/main/src/cgeo/geocaching/filter/DistanceFilter.java
index 2f39473..54225d2 100644
--- a/main/src/cgeo/geocaching/filter/DistanceFilter.java
+++ b/main/src/cgeo/geocaching/filter/DistanceFilter.java
@@ -3,7 +3,7 @@ package cgeo.geocaching.filter;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.IGeoData;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.geopoint.Geopoint;
import java.util.ArrayList;
@@ -18,7 +18,7 @@ class DistanceFilter extends AbstractFilter {
super(name);
this.minDistance = minDistance;
this.maxDistance = maxDistance;
- geo = cgeoapplication.getInstance().currentGeo();
+ geo = CgeoApplication.getInstance().currentGeo();
}
@Override
@@ -27,7 +27,7 @@ class DistanceFilter extends AbstractFilter {
final Geopoint coords = cache.getCoords();
if (coords == null) {
// If a cache has no coordinates, consider it to be out of range. It will
- // happen with archived cache.
+ // happen with archived caches.
return false;
}
final float distance = currentPos.distanceTo(coords);
@@ -50,8 +50,8 @@ class DistanceFilter extends AbstractFilter {
else {
maxRange = Integer.MAX_VALUE;
}
- final String range = maxRange == Integer.MAX_VALUE ? "> " + String.valueOf(minRange) : String.valueOf(minRange) + " - " + String.valueOf(maxRange);
- final String name = cgeoapplication.getInstance().getResources().getQuantityString(R.plurals.tts_kilometers, maxRange, range);
+ final String range = maxRange == Integer.MAX_VALUE ? "> " + minRange : minRange + " - " + maxRange;
+ final String name = CgeoApplication.getInstance().getResources().getQuantityString(R.plurals.tts_kilometers, maxRange, range);
filters.add(new DistanceFilter(name, minRange, maxRange));
}
return filters;
diff --git a/main/src/cgeo/geocaching/filter/FilterUserInterface.java b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
index 2404f44..8ff700a 100644
--- a/main/src/cgeo/geocaching/filter/FilterUserInterface.java
+++ b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.filter;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.Log;
@@ -41,7 +41,7 @@ public final class FilterUserInterface {
public FilterUserInterface(final Activity activity) {
this.activity = activity;
- this.res = cgeoapplication.getInstance().getResources();
+ this.res = CgeoApplication.getInstance().getResources();
registry = new ArrayList<FactoryEntry>();
if (Settings.getCacheType() == CacheType.ALL) {
diff --git a/main/src/cgeo/geocaching/filter/ModifiedFilter.java b/main/src/cgeo/geocaching/filter/ModifiedFilter.java
index 74befda..d976b69 100644
--- a/main/src/cgeo/geocaching/filter/ModifiedFilter.java
+++ b/main/src/cgeo/geocaching/filter/ModifiedFilter.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.filter;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import java.util.Collections;
import java.util.List;
@@ -10,7 +10,7 @@ import java.util.List;
class ModifiedFilter extends AbstractFilter implements IFilterFactory {
public ModifiedFilter() {
- super(cgeoapplication.getInstance().getString(R.string.caches_filter_modified));
+ super(CgeoApplication.getInstance().getString(R.string.caches_filter_modified));
}
@Override
diff --git a/main/src/cgeo/geocaching/filter/StateFilter.java b/main/src/cgeo/geocaching/filter/StateFilter.java
index 98589ab..d5b3027 100644
--- a/main/src/cgeo/geocaching/filter/StateFilter.java
+++ b/main/src/cgeo/geocaching/filter/StateFilter.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.filter;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import android.content.res.Resources;
@@ -13,7 +13,7 @@ import java.util.List;
abstract class StateFilter extends AbstractFilter {
- static final Resources res = cgeoapplication.getInstance().getResources();
+ static final Resources res = CgeoApplication.getInstance().getResources();
protected StateFilter(final String name) {
super(name);
diff --git a/main/src/cgeo/geocaching/filter/TrackablesFilter.java b/main/src/cgeo/geocaching/filter/TrackablesFilter.java
index 74f43be..d836a0f 100644
--- a/main/src/cgeo/geocaching/filter/TrackablesFilter.java
+++ b/main/src/cgeo/geocaching/filter/TrackablesFilter.java
@@ -1,15 +1,15 @@
package cgeo.geocaching.filter;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import java.util.Collections;
import java.util.List;
class TrackablesFilter extends AbstractFilter implements IFilterFactory {
public TrackablesFilter() {
- super(cgeoapplication.getInstance().getString(R.string.caches_filter_track));
+ super(CgeoApplication.getInstance().getString(R.string.caches_filter_track));
}
@Override
diff --git a/main/src/cgeo/geocaching/gcvote/GCVote.java b/main/src/cgeo/geocaching/gcvote/GCVote.java
index 868be2b..b245aa9 100644
--- a/main/src/cgeo/geocaching/gcvote/GCVote.java
+++ b/main/src/cgeo/geocaching/gcvote/GCVote.java
@@ -8,7 +8,7 @@ import cgeo.geocaching.utils.LeastRecentlyUsedMap;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.MatcherWrapper;
-import org.apache.commons.collections.MapUtils;
+import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -16,20 +16,28 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.regex.Pattern;
public final class GCVote {
- private static final Pattern patternLogIn = Pattern.compile("loggedIn='([^']+)'", Pattern.CASE_INSENSITIVE);
- private static final Pattern patternGuid = Pattern.compile("cacheId='([^']+)'", Pattern.CASE_INSENSITIVE);
- private static final Pattern patternWaypoint = Pattern.compile("waypoint='([^']+)'", Pattern.CASE_INSENSITIVE);
- private static final Pattern patternRating = Pattern.compile("voteAvg='([0-9.]+)'", Pattern.CASE_INSENSITIVE);
- private static final Pattern patternVotes = Pattern.compile("voteCnt='([0-9]+)'", Pattern.CASE_INSENSITIVE);
- private static final Pattern patternVote = Pattern.compile("voteUser='([0-9.]+)'", Pattern.CASE_INSENSITIVE);
- private static final Pattern patternVoteElement = Pattern.compile("<vote ([^>]+)>", Pattern.CASE_INSENSITIVE);
+ public static final float NO_RATING = 0;
+ private static final Pattern PATTERN_LOG_IN = Pattern.compile("loggedIn='([^']+)'", Pattern.CASE_INSENSITIVE);
+ private static final Pattern PATTERN_GUID = Pattern.compile("cacheId='([^']+)'", Pattern.CASE_INSENSITIVE);
+ private static final Pattern PATTERN_WAYPOINT = Pattern.compile("waypoint='([^']+)'", Pattern.CASE_INSENSITIVE);
+ private static final Pattern PATTERN_RATING = Pattern.compile("voteAvg='([0-9.]+)'", Pattern.CASE_INSENSITIVE);
+ private static final Pattern PATTERN_VOTES = Pattern.compile("voteCnt='([0-9]+)'", Pattern.CASE_INSENSITIVE);
+ private static final Pattern PATTERN_VOTE = Pattern.compile("voteUser='([0-9.]+)'", Pattern.CASE_INSENSITIVE);
+ private static final Pattern PATTERN_VOTE_ELEMENT = Pattern.compile("<vote ([^>]+)>", Pattern.CASE_INSENSITIVE);
private static final int MAX_CACHED_RATINGS = 1000;
- private static LeastRecentlyUsedMap<String, GCVoteRating> ratingsCache = new LeastRecentlyUsedMap.LruCache<String, GCVoteRating>(MAX_CACHED_RATINGS);
+ private static final LeastRecentlyUsedMap<String, GCVoteRating> RATINGS_CACHE = new LeastRecentlyUsedMap.LruCache<String, GCVoteRating>(MAX_CACHED_RATINGS);
+ private static final float MIN_RATING = 1;
+ private static final float MAX_RATING = 5;
+
+ private GCVote() {
+ // utility class
+ }
/**
* Get user rating for a given guid or geocode. For a guid first the ratings cache is checked
@@ -39,9 +47,9 @@ public final class GCVote {
* @param geocode
* @return
*/
- public static GCVoteRating getRating(String guid, String geocode) {
- if (StringUtils.isNotBlank(guid) && ratingsCache.containsKey(guid)) {
- return ratingsCache.get(guid);
+ public static GCVoteRating getRating(final String guid, final String geocode) {
+ if (StringUtils.isNotBlank(guid) && RATINGS_CACHE.containsKey(guid)) {
+ return RATINGS_CACHE.get(guid);
}
final Map<String, GCVoteRating> ratings = getRating(singletonOrNull(guid), singletonOrNull(geocode));
@@ -59,7 +67,7 @@ public final class GCVote {
* @param geocodes
* @return
*/
- public static Map<String, GCVoteRating> getRating(List<String> guids, List<String> geocodes) {
+ public static Map<String, GCVoteRating> getRating(final List<String> guids, final List<String> geocodes) {
if (guids == null && geocodes == null) {
return null;
}
@@ -88,7 +96,7 @@ public final class GCVote {
return null;
}
- final MatcherWrapper matcherVoteElement = new MatcherWrapper(patternVoteElement, page);
+ final MatcherWrapper matcherVoteElement = new MatcherWrapper(PATTERN_VOTE_ELEMENT, page);
while (matcherVoteElement.find()) {
String voteData = matcherVoteElement.group(1);
if (voteData == null) {
@@ -97,29 +105,21 @@ public final class GCVote {
String id = null;
String guid = null;
- try {
- final MatcherWrapper matcherGuid = new MatcherWrapper(patternGuid, voteData);
- if (matcherGuid.find()) {
- if (matcherGuid.groupCount() > 0) {
- guid = matcherGuid.group(1);
- if (requestByGuids) {
- id = guid;
- }
+ final MatcherWrapper matcherGuid = new MatcherWrapper(PATTERN_GUID, voteData);
+ if (matcherGuid.find()) {
+ if (matcherGuid.groupCount() > 0) {
+ guid = matcherGuid.group(1);
+ if (requestByGuids) {
+ id = guid;
}
}
- } catch (Exception e) {
- Log.w("GCVote.getRating: Failed to parse guid");
}
if (!requestByGuids) {
- try {
- final MatcherWrapper matcherWp = new MatcherWrapper(patternWaypoint, voteData);
- if (matcherWp.find()) {
- if (matcherWp.groupCount() > 0) {
- id = matcherWp.group(1);
- }
+ final MatcherWrapper matcherWp = new MatcherWrapper(PATTERN_WAYPOINT, voteData);
+ if (matcherWp.find()) {
+ if (matcherWp.groupCount() > 0) {
+ id = matcherWp.group(1);
}
- } catch (Exception e) {
- Log.w("GCVote.getRating: Failed to parse waypoint");
}
}
if (id == null) {
@@ -127,53 +127,49 @@ public final class GCVote {
}
boolean loggedIn = false;
- try {
- final MatcherWrapper matcherLoggedIn = new MatcherWrapper(patternLogIn, page);
- if (matcherLoggedIn.find()) {
- if (matcherLoggedIn.groupCount() > 0) {
- if (matcherLoggedIn.group(1).equalsIgnoreCase("true")) {
- loggedIn = true;
- }
+ final MatcherWrapper matcherLoggedIn = new MatcherWrapper(PATTERN_LOG_IN, page);
+ if (matcherLoggedIn.find()) {
+ if (matcherLoggedIn.groupCount() > 0) {
+ if (matcherLoggedIn.group(1).equalsIgnoreCase("true")) {
+ loggedIn = true;
}
}
- } catch (Exception e) {
- Log.w("GCVote.getRating: Failed to parse loggedIn");
}
- float rating = 0;
+ float rating = NO_RATING;
try {
- final MatcherWrapper matcherRating = new MatcherWrapper(patternRating, voteData);
+ final MatcherWrapper matcherRating = new MatcherWrapper(PATTERN_RATING, voteData);
if (matcherRating.find()) {
rating = Float.parseFloat(matcherRating.group(1));
}
- } catch (Exception e) {
+ } catch (NumberFormatException e) {
Log.w("GCVote.getRating: Failed to parse rating");
}
- if (rating <= 0) {
+ if (!isValidRating(rating)) {
continue;
}
int votes = -1;
try {
- final MatcherWrapper matcherVotes = new MatcherWrapper(patternVotes, voteData);
+ final MatcherWrapper matcherVotes = new MatcherWrapper(PATTERN_VOTES, voteData);
if (matcherVotes.find()) {
votes = Integer.parseInt(matcherVotes.group(1));
}
- } catch (Exception e) {
+ } catch (NumberFormatException e) {
Log.w("GCVote.getRating: Failed to parse vote count");
}
if (votes < 0) {
continue;
}
- float myVote = 0;
+ float myVote = NO_RATING;
if (loggedIn) {
try {
- final MatcherWrapper matcherVote = new MatcherWrapper(patternVote, voteData);
+ final MatcherWrapper matcherVote = new MatcherWrapper(PATTERN_VOTE, voteData);
if (matcherVote.find()) {
myVote = Float.parseFloat(matcherVote.group(1));
}
- } catch (Exception e) {
+ } catch (NumberFormatException e) {
Log.w("GCVote.getRating: Failed to parse user's vote");
}
}
@@ -181,10 +177,10 @@ public final class GCVote {
if (StringUtils.isNotBlank(id)) {
GCVoteRating gcvoteRating = new GCVoteRating(rating, votes, myVote);
ratings.put(id, gcvoteRating);
- ratingsCache.put(guid, gcvoteRating);
+ RATINGS_CACHE.put(guid, gcvoteRating);
}
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Log.e("GCVote.getRating", e);
}
@@ -198,18 +194,11 @@ public final class GCVote {
* @param vote
* @return {@code true} if the rating was submitted successfully
*/
- public static boolean setRating(Geocache cache, double vote) {
- if (!Settings.isGCvoteLogin()) {
- return false;
- }
- if (!cache.supportsGCVote()) {
+ public static boolean setRating(final Geocache cache, final float vote) {
+ if (!isVotingPossible(cache)) {
return false;
}
- String guid = cache.getGuid();
- if (StringUtils.isBlank(guid)) {
- return false;
- }
- if (vote <= 0.0 || vote > 5.0) {
+ if (!isValidRating(vote)) {
return false;
}
@@ -221,16 +210,16 @@ public final class GCVote {
final Parameters params = new Parameters(
"userName", login.left,
"password", login.right,
- "cacheId", guid,
+ "cacheId", cache.getGuid(),
"voteUser", String.format("%.1f", vote).replace(',', '.'),
"version", "cgeo");
final String result = Network.getResponseData(Network.getRequest("http://gcvote.com/setVote.php", params));
- return result.trim().equalsIgnoreCase("ok");
+ return result != null && result.trim().equalsIgnoreCase("ok");
}
- public static void loadRatings(ArrayList<Geocache> caches) {
+ public static void loadRatings(final ArrayList<Geocache> caches) {
if (!Settings.isRatingWanted()) {
return;
}
@@ -266,4 +255,17 @@ public final class GCVote {
Log.e("GCvote.loadRatings", e);
}
}
+
+ public static boolean isValidRating(final float rating) {
+ return rating >= MIN_RATING && rating <= MAX_RATING;
+ }
+
+ public static String getRatingText(final float rating) {
+ return String.format(Locale.getDefault(), "%.1f", rating);
+ }
+
+ public static boolean isVotingPossible(final Geocache cache) {
+ return Settings.isGCvoteLogin() && StringUtils.isNotBlank(cache.getGuid()) && cache.supportsGCVote();
+ }
+
}
diff --git a/main/src/cgeo/geocaching/gcvote/GCVoteRating.java b/main/src/cgeo/geocaching/gcvote/GCVoteRating.java
index f6813a2..1e65589 100644
--- a/main/src/cgeo/geocaching/gcvote/GCVoteRating.java
+++ b/main/src/cgeo/geocaching/gcvote/GCVoteRating.java
@@ -5,7 +5,7 @@ public final class GCVoteRating {
private final int votes;
private final float myVote;
- public GCVoteRating(float rating, int votes, float myVote) {
+ public GCVoteRating(final float rating, final int votes, final float myVote) {
this.rating = rating;
this.votes = votes;
this.myVote = myVote;
diff --git a/main/src/cgeo/geocaching/list/AbstractList.java b/main/src/cgeo/geocaching/list/AbstractList.java
new file mode 100644
index 0000000..ec783eb
--- /dev/null
+++ b/main/src/cgeo/geocaching/list/AbstractList.java
@@ -0,0 +1,28 @@
+package cgeo.geocaching.list;
+
+import org.eclipse.jdt.annotation.Nullable;
+
+import android.util.SparseArray;
+
+public abstract class AbstractList {
+
+ public final int id;
+ public final String title;
+ private static SparseArray<AbstractList> LISTS = new SparseArray<AbstractList>();
+
+ public AbstractList(final int id, final String title) {
+ this.id = id;
+ this.title = title;
+ LISTS.put(id, this);
+ }
+
+ public abstract String getTitleAndCount();
+
+ public abstract boolean isConcrete();
+
+ @Nullable
+ public static AbstractList getListById(int listId) {
+ return LISTS.get(listId);
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/list/PseudoList.java b/main/src/cgeo/geocaching/list/PseudoList.java
new file mode 100644
index 0000000..365d6fd
--- /dev/null
+++ b/main/src/cgeo/geocaching/list/PseudoList.java
@@ -0,0 +1,37 @@
+package cgeo.geocaching.list;
+
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.R;
+
+public class PseudoList extends AbstractList {
+
+ private static final int ALL_LIST_ID = 2;
+ /**
+ * list entry to show all caches
+ */
+ public static final PseudoList ALL_LIST = new PseudoList(ALL_LIST_ID, R.string.list_all_lists);
+
+ private static final int NEW_LIST_ID = 3;
+ /**
+ * list entry to create a new list
+ */
+ public static final AbstractList NEW_LIST = new PseudoList(NEW_LIST_ID, R.string.list_menu_create);
+
+ /**
+ * private constructor to have all instances as constants in the class
+ */
+ private PseudoList(int id, final int titleResourceId) {
+ super(id, CgeoApplication.getInstance().getResources().getString(titleResourceId));
+ }
+
+ @Override
+ public String getTitleAndCount() {
+ return "<" + title + ">";
+ }
+
+ @Override
+ public boolean isConcrete() {
+ return false;
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/StoredList.java b/main/src/cgeo/geocaching/list/StoredList.java
index 4946420..d3729c0 100644
--- a/main/src/cgeo/geocaching/StoredList.java
+++ b/main/src/cgeo/geocaching/list/StoredList.java
@@ -1,9 +1,13 @@
-package cgeo.geocaching;
+package cgeo.geocaching.list;
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
+import cgeo.geocaching.R;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.utils.RunnableWithArgument;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
import android.app.Activity;
import android.app.AlertDialog;
@@ -18,21 +22,18 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-public final class StoredList {
+public final class StoredList extends AbstractList {
public static final int TEMPORARY_LIST_ID = 0;
+ public static final StoredList TEMPORARY_LIST = new StoredList(TEMPORARY_LIST_ID, "<temporary>", 0); // Never displayed
public static final int STANDARD_LIST_ID = 1;
- public static final int ALL_LIST_ID = 2;
-
- public final int id;
- public final String title;
private final int count; // this value is only valid as long as the list is not changed by other database operations
public StoredList(int id, String title, int count) {
- this.id = id;
- this.title = title;
+ super(id, title);
this.count = count;
}
+ @Override
public String getTitleAndCount() {
return title + " [" + count + "]";
}
@@ -58,45 +59,43 @@ public final class StoredList {
public static class UserInterface {
private final Activity activity;
- private final cgeoapplication app;
+ private final CgeoApplication app;
private final Resources res;
public UserInterface(final Activity activity) {
this.activity = activity;
- app = cgeoapplication.getInstance();
+ app = CgeoApplication.getInstance();
res = app.getResources();
}
- public void promptForListSelection(final int titleId, final RunnableWithArgument<Integer> runAfterwards) {
+ public void promptForListSelection(final int titleId, @NonNull final RunnableWithArgument<Integer> runAfterwards) {
promptForListSelection(titleId, runAfterwards, false, -1);
}
- public void promptForListSelection(final int titleId, final RunnableWithArgument<Integer> runAfterwards, final boolean onlyConcreteLists, final int exceptListId) {
+ public void promptForListSelection(final int titleId, @NonNull final RunnableWithArgument<Integer> runAfterwards, final boolean onlyConcreteLists, final int exceptListId) {
promptForListSelection(titleId, runAfterwards, onlyConcreteLists, exceptListId, StringUtils.EMPTY);
}
- public void promptForListSelection(final int titleId, final RunnableWithArgument<Integer> runAfterwards, final boolean onlyConcreteLists, final int exceptListId, final String newListName) {
- final List<StoredList> lists = getSortedLists();
-
- if (lists == null) {
- return;
- }
+ public void promptForListSelection(final int titleId, @NonNull final RunnableWithArgument<Integer> runAfterwards, final boolean onlyConcreteLists, final int exceptListId, final String newListName) {
+ final List<AbstractList> lists = new ArrayList<AbstractList>();
+ lists.addAll(getSortedLists());
if (exceptListId > StoredList.TEMPORARY_LIST_ID) {
- StoredList exceptList = cgData.getList(exceptListId);
+ StoredList exceptList = DataStore.getList(exceptListId);
if (exceptList != null) {
lists.remove(exceptList);
}
}
+ if (!onlyConcreteLists) {
+ lists.add(PseudoList.ALL_LIST);
+ }
+ lists.add(PseudoList.NEW_LIST);
+
final List<CharSequence> listsTitle = new ArrayList<CharSequence>();
- for (StoredList list : lists) {
+ for (AbstractList list : lists) {
listsTitle.add(list.getTitleAndCount());
}
- if (!onlyConcreteLists) {
- listsTitle.add("<" + res.getString(R.string.list_menu_all_lists) + ">");
- }
- listsTitle.add("<" + res.getString(R.string.list_menu_create) + ">");
final CharSequence[] items = new CharSequence[listsTitle.size()];
@@ -105,26 +104,23 @@ public final class StoredList {
builder.setItems(listsTitle.toArray(items), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int itemId) {
- if (itemId == lists.size() && !onlyConcreteLists) {
- // all lists
- runAfterwards.run(StoredList.ALL_LIST_ID);
- } else if (itemId >= lists.size()) {
+ final AbstractList list = lists.get(itemId);
+ if (list == PseudoList.NEW_LIST) {
// create new list on the fly
promptForListCreation(runAfterwards, newListName);
}
else {
- if (runAfterwards != null) {
- runAfterwards.run(lists.get(itemId).id);
- }
+ runAfterwards.run(lists.get(itemId).id);
}
}
});
builder.create().show();
}
+ @NonNull
private static List<StoredList> getSortedLists() {
final Collator collator = Collator.getInstance();
- final List<StoredList> lists = cgData.getLists();
+ final List<StoredList> lists = DataStore.getLists();
Collections.sort(lists, new Comparator<StoredList>() {
@Override
@@ -143,18 +139,17 @@ public final class StoredList {
return lists;
}
- public void promptForListCreation(final RunnableWithArgument<Integer> runAfterwards, String newListName) {
+ public void promptForListCreation(@NonNull final RunnableWithArgument<Integer> runAfterwards, String newListName) {
handleListNameInput(newListName, R.string.list_dialog_create_title, R.string.list_dialog_create, new RunnableWithArgument<String>() {
@Override
public void run(final String listName) {
- final int newId = cgData.createList(listName);
+ final int newId = DataStore.createList(listName);
+ new StoredList(newId, listName, 0);
- if (newId >= cgData.customListIdOffset) {
+ if (newId >= DataStore.customListIdOffset) {
ActivityMixin.showToast(activity, res.getString(R.string.list_dialog_create_ok));
- if (runAfterwards != null) {
- runAfterwards.run(newId);
- }
+ runAfterwards.run(newId);
} else {
ActivityMixin.showToast(activity, res.getString(R.string.list_dialog_create_err));
}
@@ -190,16 +185,14 @@ public final class StoredList {
alert.show();
}
- public void promptForListRename(final int listId, final Runnable runAfterRename) {
- final StoredList list = cgData.getList(listId);
+ public void promptForListRename(final int listId, @NonNull final Runnable runAfterRename) {
+ final StoredList list = DataStore.getList(listId);
handleListNameInput(list.title, R.string.list_dialog_rename_title, R.string.list_dialog_rename, new RunnableWithArgument<String>() {
@Override
public void run(final String listName) {
- cgData.renameList(listId, listName);
- if (runAfterRename != null) {
- runAfterRename.run();
- }
+ DataStore.renameList(listId, listName);
+ runAfterRename.run();
}
});
}
@@ -218,9 +211,15 @@ public final class StoredList {
* Return the given list, if it is a concrete list. Return the default list otherwise.
*/
public static int getConcreteList(int listId) {
- if (listId == ALL_LIST_ID || listId == TEMPORARY_LIST_ID) {
+ if (listId == PseudoList.ALL_LIST.id || listId == TEMPORARY_LIST_ID) {
return STANDARD_LIST_ID;
}
return listId;
}
+
+ @Override
+ public boolean isConcrete() {
+ return true;
+ }
+
}
diff --git a/main/src/cgeo/geocaching/loaders/HistoryGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/HistoryGeocacheListLoader.java
index 722f9f5..605f461 100644
--- a/main/src/cgeo/geocaching/loaders/HistoryGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/HistoryGeocacheListLoader.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.loaders;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.settings.Settings;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.geopoint.Geopoint;
@@ -18,7 +18,7 @@ public class HistoryGeocacheListLoader extends AbstractSearchLoader {
@Override
public SearchResult runSearch() {
- return cgData.getHistoryOfCaches(true, coords != null ? Settings.getCacheType() : CacheType.ALL);
+ return DataStore.getHistoryOfCaches(true, coords != null ? Settings.getCacheType() : CacheType.ALL);
}
}
diff --git a/main/src/cgeo/geocaching/loaders/OfflineGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/OfflineGeocacheListLoader.java
index ab8ba6a..5088484 100644
--- a/main/src/cgeo/geocaching/loaders/OfflineGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/OfflineGeocacheListLoader.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.loaders;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.settings.Settings;
-import cgeo.geocaching.cgData;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.geopoint.Geopoint;
import android.content.Context;
@@ -20,7 +20,7 @@ public class OfflineGeocacheListLoader extends AbstractSearchLoader {
@Override
public SearchResult runSearch() {
- return cgData.getBatchOfStoredCaches(searchCenter, Settings.getCacheType(), listId);
+ return DataStore.getBatchOfStoredCaches(searchCenter, Settings.getCacheType(), listId);
}
public void setListId(int listId) {
diff --git a/main/src/cgeo/geocaching/loaders/RemoveFromHistoryLoader.java b/main/src/cgeo/geocaching/loaders/RemoveFromHistoryLoader.java
index 2229afe..8ca0fa5 100644
--- a/main/src/cgeo/geocaching/loaders/RemoveFromHistoryLoader.java
+++ b/main/src/cgeo/geocaching/loaders/RemoveFromHistoryLoader.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.loaders;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.settings.Settings;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.geopoint.Geopoint;
@@ -21,8 +21,8 @@ public class RemoveFromHistoryLoader extends AbstractSearchLoader {
@Override
public SearchResult runSearch() {
- cgData.clearVisitDate(selected);
- return cgData.getHistoryOfCaches(true, coords != null ? Settings.getCacheType() : CacheType.ALL);
+ DataStore.clearVisitDate(selected);
+ return DataStore.getHistoryOfCaches(true, coords != null ? Settings.getCacheType() : CacheType.ALL);
}
}
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index 0817170..a32a669 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -1,15 +1,14 @@
package cgeo.geocaching.maps;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.DirectionProvider;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.IGeoData;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.StoredList;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
-import cgeo.geocaching.cgeocaches;
+import cgeo.geocaching.DataStore;
+import cgeo.geocaching.CacheListActivity;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.gc.Login;
@@ -22,6 +21,7 @@ import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.maps.interfaces.CachesOverlayItemImpl;
import cgeo.geocaching.maps.interfaces.GeoPointImpl;
import cgeo.geocaching.maps.interfaces.MapActivityImpl;
@@ -40,7 +40,7 @@ import cgeo.geocaching.utils.LeastRecentlyUsedSet;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.RunnableWithArgument;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.HashCodeBuilder;
@@ -128,7 +128,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
private MapItemFactory mapItemFactory = null;
private Activity activity = null;
private MapViewImpl mapView = null;
- private cgeoapplication app = null;
+ private CgeoApplication app = null;
final private GeoDirHandler geoDirUpdate = new UpdateLoc();
private SearchResult searchIntent = null;
private String geocodeIntent = null;
@@ -359,9 +359,9 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
// class init
res = this.getResources();
activity = this.getActivity();
- app = (cgeoapplication) activity.getApplication();
+ app = (CgeoApplication) activity.getApplication();
- int countBubbleCnt = cgData.getAllCachesCount();
+ int countBubbleCnt = DataStore.getAllCachesCount();
caches = new LeastRecentlyUsedSet<Geocache>(MAX_CACHES + countBubbleCnt);
final MapProvider mapProvider = Settings.getMapProvider();
@@ -491,7 +491,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
if (!CollectionUtils.isEmpty(dirtyCaches)) {
for (String geocode : dirtyCaches) {
- Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
+ Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
if (cache != null) {
// new collection type needs to remove first
caches.remove(cache);
@@ -609,7 +609,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
default: // DETAILED
menu.findItem(R.id.menu_strategy_detailed).setChecked(true);
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Log.e("CGeoMap.onPrepareOptionsMenu", e);
}
@@ -641,7 +641,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
final List<String> geocodes = new ArrayList<String>();
for (final String geocode : geocodesInViewport) {
- if (!cgData.isOffline(geocode, null)) {
+ if (!DataStore.isOffline(geocode, null)) {
geocodes.add(geocode);
}
}
@@ -690,7 +690,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
selectMapTheme();
return true;
case R.id.menu_as_list: {
- cgeocaches.startActivityMap(activity, new SearchResult(getGeocodesForCachesInViewport()));
+ CacheListActivity.startActivityMap(activity, new SearchResult(getGeocodesForCachesInViewport()));
return true;
}
case R.id.menu_strategy_fastest: {
@@ -948,7 +948,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
mapView.repaintRequired(overlayPosition);
}
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Log.w("Failed to update location.");
}
}
@@ -1090,7 +1090,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
SearchResult searchResult;
if (mapMode == MapMode.LIVE) {
- searchResult = isLiveEnabled ? new SearchResult() : new SearchResult(cgData.loadStoredInViewport(viewport, Settings.getCacheType()));
+ searchResult = isLiveEnabled ? new SearchResult() : new SearchResult(DataStore.loadStoredInViewport(viewport, Settings.getCacheType()));
} else {
// map started from another activity
searchResult = searchIntent != null ? new SearchResult(searchIntent) : new SearchResult();
@@ -1100,7 +1100,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
// live mode search result
if (isLiveEnabled) {
- searchResult.addSearchResult(cgData.loadCachedInViewport(viewport, Settings.getCacheType()));
+ searchResult.addSearchResult(DataStore.loadCachedInViewport(viewport, Settings.getCacheType()));
}
downloaded = true;
@@ -1123,7 +1123,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
|| mapMode == MapMode.COORDS) {
//All visible waypoints
CacheType type = Settings.getCacheType();
- Set<Waypoint> waypointsInViewport = cgData.loadWaypoints(viewport, excludeMine, excludeDisabled, type);
+ Set<Waypoint> waypointsInViewport = DataStore.loadWaypoints(viewport, excludeMine, excludeDisabled, type);
waypoints.addAll(waypointsInViewport);
}
else {
@@ -1196,8 +1196,8 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
// first remove filtered out
final Set<String> filteredCodes = searchResult.getFilteredGeocodes();
Log.d("Filtering out " + filteredCodes.size() + " caches: " + filteredCodes.toString());
- caches.removeAll(cgData.loadCaches(filteredCodes, LoadFlags.LOAD_CACHE_ONLY));
- cgData.removeCaches(filteredCodes, EnumSet.of(RemoveFlag.REMOVE_CACHE));
+ caches.removeAll(DataStore.loadCaches(filteredCodes, LoadFlags.LOAD_CACHE_ONLY));
+ DataStore.removeCaches(filteredCodes, EnumSet.of(RemoveFlag.REMOVE_CACHE));
// new collection type needs to remove first to refresh
caches.removeAll(result);
caches.addAll(result);
@@ -1409,7 +1409,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
break;
}
- if (!cgData.isOffline(geocode, null)) {
+ if (!DataStore.isOffline(geocode, null)) {
if ((System.currentTimeMillis() - last) < 1500) {
try {
int delay = 1000 + (int) (Math.random() * 1000.0) - (int) (System.currentTimeMillis() - last);
@@ -1418,7 +1418,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
sleep(delay);
- } catch (Exception e) {
+ } catch (InterruptedException e) {
// nothing
}
}
@@ -1501,7 +1501,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
try {
mapController.setCenter(mapItemFactory.getGeoPointBase(new Geopoint(mapState[0] / 1.0e6, mapState[1] / 1.0e6)));
mapController.setZoom(mapState[2]);
- } catch (Exception e) {
+ } catch (RuntimeException e) {
// nothing at all
}
@@ -1512,9 +1512,9 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
Viewport viewport = null;
if (geocodeCenter != null) {
- viewport = cgData.getBounds(geocodeCenter);
+ viewport = DataStore.getBounds(geocodeCenter);
} else if (searchCenter != null) {
- viewport = cgData.getBounds(searchCenter.getGeocodes());
+ viewport = DataStore.getBounds(searchCenter.getGeocodes());
}
if (viewport == null) {
@@ -1525,7 +1525,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
if (viewport.getLatitudeSpan() != 0 && viewport.getLongitudeSpan() != 0) {
mapController.zoomToSpan((int) (viewport.getLatitudeSpan() * 1e6), (int) (viewport.getLongitudeSpan() * 1e6));
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
// nothing at all
}
diff --git a/main/src/cgeo/geocaching/maps/CachesOverlay.java b/main/src/cgeo/geocaching/maps/CachesOverlay.java
index 8e117eb..cd2ff75 100644
--- a/main/src/cgeo/geocaching/maps/CachesOverlay.java
+++ b/main/src/cgeo/geocaching/maps/CachesOverlay.java
@@ -4,9 +4,8 @@ import cgeo.geocaching.CachePopup;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.IWaypoint;
import cgeo.geocaching.R;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.WaypointPopup;
-import cgeo.geocaching.cgData;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.activity.Progress;
import cgeo.geocaching.connector.gc.GCMap;
import cgeo.geocaching.enumerations.CacheType;
@@ -19,11 +18,13 @@ import cgeo.geocaching.maps.interfaces.MapItemFactory;
import cgeo.geocaching.maps.interfaces.MapProjectionImpl;
import cgeo.geocaching.maps.interfaces.MapProvider;
import cgeo.geocaching.maps.interfaces.MapViewImpl;
+import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
import android.content.Context;
+import android.content.res.Resources.NotFoundException;
import android.graphics.Canvas;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
@@ -121,6 +122,8 @@ public class CachesOverlay extends AbstractItemizedOverlay {
try {
lazyInitializeDrawingObjects();
canvas.setDrawFilter(setFilter);
+ final int height = canvas.getHeight();
+ final int width = canvas.getWidth();
final int radius = calculateDrawingRadius(projection);
final Point center = new Point();
@@ -130,16 +133,17 @@ public class CachesOverlay extends AbstractItemizedOverlay {
final Geopoint itemCoord = item.getCoord().getCoords();
final GeoPointImpl itemGeo = mapItemFactory.getGeoPointBase(itemCoord);
projection.toPixels(itemGeo, center);
-
- // dashed circle around the waypoint
- blockedCircle.setColor(0x66BB0000);
- blockedCircle.setStyle(Style.STROKE);
- canvas.drawCircle(center.x, center.y, radius, blockedCircle);
-
- // filling the circle area with a transparent color
- blockedCircle.setColor(0x44BB0000);
- blockedCircle.setStyle(Style.FILL);
- canvas.drawCircle(center.x, center.y, radius, blockedCircle);
+ if (center.x > -radius && center.y > -radius && center.x < width + radius && center.y < height + radius) {
+ // dashed circle around the waypoint
+ blockedCircle.setColor(0x66BB0000);
+ blockedCircle.setStyle(Style.STROKE);
+ canvas.drawCircle(center.x, center.y, radius, blockedCircle);
+
+ // filling the circle area with a transparent color
+ blockedCircle.setColor(0x44BB0000);
+ blockedCircle.setStyle(Style.FILL);
+ canvas.drawCircle(center.x, center.y, radius, blockedCircle);
+ }
}
}
canvas.setDrawFilter(removeFilter);
@@ -224,7 +228,7 @@ public class CachesOverlay extends AbstractItemizedOverlay {
final IWaypoint coordinate = item.getCoord();
if (StringUtils.isNotBlank(coordinate.getCoordType()) && coordinate.getCoordType().equalsIgnoreCase("cache") && StringUtils.isNotBlank(coordinate.getGeocode())) {
- Geocache cache = cgData.loadCache(coordinate.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
+ Geocache cache = DataStore.loadCache(coordinate.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
RequestDetailsThread requestDetailsThread = new RequestDetailsThread(cache);
if (!requestDetailsThread.requestRequired()) {
// don't show popup if we have enough details
@@ -243,7 +247,7 @@ public class CachesOverlay extends AbstractItemizedOverlay {
}
progress.dismiss();
- } catch (Exception e) {
+ } catch (NotFoundException e) {
Log.e("CachesOverlay.onTap", e);
if (progress != null) {
progress.dismiss();
diff --git a/main/src/cgeo/geocaching/maps/MapProviderFactory.java b/main/src/cgeo/geocaching/maps/MapProviderFactory.java
index a03fc47..2e43e19 100644
--- a/main/src/cgeo/geocaching/maps/MapProviderFactory.java
+++ b/main/src/cgeo/geocaching/maps/MapProviderFactory.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.maps;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.maps.google.GoogleMapProvider;
import cgeo.geocaching.maps.interfaces.MapProvider;
import cgeo.geocaching.maps.interfaces.MapSource;
@@ -31,7 +31,7 @@ public class MapProviderFactory {
public static boolean isGoogleMapsInstalled() {
// Check if API key is available
- if (StringUtils.isBlank(cgeoapplication.getInstance().getString(R.string.maps_api_key))) {
+ if (StringUtils.isBlank(CgeoApplication.getInstance().getString(R.string.maps_api_key))) {
Log.w("No Google API key available.");
return false;
}
diff --git a/main/src/cgeo/geocaching/maps/PositionHistory.java b/main/src/cgeo/geocaching/maps/PositionHistory.java
index 9b090fc..bc6779e 100644
--- a/main/src/cgeo/geocaching/maps/PositionHistory.java
+++ b/main/src/cgeo/geocaching/maps/PositionHistory.java
@@ -28,7 +28,7 @@ public class PositionHistory {
if (coordinates.getAccuracy() >= 50f) {
return;
}
- if (coordinates.getLatitude() == 0.0 && coordinates.getLatitude() == 0.0) {
+ if (coordinates.getLatitude() == 0.0 && coordinates.getLongitude() == 0.0) {
return;
}
if (history.isEmpty()) {
diff --git a/main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java b/main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java
index 1fa38ad..cb95b2c 100644
--- a/main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java
+++ b/main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.maps.google;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.maps.AbstractMapProvider;
import cgeo.geocaching.maps.AbstractMapSource;
import cgeo.geocaching.maps.interfaces.MapItemFactory;
@@ -20,7 +20,7 @@ public final class GoogleMapProvider extends AbstractMapProvider {
private final MapItemFactory mapItemFactory;
private GoogleMapProvider() {
- final Resources resources = cgeoapplication.getInstance().getResources();
+ final Resources resources = CgeoApplication.getInstance().getResources();
registerMapSource(new GoogleMapSource(this, resources.getString(R.string.map_source_google_map)));
registerMapSource(new GoogleSatelliteSource(this, resources.getString(R.string.map_source_google_satellite)));
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
index d099b79..50dc51d 100644
--- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
+++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.maps.mapsforge;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.maps.AbstractMapProvider;
import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.maps.interfaces.MapItemFactory;
@@ -33,7 +33,7 @@ public final class MapsforgeMapProvider extends AbstractMapProvider {
private MapItemFactory mapItemFactory = new MapsforgeMapItemFactory();
private MapsforgeMapProvider() {
- final Resources resources = cgeoapplication.getInstance().getResources();
+ final Resources resources = CgeoApplication.getInstance().getResources();
registerMapSource(new MapsforgeMapSource(MAPSFORGE_MAPNIK_ID, this, resources.getString(R.string.map_source_osm_mapnik), MapGeneratorInternal.MAPNIK));
registerMapSource(new MapsforgeMapSource(MAPSFORGE_CYCLEMAP_ID, this, resources.getString(R.string.map_source_osm_cyclemap), MapGeneratorInternal.OPENCYCLEMAP));
@@ -163,7 +163,7 @@ public final class MapsforgeMapProvider extends AbstractMapProvider {
public void updateOfflineMaps() {
MapProviderFactory.deleteOfflineMapSources();
- final Resources resources = cgeoapplication.getInstance().getResources();
+ final Resources resources = CgeoApplication.getInstance().getResources();
final List<String> offlineMaps = getOfflineMaps();
for (String mapFile : offlineMaps) {
final String mapName = StringUtils.capitalize(StringUtils.substringBeforeLast(new File(mapFile).getName(), "."));
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
index aa11405..dc4e82c 100644
--- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
+++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapView.java
@@ -1,7 +1,6 @@
package cgeo.geocaching.maps.mapsforge;
import cgeo.geocaching.R;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.maps.CachesOverlay;
import cgeo.geocaching.maps.PositionOverlay;
@@ -15,6 +14,7 @@ import cgeo.geocaching.maps.interfaces.MapViewImpl;
import cgeo.geocaching.maps.interfaces.OnMapDragListener;
import cgeo.geocaching.maps.interfaces.OverlayImpl;
import cgeo.geocaching.maps.interfaces.OverlayImpl.OverlayType;
+import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
@@ -46,6 +46,9 @@ public class MapsforgeMapView extends MapView implements MapViewImpl {
public MapsforgeMapView(Context context, AttributeSet attrs) {
super(context, attrs);
gestureDetector = new GestureDetector(context, new GestureListener());
+ if (Settings.isScaleMapsforgeText()) {
+ this.setTextScale(getResources().getDisplayMetrics().density);
+ }
}
@Override
diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java
index 348ab45..0daa588 100644
--- a/main/src/cgeo/geocaching/network/HtmlImage.java
+++ b/main/src/cgeo/geocaching/network/HtmlImage.java
@@ -1,18 +1,18 @@
package cgeo.geocaching.network;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.StoredList;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.compatibility.Compatibility;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.files.LocalStorage;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.utils.FileUtils;
-import cgeo.geocaching.utils.IOUtils;
import cgeo.geocaching.utils.ImageUtils;
import cgeo.geocaching.utils.Log;
import ch.boye.httpclientandroidlib.HttpResponse;
import ch.boye.httpclientandroidlib.androidextra.Base64;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import android.content.res.Resources;
@@ -77,7 +77,7 @@ public class HtmlImage implements Html.ImageGetter {
Point displaySize = Compatibility.getDisplaySize();
this.maxWidth = displaySize.x - 25;
this.maxHeight = displaySize.y - 25;
- this.resources = cgeoapplication.getInstance().getResources();
+ this.resources = CgeoApplication.getInstance().getResources();
}
@Override
@@ -97,6 +97,8 @@ public class HtmlImage implements Html.ImageGetter {
final File file = LocalStorage.getStorageFile(pseudoGeocode, url, true, true);
if (url.startsWith("data:image/")) {
if (url.contains(";base64,")) {
+ // TODO: when we use SDK level 8 or above, we can use the streaming version of the base64
+ // Android utilities.
byte[] decoded = Base64.decode(StringUtils.substringAfter(url, ";base64,"), Base64.DEFAULT);
OutputStream out = null;
try {
diff --git a/main/src/cgeo/geocaching/network/Network.java b/main/src/cgeo/geocaching/network/Network.java
index 3aa1828..1810216 100644
--- a/main/src/cgeo/geocaching/network/Network.java
+++ b/main/src/cgeo/geocaching/network/Network.java
@@ -34,9 +34,9 @@ import ch.boye.httpclientandroidlib.params.CoreProtocolPNames;
import ch.boye.httpclientandroidlib.params.HttpParams;
import ch.boye.httpclientandroidlib.protocol.HttpContext;
import ch.boye.httpclientandroidlib.util.EntityUtils;
-
import org.apache.commons.lang3.CharEncoding;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
@@ -54,8 +54,6 @@ import java.nio.charset.Charset;
public abstract class Network {
- private static final int NB_DOWNLOAD_RETRIES = 4;
-
/** User agent id */
private final static String PC_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";
/** Native user agent, taken from a Android 2.2 Nexus **/
@@ -75,7 +73,7 @@ public abstract class Network {
static {
Network.clientParams.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, CharEncoding.UTF_8);
Network.clientParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30000);
- Network.clientParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, 30000);
+ Network.clientParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, 90000);
Network.clientParams.setParameter(ClientPNames.HANDLE_REDIRECTS, true);
}
@@ -150,6 +148,7 @@ public abstract class Network {
* @param params the parameters to add to the POST request
* @return the HTTP response, or null in case of an encoding error params
*/
+ @Nullable
public static HttpResponse postRequest(final String uri, final Parameters params) {
return request("POST", uri, params, null, null);
}
@@ -162,6 +161,7 @@ public abstract class Network {
* @params headers the headers to add to the request
* @return the HTTP response, or null in case of an encoding error params
*/
+ @Nullable
public static HttpResponse postRequest(final String uri, final Parameters params, final Parameters headers) {
return request("POST", uri, params, headers, null);
}
@@ -173,6 +173,7 @@ public abstract class Network {
* @param json the json object to add to the POST request
* @return the HTTP response, or null in case of an encoding error params
*/
+ @Nullable
public static HttpResponse postJsonRequest(final String uri, final JSONObject json) {
HttpPost request = new HttpPost(uri);
request.addHeader("Content-Type", "application/json; charset=utf-8");
@@ -184,7 +185,7 @@ public abstract class Network {
return null;
}
}
- return doRepeatedRequests(request);
+ return doLogRequest(request);
}
/**
@@ -197,6 +198,7 @@ public abstract class Network {
* @param file the file to include in the request
* @return the HTTP response, or null in case of an encoding error param
*/
+ @Nullable
public static HttpResponse postRequest(final String uri, final Parameters params,
final String fileFieldName, final String fileContentType, final File file) {
final MultipartEntity entity = new MultipartEntity();
@@ -214,7 +216,7 @@ public abstract class Network {
request.setEntity(entity);
addHeaders(request, null, null);
- return doRepeatedRequests(request);
+ return doLogRequest(request);
}
/**
@@ -232,7 +234,9 @@ public abstract class Network {
* the cache file used to cache this query
* @return the HTTP response, or null in case of an encoding error in a POST request arguments
*/
- private static HttpResponse request(final String method, final String uri, final Parameters params, final Parameters headers, final File cacheFile) {
+ @Nullable
+ private static HttpResponse request(final String method, final String uri,
+ @Nullable final Parameters params, @Nullable final Parameters headers, @Nullable final File cacheFile) {
HttpRequestBase request;
if (method.equals("GET")) {
final String fullUri = params == null ? uri : Uri.parse(uri).buildUpon().encodedQuery(params.toString()).build().toString();
@@ -251,7 +255,7 @@ public abstract class Network {
addHeaders(request, headers, cacheFile);
- return doRepeatedRequests(request);
+ return doLogRequest(request);
}
/**
@@ -263,7 +267,7 @@ public abstract class Network {
* @param cacheFile
* if non-null, the file to take ETag and If-Modified-Since information from
*/
- private static void addHeaders(final HttpRequestBase request, final Parameters headers, final File cacheFile) {
+ private static void addHeaders(final HttpRequestBase request, @Nullable final Parameters headers, @Nullable final File cacheFile) {
for (final NameValuePair header : Parameters.extend(Parameters.merge(headers, cacheHeaders(cacheFile)),
"Accept-Charset", "utf-8,iso-8859-1;q=0.8,utf-16;q=0.8,*;q=0.7",
"Accept-Language", "en-US,*;q=0.9",
@@ -275,44 +279,39 @@ public abstract class Network {
}
/**
- * Retry a request for a few times.
+ * Perform an HTTP request and log it.
*
* @param request
* the request to try
* @return
* the response, or null if there has been a failure
*/
- private static HttpResponse doRepeatedRequests(final HttpRequestBase request) {
+ @Nullable
+ private static HttpResponse doLogRequest(final HttpRequestBase request) {
final String reqLogStr = request.getMethod() + " " + Network.hidePassword(request.getURI().toString());
Log.d(reqLogStr);
final HttpClient client = Network.getHttpClient();
- for (int i = 0; i <= Network.NB_DOWNLOAD_RETRIES; i++) {
- final long before = System.currentTimeMillis();
- try {
- final HttpResponse response = client.execute(request);
- int status = response.getStatusLine().getStatusCode();
- if (status == 200) {
- Log.d(status + Network.formatTimeSpan(before) + reqLogStr);
- } else {
- Log.w(status + " [" + response.getStatusLine().getReasonPhrase() + "]" + Network.formatTimeSpan(before) + reqLogStr);
- }
- return response;
- } catch (IOException e) {
- final String timeSpan = Network.formatTimeSpan(before);
- final String tries = (i + 1) + "/" + (Network.NB_DOWNLOAD_RETRIES + 1);
- if (i == Network.NB_DOWNLOAD_RETRIES) {
- Log.w("Failure " + tries + timeSpan + reqLogStr + " (" + e.toString() + ")");
- } else {
- Log.w("Failure " + tries + " (" + e.toString() + ")" + timeSpan + "- retrying " + reqLogStr);
- }
+ final long before = System.currentTimeMillis();
+ try {
+ final HttpResponse response = client.execute(request);
+ int status = response.getStatusLine().getStatusCode();
+ if (status == 200) {
+ Log.d(status + Network.formatTimeSpan(before) + reqLogStr);
+ } else {
+ Log.w(status + " [" + response.getStatusLine().getReasonPhrase() + "]" + Network.formatTimeSpan(before) + reqLogStr);
}
+ return response;
+ } catch (final IOException e) {
+ final String timeSpan = Network.formatTimeSpan(before);
+ Log.w("Failure" + timeSpan + reqLogStr + " (" + e.toString() + ")");
}
return null;
}
- private static Parameters cacheHeaders(final File cacheFile) {
+ @Nullable
+ private static Parameters cacheHeaders(@Nullable final File cacheFile) {
if (cacheFile == null || !cacheFile.exists()) {
return null;
}
@@ -343,7 +342,8 @@ public abstract class Network {
* the name of the file storing the cached resource, or null not to use one
* @return the HTTP response
*/
- public static HttpResponse getRequest(final String uri, final Parameters params, final File cacheFile) {
+ @Nullable
+ public static HttpResponse getRequest(final String uri, @Nullable final Parameters params, @Nullable final File cacheFile) {
return request("GET", uri, params, null, cacheFile);
}
@@ -357,7 +357,8 @@ public abstract class Network {
* the parameters to add the the GET request
* @return the HTTP response
*/
- public static HttpResponse getRequest(final String uri, final Parameters params) {
+ @Nullable
+ public static HttpResponse getRequest(final String uri, @Nullable final Parameters params) {
return request("GET", uri, params, null, null);
}
@@ -372,7 +373,8 @@ public abstract class Network {
* the headers to add to the GET request
* @return the HTTP response
*/
- public static HttpResponse getRequest(final String uri, final Parameters params, final Parameters headers) {
+ @Nullable
+ public static HttpResponse getRequest(final String uri, @Nullable final Parameters params, @Nullable final Parameters headers) {
return request("GET", uri, params, headers, null);
}
@@ -383,6 +385,7 @@ public abstract class Network {
* the URI to request
* @return the HTTP response
*/
+ @Nullable
public static HttpResponse getRequest(final String uri) {
return request("GET", uri, null, null, null);
}
@@ -392,10 +395,14 @@ public abstract class Network {
return " (" + (System.currentTimeMillis() - before) + " ms) ";
}
- static public boolean isSuccess(final HttpResponse response) {
+ static public boolean isSuccess(@Nullable final HttpResponse response) {
return response != null && response.getStatusLine().getStatusCode() == 200;
}
+ static public boolean isPageNotFound(@Nullable final HttpResponse response) {
+ return response != null && response.getStatusLine().getStatusCode() == 404;
+ }
+
/**
* Get the result of a GET HTTP request returning a JSON body.
*
@@ -403,7 +410,8 @@ public abstract class Network {
* @param params the query parameters, or <code>null</code> if there are none
* @return a JSON object if the request was successful and the body could be decoded, <code>null</code> otherwise
*/
- public static JSONObject requestJSON(final String uri, final Parameters params) {
+ @Nullable
+ public static JSONObject requestJSON(final String uri, @Nullable final Parameters params) {
final HttpResponse response = request("GET", uri, params, new Parameters("Accept", "application/json, text/javascript, */*; q=0.01"), null);
final String responseData = Network.getResponseData(response, false);
if (responseData != null) {
@@ -417,6 +425,7 @@ public abstract class Network {
return null;
}
+ @Nullable
private static String getResponseDataNoError(final HttpResponse response, boolean replaceWhitespace) {
try {
String data = EntityUtils.toString(response.getEntity(), CharEncoding.UTF_8);
@@ -435,7 +444,8 @@ public abstract class Network {
* @param response a HTTP response, which can be null
* @return the body if the response comes from a successful HTTP request, <code>null</code> otherwise
*/
- public static String getResponseData(final HttpResponse response) {
+ @Nullable
+ public static String getResponseData(@Nullable final HttpResponse response) {
return Network.getResponseData(response, true);
}
@@ -447,17 +457,22 @@ public abstract class Network {
* should be called on the body
* @return the body if the response comes from a successful HTTP request, <code>null</code> otherwise
*/
- public static String getResponseData(final HttpResponse response, boolean replaceWhitespace) {
+ @Nullable
+ public static String getResponseData(@Nullable final HttpResponse response, boolean replaceWhitespace) {
if (!isSuccess(response)) {
return null;
}
+ assert response != null; // Caught above
return getResponseDataNoError(response, replaceWhitespace);
}
+ @Nullable
public static String rfc3986URLEncode(String text) {
- return StringUtils.replace(Network.encode(text).replace("+", "%20"), "%7E", "~");
+ final String encoded = Network.encode(text);
+ return encoded != null ? StringUtils.replace(encoded.replace("+", "%20"), "%7E", "~") : null;
}
+ @Nullable
public static String decode(final String text) {
try {
return URLDecoder.decode(text, CharEncoding.UTF_8);
@@ -467,6 +482,7 @@ public abstract class Network {
return null;
}
+ @Nullable
public static String encode(final String text) {
try {
return URLEncoder.encode(text, CharEncoding.UTF_8);
diff --git a/main/src/cgeo/geocaching/network/OAuth.java b/main/src/cgeo/geocaching/network/OAuth.java
index 6740096..4ef8b62 100644
--- a/main/src/cgeo/geocaching/network/OAuth.java
+++ b/main/src/cgeo/geocaching/network/OAuth.java
@@ -3,8 +3,8 @@ package cgeo.geocaching.network;
import cgeo.geocaching.utils.CryptUtils;
import ch.boye.httpclientandroidlib.NameValuePair;
-
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.Nullable;
import java.util.ArrayList;
import java.util.Date;
@@ -16,8 +16,8 @@ public class OAuth {
final String method,
final boolean https,
final Parameters params,
- final String token,
- final String tokenSecret,
+ @Nullable final String token,
+ @Nullable final String tokenSecret,
final String consumerKey,
final String consumerSecret) {
params.put(
diff --git a/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java b/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java
index 14e0b33..d5336b9 100644
--- a/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java
@@ -1,15 +1,20 @@
package cgeo.geocaching.network;
+import butterknife.InjectView;
+
import cgeo.geocaching.R;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.MatcherWrapper;
+import ch.boye.httpclientandroidlib.ParseException;
import ch.boye.httpclientandroidlib.client.entity.UrlEncodedFormEntity;
import ch.boye.httpclientandroidlib.util.EntityUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import android.app.ProgressDialog;
import android.content.Intent;
@@ -19,27 +24,31 @@ import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
-import android.widget.EditText;
import android.widget.TextView;
+import java.io.IOException;
import java.util.regex.Pattern;
public abstract class OAuthAuthorizationActivity extends AbstractActivity {
- private String host;
- private String pathRequest;
- private String pathAuthorize;
- private String pathAccess;
- private boolean https;
- private String consumerKey;
- private String consumerSecret;
+ public static final int NOT_AUTHENTICATED = 0;
+ public static final int AUTHENTICATED = 1;
+
+ @NonNull final private String host;
+ @NonNull final private String pathRequest;
+ @NonNull final private String pathAuthorize;
+ @NonNull final private String pathAccess;
+ private final boolean https;
+ @NonNull final private String consumerKey;
+ @NonNull final private String consumerSecret;
+ @NonNull final private String callback;
private String OAtoken = null;
private String OAtokenSecret = null;
private final Pattern paramsPattern1 = Pattern.compile("oauth_token=([a-zA-Z0-9\\-\\_.]+)");
private final Pattern paramsPattern2 = Pattern.compile("oauth_token_secret=([a-zA-Z0-9\\-\\_.]+)");
- private Button startButton = null;
- private EditText pinEntry = null;
- private Button pinEntryButton = null;
+ @InjectView(R.id.start) protected Button startButton;
+ @InjectView(R.id.auth_1) protected TextView auth_1;
+ @InjectView(R.id.auth_2) protected TextView auth_2;
private ProgressDialog requestTokenDialog = null;
private ProgressDialog changeTokensDialog = null;
private Handler requestTokenHandler = new Handler() {
@@ -55,10 +64,6 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
if (msg.what == 1) {
startButton.setText(getAuthAgain());
-
- pinEntry.setVisibility(View.VISIBLE);
- pinEntryButton.setVisibility(View.VISIBLE);
- pinEntryButton.setOnClickListener(new ConfirmPINListener());
} else {
showToast(getErrAuthInitialize());
startButton.setText(getAuthStart());
@@ -74,33 +79,26 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
changeTokensDialog.dismiss();
}
- pinEntryButton.setOnClickListener(new ConfirmPINListener());
- pinEntryButton.setEnabled(true);
-
- if (msg.what == 1) {
+ if (msg.what == AUTHENTICATED) {
showToast(getAuthDialogCompleted());
-
- pinEntryButton.setVisibility(View.GONE);
-
setResult(RESULT_OK);
finish();
} else {
showToast(getErrAuthProcess());
-
- pinEntry.setVisibility(View.GONE);
- pinEntryButton.setVisibility(View.GONE);
startButton.setText(getAuthStart());
}
}
};
- public OAuthAuthorizationActivity(String host,
- String pathRequest,
- String pathAuthorize,
- String pathAccess,
- boolean https,
- String consumerKey,
- String consumerSecret) {
+ public OAuthAuthorizationActivity
+ (@NonNull String host,
+ @NonNull String pathRequest,
+ @NonNull String pathAuthorize,
+ @NonNull String pathAccess,
+ boolean https,
+ @NonNull String consumerKey,
+ @NonNull String consumerSecret,
+ @NonNull String callback) {
this.host = host;
this.pathRequest = pathRequest;
this.pathAuthorize = pathAuthorize;
@@ -108,6 +106,7 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
this.https = https;
this.consumerKey = consumerKey;
this.consumerSecret = consumerSecret;
+ this.callback = callback;
}
@Override
@@ -116,26 +115,14 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
setTitle(getAuthTitle());
- init();
- }
-
- private void init() {
- startButton = (Button) findViewById(R.id.start);
- pinEntry = (EditText) findViewById(R.id.pin);
- pinEntryButton = (Button) findViewById(R.id.pin_button);
-
- TextView auth = (TextView) findViewById(R.id.auth_1);
- auth.setText(getAboutAuth1());
- auth = (TextView) findViewById(R.id.auth_2);
- auth.setText(getAboutAuth2());
+ auth_1.setText(getAuthExplainShort());
+ auth_2.setText(getAuthExplainLong());
ImmutablePair<String, String> tempToken = getTempTokens();
OAtoken = tempToken.left;
OAtokenSecret = tempToken.right;
startButton.setText(getAuthAuthorize());
- pinEntryButton.setText(getAuthFinish());
-
startButton.setEnabled(true);
startButton.setOnClickListener(new StartListener());
@@ -145,60 +132,74 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
} else {
// already have temporary tokens, continue from pin
startButton.setText(getAuthAgain());
+ }
+ }
+
+ @Override
+ public void onNewIntent(final Intent intent) {
+ setIntent(intent);
+ }
- pinEntry.setHint(getAuthPinHint());
- pinEntry.setVisibility(View.VISIBLE);
- pinEntryButton.setVisibility(View.VISIBLE);
- pinEntryButton.setOnClickListener(new ConfirmPINListener());
+ @Override
+ public void onResume() {
+ super.onResume();
+ final Uri uri = getIntent().getData();
+ if (uri != null) {
+ final String verifier = uri.getQueryParameter("oauth_verifier");
+ if (StringUtils.isNotBlank(verifier)) {
+ exchangeTokens(verifier);
+ } else {
+ // We can shortcut the whole verification process if we do not have a token at all.
+ changeTokensHandler.sendEmptyMessage(NOT_AUTHENTICATED);
+ }
}
}
private void requestToken() {
+ final Parameters params = new Parameters();
+ params.put("oauth_callback", callback);
+ final String method = "GET";
+ OAuth.signOAuth(host, pathRequest, method, https, params, null, null, consumerKey, consumerSecret);
+ final String line = Network.getResponseData(Network.getRequest(getUrlPrefix() + host + pathRequest, params));
+
int status = 0;
- try {
- final Parameters params = new Parameters();
- params.put("oauth_callback", "oob");
- final String method = "GET";
- OAuth.signOAuth(host, pathRequest, method, https, params, null, null, consumerKey, consumerSecret);
- final String line = Network.getResponseData(Network.getRequest(getUrlPrefix() + host + pathRequest, params));
-
- if (StringUtils.isNotBlank(line)) {
- final MatcherWrapper paramsMatcher1 = new MatcherWrapper(paramsPattern1, line);
- if (paramsMatcher1.find()) {
- OAtoken = paramsMatcher1.group(1);
- }
- final MatcherWrapper paramsMatcher2 = new MatcherWrapper(paramsPattern2, line);
- if (paramsMatcher2.find()) {
- OAtokenSecret = paramsMatcher2.group(1);
- }
+ if (StringUtils.isNotBlank(line)) {
+ assert line != null;
+ final MatcherWrapper paramsMatcher1 = new MatcherWrapper(paramsPattern1, line);
+ if (paramsMatcher1.find()) {
+ OAtoken = paramsMatcher1.group(1);
+ }
+ final MatcherWrapper paramsMatcher2 = new MatcherWrapper(paramsPattern2, line);
+ if (paramsMatcher2.find()) {
+ OAtokenSecret = paramsMatcher2.group(1);
+ }
- if (StringUtils.isNotBlank(OAtoken) && StringUtils.isNotBlank(OAtokenSecret)) {
- setTempTokens(OAtoken, OAtokenSecret);
- try {
- final Parameters paramsBrowser = new Parameters();
- paramsBrowser.put("oauth_token", OAtoken);
- final String encodedParams = EntityUtils.toString(new UrlEncodedFormEntity(paramsBrowser));
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getUrlPrefix() + host + pathAuthorize + "?" + encodedParams)));
- status = 1;
- } catch (Exception e) {
- Log.e("OAuthAuthorizationActivity.requestToken(2)", e);
- }
+ if (StringUtils.isNotBlank(OAtoken) && StringUtils.isNotBlank(OAtokenSecret)) {
+ setTempTokens(OAtoken, OAtokenSecret);
+ try {
+ final Parameters paramsBrowser = new Parameters();
+ paramsBrowser.put("oauth_token", OAtoken);
+ final String encodedParams = EntityUtils.toString(new UrlEncodedFormEntity(paramsBrowser));
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getUrlPrefix() + host + pathAuthorize + "?" + encodedParams)));
+ status = 1;
+ } catch (ParseException e) {
+ Log.e("OAuthAuthorizationActivity.requestToken", e);
+ } catch (IOException e) {
+ Log.e("OAuthAuthorizationActivity.requestToken", e);
}
}
- } catch (Exception e) {
- Log.e("OAuthAuthorizationActivity.requestToken(1)", e);
}
requestTokenHandler.sendEmptyMessage(status);
}
- private void changeToken() {
+ private void changeToken(final String verifier) {
- int status = 0;
+ int status = NOT_AUTHENTICATED;
try {
- final Parameters params = new Parameters("oauth_verifier", pinEntry.getText().toString());
+ final Parameters params = new Parameters("oauth_verifier", verifier);
final String method = "POST";
OAuth.signOAuth(host, pathAccess, method, https, params, OAtoken, OAtokenSecret, consumerKey, consumerSecret);
@@ -222,7 +223,7 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
setTokens(null, null, false);
} else {
setTokens(OAtoken, OAtokenSecret, true);
- status = 1;
+ status = AUTHENTICATED;
}
} catch (Exception e) {
Log.e("OAuthAuthorizationActivity.changeToken", e);
@@ -260,68 +261,68 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity {
}
}
- private class ConfirmPINListener implements View.OnClickListener {
+ private void exchangeTokens(final String verifier) {
+ if (changeTokensDialog == null) {
+ changeTokensDialog = new ProgressDialog(this);
+ changeTokensDialog.setCancelable(false);
+ changeTokensDialog.setMessage(getAuthDialogWait());
+ }
+ changeTokensDialog.show();
- @Override
- public void onClick(View arg0) {
- if (StringUtils.isEmpty(((EditText) findViewById(R.id.pin)).getText().toString())) {
- helpDialog(getAuthDialogPinTitle(), getAuthDialogPinMessage());
- return;
- }
+ (new Thread() {
- if (changeTokensDialog == null) {
- changeTokensDialog = new ProgressDialog(OAuthAuthorizationActivity.this);
- changeTokensDialog.setCancelable(false);
- changeTokensDialog.setMessage(getAuthDialogWait());
+ @Override
+ public void run() {
+ changeToken(verifier);
}
- changeTokensDialog.show();
- pinEntryButton.setEnabled(false);
- pinEntryButton.setOnTouchListener(null);
- pinEntryButton.setOnClickListener(null);
-
- (new Thread() {
-
- @Override
- public void run() {
- changeToken();
- }
- }).start();
- }
+ }).start();
}
protected abstract ImmutablePair<String, String> getTempTokens();
- protected abstract void setTempTokens(String tokenPublic, String tokenSecret);
+ protected abstract void setTempTokens(@Nullable String tokenPublic, @Nullable String tokenSecret);
- protected abstract void setTokens(String tokenPublic, String tokenSecret, boolean enable);
+ protected abstract void setTokens(@Nullable String tokenPublic, @Nullable String tokenSecret, boolean enable);
// get resources from derived class
protected abstract String getAuthTitle();
- protected abstract String getAuthAgain();
+ protected String getAuthAgain() {
+ return getString(R.string.auth_again);
+ }
- protected abstract String getErrAuthInitialize();
+ protected String getErrAuthInitialize() {
+ return getString(R.string.err_auth_initialize);
+ }
- protected abstract String getAuthStart();
+ protected String getAuthStart() {
+ return getString(R.string.auth_start);
+ }
protected abstract String getAuthDialogCompleted();
- protected abstract String getErrAuthProcess();
-
- protected abstract String getAuthDialogWait();
-
- protected abstract String getAuthDialogPinTitle();
-
- protected abstract String getAuthDialogPinMessage();
+ protected String getErrAuthProcess() {
+ return res.getString(R.string.err_auth_process);
+ }
- protected abstract String getAboutAuth1();
+ protected String getAuthDialogWait() {
+ return res.getString(R.string.auth_dialog_waiting, getAuthTitle());
+ }
- protected abstract String getAboutAuth2();
+ protected String getAuthExplainShort() {
+ return res.getString(R.string.auth_explain_short, getAuthTitle());
+ }
- protected abstract String getAuthAuthorize();
+ protected String getAuthExplainLong() {
+ return res.getString(R.string.auth_explain_long, getAuthTitle());
+ }
- protected abstract String getAuthPinHint();
+ protected String getAuthAuthorize() {
+ return res.getString(R.string.auth_authorize, getAuthTitle());
+ }
- protected abstract String getAuthFinish();
+ protected String getAuthFinish() {
+ return res.getString(R.string.auth_finish, getAuthTitle());
+ }
}
diff --git a/main/src/cgeo/geocaching/network/Parameters.java b/main/src/cgeo/geocaching/network/Parameters.java
index f035c4a..9cb0da5 100644
--- a/main/src/cgeo/geocaching/network/Parameters.java
+++ b/main/src/cgeo/geocaching/network/Parameters.java
@@ -3,8 +3,9 @@ package cgeo.geocaching.network;
import ch.boye.httpclientandroidlib.NameValuePair;
import ch.boye.httpclientandroidlib.client.utils.URLEncodedUtils;
import ch.boye.httpclientandroidlib.message.BasicNameValuePair;
-
import org.apache.commons.lang3.CharEncoding;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import java.security.InvalidParameterException;
import java.util.ArrayList;
@@ -81,7 +82,8 @@ public class Parameters extends ArrayList<NameValuePair> {
* if the number of key/values is unbalanced
* @return the object itself if it is non-null, a new one otherwise
*/
- public static Parameters extend(final Parameters params, final String... keyValues) {
+ @NonNull
+ public static Parameters extend(@Nullable final Parameters params, final String... keyValues) {
return params == null ? new Parameters(keyValues) : params.put(keyValues);
}
@@ -94,7 +96,8 @@ public class Parameters extends ArrayList<NameValuePair> {
* the object to merge from if non-null
* @return params with extra data if params was non-null, extra otherwise
*/
- public static Parameters merge(final Parameters params, final Parameters extra) {
+ @Nullable
+ public static Parameters merge(@Nullable final Parameters params, @Nullable final Parameters extra) {
if (params == null) {
return extra;
}
diff --git a/main/src/cgeo/geocaching/network/StatusUpdater.java b/main/src/cgeo/geocaching/network/StatusUpdater.java
index ee9bc31..cb4c7f4 100644
--- a/main/src/cgeo/geocaching/network/StatusUpdater.java
+++ b/main/src/cgeo/geocaching/network/StatusUpdater.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.network;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.utils.MemorySubject;
import cgeo.geocaching.utils.PeriodicHandler;
import cgeo.geocaching.utils.PeriodicHandler.PeriodicHandlerListener;
@@ -42,8 +42,8 @@ public class StatusUpdater extends MemorySubject<StatusUpdater.Status> implement
public void onPeriodic() {
final JSONObject response =
Network.requestJSON("http://status.cgeo.org/api/status.json",
- new Parameters("version_code", String.valueOf(Version.getVersionCode(cgeoapplication.getInstance())),
- "version_name", Version.getVersionName(cgeoapplication.getInstance()),
+ new Parameters("version_code", String.valueOf(Version.getVersionCode(CgeoApplication.getInstance())),
+ "version_name", Version.getVersionName(CgeoApplication.getInstance()),
"locale", Locale.getDefault().toString()));
if (response != null) {
notifyObservers(new Status(get(response, "message"), get(response, "message_id"), get(response, "icon"), get(response, "url")));
diff --git a/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java b/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java
deleted file mode 100644
index 1fdd0de..0000000
--- a/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package cgeo.geocaching.settings;
-
-import cgeo.geocaching.R;
-import cgeo.geocaching.twitter.TwitterAuthorizationActivity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.preference.Preference;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-
-public class AuthorizeTwitterPreference extends Preference {
-
- public AuthorizeTwitterPreference(Context context) {
- super(context);
- }
-
- public AuthorizeTwitterPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public AuthorizeTwitterPreference(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected View onCreateView(ViewGroup parent) {
- final SettingsActivity activity = (SettingsActivity) getContext();
-
- setOnPreferenceClickListener(new OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- Intent authIntent = new Intent(preference.getContext(),
- TwitterAuthorizationActivity.class);
- activity.startActivityForResult(authIntent,
- R.string.pref_fakekey_twitter_authorization);
-
- return false; // no shared preference has to be changed
- }
- });
-
- activity.setTwitterAuthTitle();
- return super.onCreateView(parent);
- }
-}
diff --git a/main/src/cgeo/geocaching/settings/AuthorizeOcPreference.java b/main/src/cgeo/geocaching/settings/OAuthPreference.java
index f5d6a57..3550947 100644
--- a/main/src/cgeo/geocaching/settings/AuthorizeOcPreference.java
+++ b/main/src/cgeo/geocaching/settings/OAuthPreference.java
@@ -1,9 +1,10 @@
package cgeo.geocaching.settings;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.oc.OCDEAuthorizationActivity;
import cgeo.geocaching.connector.oc.OCPLAuthorizationActivity;
+import cgeo.geocaching.twitter.TwitterAuthorizationActivity;
import android.content.Context;
import android.content.Intent;
@@ -12,49 +13,50 @@ import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
-public class AuthorizeOcPreference extends Preference {
+public class OAuthPreference extends Preference {
private static final int NO_KEY = -1;
- private enum OCAuthorizations {
+ private enum OAuthActivityMapping {
NONE(NO_KEY, null),
OCDE(R.string.pref_fakekey_ocde_authorization, OCDEAuthorizationActivity.class),
- OCPL(R.string.pref_fakekey_ocpl_authorization, OCPLAuthorizationActivity.class);
+ OCPL(R.string.pref_fakekey_ocpl_authorization, OCPLAuthorizationActivity.class),
+ TWITTER(R.string.pref_fakekey_twitter_authorization, TwitterAuthorizationActivity.class);
public int prefKeyId;
public Class<?> authActivity;
- OCAuthorizations(int prefKeyId, Class<?> clazz) {
+ OAuthActivityMapping(int prefKeyId, Class<?> clazz) {
this.prefKeyId = prefKeyId;
this.authActivity = clazz;
}
}
- private final OCAuthorizations ocAuth;
+ private final OAuthActivityMapping oAuthMapping;
- private OCAuthorizations getAuthorization() {
+ private OAuthActivityMapping getAuthorization() {
final String prefKey = getKey();
- for (OCAuthorizations auth : OCAuthorizations.values()) {
- if (auth.prefKeyId != NO_KEY && prefKey.equals(cgeoapplication.getInstance().getString(auth.prefKeyId))) {
+ for (OAuthActivityMapping auth : OAuthActivityMapping.values()) {
+ if (auth.prefKeyId != NO_KEY && prefKey.equals(CgeoApplication.getInstance().getString(auth.prefKeyId))) {
return auth;
}
}
- return OCAuthorizations.NONE;
+ return OAuthActivityMapping.NONE;
}
- public AuthorizeOcPreference(Context context) {
+ public OAuthPreference(Context context) {
super(context);
- this.ocAuth = getAuthorization();
+ this.oAuthMapping = getAuthorization();
}
- public AuthorizeOcPreference(Context context, AttributeSet attrs) {
+ public OAuthPreference(Context context, AttributeSet attrs) {
super(context, attrs);
- this.ocAuth = getAuthorization();
+ this.oAuthMapping = getAuthorization();
}
- public AuthorizeOcPreference(Context context, AttributeSet attrs, int defStyle) {
+ public OAuthPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
- this.ocAuth = getAuthorization();
+ this.oAuthMapping = getAuthorization();
}
@Override
@@ -64,17 +66,17 @@ public class AuthorizeOcPreference extends Preference {
setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- if (ocAuth.authActivity != null) {
- Intent authIntent = new Intent(preference.getContext(),
- ocAuth.authActivity);
- activity.startActivityForResult(authIntent,
- ocAuth.prefKeyId);
+ if (oAuthMapping.authActivity != null) {
+ Intent authIntent = new Intent(preference.getContext(),
+ oAuthMapping.authActivity);
+ activity.startActivityForResult(authIntent,
+ oAuthMapping.prefKeyId);
}
return false; // no shared preference has to be changed
}
});
- activity.setOcAuthTitle(ocAuth.prefKeyId);
+ activity.setOcAuthTitle(oAuthMapping.prefKeyId);
return super.onCreateView(parent);
}
}
diff --git a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
index a019c4a..fbf08fa 100644
--- a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
+++ b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
@@ -99,7 +99,7 @@ public class RegisterSend2CgeoPreference extends Preference {
if (response != null && response.getStatusLine().getStatusCode() == 200) {
//response was OK
- String[] strings = Network.getResponseData(response).split(",");
+ String[] strings = StringUtils.split(Network.getResponseData(response), ',');
try {
pin = Integer.parseInt(strings[1].trim());
} catch (Exception e) {
diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java
index 71c6d4a..947fa12 100644
--- a/main/src/cgeo/geocaching/settings/Settings.java
+++ b/main/src/cgeo/geocaching/settings/Settings.java
@@ -1,8 +1,7 @@
package cgeo.geocaching.settings;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.StoredList;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum;
import cgeo.geocaching.connector.gc.GCConstants;
import cgeo.geocaching.connector.gc.Login;
@@ -10,6 +9,7 @@ import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.maps.google.GoogleMapProvider;
import cgeo.geocaching.maps.interfaces.GeoPointImpl;
@@ -24,6 +24,7 @@ import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.eclipse.jdt.annotation.Nullable;
import android.content.Context;
import android.content.SharedPreferences;
@@ -69,7 +70,7 @@ public final class Settings {
}
private static final SharedPreferences sharedPrefs = PreferenceManager
- .getDefaultSharedPreferences(cgeoapplication.getInstance().getBaseContext());
+ .getDefaultSharedPreferences(CgeoApplication.getInstance().getBaseContext());
static {
migrateSettings();
Log.setDebug(sharedPrefs.getBoolean(getKey(R.string.pref_debug), false));
@@ -90,7 +91,7 @@ public final class Settings {
int oldVersion = getInt(R.string.pref_settingsversion, 0);
if (oldVersion < 1) {
final String oldPreferencesName = "cgeo.pref";
- final SharedPreferences old = cgeoapplication.getInstance().getSharedPreferences(oldPreferencesName, Context.MODE_PRIVATE);
+ final SharedPreferences old = CgeoApplication.getInstance().getSharedPreferences(oldPreferencesName, Context.MODE_PRIVATE);
final Editor e = sharedPrefs.edit();
e.putString(getKey(R.string.pref_temp_twitter_token_secret), old.getString(getKey(R.string.pref_temp_twitter_token_secret), null));
@@ -191,7 +192,7 @@ public final class Settings {
}
private static String getKey(final int prefKeyId) {
- return cgeoapplication.getInstance().getString(prefKeyId);
+ return CgeoApplication.getInstance().getString(prefKeyId);
}
static String getString(final int prefKeyId, final String defaultValue) {
@@ -257,7 +258,7 @@ public final class Settings {
public static void setLanguage(boolean useEnglish) {
final Configuration config = new Configuration();
config.locale = useEnglish ? Locale.ENGLISH : Locale.getDefault();
- final Resources resources = cgeoapplication.getInstance().getResources();
+ final Resources resources = CgeoApplication.getInstance().getResources();
resources.updateConfiguration(config, resources.getDisplayMetrics());
}
@@ -295,11 +296,7 @@ public final class Settings {
public static boolean isPremiumMember() {
// Basic Member, Premium Member, ???
- String memberStatus = Settings.getMemberStatus();
- if (memberStatus == null) {
- return false;
- }
- return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(memberStatus);
+ return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(Settings.getMemberStatus());
}
public static String getMemberStatus() {
@@ -317,7 +314,7 @@ public final class Settings {
return new ImmutablePair<String, String>(getString(tokenPublicPrefKey, null), getString(tokenSecretPrefKey, null));
}
- public static void setTokens(final int tokenPublicPrefKey, final String tokenPublic, final int tokenSecretPrefKey, final String tokenSecret) {
+ public static void setTokens(final int tokenPublicPrefKey, @Nullable final String tokenPublic, final int tokenSecretPrefKey, @Nullable final String tokenSecret) {
if (tokenPublic == null) {
remove(tokenPublicPrefKey);
} else {
@@ -441,6 +438,10 @@ public final class Settings {
return MapsforgeMapProvider.isValidMapFile(mapFileIn);
}
+ public static boolean isScaleMapsforgeText() {
+ return getBoolean(R.string.pref_mapsforge_scale_text, true);
+ }
+
public static CoordInputFormatEnum getCoordInputFormat() {
return CoordInputFormatEnum.fromInt(getInt(R.string.pref_coordinputformat, 0));
}
@@ -471,7 +472,7 @@ public final class Settings {
/**
* @return User selected date format on GC.com
- * @see Login#gcCustomDateFormats
+ * @see Login#GC_CUSTOM_DATE_FORMATS
*/
public static String getGcCustomDate() {
return getString(R.string.pref_gccustomdate, null);
@@ -548,16 +549,9 @@ public final class Settings {
static boolean getImperialUnitsDefault() {
final String countryCode = Locale.getDefault().getCountry();
- if ("US".equals(countryCode)) {
- return true; // USA
- }
- if ("LR".equals(countryCode)) {
- return true; // Liberia
- }
- if ("MM".equals(countryCode)) {
- return true; // Burma
- }
- return false;
+ return "US".equals(countryCode) // USA
+ || "LR".equals(countryCode) // Liberia
+ || "MM".equals(countryCode); // Burma
}
public static boolean isLiveMap() {
@@ -754,8 +748,8 @@ public final class Settings {
&& StringUtils.isNotBlank(getTokenSecret());
}
- public static void setTwitterTokens(final String tokenPublic,
- final String tokenSecret, boolean enableTwitter) {
+ public static void setTwitterTokens(@Nullable final String tokenPublic,
+ @Nullable final String tokenSecret, boolean enableTwitter) {
putString(R.string.pref_twitter_token_public, tokenPublic);
putString(R.string.pref_twitter_token_secret, tokenSecret);
if (tokenPublic != null) {
@@ -765,8 +759,8 @@ public final class Settings {
setUseTwitter(enableTwitter);
}
- public static void setTwitterTempTokens(final String tokenPublic,
- final String tokenSecret) {
+ public static void setTwitterTempTokens(@Nullable final String tokenPublic,
+ @Nullable final String tokenSecret) {
putString(R.string.pref_temp_twitter_token_public, tokenPublic);
putString(R.string.pref_temp_twitter_token_secret, tokenSecret);
}
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index d2c73f3..22a0907 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -1,13 +1,14 @@
package cgeo.geocaching.settings;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Intents;
import cgeo.geocaching.R;
import cgeo.geocaching.SelectMapfileActivity;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum;
import cgeo.geocaching.compatibility.Compatibility;
+import cgeo.geocaching.connector.gc.GCConnector;
import cgeo.geocaching.connector.gc.Login;
import cgeo.geocaching.files.SimpleDirChooser;
import cgeo.geocaching.maps.MapProviderFactory;
@@ -151,10 +152,26 @@ public class SettingsActivity extends PreferenceActivity {
getPreference(R.string.pref_connectorOCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
getPreference(R.string.pref_connectorOCPLActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
getPreference(R.string.pref_connectorGCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
+ setWebsite(R.string.pref_fakekey_gc_website, GCConnector.getInstance().getHost());
+ setWebsite(R.string.pref_fakekey_ocde_website, "opencaching.de");
+ setWebsite(R.string.pref_fakekey_ocpl_website, "opencaching.pl");
+ setWebsite(R.string.pref_fakekey_gcvote_website, "gcvote.com");
+ setWebsite(R.string.pref_fakekey_sendtocgeo_website, "send2.cgeo.org");
+ }
+
+ private void setWebsite(final int preferenceKey, final String host) {
+ Preference preference = getPreference(preferenceKey);
+ preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(final Preference preference) {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + host)));
+ return true;
+ }
+ });
}
private static String getKey(final int prefKeyId) {
- return cgeoapplication.getInstance().getString(prefKeyId);
+ return CgeoApplication.getInstance().getString(prefKeyId);
}
private Preference getPreference(final int keyId) {
@@ -337,7 +354,7 @@ public class SettingsActivity extends PreferenceActivity {
@Override
public boolean onPreferenceClick(final Preference preference) {
boolean oldValue = Settings.isDbOnSDCard();
- ((cgeoapplication) SettingsActivity.this.getApplication())
+ ((CgeoApplication) SettingsActivity.this.getApplication())
.moveDatabase(SettingsActivity.this);
return oldValue != Settings.isDbOnSDCard();
}
@@ -390,6 +407,9 @@ public class SettingsActivity extends PreferenceActivity {
case R.string.pref_fakekey_ocpl_authorization:
setOCPLAuthTitle();
break;
+ case R.string.pref_fakekey_twitter_authorization:
+ setTwitterAuthTitle();
+ break;
default:
Log.e(String.format(Locale.ENGLISH, "Invalid key %d in SettingsActivity.setTitle()", prefKeyId));
}
@@ -398,22 +418,22 @@ public class SettingsActivity extends PreferenceActivity {
void setOCDEAuthTitle() {
getPreference(R.string.pref_fakekey_ocde_authorization)
.setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocde_tokenpublic, R.string.pref_ocde_tokensecret)
- ? R.string.init_reregister_oc_de
- : R.string.init_register_oc_de));
+ ? R.string.settings_reauthorize
+ : R.string.settings_authorize));
}
void setOCPLAuthTitle() {
getPreference(R.string.pref_fakekey_ocpl_authorization)
.setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocpl_tokenpublic, R.string.pref_ocpl_tokensecret)
- ? R.string.init_reregister_oc_pl
- : R.string.init_register_oc_pl));
+ ? R.string.settings_reauthorize
+ : R.string.settings_authorize));
}
void setTwitterAuthTitle() {
getPreference(R.string.pref_fakekey_twitter_authorization)
.setTitle(getString(Settings.hasTwitterAuthorization()
- ? R.string.init_twitter_reauthorize
- : R.string.init_twitter_authorize));
+ ? R.string.settings_reauthorize
+ : R.string.settings_authorize));
}
public static void jumpToServicesPage(final Context fromActivity) {
@@ -506,7 +526,7 @@ public class SettingsActivity extends PreferenceActivity {
preference.setSummary(mapSource.getName());
} else if (isPreference(preference, R.string.pref_connectorOCActive) || isPreference(preference, R.string.pref_connectorOCPLActive) || isPreference(preference, R.string.pref_connectorGCActive)) {
// // reset log-in status if connector activation was changed
- cgeoapplication.getInstance().checkLogin = true;
+ CgeoApplication.getInstance().checkLogin = true;
} else if (preference instanceof ListPreference) {
// For list preferences, look up the correct display value in
// the preference's 'entries' list.
@@ -537,7 +557,7 @@ public class SettingsActivity extends PreferenceActivity {
if (Login.isActualLoginStatus()) {
Login.logout();
}
- cgeoapplication.getInstance().checkLogin = true;
+ CgeoApplication.getInstance().checkLogin = true;
}
return true;
}
diff --git a/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java b/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java
index 4d1a994..3cdd393 100644
--- a/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java
+++ b/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java
@@ -90,7 +90,9 @@ public class ComparatorUserInterface {
CacheComparator comparator = entry.cacheComparator.newInstance();
runAfterwards.run(comparator);
}
- } catch (Exception e) {
+ } catch (InstantiationException e) {
+ Log.e("selectComparator", e);
+ } catch (IllegalAccessException e) {
Log.e("selectComparator", e);
}
dialog.dismiss();
diff --git a/main/src/cgeo/geocaching/sorting/DateComparator.java b/main/src/cgeo/geocaching/sorting/DateComparator.java
index 3464103..091f6a4 100644
--- a/main/src/cgeo/geocaching/sorting/DateComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DateComparator.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.sorting;
import cgeo.geocaching.Geocache;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import java.util.ArrayList;
import java.util.Date;
@@ -27,7 +27,7 @@ public class DateComparator extends AbstractCacheComparator {
final ArrayList<Geocache> list = new ArrayList<Geocache>();
list.add(cache1);
list.add(cache2);
- final DistanceComparator distanceComparator = new DistanceComparator(cgeoapplication.getInstance().currentGeo().getCoords(), list);
+ final DistanceComparator distanceComparator = new DistanceComparator(CgeoApplication.getInstance().currentGeo().getCoords(), list);
return distanceComparator.compare(cache1, cache2);
}
return dateDifference;
diff --git a/main/src/cgeo/geocaching/sorting/FindsComparator.java b/main/src/cgeo/geocaching/sorting/FindsComparator.java
index ba929b8..b147fad 100644
--- a/main/src/cgeo/geocaching/sorting/FindsComparator.java
+++ b/main/src/cgeo/geocaching/sorting/FindsComparator.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.sorting;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.LogType;
public class FindsComparator extends AbstractCacheComparator {
@@ -20,7 +20,7 @@ public class FindsComparator extends AbstractCacheComparator {
private static int getFindsCount(Geocache cache) {
if (cache.getLogCounts().isEmpty()) {
- cache.setLogCounts(cgData.loadLogCounts(cache.getGeocode()));
+ cache.setLogCounts(DataStore.loadLogCounts(cache.getGeocode()));
}
Integer logged = cache.getLogCounts().get(LogType.FOUND_IT);
if (logged != null) {
diff --git a/main/src/cgeo/geocaching/speech/SpeechService.java b/main/src/cgeo/geocaching/speech/SpeechService.java
index 1907bfc..baa843b 100644
--- a/main/src/cgeo/geocaching/speech/SpeechService.java
+++ b/main/src/cgeo/geocaching/speech/SpeechService.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.speech;
import cgeo.geocaching.DirectionProvider;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.settings.Settings;
@@ -48,7 +48,7 @@ public class SpeechService extends Service implements OnInitListener {
GeoDirHandler geoHandler = new GeoDirHandler() {
@Override
protected void updateDirection(float newDirection) {
- if (cgeoapplication.getInstance().currentGeo().getSpeed() <= 5) {
+ if (CgeoApplication.getInstance().currentGeo().getSpeed() <= 5) {
direction = DirectionProvider.getDirectionNow(startingActivity, newDirection);
directionInitialized = true;
updateCompass();
diff --git a/main/src/cgeo/geocaching/speech/TextFactory.java b/main/src/cgeo/geocaching/speech/TextFactory.java
index 81a74fb..2a3b6d7 100644
--- a/main/src/cgeo/geocaching/speech/TextFactory.java
+++ b/main/src/cgeo/geocaching/speech/TextFactory.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.speech;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
import cgeo.geocaching.settings.Settings;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.IConversion;
import cgeo.geocaching.utils.AngleUtils;
@@ -12,6 +12,13 @@ import java.util.Locale;
/**
* Creates the output to be read by TTS.
*
+ * Note: some languages need to read "one hour" as "a hour" (indefinite article). Also, other languages
+ * use the <tt>quantity="1"</tt> plurals rule for other values than 1, such as Slovenian, so it is not
+ * possible to store the literal value to use for 1 in this rule. For this reason, we need to have one
+ * string for the unit quantity ("one meter") and a plurals rule for everything else.
+ *
+ * See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html for rules
+ * on unit expressions.
*/
public class TextFactory {
public static String getText(Geopoint position, Geopoint target, float direction) {
@@ -78,11 +85,11 @@ public class TextFactory {
}
private static String getString(int resourceId, Object... formatArgs) {
- return cgeoapplication.getInstance().getString(resourceId, formatArgs);
+ return CgeoApplication.getInstance().getString(resourceId, formatArgs);
}
private static String getQuantityString(int resourceId, int quantity, Object... formatArgs) {
- return cgeoapplication.getInstance().getResources().getQuantityString(resourceId, quantity, formatArgs);
+ return CgeoApplication.getInstance().getResources().getQuantityString(resourceId, quantity, formatArgs);
}
private static String getDirection(Geopoint position, Geopoint target, float direction) {
diff --git a/main/src/cgeo/geocaching/twitter/Twitter.java b/main/src/cgeo/geocaching/twitter/Twitter.java
index 7233764..c3f99fa 100644
--- a/main/src/cgeo/geocaching/twitter/Twitter.java
+++ b/main/src/cgeo/geocaching/twitter/Twitter.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.twitter;
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.Trackable;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter.Format;
@@ -22,16 +22,16 @@ public final class Twitter {
private static final int MAX_TWEET_SIZE = 140;
public static void postTweetCache(String geocode) {
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
- postTweet(cgeoapplication.getInstance(), getStatusMessage(cache), null);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ postTweet(CgeoApplication.getInstance(), getStatusMessage(cache), null);
}
public static void postTweetTrackable(String geocode) {
- final Trackable trackable = cgData.loadTrackable(geocode);
- postTweet(cgeoapplication.getInstance(), getStatusMessage(trackable), null);
+ final Trackable trackable = DataStore.loadTrackable(geocode);
+ postTweet(CgeoApplication.getInstance(), getStatusMessage(trackable), null);
}
- private static void postTweet(final cgeoapplication app, final String status, final Geopoint coords) {
+ private static void postTweet(final CgeoApplication app, final String status, final Geopoint coords) {
if (app == null || !Settings.isUseTwitter() || !Settings.isTwitterLoginValid()) {
return;
}
diff --git a/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java b/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
index 4d9a1f2..b813389 100644
--- a/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
+++ b/main/src/cgeo/geocaching/twitter/TwitterAuthorizationActivity.java
@@ -1,10 +1,11 @@
package cgeo.geocaching.twitter;
import cgeo.geocaching.R;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.network.OAuthAuthorizationActivity;
+import cgeo.geocaching.settings.Settings;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.eclipse.jdt.annotation.Nullable;
public class TwitterAuthorizationActivity extends OAuthAuthorizationActivity {
@@ -15,92 +16,33 @@ public class TwitterAuthorizationActivity extends OAuthAuthorizationActivity {
"/oauth/access_token",
true,
Settings.getKeyConsumerPublic(),
- Settings.getKeyConsumerSecret());
+ Settings.getKeyConsumerSecret(),
+ "callback://www.cgeo.org/twitter/");
}
@Override
- protected ImmutablePair<String, String> getTempTokens() {
+ protected final ImmutablePair<String, String> getTempTokens() {
return Settings.getTempToken();
}
@Override
- protected void setTempTokens(String tokenPublic, String tokenSecret) {
+ protected final void setTempTokens(@Nullable final String tokenPublic, @Nullable final String tokenSecret) {
Settings.setTwitterTempTokens(tokenPublic, tokenSecret);
}
@Override
- protected void setTokens(String tokenPublic, String tokenSecret, boolean enable) {
+ protected final void setTokens(@Nullable final String tokenPublic, @Nullable final String tokenSecret, final boolean enable) {
Settings.setTwitterTokens(tokenPublic, tokenSecret, enable);
}
@Override
- protected String getAuthTitle() {
+ protected final String getAuthTitle() {
return res.getString(R.string.auth_twitter);
}
@Override
- protected String getAuthAgain() {
- return res.getString(R.string.auth_again);
- }
-
- @Override
- protected String getErrAuthInitialize() {
- return res.getString(R.string.err_auth_initialize);
- }
-
- @Override
- protected String getAuthStart() {
- return res.getString(R.string.auth_start);
- }
-
- @Override
- protected String getAuthDialogCompleted() {
- return res.getString(R.string.auth_dialog_completed);
- }
-
- @Override
- protected String getErrAuthProcess() {
- return res.getString(R.string.err_auth_process);
- }
-
- @Override
- protected String getAuthDialogWait() {
- return res.getString(R.string.auth_dialog_wait);
- }
-
- @Override
- protected String getAuthDialogPinTitle() {
- return res.getString(R.string.auth_dialog_pin_title);
- }
-
- @Override
- protected String getAuthDialogPinMessage() {
- return res.getString(R.string.auth_dialog_pin_message);
- }
-
- @Override
- protected String getAboutAuth1() {
- return res.getString(R.string.about_auth_1);
- }
-
- @Override
- protected String getAboutAuth2() {
- return res.getString(R.string.about_auth_2);
- }
-
- @Override
- protected String getAuthAuthorize() {
- return res.getString(R.string.auth_authorize);
- }
-
- @Override
- protected String getAuthPinHint() {
- return res.getString(R.string.auth_pin_hint);
- }
-
- @Override
- protected String getAuthFinish() {
- return res.getString(R.string.auth_finish);
+ protected final String getAuthDialogCompleted() {
+ return res.getString(R.string.auth_dialog_completed_twitter);
}
}
diff --git a/main/src/cgeo/geocaching/ui/AbstractUIFactory.java b/main/src/cgeo/geocaching/ui/AbstractUIFactory.java
index 2351383..0d447f2 100644
--- a/main/src/cgeo/geocaching/ui/AbstractUIFactory.java
+++ b/main/src/cgeo/geocaching/ui/AbstractUIFactory.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.ui;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import android.content.res.Resources;
public class AbstractUIFactory {
- protected final static Resources res = cgeoapplication.getInstance().getResources();
+ protected final static Resources res = CgeoApplication.getInstance().getResources();
}
diff --git a/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java b/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
index b717568..f8cfb8a 100644
--- a/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
+++ b/main/src/cgeo/geocaching/ui/AbstractUserClickListener.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.ui;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeocaches;
+import cgeo.geocaching.CacheListActivity;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.network.Network;
@@ -53,10 +53,10 @@ abstract class AbstractUserClickListener implements View.OnClickListener {
public void onClick(DialogInterface dialog, int item) {
switch (item) {
case 0:
- cgeocaches.startActivityOwner(context, name.toString());
+ CacheListActivity.startActivityOwner(context, name.toString());
return;
case 1:
- cgeocaches.startActivityUserName(context, name.toString());
+ CacheListActivity.startActivityUserName(context, name.toString());
return;
case 2:
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/profile/?u=" + Network.encode(name.toString()))));
diff --git a/main/src/cgeo/geocaching/ui/AddressListAdapter.java b/main/src/cgeo/geocaching/ui/AddressListAdapter.java
index 736c036..0d5fba7 100644
--- a/main/src/cgeo/geocaching/ui/AddressListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/AddressListAdapter.java
@@ -2,9 +2,9 @@ package cgeo.geocaching.ui;
import butterknife.InjectView;
+import cgeo.geocaching.CacheListActivity;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
-import cgeo.geocaching.cgeocaches;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Units;
@@ -38,7 +38,7 @@ public class AddressListAdapter extends ArrayAdapter<Address> {
public AddressListAdapter(final Context context) {
super(context, 0);
inflater = ((Activity) context).getLayoutInflater();
- location = cgeoapplication.getInstance().currentGeo().getCoords();
+ location = CgeoApplication.getInstance().currentGeo().getCoords();
}
@Override
@@ -61,7 +61,7 @@ public class AddressListAdapter extends ArrayAdapter<Address> {
@Override
public void onClick(final View v) {
final Activity activity = (Activity) v.getContext();
- cgeocaches.startActivityAddress(activity, new Geopoint(address.getLatitude(), address.getLongitude()), StringUtils.defaultString(address.getAddressLine(0)));
+ CacheListActivity.startActivityAddress(activity, new Geopoint(address.getLatitude(), address.getLongitude()), StringUtils.defaultString(address.getAddressLine(0)));
activity.finish();
}
});
diff --git a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
index 9059a6b..5db562e 100644
--- a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
+++ b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
@@ -1,16 +1,18 @@
package cgeo.geocaching.ui;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Units;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
import android.app.Activity;
import android.content.res.Resources;
+import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -134,7 +136,7 @@ public final class CacheDetailsCreator {
public void addDistance(final Geocache cache, final TextView cacheDistanceView) {
Float distance = null;
if (cache.getCoords() != null) {
- final Geopoint currentCoords = cgeoapplication.getInstance().currentGeo().getCoords();
+ final Geopoint currentCoords = CgeoApplication.getInstance().currentGeo().getCoords();
if (currentCoords != null) {
distance = currentCoords.distanceTo(cache);
}
@@ -159,7 +161,7 @@ public final class CacheDetailsCreator {
public void addDistance(final Waypoint wpt, final TextView waypointDistanceView) {
Float distance = null;
if (wpt.getCoords() != null) {
- final Geopoint currentCoords = cgeoapplication.getInstance().currentGeo().getCoords();
+ final Geopoint currentCoords = CgeoApplication.getInstance().currentGeo().getCoords();
if (currentCoords != null) {
distance = currentCoords.distanceTo(wpt);
}
@@ -175,4 +177,14 @@ public final class CacheDetailsCreator {
}
add(R.string.cache_distance, text);
}
+
+ public void addEventDate(@NonNull Geocache cache) {
+ if (cache.isEventCache() && cache.getHiddenDate() != null) {
+ final long time = cache.getHiddenDate().getTime();
+ if (time > 0) {
+ final String dateString = DateUtils.formatDateTime(CgeoApplication.getInstance().getBaseContext(), time, DateUtils.FORMAT_SHOW_WEEKDAY) + ", " + Formatter.formatFullDate(time);
+ add(R.string.cache_event, dateString);
+ }
+ }
+ }
}
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index c6aeaa6..f4d5936 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -6,7 +6,7 @@ import cgeo.geocaching.CacheDetailActivity;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.IGeoData;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.enumerations.CacheListType;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.filter.IFilter;
@@ -20,7 +20,7 @@ import cgeo.geocaching.sorting.VisitComparator;
import cgeo.geocaching.utils.AngleUtils;
import cgeo.geocaching.utils.Log;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.HashCodeBuilder;
@@ -112,7 +112,7 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
public CacheListAdapter(final Activity activity, final List<Geocache> list, CacheListType cacheListType) {
super(activity, 0, list);
- final IGeoData currentGeo = cgeoapplication.getInstance().currentGeo();
+ final IGeoData currentGeo = CgeoApplication.getInstance().currentGeo();
if (currentGeo != null) {
coords = currentGeo.getCoords();
}
diff --git a/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java b/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java
index f10e13a..e2e587e 100644
--- a/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java
+++ b/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java
@@ -2,36 +2,38 @@ package cgeo.geocaching.ui;
import cgeo.geocaching.utils.CryptUtils;
+import org.eclipse.jdt.annotation.NonNull;
+
import android.text.Spannable;
import android.view.View;
import android.widget.TextView;
public class DecryptTextClickListener implements View.OnClickListener {
- @Override
- public void onClick(View view) {
- if (view == null) {
- return;
- }
+ @NonNull private final TextView targetView;
- try {
- final TextView logView = (TextView) view;
+ public DecryptTextClickListener(@NonNull final TextView targetView) {
+ this.targetView = targetView;
+ }
+ @Override
+ public final void onClick(final View view) {
+ try {
// do not run the click listener if a link was clicked
- if (logView.getSelectionStart() != -1 || logView.getSelectionEnd() != -1) {
+ if (targetView.getSelectionStart() != -1 || targetView.getSelectionEnd() != -1) {
return;
}
- CharSequence text = logView.getText();
+ CharSequence text = targetView.getText();
if (text instanceof Spannable) {
Spannable span = (Spannable) text;
- logView.setText(CryptUtils.rot13(span));
+ targetView.setText(CryptUtils.rot13(span));
}
else {
String string = (String) text;
- logView.setText(CryptUtils.rot13(string));
+ targetView.setText(CryptUtils.rot13(string));
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
// nothing
}
}
diff --git a/main/src/cgeo/geocaching/ui/DirectionImage.java b/main/src/cgeo/geocaching/ui/DirectionImage.java
index 9de360c..cd7695e 100644
--- a/main/src/cgeo/geocaching/ui/DirectionImage.java
+++ b/main/src/cgeo/geocaching/ui/DirectionImage.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.ui;
-import cgeo.geocaching.StoredList;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.network.HtmlImage;
import org.apache.commons.lang3.StringUtils;
diff --git a/main/src/cgeo/geocaching/ui/Formatter.java b/main/src/cgeo/geocaching/ui/Formatter.java
index ecae9ea..963807f 100644
--- a/main/src/cgeo/geocaching/ui/Formatter.java
+++ b/main/src/cgeo/geocaching/ui/Formatter.java
@@ -3,7 +3,7 @@ package cgeo.geocaching.ui;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.enumerations.CacheListType;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.WaypointType;
@@ -22,7 +22,7 @@ public abstract class Formatter {
/** Text separator used for formatting texts */
public static final String SEPARATOR = " · ";
- private static final Context context = cgeoapplication.getInstance().getBaseContext();
+ private static final Context context = CgeoApplication.getInstance().getBaseContext();
/**
* Generate a time string according to system-wide settings (locale, 12/24 hour)
@@ -87,9 +87,9 @@ public abstract class Formatter {
int diff = cgeo.geocaching.utils.DateUtils.daysSince(date);
switch (diff) {
case 0:
- return cgeoapplication.getInstance().getString(R.string.log_today);
+ return CgeoApplication.getInstance().getString(R.string.log_today);
case 1:
- return cgeoapplication.getInstance().getString(R.string.log_yesterday);
+ return CgeoApplication.getInstance().getString(R.string.log_yesterday);
default:
return formatShortDate(date);
}
@@ -116,10 +116,10 @@ public abstract class Formatter {
addShortInfos(cache, infos);
if (cache.isPremiumMembersOnly()) {
- infos.add(cgeoapplication.getInstance().getString(R.string.cache_premium));
+ infos.add(CgeoApplication.getInstance().getString(R.string.cache_premium));
}
if (cacheListType != CacheListType.OFFLINE && cacheListType != CacheListType.HISTORY && cache.getListId() > 0) {
- infos.add(cgeoapplication.getInstance().getString(R.string.cache_offline));
+ infos.add(CgeoApplication.getInstance().getString(R.string.cache_offline));
}
return StringUtils.join(infos, Formatter.SEPARATOR);
}
@@ -161,7 +161,7 @@ public abstract class Formatter {
infos.add(waypointType.getL10n());
}
if (Waypoint.PREFIX_OWN.equalsIgnoreCase(waypoint.getPrefix())) {
- infos.add(cgeoapplication.getInstance().getString(R.string.waypoint_custom));
+ infos.add(CgeoApplication.getInstance().getString(R.string.waypoint_custom));
} else {
if (StringUtils.isNotBlank(waypoint.getPrefix())) {
infos.add(waypoint.getPrefix());
diff --git a/main/src/cgeo/geocaching/ui/ImagesList.java b/main/src/cgeo/geocaching/ui/ImagesList.java
index 0f860c4..9cca5b5 100644
--- a/main/src/cgeo/geocaching/ui/ImagesList.java
+++ b/main/src/cgeo/geocaching/ui/ImagesList.java
@@ -2,12 +2,12 @@ package cgeo.geocaching.ui;
import cgeo.geocaching.Image;
import cgeo.geocaching.R;
-import cgeo.geocaching.StoredList;
import cgeo.geocaching.files.LocalStorage;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.network.HtmlImage;
-import cgeo.geocaching.utils.IOUtils;
import cgeo.geocaching.utils.Log;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
diff --git a/main/src/cgeo/geocaching/ui/LoggingUI.java b/main/src/cgeo/geocaching/ui/LoggingUI.java
index 0ee724a..1423da2 100644
--- a/main/src/cgeo/geocaching/ui/LoggingUI.java
+++ b/main/src/cgeo/geocaching/ui/LoggingUI.java
@@ -1,12 +1,11 @@
package cgeo.geocaching.ui;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
-import cgeo.geocaching.settings.Settings;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.enumerations.LogType;
+import cgeo.geocaching.settings.Settings;
import android.app.Activity;
import android.app.AlertDialog;
@@ -61,13 +60,13 @@ public class LoggingUI extends AbstractUIFactory {
}
}
- public static boolean onMenuItemSelected(final MenuItem item, IAbstractActivity activity, Geocache cache) {
+ public static boolean onMenuItemSelected(final MenuItem item, final Activity activity, final Geocache cache) {
switch (item.getItemId()) {
case R.id.menu_log_visit:
cache.logVisit(activity);
return true;
case R.id.menu_log_visit_offline:
- showOfflineMenu(cache, (Activity) activity);
+ showOfflineMenu(cache, activity);
return true;
default:
return false;
@@ -75,7 +74,7 @@ public class LoggingUI extends AbstractUIFactory {
}
private static void showOfflineMenu(final Geocache cache, final Activity activity) {
- final LogEntry currentLog = cgData.loadLogOffline(cache.getGeocode());
+ final LogEntry currentLog = DataStore.loadLogOffline(cache.getGeocode());
final LogType currentLogType = currentLog == null ? null : currentLog.type;
final List<LogType> logTypes = cache.getPossibleLogTypes();
@@ -100,7 +99,7 @@ public class LoggingUI extends AbstractUIFactory {
if (logTypeEntry.logType == null) {
switch (logTypeEntry.specialLogType) {
case LOG_CACHE:
- cache.logVisit((IAbstractActivity) activity);
+ cache.logVisit(activity);
break;
case CLEAR_LOG:
diff --git a/main/src/cgeo/geocaching/ui/dialog/CustomProgressDialog.java b/main/src/cgeo/geocaching/ui/dialog/CustomProgressDialog.java
index e80c446..97c5c29 100644
--- a/main/src/cgeo/geocaching/ui/dialog/CustomProgressDialog.java
+++ b/main/src/cgeo/geocaching/ui/dialog/CustomProgressDialog.java
@@ -10,6 +10,7 @@ import android.view.View;
import android.widget.TextView;
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
@@ -38,7 +39,11 @@ public class CustomProgressDialog extends ProgressDialog {
method.invoke(textView, View.GONE);
}
}
- } catch (Exception e) {
+ } catch (NoSuchMethodException e) {
+ Log.e("Failed to invoke the progressDialog method 'setVisibility' and set 'mProgressNumber' to GONE.", e);
+ } catch (IllegalAccessException e) {
+ Log.e("Failed to invoke the progressDialog method 'setVisibility' and set 'mProgressNumber' to GONE.", e);
+ } catch (InvocationTargetException e) {
Log.e("Failed to invoke the progressDialog method 'setVisibility' and set 'mProgressNumber' to GONE.", e);
}
}
diff --git a/main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java b/main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java
index 2c4f38d..6ad59ec 100644
--- a/main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java
+++ b/main/src/cgeo/geocaching/ui/dialog/LiveMapInfoDialogBuilder.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.ui.dialog;
import cgeo.geocaching.R;
import cgeo.geocaching.settings.Settings;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import android.app.Activity;
import android.app.AlertDialog;
@@ -33,7 +33,7 @@ public class LiveMapInfoDialogBuilder {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
- cgeoapplication.getInstance().setLiveMapHintShown();
+ CgeoApplication.getInstance().setLiveMapHintShown();
if (checkBoxHide.getVisibility() == View.VISIBLE && checkBoxHide.isChecked()) {
Settings.setHideLiveHint(true);
}
diff --git a/main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java b/main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java
index 8da711e..8fe3866 100644
--- a/main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java
@@ -4,7 +4,7 @@ import cgeo.geocaching.CacheDetailActivity;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.ui.UserActionsClickListener;
@@ -23,7 +23,7 @@ import java.util.Map.Entry;
public class CacheLogsViewCreator extends LogsViewCreator {
private final boolean allLogs;
- private final Resources res = cgeoapplication.getInstance().getResources();
+ private final Resources res = CgeoApplication.getInstance().getResources();
public CacheLogsViewCreator(CacheDetailActivity cacheDetailActivity, boolean allLogs) {
super(cacheDetailActivity);
diff --git a/main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java b/main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java
index ee2713a..15634d3 100644
--- a/main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java
@@ -4,9 +4,9 @@ import cgeo.geocaching.Image;
import cgeo.geocaching.ImagesActivity;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
-import cgeo.geocaching.StoredList;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.activity.Progress;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.network.HtmlImage;
import cgeo.geocaching.ui.AbstractCachingPageViewCreator;
import cgeo.geocaching.ui.AnchorAwareLinkMovementMethod;
@@ -129,7 +129,7 @@ public abstract class LogsViewCreator extends AbstractCachingPageViewCreator<Lis
if (null == convertView) {
holder.author.setOnClickListener(createUserActionsListener());
holder.text.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
- holder.text.setOnClickListener(new DecryptTextClickListener());
+ holder.text.setOnClickListener(new DecryptTextClickListener(holder.text));
activity.registerForContextMenu(holder.text);
}
}
diff --git a/main/src/cgeo/geocaching/utils/ApplicationSettings.java b/main/src/cgeo/geocaching/utils/ApplicationSettings.java
index 99d3142..78fa4f6 100644
--- a/main/src/cgeo/geocaching/utils/ApplicationSettings.java
+++ b/main/src/cgeo/geocaching/utils/ApplicationSettings.java
@@ -17,7 +17,7 @@ public class ApplicationSettings {
*/
public static String getPreferencesName() {
// There is currently no Android API to get the file name of the shared preferences. Let's hardcode
- // it without needing a cgeoapplication instance.
+ // it without needing a CgeoApplication instance.
return "cgeo.geocaching_preferences";
}
diff --git a/main/src/cgeo/geocaching/utils/CancellableHandler.java b/main/src/cgeo/geocaching/utils/CancellableHandler.java
index 8cf8f28..cb4b9db 100644
--- a/main/src/cgeo/geocaching/utils/CancellableHandler.java
+++ b/main/src/cgeo/geocaching/utils/CancellableHandler.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.utils;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import android.os.Handler;
import android.os.Message;
@@ -114,7 +114,7 @@ public abstract class CancellableHandler extends Handler {
public static void sendLoadProgressDetail(final Handler handler, final int resourceId) {
if (null != handler) {
- handler.obtainMessage(UPDATE_LOAD_PROGRESS_DETAIL, cgeoapplication.getInstance().getString(resourceId)).sendToTarget();
+ handler.obtainMessage(UPDATE_LOAD_PROGRESS_DETAIL, CgeoApplication.getInstance().getString(resourceId)).sendToTarget();
}
}
}
diff --git a/main/src/cgeo/geocaching/utils/ClipboardUtils.java b/main/src/cgeo/geocaching/utils/ClipboardUtils.java
index 67069b2..77250f3 100644
--- a/main/src/cgeo/geocaching/utils/ClipboardUtils.java
+++ b/main/src/cgeo/geocaching/utils/ClipboardUtils.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.utils;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import android.content.Context;
@@ -24,7 +24,7 @@ public final class ClipboardUtils {
*/
public static void copyToClipboard(final CharSequence text) {
// fully qualified name used here to avoid buggy deprecation warning (of javac) on the import statement
- final android.text.ClipboardManager clipboard = (android.text.ClipboardManager) cgeoapplication.getInstance().getSystemService(Context.CLIPBOARD_SERVICE);
+ final android.text.ClipboardManager clipboard = (android.text.ClipboardManager) CgeoApplication.getInstance().getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(text);
}
diff --git a/main/src/cgeo/geocaching/utils/CryptUtils.java b/main/src/cgeo/geocaching/utils/CryptUtils.java
index 18a337d..d98585a 100644
--- a/main/src/cgeo/geocaching/utils/CryptUtils.java
+++ b/main/src/cgeo/geocaching/utils/CryptUtils.java
@@ -1,11 +1,17 @@
package cgeo.geocaching.utils;
+import org.apache.commons.lang3.CharEncoding;
+import org.apache.commons.lang3.StringUtils;
+
import android.text.Spannable;
import android.text.SpannableStringBuilder;
+import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
+import java.security.GeneralSecurityException;
import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
@@ -62,7 +68,7 @@ public final class CryptUtils {
public static String rot13(String text) {
if (text == null) {
- return "";
+ return StringUtils.EMPTY;
}
final StringBuilder result = new StringBuilder();
Rot13Encryption rot13 = new Rot13Encryption();
@@ -76,42 +82,44 @@ public final class CryptUtils {
}
public static String md5(String text) {
- String hashed = "";
-
try {
final MessageDigest digest = MessageDigest.getInstance("MD5");
- digest.update(text.getBytes(), 0, text.length());
- hashed = new BigInteger(1, digest.digest()).toString(16);
- } catch (Exception e) {
+ digest.update(text.getBytes(CharEncoding.UTF_8), 0, text.length());
+ return new BigInteger(1, digest.digest()).toString(16);
+ } catch (NoSuchAlgorithmException e) {
+ Log.e("CryptUtils.md5", e);
+ } catch (UnsupportedEncodingException e) {
Log.e("CryptUtils.md5", e);
}
- return hashed;
+ return StringUtils.EMPTY;
}
public static String sha1(String text) {
- String hashed = "";
-
try {
final MessageDigest digest = MessageDigest.getInstance("SHA-1");
- digest.update(text.getBytes(), 0, text.length());
- hashed = new BigInteger(1, digest.digest()).toString(16);
- } catch (Exception e) {
+ digest.update(text.getBytes(CharEncoding.UTF_8), 0, text.length());
+ return new BigInteger(1, digest.digest()).toString(16);
+ } catch (NoSuchAlgorithmException e) {
+ Log.e("CryptUtils.sha1", e);
+ } catch (UnsupportedEncodingException e) {
Log.e("CryptUtils.sha1", e);
}
- return hashed;
+ return StringUtils.EMPTY;
}
public static byte[] hashHmac(String text, String salt) {
byte[] macBytes = {};
try {
- final SecretKeySpec secretKeySpec = new SecretKeySpec(salt.getBytes(), "HmacSHA1");
+ final SecretKeySpec secretKeySpec = new SecretKeySpec(salt.getBytes(CharEncoding.UTF_8), "HmacSHA1");
final Mac mac = Mac.getInstance("HmacSHA1");
mac.init(secretKeySpec);
- macBytes = mac.doFinal(text.getBytes());
- } catch (Exception e) {
+ macBytes = mac.doFinal(text.getBytes(CharEncoding.UTF_8));
+ } catch (GeneralSecurityException e) {
+ Log.e("CryptUtils.hashHmac", e);
+ } catch (UnsupportedEncodingException e) {
Log.e("CryptUtils.hashHmac", e);
}
diff --git a/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java b/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java
index 24f375d..b291a8a 100644
--- a/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java
+++ b/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.utils;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.MainActivity;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.ui.Formatter;
@@ -12,8 +12,6 @@ import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.res.Resources;
-import android.os.Handler;
-import android.os.Message;
import java.io.File;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -34,34 +32,31 @@ public class DatabaseBackupUtils {
final Resources res = activity.getResources();
final ProgressDialog dialog = ProgressDialog.show(activity, res.getString(R.string.init_backup_restore), res.getString(R.string.init_restore_running), true, false);
final AtomicBoolean restoreSuccessful = new AtomicBoolean(false);
- Thread restoreThread = new Thread() {
- final Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- dialog.dismiss();
- boolean restored = restoreSuccessful.get();
- String message = restored ? res.getString(R.string.init_restore_success) : res.getString(R.string.init_restore_failed);
- ActivityMixin.helpDialog(activity, res.getString(R.string.init_backup_restore), message);
- if (activity instanceof MainActivity) {
- ((MainActivity) activity).updateCacheCounter();
- }
- }
- };
-
+ new Thread() {
@Override
public void run() {
- restoreSuccessful.set(cgData.restoreDatabaseInternal());
- handler.sendMessage(handler.obtainMessage());
+ restoreSuccessful.set(DataStore.restoreDatabaseInternal());
+ activity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ dialog.dismiss();
+ boolean restored = restoreSuccessful.get();
+ String message = restored ? res.getString(R.string.init_restore_success) : res.getString(R.string.init_restore_failed);
+ ActivityMixin.helpDialog(activity, res.getString(R.string.init_backup_restore), message);
+ if (activity instanceof MainActivity) {
+ ((MainActivity) activity).updateCacheCounter();
+ }
+ }
+ });
}
- };
- restoreThread.start();
+ }.start();
}
public static boolean createBackup(final Activity activity, final Runnable runAfterwards) {
final Context context = activity;
// avoid overwriting an existing backup with an empty database
// (can happen directly after reinstalling the app)
- if (cgData.getAllCachesCount() == 0) {
+ if (DataStore.getAllCachesCount() == 0) {
ActivityMixin.helpDialog(activity,
context.getString(R.string.init_backup),
context.getString(R.string.init_backup_unnecessary));
@@ -74,7 +69,7 @@ public class DatabaseBackupUtils {
new Thread() {
@Override
public void run() {
- final String backupFileName = cgData.backupDatabaseInternal();
+ final String backupFileName = DataStore.backupDatabaseInternal();
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
@@ -96,8 +91,8 @@ public class DatabaseBackupUtils {
}
public static File getRestoreFile() {
- final File fileSourceFile = cgData.getBackupFileInternal();
- return fileSourceFile.exists() ? fileSourceFile : null;
+ final File fileSourceFile = DataStore.getBackupFileInternal();
+ return fileSourceFile.exists() && fileSourceFile.length() > 0 ? fileSourceFile : null;
}
public static boolean hasBackup() {
diff --git a/main/src/cgeo/geocaching/utils/GeoDirHandler.java b/main/src/cgeo/geocaching/utils/GeoDirHandler.java
index a143730..c85648b 100644
--- a/main/src/cgeo/geocaching/utils/GeoDirHandler.java
+++ b/main/src/cgeo/geocaching/utils/GeoDirHandler.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.utils;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.IGeoData;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.settings.Settings;
import android.os.Handler;
@@ -29,7 +29,7 @@ public abstract class GeoDirHandler extends Handler implements IObserver<Object>
private static final int STOP_GEO = 1 << 4;
private static final int STOP_DIR = 1 << 5;
- private static final cgeoapplication app = cgeoapplication.getInstance();
+ private static final CgeoApplication app = CgeoApplication.getInstance();
@Override
final public void handleMessage(final Message message) {
diff --git a/main/src/cgeo/geocaching/utils/IOUtils.java b/main/src/cgeo/geocaching/utils/IOUtils.java
deleted file mode 100644
index df90da3..0000000
--- a/main/src/cgeo/geocaching/utils/IOUtils.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package cgeo.geocaching.utils;
-
-import java.io.Closeable;
-import java.io.IOException;
-
-final public class IOUtils {
-
- private IOUtils() {
- // utility class
- }
-
- public static void closeQuietly(final Closeable closeable) {
- if (closeable != null) {
- try {
- closeable.close();
- } catch (final IOException e) {
- Log.w("closeQuietly: unable to close " + closeable, e);
- }
- }
- }
-
-}
diff --git a/main/src/cgeo/geocaching/utils/ImageUtils.java b/main/src/cgeo/geocaching/utils/ImageUtils.java
index 478be1f..ea4498b 100644
--- a/main/src/cgeo/geocaching/utils/ImageUtils.java
+++ b/main/src/cgeo/geocaching/utils/ImageUtils.java
@@ -1,8 +1,11 @@
package cgeo.geocaching.utils;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.compatibility.Compatibility;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Point;
@@ -13,6 +16,7 @@ import android.net.Uri;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
@@ -45,7 +49,7 @@ public final class ImageUtils {
* @return BitmapDrawable The scaled image
*/
public static BitmapDrawable scaleBitmapTo(final Bitmap image, final int maxWidth, final int maxHeight) {
- final cgeoapplication app = cgeoapplication.getInstance();
+ final CgeoApplication app = CgeoApplication.getInstance();
Bitmap result = image;
int width = image.getWidth();
int height = image.getHeight();
@@ -81,7 +85,7 @@ public final class ImageUtils {
bitmap.compress(format, quality, bos);
bos.flush();
bos.close();
- } catch (Exception e) {
+ } catch (IOException e) {
Log.e("ImageHelper.storeBitmap", e);
}
}
@@ -95,7 +99,8 @@ public final class ImageUtils {
* boundings
* @return filename and path, <tt>null</tt> if something fails
*/
- public static String readScaleAndWriteImage(final String filePath, final int maxXY) {
+ @Nullable
+ public static String readScaleAndWriteImage(@NonNull final String filePath, final int maxXY) {
if (maxXY <= 0) {
return filePath;
}
@@ -131,6 +136,7 @@ public final class ImageUtils {
* @return the temporary image file to use, or <tt>null</tt> if the media directory could
* not be created.
* */
+ @Nullable
public static File getOutputImageFile() {
// To be safe, you should check that the SDCard is mounted
// using Environment.getExternalStorageState() before doing this.
@@ -152,6 +158,7 @@ public final class ImageUtils {
return new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");
}
+ @Nullable
public static Uri getOutputImageFileUri() {
final File file = getOutputImageFile();
if (file == null) {
diff --git a/main/src/cgeo/geocaching/utils/Log.java b/main/src/cgeo/geocaching/utils/Log.java
index aa8dbd1..8f96f10 100644
--- a/main/src/cgeo/geocaching/utils/Log.java
+++ b/main/src/cgeo/geocaching/utils/Log.java
@@ -1,11 +1,15 @@
package cgeo.geocaching.utils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.CharEncoding;
+
import android.os.Environment;
import java.io.BufferedWriter;
import java.io.File;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.OutputStreamWriter;
import java.io.Writer;
public final class Log {
@@ -107,7 +111,7 @@ public final class Log {
}
Writer writer = null;
try {
- writer = new BufferedWriter(new FileWriter(file, true));
+ writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true), CharEncoding.UTF_8));
writer.write(msg);
} catch (final IOException e) {
Log.e("logToFile: cannot write to " + file, e);
diff --git a/main/src/cgeo/geocaching/utils/ProcessUtils.java b/main/src/cgeo/geocaching/utils/ProcessUtils.java
index 3345ff1..737fb35 100644
--- a/main/src/cgeo/geocaching/utils/ProcessUtils.java
+++ b/main/src/cgeo/geocaching/utils/ProcessUtils.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.utils;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import android.content.Intent;
import android.content.pm.PackageInfo;
@@ -43,7 +43,7 @@ public final class ProcessUtils {
* This will find installed applications even without launch intent (e.g. the streetview plugin).
*/
private static boolean hasPackageInstalled(final String packageName) {
- final List<PackageInfo> packs = cgeoapplication.getInstance().getPackageManager().getInstalledPackages(0);
+ final List<PackageInfo> packs = CgeoApplication.getInstance().getPackageManager().getInstalledPackages(0);
for (final PackageInfo packageInfo : packs) {
if (packageName.equals(packageInfo.packageName)) {
return true;
@@ -59,7 +59,7 @@ public final class ProcessUtils {
if (packageName == null) {
return null;
}
- final PackageManager packageManager = cgeoapplication.getInstance().getPackageManager();
+ final PackageManager packageManager = CgeoApplication.getInstance().getPackageManager();
try {
// This can throw an exception where the exception type is only defined on API Level > 3
// therefore surround with try-catch
@@ -70,7 +70,7 @@ public final class ProcessUtils {
}
public static boolean isIntentAvailable(final String intent) {
- final PackageManager packageManager = cgeoapplication.getInstance().getPackageManager();
+ final PackageManager packageManager = CgeoApplication.getInstance().getPackageManager();
final List<ResolveInfo> list = packageManager.queryIntentActivities(
new Intent(intent), PackageManager.MATCH_DEFAULT_ONLY);
diff --git a/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java b/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java
index 9207c74..22cd4d7 100644
--- a/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java
+++ b/main/src/cgeo/geocaching/utils/SimpleCancellableHandler.java
@@ -26,7 +26,6 @@ public class SimpleCancellableHandler extends CancellableHandler {
activity.showToast(msg.getData().getString(MESSAGE_TEXT));
}
dismissProgress();
- return;
}
@Override
diff --git a/main/src/cgeo/geocaching/utils/SimpleHandler.java b/main/src/cgeo/geocaching/utils/SimpleHandler.java
index b01d0e1..8e0a479 100644
--- a/main/src/cgeo/geocaching/utils/SimpleHandler.java
+++ b/main/src/cgeo/geocaching/utils/SimpleHandler.java
@@ -3,7 +3,6 @@ package cgeo.geocaching.utils;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.activity.Progress;
-import android.content.res.Resources;
import android.os.Handler;
import android.os.Message;
@@ -15,48 +14,20 @@ public abstract class SimpleHandler extends Handler {
protected final WeakReference<Progress> progressDialogRef;
public SimpleHandler(final AbstractActivity activity, final Progress progress) {
- this.activityRef = new WeakReference<AbstractActivity>(activity);
- this.progressDialogRef = new WeakReference<Progress>(progress);
+ activityRef = new WeakReference<AbstractActivity>(activity);
+ progressDialogRef = new WeakReference<Progress>(progress);
}
@Override
public void handleMessage(final Message msg) {
- AbstractActivity activity = activityRef.get();
+ final AbstractActivity activity = activityRef.get();
if (activity != null && msg.getData() != null && msg.getData().getString(MESSAGE_TEXT) != null) {
activity.showToast(msg.getData().getString(MESSAGE_TEXT));
}
- dismissProgress();
- return;
- }
-
- protected final void showToast(final int resId) {
- AbstractActivity activity = activityRef.get();
- if (activity != null) {
- Resources res = activity.getResources();
- activity.showToast(res.getText(resId).toString());
- }
- }
-
- protected final void dismissProgress() {
- Progress progressDialog = progressDialogRef.get();
+ final Progress progressDialog = progressDialogRef.get();
if (progressDialog != null) {
progressDialog.dismiss();
}
}
- protected final void setProgressMessage(final String txt) {
- Progress progressDialog = progressDialogRef.get();
- if (progressDialog != null) {
- progressDialog.setMessage(txt);
- }
- }
-
- protected final void finishActivity() {
- AbstractActivity activity = activityRef.get();
- if (activity != null) {
- activity.finish();
- }
-
- }
-
}
diff --git a/main/src/cgeo/geocaching/utils/TextUtils.java b/main/src/cgeo/geocaching/utils/TextUtils.java
index c9d4958..302a65d 100644
--- a/main/src/cgeo/geocaching/utils/TextUtils.java
+++ b/main/src/cgeo/geocaching/utils/TextUtils.java
@@ -3,6 +3,8 @@
*/
package cgeo.geocaching.utils;
+import org.eclipse.jdt.annotation.Nullable;
+
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -34,7 +36,7 @@ public final class TextUtils {
* Find the last occurring value
* @return defaultValue or the n-th group if the pattern matches (trimmed if wanted)
*/
- public static String getMatch(final String data, final Pattern p, final boolean trim, final int group, final String defaultValue, final boolean last) {
+ public static String getMatch(@Nullable final String data, final Pattern p, final boolean trim, final int group, final String defaultValue, final boolean last) {
if (data != null) {
String result = null;
@@ -87,7 +89,7 @@ public final class TextUtils {
* Value to return if the pattern is not found
* @return defaultValue or the first group if the pattern matches (trimmed)
*/
- public static String getMatch(final String data, final Pattern p, final String defaultValue) {
+ public static String getMatch(@Nullable final String data, final Pattern p, final String defaultValue) {
return TextUtils.getMatch(data, p, true, 1, defaultValue, false);
}
diff --git a/main/src/cgeo/geocaching/utils/TranslationUtils.java b/main/src/cgeo/geocaching/utils/TranslationUtils.java
index 1224f7e..619db08 100644
--- a/main/src/cgeo/geocaching/utils/TranslationUtils.java
+++ b/main/src/cgeo/geocaching/utils/TranslationUtils.java
@@ -3,6 +3,8 @@ package cgeo.geocaching.utils;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.network.Network;
+import org.apache.commons.lang3.StringUtils;
+
import android.content.Intent;
import android.net.Uri;
@@ -11,12 +13,12 @@ import android.net.Uri;
*/
public final class TranslationUtils {
- private static final String translationWebsite = "http://translate.google.com/";
- private static final String translationForceClassicMode = "?vi=c";
- private static final String translationAutoSelect = "#auto";
- private static final String translationFieldSeparator = "|";
+ private static final String TRANSLATION_WEBSITE = "http://translate.google.com/";
+ private static final String TRANSLATION_FORCE_CLASSIC_MODE = "?vi=c";
+ private static final String TRANSLATION_AUTO_SELECT = "#auto";
+ private static final String TRANSLATION_FIELD_SEPARATOR = "|";
- public static final int translationTextLengthToWarn = 500;
+ public static final int TRANSLATION_TEXT_LENGTH_WARN = 500;
private static final String TRANSLATION_APP = "com.google.android.apps.translate";
private TranslationUtils() {
@@ -24,8 +26,8 @@ public final class TranslationUtils {
}
/**
- * Build a URI for Google Translate
- *
+ * Build a URI for Google Translate.
+ *
* @param toLang
* The two-letter lowercase ISO language codes as defined by ISO 639-1
* @param text
@@ -36,13 +38,13 @@ public final class TranslationUtils {
String content = Network.encode(text);
// the app works better without the "+", the website works better with "+", therefore assume using the app if installed
if (ProcessUtils.isLaunchable(TRANSLATION_APP)) {
- content = content.replace("+", "%20");
+ content = StringUtils.replace(content, "+", "%20");
}
- return translationWebsite + translationForceClassicMode + translationAutoSelect + translationFieldSeparator + toLang + translationFieldSeparator + content;
+ return TRANSLATION_WEBSITE + TRANSLATION_FORCE_CLASSIC_MODE + TRANSLATION_AUTO_SELECT + TRANSLATION_FIELD_SEPARATOR + toLang + TRANSLATION_FIELD_SEPARATOR + content;
}
/**
- * Send Intent for Google Translate. Can be caught by Google Translate App or browser
+ * Send Intent for Google Translate. Can be caught by Google Translate App or browser.
*
* @param toLang
* The two-letter lowercase ISO language codes as defined by ISO 639-1
diff --git a/main/src/cgeo/geocaching/utils/UncertainProperty.java b/main/src/cgeo/geocaching/utils/UncertainProperty.java
index 5f86662..e8686e3 100644
--- a/main/src/cgeo/geocaching/utils/UncertainProperty.java
+++ b/main/src/cgeo/geocaching/utils/UncertainProperty.java
@@ -2,6 +2,11 @@ package cgeo.geocaching.utils;
import cgeo.geocaching.connector.gc.Tile;
+/**
+ * Property with certainty. When merging properties, the one with higher certainty wins.
+ *
+ * @param <T>
+ */
public class UncertainProperty<T> {
private final T value;
diff --git a/send2cgeo/firefox-addon/send2cgeo/data/LICENSE b/send2cgeo/firefox-addon/send2cgeo/data/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/send2cgeo/firefox-addon/send2cgeo/data/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/send2cgeo/firefox-addon/send2cgeo/data/NOTICE b/send2cgeo/firefox-addon/send2cgeo/data/NOTICE
new file mode 100644
index 0000000..d37863d
--- /dev/null
+++ b/send2cgeo/firefox-addon/send2cgeo/data/NOTICE
@@ -0,0 +1,10 @@
+ c:geo
+ Copyright 2011-2013 c:geo contributors
+
+ This product includes software developed by
+ the c:geo team and contributors. See main/res/values/strings_not_translatable.xml
+ for details.
+
+ Portions of this software were developed elsewhere. See the files in main/thirdparty
+ and the notices therein and the references in main/res/values/strings_not_translatable.xml
+ for details.
diff --git a/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.48.png b/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.48.png
new file mode 100644
index 0000000..585c6a5
--- /dev/null
+++ b/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.48.png
Binary files differ
diff --git a/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.64.png b/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.64.png
new file mode 100644
index 0000000..646e5c6
--- /dev/null
+++ b/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.64.png
Binary files differ
diff --git a/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.user.js b/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.user.js
new file mode 120000
index 0000000..1e1f91e
--- /dev/null
+++ b/send2cgeo/firefox-addon/send2cgeo/data/send2cgeo.user.js
@@ -0,0 +1 @@
+../../../send2cgeo.user.js \ No newline at end of file
diff --git a/send2cgeo/firefox-addon/send2cgeo/lib/main.js b/send2cgeo/firefox-addon/send2cgeo/lib/main.js
new file mode 100644
index 0000000..82eb508
--- /dev/null
+++ b/send2cgeo/firefox-addon/send2cgeo/lib/main.js
@@ -0,0 +1,8 @@
+var pageMod = require("sdk/page-mod");
+var data = require("sdk/self").data;
+
+pageMod.PageMod({
+ include: ["http://www.geocaching.com/seek/cache_details*", "http://www.geocaching.com/geocache/*", "http://www.geocaching.com/map/*"],
+ contentScriptWhen: "end",
+ contentScriptFile: data.url("send2cgeo.user.js")
+}); \ No newline at end of file
diff --git a/send2cgeo/firefox-addon/send2cgeo/package.json b/send2cgeo/firefox-addon/send2cgeo/package.json
new file mode 100644
index 0000000..ee7da8a
--- /dev/null
+++ b/send2cgeo/firefox-addon/send2cgeo/package.json
@@ -0,0 +1,17 @@
+{
+ "description": "This is a small wrapper around the send2cgeo Greasemonkey script.\n\nCredit goes to the developers of send2cgeo.user.js",
+ "contributors": [],
+ "dependencies": ["api-utils", "addon-kit"],
+ "fullName": "send2cgeo",
+ "id": "jid0-XabGAJzXPgqYfMo6BeiN59yek1k",
+ "lib": "lib",
+ "license": "Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)",
+ "icon": "data/send2cgeo.48.png",
+ "icon64": "data/send2cgeo.64.png",
+ "author": "JavaJens",
+ "url": "",
+ "name": "send2cgeo",
+ "version": "0.1a",
+ "main": "main",
+ "homepage": "http://send2.cgeo.org/"
+}
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 19029aa..77367ae 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -21,6 +21,14 @@
android:icon="@drawable/icon"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
+
+ <activity android:name="CgeoTestsActivity" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
</application>
</manifest> \ No newline at end of file
diff --git a/tests/res/layout/cgeo_tests_activity.xml b/tests/res/layout/cgeo_tests_activity.xml
new file mode 100644
index 0000000..43225ac
--- /dev/null
+++ b/tests/res/layout/cgeo_tests_activity.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/RelativeLayout1"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginLeft="6dp"
+ android:layout_marginRight="6dp"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/headline"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_gravity="center_vertical"
+ android:gravity="center_vertical"
+ android:lines="1"
+ android:singleLine="true"
+ android:text="@string/logcat"
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <cgeo.geocaching.test.BottomAwareScrollView
+ android:id="@+id/scrollView"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:layout_above="@+id/buttonRun"
+ android:layout_alignParentLeft="true"
+ android:layout_below="@+id/headline" >
+
+ <TextView
+ android:id="@+id/logOutput"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:textSize="8sp"
+ tools:ignore="SmallSp" />
+ </cgeo.geocaching.test.BottomAwareScrollView>
+
+ <Button
+ android:id="@+id/buttonRun"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="false"
+ android:onClick="runTests"
+ android:text="@string/run_tests" />
+
+ <requestFocus
+ android:layout_alignTop="@+id/buttonRun"
+ android:layout_centerHorizontal="true"
+ android:layout_marginTop="18dp" />
+
+</RelativeLayout> \ No newline at end of file
diff --git a/tests/res/raw/gc366bq.html b/tests/res/raw/gc366bq.html
index e54f0dd..90f0c46 100644
--- a/tests/res/raw/gc366bq.html
+++ b/tests/res/raw/gc366bq.html
@@ -1,223 +1,49 @@
+
<!DOCTYPE html>
<html lang="en" class="no-js">
-<head id="ctl00_Head1"><meta charset="utf-8" />
- <!--[if IE]><![endif]-->
- <title>
+<head id="ctl00_Head1"><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><title>
GC366BQ Flugplatzrunde Pattonville (Kinder-Multi) (Multi-cache) in Baden-Württemberg, Germany created by Four Ernies
-</title><meta name="DC.title" content="Geocaching - The Official Global GPS Cache Hunt Site" /><meta name="author" content="Groundspeak, Inc." /><meta name="DC.creator" content="Groundspeak, Inc." /><meta name="Copyright" content="Copyright (c) 2000-2012 Groundspeak, Inc. All Rights Reserved." /><!-- Copyright (c) 2000-2012 Groundspeak, Inc. All Rights Reserved. --><meta name="description" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta name="DC.subject" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta http-equiv="imagetoolbar" content="no" /><meta name="distribution" content="global" /><meta name="MSSmartTagsPreventParsing" content="true" /><meta name="rating" content="general" /><meta name="revisit-after" content="1 days" /><meta name="robots" content="all" /><meta http-equiv="X-UA-Compatible" content="IE=8" /><link rel="icon" href="/favicon.ico" /><link rel="shortcut icon" href="/favicon.ico" /><link rel="apple-touch-icon" href="/apple-touch-icon.png" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/reset.css" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/typography.css" /><link rel="stylesheet" type="text/css" media="screen,projection" href="../css/blueprint/src/grid.css" />
+</title><meta name="DC.title" content="Geocaching - The Official Global GPS Cache Hunt Site" /><meta name="author" content="Groundspeak, Inc." /><meta name="DC.creator" content="Groundspeak, Inc." /><meta name="Copyright" content="Copyright (c) 2000-2013 Groundspeak, Inc. All Rights Reserved." /><!-- Copyright (c) 2000-2013 Groundspeak, Inc. All Rights Reserved. --><meta name="description" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta name="DC.subject" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta http-equiv="imagetoolbar" content="no" /><meta name="distribution" content="global" /><meta name="MSSmartTagsPreventParsing" content="true" /><meta name="rating" content="general" /><meta name="revisit-after" content="1 days" /><meta name="robots" content="all" /><link rel="icon" href="/favicon.ico" /><link rel="shortcut icon" href="/favicon.ico" /><link rel="apple-touch-icon" href="/apple-touch-icon.png" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/reset.css" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/typography.css" /><link rel="stylesheet" type="text/css" media="screen,projection" href="../css/blueprint/src/grid.css" />
<!--[if lt IE 8]>
- <link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/ie.css" />
- <![endif]-->
+ <link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/ie.css" />
+ <![endif]-->
<link id="uxCssMaster" rel="stylesheet" type="text/css" media="screen,projection" href="../css/tlnMasterScreen.css?r=1" /><link id="uxCssMain" rel="stylesheet" type="text/css" media="all" href="../css/tlnMain.css?r=1" /><link rel="Stylesheet" type="text/css" media="all" href="../css/jqueryui1810/jquery-ui-1.8.10.custom.css" /><link rel="stylesheet" type="text/css" media="all" href="/js/jquery_plugins/jquery.jgrowl.css" /><link rel="stylesheet" type="text/css" media="print" href="../css/tlnMasterPrint.css" />
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ </script>
<script type="text/javascript" src="/js/modernizr-1.7.min.js"></script>
- <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
+
+ <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/js/jquery.truncate.min.js"></script>
+ <script type='text/javascript'>
+ var googletag = googletag || {};
+ googletag.cmd = googletag.cmd || [];
+ (function () {
+ var gads = document.createElement('script');
+ gads.async = true;
+ gads.type = 'text/javascript';
+ var useSSL = 'https:' == document.location.protocol;
+ gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';
+ var node = document.getElementsByTagName('script')[0];
+ node.parentNode.insertBefore(gads, node);
+ })();
+ </script>
+
+
<link href="/css/fancybox/jquery.fancybox.css" rel="stylesheet" type="text/css" />
<link href="/js/jquery_plugins/icalendar/jquery.icalendar.css" rel="stylesheet" type="text/css" />
- <link href="/js/jquery_plugins/tipTip/tipTip.css" rel="stylesheet" type="text/css" />
<link href="/js/jquery_plugins/qtip/jquery.qtip.css" rel="stylesheet" type="text/css" />
- <!--[if lte IE 8]>
- <style type="text/css" media="all">
- legend{
- position: absolute;
- top: -.6em;
- left: 1em;
- line-height: 1.3;
- }
- fieldset p{
- margin-top:1em;
- }
- img.CacheNoteHelpImg{
- top:-.2em;
- }
- </style>
- <![endif]-->
- <style type="text/css" media="screen,projection">
- #otherSearchOptions li
- {
- list-style-image: none;
- list-style-position: outside;
- list-style-type: none;
- }
- .ff
- {
- font-family: "Andale Mono" , "Courier New" ,Courier,monospace;
- }
- .fr
- {
- margin-top: 1.5em;
- float: right;
- }
- .fl
- {
- float: left;
- }
- .clsCell
- {
- border: 1px solid #c0cee3;
- font-size: 80%;
- background-color: #fff;
- }
- .clsResultTitle, .clsResultTitleNoBold
- {
- color: #0000de;
- }
- .clsResultDescription
- {
- color: #333;
- }
- .clsURL
- {
- color: #999;
- }
- a.title:link, a.title:visited, a.title:hover, a.title:active
- {
- color: #000;
- text-decoration: underline;
- }
- a.title
- {
- text-align: right;
- font-size: 10px;
- font-family: arial,sans-serif;
- padding: 0 1px 0 0;
- }
- #mapSizePager a:hover
- {
- font-weight: bold;
- }
- #mapSizePager ul
- {
- width: 100%;
- margin: 0;
- padding: 0;
- list-style: none;
- }
- #mapSizePager li
- {
- float: left;
- list-style: none;
- }
- #mapSizePager li a
- {
- font-family: verdana,sans-serif;
- font-size: x-small;
- display: block;
- margin: 0 2px 0 0;
- padding: 4px;
- text-decoration: none;
- border: solid 1px #c0c0c0;
- height: 10px;
- min-width: 10px;
- cursor: pointer;
- }
- #mapPrintingNotes
- {
- width: 280px;
- text-align: left;
- overflow: auto;
- }
- .inplace_field {
- width:100%;
- resize: none;
- }
- legend.note{
- background:url('../images/silk/note.png') no-repeat 0 0;
- padding-left:18px;
- }
- legend.warning{
- background:url('../images/silk/exclamation.png') no-repeat 0 0;
- padding-left:18px;
- }
- fieldset.CacheNote{
- border-color: #e9a24c !important;
- background-color:#ffffde;
- position:relative;
- }
- .CacheNoteHelpImg{
- position:relative;
- cursor:pointer;
- top:-1em;
- right:-.75em;
- float:right;
- }
- .InformationWidget h3{
- margin-bottom:.5em;
- }
- .InformationWidget .AlignRight{
- font-size:.8em;
- }
- #tiptip_content{
- *background-color:#000;
- }
- .maxed{
- color:#992a2a;
- }
-
-
- span.ccu-parseverify-distance img{
- text-align:center !important;
- vertical-align:text-bottom !important;
- }
- .edit-cache-coordinates{
- text-decoration: none;
- color: #000 !important;
- background: url(/images/silk/pencil.png) no-repeat right 0;
- padding:2px 20px 2px 0px;
- margin-right:4px;
- }
- .ccc-coord{
- cursor: text;
- font-family: Courier New, Sans-Serif;
- }
- .ccu-update dl {
- margin-bottom:.25em;
- }
- .ccu-update dt{
- float:left;
- min-width:90px;
- }
- .ccu-update .ui-button-text-only .ui-button-text{
- padding:.3em .75em;
- }
- .ccu-parseverify-coords{
- font-style:italic;
- margin-right:.25em;
- }
- .ccu-parseverify-accept, .ccu-parseverify-cancel{
- margin-top:-5px;
- }
- .ui-tooltip-widget .ui-tooltip-content{
- border-width:1px;
- background-color:#fff;
- border-color:#c0cee3;
- color:#594a42;
- padding:1em;
- width:420px;
- }
- .myLatLon {
- border-bottom:2px solid #c0cee3;
- font-style:italic;
- }
- .leaflet-control-attribution{
- padding:3px !important;
- }
- .leaflet-control-attribution img{
- vertical-align:middle;
- }
- </style>
- <link rel="Stylesheet" type="text/css" media="screen" href="/hide/css/CSPScreen.css" />
- <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/v5/leaflet.css" />
+ <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/0.5.1/leaflet.css" />
<!--[if IE]>
- <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/v5/leaflet.ie.css" />
- <![endif]-->
- <script type="text/javascript" language="javascript" src="/js/leaflet/v5/leaflet.js"></script>
- <script type="text/javascript" src="/js/jquery.pagemethods.js"></script>
+ <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/0.5.1/leaflet.ie.css" />
+ <![endif]-->
+ <link rel="stylesheet" type="text/css" media="screen" href="/css/seek/beta.css" />
+ <script type="text/javascript" src="/js/leaflet/0.5.1/leaflet.js"></script>
<script type="text/javascript" src="/js/geometa.js"></script>
<script type="text/javascript">
var userToken = null,
@@ -237,19 +63,19 @@
}
})();
</script>
-<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided coordinates, which will then lead you to one or more locations. Look for a regular hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 2 and difficulty is 2 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/3.png" property="og:image" /><meta name="og:title" content="Flugplatzrunde Pattonville (Kinder-Multi)" property="og:title" /><meta name="description" content="Flugplatzrunde Pattonville (Kinder-Multi) (GC366BQ) was created by Four Ernies on 11/04/2011. It&#39;s a Regular size geocache, with difficulty of 2, terrain of 2. It&#39;s located in Baden-W&#252;rttemberg, Germany. Dieser Kinder-Multi f&#252;hrt Euch durch ein malerisches, idyllisches St&#252;ckchen Natur. Er wird von 5 Tradis (Flugplatzrunde 1 bis 5) begleitet, welche den Kindern die Spannung erhalten- und die &quot;Multi-Langeweile&quot; verhindern sollen." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
+<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?wp=GC366BQ&amp;title=flugplatzrunde-pattonville-kinder-multi" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided coordinates, which will then lead you to one or more locations. Look for a regular hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 2 and difficulty is 2 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/3.png" property="og:image" /><meta name="og:title" content="Flugplatzrunde Pattonville (Kinder-Multi)" property="og:title" /><script>function utmx_section(){}function utmx(){}(function(){var k='3682814-19',d=document,l=d.location,c=d.cookie; if(l.search.indexOf('utm_expid='+k)>0)return; function f(n){if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);return escape(c.substring(i+n.length+1,j<0?c.length:j))}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;d.write('<sc'+'ript src=" '+'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com/ga_exp.js?'+'utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+'" type="text/javascript" charset="utf-8"><\/sc'+'ript>')})();</script><script>utmx('url','A/B');</script><meta name="description" content="Flugplatzrunde Pattonville (Kinder-Multi) (GC366BQ) was created by Four Ernies on 11/04/2011. It&#39;s a Regular size geocache, with difficulty of 2, terrain of 2. It&#39;s located in Baden-W&#252;rttemberg, Germany.Dieser Kinder-Multi f&#252;hrt Euch durch ein malerisches, idyllisches St&#252;ckchen Natur. Er wird von 5 Tradis (Flugplatzrunde 1 bis 5) begleitet, welche den Kindern die Spannung erhalten- und die &quot;Multi-Langeweile&quot; verhindern sollen." /><link rel="canonical" href="http://www.geocaching.com/seek/cache_details.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285" /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
<body >
- <form name="aspnetForm" method="post" action="cache_details.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285" id="aspnetForm">
+ <form name="aspnetForm" method="post" action="/geocache/GC366BQ_flugplatzrunde-pattonville-kinder-multi" id="aspnetForm">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="6" />
-<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMjg3ODIyMjU0DxYCHgRDLklEKClZU3lzdGVtLkludDY0LCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkHMjU0NDMxORYCZg9kFgZmD2QWCgIGDxYCHgRUZXh0BWI8bWV0YSBuYW1lPSJDb3B5cmlnaHQiIGNvbnRlbnQ9IkNvcHlyaWdodCAoYykgMjAwMC0yMDEyIEdyb3VuZHNwZWFrLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIiAvPmQCBw8WAh8BBUc8IS0tIENvcHlyaWdodCAoYykgMjAwMC0yMDEyIEdyb3VuZHNwZWFrLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIC0tPmQCGg8WAh4EaHJlZgUdfi9jc3MvdGxuTWFzdGVyU2NyZWVuLmNzcz9yPTFkAhsPFgIfAgUVfi9jc3MvdGxuTWFpbi5jc3M/cj0xZAIgDxYCHgdWaXNpYmxlaGQCAQ9kFhICBQ8WAh8BZGQCCA8WAh8DZxYIAgEPDxYCHghJbWFnZVVybAVOaHR0cDovL2ltZy5nZW9jYWNoaW5nLmNvbS91c2VyL2F2YXRhci82NDJkMjc3MS00MjRlLTRlZTYtYmViNi1lZmVjZGUzNDA2ZmMuanBnZGQCAw8WAh8BBXRIZWxsbywgPGEgaHJlZj0iL215L2RlZmF1bHQuYXNweCIgdGl0bGU9IlZpZXcgUHJvZmlsZSBmb3IgQmFuYW5ld2VpemVuIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+QmFuYW5ld2VpemVuPC9hPmQCBQ8PFgIeC05hdmlnYXRlVXJsBaUBaHR0cHM6Ly93d3cuZ2VvY2FjaGluZy5jb20vbG9naW4vZGVmYXVsdC5hc3B4P1JFU0VUPVkmcmVkaXI9aHR0cCUzYSUyZiUyZnd3dy5nZW9jYWNoaW5nLmNvbSUyZnNlZWslMmZjYWNoZV9kZXRhaWxzLmFzcHglM2ZndWlkJTNkODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1ZGQCCw8WAh8BBUM8aW1nIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX3NtaWxlLnBuZyIgdGl0bGU9IkNhY2hlcyBGb3VuZCIgLz4gMzE0ZAINDxYCHwNnFgICDQ8PFgIfBQVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTMxODkyNjc4LTExMTctNDZlYi1hYTNiLTE5MWMyMGJkNjYwN2RkAhAPDxYCHwNnZGQCLQ9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHgtfIUl0ZW1Db3VudAIQFiBmD2QWAgIBDw8WCB4PQ29tbWFuZEFyZ3VtZW50BQVlbi1VUx4LQ29tbWFuZE5hbWUFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB4QQ2F1c2VzVmFsaWRhdGlvbmhkZAIBD2QWAgIBDw8WCB8HBQVkZS1ERR8IBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCWhkZAICD2QWAgIBDw8WCB8HBQVmci1GUh8IBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8JaGRkAgMPZBYCAgEPDxYIHwcFBXB0LVBUHwgFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8JaGRkAgQPZBYCAgEPDxYIHwcFBWNzLUNaHwgFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwloZGQCBQ9kFgICAQ8PFggfBwUFc3YtU0UfCAUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHwloZGQCBg9kFgICAQ8PFggfBwUFZXMtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8JaGRkAgcPZBYCAgEPDxYIHwcFBWl0LUlUHwgFDVNldFRlbXBMb2NhbGUfAQUISXRhbGlhbm8fCWhkZAIID2QWAgIBDw8WCB8HBQVubC1OTB8IBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfCWhkZAIJD2QWAgIBDw8WCB8HBQVjYS1FUx8IBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfCWhkZAIKD2QWAgIBDw8WCB8HBQVwbC1QTB8IBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8JaGRkAgsPZBYCAgEPDxYIHwcFBWV0LUVFHwgFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfCWhkZAIMD2QWAgIBDw8WCB8HBQVuYi1OTx8IBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwloZGQCDQ9kFgICAQ8PFggfBwUFa28tS1IfCAUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCWhkZAIOD2QWAgIBDw8WCB8HBQVodS1IVR8IBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8JaGRkAg8PZBYCAgEPDxYIHwcFBXJvLVJPHwgFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCWhkZAIvD2QWAgIDDxYCHwNoZAIwDxYCHgVjbGFzcwUMc3Bhbi0yNCBsYXN0FgICAQ9kFi4CAQ9kFgJmD2QWAgIBDw8WAh8BBQdHQzM2NkJRZGQCAg8WAh8BBZoBPGEgaHJlZj0iL2Fib3V0L2NhY2hlX3R5cGVzLmFzcHgiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iQWJvdXQgQ2FjaGUgVHlwZXMiPjxpbWcgc3JjPSIvaW1hZ2VzL1dwdFR5cGVzLzMuZ2lmIiBhbHQ9Ik11bHRpLWNhY2hlIiB0aXRsZT0iTXVsdGktY2FjaGUiIC8+PC9hPmQCBg9kFgQCAQ8WAh8DZ2QCBg8WAh8DaGQCCw9kFgQCAQ8WAh8BBQI2OGQCBQ8PFgIfBQVEL3NlZWsvY2FjaGVfZmF2b3JpdGVkLmFzcHg/Z3VpZD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODVkZAINDw8WAh8DaGRkAg4PFgQfAQVLPHAgY2xhc3M9Ildhcm5pbmcgTm9Cb3R0b21TcGFjaW5nIj5UaGlzIGlzIGEgUHJlbWl1bSBNZW1iZXIgT25seSBjYWNoZS48L3A+HwNnZAIQDxYCHwNoZAIRDxYCHwNoZAISD2QWDAIDDxYCHgVzdHlsZQUPZGlzcGxheTppbmxpbmU7FgICAQ8WAh8BBRtVVE06IDMyVSBFIDUxNTcxMyBOIDU0MTI2NDhkAg0PDxYCHwUFM2NkcGYuYXNweD9ndWlkPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NWRkAg8PDxYCHwUFOGNkcGYuYXNweD9ndWlkPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZsYz01ZGQCEQ8PFgIfBQU5Y2RwZi5hc3B4P2d1aWQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JmxjPTEwZGQCEw8PFgQfBQWOAWh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9NDguODYxMDAyLDkuMTg2NTc3IChIb21lIExvY2F0aW9uKSZkYWRkcj00OC44NjY2LDkuMjE0MjY3KEZsdWdwbGF0enJ1bmRlK1BhdHRvbnZpbGxlK0tpbmRlci1NdWx0aSkeBlRhcmdldAUGX2JsYW5rZGQCGw9kFggCAQ8PFgQeCUZvcmVDb2xvcgweBF8hU0ICBGRkAgMPDxYEHw0MHw4CBGRkAgUPDxYCHwNnFgIeB29uY2xpY2sFO3MyZ3BzKCc4MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUnKTtyZXR1cm4gZmFsc2U7ZAIHDw8WAh8DZxYCHw8FIHMycGhvbmUoJ0dDMzY2QlEnKTtyZXR1cm4gZmFsc2U7ZAIUDxYCHwNnZAIXD2QWCGYPFgIfA2hkAgEPDxYCHwNoZGQCAg8PFgIfA2hkZAIDDxYCHwNoZAIYD2QWAgIDDw8WAh8BBQdEZWNyeXB0ZGQCGQ8WAh8BBXlGR05UUiAzOiBUZcO8YTxicj5TVkFOWTogUmhwdSBtaCBTw7zDn3JhIHl2cnRnIGF2cHVnIHFyZSAiRmdydmEgcXJlIEpydmZyYSItIG5vcmUgcW5zw7xlIHFyZSAianJ2w59yIEZncnZhIiAoRmdydmFjeW5nZ3IpZAIcDxYCHwNoZAIeDxYCHwNnZAIfDxYCHwNoZAIiD2QWAgIBD2QWBAIBDw8WAh8BBf8DPGlmcmFtZSB0eXBlPSJpZnJhbWUiIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0JlNpdGVJRD0xJlg9J2M2YTg0ZmEzYTM4MTQ0Y2E5MzNiYjA1ZjBkNGJlZmE1JyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIE1hcmdpbndpZHRoPSIwIiBNYXJnaW5oZWlnaHQ9IjAiIEhzcGFjZT0iMCIgVnNwYWNlPSIwIiBGcmFtZWJvcmRlcj0iMCIgU2Nyb2xsaW5nPSJubyIgc3R5bGU9IndpZHRoOjEyMHB4O0hlaWdodDoyNDBweDsiPjxhIGhyZWY9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUNsaWNrJjtNb2RlPUhUTUwmU2l0ZUlEPTEiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0Jk1vZGU9SFRNTCZTaXRlSUQ9MSIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIy" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="NDAiIGJvcmRlcj0iMCIgYWx0PSIiIC8+PC9hPjwvaWZyYW1lPmRkAgMPFgIeCWlubmVyaHRtbAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJg9kFgQCBw8PFgIfA2dkZAILDw8WAh8FBTx+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODVkZAInDw8WAh8DZ2QWAmYPFgIfBgICFgQCAQ9kFgRmDxUDAFdodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD1hMDcwOTU2NS1jZTc2LTQ1NTUtYWU2Ny02NDA4MWFhMzNhOTISRmFtaWxpZW5mcmV1bmRsaWNoZAICDxUCTGh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD05Nzk2MmJmZi03ZjhjLTQxNDktYjA1OC1hZTEyNGQzYjUzYTMPU2NobnVmZmVsd3VmZmVsZAICD2QWBGYPFQMOQWx0ZXJuYXRpbmdSb3dXaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9MTRmNmQxOTUtMmU0OS00ODVjLWFiN2MtM2Y5MTExMTMwMmVlIkRpZSBiZXN0ZW4gQ2FjaGVzIFJhdW0gTHVkd2lnc2J1cmdkAgIPFQJMaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTU4Y2UwYjJiLWRlN2MtNGMwNi05ODY3LTQ3NWM5MDljZDkzYw1FcmlzRGlza29yZGlhZAIpD2QWFAIDD2QWAgIBDw8WAh8FBUUvaGlkZS93cHRsaXN0LmFzcHg/UmVmV3B0SUQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JkRTPTFkZAIHDw8WBB4GUkRTLklECyl2R3JvdW5kc3BlYWsuV2ViLkdQWC5XcHREYXRhU291cmNlcywgVHVjc29uLkNvbW1vbi5MZWdhY3ksIFZlcnNpb249My4wLjQ3MDAuMTYxOTQsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAEeB1JXUFQuSUQoKwQHMjU0NDMxOWQWAmYPFgIfBgINFhxmD2QWAmYPDxYCHwNoZGQCAQ9kFg5mDxUCAAVmYWxzZWQCAg8VB2I8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPpABPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcHV6emxlLmpwZyIgYWx0PSJRdWVzdGlvbiB0byBBbnN3ZXIiIHRpdGxlPSJRdWVzdGlvbiB0byBBbnN3ZXIiIC8+AjAxAjAxBlNUQTAwMbYBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD1jOTU5YTNkNC1iMjliLTQwN2MtOWYwOC1kNDljM2FkODI5YWUmUmVmSUQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JlJlZkRTPTEiPkdDMzY2QlEgU3RhZ2UgMTwvYT4gKFF1ZXN0aW9uIHRvIEFuc3dlcikcTiA0OMKwIDUxLjk5NiBFIDAwOcKwIDEyLjg1NmQCBQ8PFgIeB1Rvb2xUaXAFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh4NQWx0ZXJuYXRlVGV4dAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQBkAg4PFQGaAUluIHdpZSB2aWVsZW4gU3ByYWNoZW4gaXN0IGRpZSBCZW51dHplcm9yZG51bmcgZGVzIEZyZWl6ZWl0cGFya3MgdmVyZmFzc3Q/IEEgPSBBbnphaGwgZGVyIFNwcmFjaGVuPGJyPkZvcm1lbCBmw7xyIFMyOiBONDjCsDUxLigyMjUgeCBBKSB8IEUwMDnCsDEyLig5NjArQSlkAgIPZBYOZg8VAg5BbHRlcm5hdGluZ1JvdwVmYWxzZWQCAg8VB3Q8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fbm9jb29yZHMuanBnIiBhbHQ9IkhpZGUgQ29vcmRpbmF0ZXMiIHRpdGxlPSJIaWRlIENvb3JkaW5hdGVzIiAvPpABPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcHV6emxlLmpwZyIgYWx0PSJRdWVzdGlvbiB0byBBbnN3ZXIiIHRpdGxlPSJRdWVzdGlvbiB0byBBbnN3ZXIiIC8+AjAyAjAyBlNUQTAwMrYBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD05NjMxY2M4OC01MmE2LTQxOTAtYWE5NC0wN2EzMjMzNjEwNzQmUmVmSUQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JlJlZkRTPTEiPkdDMzY2QlEgU3RhZ2UgMjwvYT4gKFF1ZXN0aW9uIHRvIEFuc3dlcikDPz8/ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQ5BbHRlcm5hdGluZ1Jvd2QCDg8VAacBSGllciB3aXJkIGVpbiBQZmFkIGJlc2NocmllYmVuLiBXaWUgdmllbGUgRnXDn2FiZHLDvGNrZSBzaW5kIGF1ZiBkZW0gU2NoaWxkPyBCID0gQW56YWhsIGRlciBGdcOfYWJkcsO8Y2tlPGJyPkZvcm1lbCBmw7xyIFMzOiBONDjCsDUxLjgwMysoQiB4IDMpIHwgRTAwOcKwMTMuKEIgeCAxMCkrNzJkAgMPZBYOZg8VAgAFZmFsc2VkAgIPFQd0PGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX25vY29vcmRzLmpwZyIgYWx0PSJIaWRlIENvb3JkaW5hdGVzIiB0aXRsZT0iSGlkZSBDb29yZGluYXRlcyIgLz6QATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL3B1enpsZS5qcGciIGFsdD0iUXVlc3Rpb24gdG8gQW5zd2VyIiB0aXRsZT0iUXVlc3Rpb24gdG8gQW5zd2VyIiAvPgIwMwIwMwZTVEEwMDO2ATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9MDc0MjEzZTctOTg0My00YTY0LTliZGYtMzVmOGZhMDMwMjM4JlJlZklEPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZSZWZEUz0xIj5HQzM2NkJRIFN0YWdlIDM8L2E+IChRdWVzdGlvbiB0byBBbnN3ZXIpAz8/P2QCBQ8PFgIfEwUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHxQFBlJlbW92ZRYCHw8FQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQEAZAIODxUB/QJEYXMgRmx1Z3BsYXR6Z2Vsw6RuZGUgaXN0IG1pdCBlaW5lbSBaYXVuIGdlc2ljaGVydC4gRWluZXIgZGVyIFphdW5wZm9zdGVuIHRyw6RndCBlaW5lIEZhcmJtYXJraWVydW5nLiBGb2xndCBkZW0gV2VnIHdlaXRlciBSaWNodHVuZyBPc3Rlbi4gRG9ydCBmaW5kZXQgSWhyIGVpbmUgendlaXRlIEZhcmJtYXJraWVydW5nLiBXaWUgdmllbGUgWmF1bnBmb3N0ZW4gYmVmaW5kZW4gc2ljaCBaV0lTQ0hFTiBkZW4gYmVpZGVuIE1hcmtpZXJ1bmdlbiAoZGllIG1hcmtpZXJ0ZW4gUGZvc3RlbiBOSUNIVCBtaXR6w6RobGVuKT8gQyA9IEFuemFobCBkZXIgWmF1bnBmb3N0ZW4uIEZvcm1lbCBmw7xyIFM0OiBONDjCsDUxLig3NTcgLSBDKSB8IEUwMDnCsDEzLihDIHggMTApKyAxNDBkAgQPZBYOZg8VAg5BbHRlcm5hdGluZ1JvdwVmYWxzZWQCAg8VB3Q8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fbm9jb29yZHMuanBnIiBhbHQ9IkhpZGUgQ29vcmRpbmF0ZXMiIHRpdGxlPSJIaWRlIENvb3JkaW5hdGVzIiAvPpABPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcHV6emxlLmpwZyIgYWx0PSJRdWVzdGlvbiB0byBBbnN3ZXIiIHRpdGxlPSJRdWVzdGlvbiB0byBB" />
-<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="bnN3ZXIiIC8+AjA0AjA0BlNUQTAwNLYBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD02MDU1OTI1Ni03MzBkLTQyYTItOTZiMC1kOWU0ZWEzN2UzMjImUmVmSUQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JlJlZkRTPTEiPkdDMzY2QlEgU3RhZ2UgNDwvYT4gKFF1ZXN0aW9uIHRvIEFuc3dlcikDPz8/ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQ5BbHRlcm5hdGluZ1Jvd2QCDg8VAeADUGVpbHVuZzogRVhBS1QgMTA3wrA8YnI+SGllciBiZWZpbmRldCBzaWNoIGVpbiBIb2Noc3Bhbm51bmdzbWFzdCBtaXQgU3BpdHplLiBWb24gaWhtIGxhdWZlbiBLYWJlbCBuYWNoIGxpbmtzIHp1IGVpbmVtIHdlaXRlcmVuIEhvY2hzcGFubnVuZ3NtYXN0ICg4MMKwKSwgb2huZSBTcGl0emUuIERpZSBow7ZjaHN0ZSBMZWl0dW5nIHp3aXNjaGVuIGRlbiBiZWlkZW4gTWFzdGVuIGlzdCBtaXQgcm90LXdlacOfZW4gQsOkbGxlbiB2ZXJzZWhlbiAoc29sbGVuIEZsdWd6ZXVnZSB1bmQgSHVic2NocmF1YmVyIHdhcm5lbikuIFdpZSB2aWVsZSByb3Qtd2Vpw59lIELDpGxsZSBzaW5kIGF1ZiBkZXIgaMO2Y2hzdGVuIExlaXR1bmcgendpc2NoZW4gZGllc2VuIGJlaWRlbiBNYXN0ZW4/IEQgPSBBbnphaGwgZGVyIHJvdC13ZWnDn2VuIELDpGxsZTxicj5Gb3JtZWwgZsO8ciBTNTogTjQ4wrA1MS41OTArKER4MTApKzcgfCBFMDA5wrAxMy4oRHgxMjApKzgzZAIFD2QWDmYPFQIABWZhbHNlZAICDxUHdDxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9ub2Nvb3Jkcy5qcGciIGFsdD0iSGlkZSBDb29yZGluYXRlcyIgdGl0bGU9IkhpZGUgQ29vcmRpbmF0ZXMiIC8+kAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wdXp6bGUuanBnIiBhbHQ9IlF1ZXN0aW9uIHRvIEFuc3dlciIgdGl0bGU9IlF1ZXN0aW9uIHRvIEFuc3dlciIgLz4CMDUCMDUGU1RBMDA1tgE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPWRjZGFiMDM0LWI3YTEtNGMyMC04N2QxLWY3MzBmYWUzOTUyOSZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSA1PC9hPiAoUXVlc3Rpb24gdG8gQW5zd2VyKQM/Pz9kAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBAGQCDg8VAbABIkdlc2Now7x0enRlciBMZWJlbnNyYXVtIiBXaWUgdmllbGUgT3J0c2NoYWZ0ZW4vU3TDpGR0ZSBzaW5kIGF1ZiBkZW0gU2NoaWxkIGluc2dlc2FtdCBnZW5hbm50Pzxicj5FID0gQW56YWhsIGRlciBPcnRzY2hhZnRlbi4gRm9ybWVsIGbDvHIgUzY6IE40OMKwNTEuKDU5Ni1FKSB8IEUwMDnCsDEzLig3NDQrRSlkAgYPZBYOZg8VAg5BbHRlcm5hdGluZ1JvdwVmYWxzZWQCAg8VB3Q8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fbm9jb29yZHMuanBnIiBhbHQ9IkhpZGUgQ29vcmRpbmF0ZXMiIHRpdGxlPSJIaWRlIENvb3JkaW5hdGVzIiAvPpABPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcHV6emxlLmpwZyIgYWx0PSJRdWVzdGlvbiB0byBBbnN3ZXIiIHRpdGxlPSJRdWVzdGlvbiB0byBBbnN3ZXIiIC8+AjA2AjA2BlNUQTAwNrYBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD02MDBiNWI0Yi0yMGUwLTQzM2UtOTVkZS04ZmVmNjA4NGZjYTUmUmVmSUQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JlJlZkRTPTEiPkdDMzY2QlEgU3RhZ2UgNjwvYT4gKFF1ZXN0aW9uIHRvIEFuc3dlcikDPz8/ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQ5BbHRlcm5hdGluZ1Jvd2QCDg8VAeQDSGllciB0cmVmZmVuIG1laHJlcmUgRmVsZHdlZ2UgdW5kIFRyYW1wZWxwZmFkZSB6dXNhbW1lbi4gV2llIHZpZWxlIGJlZmFocmJhcmUgRmVsZHdlZ2UgdHJlZmZlbiBoaWVyIGF1ZmVpbmFuZGVyIChGYWhycsOkZGVyLCBNb3RvcsOkZGVyIGV0Yy4gesOkaGxlbiBOSUNIVCk/IE1pdCAiYmVmYWhyYmFyIiBpc3QgZGllIHRoZW9yZXRpc2NoZSBCZWZhaHJiYXJrZWl0IG1pdCBUcmFrdG9yZW4gb2RlciBBdXRvYHMgZ2VtZWludCAoaW5rbC4gU2Fja2dhc3NlKS4gRiA9IEFuemFobCBkZXIgYmVmYWhyYmFyZW4gRmVsZHdlZ2U8YnI+QUNIVFVORyBmw7xyIGRhcyBSb3V0aW5nIHp1IFN0YWdlIDggZGVuIFJlZmVyZW56cHVua3QgKFN0YWdlIDcpIGJlYWNodGVuLiAoSGlud2VpczogRGVyIFRyYWRpICJad2VyZ2VudHVubmVsIiBsaWVndCB6dy4gUzcgdW5kIFM4KTxicj5Gb3JtZWwgZsO8ciBTODogTjQ4wrA1MS4oNjU0LUYpIHwgRTAwOcKwMTMuKDMwOCtGKWQCBw9kFg5mDxUCAAVmYWxzZWQCAg8VB2I8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPowBPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vd2F5cG9pbnQuanBnIiBhbHQ9IlJlZmVyZW5jZSBQb2ludCIgdGl0bGU9IlJlZmVyZW5jZSBQb2ludCIgLz4CMDcCMDcGU1RBMDA3swE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTVhNmZhOGIwLTIxODEtNDUxYS1iOGRhLTdhOWFlZTQxNDFmZSZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSA3PC9hPiAoUmVmZXJlbmNlIFBvaW50KRxOIDQ4wrAgNTEuNTQyIEUgMDA5wrAgMTMuNzI1ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQBkAg4PFQG0AkRpZXNlciBSZWZlcmVuenB1bmt0IHNvbGwgRXVjaCBkZW4gcmVjaHRlbiBXZWcgd2Vpc2VuLiBXZW5uIElociBkaWUgUm91dGUgenVyIG7DpGNoc3RlbiBTdGFnZSAoOCkgb2RlciB6dW0gbsOkY2h0c2VuIFRyYWRpICgiWndlcmdlbnR1bm5lbCIpIMO8YmVyIGRpZXNlbiBSZWZlbnpwdW5rdCBmw7xocnQsIGRhbm4gc2luZCBrZWluZSAiQnVzY2htZXNzZXIgLSBRdWVyZmVsZGVpbi1Ba3Rpb25lbiIgbsO2dGlnLiBGb2xndCBhYiBkaWVzZW0gUHVua3QgZGVtIFBmYWQgYW0gS29wcGVsemF1YiBlbnRsYW5nIChSaWNodHVuZyBOb3Jkd2VzdCkuZAIID2QWDmYPFQIOQWx0ZXJuYXRpbmdSb3cFZmFsc2VkAgIPFQd0PGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX25vY29vcmRzLmpwZyIgYWx0PSJIaWRlIENvb3JkaW5hdGVzIiB0aXRsZT0iSGlkZSBDb29y" />
-<input type="hidden" name="__VIEWSTATE3" id="__VIEWSTATE3" value="ZGluYXRlcyIgLz6QATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL3B1enpsZS5qcGciIGFsdD0iUXVlc3Rpb24gdG8gQW5zd2VyIiB0aXRsZT0iUXVlc3Rpb24gdG8gQW5zd2VyIiAvPgIwOAIwOAZTVEEwMDi2ATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9OGFmZTU4ZGQtYWVhYi00MDBmLWEyN2UtNjQzMDk0ZGFhZTk3JlJlZklEPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZSZWZEUz0xIj5HQzM2NkJRIFN0YWdlIDg8L2E+IChRdWVzdGlvbiB0byBBbnN3ZXIpAz8/P2QCBQ8PFgIfEwUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHxQFBlJlbW92ZRYCHw8FQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQEOQWx0ZXJuYXRpbmdSb3dkAg4PFQGbA0hpZXIgd2lyZCBhdWYgZWluZW0gU2NoaWxkIHZvciBlaW5lciB0aWVyaXNjaGVuIEdlZmFociBnZXdhcm50LiBHID0gVm9yIHdlbGNoZW0gVGllciBtdXNzIG1hbiBzaWNoIGhpZXIgaW4gQWNodCBuZWhtZW4/IChqZWRvY2ggbnVyLCB3ZW5uIG1hbiBkZW4gS29wcGVsemF1biDDvGJlcnN0ZWlndCk8YnI+UmluZGVyID0gMTsgU3RpZXIgPSAyOyBQZmVyZGUgPSAzOyBCdWxsZSA9IDQ7PGJyPkFDSFRVTkcgZsO8ciBkYXMgUm91dGluZyB6dSBTdGFnZSAxMCBkZW4gUmVmZXJlbnpwdW5rdCAoU3RhZ2UgOSkgYmVhY2h0ZW4uIChIaW53ZWlzOiBEZXIgVHJhZGkgIkVpbmdlesOkdW50IiBsaWVndCB6dy4gUzkgdW5kIFMxMCk8YnI+Rm9ybWVsIGbDvHIgUzEwOiBONDjCsDUxLihHeDIwMCkrNTcgfCBFMDA5wrAxMi45KEcgeCBHKWQCCQ9kFg5mDxUCAAVmYWxzZWQCAg8VB2I8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPowBPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vd2F5cG9pbnQuanBnIiBhbHQ9IlJlZmVyZW5jZSBQb2ludCIgdGl0bGU9IlJlZmVyZW5jZSBQb2ludCIgLz4CMDkCMDkGU1RBMDA5swE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTE1NjBhZjU2LTQ3OTktNDgzNS1hNDVhLWIzMzVmMTQ2ZWM5YyZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSA5PC9hPiAoUmVmZXJlbmNlIFBvaW50KRxOIDQ4wrAgNTEuODMyIEUgMDA5wrAgMTMuMDk2ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQBkAg4PFQGgAkRpZXNlciBSZWZlcmVuenB1bmt0IHNvbGwgRXVjaCBkZW4gV2VnIHdlaXNlbi4gV2VubiBJaHIgenVyIG7DpGNoc3RlbiBTdGFnZSAoMTApIG9kZXIgenVtIG7DpGNodHNlbiBUcmFkaSAoIkVpbmdlesOkdW50Iikgw7xiZXIgZGllc2VuIFJlZmVyZW56cHVua3QgZ2VodCwgc2luZCBrZWluZSAiUXVlcmZlbGRlaW4tQWt0aW9uZW4iIG7DtnRpZy48YnI+SGFsdGV0IEV1Y2ggYXVmIGRlbSBQZmFkLCB3ZWxjaGVyIHp3aXNjaGVuIHp3ZWkgQmlya2VuIGhpbmR1cmNoIGbDvGhydCAobWl0dGxlcmVyIFBmYWQpLmQCCg9kFg5mDxUCDkFsdGVybmF0aW5nUm93BWZhbHNlZAICDxUHdDxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9ub2Nvb3Jkcy5qcGciIGFsdD0iSGlkZSBDb29yZGluYXRlcyIgdGl0bGU9IkhpZGUgQ29vcmRpbmF0ZXMiIC8+kAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wdXp6bGUuanBnIiBhbHQ9IlF1ZXN0aW9uIHRvIEFuc3dlciIgdGl0bGU9IlF1ZXN0aW9uIHRvIEFuc3dlciIgLz4CMTACMTAGU1RBMDEwtwE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTEwMTFhNWEzLTkwZmQtNDc4OC04YzUyLTZhODllODhjYmNjNCZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSAxMDwvYT4gKFF1ZXN0aW9uIHRvIEFuc3dlcikDPz8/ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQ5BbHRlcm5hdGluZ1Jvd2QCDg8VAY8CSGllciBpc3Qgd2lzc2Vuc3dlcnRlcyDDvGJlciBTdHJldW9ic3R3aWVzZW4genUgZXJmYWhyZW4uIEggPSBXZWxjaGVzIGlzdCBkaWUgdHlwaXNjaGUgV2lsZHBmbGFuemUsIGltIFNvbW1lciBhdWYgU3RyZXVvYnN0d2llc2VuPzxicj5XaWVzZW5zY2hhdW1rcmF1dDogSCA9IDM7IFdpbGRlIE3DtmhyZTogSCA9IDU7IEhlcmJzdHplaXRsb3NlOiBIID0gNzs8YnI+Vm9uIGhpZXIgYXVzIHdlaXRlciDDvGJlciBkZW4gUmVmZXJlbnpwdW5rdCAoU3RhZ2UgMTEpIHp1bSBGaW5hbGQCCw9kFg5mDxUCAAVmYWxzZWQCAg8VB2I8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPowBPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vd2F5cG9pbnQuanBnIiBhbHQ9IlJlZmVyZW5jZSBQb2ludCIgdGl0bGU9IlJlZmVyZW5jZSBQb2ludCIgLz4CMTECMTEGU1RBMDExtAE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTllMTg3MzA3LTczOWMtNDFmZi05NjE4LTQ3YjE0OWVkMTc3MyZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSAxMTwvYT4gKFJlZmVyZW5jZSBQb2ludCkcTiA0OMKwIDUxLjkwMiBFIDAwOcKwIDEyLjc5MGQCBQ8PFgIfEwUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHxQFBlJlbW92ZRYCHw8FQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQEAZAIODxUBfkRlciBXZWcgenVtIEZpbmFsIGbDvGhydCDDvGJlciBkaWVzZW4gUmVmZXJlbnpwdW5rdC48YnI+PGJyPkZvcm1lbCB6dW0gRmluYWw6IE40OMKwNTEuKEQrRikoQi1GKShILUYpIHwgRTAwOcKwMTIuKEUrRikoRCtILUcpQWQCDA9kFg5mDxUCDkFsdGVybmF0aW5nUm93BWZhbHNlZAICDxUHdDxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9ub2Nvb3Jkcy5qcGciIGFsdD0iSGlkZSBDb29yZGluYXRlcyIgdGl0bGU9IkhpZGUgQ29vcmRpbmF0ZXMiIC8+hgE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9mbGFnLmpwZyIgYWx0PSJGaW5hbCBMb2NhdGlvbiIgdGl0bGU9IkZpbmFsIExvY2F0aW9uIiAvPgJGTgJGTgVGSU5BTLABPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dw" />
-<input type="hidden" name="__VIEWSTATE4" id="__VIEWSTATE4" value="dC5hc3B4P1dJRD1iNTg0NmZjYS0xN2QwLTQzNDQtOWU2Yi0zYTI0OGRhMjA4MzcmUmVmSUQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JlJlZkRTPTEiPkdDMzY2QlEgRmluYWw8L2E+IChGaW5hbCBMb2NhdGlvbikDPz8/ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQ5BbHRlcm5hdGluZ1Jvd2QCDg8VAStQc3Nzc3N0IC0gbGFzc3QgRXVjaCBuaWNodCBlcndpc2NoZW4gISA7LSkpZAIND2QWDmYPFQIABWZhbHNlZAICDxUHYjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl92aWV3YWJsZS5qcGciIGFsdD0iVmlzaWJsZSIgdGl0bGU9IlZpc2libGUiIC8+gQE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wa2cuanBnIiBhbHQ9IlBhcmtpbmcgQXJlYSIgdGl0bGU9IlBhcmtpbmcgQXJlYSIgLz4CUEsCUEsGUEFSS05HsAE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPWJkYjk4ZGM1LTk2YmItNGVkOS05Y2Q2LTM3NDVjMzhiOGVmZiZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBQYXJraW5nPC9hPiAoUGFya2luZyBBcmVhKRxOIDQ4wrAgNTIuMDA2IEUgMDA5wrAgMTIuODQ5ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQBkAg4PFQEAZAIJDw8WAh8DZ2QWAgIBDw8WBB8FBSovbWFwL2RlZmF1bHQuYXNweD9sYXQ9NDguODY2NiZsbmc9OS4yMTQyNjcfA2dkZAIRDw8WAh8FBSAvc2Vlay9uZWFyZXN0LmFzcHg/dT1Gb3VyK0Vybmllc2RkAhUPDxYCHwUFIS9zZWVrL25lYXJlc3QuYXNweD91bD1Gb3VyK0Vybmllc2RkAhkPZBYKAgMPDxYCHwUFVS9zZWVrL25lYXJlc3QuYXNweD90eD1hNWY2ZDBhZC1kMmYyLTQwMTEtOGMxNC05NDBhOWViZjNjNzQmbGF0PTQ4Ljg2NjYwMCZsbmc9OS4yMTQyNjdkZAIFDw8WAh8FBVkvc2Vlay9uZWFyZXN0LmFzcHg/dHg9YTVmNmQwYWQtZDJmMi00MDExLThjMTQtOTQwYTllYmYzYzc0JmxhdD00OC44NjY2MDAmbG5nPTkuMjE0MjY3JmY9MWRkAgkPDxYCHwUFLS9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NDguODY2NjAwJmxuZz05LjIxNDI2N2RkAgsPDxYCHwUFMS9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NDguODY2NjAwJmxuZz05LjIxNDI2NyZmPTFkZAIPDw8WAh8FBUdodHRwOi8vd3d3LndheW1hcmtpbmcuY29tL2RpcmVjdG9yeS5hc3B4P2Y9MSZsYXQ9NDguODY2NjAwJmxvbj05LjIxNDI2N2RkAhsPFgIfA2hkAh8PDxYCHwUFJS9yZXZpZXdzL2hvdGVscy1jb29yZHMtNDguODY2Niw5LjIxNDNkZAIjD2QWAgIBDw8WBB8BBbQHPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NDguODY2NiZsbmc9OS4yMTQyNyIgdGFyZ2V0PSJfYmxhbmsiPkdlb2NhY2hpbmcuY29tIE1hcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/cT1OKzQ4JWMyJWIwKzUxLjk5NitFKzAwOSVjMiViMCsxMi44NTYrKEdDMzY2QlEpKyIgdGFyZ2V0PSJfYmxhbmsiPkdvb2dsZSBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWFwcXVlc3QuY29tL21hcHMvbWFwLmFkcD9zZWFyY2h0eXBlPWFkZHJlc3MmZm9ybXR5cGU9bGF0bG9uZyZsYXRsb25ndHlwZT1kZWNpbWFsJmxhdGl0dWRlPTQ4Ljg2NjYmbG9uZ2l0dWRlPTkuMjE0Mjcmem9vbT0xMCIgdGFyZ2V0PSJfYmxhbmsiPk1hcFF1ZXN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLnlhaG9vLmNvbS8jbGF0PTQ4Ljg2NjYmbG9uPTkuMjE0Mjcmem9vbT0xNiZxPTQ4Ljg2NjYsOS4yMTQyNyZjb25mPTEmc3RhcnQ9MSZtdnQ9bSZ0cmY9MCIgdGFyZ2V0PSJfYmxhbmsiPllhaG9vIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5iaW5nLmNvbS9tYXBzL2RlZmF1bHQuYXNweD92PTImbHZsPTE0JnNwPXBvaW50LjQ4Ljg2NjZfOS4yMTQyN19HQzM2NkJRIiB0YXJnZXQ9Il9ibGFuayI+QmluZyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmN5Y2xlbWFwLm9yZy8/em9vbT0xMiZsYXQ9NDguODY2NiZsb249OS4yMTQyNyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW4gQ3ljbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnLz9tbGF0PTQ4Ljg2NjYmbWxvbj05LjIxNDI3Jnpvb209MTIiIHRhcmdldD0iX2JsYW5rIj5PcGVuIFN0cmVldCBNYXBzPC9hPjwvbGk+HwNnZGQCJw9kFgYCAQ8WAh8BBRExNzYgTG9nZ2VkIFZpc2l0c2QCBw8PFgIfBQVDfi9zZWVrL2NhY2hlX2xvZ2Jvb2suYXNweD9ndWlkPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NWRkAgkPDxYEHwUFPX4vc2Vlay9nYWxsZXJ5LmFzcHg/Z3VpZD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUfAQUiVmlldyB0aGUgSW1hZ2UgR2FsbGVyeSBvZiA5IGltYWdlc2RkAioPFgIfAQUFZmFsc2VkAisPFgIfAQVJbGF0PTQ4Ljg2NjY7IGxuZz05LjIxNDI2NzsgZ3VpZD0nODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JzsNCmQCLA8WAh8BBXF0cnkgeyBfZ2FxLnB1c2goWydfdHJhY2tFdmVudCcsICdHZW9jYWNoaW5nJywgJ0NhY2hlRGV0YWlsc01lbWJlclR5cGUnLCAnUHJlbWl1bScsIG51bGwsIHRydWVdKTsgfSBjYXRjaChlcnIpIHsgfWQCMQ8WAh8DaGQCMg9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHwYCEBYgZg9kFgICAQ8PFggfBwUFZW4tVVMfCAUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHwloZGQCAQ9kFgICAQ8PFggfBwUFZGUtREUfCAUNU2V0VGVtcExvY2FsZR8BBQdEZXV0c2NoHwloZGQCAg9kFgICAQ8PFggfBwUFZnItRlIfCAUNU2V0VGVtcExvY2FsZR8BBQlGcmFuw6dhaXMfCWhkZAIDD2QWAgIBDw8WCB8HBQVwdC1QVB8IBQ1TZXRUZW1wTG9jYWxlHwEFClBvcnR1Z3XDqnMfCWhkZAIED2QWAgIBDw8WCB8HBQVjcy1DWh8IBQ1TZXRUZW1wTG9jYWxlHwEFCcSMZcWhdGluYR8JaGRkAgUPZBYCAgEPDxYIHwcFBXN2LVNFHwgFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8JaGRkAgYPZBYCAgEPDxYIHwcFBWVzLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCWhkZAIHD2QWAgIBDw8WCB8HBQVpdC1JVB8IBQ1TZXRUZW1wTG9jYWxlHwEFCEl0YWxpYW5vHwloZGQCCA9kFgICAQ8PFggfBwUFbmwtTkwfCAUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwloZGQCCQ9kFgICAQ8PFggfBwUFY2EtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwloZGQCCg9kFgICAQ8PFggfBwUFcGwtUEwfCAUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCWhkZAILD2QWAgIBDw8WCB8HBQVldC1FRR8IBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwloZGQCDA9kFgICAQ8PFggfBwUFbmItTk8fCAUNU2V0VGVtcExvY2FsZR8BBQ5Ob3JzaywgQm9rbcOlbB8JaGRkAg0PZBYCAgEPDxYIHwcFBWtvLUtSHwgFDVNldFRlbXBMb2NhbGUfAQUJ7ZWc6rWt7Ja0HwloZGQCDg9kFgICAQ8PFggfBwUFaHUtSFUfCAUNU2V0VGVtcExvY2FsZR8BBQZNYWd5YXIfCWhkZAIP" />
-<input type="hidden" name="__VIEWSTATE5" id="__VIEWSTATE5" value="D2QWAgIBDw8WCB8HBQVyby1STx8IBQ1TZXRUZW1wTG9jYWxlHwEFCFJvbcOibsSDHwloZGQCAw8WAh8BBStTZXJ2ZXI6IFdFQjA4OyBCdWlsZDogV2ViLkhvdEZpeF8yMDEyMTExMy4xZGSM4g3nw3tAmQQEkh+cnXALXmdAKA==" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE1Mzk0NTE5MTEPFgIeBEMuSUQoKVlTeXN0ZW0uSW50NjQsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQcyNTQ0MzE5FgJmD2QWBmYPZBYKAgYPFgIeBFRleHQFYjxtZXRhIG5hbWU9IkNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLTIwMTMgR3JvdW5kc3BlYWssIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iIC8+ZAIHDxYCHwEFRzwhLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMTMgR3JvdW5kc3BlYWssIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gLS0+ZAIZDxYCHgRocmVmBR1+L2Nzcy90bG5NYXN0ZXJTY3JlZW4uY3NzP3I9MWQCGg8WAh8CBRV+L2Nzcy90bG5NYWluLmNzcz9yPTFkAh8PFgIeB1Zpc2libGVoZAIBDxYCHgZhY3Rpb24FOS9nZW9jYWNoZS9HQzM2NkJRX2ZsdWdwbGF0enJ1bmRlLXBhdHRvbnZpbGxlLWtpbmRlci1tdWx0aRYWAgsPFgIfAWRkAg0PZBYCAgUPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvNjQyZDI3NzEtNDI0ZS00ZWU2LWJlYjYtZWZlY2RlMzQwNmZjLmpwZ2RkAgMPFgIfAQV0SGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEJhbmFuZXdlaXplbiIgY2xhc3M9IlNpZ25lZEluUHJvZmlsZUxpbmsiPkJhbmFuZXdlaXplbjwvYT5kAgUPDxYCHgtOYXZpZ2F0ZVVybAW4AWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmd3AlM2RHQzM2NkJRJTI2dGl0bGUlM2RmbHVncGxhdHpydW5kZS1wYXR0b252aWxsZS1raW5kZXItbXVsdGlkZAILDxYCHwEFEDQ2MiBDYWNoZXMgRm91bmRkAhcPFgIfA2cWAgINDw8WAh8GBUB+L3RyYWNrL3NlYXJjaC5hc3B4P289MSZ1aWQ9MzE4OTI2NzgtMTExNy00NmViLWFhM2ItMTkxYzIwYmQ2NjA3ZGQCHQ8PFgIfA2dkZAIpDxYCHwNnZAJXD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIeC18hSXRlbUNvdW50AhQWKGYPZBYCAgEPDxYIHg9Db21tYW5kQXJndW1lbnQFBWVuLVVTHgtDb21tYW5kTmFtZQUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHhBDYXVzZXNWYWxpZGF0aW9uaGRkAgEPZBYCAgEPDxYIHwgFBWRlLURFHwkFDVNldFRlbXBMb2NhbGUfAQUHRGV1dHNjaB8KaGRkAgIPZBYCAgEPDxYIHwgFBWZyLUZSHwkFDVNldFRlbXBMb2NhbGUfAQUJRnJhbsOnYWlzHwpoZGQCAw9kFgICAQ8PFggfCAUFcHQtUFQfCQUNU2V0VGVtcExvY2FsZR8BBQpQb3J0dWd1w6pzHwpoZGQCBA9kFgICAQ8PFggfCAUFY3MtQ1ofCQUNU2V0VGVtcExvY2FsZR8BBQnEjGXFoXRpbmEfCmhkZAIFD2QWAgIBDw8WCB8IBQVkYS1ESx8JBQ1TZXRUZW1wTG9jYWxlHwEFBURhbnNrHwpoZGQCBg9kFgICAQ8PFggfCAUFc3YtU0UfCQUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHwpoZGQCBw9kFgICAQ8PFggfCAUFZXMtRVMfCQUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8KaGRkAggPZBYCAgEPDxYIHwgFBWV0LUVFHwkFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfCmhkZAIJD2QWAgIBDw8WCB8IBQVpdC1JVB8JBQ1TZXRUZW1wTG9jYWxlHwEFCEl0YWxpYW5vHwpoZGQCCg9kFgICAQ8PFggfCAUFZWwtR1IfCQUNU2V0VGVtcExvY2FsZR8BBRDOlc67zrvOt869zrnOus6sHwpoZGQCCw9kFgICAQ8PFggfCAUFbHYtTFYfCQUNU2V0VGVtcExvY2FsZR8BBQlMYXR2aWXFoXUfCmhkZAIMD2QWAgIBDw8WCB8IBQVubC1OTB8JBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfCmhkZAIND2QWAgIBDw8WCB8IBQVjYS1FUx8JBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfCmhkZAIOD2QWAgIBDw8WCB8IBQVwbC1QTB8JBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8KaGRkAg8PZBYCAgEPDxYIHwgFBW5iLU5PHwkFDVNldFRlbXBMb2NhbGUfAQUOTm9yc2ssIEJva23DpWwfCmhkZAIQD2QWAgIBDw8WCB8IBQVrby1LUh8JBQ1TZXRUZW1wTG9jYWxlHwEFCe2VnOq1reyWtB8KaGRkAhEPZBYCAgEPDxYIHwgFBWh1LUhVHwkFDVNldFRlbXBMb2NhbGUfAQUGTWFneWFyHwpoZGQCEg9kFgICAQ8PFggfCAUFcm8tUk8fCQUNU2V0VGVtcExvY2FsZR8BBQhSb23Dom7Egx8KaGRkAhMPZBYCAgEPDxYIHwgFBWphLUpQHwkFDVNldFRlbXBMb2NhbGUfAQUJ5pel5pys6KqeHwpoZGQCWw9kFgICAw8WAh8DaGQCXQ8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYoAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0MzNjZCUWRkAgIPFgIfAQWaATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy8zLmdpZiIgYWx0PSJNdWx0aS1jYWNoZSIgdGl0bGU9Ik11bHRpLWNhY2hlIiAvPjwvYT5kAgYPZBYEAgEPFgIfA2dkAgcPFgIfA2hkAgoPZBYGAgEPFgIfAQUDMTA1ZAIFDxYCHwNoZAIHDw8WAh8GBUQvc2Vlay9jYWNoZV9mYXZvcml0ZWQuYXNweD9ndWlkPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NWRkAgwPDxYCHwNoZGQCDQ8WBB8BBUs8cCBjbGFzcz0iV2FybmluZyBOb0JvdHRvbVNwYWNpbmciPlRoaXMgaXMgYSBQcmVtaXVtIE1lbWJlciBPbmx5IGNhY2hlLjwvcD4fA2dkAg8PFgIfA2hkAhAPFgIfA2hkAhEPZBYMAgMPZBYCAgEPFgIfAQUbVVRNOiAzMlUgRSA1MTU3MTMgTiA1NDEyNjQ4ZAINDw8WAh8GBTNjZHBmLmFzcHg/Z3VpZD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODVkZAIPDw8WAh8GBThjZHBmLmFzcHg/Z3VpZD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmbGM9NWRkAhEPDxYCHwYFOWNkcGYuYXNweD9ndWlkPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZsYz0xMGRkAhMPDxYEHwYFjgFodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/Zj1kJmhsPWVuJnNhZGRyPTQ4Ljg2MTAwMiw5LjE4NjU3NyAoSG9tZSBMb2NhdGlvbikmZGFkZHI9NDguODY2Niw5LjIxNDI2NyhGbHVncGxhdHpydW5kZStQYXR0b252aWxsZStLaW5kZXItTXVsdGkpHgZUYXJnZXQFBl9ibGFua2RkAhsPZBYIZg8PFgQeCUZvcmVDb2xvcgweBF8hU0ICBGRkAgEPDxYEHw0MHw4CBGRkAgIPDxYCHwNnFgIeB29uY2xpY2sFO3MyZ3BzKCc4MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUnKTtyZXR1cm4gZmFsc2U7ZAIDDw8WAh8DZxYCHw8FIHMycGhvbmUoJ0dDMzY2QlEnKTtyZXR1cm4gZmFsc2U7ZAITDxYCHwNnZAIXD2QWCGYPFgIfA2hkAgEPDxYCHwNoZGQCAg8PFgIfA2hkZAIDDxYCHwNoZAIYD2QWAgIDDw8WAh8BBQdEZWNyeXB0ZGQCGQ8WAh8BBb0CRkdOVFIgMzogVGXDvGE8YnI+RkdOVFIgNTogU255eWYgcW5mIEZwdXZ5cSB6bnkganZycXJlIHNydXlnOiBWYSBxcmUgQcOkdXIgZmdydXJhIHp2YXEuIDQganJ2Z3JlciwgdnFyYWd2ZnB1ciwgdGXDvGFyIEZwdXZ5cXJlIChZw7ZmaGF0OiBSID0gNCk8YnI+RkdOVFIgNjogRm5weHRuZmZyIG3DpHV5ZyB6dmcgKFJldHJvYXZmIHZmZyBydmFyIGhhdHJlbnFyIE1udXkpPGJyPlNWQU5ZOiBSaHB1IG1oIFPDvMOfcmEgeXZydGcgYXZwdWcgcXJlICJGZ3J2YSBxcmUgSnJ2ZnJhIi0gbm9yZSBxbnPDvGUgcXJlICJqcnbDn3IgRmdydmEiIChGZ3J2YWN5bmdncilkAhsPZBYEAgEPFgQfAgUfL3NlZWsvbG9nLmFzcHg/SUQ9MjU0NDMxOSZsY249MR4JaW5uZXJodG1sBQ5Mb2cg" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="eW91ciB2aXNpdGQCAg8WAh8DaGQCHA8WAh8DZ2QCHQ8WAh8DaGQCIA9kFgICAw8WAh8QBRNBZHZlcnRpc2luZyB3aXRoIFVzZAIkD2QWBAIFDw8WAh8DZ2RkAgkPDxYCHwYFPH4vdHJhY2svc2VhcmNoLmFzcHg/d2lkPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NWRkAiUPDxYCHwNnZBYCZg8WAh8HAgMWBgIBD2QWAmYPFQIA7AE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD1hMDcwOTU2NS1jZTc2LTQ1NTUtYWU2Ny02NDA4MWFhMzNhOTIiPkZhbWlsaWVuZnJldW5kbGljaDwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTk3OTYyYmZmLTdmOGMtNDE0OS1iMDU4LWFlMTI0ZDNiNTNhMyI+U2NobnVmZmVsd3VmZmVsPC9hPmQCAg9kFgJmDxUCDkFsdGVybmF0aW5nUm93+gE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD0xNGY2ZDE5NS0yZTQ5LTQ4NWMtYWI3Yy0zZjkxMTExMzAyZWUiPkRpZSBiZXN0ZW4gQ2FjaGVzIFJhdW0gTHVkd2lnc2J1cmc8L2E+PGJyIC8+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD01OGNlMGIyYi1kZTdjLTRjMDYtOTg2Ny00NzVjOTA5Y2Q5M2MiPkVyaXNEaXNrb3JkaWE8L2E+ZAIDD2QWAmYPFQIA8AE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD1iNzZiMDlkYS02ZWY5LTQ2OTktYWY0Yy02MTljYzhlNjMxZDQiPkVsZWt0cmlrJiMyNDY7cnMgTGllYmxpbmdlPC9hPjxiciAvPiBieSA8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9ZTU4NGI4OWEtZjgxYi00MTIxLWE0MTgtZjgzMzBhNTliYmZhIj5FbGVrdHJpa8O2cjwvYT5kAicPZBYQAgMPZBYCAgEPDxYCHwYFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmRFM9MWRkAgcPDxYEHgZSRFMuSUQLKXZHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNzb24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDk5NS4xNjEwOSwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAcyNTQ0MzE5ZBYCZg8WAh8HAg0WHGYPZBYCZg8PFgIfA2hkZAIBD2QWDmYPFQIABWZhbHNlZAICDxUHYjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl92aWV3YWJsZS5qcGciIGFsdD0iVmlzaWJsZSIgdGl0bGU9IlZpc2libGUiIC8+kAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wdXp6bGUuanBnIiBhbHQ9IlF1ZXN0aW9uIHRvIEFuc3dlciIgdGl0bGU9IlF1ZXN0aW9uIHRvIEFuc3dlciIgLz4CMDECMDEGU1RBMDAxtgE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPWM5NTlhM2Q0LWIyOWItNDA3Yy05ZjA4LWQ0OWMzYWQ4MjlhZSZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSAxPC9hPiAoUXVlc3Rpb24gdG8gQW5zd2VyKRxOIDQ4wrAgNTEuOTk2IEUgMDA5wrAgMTIuODU2ZAIFDw8WAh4HVG9vbFRpcAUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHg1BbHRlcm5hdGVUZXh0BQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBAGQCDg8VAZoBSW4gd2llIHZpZWxlbiBTcHJhY2hlbiBpc3QgZGllIEJlbnV0emVyb3JkbnVuZyBkZXMgRnJlaXplaXRwYXJrcyB2ZXJmYXNzdD8gQSA9IEFuemFobCBkZXIgU3ByYWNoZW48YnI+Rm9ybWVsIGbDvHIgUzI6IE40OMKwNTEuKDIyNSB4IEEpIHwgRTAwOcKwMTIuKDk2MCtBKWQCAg9kFg5mDxUCDkFsdGVybmF0aW5nUm93BWZhbHNlZAICDxUHdDxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9ub2Nvb3Jkcy5qcGciIGFsdD0iSGlkZSBDb29yZGluYXRlcyIgdGl0bGU9IkhpZGUgQ29vcmRpbmF0ZXMiIC8+kAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wdXp6bGUuanBnIiBhbHQ9IlF1ZXN0aW9uIHRvIEFuc3dlciIgdGl0bGU9IlF1ZXN0aW9uIHRvIEFuc3dlciIgLz4CMDICMDIGU1RBMDAytgE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTk2MzFjYzg4LTUyYTYtNDE5MC1hYTk0LTA3YTMyMzM2MTA3NCZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSAyPC9hPiAoUXVlc3Rpb24gdG8gQW5zd2VyKQM/Pz9kAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBDkFsdGVybmF0aW5nUm93ZAIODxUBpwFIaWVyIHdpcmQgZWluIFBmYWQgYmVzY2hyaWViZW4uIFdpZSB2aWVsZSBGdcOfYWJkcsO8Y2tlIHNpbmQgYXVmIGRlbSBTY2hpbGQ/IEIgPSBBbnphaGwgZGVyIEZ1w59hYmRyw7xja2U8YnI+Rm9ybWVsIGbDvHIgUzM6IE40OMKwNTEuODAzKyhCIHggMykgfCBFMDA5wrAxMy4oQiB4IDEwKSs3MmQCAw9kFg5mDxUCAAVmYWxzZWQCAg8VB3Q8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fbm9jb29yZHMuanBnIiBhbHQ9IkhpZGUgQ29vcmRpbmF0ZXMiIHRpdGxlPSJIaWRlIENvb3JkaW5hdGVzIiAvPpABPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcHV6emxlLmpwZyIgYWx0PSJRdWVzdGlvbiB0byBBbnN3ZXIiIHRpdGxlPSJRdWVzdGlvbiB0byBBbnN3ZXIiIC8+AjAzAjAzBlNUQTAwM7YBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD0wNzQyMTNlNy05ODQzLTRhNjQtOWJkZi0zNWY4ZmEwMzAyMzgmUmVmSUQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JlJlZkRTPTEiPkdDMzY2QlEgU3RhZ2UgMzwvYT4gKFF1ZXN0aW9uIHRvIEFuc3dlcikDPz8/ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQBkAg4PFQH9AkRhcyBGbHVncGxhdHpnZWzDpG5kZSBpc3QgbWl0IGVpbmVtIFphdW4gZ2VzaWNoZXJ0LiBFaW5lciBkZXIgWmF1bnBmb3N0ZW4gdHLDpGd0IGVpbmUgRmFyYm1hcmtpZXJ1bmcuIEZvbGd0IGRlbSBXZWcgd2VpdGVyIFJpY2h0dW5nIE9zdGVuLiBEb3J0IGZpbmRldCBJaHIgZWluZSB6d2VpdGUgRmFyYm1hcmtpZXJ1bmcuIFdpZSB2aWVsZSBaYXVucGZvc3RlbiBiZWZpbmRlbiBzaWNoIFpXSVNDSEVOIGRlbiBiZWlkZW4gTWFya2llcnVuZ2VuIChkaWUgbWFya2llcnRlbiBQZm9zdGVuIE5JQ0hUIG1pdHrDpGhsZW4pPyBDID0gQW56YWhsIGRlciBaYXVucGZvc3Rlbi4gRm9ybWVsIGbDvHIgUzQ6IE40OMKwNTEuKDc1NyAtIEMpIHwg" />
+<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="RTAwOcKwMTMuKEMgeCAxMCkrIDE0MGQCBA9kFg5mDxUCDkFsdGVybmF0aW5nUm93BWZhbHNlZAICDxUHdDxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9ub2Nvb3Jkcy5qcGciIGFsdD0iSGlkZSBDb29yZGluYXRlcyIgdGl0bGU9IkhpZGUgQ29vcmRpbmF0ZXMiIC8+kAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wdXp6bGUuanBnIiBhbHQ9IlF1ZXN0aW9uIHRvIEFuc3dlciIgdGl0bGU9IlF1ZXN0aW9uIHRvIEFuc3dlciIgLz4CMDQCMDQGU1RBMDA0tgE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTYwNTU5MjU2LTczMGQtNDJhMi05NmIwLWQ5ZTRlYTM3ZTMyMiZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSA0PC9hPiAoUXVlc3Rpb24gdG8gQW5zd2VyKQM/Pz9kAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBDkFsdGVybmF0aW5nUm93ZAIODxUB4ANQZWlsdW5nOiBFWEFLVCAxMDfCsDxicj5IaWVyIGJlZmluZGV0IHNpY2ggZWluIEhvY2hzcGFubnVuZ3NtYXN0IG1pdCBTcGl0emUuIFZvbiBpaG0gbGF1ZmVuIEthYmVsIG5hY2ggbGlua3MgenUgZWluZW0gd2VpdGVyZW4gSG9jaHNwYW5udW5nc21hc3QgKDgwwrApLCBvaG5lIFNwaXR6ZS4gRGllIGjDtmNoc3RlIExlaXR1bmcgendpc2NoZW4gZGVuIGJlaWRlbiBNYXN0ZW4gaXN0IG1pdCByb3Qtd2Vpw59lbiBCw6RsbGVuIHZlcnNlaGVuIChzb2xsZW4gRmx1Z3pldWdlIHVuZCBIdWJzY2hyYXViZXIgd2FybmVuKS4gV2llIHZpZWxlIHJvdC13ZWnDn2UgQsOkbGxlIHNpbmQgYXVmIGRlciBow7ZjaHN0ZW4gTGVpdHVuZyB6d2lzY2hlbiBkaWVzZW4gYmVpZGVuIE1hc3Rlbj8gRCA9IEFuemFobCBkZXIgcm90LXdlacOfZW4gQsOkbGxlPGJyPkZvcm1lbCBmw7xyIFM1OiBONDjCsDUxLjU5MCsoRHgxMCkrNyB8IEUwMDnCsDEzLihEeDEyMCkrODNkAgUPZBYOZg8VAgAFZmFsc2VkAgIPFQd0PGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX25vY29vcmRzLmpwZyIgYWx0PSJIaWRlIENvb3JkaW5hdGVzIiB0aXRsZT0iSGlkZSBDb29yZGluYXRlcyIgLz6QATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL3B1enpsZS5qcGciIGFsdD0iUXVlc3Rpb24gdG8gQW5zd2VyIiB0aXRsZT0iUXVlc3Rpb24gdG8gQW5zd2VyIiAvPgIwNQIwNQZTVEEwMDW2ATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9ZGNkYWIwMzQtYjdhMS00YzIwLTg3ZDEtZjczMGZhZTM5NTI5JlJlZklEPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZSZWZEUz0xIj5HQzM2NkJRIFN0YWdlIDU8L2E+IChRdWVzdGlvbiB0byBBbnN3ZXIpAz8/P2QCBQ8PFgIfEwUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHxQFBlJlbW92ZRYCHw8FQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQEAZAIODxUBsAEiR2VzY2jDvHR6dGVyIExlYmVuc3JhdW0iIFdpZSB2aWVsZSBPcnRzY2hhZnRlbi9TdMOkZHRlIHNpbmQgYXVmIGRlbSBTY2hpbGQgaW5zZ2VzYW10IGdlbmFubnQ/PGJyPkUgPSBBbnphaGwgZGVyIE9ydHNjaGFmdGVuLiBGb3JtZWwgZsO8ciBTNjogTjQ4wrA1MS4oNTk2LUUpIHwgRTAwOcKwMTMuKDc0NCtFKWQCBg9kFg5mDxUCDkFsdGVybmF0aW5nUm93BWZhbHNlZAICDxUHdDxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9ub2Nvb3Jkcy5qcGciIGFsdD0iSGlkZSBDb29yZGluYXRlcyIgdGl0bGU9IkhpZGUgQ29vcmRpbmF0ZXMiIC8+kAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wdXp6bGUuanBnIiBhbHQ9IlF1ZXN0aW9uIHRvIEFuc3dlciIgdGl0bGU9IlF1ZXN0aW9uIHRvIEFuc3dlciIgLz4CMDYCMDYGU1RBMDA2tgE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTYwMGI1YjRiLTIwZTAtNDMzZS05NWRlLThmZWY2MDg0ZmNhNSZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBTdGFnZSA2PC9hPiAoUXVlc3Rpb24gdG8gQW5zd2VyKQM/Pz9kAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBDkFsdGVybmF0aW5nUm93ZAIODxUB5ANIaWVyIHRyZWZmZW4gbWVocmVyZSBGZWxkd2VnZSB1bmQgVHJhbXBlbHBmYWRlIHp1c2FtbWVuLiBXaWUgdmllbGUgYmVmYWhyYmFyZSBGZWxkd2VnZSB0cmVmZmVuIGhpZXIgYXVmZWluYW5kZXIgKEZhaHJyw6RkZXIsIE1vdG9yw6RkZXIgZXRjLiB6w6RobGVuIE5JQ0hUKT8gTWl0ICJiZWZhaHJiYXIiIGlzdCBkaWUgdGhlb3JldGlzY2hlIEJlZmFocmJhcmtlaXQgbWl0IFRyYWt0b3JlbiBvZGVyIEF1dG9gcyBnZW1laW50IChpbmtsLiBTYWNrZ2Fzc2UpLiBGID0gQW56YWhsIGRlciBiZWZhaHJiYXJlbiBGZWxkd2VnZTxicj5BQ0hUVU5HIGbDvHIgZGFzIFJvdXRpbmcgenUgU3RhZ2UgOCBkZW4gUmVmZXJlbnpwdW5rdCAoU3RhZ2UgNykgYmVhY2h0ZW4uIChIaW53ZWlzOiBEZXIgVHJhZGkgIlp3ZXJnZW50dW5uZWwiIGxpZWd0IHp3LiBTNyB1bmQgUzgpPGJyPkZvcm1lbCBmw7xyIFM4OiBONDjCsDUxLig2NTQtRikgfCBFMDA5wrAxMy4oMzA4K0YpZAIHD2QWDmYPFQIABWZhbHNlZAICDxUHYjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl92aWV3YWJsZS5qcGciIGFsdD0iVmlzaWJsZSIgdGl0bGU9IlZpc2libGUiIC8+jAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS93YXlwb2ludC5qcGciIGFsdD0iUmVmZXJlbmNlIFBvaW50IiB0aXRsZT0iUmVmZXJlbmNlIFBvaW50IiAvPgIwNwIwNwZTVEEwMDezATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9NWE2ZmE4YjAtMjE4MS00NTFhLWI4ZGEtN2E5YWVlNDE0MWZlJlJlZklEPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZSZWZEUz0xIj5HQzM2NkJRIFN0YWdlIDc8L2E+IChSZWZlcmVuY2UgUG9pbnQpHE4gNDjCsCA1MS41NDIgRSAwMDnCsCAxMy43MjVkAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBAGQCDg8VAbQCRGllc2VyIFJlZmVyZW56cHVua3Qgc29sbCBFdWNoIGRlbiByZWNodGVuIFdlZyB3ZWlzZW4uIFdlbm4gSWhyIGRpZSBSb3V0ZSB6dXIgbsOkY2hzdGVuIFN0YWdlICg4KSBvZGVyIHp1bSBuw6RjaHRzZW4gVHJhZGkgKCJad2VyZ2VudHVubmVs" />
+<input type="hidden" name="__VIEWSTATE3" id="__VIEWSTATE3" value="Iikgw7xiZXIgZGllc2VuIFJlZmVuenB1bmt0IGbDvGhydCwgZGFubiBzaW5kIGtlaW5lICJCdXNjaG1lc3NlciAtIFF1ZXJmZWxkZWluLUFrdGlvbmVuIiBuw7Z0aWcuIEZvbGd0IGFiIGRpZXNlbSBQdW5rdCBkZW0gUGZhZCBhbSBLb3BwZWx6YXVuIGVudGxhbmcgKFJpY2h0dW5nIE5vcmR3ZXN0KS5kAggPZBYOZg8VAg5BbHRlcm5hdGluZ1JvdwVmYWxzZWQCAg8VB3Q8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fbm9jb29yZHMuanBnIiBhbHQ9IkhpZGUgQ29vcmRpbmF0ZXMiIHRpdGxlPSJIaWRlIENvb3JkaW5hdGVzIiAvPpABPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcHV6emxlLmpwZyIgYWx0PSJRdWVzdGlvbiB0byBBbnN3ZXIiIHRpdGxlPSJRdWVzdGlvbiB0byBBbnN3ZXIiIC8+AjA4AjA4BlNUQTAwOLYBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD04YWZlNThkZC1hZWFiLTQwMGYtYTI3ZS02NDMwOTRkYWFlOTcmUmVmSUQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1JlJlZkRTPTEiPkdDMzY2QlEgU3RhZ2UgODwvYT4gKFF1ZXN0aW9uIHRvIEFuc3dlcikDPz8/ZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQ5BbHRlcm5hdGluZ1Jvd2QCDg8VAZsDSGllciB3aXJkIGF1ZiBlaW5lbSBTY2hpbGQgdm9yIGVpbmVyIHRpZXJpc2NoZW4gR2VmYWhyIGdld2FybnQuIEcgPSBWb3Igd2VsY2hlbSBUaWVyIG11c3MgbWFuIHNpY2ggaGllciBpbiBBY2h0IG5laG1lbj8gKGplZG9jaCBudXIsIHdlbm4gbWFuIGRlbiBLb3BwZWx6YXVuIMO8YmVyc3RlaWd0KTxicj5SaW5kZXIgPSAxOyBTdGllciA9IDI7IFBmZXJkZSA9IDM7IEJ1bGxlID0gNDs8YnI+QUNIVFVORyBmw7xyIGRhcyBSb3V0aW5nIHp1IFN0YWdlIDEwIGRlbiBSZWZlcmVuenB1bmt0IChTdGFnZSA5KSBiZWFjaHRlbi4gKEhpbndlaXM6IERlciBUcmFkaSAiRWluZ2V6w6R1bnQiIGxpZWd0IHp3LiBTOSB1bmQgUzEwKTxicj5Gb3JtZWwgZsO8ciBTMTA6IE40OMKwNTEuKEd4MjAwKSs1NyB8IEUwMDnCsDEyLjkoRyB4IEcpZAIJD2QWDmYPFQIABWZhbHNlZAICDxUHYjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl92aWV3YWJsZS5qcGciIGFsdD0iVmlzaWJsZSIgdGl0bGU9IlZpc2libGUiIC8+jAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS93YXlwb2ludC5qcGciIGFsdD0iUmVmZXJlbmNlIFBvaW50IiB0aXRsZT0iUmVmZXJlbmNlIFBvaW50IiAvPgIwOQIwOQZTVEEwMDmzATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9MTU2MGFmNTYtNDc5OS00ODM1LWE0NWEtYjMzNWYxNDZlYzljJlJlZklEPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZSZWZEUz0xIj5HQzM2NkJRIFN0YWdlIDk8L2E+IChSZWZlcmVuY2UgUG9pbnQpHE4gNDjCsCA1MS44MzIgRSAwMDnCsCAxMy4wOTZkAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBAGQCDg8VAaACRGllc2VyIFJlZmVyZW56cHVua3Qgc29sbCBFdWNoIGRlbiBXZWcgd2Vpc2VuLiBXZW5uIElociB6dXIgbsOkY2hzdGVuIFN0YWdlICgxMCkgb2RlciB6dW0gbsOkY2h0c2VuIFRyYWRpICgiRWluZ2V6w6R1bnQiKSDDvGJlciBkaWVzZW4gUmVmZXJlbnpwdW5rdCBnZWh0LCBzaW5kIGtlaW5lICJRdWVyZmVsZGVpbi1Ba3Rpb25lbiIgbsO2dGlnLjxicj5IYWx0ZXQgRXVjaCBhdWYgZGVtIFBmYWQsIHdlbGNoZXIgendpc2NoZW4gendlaSBCaXJrZW4gaGluZHVyY2ggZsO8aHJ0IChtaXR0bGVyZXIgUGZhZCkuZAIKD2QWDmYPFQIOQWx0ZXJuYXRpbmdSb3cFZmFsc2VkAgIPFQd0PGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX25vY29vcmRzLmpwZyIgYWx0PSJIaWRlIENvb3JkaW5hdGVzIiB0aXRsZT0iSGlkZSBDb29yZGluYXRlcyIgLz6QATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL3B1enpsZS5qcGciIGFsdD0iUXVlc3Rpb24gdG8gQW5zd2VyIiB0aXRsZT0iUXVlc3Rpb24gdG8gQW5zd2VyIiAvPgIxMAIxMAZTVEEwMTC3ATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9MTAxMWE1YTMtOTBmZC00Nzg4LThjNTItNmE4OWU4OGNiY2M0JlJlZklEPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZSZWZEUz0xIj5HQzM2NkJRIFN0YWdlIDEwPC9hPiAoUXVlc3Rpb24gdG8gQW5zd2VyKQM/Pz9kAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBDkFsdGVybmF0aW5nUm93ZAIODxUBjwJIaWVyIGlzdCB3aXNzZW5zd2VydGVzIMO8YmVyIFN0cmV1b2JzdHdpZXNlbiB6dSBlcmZhaHJlbi4gSCA9IFdlbGNoZXMgaXN0IGRpZSB0eXBpc2NoZSBXaWxkcGZsYW56ZSwgaW0gU29tbWVyIGF1ZiBTdHJldW9ic3R3aWVzZW4/PGJyPldpZXNlbnNjaGF1bWtyYXV0OiBIID0gMzsgV2lsZGUgTcO2aHJlOiBIID0gNTsgSGVyYnN0emVpdGxvc2U6IEggPSA3Ozxicj5Wb24gaGllciBhdXMgd2VpdGVyIMO8YmVyIGRlbiBSZWZlcmVuenB1bmt0IChTdGFnZSAxMSkgenVtIEZpbmFsZAILD2QWDmYPFQIABWZhbHNlZAICDxUHYjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl92aWV3YWJsZS5qcGciIGFsdD0iVmlzaWJsZSIgdGl0bGU9IlZpc2libGUiIC8+jAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS93YXlwb2ludC5qcGciIGFsdD0iUmVmZXJlbmNlIFBvaW50IiB0aXRsZT0iUmVmZXJlbmNlIFBvaW50IiAvPgIxMQIxMQZTVEEwMTG0ATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9OWUxODczMDctNzM5Yy00MWZmLTk2MTgtNDdiMTQ5ZWQxNzczJlJlZklEPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZSZWZEUz0xIj5HQzM2NkJRIFN0YWdlIDExPC9hPiAoUmVmZXJlbmNlIFBvaW50KRxOIDQ4wrAgNTEuOTAyIEUgMDA5wrAgMTIuNzkwZAIFDw8WAh8TBQRFZGl0ZGQCBw8PFgIfEwUDTWFwZGQCCw8PFgIfFAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQBkAg4PFQF+RGVyIFdlZyB6dW0gRmluYWwgZsO8aHJ0IMO8YmVyIGRpZXNlbiBSZWZlcmVuenB1bmt0Ljxicj48YnI+Rm9ybWVsIHp1bSBGaW5hbDogTjQ4wrA1MS4oRCtGKShCLUYpKEgtRikgfCBFMDA5wrAxMi4oRStGKShEK0gtRylBZAIMD2QWDmYPFQIOQWx0ZXJuYXRpbmdSb3cFZmFsc2Vk" />
+<input type="hidden" name="__VIEWSTATE4" id="__VIEWSTATE4" value="AgIPFQd0PGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX25vY29vcmRzLmpwZyIgYWx0PSJIaWRlIENvb3JkaW5hdGVzIiB0aXRsZT0iSGlkZSBDb29yZGluYXRlcyIgLz6GATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL2ZsYWcuanBnIiBhbHQ9IkZpbmFsIExvY2F0aW9uIiB0aXRsZT0iRmluYWwgTG9jYXRpb24iIC8+AkZOAkZOBUZJTkFMsAE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPWI1ODQ2ZmNhLTE3ZDAtNDM0NC05ZTZiLTNhMjQ4ZGEyMDgzNyZSZWZJRD04MGY1N2UzMi03ZDU5LTRmMDYtOGE5Yi1lODI0MWJhMzQyODUmUmVmRFM9MSI+R0MzNjZCUSBGaW5hbDwvYT4gKEZpbmFsIExvY2F0aW9uKQM/Pz9kAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBDkFsdGVybmF0aW5nUm93ZAIODxUBK1Bzc3Nzc3QgLSBsYXNzdCBFdWNoIG5pY2h0IGVyd2lzY2hlbiAhIDstKSlkAg0PZBYOZg8VAgAFZmFsc2VkAgIPFQdiPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX3ZpZXdhYmxlLmpwZyIgYWx0PSJWaXNpYmxlIiB0aXRsZT0iVmlzaWJsZSIgLz6BATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL3BrZy5qcGciIGFsdD0iUGFya2luZyBBcmVhIiB0aXRsZT0iUGFya2luZyBBcmVhIiAvPgJQSwJQSwZQQVJLTkewATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9YmRiOThkYzUtOTZiYi00ZWQ5LTljZDYtMzc0NWMzOGI4ZWZmJlJlZklEPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NSZSZWZEUz0xIj5HQzM2NkJRIFBhcmtpbmc8L2E+IChQYXJraW5nIEFyZWEpHE4gNDjCsCA1Mi4wMDYgRSAwMDnCsCAxMi44NDlkAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBAGQCDg8VAQBkAgkPDxYCHwNnZBYCAgEPDxYEHwYFKi9tYXAvZGVmYXVsdC5hc3B4P2xhdD00OC44NjY2JmxuZz05LjIxNDI2Nx8DZ2RkAg8PFgIfAQWLAS4uLm90aGVyIGNhY2hlcyA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dT1Gb3VyK0VybmllcyI+aGlkZGVuPC9hPiBvciA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dWw9Rm91citFcm5pZXMiPmZvdW5kPC9hPiBieSB0aGlzIHVzZXJkAhEPZBYGAgEPFgIfAQX/AS4uLm5lYXJieSA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dHg9YTVmNmQwYWQtZDJmMi00MDExLThjMTQtOTQwYTllYmYzYzc0JmxhdD00OC44NjY2MDAmbG5nPTkuMjE0MjY3Ij5jYWNoZXMgb2YgdGhpcyB0eXBlPC9hPiwgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3R4PWE1ZjZkMGFkLWQyZjItNDAxMS04YzE0LTk0MGE5ZWJmM2M3NCZsYXQ9NDguODY2NjAwJmxuZz05LjIxNDI2NyZmPTEiPnRoYXQgSSBoYXZlbid0IGZvdW5kPC9hPmQCAw8WAh8BBaYBLi4uYWxsIG5lYXJieSA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTQ4Ljg2NjYwMCZsbmc9OS4yMTQyNjciPmNhY2hlczwvYT4sIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NDguODY2NjAwJmxuZz05LjIxNDI2NyZmPTEiPnRoYXQgSSBoYXZlbid0IGZvdW5kPC9hPmQCBQ8WAh8BBX4uLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cud2F5bWFya2luZy5jb20vZGlyZWN0b3J5LmFzcHg/Zj0xJmxhdD00OC44NjY2MDAmbG9uPTkuMjE0MjY3Ij53YXltYXJrcyBvbiBXYXltYXJraW5nLmNvbTwvYT5kAhMPFgIfA2hkAhcPZBYCAgEPDxYEHwEFrgc8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9tYXAvZGVmYXVsdC5hc3B4P2xhdD00OC44NjY2JmxuZz05LjIxNDI3IiB0YXJnZXQ9Il9ibGFuayI+R2VvY2FjaGluZy5jb20gTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPU4rNDglYzIlYjArNTEuOTk2K0UrMDA5JWMyJWIwKzEyLjg1NisoR0MzNjZCUSkrIiB0YXJnZXQ9Il9ibGFuayI+R29vZ2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vbWFwcy9tYXAuYWRwP3NlYXJjaHR5cGU9YWRkcmVzcyZmb3JtdHlwZT1sYXRsb25nJmxhdGxvbmd0eXBlPWRlY2ltYWwmbGF0aXR1ZGU9NDguODY2NiZsb25naXR1ZGU9OS4yMTQyNyZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NDguODY2NiZsb249OS4yMTQyNyZ6b29tPTE2JnE9NDguODY2Niw5LjIxNDI3JmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuNDguODY2Nl85LjIxNDI3X0dDMzY2QlEiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD00OC44NjY2Jmxvbj05LjIxNDI3IiB0YXJnZXQ9Il9ibGFuayI+T3BlbkN5Y2xlTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvP21sYXQ9NDguODY2NiZtbG9uPTkuMjE0Mjcmem9vbT0xMiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+PC9saT4fA2dkZAIbD2QWBgIBDxYCHwEFETI3OSBMb2dnZWQgVmlzaXRzZAIHDw8WAh8GBUN+L3NlZWsvY2FjaGVfbG9nYm9vay5hc3B4P2d1aWQ9ODBmNTdlMzItN2Q1OS00ZjA2LThhOWItZTgyNDFiYTM0Mjg1ZGQCCQ8PFgQfBgU9fi9zZWVrL2dhbGxlcnkuYXNweD9ndWlkPTgwZjU3ZTMyLTdkNTktNGYwNi04YTliLWU4MjQxYmEzNDI4NR8BBSNWaWV3IHRoZSBJbWFnZSBHYWxsZXJ5IG9mIDEwIGltYWdlc2RkAl8PFgIfA2gWAgIBDw9kFgIeBXN0eWxlBQx3aWR0aDoxMjBweDtkAmEPZBYEAgMPFgIfAQUHRW5nbGlzaGQCBQ8WAh8HAhQWKGYPZBYCAgEPDxYIHwgFBWVuLVVTHwkFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB8KaGRkAgEPZBYCAgEPDxYIHwgFBWRlLURFHwkFDVNldFRlbXBMb2NhbGUfAQUHRGV1dHNjaB8KaGRkAgIPZBYCAgEPDxYIHwgFBWZyLUZSHwkFDVNldFRlbXBMb2NhbGUfAQUJRnJhbsOnYWlzHwpoZGQCAw9kFgICAQ8PFggfCAUFcHQtUFQfCQUNU2V0VGVtcExvY2FsZR8BBQpQb3J0dWd1w6pzHwpoZGQCBA9kFgICAQ8PFggfCAUFY3MtQ1ofCQUNU2V0VGVtcExvY2FsZR8BBQnEjGXFoXRpbmEfCmhkZAIFD2QWAgIBDw8WCB8IBQVkYS1ESx8JBQ1TZXRUZW1wTG9jYWxlHwEFBURhbnNrHwpoZGQCBg9kFgICAQ8PFggfCAUFc3YtU0UfCQUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHwpoZGQCBw9kFgICAQ8PFggfCAUFZXMtRVMfCQUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8KaGRkAggPZBYCAgEPDxYIHwgFBWV0LUVFHwkFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfCmhkZAIJD2QWAgIBDw8WCB8IBQVpdC1JVB8JBQ1TZXRU" />
+<input type="hidden" name="__VIEWSTATE5" id="__VIEWSTATE5" value="ZW1wTG9jYWxlHwEFCEl0YWxpYW5vHwpoZGQCCg9kFgICAQ8PFggfCAUFZWwtR1IfCQUNU2V0VGVtcExvY2FsZR8BBRDOlc67zrvOt869zrnOus6sHwpoZGQCCw9kFgICAQ8PFggfCAUFbHYtTFYfCQUNU2V0VGVtcExvY2FsZR8BBQlMYXR2aWXFoXUfCmhkZAIMD2QWAgIBDw8WCB8IBQVubC1OTB8JBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfCmhkZAIND2QWAgIBDw8WCB8IBQVjYS1FUx8JBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfCmhkZAIOD2QWAgIBDw8WCB8IBQVwbC1QTB8JBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8KaGRkAg8PZBYCAgEPDxYIHwgFBW5iLU5PHwkFDVNldFRlbXBMb2NhbGUfAQUOTm9yc2ssIEJva23DpWwfCmhkZAIQD2QWAgIBDw8WCB8IBQVrby1LUh8JBQ1TZXRUZW1wTG9jYWxlHwEFCe2VnOq1reyWtB8KaGRkAhEPZBYCAgEPDxYIHwgFBWh1LUhVHwkFDVNldFRlbXBMb2NhbGUfAQUGTWFneWFyHwpoZGQCEg9kFgICAQ8PFggfCAUFcm8tUk8fCQUNU2V0VGVtcExvY2FsZR8BBQhSb23Dom7Egx8KaGRkAhMPZBYCAgEPDxYIHwgFBWphLUpQHwkFDVNldFRlbXBMb2NhbGUfAQUJ5pel5pys6KqeHwpoZGQClQEPFgIfAQUQJmNvcHk7IDIwMDAtMjAxM2QCAw8WAh8BBStTZXJ2ZXI6IFdFQjA5OyBCdWlsZDogV2ViLkhvdEZpeF8yMDEzMDkwNC4xZGTjrH+cBdGzT2BcSkYuN2YO11T8RA==" />
</div>
<script type="text/javascript">
@@ -269,14 +95,14 @@ function __doPostBack(eventTarget, eventArgument) {
</script>
-<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&amp;t=634574709538762188" type="text/javascript"></script>
+<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&amp;t=634981142902716410" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&amp;t=2610f696" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&amp;t=2610f696" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=KcppIN8vGXX7I7GgzR4ij6mKPgyiYULE0TqVSIAm5fQO_RZG7Og_AVHft5LYXzJbGezKbO9_74VqIicplWk7HnV8Wk08_1TyVPxbYd1roJd74BHu3t1Y9F9p8a3ue7bpHec0KbFSnk7Cjrnh0Yt-rAH34O2Tr3ImscIwN-vBC71QGQKmpkY9694mf9Ov9_gY87bx8cgkrKwe6xGi51HPKL458tw1" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=WnuM7Lwz4fTWs11yVnVL-GLtPoVeQWr-ASFrGfuGn4JotWl-i8Rb_BUgehykSvn11nkjFg6lnTcyKHyyyNqY0QjGAmSE4WxLhfY2WW2Q1_OfLIi2RLJSLDRwRgWAzwb6-YapTSdbAvSeP2i3bMT-253SA5DKRVxU5BibfVmB_X0I650Q0KZZN0Ci8B3UojvEATDT0q9vE3DFnmiFrS8qIohIYMNuW5M8Bj2Lmcx136bRdr9CCjAZjn4mo83wJ1JgFJdSiLnsEG2I5U-yvfXaXOLsDLrhF5LrA0MVVva2U2mxlxJCVna0XkNAkqvvr8xi_TwdFiWTPWGocJun5TDFcR1DXspBRlrau0mMO2TFN6nFkpkpvTVv_n9yfSOMkKluJ_NCq9iQpSyPP6U3e74_frR0-1uC50I3TJKLklGzAmhgMyBQQwPUvZQ15wgIi3fOug3gJaXXmuonP0UcRVTG8yo43XD-wKZWOkiKOBk62tLWC3_Vm-5_LOUMRioZqUsWBVHNwzN0I3WtFvOHpzvtdcszTBm6fTcAwccjEt1EQH4oS64uAAaK8JtBgcF7cargVclpUXuz_Sn39AlWc2dJI_0wJNuTLF3wcsBCoFFCwu0G0gmOo0eqFuHEzYkSS48frkIWIt5VtJ2kYkOndLoxUlWurab--jsCGSe5t1Ir08cHQsIJab97rUnQ8RU9qEmfiJoINJczowOayrmp_cuzNW9JVdgD50CB7hbbyr_Yt0grcEBq0" type="text/javascript"></script>
-<script src="js/cachedetails.js" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&amp;t=ffffffff940d030f" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&amp;t=ffffffff940d030f" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=TL-Yw08mfjygQC2pYUWv4vsceKOX78JOPHv56jtKPd09idqVC8D_LG5wkrebE9taT_LuoIbdmEgY5VAYiajJO6z9qDLTjSGzV03eOcPL3DHorjNejbM9vX5qsuFBdFj8nt56oGpfa4V625Bkd-v6euMS556C8yvo2dlmebHAy179T7v_5h5xATxk8KAcVG3rxv83bauYJD4a16vxOmFkNZPkIiM1" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=u934S6SutHX8H8Zg4wmQ0WF3gzzxDLvCOQuHhmkmgC4qEDeoH1iOBZE2ne91QGfeu46usN_ugfyV7fbbgl18ISepG3cSsu7vSAJYXkACB_5nVgVHxN9N-ILel9Q060_tpNoL6EyLxPBJ3BuvqR7wOMHKme1lSNdOu5gy9e0TTVmf3ZsAqQmnMwihqY8_GrSH_bqwv1jQ0Kir0Ta4zV7fS7DoVPQghVs0VslZeKKJD9I6wpWJROYrumQ32t9MgfZ87P2Kb1VJg91K-duAiwx5XQp7FoST8QebQIuQZTsaUngsnvSQwkxcCMBKpXWknrO7W0fsne1yIjl8jNRFVSFQD4YamXu9bv6AT8lWmZMImeUG2ZKuLmH7_oakmTaNlJ_kFnXTGTEpcQNueQ3jhtEdkxuGTVYToCcN4NFfYqr_t84ZeMTvazzdg8oAGlu8_bew2FUGvW1WS65_PMRLIYzpsF2LrjrynSQYdKQhRW6hRAjyhIt8L9AF4kyGi1kd3cqQC5yLKrAa5GWV60VkyrCrJV1LRKec_OmdKb4cFrvLQ_ulxs7TmZWhQLQET8t-5Cl5hMM7uHX-TN_i0k0VVkvxZR7bCiwCgEdGVNUj6UFpmoW7ZKR-w1mXkqNdgp97FI_yyg3_Ia1qAjOtF_5NVk2tipqIpX5RoQkgrL4ZZ7U3fWiyO4Ky0" type="text/javascript"></script>
+<script src="../seek/js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
@@ -285,178 +111,166 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</script>
<div id="Top" class="SkipLinks">
-
<a id="ctl00_hlSkipLinksNavigation" accesskey="n" title="Skip to Navigation" href="#Navigation">Skip to Navigation</a>
<a id="ctl00_hlSkipLinksContent" accesskey="c" title="Skip to Content" href="#Content">Skip to Content</a>
-
</div>
-
- <!--[if lte IE 6]>
+ <!--[if lte IE 7]>
<div class="WarningMessage PhaseOut">
-
<p>Groundspeak is phasing out support for older browsers. Visit the <a href="http://support.groundspeak.com/index.php?pg=kb.page&id=215" title="Browser Support Information">Help Center</a> for more information.</p>
-
</div>
<![endif]-->
-
<div class="PrintOnly">
-
<p>
- <img src="/images/logo_print_bw.png" alt="Geocaching.com" /></p>
+ <img src="/images/logo_print_bw.png" alt="Geocaching.com" />
+ </p>
<hr />
-
</div>
-
- <header>
-
+ <header id="ctl00_siteHeader">
<div class="container">
-
<h1 class="Logo span-16">
- <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
+ <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">
+ <img src="/images/tlnMasters/geocaching-logo.png" alt="Geocaching" height="43" width="301" />
+ </a>
+ </h1>
<div class="ProfileWidget span-8 last">
-
-
<div id="ctl00_divSignedIn">
-
<p class="Avatar NoBottomSpacing">
- <a id="ctl00_hlHeaderAvatar" accesskey="p" title="Your Profile" href="../my/"><img title="Your Profile" src="http://img.geocaching.com/user/avatar/642d2771-424e-4ee6-beb6-efecde3406fc.jpg" alt="" style="border-width:0px;" /></a></p>
+ <a id="ctl00_hlHeaderAvatar" accesskey="p" title="Your Profile" href="../my/"><img title="Your Profile" src="http://img.geocaching.com/user/avatar/642d2771-424e-4ee6-beb6-efecde3406fc.jpg" alt="" style="border-width:0px;" /></a>
+ </p>
<p class="SignedInText">
<strong>
- Hello, <a href="/my/default.aspx" title="View Profile for Bananeweizen" class="SignedInProfileLink">Bananeweizen</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&amp;redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fguid%3d80f57e32-7d59-4f06-8a9b-e8241ba34285">Sign Out</a>)<br />
+ Hello, <a href="/my/default.aspx" title="View Profile for Bananeweizen" class="SignedInProfileLink">Bananeweizen</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&amp;redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fwp%3dGC366BQ%26title%3dflugplatzrunde-pattonville-kinder-multi">Sign Out</a>)<br />
<span id="ctl00_litPMLevel">Premium Member</span>
-
- <strong style="display:block">
- <img src="/images/icons/icon_smile.png" title="Caches Found" /> 314</strong>
+
+ <strong style="display: block">
+ 462 Caches Found</strong>
</p>
-
</div>
+ </div>
+ </div>
+ </header>
+ <nav id="Navigation">
+ <div class="container">
+ <ul class="Menu">
+ <li>
+ <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/">Learn &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavGeocaching101" accesskey="i" title="Geocaching 101" href="../guide/">Geocaching 101</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGeocaching2Minutes" title="Geocaching in 2 Minutes" href="../videos/default.aspx#cat=PL939C3CBDC2F2F385&amp;vid=1YTqitVK-Ts">Geocaching in 2 Minutes</a></li>
+ </ul>
+ </li>
-
- </div>
-
- <div class="NavContainer span-24 last">
- <nav id="Navigation">
-
- <ul class="Menu">
+ <li id="ctl00_liNavProfile">
+ <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" href="../my/">Your Profile &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavQuickView" accesskey="p" title="Quick View" href="../my/">Quick View</a></li>
+ <li>
+ <a id="ctl00_hlSubNavLists" accesskey="q" title="Lists" href="../my/lists.aspx">Lists</a></li>
+ <li class="ExtraText">
+ <a id="ctl00_hlSubNavGeocaches" accesskey="m" title="Geocaches" class="NoRightPadding" href="../my/geocaches.aspx">Geocaches</a>
+ (<a id="ctl00_hlSubNavGeocachesYours" accesskey="y" title="Your Geocaches" class="NoSidePadding" href="../my/owned.aspx">Yours</a>)</li>
+ <li class="ExtraText">
+ <a id="ctl00_hlSubNavProfileTrackables" title="Trackables" class="NoRightPadding" href="../my/travelbugs.aspx">Trackables</a>
+ (<a id="ctl00_hlSubNavTrackablesYours" accesskey="8" title="Your Trackables" class="NoSidePadding" href="../track/search.aspx?o=1&amp;uid=31892678-1117-46eb-aa3b-191c20bd6607">Yours</a>)</li>
+ <li>
+ <a id="ctl00_hlSubNavPocketQueries" accesskey="9" title="Pocket Queries" href="../pocket/">Pocket Queries</a></li>
+ <li>
+ <a id="ctl00_hlSubNavFieldNotes" accesskey="0" title="Field Notes" href="../my/fieldnotes.aspx">Field Notes</a></li>
<li>
- <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/">Learn &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavGeocaching101" accesskey="i" title="Geocaching 101" href="../guide/">Geocaching 101</a></li>
- <li>
- <a id="ctl00_hlSubNavGeocaching2Minutes" title="Geocaching in 2 Minutes" href="../videos/#cat=cat:newbies&amp;vid=-4VFeYZTTYs">Geocaching in 2 Minutes</a></li>
- </ul>
+ <a id="ctl00_hlSubNavAccount" accesskey="a" title="Account Details" href="../account/">Account Details</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavPlay" accesskey="3" title="Play" href="../seek/">Play &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavHide" accesskey="d" title="Hide &amp; Seek a Cache" href="../seek/">Hide & Seek a Cache</a></li>
+ <li>
+ <a id="ctl00_hlSubNavLogCache" title="Log a Cache" href="../my/recentlyviewedcaches.aspx">Log a Cache</a></li>
+ <li>
+ <a id="ctl00_hlSubNavMap" accesskey="/" title="View Geocache Map" href="../map/">View Geocache Map</a></li>
+ <li>
+ <a id="ctl00_hlSubNavTrackables" accesskey="e" title="Find Trackables" href="../track/">Find Trackables</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGeoTours" title="GeoTours" href="../adventures/geotours">GeoTours</a>
</li>
+ <li>
+ <a id="ctl00_hlSubNavHelpCenter" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/">Community &#9660;</a>
+ <ul class="SubMenu">
- <li id="ctl00_liNavProfile">
- <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" href="../my/">Your Profile &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavQuickView" accesskey="p" title="Quick View" href="../my/">Quick View</a></li>
- <li>
- <a id="ctl00_hlSubNavLists" accesskey="q" title="Lists" href="../my/lists.aspx">Lists</a></li>
- <li class="ExtraText">
- <a id="ctl00_hlSubNavGeocaches" accesskey="m" title="Geocaches" class="NoRightPadding" href="../my/geocaches.aspx">Geocaches</a>
- (<a id="ctl00_hlSubNavGeocachesYours" accesskey="y" title="Yours" class="NoSidePadding" href="../my/owned.aspx">Yours</a>)</li>
- <li class="ExtraText">
- <a id="ctl00_hlSubNavProfileTrackables" title="Trackables" class="NoRightPadding" href="../my/travelbugs.aspx">Trackables</a>
- (<a id="ctl00_hlSubNavTrackablesYours" accesskey="8" title="Yours" class="NoSidePadding" href="../track/search.aspx?o=1&amp;uid=31892678-1117-46eb-aa3b-191c20bd6607">Yours</a>)</li>
- <li>
- <a id="ctl00_hlSubNavPocketQueries" accesskey="9" title="Pocket Queries" href="../pocket/">Pocket Queries</a></li>
- <li>
- <a id="ctl00_hlSubNavFieldNotes" accesskey="0" title="Field Notes" href="../my/fieldnotes.aspx">Field Notes</a></li>
- <li>
- <a id="ctl00_hlSubNavProfileChallenges" title="Challenges" href="../my/challenges.aspx">Challenges</a></li>
- <li>
- <a id="ctl00_hlSubNavAccount" accesskey="a" title="Account Details" href="../account/">Account Details</a></li>
- </ul>
- </li>
<li>
- <a id="ctl00_hlNavPlay" accesskey="3" title="Play" href="./">Play &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavHide" accesskey="d" title="Hide &amp; Seek a Cache" href="./">Hide & Seek a Cache</a></li>
- <li>
- <a id="ctl00_hlSubNavLogCache" title="Log a Cache" href="../my/recentlyviewedcaches.aspx">Log a Cache</a></li>
- <li><a id="ctl00_hlSubNavMap" accesskey="/" title="View Geocache Map" href="../map/">View Geocache Map</a></li>
- <li>
- <a id="ctl00_hlSubNavChallenges" title="Find Challenges" href="../challenges/">Find Challenges</a></li>
- <li>
- <a id="ctl00_hlSubNavTrackables" accesskey="e" title="Find Trackables" href="../track/">Find Trackables</a></li>
- <li>
- <a id="ctl00_hlSubNavHelpCenter" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
- </ul>
+ <a id="ctl00_hlSubNavTellaFriend" accesskey="-" title="Tell a Friend" href="../account/SendReferral.aspx">Tell a Friend</a>
</li>
+
<li>
- <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/">Community &#9660;</a>
- <ul class="SubMenu">
-
- <li>
- <a id="ctl00_hlSubNavTellaFriend" accesskey="-" title="Tell a Friend" href="../account/SendReferral.aspx">Tell a Friend</a></li>
-
- <li><a id="ctl00_hlSubNavVolunteers" accesskey="+" title="Volunteers" href="../volunteers/">Volunteers</a></li>
- <li>
- <a id="ctl00_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/">Local Organizations</a></li>
- <li>
- <a id="ctl00_hlSubNavDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
- <li>
- <a id="ctl00_hlSubNavBlog" accesskey="b" title="Blog" rel="external" href="http://blog.geocaching.com/">Blog</a></li>
- <li>
- <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavVolunteers" accesskey="+" title="Volunteers" href="../volunteers/">Volunteers</a></li>
+ <li>
+ <a id="ctl00_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/">Local Organizations</a></li>
<li>
- <a id="ctl00_hlNavShop" accesskey="4" title="Shop" href="http://shop.geocaching.com/">Shop &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavShop" accesskey="j" title="Shop Geocaching" rel="external" href="http://shop.geocaching.com/">Shop Geocaching</a></li>
- <li>
- <a id="ctl00_hlSubNavIntlRetailers" title="International Retailers" rel="external" href="http://shop.geocaching.com/default/international-retailers/">International Retailers</a></li>
- <li>
- <a id="ctl00_hlSubNavGPSReviews" accesskey="w" title="GPS Reviews" href="/reviews/gps">GPS Reviews</a></li>
- <li>
- <a id="ctl00_hlSubNavGPSGuide" accesskey="k" title="Guide to Buying a GPS Device" href="../about/buying.aspx">Guide to Buying a GPS Device</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
<li>
- <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavTravel" title="Travel and GeoTourism" href="../travel/">Travel and GeoTourism</a></li>
- <li>
- <a id="ctl00_hlSubNavBrandedPromotions" title="Branded Promotions" href="../brandedpromotions/">Branded Promotions</a></li>
- <li>
- <a id="ctl00_hlSubNavEducation" title="Geocaching and Education" href="../education/">Geocaching and Education</a></li>
- <li>
- <a id="ctl00_hlSubNavAdvertisingWithUs" title="Advertising with Us" href="../about/advertising.aspx">Advertising with Us</a></li>
- <li>
- <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/apidevelopers/">API Program</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavBlog" accesskey="b" title="Blog" rel="external" href="http://blog.geocaching.com/">Blog</a></li>
+ <li>
+ <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavShop" accesskey="4" title="Shop" href="http://shop.geocaching.com/?utm_source=Geocaching&amp;utm_medium=Links&amp;utm_content=Header&amp;utm_campaign=Geocaching+Links">Shop &#9660;</a>
+ <ul class="SubMenu">
<li>
- <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
+ <a id="ctl00_hlSubNavShop" accesskey="j" title="Shop Geocaching" rel="external" href="http://shop.geocaching.com/?utm_source=Geocaching&amp;utm_medium=Links&amp;utm_content=Header&amp;utm_campaign=Geocaching+Links">Shop Geocaching</a></li>
<li>
- <a id="ctl00_hlNavFollowUs" title="Follow Us" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts">Follow Us &#9660;</a>
- <ul class="SubMenu NavSocialMedia">
- <li>
- <a id="ctl00_hlSubNavFacebook" title="Facebook" class="SubNavFacebook" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts">Facebook</a></li>
- <li>
- <a id="ctl00_hlSubNavTwitter" title="Twitter" class="SubNavTwitter" href="http://twitter.com/GoGeocaching">Twitter</a></li>
- <li>
- <a id="ctl00_hlSubNavFlickr" title="Flickr" class="SubNavFlickr" href="http://www.flickr.com/photos/geocaching_com/">Flickr</a></li>
- <li>
- <a id="ctl00_hlSubNavYouTube" title="YouTube" class="SubNavYouTube" href="http://www.youtube.com/user/GoGeocaching">YouTube</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavIntlRetailers" title="International Retailers" rel="external" href="http://shop.geocaching.com/default/international-retailers/">International Retailers</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGPSReviews" accesskey="w" title="GPS Reviews" href="/reviews/gps">GPS Reviews</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGPSGuide" accesskey="k" title="Guide to Buying a GPS Device" href="../about/buying.aspx">Guide to Buying a GPS Device</a></li>
</ul>
-
- </nav>
- <div class="LanguageSelector">
-
+ </li>
+ <li>
+ <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavTravel" title="Travel and GeoTourism" href="../travel/">Travel and GeoTourism</a></li>
+ <li>
+ <a id="ctl00_hlSubNavBrandedPromotions" title="Branded Promotions" href="../brandedpromotions/">Branded Promotions</a></li>
+ <li>
+ <a id="ctl00_hlSubNavEducation" title="Geocaching and Education" href="../education/">Geocaching and Education</a></li>
+ <li>
+ <a id="ctl00_hlSubNavAdvertisingWithUs" title="Advertising with Us" href="../about/advertising.aspx">Advertising with Us</a></li>
+ <li>
+ <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/apidevelopers/">API Program</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
+ <li>
+ <a id="ctl00_hlNavFollowUs" title="Follow Us" href="http://www.facebook.com/geocaching">Follow Us &#9660;</a>
+ <ul class="SubMenu NavSocialMedia">
+ <li>
+ <a id="ctl00_hlSubNavFacebook" title="Facebook" class="SubNavFacebook" href="http://www.facebook.com/geocaching">Facebook</a></li>
+ <li>
+ <a id="ctl00_hlSubNavYouTube" title="YouTube" class="SubNavYouTube" href="http://www.youtube.com/user/GoGeocaching">YouTube</a></li>
+ <li>
+ <a id="ctl00_hlSubNavInstagram" title="Instagram" class="SubNavInstagram" href="http://instagram.com/gogeocaching">Instagram</a></li>
+ <li>
+ <a id="ctl00_hlSubNavTwitter" title="Twitter" class="SubNavTwitter" href="http://twitter.com/GoGeocaching">Twitter</a></li>
+ </ul>
+ </li>
+ </ul>
+ <div class="LanguageSelector">
+
<div class="LocaleText">
@@ -482,27 +296,35 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl04_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl04$uxLocaleItem&#39;,&#39;&#39;)">Čeština</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Dansk</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Ελληνικά</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Latviešu</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl16_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl16$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl17_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl17$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl18_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl18$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl19_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl19$uxLocaleItem&#39;,&#39;&#39;)">日本語</a></li>
</ul>
@@ -529,31 +351,20 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
});
});
</script>
- </div>
</div>
-
-
</div>
-
-
- </header>
+ </nav>
<section id="Content">
-
<div class="container">
-
<div id="ctl00_divBreadcrumbs" class="BreadcrumbWidget span-24 last">
-
<p>
<span id="ctl00_Breadcrumbs"><span><a title="Geocaching - The Official Global GPS Cache Hunt Site" href="/">Geocaching</a></span><span> &gt; </span><span><a title="Hide and Seek A Geocache" href="/seek/default.aspx">Hide and Seek A Geocache</a></span><span> &gt; </span><span>Geocache Details</span></span>
</p>
-
</div>
-
<div id="ctl00_divContentMain" class="span-24 last">
-
<div id="ctl00_ContentBody_CoordInfoLinkControl1_uxCoordInfoLinkPanel" class="CoordInfoLinkWidget">
@@ -567,8 +378,8 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</div>
<div id="dlgClipboard">
<input type="text" class="TextFormat" />
- <a href="#" onclick="$('#dlgClipboard').hide();return false;">
- <img src="/images/stockholm/mini/close.gif" alt="Close" title="Close" /></a>
+ <a href="#" onclick="$('#dlgClipboard').hide();return false;" title="Close" class="Close">
+ x</a>
</div>
<script type="text/javascript">
$("a.CoordInfoLink").click(function (e) {
@@ -608,99 +419,100 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</p>
<h2 class="NoBottomSpacing">
- <span id="ctl00_ContentBody_CacheName">Flugplatzrunde Pattonville (Kinder-Multi)</span></h2>
+ <span id="ctl00_ContentBody_CacheName">Flugplatzrunde Pattonville (Kinder-Multi)</span>
+ </h2>
<div class="minorCacheDetails Clear">
<div id="ctl00_ContentBody_mcd1">
- A cache by <a href="http://www.geocaching.com/profile/?guid=ddf0b84d-5f1a-4ed9-90f9-a3b8e02ddacf&wid=80f57e32-7d59-4f06-8a9b-e8241ba34285&ds=2">Four Ernies</a></div>
+ A cache by <a href="http://www.geocaching.com/profile/?guid=ddf0b84d-5f1a-4ed9-90f9-a3b8e02ddacf&wid=80f57e32-7d59-4f06-8a9b-e8241ba34285&ds=2">Four Ernies</a>
+ </div>
<div id="ctl00_ContentBody_mcd2">
- Hidden:
+ Hidden
+ :
2011-11-04
</div>
- <div></div>
+ <div>
+
+ </div>
</div>
</div>
- <div id="ctl00_ContentBody_diffTerr" class="CacheStarLabels span-3 BottomSpacing">
-
- Difficulty:
- <br />
- Terrain:
+ <div id="ctl00_ContentBody_diffTerr" class="CacheStarLabels span-6 BottomSpacing">
+
+ <dl>
+ <dt>
+ Difficulty:</dt>
+ <dd>
+ <span id="ctl00_ContentBody_uxLegendScale" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars2.gif" alt="2 out of 5" /></span>
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ Terrain:</dt>
+ <dd>
+ <span id="ctl00_ContentBody_Localize12" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars2.gif" alt="2 out of 5" /></span>
+ </dd>
+ </dl>
</div>
-
- <div id="ctl00_ContentBody_diffTerrStars" class="CacheStarImgs span-2">
-
- <span id="ctl00_ContentBody_uxLegendScale" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars2.gif" alt="2 out of 5" /></span>
- <span id="ctl00_ContentBody_Localize12" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars2.gif" alt="2 out of 5" /></span>
+ <div id="ctl00_ContentBody_size" class="CacheSize span-5">
- </div>
-
- <div id="ctl00_ContentBody_size" class="CacheSize span-9">
-
- <p style="text-align: center;">
- Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/regular.gif" alt="Size: regular" title="Size: regular" />&nbsp<small>(regular)</small></span></p>
+ <p class="AlignCenter">
+ Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/regular.gif" alt="Size: regular" title="Size: regular" />&nbsp<small>(regular)</small></span>
+ </p>
</div>
-
-
-
- <div class="span-3 right last">
+ <div class="span-6 right last">
<div class="favorite right">
<a id="uxFavContainerLink" href="javascript:void(0);">
- <div class="favorite-container">
+ <div class="favorite-container"><!-- TODO! -->
<span class="favorite-value">
- 68</span><br />
+ 105
+ </span>
Favorites
- <img id="imgFavoriteArrow" src="/images/arrow-down.png" alt="Expand" title="Expand" />
</div>
</a>
<div class="favorite-dropdown">
- <dl class="top">
- <dt>
- <img id="imgFavoriteScore" src="/images/loading3.gif" width="20" height="20" alt="Loading" title="Loading" /></dt>
- <dd>
- <span id="uxFavoriteScore">&nbsp;</span></dd>
- </dl>
- <dl class="bottom">
- <dt>
- <img src="/images/silk/group_go.png" alt="View Who Favorited this Cache" title="View Who Favorited this Cache" /></dt>
- <dd>
- <a id="hlViewWhoFavorited" title="View Who Favorited this Cache" href="/seek/cache_favorited.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285">View Who Favorited this Cache</a></dd>
- <dt>
- <img src="/images/silk/help.png" alt="About Favorites" title="About Favorites" /></dt>
- <dd>
+
+ <ul>
+ <li>
+ <img id="imgFavoriteScore" src="/images/loading3.gif" width="20" height="20" alt="Loading" title="Loading"><span id="uxFavoriteScore">&nbsp;</span>
+ </li>
+ <li>
+ <a id="hlViewWhoFavorited" title="View Who Favorited this Cache" href="/seek/cache_favorited.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285">View Who Favorited this Cache</a>
+ </li>
+ <li>
<a id="hlAboutFavorites" title="About Favorites" href="http://support.groundspeak.com/index.php?pg=kb.page&amp;id=287" target="_blank">About Favorites</a>
- </dd>
- </dl>
+ </li>
+ </ul>
</div>
</div>
</div>
-
<p class="Clear">
- </p>
+
+
+
+ </p>
<p class="Warning NoBottomSpacing">This is a Premium Member Only cache.</p>
-
<div id="ctl00_ContentBody_CacheInformationTable" class="CacheInformationTable">
<div class="LocationData FloatContainer">
<div class="span-9">
<p class="NoBottomSpacing">
<a href="#" class="edit-cache-coordinates" id="uxLatLonLink" title="Correct these coordinates">
- <span id="uxLatLon" style="font-weight:bold;">N 48° 51.996 E 009° 12.856</span>
+ <strong>
+ <span id="uxLatLon">N 48° 51.996 E 009° 12.856</span></strong>
</a>
<br />
- <span id="ctl00_ContentBody_LocationSubPanel" style="display:inline;"><small>
- UTM: 32U E 515713 N 5412648</small>
- <br />
- </span><small>
- <a id="ctl00_ContentBody_lnkConversions" title="Other Conversions" href="/wpt/?lat=48.8666&amp;lon=9.214267&amp;detail=1" target="_blank">Other Conversions</a>
- </small>
+ <span id="ctl00_ContentBody_LocationSubPanel">
+ UTM: 32U E 515713 N 5412648<br />
+ </span>
+ <a id="ctl00_ContentBody_lnkConversions" title="Other Conversions" href="/wpt/?lat=48.8666&amp;lon=9.214267&amp;detail=1" target="_blank">Other Conversions</a>
</p>
</div>
<div class="span-7 last AlignRight">
@@ -708,68 +520,62 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<span id="lblDistFromHome"><img src="/images/icons/compass/E.gif" alt="E" style="vertical-align:text-bottom" />&nbsp;E 2.1&nbsp;km from your home location</span>
</div>
</div>
- <div id="Print">
- <p class="NoBottomSpacing">
- <span id="ctl00_ContentBody_uxPrintHeader" style="font-weight:bold;">Print</span>:
- <br />
- <small>
- <a id="ctl00_ContentBody_lnkPrintFriendly" class="lnk" href="cdpf.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285" target="_blank">
- <img src="/images/silk/printer.png" alt="Print" title="Print" width="16" height="16" />&nbsp; <span>
- No Logs
- </span>
- </a>&nbsp;
- <a id="ctl00_ContentBody_lnkPrintFriendly5Logs" href="cdpf.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285&amp;lc=5" target="_blank">5 Logs</a>&nbsp;
- <a id="ctl00_ContentBody_lnkPrintFriendly10Logs" href="cdpf.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285&amp;lc=10" target="_blank">10 Logs</a>&nbsp;&middot;&nbsp;
- <a id="ctl00_ContentBody_lnkPrintDirectionsSimple" class="lnk" href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=48.861002,9.186577 (Home Location)&amp;daddr=48.8666,9.214267(Flugplatzrunde+Pattonville+Kinder-Multi)" target="_blank">
- <img src="/images/silk/car.png" alt="Driving Directions" title="Driving Directions" width="16" height="16" />&nbsp; <span>
- Driving Directions
- </span>
- </a></small></p>
- <div id="ctl00_ContentBody_uxPrintPDFSection" style="display: none;">
- <p>
- <img src="/images/pdf_icon.gif" width="16" height="16" alt="PDF" title="PDF" />&nbsp;<small>[PDF:]&nbsp;<a id="ctl00_ContentBody_lnkPDFPrintNoLogs" href="javascript:pl(0);">No Logs</a>&nbsp;<a id="ctl00_ContentBody_lnkPDFPrint5Logs" href="javascript:pl(5);">5 Logs</a>&nbsp;<a id="ctl00_ContentBody_lnkPDFPrint10Logs" href="javascript:pl(10);">10 Logs</a></small></p>
- </div>
- </div>
- <div id="Download">
- <p class="NoBottomSpacing">
- <span id="ctl00_ContentBody_uxDownloadLabel" style="font-weight:bold;">Download</span>:
- <small>
+ <div class="DownloadLinks">
+ <dl id="Print">
+ <dt class="label">
+ <span id="ctl00_ContentBody_uxPrintHeader">Print</span>:
+ </dt>
+ <dd>
+ <a id="ctl00_ContentBody_lnkPrintFriendly" href="../seek/cdpf.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285" target="_blank">No Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintFriendly5Logs" href="../seek/cdpf.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285&amp;lc=5" target="_blank">5 Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintFriendly10Logs" href="../seek/cdpf.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285&amp;lc=10" target="_blank">10 Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintDirectionsSimple" class="DrivingDirections" href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=48.861002,9.186577 (Home Location)&amp;daddr=48.8666,9.214267(Flugplatzrunde+Pattonville+Kinder-Multi)" target="_blank">Driving Directions</a>
+ </dd>
+ </dl>
+ <dl id="ctl00_ContentBody_uxPrintPDFSection" style="display: none;">
+ <dt>
+ PDF:
+ </dt>
+ <dd>
+ <a id="ctl00_ContentBody_lnkPDFPrintNoLogs" href="javascript:pl(0);">No Logs</a>
+ <a id="ctl00_ContentBody_lnkPDFPrint5Logs" href="javascript:pl(5);">5 Logs</a>
+ <a id="ctl00_ContentBody_lnkPDFPrint10Logs" href="javascript:pl(10);">10 Logs</a>
+ </dd>
+ </dl>
+ <dl id="Download">
+ <dt class="label">
+ <span id="ctl00_ContentBody_uxDownloadLabel">Download</span>:
+ </dt>
+ <dd>
<a id="ctl00_ContentBody_lnkDownloads" title="Read about waypoint downloads" href="/software/default.aspx">Read about waypoint downloads</a>
- </small>
- </p>
-
- <p class="NoBottomSpacing TopSpacing">
- <input type="submit" name="ctl00$ContentBody$btnLocDL" value="LOC waypoint file" id="ctl00_ContentBody_btnLocDL" />
- |
- <input type="submit" name="ctl00$ContentBody$btnGPXDL" value="GPX file" id="ctl00_ContentBody_btnGPXDL" />
- |
- <input type="submit" name="ctl00$ContentBody$btnSendToGPS" value="Send to My GPS" onclick="s2gps(&#39;80f57e32-7d59-4f06-8a9b-e8241ba34285&#39;);return false;" id="ctl00_ContentBody_btnSendToGPS" />
- |
- <input type="submit" name="ctl00$ContentBody$btnSendToPhone" value="Send to My Phone" onclick="s2phone(&#39;GC366BQ&#39;);return false;" id="ctl00_ContentBody_btnSendToPhone" />
- </p>
-
+ </dd>
+ <dt></dt>
+ <dd>
+ <input type="submit" name="ctl00$ContentBody$btnLocDL" value="LOC waypoint file" id="ctl00_ContentBody_btnLocDL" /><input type="submit" name="ctl00$ContentBody$btnGPXDL" value="GPX file" id="ctl00_ContentBody_btnGPXDL" /><input type="submit" name="ctl00$ContentBody$btnSendToGPS" value="Send to My GPS" onclick="s2gps(&#39;80f57e32-7d59-4f06-8a9b-e8241ba34285&#39;);return false;" id="ctl00_ContentBody_btnSendToGPS" /><input type="submit" name="ctl00$ContentBody$btnSendToPhone" value="Send to My Phone" onclick="s2phone(&#39;GC366BQ&#39;);return false;" id="ctl00_ContentBody_btnSendToPhone" />
+ </dd>
+ </dl>
</div>
</div>
- <fieldset class="DisclaimerWidget">
- <legend class="warning">
- [Please Note]
- </legend>
- <p class="NoBottomSpacing">
- [Use of geocaching.com services is subject to the terms and conditions <a href='http://www.geocaching.com/about/disclaimer.aspx'>in our disclaimer</a>.]
- </p>
- </fieldset>
+ <div class="Note Disclaimer">
+ <strong>
+ Please note
+ </strong>
+ Use of geocaching.com services is subject to the terms and conditions <a href="/about/disclaimer.aspx" title="Read Our Disclaimer">in our disclaimer</a>.
+ </div>
- <fieldset class="NotesWidget">
- <legend class="note">
+ <div class="Note PersonalCacheNote">
+ <strong>
Personal Cache Note
- </legend>
- <img src="/images/silk/help.png" id="pcn_help" class="CacheNoteHelpImg" />
- <p id="cache_note" class="NoBottomSpacing">
- </p>
- </fieldset>
+ </strong>
+ <img src="/images/icons/16/help.png" id="pcn_help" class="CacheNoteHelpImg" />
+ <span id="cache_note">
+
+ </span>
+ </div>
+ <h3 class="CacheDescriptionHeader">Geocache Description:</h3>
<div class="UserSuppliedContent">
<span id="ctl00_ContentBody_ShortDescription">Dieser Kinder-Multi führt Euch durch ein malerisches, idyllisches Stückchen Natur. Er wird von 5 Tradis (Flugplatzrunde 1 bis 5) begleitet, welche den Kindern die Spannung erhalten- und die "Multi-Langeweile" verhindern sollen.<br />
@@ -780,7 +586,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<br />
<div class="UserSuppliedContent">
- <span id="ctl00_ContentBody_LongDescription">Diese Gegend ist im Kartenmaterial vieler Anbieter noch unberücksichtigt. Dadurch waren wir gezwungen, ein paar STAGES mehr einzurichten . Diese STAGES sollen Euch auf "Kurs" halten. Auch die Tradis (Flufplatzrunde 1 bis 5), dienen zusätzlich dem Routing. Wir empfehlen allen, welche die Tradis bereits gelogt haben, sich diese wenigstens als Wegpunkte auf`s Navi zu laden.<br />
+ <span id="ctl00_ContentBody_LongDescription">Diese Gegend ist im Kartenmaterial vieler Anbieter noch unberücksichtigt. Dadurch waren wir gezwungen, ein paar STAGES mehr einzurichten . Diese STAGES sollen Euch auf "Kurs" halten. Auch die Tradis (Flufplatzrunde 1 bis 5), dienen zusätzlich dem Routing. Wir empfehlen allen, welche die Tradis bereits geloggt haben, sich diese wenigstens als Wegpunkte auf`s Navi zu laden.<br />
Sämtliche Stages, Tradis und das Final sind Kindergeeignet und auf einfachen Fußwegen erreichbar. Für die perfekte und schönste Wegführung empfehlen wir die Tradis wie folgt:<br />
<br />
Flugplatzrunde-1 "Lea`s Geburtstagscache": zwischen Stage 2 und Stage 3<br />
@@ -789,7 +595,9 @@ Flugplatzrunde-3 "Alles im Kasten?": zwischen Stage 5 und Stage 6<br />
Flugplatzrunde-4 "Der Zwergentunnel": zwischen Stage 7 und Stage 8<br />
Flugplatzrunde 5 "Eingezäunt": zwischen Stage 9 und Stage 10<br />
<br />
-Die "Flugplatzrunde Pattonville" besteht aus 8 Stages, 3 Referenzpunkte, 5 Tradis und Final. Für die Wegstrecke mit allen Stages und Tradis benötigt man ca. 2 bis 3 Stunden (ohne Kinder eher 2h, mit Kinder eher 3h). STRENG GEHEIMER Hinweis: Vom Final zum Parkplatz nur 7 Minuten ;-)))<br />
+Die "Flugplatzrunde Pattonville" besteht aus 8 Stages, 3 Referenzpunkte, 5 Tradis und Final. Für die Wegstrecke mit allen Stages und Tradis benötigt man ca. 2 bis 3 Stunden (ohne Kinder eher 2h, mit Kinder eher 3h). STRENG GEHEIMER Hinweis: Vom Final zum Parkplatz nur 5 Minuten ;-)))<br />
+Da an STAGE 5 immer wieder das Schild Probleme macht (wird rausgerissen und irgendwo ins Gebüsch gestellt) haben wir für den Fall der Fälle einen zusätzlichen Tipp im HINT eingetragen.<br />
+Auch STAGE 6 hat (erst in letzter Zeit !<img src='http://www.geocaching.com/images/icons/icon_smile_question.gif' border="0" align="middle" />) für Verwirrung gesorgt. Ein weiterer Tipp im HINT sollte für Eindeutigkeit sorgen. Ist ja ne Kinderrunde, da können zusätzliche Tipp`s nicht schaden und Frust vermeiden <img src='http://www.geocaching.com/images/icons/icon_smile_approve.gif' border="0" align="middle" />.<br />
<br />
Die Wegführung erfolgt über Fußwege. Nur jeweils die letzten Meter zu den Tradis (und Final), sind „offroad“. Es ist nie nötig, sich durchs Gebüsch zu schlagen. Alles (Tradis und Final) sind ohne Buschmesser erreichbar. Nach Regen können Wege matschig sein. Wir empfehlen Feste Schuhe. Kinderwagen sind möglich, manchmal wird es etwas eng. Jeweils die letzten Meter zu den Tradis und zum Final sind NICHT kinderwagengeeignet.<br />
Überall sind Hunde-, Jogging- und Reitermuggels unterwegs. Bitte seid wachsam. Gerade im Herbst und Winter, wenn die Bäume kein Laub tragen, ist die Entdeckungsgefahr groß. Es sind Caches dabei, welche man nicht einfach mit neuen Koordinaten, neu verstecken kann.<br />
@@ -820,10 +628,8 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<p id="ctl00_ContentBody_hints">
<strong>
Additional Hints</strong>
- (<a id="ctl00_ContentBody_lnkDH" onclick="dht(this);return false;" title="Decrypt" href="#">Decrypt</a>)</p>
- <div id="div_hint" class="span-8 WrapFix">
- FGNTR 3: Teüa<br>SVANY: Rhpu mh Süßra yvrtg avpug qre "Fgrva qre Jrvfra"- nore qnsüe qre "jrvßr Fgrva" (Fgrvacynggr)</div>
- <div id='dk' style="display: block;" class="span-9 last">
+ (<a id="ctl00_ContentBody_lnkDH" onclick="dht(this);return false;" title="Decrypt" href="../seek/#">Decrypt</a>) </p><div id="div_hint" class="span-8 WrapFix">
+ FGNTR 3: Teüa<br>FGNTR 5: Snyyf qnf Fpuvyq zny jvrqre sruyg: Va qre Aäur fgrura zvaq. 4 jrvgrer, vqragvfpur, teüar Fpuvyqre (Yöfhat: R = 4)<br>FGNTR 6: Fnpxtnffr mäuyg zvg (Retroavf vfg rvar hatrenqr Mnuy)<br>SVANY: Rhpu mh Süßra yvrtg avpug qre "Fgrva qre Jrvfra"- nore qnsüe qre "jrvßr Fgrva" (Fgrvacynggr)</div><div id='dk' style="display: block;" class="span-9 last">
<span id="ctl00_ContentBody_EncryptionKey" class="right"><div class="DecryptionKeyWidget"> <p class="WidgetHeader">Decryption Key</p> <p class="WidgetBody">A|B|C|D|E|F|G|H|I|J|K|L|M<br /> -------------------------<br /> N|O|P|Q|R|S|T|U|V|W|X|Y|Z</p> <p class="WidgetFooter">(letter above equals below, and vice versa)</p></div></span>
</div>
<div class="Clear">
@@ -835,42 +641,19 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<div class="span-6 prepend-1 last">
-<div class="CacheDetailNavigationWidget NoPrint">
-
- <h3 class="WidgetHeader">
- <img id="ctl00_ContentBody_GeoNav2_uxHeaderImage" src="../images/stockholm/16x16/home.gif" alt="Navigation" style="border-width:0px;" />
- Navigation
- </h3>
- <div class="WidgetBody">
-
- <ul class="CacheDetailsNavLinks">
- <li><a href="/seek/log.aspx?ID=2544319" class="lnk"><img src="/images/stockholm/16x16/comment_add.gif" />&nbsp;<span>Log your visit</span></a></li>
-<li><a href="/seek/gallery.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285" class="lnk"><img src="/images/stockholm/16x16/photos.gif" />&nbsp;<span>View Gallery</span></a></li>
-<li><a href="/my/watchlist.aspx?w=2544319" class="lnk"><img src="/images/stockholm/16x16/icon_watchlist.gif" />&nbsp;<span>Watch Listing</span></a></li>
-<li><a href="/bookmarks/ignore.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285&WptTypeID=3" class="lnk"><img src="/images/stockholm/16x16/cross.gif" />&nbsp;<span>Ignore Listing</span></a></li>
-<li><a href="/bookmarks/mark.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285&WptTypeID=3" class="lnk"><img src="/images/stockholm/16x16/book_open_mark.gif" />&nbsp;<span>Bookmark Listing</span></a></li>
-
- </ul>
-
- </div>
+<div class="CacheDetailNavigation NoPrint">
+ <a href="/seek/log.aspx?ID=2544319&lcn=1" id="ctl00_ContentBody_GeoNav_logButton" class="Button LogVisit">Log your visit</a>
+ <ul>
+ <li><a href="/seek/gallery.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285">View Gallery</a> (10)</li>
+ <li><a href="/my/watchlist.aspx?w=2544319">Watch</a> (1)</li>
+ <li><a href="/bookmarks/mark.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285&amp;WptTypeID=3">Bookmark</a></li>
+ <li><a href="/bookmarks/ignore.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285&amp;WptTypeID=3">Ignore</a></li>
+ </ul>
</div>
- <div id="ctl00_ContentBody_uxStatusInformation" class="StatusInformationWidget">
-
-
-
- <div id="ctl00_ContentBody_pnlWatchedCount">
-
- <p>
- <img src="/images/icons/icon_watchlist.gif" alt="Watching" /> 1 user(s) watching this cache.</p>
-
- </div>
-
-
-</div>
<div id="map_preview_canvas" class="TopSpacing" style="width: 228px; height: 175px;">
@@ -881,9 +664,8 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<div id="ctl00_ContentBody_detailWidget" class="CacheDetailNavigationWidget TopSpacing BottomSpacing">
<h3 class="WidgetHeader">
-
- <img src="/images/icon_Boardattention.gif" height="16" width="16" alt="Info" title="Info" />
- Attributes</h3>
+ Attributes
+ </h3>
<div class="WidgetBody">
<img src="/images/attributes/night-no.gif" alt="not recommended at night" title="not recommended at night" width="30" height="30" /> <img src="/images/attributes/wheelchair-no.gif" alt="not wheelchair accessible" title="not wheelchair accessible" width="30" height="30" /> <img src="/images/attributes/picnic-yes.gif" alt="picnic tables available" title="picnic tables available" width="30" height="30" /> <img src="/images/attributes/restrooms-yes.gif" alt="restrooms available" title="restrooms available" width="30" height="30" /> <img src="/images/attributes/parking-yes.gif" alt="parking available" title="parking available" width="30" height="30" /> <img src="/images/attributes/kids-yes.gif" alt="kid friendly" title="kid friendly" width="30" height="30" /> <img src="/images/attributes/thorn-yes.gif" alt="thorns!" title="thorns!" width="30" height="30" /> <img src="/images/attributes/ticks-yes.gif" alt="ticks!" title="ticks!" width="30" height="30" /> <img src="/images/attributes/dogs-yes.gif" alt="dogs allowed" title="dogs allowed" width="30" height="30" /> <img src="/images/attributes/attribute-blank.gif" alt="blank" title="blank" width="30" height="30" /> <img src="/images/attributes/attribute-blank.gif" alt="blank" title="blank" width="30" height="30" /> <img src="/images/attributes/attribute-blank.gif" alt="blank" title="blank" width="30" height="30" /> <p class="NoBottomSpacing"><small><a href="/about/icons.aspx" title="What are Attributes?">What are Attributes?</a></small></p>
</div>
@@ -891,24 +673,27 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
</div>
- <div id="ctl00_ContentBody_uxBanManWidget" class="CacheDetailPageAds clear">
+ <div id="ctl00_ContentBody_uxBanManWidget" class="InlinePageAds">
- <div id="ctl00_ContentBody_divContentSide">
-
- <p class="NoBottomSpacing">
- <span id="ctl00_ContentBody_ADModules_09"><iframe type="iframe" src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&SiteID=1&X='c6a84fa3a38144ca933bb05f0d4befa5'" width="120" height="240" Marginwidth="0" Marginheight="0" Hspace="0" Vspace="0" Frameborder="0" Scrolling="no" style="width:120px;Height:240px;"><a href="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Click&;Mode=HTML&SiteID=1" target="_blank"><img src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&Mode=HTML&SiteID=1" width="120" height="240" border="0" alt="" /></a></iframe></span>
- </p>
- <p class="AlignCenter">
- <small><a href="../about/advertising.aspx" id="ctl00_ContentBody_advertisingWithUs" title="Advertising with Us">Advertising with Us</a></small></p>
-
- </div>
-
+
+ <script type='text/javascript'>
+googletag.cmd.push(function() {{
+googletag.defineSlot('/1011121/cache_details_pg_120x240', [120, 240], 'div_7321c453-c0c3-498c-be15-4ae1999bcce7').addService(googletag.pubads());
+googletag.pubads().enableSingleRequest();
+googletag.enableServices();
+}});
+</script>
+<div id='div_7321c453-c0c3-498c-be15-4ae1999bcce7'>
+<script type='text/javascript'>
+googletag.cmd.push(function() { googletag.display('div_7321c453-c0c3-498c-be15-4ae1999bcce7'); });
+</script>
</div>
-
-
-
- <div class="GoogleAds AlignCenter BottomSpacing">
- </div>
+
+ <p>
+ <small><a href="../about/advertising.aspx" id="ctl00_ContentBody_advertisingWithUs" title="Advertising with Us">Advertising with Us</a></small> </p>
+</div><div class="GoogleAds AlignCenter BottomSpacing">
+
+ </div>
<div class="clear">
</div>
@@ -918,7 +703,6 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<div class="CacheDetailNavigationWidget">
<h3 class="WidgetHeader">
- <img id="ctl00_ContentBody_uxTravelBugList_uxInventoryIcon" src="../images/WptTypes/sm/tb_coin.gif" alt="Inventory" style="height:16px;width:16px;border-width:0px;" />
<span id="ctl00_ContentBody_uxTravelBugList_uxInventoryLabel">Inventory</span>
</h3>
<div class="WidgetBody">
@@ -944,29 +728,22 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<div class="CacheDetailNavigationWidget">
- <h3 class="WidgetHeader">
- <img src="/images/stockholm/16x16/pages.gif" width="16" height="16" alt="" />&nbsp;Bookmark Lists</h3>
+ <h3 class="WidgetHeader">Bookmark Lists</h3>
<div class="WidgetBody">
- <ul>
-
- <li style='padding: .5em;' class=''>
- <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=a0709565-ce76-4555-ae67-64081aa33a92">
- Familienfreundlich</a><br />
- <small><em>
- by
- <a href="http://www.geocaching.com/profile/?guid=97962bff-7f8c-4149-b058-ae124d3b53a3">
- Schnuffelwuffel</a> </em></small>
+ <ul class="BookmarkList">
+
+ <li class=''>
+ <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=a0709565-ce76-4555-ae67-64081aa33a92">Familienfreundlich</a><br /> by <a href="http://www.geocaching.com/profile/?guid=97962bff-7f8c-4149-b058-ae124d3b53a3">Schnuffelwuffel</a>
</li>
- <li style='padding: .5em;' class='AlternatingRow'>
- <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=14f6d195-2e49-485c-ab7c-3f91111302ee">
- Die besten Caches Raum Ludwigsburg</a><br />
- <small><em>
- by
- <a href="http://www.geocaching.com/profile/?guid=58ce0b2b-de7c-4c06-9867-475c909cd93c">
- ErisDiskordia</a> </em></small>
+ <li class='AlternatingRow'>
+ <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=14f6d195-2e49-485c-ab7c-3f91111302ee">Die besten Caches Raum Ludwigsburg</a><br /> by <a href="http://www.geocaching.com/profile/?guid=58ce0b2b-de7c-4c06-9867-475c909cd93c">ErisDiskordia</a>
+ </li>
+
+ <li class=''>
+ <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=b76b09da-6ef9-4699-af4c-619cc8e631d4">Elektrik&#246;rs Lieblinge</a><br /> by <a href="http://www.geocaching.com/profile/?guid=e584b89a-f81b-4121-a418-f8330a59bbfa">Elektrikör</a>
</li>
</ul>
@@ -990,8 +767,7 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<div id="ctl00_ContentBody_bottomSection" class="span-24 last">
<p>
- <span id="ctl00_ContentBody_WaypointsInfo" style="font-weight:bold;">Additional Waypoints</span>&nbsp;
- <br />
+ <span id="ctl00_ContentBody_WaypointsInfo" style="font-weight:bold;">Additional Waypoints</span>&nbsp; <br />
<script type="text/javascript">
@@ -1343,7 +1119,7 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
Note:
</td>
<td colspan="6">
- Dieser Referenzpunkt soll Euch den rechten Weg weisen. Wenn Ihr die Route zur nächsten Stage (8) oder zum nächtsen Tradi ("Zwergentunnel") über diesen Refenzpunkt führt, dann sind keine "Buschmesser - Querfeldein-Aktionen" nötig. Folgt ab diesem Punkt dem Pfad am Koppelzaub entlang (Richtung Nordwest).
+ Dieser Referenzpunkt soll Euch den rechten Weg weisen. Wenn Ihr die Route zur nächsten Stage (8) oder zum nächtsen Tradi ("Zwergentunnel") über diesen Refenzpunkt führt, dann sind keine "Buschmesser - Querfeldein-Aktionen" nötig. Folgt ab diesem Punkt dem Pfad am Koppelzaun entlang (Richtung Nordwest).
</td>
</tr>
@@ -1695,21 +1471,22 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
}
</script>
- </p>
-
- <div id="uxlrgMap" class="fr">
+ <p>
+ <div id="uxlrgMap" class="FloatRight TopSpacing">
<div class="PageBreakBefore">
- </div>
+
+ </div>
<div class="CDMapWidget">
<p class="WidgetHeader NoBottomSpacing">
- <a id="ctl00_ContentBody_uxViewLargerMap" title="View Larger Map" class="lnk" href="/map/default.aspx?lat=48.8666&amp;lng=9.214267" target="_blank"><img src="/images/silk/map_go.png" /> <span>View Larger Map</span></a>
+ <a id="ctl00_ContentBody_uxViewLargerMap" title="View Larger Map" href="/map/default.aspx?lat=48.8666&amp;lng=9.214267" target="_blank">View Larger Map</a>
</p>
<div id="map_canvas" style="width: 325px; height: 325px;">
</div>
<p class="WidgetFooter">
- <a id="ctl00_ContentBody_uxNotesAboutPrinting" href="#mapPrintingNotes" class="NoPrint">Notes about Printing Maps</a></p>
+ <a id="ctl00_ContentBody_uxNotesAboutPrinting" href="#mapPrintingNotes" class="NoPrint">Notes about Printing Maps</a>
+ </p>
</div>
<div style="display: none;">
<div id="mapPrintingNotes">
@@ -1729,29 +1506,20 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
</p>
<ul class="NoPrint">
<li>
- ...other caches&nbsp;
- <a id="ctl00_ContentBody_uxFindLinksHiddenByThisUser" href="/seek/nearest.aspx?u=Four+Ernies">hidden</a>&nbsp;
- or&nbsp;
- <a id="ctl00_ContentBody_uxFindLinksFoundByThisUser" href="/seek/nearest.aspx?ul=Four+Ernies">found</a>&nbsp;
- by this user
+ ...other caches <a href="/seek/nearest.aspx?u=Four+Ernies">hidden</a> or <a href="/seek/nearest.aspx?ul=Four+Ernies">found</a> by this user
</li>
<li>
- ...nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksNearbyCachesOfType" href="/seek/nearest.aspx?tx=a5f6d0ad-d2f2-4011-8c14-940a9ebf3c74&amp;lat=48.866600&amp;lng=9.214267">caches of this type</a>,
- <a id="ctl00_ContentBody_uxFindLinksNearbyNotFound" href="/seek/nearest.aspx?tx=a5f6d0ad-d2f2-4011-8c14-940a9ebf3c74&amp;lat=48.866600&amp;lng=9.214267&amp;f=1">that I haven't found</a>
+ ...nearby <a href="/seek/nearest.aspx?tx=a5f6d0ad-d2f2-4011-8c14-940a9ebf3c74&lat=48.866600&lng=9.214267">caches of this type</a>, <a href="/seek/nearest.aspx?tx=a5f6d0ad-d2f2-4011-8c14-940a9ebf3c74&lat=48.866600&lng=9.214267&f=1">that I haven't found</a>
</li>
<li>
- ...all nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksAllNearbyCaches" href="/seek/nearest.aspx?lat=48.866600&amp;lng=9.214267">caches</a>,
- <a id="ctl00_ContentBody_uxFindLinksAllNearbyNotFound" href="/seek/nearest.aspx?lat=48.866600&amp;lng=9.214267&amp;f=1">that I haven't found</a>
+ ...all nearby <a href="/seek/nearest.aspx?lat=48.866600&lng=9.214267">caches</a>, <a href="/seek/nearest.aspx?lat=48.866600&lng=9.214267&f=1">that I haven't found</a>
</li>
<li>
- ...all nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksWaymarking" href="http://www.waymarking.com/directory.aspx?f=1&amp;lat=48.866600&amp;lon=9.214267">waymarks on Waymarking.com</a>
+ ...all nearby <a href="http://www.waymarking.com/directory.aspx?f=1&lat=48.866600&lon=9.214267">waymarks on Waymarking.com</a>
</li>
- <li>
- ...nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksHotels" href="/reviews/hotels-coords-48.8666,9.2143">Hotels</a>
- </li>
</ul>
<p class="NoPrint">
<span id="ctl00_ContentBody_uxMapLinkHeader" style="font-weight:bold;">For online maps...</span>
@@ -1759,25 +1527,26 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<span class="NoPrint">
<ul>
- <span id="ctl00_ContentBody_MapLinks_MapLinks"><li><a href="http://www.geocaching.com/map/default.aspx?lat=48.8666&lng=9.21427" target="_blank">Geocaching.com Map</a></li><li><a href="http://maps.google.com/maps?q=N+48%c2%b0+51.996+E+009%c2%b0+12.856+(GC366BQ)+" target="_blank">Google Maps</a></li><li><a href="http://www.mapquest.com/maps/map.adp?searchtype=address&formtype=latlong&latlongtype=decimal&latitude=48.8666&longitude=9.21427&zoom=10" target="_blank">MapQuest</a></li><li><a href="http://maps.yahoo.com/#lat=48.8666&lon=9.21427&zoom=16&q=48.8666,9.21427&conf=1&start=1&mvt=m&trf=0" target="_blank">Yahoo Maps</a></li><li><a href="http://www.bing.com/maps/default.aspx?v=2&lvl=14&sp=point.48.8666_9.21427_GC366BQ" target="_blank">Bing Maps</a></li><li><a href="http://www.opencyclemap.org/?zoom=12&lat=48.8666&lon=9.21427" target="_blank">Open Cycle Maps</a></li><li><a href="http://www.openstreetmap.org/?mlat=48.8666&mlon=9.21427&zoom=12" target="_blank">Open Street Maps</a></li></span>
+ <span id="ctl00_ContentBody_MapLinks_MapLinks"><li><a href="http://www.geocaching.com/map/default.aspx?lat=48.8666&lng=9.21427" target="_blank">Geocaching.com Map</a></li><li><a href="http://maps.google.com/maps?q=N+48%c2%b0+51.996+E+009%c2%b0+12.856+(GC366BQ)+" target="_blank">Google Maps</a></li><li><a href="http://www.mapquest.com/maps/map.adp?searchtype=address&formtype=latlong&latlongtype=decimal&latitude=48.8666&longitude=9.21427&zoom=10" target="_blank">MapQuest</a></li><li><a href="http://maps.yahoo.com/#lat=48.8666&lon=9.21427&zoom=16&q=48.8666,9.21427&conf=1&start=1&mvt=m&trf=0" target="_blank">Yahoo Maps</a></li><li><a href="http://www.bing.com/maps/default.aspx?v=2&lvl=14&sp=point.48.8666_9.21427_GC366BQ" target="_blank">Bing Maps</a></li><li><a href="http://www.opencyclemap.org/?zoom=12&lat=48.8666&lon=9.21427" target="_blank">OpenCycleMap</a></li><li><a href="http://www.openstreetmap.org/?mlat=48.8666&mlon=9.21427&zoom=12" target="_blank">OpenStreetMap</a></li></span>
</ul>
</span>
- <p class="NoPrint">
- <a href="http://img.geocaching.com/cache/large/1ef1290a-da54-4230-82d4-3783c09d1a3f.jpg" rel="lightbox" class="lnk"><img class="StatusIcon" src="/images/stockholm/16x16/images.gif" alt="Photos" title="Photos" /><span>Erstfinderpokale &quot;Flugplatzrunde Pattonville&quot;</span></a><br /><a href="http://img.geocaching.com/cache/large/6faa4f2a-9e97-4476-8dd1-ed5025bb9e29.jpg" rel="lightbox" class="lnk"><img class="StatusIcon" src="/images/stockholm/16x16/images.gif" alt="Photos" title="Photos" /><span>Erstfinderpokale - Sockelgravur</span></a><br /><a href="http://img.geocaching.com/cache/large/9885f477-bdbf-440e-bea8-21c55138ac82.jpg" rel="lightbox" class="lnk"><img class="StatusIcon" src="/images/stockholm/16x16/images.gif" alt="Photos" title="Photos" /><span>Spoiler - FINAL</span></a><br />
- </p>
+ <ul class="CachePageImages NoPrint">
+ <li><a href="http://img.geocaching.com/cache/large/1ef1290a-da54-4230-82d4-3783c09d1a3f.jpg" rel="lightbox">Erstfinderpokale &quot;Flugplatzrunde Pattonville&quot;</a></li><li><a href="http://img.geocaching.com/cache/large/6faa4f2a-9e97-4476-8dd1-ed5025bb9e29.jpg" rel="lightbox">Erstfinderpokale - Sockelgravur</a></li><li><a href="http://img.geocaching.com/cache/large/9885f477-bdbf-440e-bea8-21c55138ac82.jpg" rel="lightbox">Spoiler - FINAL</a></li>
+ </ul>
<div class="InformationWidget Clear">
<h3>
- 176 Logged Visits</h3>
+ 279 Logged Visits
+ </h3>
<div class="EncryptDecrypt">
<a href="#" class="decrypt-link">
Decrypt
</a>
</div>
- <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/icons/icon_smile.gif" alt="Found it" title="Found it" /> 159&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_note.gif" alt="Write note" title="Write note" /> 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_disabled.gif" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_enabled.gif" alt="Enable Listing" title="Enable Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_greenlight.gif" alt="Publish Listing" title="Publish Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_needsmaint.gif" alt="Needs Maintenance" title="Needs Maintenance" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_maint.gif" alt="Owner Maintenance" title="Owner Maintenance" /> 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
+ <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 254&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/3.png" alt="Didn't find it" title="Didn't find it" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/22.png" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/23.png" alt="Enable Listing" title="Enable Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/45.png" alt="Needs Maintenance" title="Needs Maintenance" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/46.png" alt="Owner Maintenance" title="Owner Maintenance" /> 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
<p class="HalfLeft">
- <a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285">View Logbook</a> | <a id="ctl00_ContentBody_uxGalleryImagesLink" DisplayFormatPlural="View the Image Gallery of {0:#,###} images" DisplayFormatSingular="View the Image Gallery" href="gallery.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285">View the Image Gallery of 9 images</a>
+ <a id="ctl00_ContentBody_uxLogbookLink" href="../seek/cache_logbook.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285">View Logbook</a> | <a id="ctl00_ContentBody_uxGalleryImagesLink" DisplayFormatPlural="View the Image Gallery of {0:#,###} images" DisplayFormatSingular="View the Image Gallery" href="../seek/gallery.aspx?guid=80f57e32-7d59-4f06-8a9b-e8241ba34285">View the Image Gallery of 10 images</a>
</p>
<p class="NoBottomSpacing AlignRight">
<span class="Warning">**Warning!</span> <a href="/about/glossary.aspx#spoiler" title="Spoilers">Spoilers</a> may be included in the descriptions or links.
@@ -1806,767 +1575,130 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
</div>
<p>
<small>
- Current Time: <time datetime="2012-11-16T23:19:35Z">11/16/2012 23:19:35 (UTC-08:00) Pacific Time (US & Canada) (07:19 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-11-10T11:38:56Z">2012-11-10T11:38:56Z</time> on 11/10/2012 03:38:56 (UTC-08:00) Pacific Time (US & Canada) (11:38 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2013-09-15T09:38:03Z">09/15/2013 09:38:03 Pacific Daylight Time (16:38 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-09-09T16:27:10Z">2013-09-09T16:27:10Z</time> on 09/09/2013 09:27:10 Pacific Daylight Time (16:27 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
-
-
- </div>
- <script id="tmpl_CacheLogRow" type="text/x-jquery-tmpl">
- <tr class="log-row" data-encoded="${IsEncoded}" >
- <td>
- <div class="FloatLeft LogDisplayLeft" >
- <p class="logOwnerProfileName">
- <strong><a id="143568283" href="/profile/?guid=${AccountGuid}">${UserName}</a></strong></p>
- <p class="logOwnerBadge">
- <img title="${creator.GroupTitle}" src="${creator.GroupImageUrl}" align="absmiddle" style="vertical-align:middle">${creator.GroupTitle}
- </p>
- <p class="logOwnerAvatar">
- <a href="/profile/?guid=${AccountGuid}">
- {{if includeAvatars && AvatarImage}}
+ <div id="topScroll" class="TopScroll" style="display: none;">
+ <a href="#Top">&nbsp;</a> </div></div><script id="tmpl_CacheLogRow" type="text/x-jquery-tmpl">
+ <tr class="log-row" data-encoded="${IsEncoded}">
+ <td>
+ <div class="FloatLeft LogDisplayLeft">
+ <p class="logOwnerProfileName">
+ <strong><a id="143568283" href="/profile/?guid=${AccountGuid}">${UserName}</a></strong>
+ </p>
+ <p class="logOwnerBadge">
+ <img title="${creator.GroupTitle}" src="${creator.GroupImageUrl}">${creator.GroupTitle}
+ </p>
+ <p class="logOwnerAvatar">
+ <a href="/profile/?guid=${AccountGuid}">{{if includeAvatars && AvatarImage}}
<img width="48" height="48" src="http://img.geocaching.com/user/avatar/${AvatarImage}">
- {{else includeAvatars }}
+ {{else includeAvatars }}
<img width="48" height="48" src="/images/default_avatar.jpg">
- {{/if}}
- </a></p>
- <p class="logOwnerStats">
-
- {{if GeocacheFindCount > 0 }}
- <img title="Caches Found" src="/images/icons/icon_smile.png"> ${GeocacheFindCount}
- {{/if}}
- {{if GeocacheFindCount > 0 && ChallengesCompleted > 0 }}
- &nbsp;·&nbsp;
{{/if}}
- {{if ChallengesCompleted > 0 }}
- <img title="Challenges Completed" src="/images/challenges/types/sm/challenge.png"> ${ChallengesCompleted}
- {{/if}}
- </p>
+ </a>
+ </p>
+ <p class="logOwnerStats">
+ {{if GeocacheFindCount > 0 }}
+ <img title="Caches Found" src="/images/icons/16/found.png">${GeocacheFindCount}
+ {{/if}}
+ </p>
+ </div>
+ <div class="FloatLeft LogDisplayRight">
+ <div class="HalfLeft LogType">
+ <strong>
+ <img title="${LogType}" alt="${LogType}" src="/images/logtypes/${LogTypeImage}">&nbsp;${LogType}</strong>
</div>
- <div class="FloatLeft LogDisplayRight">
- <div class="HalfLeft LogType">
- <strong>
- <img title="${LogType}" alt="${LogType}" src="/images/icons/${LogTypeImage}">&nbsp;${LogType}</strong></div>
- <div class="HalfRight AlignRight">
- <span class="minorDetails LogDate">${Visited}</span></div>
- <div class="Clear LogContent">
- {{if LatLonString.length > 0}}
+ <div class="HalfRight AlignRight">
+ <span class="minorDetails LogDate">${Visited}</span>
+ </div>
+ <div class="Clear LogContent">
+ {{if LatLonString.length > 0}}
<strong>${LatLonString}</strong>
- {{/if}}
+ {{/if}}
<p class="LogText">{{html LogText}}</p>
- {{if Images.length > 0}}
+ {{if Images.length > 0}}
<table cellspacing="0" cellpadding="3" class="LogImagesTable">
- {{tmpl(Images) "tmplCacheLogImages"}}
+ {{tmpl(Images) "tmplCacheLogImages"}}
</table>
- {{/if}}
+ {{/if}}
- <div class="AlignRight">
- <small><a title="View Log" href="log.aspx?LUID=${LogGuid}" target="_blank">
- {{if (userInfo.ID==AccountID)}}
+ <div class="AlignRight">
+ <small><a title="View Log" href="/seek/log.aspx?LUID=${LogGuid}" target="_blank">{{if (userInfo.ID==AccountID)}}
View / Edit Log / Images
{{else}}
View Log
{{/if}}
- </a></small>&nbsp;
+ </a></small>&nbsp;
{{if (userInfo.ID==AccountID)}}
- <small><a title="Upload Image" href="upload.aspx?LID=${LogID}" target="_blank">Upload Image</a></small>
- {{/if}}
- </div>
+ <small><a title="Upload Image" href="/seek/upload.aspx?LID=${LogID}" target="_blank">Upload Image</a></small>
+ {{/if}}
</div>
</div>
- </td>
- </tr>
- </script>
- <script id="tmpl_CacheLogImages" type="text/x-jquery-tmpl">
+ </div>
+ </td>
+ </tr>
+ </script><script id="tmpl_CacheLogImages" type="text/x-jquery-tmpl">
<tr>
<td>
+
<a class="tb_images lnk" rel="tb_images[grp${LogID}]" href="http://img.geocaching.com/cache/log/large/${FileName}" data-title="{{tmpl "tmplCacheLogImagesTitle"}}">
- <img title="Photo" alt="Photo" src="/images/silk/photo.png">
+ <img title="Photo" alt="Photo" src="/images/icons/16/photo.png">
<span>${ $('<div />').text($('<div />').html($item.data.Name).text()).html() }</span>
</a>
</td>
</tr>
+ </script><script id="tmpl_CacheLogImagesTitle" type="text/x-jquery-tmpl">
+ &lt;span class=&quot;LogImgTitle&quot;&gt; ${ $('<div />
+ ').text($('<div />
+ ').text($('<div />
+ ').html($item.data.Name).text()).html()).html() } &nbsp;&lt;/span&gt;&lt;span class=&quot;LogImgLink&quot;&gt;
+
+ &lt;a target=&quot;_blank&quot; href=&quot;/seek/log.aspx?LUID=${$item.parent.parent.data.LogGuid}&IID=${ImageGuid}&quot;>View Log&lt;/a&gt;&nbsp;
+
+ &lt;a href=&quot;http://img.geocaching.com/cache/log/large/${FileName}&quot;>Print Picture&lt;/a&gt;&lt;/span&gt;
+
+ {{if (Descr && Descr.length > 0) }}
+ &lt;br /&gt;&lt;p class=&quot;LogImgDescription&quot;&gt;${ $('<div />
+ ').text($('<div />
+ ').text($('<div />
+ ').html($item.data.Descr).text()).html()).html() }&lt;/p&gt;
+ {{/if}}
+ </script><script id="tmpl_CacheCoordinateUpdate" type="text/x-jquery-tmpl">
+ <div class="ccu-update" data-lat="${ll[0]}" data-lng="${ll[1]}">
+ <h4 class="BottomSpacing">Corrected Coordinates (hidden from others)</h4>
+ <dl>
+ <dt>Original:</dt>
+ <dd>${ll_formatted} <a href="#" class="ccu-restore">Restore</a></dd>
+ </dl>
+ <dl class="ccu-parse">
+ <dt>Change To:</dt>
+ <dd>
+ <input type="text" max="40" size="35" class="cc-parse-text">
+ <button class="ccu-button ccu-parse">Submit</button>
+ </dd>
+ </dl>
+ <dl class="ccu-parseverify" style="display: none;">
+ <dt>Change To:</dt>
+ <dd>
+ <span class="ccu-parseverify-coords">N 32°38.880′, W 097°23.755′</span>
+ </dd>
+ <dt>&nbsp;</dt>
+ <dd>
+ <button class="ccu-button ccu-parseverify-accept">Accept</button>&nbsp;
+ <button class="ccu-button ccu-parseverify-cancel">Cancel</button>
+ </dd>
+ </dl>
+ </div>
</script>
- <script id="tmpl_CacheLogImagesTitle" type="text/x-jquery-tmpl">
- &lt;span class=&quot;LogImgTitle&quot;&gt; ${ $('<div />').text($('<div />').text($('<div />').html($item.data.Name).text()).html()).html() } &nbsp;&lt;/span&gt;&lt;span class=&quot;LogImgLink&quot;&gt;
-
- &lt;a target=&quot;_blank&quot; href=&quot;log.aspx?LUID=${$item.parent.parent.data.LogGuid}&IID=${ImageGuid}&quot;>View Log&lt;/a&gt;&nbsp;
-
- &lt;a href=&quot;http://img.geocaching.com/cache/log/large/${FileName}&quot;>Print Picture&lt;/a&gt;&lt;/span&gt;
- {{if (Descr && Descr.length > 0) }}
- &lt;br /&gt;&lt;p class=&quot;LogImgDescription&quot;&gt;${ $('<div />').text($('<div />').text($('<div />').html($item.data.Descr).text()).html()).html() }&lt;/p&gt;
- {{/if}}
- </script>
- <script id="tmpl_CacheCoordinateUpdate" type="text/x-jquery-tmpl">
- <div class="ccu-update" data-lat="${ll[0]}" data-lng="${ll[1]}">
- <h4 class="BottomSpacing">Corrected Coordinates (hidden from others)</h4>
- <dl>
- <dt>Original:</dt>
- <dd>${ll_formatted} <a href="#" class="ccu-restore">Restore</a></dd>
- </dl>
- <dl class="ccu-parse">
- <dt>Change To:</dt>
- <dd>
- <input type="text" max="40" size="35" class="cc-parse-text">
- <button class="ccu-button ccu-parse">Submit</button>
- </dd>
- </dl>
- <dl class="ccu-parseverify" style="display:none;">
- <dt>Change To:</dt>
- <dd>
- <span class="ccu-parseverify-coords">N 32°38.880′, W 097°23.755′</span>
-
- <button class="ccu-button ccu-parseverify-accept">Accept</button>&nbsp;<button class="ccu-button ccu-parseverify-cancel">Cancel</button>
- </dd>
- </dl>
</div>
- <div class="Clear"></div>
-
- </script>
-
- <script type="text/javascript">
- <!--
- var dh, lat, lng, guid;
-
- dh = 'false';
-
- lat=48.8666; lng=9.214267; guid='80f57e32-7d59-4f06-8a9b-e8241ba34285';
-
-
- function s2gps(guid) {
- var w = window.open('sendtogps.aspx?guid=' + guid, 's2gps', config='width=450,height=450,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no');
- w.focus();
- }
-
- function s2phone(wpid) {
- window.location.href='sendtophone.aspx?gc=' + wpid;
- }
-
- function pl(lc) {
- document.location.href='cache_details_print.aspx?guid=' + guid + '&numlogs=' + lc +'&pt=full&lt=letter&decrypt='+ ((dh)?'y':'n');
- }
- function setNotification(id) {
- //new Effect.Highlight(id, {startcolor:'#ffffff', endcolor:'#ffff99', restorecolor:'#ffff99', duration:3.0, queue:'front'});
- //new Effect.Highlight(id, {startcolor:'#ffff99', endcolor:'#ffffff', restorecolor:'#ffffff', duration:5.0, queue:'end'});
- }
- function cmo(id) {
- //new Effect.Fade(id);
- Cookie.set('sn', true);
- }
- function pp(img) {
- var w = window.open(img);
- w.focus();
- }
-
- //-->
- </script>
- <script language="javascript" type="text/javascript">
- var map, bounds;
- var canUpdateFavoriteStatus = true;
- var decryptLogs = (urlParams["decrypt"] && urlParams["decrypt"] == "y") ? true : false;
- var logInitialLoaded = false;
- var $tfoot = $("#cache_logs_table").find("tfoot");
- var currentPageIdx = 1, totalPages = 1, pageSize = 10;
- var isBusy = false;
-
- var locString = {
- decrypt: 'Decrypt',
- encrypt: 'Encrypt'
- };
-
- $("#tmpl_CacheLogImagesTitle").template("tmplCacheLogImagesTitle");
- $("#tmpl_CacheLogImages").template("tmplCacheLogImages");
- $("#tmpl_CacheLogRow").template("tmplCacheLogRow");
-
- $(".EncryptDecrypt")
- .button({ icons: { secondary: 'ui-icon-arrowreturnthick-1-w'} })
- .click(function (e) {
- e.preventDefault();
- $("tr.log-row").each(function (i, obj) {
- var $obj = $(obj);
- if ($obj.data("encoded") == true) {
- var lt = $obj.find("p.LogText");
- //var ltDecoded = $('<div />').html(lt.html()).text();
- lt.html(convertROTStringWithBrackets(lt.html()));
- }
- });
-
- decryptLogs = !decryptLogs;
-
- $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
-
- return false;
- });
-
- function appendNewLogs(obj) {
-
- totalPages = obj.pageInfo.totalPages;
-
- var $newBody = $(document.createElement("TBODY"));
-
- $("#tmpl_CacheLogRow").tmpl(obj.data,{ includeAvatars: includeAvatars }).appendTo($newBody);
-
- $newBody.find("a.tb_images").each(function()
- {
- var $this = $(this);
- $this.fancybox({
- 'type': 'image',
- 'titlePosition': 'inside',
- 'padding': 10,
- titleFormat: function() { return $this.data('title'); }
- });
- });
-
- $("#cache_logs_table")
- .append($newBody.children());
-
- currentPageIdx = obj.pageInfo.idx + 1;
- pageSize = obj.pageInfo.size;
- }
-
- function callLogLoad(hideFooter) {
- $.getJSON("/seek/geocache.logbook", { tkn: userToken, idx: currentPageIdx, num: pageSize, decrypt: decryptLogs },
- function (response) {
- if (response.status == "success") {
- appendNewLogs(response);
- if( hideFooter || (totalPages < currentPageIdx) ) {
- $tfoot.hide();
- }
- } else if (response.status == "error" && response.value == "1") {
- // reload the page since the data had expired.
- window.location.reload();
- }
- isBusy = false;
- });
- }
-
- $("#add_to_favorites").click(function () {
-
- if (canUpdateFavoriteStatus) {
- canUpdateFavoriteStatus = false;
-
- var fv = parseInt($(".favorite-value").text());
- fv++;
- $(".favorite-value").text(fv);
-
- var fr = parseInt($(".favorite-rank").text());
- fr--;
- $(".favorite-rank").text(fr);
-
- $("#pnlNonfavoriteCache").fadeOut("fast", function () {
- $("#pnlFavoriteCache").fadeIn("fast");
- });
-
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/update?u=' + userToken + '&f=true',
- success: function () {
- canUpdateFavoriteStatus = true;
- gotScore = false;
- showFavoriteScore();
- }
- });
-
- return false;
- }
- });
-
- $("#remove_from_favorites").click(function () {
-
- if (canUpdateFavoriteStatus) {
- canUpdateFavoriteStatus = false;
-
- var fv = parseInt($(".favorite-value").text());
- fv--;
- $(".favorite-value").text(fv);
-
- var fr = parseInt($(".favorite-rank").text());
- fr++;
- $(".favorite-rank").text(fr);
-
- $("#pnlFavoriteCache").fadeOut("fast", function () {
- $("#pnlNonfavoriteCache").fadeIn("fast");
- });
-
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/update?u=' + userToken + '&f=false',
- success: function () {
- canUpdateFavoriteStatus = true;
- gotScore = false;
- showFavoriteScore();
- }
- });
-
- return false;
- }
- });
-
- $(function () {
-
- // CSP Section
- if ($("#cspMessage").length) {
-
- var editLink = $('a[href*="report.aspx"]').attr('href');
-
- $("#cspMessage").prepend('<P>Please take a moment to check the listing and ensure it is ready to enable. Clicking "Submit for Review" will enable your cache page.</P>');
- $("#cspMessage").prepend('<P>Once it is enabled, you will receive a confirmation email that it was successfully submitted. It is peak season for cache placement. Your volunteer reviewer will strive to begin the review process within the next 7 days.</P>');
- $("#cspMessage").prepend('<P>Your cache page has not been reviewed yet. It will not appear in the review queue until you enable it.</P>');
-
- $("#cspGoBack").click(function (e) {
- e.preventDefault();
- window.location = editLink;
- return false;
- });
-
- $("#cspSubmit").click(function (e) {
- e.preventDefault();
- $.pageMethod("EnableCSPCache", JSON.stringify({ dto: { ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.success == true) {
- window.location = '/seek/cache_details.aspx?guid=' + r.guid;
- } else {
- alert("There was an error enabling your cache.");
- }
- });
- return false;
- });
-
- $("#cspConfirm").change(function() {
- if ($("#cspConfirm").is(":checked")) {
- $("#cspSubmit").removeAttr('disabled');
- $("#cspGoBack").attr('disabled', true);
- } else {
- $("#cspSubmit").attr('disabled', true);
- $("#cspGoBack").removeAttr('disabled');
- }
- });
- }
-
-
- //override coords
- if (typeof(userDefinedCoords) != "undefined") {
- if (userDefinedCoords.status == "success" && userDefinedCoords.data.isUserDefined == true) {
- mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
- $("#uxLatLon")
- .data("isOverridden", true)
- .addClass("myLatLon");
- } else if (userDefinedCoords.status == "success") {
- mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
- } else {
- $("#uxLatLonLink").contents().unwrap();
- }
- } else {
- $("#uxLatLonLink").contents().unwrap();
- }
-
-
- var cacheNoteText = {
- DefaultText: 'Click to enter a note',
- ErrorInSaving: 'There was an error saving page. Please refresh the page and try again.',
- SavingText: 'Please wait, saving your note...'
- };
-
-
-
- $("time.timeago").timeago();
-
- $(".button").button();
-
- var sn = Cookie.get('sn');
-
- if ($('#trNotPM').length > 0) {
- $('#trNotPM').toggle(!sn);
- }
-
- $("#cache_note").editInPlace({
- callback: function (unused, enteredText) {
- var me = $(this);
-
- var et = $.trim(enteredText);
- if (et.length > 500)
- et = et.substr(0, 500);
-
- $.pageMethod("SetUserCacheNote", JSON.stringify({ dto: { et: et, ut: userToken} }), function (r) {
- var r = JSON.parse(r.d);
- if (r.success == true) {
- if ($.trim(r.note) == "") {
- $("#cache_note").text(cacheNoteText.DefaultText);
- } else {
- $("#cache_note").text(r.note);
- }
-
- me.effect('highlight', { color: '#ffb84c' }, 'slow');
- } else {
- alert(cacheNoteText.ErrorInSaving);
- $("#cache_note").text(cacheNoteText.DefaultText);
- }
-
- });
-
- return cacheNoteText.SavingText;
- }
- , default_text: cacheNoteText.DefaultText
- , field_type: "textarea"
- , textarea_rows: "7"
- , textarea_cols: "65"
- , show_buttons: true
- , bg_over: "#FDEBBB"
- //, callback_skip_dom_reset: true
-
- });
-
- $("#lnk_slippyMap").click(function(e) {
- e.preventDefault();
- loadDynamicMap();
- return false;
- });
-
- $(".inplace_field").live("focus", function () {
- if ($(this).data("created") == null) {
- $(this).data("created", true)
- $(this).countable({
- maxLength: 500
- });
- }
- });
-
- $("#pcn_help").tipTip({ activation: 'hover', content: 'Enter your own notes here. No other user will be able to access them.' });
-
- $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
-
- if ($("#cache_logs_container").length > 0) {
-
- appendNewLogs(initalLogs);
-
- if (DetectMobileQuick()) {
- $("#pnlButtonLoad")
- .show()
- .find("a.MobileButton")
- .click(function (e) {
- e.preventDefault();
- callLogLoad(false);
- return false;
- })
- .button();
- if(!DetectTierTablet()){
- $("a.MobileButton").addClass("Phone");
- }
- } else {
- $("#pnlLazyLoad").show();
-
- $(window).endlessScroll({
- fireOnce: true,
- fireDelay: 500,
- bottomPixels: ($(document).height() - $("#cache_logs_container").offset().top) + 50,
- ceaseFire: function(){
- // stop the scrolling if the last page is reached.
- return (isLoggedIn == false) || (totalPages < currentPageIdx);
- },
- callback: function() {
- if (!isBusy) {
-
- isBusy = true;
- $tfoot.show();
- callLogLoad(true);
- }
- }
- });
- }
- }
-
- if (!isLoggedIn) {
- $("#cache_logs_table").find("tfoot").hide();
- }
-
- if (mapLatLng != null) {
-
- $("#uxLatLonLink").qtip({
- suppress:false,
- content: buildCacheCoordMenu(),
- position: {
- my: 'left top',
- at: 'right top',
- adjust: {
- x: 10, y: -10
- }
- },
- show: {
- ready: false,
- event: "click",
- solo: true
- }, hide: {
- event: 'unfocus'
- },
- style: {
- tip: {
- corner: false
- },
- classes: 'ui-tooltip-widget'
- },
- events: {
- show: function () {
- if ($("#uxLatLon").data("isOverridden")) {
- $("a.ccu-restore").show();
- } else {
- $("a.ccu-restore").hide();
- }
-
- if (userDefinedCoords.status != "success") {
- $("div.ccu-update").hide();
- } else {
- $("div.ccu-update").show();
- }
- }
- }
- }).click(function (e) {
- e.preventDefault();
- return false;
- });
-
- setStaticMaps();
- //$("#staticMap").lazyload();
- }
- });
-
- function setStaticMaps() {
-
- var map = new L.Map('map_preview_canvas', {
- center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- zoom: 10,
- doubleClickZoom: false,
- dragging: false,
- touchZoom: false,
- scrollWheelZoom: false,
- attributionControl: false
- })
- .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }));
-
-
- var mapLarge = new L.Map('map_canvas', {
- center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- zoom: 14,
- doubleClickZoom: true,
- dragging: true,
- touchZoom: false,
- scrollWheelZoom: false,
- zoomControl: true,
- attributionControl: false
- })
- .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }))
- .addControl(new L.Control.Scale());
-
- var tileOptions = {
- tileUrl: "http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg",
- name: "mpqosm",
- alt: "MapQuest",
- //attribution: "Tiles Courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>, Map and map data © 2012 <a href=\"http://www.openstreetmap.org\" target='_blank'>OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>. ",
- subdomains: "1234",
- tileSize: 256,
- minZoom: 0,
- maxZoom: 18
- };
-
- map.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
- mapLarge.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
-
- var pinIcon = L.Icon.extend({
- iconSize: new L.Point(20, 23),
- iconAnchor: new L.Point(10,23),
- shadowUrl: null
- });
-
- var mkA = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
- title: mapLatLng.name
- })
- .on("click", function () {
- document.getElementById("uxlrgMap").scrollIntoView(true);
- return false;
- });
-
- var mkA2 = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng), {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
- clickable: false, zIndexOffset:99, title: mapLatLng.name
- });
-
- map.addLayer(mkA);
- mapLarge.addLayer(mkA2);
-
- $("#ctl00_ContentBody_uxNotesAboutPrinting").fancybox({
- overlayShow: false
- });
-
-
- if (cmapAdditionalWaypoints != null && cmapAdditionalWaypoints.length > 0) {
- var llBounds = new L.LatLngBounds();
-
- for (var x = 0, len = cmapAdditionalWaypoints.length; x < len; x++) {
- var item = cmapAdditionalWaypoints[x],
- ll = new L.LatLng(item.lat, item.lng),
- marker = new L.Marker(ll, {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + item.type + '.png', iconAnchor: new L.Point(10,23)}),
- title: item.name,
- clickable:false
- });
-
- llBounds.extend(ll);
- mapLarge.addLayer(marker);
- }
- var bz = mapLarge.getBoundsZoom(llBounds);
-
- mapLarge.setView(new L.LatLng(mapLatLng.lat, mapLatLng.lng), bz);
- }
- }
-
-
-
- function dht() {
- try {
- $('#div_hint').html(convertROTStringWithBrackets($('#div_hint').html()));
- var linkText = (($('#ctl00_ContentBody_lnkDH').attr('title') == 'Decrypt') ? 'Encrypt' : 'Decrypt');
- $('#ctl00_ContentBody_lnkDH').text(linkText);
- $('#ctl00_ContentBody_lnkDH').attr('title', linkText);
- } catch (e) {
- alert(e);
- return false;
- }
- return false;
- }
-
- function buildCacheCoordMenu() {
- var curLatLng = new LatLon(mapLatLng.lat, mapLatLng.lng)
- $.template( "tmplCacheCoordinateUpdate_CoordItem", "<tr><td nowrap='nowrap'>${t}</td><td class='ccc-coord' nowrap='nowrap' dataum='${k}'>${v}</td></tr>" );
-
- var $menu = $("<div></div>");
-
- $( "#tmpl_CacheCoordinateUpdate" ).tmpl( {
- ll: [mapLatLng.lat, mapLatLng.lng],
- ll_formatted: mapLatLng.oldLatLngDisplay
- } ).appendTo( $menu );
-
- $menu.find("button.ccu-button").button();
-
- $menu.delegate("button.ccu-parse", "click", function (e) {
- e.preventDefault();
- var $this = $(e.target),
- $parse =$this.closest('dd').find(".cc-parse-text"),
- parseCoords = $.trim($parse.val());
-
- if (parseCoords.length == 0) {
- alert('Please provide valid coordinates.');
- } else {
- $.getJSON("/challenges/location.search", { p: parseCoords }, function (response) {
- if (response.status == "success") {
- var newLatLng = new LatLon(response.data.lat, response.data.lng);
-
- // update the displayed coords
- var dist = curLatLng.rhumbDistanceTo(newLatLng);
- var bearingTo = curLatLng.rhumbBearingTo(newLatLng);
- var bearing = bearingTo >= 0 || bearingTo < 22.5 ? "N" : bearingTo >= 22.5 || bearingTo < 67.5 ? "NE" : bearingTo >= 67.5 || bearingTo < 112.5 ? "E" : bearingTo >= 112.5 || bearingTo < 157.5 ? "SE" : bearingTo >= 157.5 || bearingTo < 202.5 ? "S" : bearingTo >= 202.5 || bearingTo < 247.5 ? "SW" : bearingTo >= 247.5 || bearingTo < 292.5 ? "W" : bearingTo >= 292.5 || bearingTo < 337.5 ? "NW" : "N";
-
- var formats = response.data.formats;
- // all these finds, make me feel dirty
- $menu
- .find("span.ccu-parseverify-coords").text(formats.DM).end()
- .find("dl.ccu-parse").hide().end()
- .find("dl.ccu-parseverify").show().end()
- .find("button.ccu-parseverify-accept")
- .data("utm", formats.UTM)
- .data("dm", formats.DM)
- .data("lat", response.data.lat)
- .data("lng", response.data.lng)
- .end();
- } else {
- alert("Sorry unable to parse the coordinates you entered.");
- }
- });
- }
-
- return false;
- });
-
- $menu.delegate("button.ccu-parseverify-accept", "click", function (e) {
- e.preventDefault();
- var $this = $(this);
- // update to webmethod
- $.pageMethod("SetUserCoordinate", JSON.stringify({ dto: { data: {lat: $this.data("lat"), lng: $this.data("lng") }, ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.status == "success") {
- window.location.reload();
- } else {
- $("#uxLatLonLink").qtip('hide');
- }
-
- });
-
- return false;
- });
-
- $menu.delegate("button.ccu-parseverify-cancel", "click", function (e) {
- e.preventDefault();
- $menu
- .find("input.cc-parse-text").val('').end()
- .find("dl.ccu-parse").show().end()
- .find("dl.ccu-parseverify").hide().end();
- return false;
- });
-
- $menu.delegate("a.ccu-restore", "click", function (e) {
- e.preventDefault();
-
- $.pageMethod("ResetUserCoordinate", JSON.stringify({ dto: { ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.status == "success") {
- window.location.reload();
- }
- });
-
- return false;
- });
-
- return $menu;
- }
-
- GSPK = window.GSPK || {};
- GSPK.Selector = {};
- GSPK.Selector.getSelected = function(){
- var t = null;
- if ( window.getSelection ){
- t = window.getSelection();
- }else if(document.getSelection){
- t = document.getSelection();
- }else if(document.selection){
- t = document.selection.createRange().text;
- }
- return t;
- }
-
- try { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); } catch(err) { }
- </script>
-
-
-
- </div>
-
-
-
</div>
-
-
</section>
-
<footer>
-
<div class="container">
-
<div class="span-24 last FooterTop">
-
<div class="LocaleText">
@@ -2592,27 +1724,35 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<li><a id="ctl00_uxLocaleList_uxLocaleList_ctl04_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl04$uxLocaleItem&#39;,&#39;&#39;)">Čeština</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Dansk</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Ελληνικά</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Latviešu</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl16_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl16$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl17_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl17$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl18_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl18$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl19_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl19$uxLocaleItem&#39;,&#39;&#39;)">日本語</a></li>
</ul>
@@ -2639,14 +1779,14 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
});
});
</script>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ </div>
+ <div class="container column-container">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- About</strong></p>
+ About</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterGlossary" title="Glossary of Terms" href="../about/glossary.aspx">Glossary of Terms</a></li>
@@ -2655,18 +1795,14 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<li>
<a id="ctl00_hlFooterAbout" title="About Groundspeak" href="../about/groundspeak.aspx">About Groundspeak</a></li>
<li>
- <a id="ctl00_hlFooterVolunteers" title="About Our Volunteers" href="../volunteers/">About Our Volunteers</a></li>
- <li>
<a id="ctl00_hlFooterHistory" title="History" href="../about/history.aspx">History</a></li>
</ul>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Press</strong></p>
+ Press</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterNews" title="News Articles" href="../press/">News Articles</a></li>
@@ -2674,15 +1810,15 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<a id="ctl00_hlFooterMediaFAQs" title="Media FAQs" rel="document" href="../articles/Brochures/footer/FAQ_Media.pdf">Media FAQs</a></li>
<li>
<a id="ctl00_hlFooterMediaInquiries" title="Media Inquiries" rel="external" href="http://support.groundspeak.com/index.php?pg=request&amp;xCategory=11">Media Inquiries</a></li>
+ <li>
+ <a id="ctl00_hlFooterLogo" accesskey="l" title="Logo Usage Guidelines" href="../about/logousage.aspx">Logo Usage Guidelines</a></li>
</ul>
-
</div>
-
- <div class="span-5">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Questions & Suggestions</strong></p>
+ Questions & Suggestions</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterHelpCenterLink" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
@@ -2693,14 +1829,12 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<li>
<a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/">Contact Us</a></li>
</ul>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Resources</strong></p>
+ Resources</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/">Tools and Downloads</a></li>
@@ -2709,62 +1843,57 @@ Bleistift, Spitzer, Logbuch, Entfeuchtertütchen (diese Gegenstände bitte nicht
<li>
<a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/">Find a Benchmark</a></li>
</ul>
-
</div>
- <div class="span-4 append-3 last">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Follow Us</strong></p>
- <ul class="FooterLinks FollowUsLinks">
- <li><a id="ctl00_hlFacebook" title="Facebook" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts"><img id="ctl00_imgFacebook" title="Facebook" src="../images/home/icon_facebook.png" alt="Facebook" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlTwitter" title="Twitter" href="http://twitter.com/GoGeocaching"><img id="ctl00_imgTwitter" title="Twitter" src="../images/twitter/twitter_icon_white_22.png" alt="Twitter" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlFlickr" title=" Flickr" href="http://www.flickr.com/photos/geocaching_com/"><img id="ctl00_imgFlickr" title="Flickr" src="../images/home/icon_flickr.png" alt="Flickr" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlYouTube" title="YouTube" href="http://www.youtube.com/user/GoGeocaching"><img id="ctl00_imgYouTube" title="YouTube" src="../images/home/icon_youtube.png" alt="YouTube" style="border-width:0px;" /></a></li>
- </ul>
-
+ Follow Us</strong>
+ </p>
+ <ul class="FooterLinks FollowUsLinks">
+ <li>
+ <a id="ctl00_hlFacebook" title="Facebook" href="http://www.facebook.com/geocaching"></a></li>
+ <li>
+ <a id="ctl00_hlYouTube" title="YouTube" href="http://www.youtube.com/user/GoGeocaching"></a></li>
+ <li>
+ <a id="ctl00_hlInstagram" title="Instagram" href="http://instagram.com/gogeocaching/"></a></li>
+ <li>
+ <a id="ctl00_hlTwitter" title="Twitter" href="http://twitter.com/GoGeocaching"></a></li>
+ </ul>
</div>
-
- <p class="span-24 last FooterBottom">
+ </div>
+ <div class="FooterBottom">
+ <div class="container">
+ <p>
Copyright
- &copy; 2000-2012
+ &copy; 2000-2013
<a href="http://www.groundspeak.com/" title="Groundspeak, Inc." accesskey="g">Groundspeak, Inc.</a>
- All Rights Reserved.<br />
+ All Rights Reserved.
<a id="ctl00_hlFooterTerms" accesskey="u" title="Groundspeak Terms of Use" href="../about/termsofuse.aspx">Groundspeak Terms of Use</a>
|
<a id="ctl00_hlFooterPrivacy" accesskey="x" title="Privacy Policy" href="../about/privacypolicy.aspx">Privacy Policy</a>
- |
- <a id="ctl00_hlFooterLogo" accesskey="l" title="Geocaching Logo Usage Guidelines" href="../about/logousage.aspx">Geocaching Logo Usage Guidelines</a>
- |
- <a id="ctl00_hlFooterAPI" accesskey="`" title="API License Agreement" href="../live/api_license_agreement.aspx">API License Agreement</a>
- |
- <a id="ctl00_HlFooterStatus" accesskey="`" title="Current Service Status" href="http://status.geocaching.com">Service Status</a></p>
-
+ </p>
+
+ </div>
</div>
-
-
</footer>
<div class="SkipLinks">
-
<a id="ctl00_hlSkipLinksTop" accesskey="t" title="Return to the Top of the Page" href="#Top">Return to the Top of the Page</a>
-
</div>
-
-
<script type="text/javascript">
//<![CDATA[
-var uvtoken = 'PsDnbhUAfZpYJ%2fVuS%2fA9U54ejcA9wXNPAxTP1Ko197xlyETGZCA7gbO9VXK21qNg7lQ3ibk684aNVDy6A1BKOznJvytDG3iOWCzC0Ueay9fmMUis2ac8vJqfwVmDCjVc9lF7AbHZ6%2bPPGL58f33WnCU0D5VGdNFgK82UgQPqYdJ6quW%2fp7BBocXP%2fMyVwanGN2M5TrvSY9Ztw8CKpL5gMB5vsV1ujvG2cuNsErPRGdExLdlr5Zo%2f%2fwxOc4tLTt1kJozREnXhEYkVkGHzSathVlSLt%2bxg5cLhxKAEdecASFWILIg2aEIAe3mbYKdK2UV8opt5W3rblGu10sfbpWSNOJufcLK5HLswwLMdFE%2fNip8WX7LCqxsui%2fNVAENBic4FsvGcGGCvTKLQsUe6EceIb0gtszSQC3uKJSdpMHHlhDlpyBv0HZ9yy76LJ%2bi%2bNe58';var isLoggedIn = true;
+$(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); });var isLoggedIn = true;
var userDefinedCoords = {"status":"success","data":{"isUserDefined":false,"oldLatLngDisplay":"N 48° 51.996' E 009° 12.856'"}};
cmapAdditionalWaypoints = [{"lat":48.8666,"lng":9.21427,"type":218,"name":"GC366BQ Stage 1 ( Question to Answer )","pf":"01"},{"lat":48.85903,"lng":9.22875,"type":452,"name":"GC366BQ Stage 7 ( Reference Point )","pf":"07"},{"lat":48.86387,"lng":9.21827,"type":452,"name":"GC366BQ Stage 9 ( Reference Point )","pf":"09"},{"lat":48.86503,"lng":9.21317,"type":452,"name":"GC366BQ Stage 11 ( Reference Point )","pf":"11"},{"lat":48.86677,"lng":9.21415,"type":217,"name":"GC366BQ Parking ( Parking Area )","pf":"PK"}];
mapLatLng = {"lat":48.8666,"lng":9.21427,"type":3,"name":"Flugplatzrunde Pattonville (Kinder-Multi)"};
var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"48.866600, 009.214267"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 48° 51' 59.760\" E 009° 12' 51.361\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"32U E 515713 N 5412648"}];
-userInfo = {ID: 3409138};
-userToken = 'ID5R2NBJDBPQYVKRP2QCKFMGOD72N345U34TRF3HIUOES7I3DEYZLGMWQENANSEL75TH743VWQXA4PRVBZVB2UFIVLT5HYFG73BJY737PC6AVOROLQCJBHWZ5WOPA4ZCUMZSO7RLBORYFW5XH4FZERAO4GV6P6EU7MMIJWXTN33BEMZLYTV4ZB7XCFRTTRJ2IKGMZENCU7L32T6P65OKOAAOTTQH57IP7CJCXGZG2DSLXFFLSRVA';
+var dh=false;userInfo = {ID: 3409138};
+userToken = 'ID5R2NBJDBPQYVKRP2QCKFMGOD72N345U34TRF3HIUOES7I3DEYZLGMWQENANSEL75TH743VWQXA4PRVBZVB2UFIVLT5HYFG73BJY737PC6AVOROLQCJBHWZ5WOPA4ZCUMZSO7RLBORYFW5XH4FZERAO4GV6P6EU7MMIJWXTN33BEMZLYTV4ZB7XCFRTTRJ2IKGMZENCU7L32M5R5PLABB6NBEQYRHPM6Y77MGH44DJUOGHGMLSQ';
includeAvatars = false;
-initalLogs = {"status":"success", "data": [{"LogID":278578940,"CacheID":2544319,"LogGuid":"e3fa23e7-67cc-4f6a-a77c-3bf4d6d49837","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Bei relativ schlechtem Wetter habe ich heute die Flugplatzrunde absolviert. Alle Döschen sowie alle Stages des Multis konnten gut gefunden werden. Vielen Dank für's Verstecken!<br /><br />#976# gefunden am 10.11.2012 um 11:20 Uhr","Created":"2012-11-10","Visited":"2012-11-10","UserName":"Robbe87","MembershipLevel":3,"AccountID":4982926,"AccountGuid":"a1e3cb58-9914-4d37-9dc7-14ac680a7a14","Email":"","AvatarImage":"d3be686e-36c6-4825-a2f2-a9eb1e9d3893.gif","GeocacheFindCount":977,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":277948978,"CacheID":2544319,"LogGuid":"dd182ed8-4123-44ce-a3e3-3cda36bbceaf","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zusammen mit wurzelsebb, die leider keine Premium Member sind, die schöne Runde absolviert.<br />Alle Stages waren gut zu finden und schön anzusehen.<br /><br />Vielen Dank, Grüsse und einen Favorite Point!<br />MiMaCo","Created":"2012-11-05","Visited":"2012-11-03","UserName":"MiMaCo","MembershipLevel":3,"AccountID":5223358,"AccountGuid":"892d8f43-21a1-4d4b-8def-5a2537c4076e","Email":"","AvatarImage":"6069a595-fbfd-42d9-9816-bd5c82b99aec.jpg","GeocacheFindCount":744,"GeocacheHideCount":16,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":277082136,"CacheID":2544319,"LogGuid":"0e387b79-5c16-4bf9-b5bb-608688152a35","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute bei schönem Herbstwetter diese liebevolle Kinderrunde mit Hilfe unseres Patenkindes absolviert. <br /><br />TFTC","Created":"2012-11-02","Visited":"2012-11-02","UserName":"lachi1812","MembershipLevel":3,"AccountID":2362449,"AccountGuid":"65c618b6-8ccb-425f-9169-9c1ff3aaa874","Email":"","AvatarImage":"e0145d7a-7d25-4887-9744-cb09a30d8ef1.jpg","GeocacheFindCount":285,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":276972107,"CacheID":2544319,"LogGuid":"2310bf84-896f-4741-8ac6-293fbc013299","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nett gemachte Runde, der wir uns heute gewidmet haben.<br />Waren zwar einmal nicht ganz auf dem richtigen Weg, was allerdings nicht schlimm war.<br />Die Stationen konnten schnell gelöst werden und stellten kein Problem dar.<br />Danke für die nette Runde.","Created":"2012-11-01","Visited":"2012-11-01","UserName":"Doppelgänger007","MembershipLevel":3,"AccountID":4629694,"AccountGuid":"f539ff81-4d32-484c-b1d7-c4311eb50fa2","Email":"","AvatarImage":"e2c5e7f3-c879-4b43-b570-27b43f24444d.jpg","GeocacheFindCount":722,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":273055260,"CacheID":2544319,"LogGuid":"80404c8e-f21a-48d2-bfb3-ff29bf41ae15","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Sehr schöne Runde heute mit den Kindern gemacht. Alles super gefunden bei super Verstecken! Hat den 2- und 4-Beinern, den Großen und den Kleinen richtig Spaß gemacht.<br />Vielen Dank für die Mühe!<br />Doc-Balu!","Created":"2012-10-14","Visited":"2012-10-14","UserName":"Doc-Balu","MembershipLevel":3,"AccountID":5511781,"AccountGuid":"b64e85b4-6cf3-4269-a9bb-4064a53dcff8","Email":"","AvatarImage":"d570c2e6-c4f6-465f-8992-6caab41c527f.jpg","GeocacheFindCount":57,"GeocacheHideCount":0,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":272935708,"CacheID":2544319,"LogGuid":"238ac69d-c481-4576-bdb5-0313cf0381d9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"icon_note.gif","LogText":"Diese tolle Runde haben wir heute mit Kind+Hund angefangen, haben aber nach der Hälfte wegen einsetzendem Regen abgebrochen. Den Multi geniessen wir bei schönem Wetter fertig. Bis bald...","Created":"2012-10-14","Visited":"2012-10-14","UserName":"drubesiv","MembershipLevel":3,"AccountID":2839015,"AccountGuid":"d781e608-62de-4d7a-9169-6ad054389842","Email":"","AvatarImage":"47048a25-2e73-413d-a66e-96028faafecf.jpg","GeocacheFindCount":889,"GeocacheHideCount":3,"ChallengesCompleted":9,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":271141288,"CacheID":2544319,"LogGuid":"22cadf9d-a741-4852-b43a-9e695b038536","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Diese schöne Runde im Familienverband abgesucht. Alle konnte gut gefunden werden. TFTC","Created":"2012-10-06","Visited":"2012-10-03","UserName":"HeRon02","MembershipLevel":1,"AccountID":5015772,"AccountGuid":"c951531c-c289-433a-8679-2ba50c8e1713","Email":"","AvatarImage":"","GeocacheFindCount":92,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":270653211,"CacheID":2544319,"LogGuid":"8e644b62-f04f-4ad5-b48d-6c443dd0d371","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Eine schöne Runde bei schönem Wetter. Mit zwei Familien los gezogen um die Dosen zu finden, welche sich auch nicht lange verstecken konnten. <br />Es gab nur einmal kurz Verwirrung, da das mit dem Peilen der Strommasten nicht ganz logisch war. Mit einem ermittelten Wert ging es dann jedoch ohne Probleme weiter.<br />Danke für die Runde.","Created":"2012-10-03","Visited":"2012-10-03","UserName":"LEVARO","MembershipLevel":3,"AccountID":3030082,"AccountGuid":"154f6696-3510-4fb7-86a5-63d0dd2de083","Email":"","AvatarImage":"48e62ae5-5949-491a-afe2-fd6f446ce555.jpg","GeocacheFindCount":858,"GeocacheHideCount":6,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":270534520,"CacheID":2544319,"LogGuid":"fab81f66-9c9f-4476-bf7a-9df07a58e81c","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ein würdiger 100er. Zusammen mit Frau und Kind das schone Wetter genossen und uns auf die tolle Runde gemacht. Alle Stages waren gut zu finden und in gutem Zustand. Laura, Mandy und daku23 sagen DFDC.","Created":"2012-10-03","Visited":"2012-10-03","UserName":"daku23","MembershipLevel":3,"AccountID":4085575,"AccountGuid":"7adf217f-18f4-48a8-823b-93a4d6dae15c","Email":"","AvatarImage":"","GeocacheFindCount":105,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":269708307,"CacheID":2544319,"LogGuid":"cf51504c-5e04-4a7e-8625-e1ac9c5a11fc","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute zusammen mit mamb1996 und stemmi1 <br />diese Runde gemacht.<br />War echt schön.<br />Danke","Created":"2012-09-30","Visited":"2012-09-30","UserName":"jule0312","MembershipLevel":1,"AccountID":2937811,"AccountGuid":"390ab1f5-f9a0-49be-bf23-704a37cf6886","Email":"","AvatarImage":"","GeocacheFindCount":141,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":269699217,"CacheID":2544319,"LogGuid":"1f0f88bc-a6c6-434a-9068-4360399275f7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Auf der heutigen Flugplatzrunde Pattonville zusammen <br />mit Jule0312 und stemmi1 gesucht und gefunden.<br />Für Kids eine echt schöne Abwechslung.<br />Zusammen mit den Tradis haben die 4,7km echt Spass gemacht.<br />TFTC<br /><br />Dafür gibts nen FP und einen Eintrag in meiner bookmark -Liste","Created":"2012-09-30","Visited":"2012-09-30","UserName":"mamb1996","MembershipLevel":3,"AccountID":2807601,"AccountGuid":"8c8449ad-e7fb-4a62-ae6f-97d4d9a5cbe5","Email":"","AvatarImage":"2db34acf-9093-4473-93a5-5c82fd30823a.jpg","GeocacheFindCount":1249,"GeocacheHideCount":11,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":269689517,"CacheID":2544319,"LogGuid":"7fb0f3a1-d116-4a3b-914e-44e824c5b089","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"heute haben mamb1996, jule0312 und ich die kinder-runde bei schönstem wetter absolviert. dank der vielen tauschgegenstände war der spaziergang auch für den nachwuchs kurzweilig und nicht langweilig. mir persönlich hat die gegend, die schön gestalteten verstecke und die aufteilung (multi + tradis) auch gut gefallen.<br />T4TC","Created":"2012-09-30","Visited":"2012-09-30","UserName":"stemmi1","MembershipLevel":3,"AccountID":3958790,"AccountGuid":"956c7e23-b568-42d2-8121-ba1017694b42","Email":"","AvatarImage":"8db774e8-4ec2-4463-9cbf-4e625bd2ee3f.jpg","GeocacheFindCount":754,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":270097269,"CacheID":2544319,"LogGuid":"5ea5826b-4d86-4dd6-b45f-ef76db0f9798","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Prima Runde auch für die \"Großen\". So habe ich doch noch was von Kornwestheim entdeckt was ich noch nicht kannte obwohl ich seit 1978 hier wohne. Alle schön gestalteten Verstecke einschließlich des Finals konnten gut gefunden werden. Danke, das ist ein FP wert.","Created":"2012-10-01","Visited":"2012-09-29","UserName":"Guckerle","MembershipLevel":3,"AccountID":5501067,"AccountGuid":"a33b7782-434b-4d37-be04-adfd022afbf0","Email":"","AvatarImage":"4d7fa22e-7e0c-4c4c-a9aa-6da5d66f44a4.jpg","GeocacheFindCount":588,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":269336051,"CacheID":2544319,"LogGuid":"b164ad40-8b6c-4ef4-9279-87b4b44895a9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute sind wir endlich mal diese Runde in unserer Homezone angegangen, zwar ohne Kinder, aber wir haben wo es ging Kleinigkeiten für Kids deponiert. Die Runde hat uns sehr gut gefallen und obwohl ich jetzt schon ein paar Jahre hier wohne führte sie uns an Orte, die mir noch unbekannt waren. Alle Stages und das Final waren gut zu finden. Vielen Dank für's Zeigen.<br /><br />Out: TB Collienchen <br />In: TB Mouse and Teddy und FavPoint","Created":"2012-09-29","Visited":"2012-09-29","UserName":"Findewolf","MembershipLevel":3,"AccountID":5263956,"AccountGuid":"21be64e2-c8cf-4970-99a9-105fc29cb9d7","Email":"","AvatarImage":"e4816c1d-13a1-4d03-9c3a-7173c5b9888b.jpg","GeocacheFindCount":852,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":268172491,"CacheID":2544319,"LogGuid":"dd654392-14f5-40f4-b858-20f916f08191","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Danke für diese tolle Runde, für die phantasievollen Verstecke der Tradis und die schöne wegführung.Da heute nebenan auch noch Fliegerfest war und wir die tollen Kunststücke der Piloten hautnah erleben durften, war das I-Tüpfelchen.......<br />In:TB<br />und einen Fav lass ich auch noch da....","Created":"2012-09-23","Visited":"2012-09-23","UserName":"georicardo","MembershipLevel":3,"AccountID":5345373,"AccountGuid":"d0201536-c8a2-4dec-9ce5-c57eea4a1425","Email":"","AvatarImage":"ba8e0a9d-dec6-4fc7-b75b-af76729838f8.jpg","GeocacheFindCount":686,"GeocacheHideCount":0,"ChallengesCompleted":29,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":266811490,"CacheID":2544319,"LogGuid":"5fb358c6-0a0f-40a7-87ac-58e6d7347d07","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Tolle Runde um den Freizeitpark Kornwestheim mit angrenzendem Flugplatz (EDTQ).<br />Besonders anzumerken sind hier die schön gemachten Verstecke der Tradis, die zu 100% in sich stimmige Wegführung mit Ref.-Punkten und das traumhafte Kaninchenparadies. Alles in allem ein schöner, sehr zu empfehlender Kindercache. <br />Deshalb gibt's hier 'nen dicken Fav.-Pkt. <br />Danke für die angenehme und entspannende Feierabendrunde bei herrlichem Cacherwetter.","Created":"2012-09-17","Visited":"2012-09-17","UserName":"tovimi","MembershipLevel":3,"AccountID":2524458,"AccountGuid":"2487c0dd-2cb9-4ac4-8548-300cfa3f5981","Email":"","AvatarImage":"4f61b64c-08a7-4e62-a4fd-1bef444f24b1.jpg","GeocacheFindCount":527,"GeocacheHideCount":0,"ChallengesCompleted":11,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":266491040,"CacheID":2544319,"LogGuid":"184e0ac7-6916-45aa-ae00-d6ec8b4daaba","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ist das eine schöne Ecke! Da tobt ja das Bio in so einem Biotop. Ganz viele Karnickel haben wir gesehnen. Und Eichhörnchen. Und große Rindviecher. UNd das war echt eine schöne Runde. Vielen Dank dafür.","Created":"2012-09-16","Visited":"2012-09-15","UserName":"Schlawienerin","MembershipLevel":3,"AccountID":2058487,"AccountGuid":"eee63a73-3a39-41c4-ba0d-ac54773d74ce","Email":"","AvatarImage":"","GeocacheFindCount":662,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":266205994,"CacheID":2544319,"LogGuid":"dc50ff6f-f1a3-4753-814b-9a1eacf33e74","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Eine schöner Samstag Mittag Spaziergang. Wir haben diese Ecke noch nicht gekannt. Das ist ja das reinste Häschenparadies.<br /><br />Vielen Dank für diesen wunderbar ausgearbeiteten Cache.","Created":"2012-09-15","Visited":"2012-09-15","UserName":"42_Die_Antwort","MembershipLevel":3,"AccountID":1033778,"AccountGuid":"8a47b24a-8288-4301-b8d1-c2695a7d8d0d","Email":"","AvatarImage":"75c9f279-4268-47e7-ab1b-72358cfe657e.jpg","GeocacheFindCount":955,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":264569502,"CacheID":2544319,"LogGuid":"fb41993d-d072-4573-9c53-c9e89251de53","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Owner Maintenance","LogTypeImage":"icon_maint.gif","LogText":"<img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> STAGE 3 WIEDER AKTIV <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br />Da die Flugplatzvergrößerung nun abgeschlossen ist und dadurch die Baustelle der Vergangenheit angehört, konnten wir endlich die Stage 3 wieder aktivieren. Jedoch musste die Stage 3 verlegt werden (die ersten ca. 20 Meter Zaun existieren nicht mehr). Daduch hat sich auch die Anzahl der Zaunpfosten verkleinert. Entsprechend haben wir die Koords und die betroffenen Formeln angepasst. Jetzt stimmt wieder alles.<br /><br />Die Flugplatzrunde ist wieder komplett und regulär begehbar. Viel Spaß weiterhin wünschen die \"Four Ernies\"","Created":"2012-09-09","Visited":"2012-09-09","UserName":"Four Ernies","MembershipLevel":3,"AccountID":3777316,"AccountGuid":"ddf0b84d-5f1a-4ed9-90f9-a3b8e02ddacf","Email":"","AvatarImage":"b9c9281d-cc76-4aa5-8075-9630bd992823.jpg","GeocacheFindCount":708,"GeocacheHideCount":8,"ChallengesCompleted":10,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":262810378,"CacheID":2544319,"LogGuid":"9edca6bb-9706-4114-a051-846abce1e6ae","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schöne runde, alles gut gefunden. Tftc","Created":"2012-09-02","Visited":"2012-09-02","UserName":"Chridl","MembershipLevel":1,"AccountID":3227042,"AccountGuid":"16a5b374-e564-4820-a46a-939233dd0c05","Email":"","AvatarImage":"","GeocacheFindCount":63,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":262890902,"CacheID":2544319,"LogGuid":"b1838340-1abb-4f72-8f73-eef238d9ab7c","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zusammen mit Yaska und Dosensuchhund Jolanda angegangen. Viel kam uns bekannt vor (klar :-)) aber es war eine nette Runde. Nur für Jolanda war es nicht so nett - die hatte sich ihr ganzes Fell mit Kletten verunstaltet ...<br /><br />Dennoch: TFTC<br />sagt TTil","Created":"2012-09-02","Visited":"2012-08-31","UserName":"TTil","MembershipLevel":3,"AccountID":2253710,"AccountGuid":"98006f04-029f-4315-bc82-34a119ec7923","Email":"","AvatarImage":"4bb3e17a-6fa3-4277-90cd-a4c57daa0ee3.jpg","GeocacheFindCount":481,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":262387427,"CacheID":2544319,"LogGuid":"d5c4cac6-70f8-4573-b340-ea7f105ef0d0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"# 591<br /><br />Mit dieser Runde haben wir unser dieswöchiges Wochenende eingeleitet. Leider wurde es doch schneller/früher dunkel als von uns geplant, so das die letzten Stationen und das Finale erst bei zunehmender Dämmerung erreicht wurden. Eine schöne Runde die uns viel Spaß gemacht hat, allerdings war Jolanda nachher so verklettet, das wir sie 1/2 Std. lang \"befreien\" mussten.","Created":"2012-09-01","Visited":"2012-08-31","UserName":"Yaska","MembershipLevel":3,"AccountID":2227283,"AccountGuid":"8970076a-e4a7-40a5-a86d-59fecb7cfe78","Email":"","AvatarImage":"bfdb7a1b-1abd-4f78-b235-76a7b86f1dd2.jpg","GeocacheFindCount":660,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":260936014,"CacheID":2544319,"LogGuid":"3cfaf464-1327-4515-8862-e666ecaed41f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nachdem auf der Runde gestern gemeinsam mit einem befreundetem Pärchen und deren Sohn ein paar Stationen vergessen wurden (im Reden einfach vorbeigelaufen...), wurde dies heute nachgeholt. Gezielt an die Stellen, die gefehlt haben und die fehlenden Informationen ermittelt. Das Wetter war nicht ganz so heiß wie gestern und glücklicherweise trocken. Es war wieder wenig los und ich konnte den Park in Ruhe genießen.<br />Nachdem alle Informationen zusammen waren die Final-Lokation ermittelt und weiter ging es. Ein tolles Plätzchen hier - in aller Ruhe geschützt geloggt (nur ein Baum hat ab und zu verdächtig geknarzt).<br /><br />TFTC<br />Tanarnox","Created":"2012-08-26","Visited":"2012-08-26","UserName":"Tanarnox","MembershipLevel":3,"AccountID":2948923,"AccountGuid":"58aff1d5-38de-4b02-a7a3-d052def7ea45","Email":"","AvatarImage":"99c958b6-fb13-48d2-bf9b-e117a8c20f66.jpg","GeocacheFindCount":1122,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":265460542,"CacheID":2544319,"LogGuid":"d3fee23a-0371-4087-8b6f-bfcdb9e88251","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Mit den Fahrräder ging es heute mal in Richtung Ludwigsburg, ein langer <br />aber schöner Tag lag vor uns. Auch an dieser Tour hatten wir alle unseren <br />Spaß.<br /><br />Danke und Gruß.","Created":"2012-09-12","Visited":"2012-08-05","UserName":"apfelbaum01","MembershipLevel":3,"AccountID":1671985,"AccountGuid":"4eac04f0-3544-4093-8974-c790fac3a62e","Email":"","AvatarImage":"cd8083c2-8a24-4d02-bd5c-14437f8a2cce.jpg","GeocacheFindCount":11816,"GeocacheHideCount":69,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":255988222,"CacheID":2544319,"LogGuid":"b3bfe92c-fa86-4499-9db5-02f9a6391de6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"<b><font color=\"green\">#15547</font></b><br /><br />Das war wohl so etwas wie ein echter Arbeitstag. <br />Mitten in der Nacht (gefühlt) gings los, ab aufs (ungewohnte) Bike und radeln was das Zeug hält. Zusammen mit Dangerfreaks und dem Apfelbäumchen gings auf Casi-Wherigo-Tour in Richtung Poppenweiler (heißt das wirklich so?) und Umgebung. Die Mädels hatten da eine Challenge im Blick und so musste der männliche Teil der 4_Schwoba auf dem Fahrrad leiden. Die Frauen auf ihren Bescheisser-E-Bikes locker vorneweg und der Dicke schnaufte hinterher ;-)))<br /><br />Gegen später folgte der restliche Teil der Familie und so konnte der Tag gegen später noch beim 'gemütlichen' Gruppencachen ausklingen.<br /><br />Herzlichen Dank an all die Owner für ihre superschönen Caches und die umgesetzten Ideen.<br /><br />TFTC und viele Grüße<br />Die_4_Schwoba","Created":"2012-08-09","Visited":"2012-08-05","UserName":"Die_4_Schwoba","MembershipLevel":3,"AccountID":1094399,"AccountGuid":"88657165-e3ae-4f37-9bd5-e36f1b0e7ed5","Email":"","AvatarImage":"39387791-2d3a-4f2b-a729-0751d355eac5.jpg","GeocacheFindCount":16070,"GeocacheHideCount":204,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 176, "rows": 176 } };
-//]]>
+var lat=48.8666, lng=9.214267, guid='80f57e32-7d59-4f06-8a9b-e8241ba34285';
+initalLogs = {"status":"success", "data": [{"LogID":348914993,"CacheID":2544319,"LogGuid":"72047e28-d440-46b2-a3d4-a72c015d8400","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Die Gegend ist mir gut bekannt, gehe ja oft mit den Hunden dort spazieren.<br /><br />Was ich nicht wusste, dass hier so ein schöner Multi gelegt wurde. Diese Runde macht nicht nur Kindern Spaß sondern auch Erwachsenen.<br /><br />Vielen Dank an die Four Ernies für die schönen Stunden rund um den Kornwestheimer Flugplatz.<br /><br />Krümelmonster01","Created":"2013-09-09","Visited":"2013-09-09","UserName":"krümelmonster01","MembershipLevel":3,"AccountID":7301702,"AccountGuid":"e513b047-0391-464d-a43a-33aec2cef877","Email":"","AvatarImage":"ae270ba8-94e2-48ad-8038-74045fd9bf0a.jpg","GeocacheFindCount":231,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":348081429,"CacheID":2544319,"LogGuid":"30fa7e5c-6be4-415e-ad0e-8c8f122528fa","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Eine wirklich schöne Runde <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />, alle Dosen - auch die zugehörigen Tradis - sind in Top-Zustand, überall ist genug zum Tauschen drin, wirklich toll! Außerdem wußte ich überhaupt noch nicht, dass es hier so eine Wildnis gibt <img src=\"/images/icons/icon_smile_shock.gif\" border=\"0\" align=\"middle\" /><br />Von der Atmosphäre mit den startenden und landenden Fliegern mal ganz abgesehen \t<img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br /><br />Aber: Nachdem ich mir meine Beine jetzt angeschaut habe empfehle ich DRINGEND lange Hosen. Egal wie heiß es ist, zieht lange Hosen an. Meine Beine sind von den Dornen total verkratzt, und die Kletten haben sich überall reingedrückt. <br />Außerdem wie empfohlen feste Schuhe. Nach dem Regen gestern Nacht bin ich hier in meinen Turnschuhen ganz schön durch die Gegend gerutscht ...<br /><br />Dennoch vielen Dank für das Zeigen dieser tollen Runde, ich würde sie wieder machen!<br /><br />In:TB<br /><br />DFDC!<br /><br />#1039","Created":"2013-09-07","Visited":"2013-09-07","UserName":"andrea.","MembershipLevel":3,"AccountID":6340091,"AccountGuid":"50ab35bd-f036-49a8-9a4d-555d45fe63c8","Email":"","AvatarImage":"b71d5471-f1a0-46eb-9a51-666ffdc642f6.jpg","GeocacheFindCount":1044,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":344898210,"CacheID":2544319,"LogGuid":"7da231a1-a079-431c-a652-b1fb384dca8b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Heute haben wir uns nach Pattonville aufgemacht.<br /> Ziel war die Flugplatzrunde. Alle Dosen waren schnell gefunden und in Top Zustand. Die Runde hat uns gefallen, allerdings mit dem Kinderwagen sehr grenzwertig bzw. eigentlich nicht machbar. Vielleicht im Winter. Auch das Finale war fast nicht erreichbar. Man muss durch 50cm hohes Gras mit viel Kletten. Hier sollte dee Owner nochmal nachdenken ob das sinnvoll ist. Trotzdem danke fürs auslegen und die schönen Dosen. DFDC<br />#651","Created":"2013-08-28","Visited":"2013-08-28","UserName":"Schmitter90","MembershipLevel":3,"AccountID":5284444,"AccountGuid":"e6c3ab42-3f89-4085-b3b3-96a4b6c2b245","Email":"","AvatarImage":"1af0e940-78e2-403b-8b94-e1afbe1dca98.jpg","GeocacheFindCount":689,"GeocacheHideCount":7,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":341465335,"CacheID":2544319,"LogGuid":"985258d0-14ae-498e-93f0-448b4f68c9f2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nach knapp vier Stunden sind wir am Final angekommen bzw. in dem Zielgebiet. Wir hätten erst so keine wirkliche Idee, glaubten uns auch verrechnet zu haben. Dann ging es durch die Botanik, bis wir an der Finallocation angekommen sind. Eine schöne Runde und ein schöner Cache, der unseren Kleinen Spaß gemacht hat. <br />Danke dafür.<br />Paddylo.<br />Als wir am Auto ankamen, hats dann richtig angefangen zu regnen. Das nennt mal wohl Glück gehabt.","Created":"2013-08-18","Visited":"2013-08-18","UserName":"paddylo","MembershipLevel":3,"AccountID":2959067,"AccountGuid":"2766ffce-53cc-413d-b9c0-25758c2d0a4f","Email":"","AvatarImage":"f1307b20-257d-4c6d-920f-e11da9e43919.jpg","GeocacheFindCount":345,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":341433686,"CacheID":2544319,"LogGuid":"6cd7cfa7-af30-4e3b-98ee-55ca1c6a399e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Hier hat sich unser Muggelkind einen Dornen ins Bein gerammt, deshalb war hier auch alles etwas hektisch.... Danke für die schöne Runde, wir haben uns an Brombeeren und Mirabellen sattgegessen... Out: TB, Stempel, Chip für Einkaufswagen. In: große Packung Mossgummiteile","Created":"2013-08-18","Visited":"2013-08-18","UserName":"chrissele","MembershipLevel":3,"AccountID":2944289,"AccountGuid":"3f609092-7a72-4587-a348-c6b6ca37f715","Email":"","AvatarImage":"","GeocacheFindCount":345,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":341778918,"CacheID":2544319,"LogGuid":"b384117b-1aae-4e8a-b3aa-85d2bb0f08c5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"HURRA....VIELEN DANK FÜR DIE SCHÖNE RUNDE!!!!","Created":"2013-08-19","Visited":"2013-08-17","UserName":"indi98","MembershipLevel":3,"AccountID":7313062,"AccountGuid":"fb0a7e73-bb01-4212-a2b0-cb4806a3793c","Email":"","AvatarImage":"","GeocacheFindCount":135,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":331401982,"CacheID":2544319,"LogGuid":"64475e46-e548-49aa-ba13-d779b9caf24d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"#461 - ca. 17:00<br />Nachdem ich gestern die Runde begonnen hatte, kam ich erst heute ans Ziel.<br />Ich muss wohl echt ein Dinosaurier sein, weil ich mit Pocketqueries spiele und nicht per Smartphone-Flatrate permanent online bin.<br />Ich habe mich in der umfangreichen Textbeschreibung verirrt und deshalb manchen Hint übersehen.<br />Am Anfang lief es noch gut.<br />Die Zaunpfosten habe ich fleißig gezählt (werden die Querbalken mitgezählt? Ich dachte nicht.). Mit meinem Resultat bin ich dann bei einem einzelnen, hübschen großen Strauch gelandet.<br />Die Diesteln drum rum wuchen mir über den Kopf und überall waren Schmetterlinge.<br />Von dort konnte ich Masten mit Böppeln dazwischen sehen, aber leider nicht auf 107 und 80 Grad.<br />Mein Ergebnis für die Nächste Stage führte mich einen atemberaubend schmalen zugewachsenen Pfad entlang. Weit und breit fand ich kein Schild mit Städtenamen.<br />Dank der Referenzpunkte kam ich wieder auf Kurs und schließlich an Stage 10 an.<br />Dort habe ich bestmöglich die Finalposition geschätzt, aber das Ergebnis war nicht plausibel.<br />Frust!!!<br />Der Akku war fast leer, sowohl am Kästle als auch bei mir.<br />Und so bin ich wieder heim.<br /><br />Mit 2, 3 Gläsern Limo im Bauch sah die Welt schon wieder besser aus.<br />Und nachdem ich die Beschreibung am PC dann ganz in Ruhe gelesen hatte, kam endlich auch das richtige Ergebnis raus.<br />Heute bin ich noch einmal hin und habe die Dose gefunden.<br />Mich wurmt, dass ich solche Probleme hatte und wüsste gerne, welche Fehler ich gemacht hab.<br />Trotzdem, oder gerade erst recht: Eine tolle runde durch ein schönes Biotop.<br />Die Grillgrüppchen wissen nicht, was ihnen entgeht.<br />Vielen Dank fürs Legen.<br /><br />Grüße<br />strobu<br /><br />out: 1 Piratengold<br />in: 1 Ball + 1 Coin + 1 FP<br /><br />This entry was edited by strobu on Sunday, 21 July 2013 at 17:48:12 UTC.","Created":"2013-07-20","Visited":"2013-07-20","UserName":"strobu","MembershipLevel":3,"AccountID":5501028,"AccountGuid":"057cb580-5230-4ea0-b84c-7919843ee30c","Email":"","AvatarImage":"dd62b01d-e890-4fbd-8a9c-3e64f3602c9b.jpg","GeocacheFindCount":611,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":330688227,"CacheID":2544319,"LogGuid":"c4edf32b-0103-41ad-b303-dfdb002eb49e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"16.45 h. Mit dem Fahrrad konnte die Runde ohne Problem abgefahren werden. Manchmal war es schwierig durch das hohe Gras zu kommen, aber alle Stages waren gut zu finden. Das Final war im kleinen Wäldchen, umrahmt in hohem Gras, besonders gut geschützt. Kinder haben sicherlich großen Spaß dabei.<br />no trade<br />Danke und Gruß<br />Wolfgang von Heilbronn","Created":"2013-07-17","Visited":"2013-07-15","UserName":"brettachilles","MembershipLevel":3,"AccountID":409357,"AccountGuid":"f4dceae3-e8d6-4333-8803-44c8e3bd4ce6","Email":"","AvatarImage":"","GeocacheFindCount":7397,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":329678870,"CacheID":2544319,"LogGuid":"0a0cfbce-5bb7-4a3b-b77b-d844f532b7f3","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Eine wirklich liebevoll gestaltete Runde in schöner und interessanter Landschaft!<br />Ganz spontan haben wir uns heute für die Pattonville-Runde entschieden, da wir hier in der Gegend waren. Nicht ganz so gut vorbereitet sind wir wohl das eine oder andere Meterchen bei heißem Wetter umsonst gelaufen, Akku drohte auszufallen, nichts zu Trinken dabei <img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" />. Unser Vierfuß hatte zwischendurch die Gelegenheit, in's Bächle einzutauchen, sich abzukühlen und seinen Durst zu löschen, uns war das dann doch zu naturverbunden <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />; wir zogen die gut aufgeheizten Wasservorräte im Auto am Ende der Runde vor. <br /><font color=\"red\"> Vielen Dank für diese schöne Runde und Grüße von 2xwhyzidas+1x4Pfoten </font><br /><font color=\"blue\"> Hier lassen wir auch gerne eine große blaue Schleife zurück </font>","Created":"2013-07-13","Visited":"2013-07-13","UserName":"whyzidas","MembershipLevel":3,"AccountID":4289527,"AccountGuid":"2d986b6d-7f95-4fa1-860c-09ff69bd06c4","Email":"","AvatarImage":"fa949dcf-49b1-4c2a-927d-5a395ef961e8.jpg","GeocacheFindCount":1444,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":329732717,"CacheID":2544319,"LogGuid":"034eb940-a780-4ce8-ad26-dc7d0cb9ec03","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Die Tradis waren längst erledigt, so stand heute noch der Multi auf dem Programm. Vielen Dank für die schön gemachte Runde durch die tolle Wiesenlandschaft.","Created":"2013-07-14","Visited":"2013-07-12","UserName":"GlobalPlayers","MembershipLevel":3,"AccountID":456077,"AccountGuid":"8d86e694-0242-4f9d-b411-5d6623fb884d","Email":"","AvatarImage":"2b8c7f17-3fa2-443c-8672-ed11acc543e9.jpg","GeocacheFindCount":16803,"GeocacheHideCount":36,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":323322703,"CacheID":2544319,"LogGuid":"25762769-f4d4-416d-9085-dd4dae7474f2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Sehr schöne Runde. Wir haben eine Nachtigall singen gehört und Kaninchen vorbeiflitzen sehen. Auch die Kinder blieben bei der Stange. Tochter meinte, das sei der schönste Cache, den sie bisher gemacht hat. Mittendrin ging noch der Akku leer und wir legten eine Lade-Eispause in Kornwestheim ein. DFDC","Created":"2013-06-18","Visited":"2013-06-16","UserName":"cashkoenig","MembershipLevel":3,"AccountID":2113917,"AccountGuid":"363ed11a-351e-4237-8079-b0d9567cffac","Email":"","AvatarImage":"8e3bf542-7470-4fc5-b035-518f0dd61fb9.jpg","GeocacheFindCount":601,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":322830908,"CacheID":2544319,"LogGuid":"538d491a-59de-47f1-b239-87d9c409895a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Mit niamsatho diese schöne Runde bei super heißem Wetter gemacht. Viel Spaß gehabt. Danke.","Created":"2013-06-16","Visited":"2013-06-16","UserName":"komilale Spürnasen","MembershipLevel":3,"AccountID":6544608,"AccountGuid":"1adea43a-d607-40da-a058-d39d6c337ee0","Email":"","AvatarImage":"cc40e445-df72-4a79-ae55-bd19a70919a0.jpg","GeocacheFindCount":460,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":322221207,"CacheID":2544319,"LogGuid":"c5651d65-b957-473f-b1c8-a9d3614fc5d1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nach dem ich an meiner Rechenkunst gezweifelt habe (landete wie mein Vor- Vorgänger auf einem Dach) bin ich wieder zu STA011 und folgte den gefundenen Spuren. Final so doch noch erreicht. Eine wirklich klasse Runde in toller Umgebung. Dafür gibts einen FP von mir für die gesamte Runde mit allen 5 Caches.<br />Danke für dieses tolle Erlebnis in der Natur.<br />Es grüßt Jogi164<br /><br />This entry was edited by Jogi164 on Saturday, 15 June 2013 at 08:18:13 UTC.","Created":"2013-06-15","Visited":"2013-06-15","UserName":"Jogi164","MembershipLevel":3,"AccountID":7340217,"AccountGuid":"9f9fdae1-4eee-4d1b-80ef-fbabe0dac618","Email":"","AvatarImage":"83ba516b-2c29-4b62-89be-0b7d6f2f821e.jpg","GeocacheFindCount":173,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":320696376,"CacheID":2544319,"LogGuid":"73e27df6-479c-402d-8b15-e750c0873781","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Wir haben dank des Cache einen wunderschönen Tag in wunderschöner Landschaft verbracht, und dafür ganz herzlichen Dank .","Created":"2013-06-08","Visited":"2013-06-08","UserName":"Die Warkentins","MembershipLevel":3,"AccountID":4993397,"AccountGuid":"d566e63d-966d-43e8-9fba-d193da6768b9","Email":"","AvatarImage":"0f9962b6-8812-4c24-a820-a699d946a2b7.jpg","GeocacheFindCount":521,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":319804753,"CacheID":2544319,"LogGuid":"e2727441-d595-4c0a-93c5-ed369d0dbf06","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Heute nach Feierabend diese sehr gut ausgearbeitete Runde auf schönen Wegen in toller Landschaft gelaufen. Alle Stationen waren schnell gefunden, nur bei der Finalberechnung gab es Probleme <br />( irgendwo hatte ich mich wohl verzählt und meine Koords zeigten auf das Dach der......)<br />zum Glück war das Gras sehr hoch und ich ging einfach mal den Spuren nach, und.... Bingo <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br />zak Fox sagt Danke ;-)<br /><br /><img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> 413","Created":"2013-06-04","Visited":"2013-06-03","UserName":"zak Fox","MembershipLevel":3,"AccountID":4101099,"AccountGuid":"6a9b7442-f22a-4e3b-950d-19fce187e122","Email":"","AvatarImage":"b6e196d6-7d7e-4dcc-8514-b165f5fd85fa.jpg","GeocacheFindCount":885,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":319381659,"CacheID":2544319,"LogGuid":"ed8043cf-0ce8-4574-a080-ed91a60edf97","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Eine schöne Runde -- die Gegend kannten wir bisher nur bei Nacht....interessant, wie's hier bei Sonne aussieht. Gut gemacht, eindeutig zu finden und nette Versteckideen. Toll, dass es immer große Dosen waren. Manche Stellen glichen heute eher einer Seenlandschaft, das hat die Sache aber eigentlich nur noch interessanter gemacht. Nach ein paar Stationen trafen wir Team kfamsi, viele Grüße!<br />In: Ohrringe<br />Out: Mausanstecker","Created":"2013-06-02","Visited":"2013-06-02","UserName":"Grueffelo","MembershipLevel":3,"AccountID":1583626,"AccountGuid":"e809dd81-e372-47fb-97b5-3cf7e365c364","Email":"","AvatarImage":"a7748cb1-3a1b-402f-905e-292df62083ca.jpg","GeocacheFindCount":859,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":319314806,"CacheID":2544319,"LogGuid":"da4c8004-e4ab-41ff-ae8b-749f53187dd2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Obwohl für Kinder gedacht hat es dem Erwachsenen auch viel Spass gemacht. Der Multi wie die Tradi Runde sind ideenreich gestaltet und boten einige Überraschungen, dafür vergeben wir auch gerne eine FP. #290<br />Vielen Dank fürs Herlocken.","Created":"2013-06-02","Visited":"2013-06-02","UserName":"kfamsi","MembershipLevel":3,"AccountID":4735463,"AccountGuid":"041c51e3-83df-459f-90c1-ae35c408b1d9","Email":"","AvatarImage":"3679971b-50f6-47cb-8e04-d1bd6b74f835.jpg","GeocacheFindCount":366,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":318533308,"CacheID":2544319,"LogGuid":"187ce02d-d28f-4d56-9d74-4719de0fd280","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit effisti, McGroove und den Pelle-Käschern diesen Cache gut gefunden und muggelfrei geloggt.<br />Danke fürs Zeigen der schönen Runde, bei der wir Kinder viel Spass hatten!<br />TFTC <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />.<br /><font color=\"blue\">Nilpferde</font>","Created":"2013-05-30","Visited":"2013-05-30","UserName":"Nilpferde","MembershipLevel":1,"AccountID":5021441,"AccountGuid":"59e9cda8-691b-4477-b28b-61079ff712d5","Email":"","AvatarImage":"e640cee8-0bc4-4b88-9794-cd297346943e.jpg","GeocacheFindCount":2987,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":318529719,"CacheID":2544319,"LogGuid":"6177f705-eb9e-4c10-afc4-914ed60bd8e5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit effisti, den beiden Nilpferden und allen Pelle-Käschern ging es heute bei unerwartet gutem Wetter und mit viel Spass um den Flugplatz Pattonville. Wir haben bei diesem Cache heute alle Stationen gut gefunden und auch das Finale gut gefunden und muggelfrei geloggt. Als wir das letzte Mal hier waren mussten wir leider abbrechen, da eine Station nicht lösbar war. Heute klappte alles und anschließend gabe es noch eine kleine Futterpause.<br />Danke fürs Zeigen.<br />TFTC <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />.<br /><font color=\"red\">McGroove<font color=\"red\"></font></font>","Created":"2013-05-30","Visited":"2013-05-30","UserName":"McGroove","MembershipLevel":3,"AccountID":5082762,"AccountGuid":"5cb63a10-1719-449a-92b7-0c3780ca4c37","Email":"","AvatarImage":"2a75a921-b239-47d7-bd50-df59b9b0ce43.jpg","GeocacheFindCount":4892,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":318436115,"CacheID":2544319,"LogGuid":"68dbaa26-1c05-47e1-8907-14d04d15da94","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Die Wetterfrösche hatten schlechteres Wetter vorausgesagt. Deshalb haben wir uns kurzfristig für diese schöne Runde entschieden. Alle Stages waren gut zu finden und mit den Zwischendurchtradis sehr kurzweilig. Zwischendurch war es extrem matschig und unsere Schuhe brauchten dannach eine intensive Reinigung. Danke für´s herführen. In: GC / Out: TB zusätzlich gibt´s noch nen FP","Created":"2013-05-30","Visited":"2013-05-30","UserName":"lobo1956","MembershipLevel":3,"AccountID":1747086,"AccountGuid":"00a904e2-c379-4776-a4bb-55c6fad8fd10","Email":"","AvatarImage":"d7e6878f-90f4-4946-a283-63dafea7f352.jpg","GeocacheFindCount":3115,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":318398385,"CacheID":2544319,"LogGuid":"c7dcd1c9-b6ac-4bb4-82b8-fb762d16ff3e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Mit effisti, McGroove und den Nilpferden diesen wunderschönen Kindermulti heute begangen (im wahrsten Sinne des Wortes: durch Matsch, über Stock und Stein, Gras, Wasser ...). Die Owner haben sich hier wirklich mit ihren Tradis zwischendrin sehr viel Mühe gegeben, die kleinen und die \"großen\" Kinder bei Laune gehalten, sämtliche Dosen reichhaltig und schön bestückt und auch schön versteckt. Das Final kann man gar nicht übersehen;-) Nach der Runde hatten wir so richtig Hunger u. haben dann den Rucksack leer gegessen (nachdem wir die leckeren Gummibärchen von den Nilpferden alle zusammen verputzt hatten).<br />Vielen Dank für diese Runde und auch fürs Herführen. Was wir wo getauscht haben, wissen wir gar nicht mehr so genau, aber auch dies hat Spaß gemacht.<br />Auf jeden Fall In: Fav. punkt<br />1111","Created":"2013-05-30","Visited":"2013-05-30","UserName":"Pelle-Käscher","MembershipLevel":3,"AccountID":6553785,"AccountGuid":"1ff4af93-0e54-4dde-9a24-8b49a386702b","Email":"","AvatarImage":"56027cb8-bc29-484e-b6b7-c50a12bf6e0c.jpg","GeocacheFindCount":641,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":318320234,"CacheID":2544319,"LogGuid":"99b8417f-4cca-49bd-a8e8-87a1823334ad","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit den Pelle-Käschern, McGroove und den Nilpferden habe ich die Pattonville-Runde gemacht. Für McGroove und mich war es der zweite Besuch, beim ersten Mal hat ein Teil des Zaunes gefehlt. Heute konnten wir alle Stationen gut finden. Danke für diese schöne Runde, sie hat mir gut gefallen. TFTC.<br /><font color=\"green\">effisti</font>","Created":"2013-05-30","Visited":"2013-05-30","UserName":"effisti","MembershipLevel":3,"AccountID":4810605,"AccountGuid":"f7f5c6a8-ac45-4ca8-b92d-c687a60d867a","Email":"","AvatarImage":"114e2485-f36d-4ea0-9066-c110fc573991.jpg","GeocacheFindCount":4863,"GeocacheHideCount":6,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":318024128,"CacheID":2544319,"LogGuid":"2ba3c3ca-d3c1-401d-b387-0ec2b14a0162","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nachdem wir hier vergangene Woche wegen \"Hirn-kann-nicht-mehr-rechnen\" nach stage 4 abgebrochen hatten (kommt vor...<img src=\"/images/icons/icon_smile_evil.gif\" border=\"0\" align=\"middle\" />), gingen die RucksackTonis heute nochmal mit voller Besetzung an den Start. Was für ein Wetter <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" />, was für eine Menge Kaninchen und was für ein Cache! Heute hat wirklich alles gestimmt. Am Final waren wir dann etwas überrascht: muss man die letzten 50m tatsächlich durch eine hohe Wiese gehen? Wir haben zuerst versucht, von der anderen Seite ran zu kommen, aber das führte nur zu einer Ehrenrunde an Clairchen (GC2A4JN) vorbei. Dann also im Gänsemarsch direkt durch...<br />Den Ernies ein großes Lob für diese aufwändig und liebevoll gestaltete Runde!<br /><br />Danke fürs Verstecken<br />RucksackToni<br /><br />vergab 4.5 Sterne bei <a href=\"http://www.gcvote.com\" target=\"_blank\" rel=\"nofollow\">GCVote</a><br />und einen Fav-Point","Created":"2013-05-28","Visited":"2013-05-28","UserName":"RucksackToni","MembershipLevel":3,"AccountID":1545324,"AccountGuid":"323034ec-e460-44da-96ec-99c0d3488193","Email":"","AvatarImage":"a04c63e6-4033-4e3d-8c72-68a193b8ff46.jpg","GeocacheFindCount":600,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":316352961,"CacheID":2544319,"LogGuid":"33c4ac3d-e27b-449e-b2e9-65175812c1d0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Stage 6 ist nun (durch den zusätzlichen Tipp im HINT) wirklich eindeutig <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />.<br />Bei Stage 5 ist nun zum 3. Mal das Schild rausgerissen worden, obwohl wir es bei der letzten Wartung über 40 cm tief in den Boden geklopft hatten <img src=\"/images/icons/icon_smile_angry.gif\" border=\"0\" align=\"middle\" />.<br />Darum steht bis auf Weiteres die Lösung für Stage 5 im HINT. Wir werden bei Gelegenheit das Schild suchen und wieder aufstellen <img src=\"/images/icons/icon_smile_blackeye.gif\" border=\"0\" align=\"middle\" />.<br />Jetzt ist die Runde wieder das, was sie sein soll: Für kleine-, große- und ganz große Kinder gemacht und Kinderleicht <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />.<br />Viel Spaß weiterhin wünschen die \"Four Ernies\"","Created":"2013-05-22","Visited":"2013-05-22","UserName":"Four Ernies","MembershipLevel":3,"AccountID":3777316,"AccountGuid":"ddf0b84d-5f1a-4ed9-90f9-a3b8e02ddacf","Email":"","AvatarImage":"b9c9281d-cc76-4aa5-8075-9630bd992823.jpg","GeocacheFindCount":967,"GeocacheHideCount":15,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":316161145,"CacheID":2544319,"LogGuid":"a02686cd-9c84-44e9-9451-19691e528b9d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> 900er - Meilenstein <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Zu unserem 900er-Meilenstein haben wir uns diesen Multi ausgesucht, da er durch die vielen Fav.-Punkte doch einiges versprach. Zwar hatten wir keine kleinen Kinder dabei, ab da wir ja große Kinder sind, hoffen wir, das es uns die Owner verzeihen !<img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" /><br />Die Stages und die Referenzpunkte waren bis auf Nummer 5 alle gut zu finden. Die Wegführung war sehr gut und so ging es flott durch den ganzen Multi, bei dem wir aber nahezu auf Schritt und Tritt von Karnickeln beobachtet wurden. Nachdem wir bei Stage 5 schon das 50. Karnickel gesehen hatten, gaben wir auch das Zählen auf. Der ganze Multi wurde noch angenehm abgerundet durch die Tradis, die man unterwegs finden konnte und so hatten wir einen großen Spaß bei der ganzen Sache.<br /><br />Selten hat uns ein Multi so Spaß gemacht wie dieser hier, bei dem alles gestimmt hat und deswegen lassen wir auch sehr gerne einen Fav.-Punkt hier.<br /><br />Vielen Dank fürs Herlocken und Legen des Caches<br /><br />die Eiselbe´s","Created":"2013-05-21","Visited":"2013-05-20","UserName":"Eiselbe","MembershipLevel":3,"AccountID":5804245,"AccountGuid":"dbe10eae-8cc4-499d-804a-cd7fe293e2a2","Email":"","AvatarImage":"cf78908e-024a-4538-ba99-d6b84c1d6468.jpg","GeocacheFindCount":1385,"GeocacheHideCount":6,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 279, "rows": 279 } };
+var gaToken = 'UA-2020240-1';//]]>
</script>
</form>
<script type="text/javascript">
@@ -2793,12 +1922,20 @@ initalLogs = {"status":"success", "data": [{"LogID":278578940,"CacheID":2544319,
$(".ProfileWidget").toggleClass("WidgetOpen");
$(this).blur();
$("#ctl00_tbUsername").focus();
+ $(document).click(function (e) {
+ if (!$(e.target).parents().hasClass("ProfileWidget")) {
+ $("#SignInWidget").hide();
+ $(".ProfileWidget").removeClass("WidgetOpen");
+ }
+ });
+ return false;
});
- $(".SignInCloseLink").click(function () {
- $("#SignInWidget").toggle();
- $(".ProfileWidget").toggleClass("WidgetOpen");
- });
}
+
+ if (!("placeholder" in document.createElement("input"))) {
+ $("#SignInWidget label").removeClass("hideMe");
+ }
+
$('.SignedInProfileLink').truncate({
width: 120,
after: '&amp;hellip;',
@@ -2825,91 +1962,751 @@ initalLogs = {"status":"success", "data": [{"LogID":278578940,"CacheID":2544319,
});
</script>
+ <script type="text/javascript">
+ <!--
+
+ function s2gps(guid) {
+ var w = window.open('/seek/sendtogps.aspx?guid=' + guid, 's2gps', config='width=450,height=450,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no');
+ w.focus();
+ }
+
+ function s2phone(wpid) {
+ window.location.href='/seek/sendtophone.aspx?gc=' + wpid;
+ }
+
+ function pl(lc) {
+ document.location.href='/seek/cache_details_print.aspx?guid=' + guid + '&numlogs=' + lc +'&pt=full&lt=letter&decrypt='+ ((dh)?'y':'n');
+ }
- <script id="loc_favPointsScoreDesc" type="text/html">
- Favorites/Premium Logs
- </script>
- <script type="text/javascript" language="javascript">
- <!--
+ function setNotification(id) {
+ //new Effect.Highlight(id, {startcolor:'#ffffff', endcolor:'#ffff99', restorecolor:'#ffff99', duration:3.0, queue:'front'});
+ //new Effect.Highlight(id, {startcolor:'#ffff99', endcolor:'#ffffff', restorecolor:'#ffffff', duration:5.0, queue:'end'});
+ }
+
+ function cmo(id) {
+ Cookie.set('sn', true);
+ }
+
+ function pp(img) {
+ var w = window.open(img);
+ w.focus();
+ }
+ var map, bounds;
+ var canUpdateFavoriteStatus = true;
+ var decryptLogs = (urlParams["decrypt"] && urlParams["decrypt"] == "y") ? true : false;
+ var logInitialLoaded = false;
+ var $tfoot = $("#cache_logs_table").find("tfoot");
+ var currentPageIdx = 1, totalPages = 1, pageSize = 10;
+ var isBusy = false;
+
+ var locString = {
+ decrypt: 'Decrypt',
+ encrypt: 'Encrypt'
+ };
+
+ $("#tmpl_CacheLogImagesTitle").template("tmplCacheLogImagesTitle");
+ $("#tmpl_CacheLogImages").template("tmplCacheLogImages");
+ $("#tmpl_CacheLogRow").template("tmplCacheLogRow");
+
+ $(".EncryptDecrypt")
+ .button({ icons: { secondary: 'ui-icon-arrowreturnthick-1-w'} })
+ .click(function (e) {
+ e.preventDefault();
+ $("tr.log-row").each(function (i, obj) {
+ var $obj = $(obj);
+ if ($obj.data("encoded") == true) {
+ var lt = $obj.find("p.LogText");
+ //var ltDecoded = $('<div />').html(lt.html()).text();
+ lt.html(convertROTStringWithBrackets(lt.html()));
+ }
+ });
+ decryptLogs = !decryptLogs;
- var gotScore = false;
- var favDropDown = $('.favorite-dropdown');
- var favContainer = $('.favorite-container');
+ $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
- function showFavoriteScore() {
- $('#imgFavoriteScore').attr('src', '/images/loading3.gif');
+ return false;
+ });
+
+ function appendNewLogs(obj) {
- $('#uxFavoriteScore').parent().fadeTo(200, .001, function () {
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/score?u=' + userToken,
- success: function (scoreResult) {
- gotScore = true;
+ totalPages = obj.pageInfo.totalPages;
- var score = 0;
+ var $newBody = $(document.createElement("TBODY"));
- if(scoreResult)
- score = scoreResult;
+ $("#tmpl_CacheLogRow").tmpl(obj.data,{ includeAvatars: includeAvatars }).appendTo($newBody);
- if(score > 100)
- score = 100;
-
- $('#imgFavoriteScore').attr('src', '/images/favorites/piecharts/' + score + '.png');
- var pieDesc = (score < 1 ? "<1" : score) + '% ' + $("#loc_favPointsScoreDesc").text().trim();
- $('#imgFavoriteScore').attr('alt', pieDesc);
- $('#imgFavoriteScore').attr('title', pieDesc);
+ $newBody.find("a.tb_images").each(function()
+ {
+ var $this = $(this);
+ $this.fancybox({
+ 'type': 'image',
+ 'titlePosition': 'inside',
+ 'padding': 10,
+ titleFormat: function() { return $this.data('title'); }
+ });
+ });
- $('#uxFavoriteScore').parent().fadeTo(1000, 1);
- $('#uxFavoriteScore').html('<strong>' + (score < 1 ? "<1" : score) + '%</strong> ' + $("#loc_favPointsScoreDesc").html());
+ $("#cache_logs_table")
+ .append($newBody.children());
+
+ currentPageIdx = obj.pageInfo.idx + 1;
+ pageSize = obj.pageInfo.size;
+ }
+
+ var showScroll = false;
+
+ function callLogLoad(hideFooter) {
+ if (screen.width > 1090){
+ showScroll = true;
+ }
+ $.getJSON("/seek/geocache.logbook", { tkn: userToken, idx: currentPageIdx, num: pageSize, decrypt: decryptLogs },
+ function (response) {
+ if (response.status == "success") {
+ appendNewLogs(response);
+ if( hideFooter || (totalPages < currentPageIdx) ) {
+ $tfoot.hide();
+ }
+ } else if (response.status == "error" && response.value == "1") {
+ // reload the page since the data had expired.
+ window.location.reload();
+ }
+ isBusy = false;
+ });
+ }
+
+ $("#add_to_favorites").click(function () {
+
+ if (canUpdateFavoriteStatus) {
+ canUpdateFavoriteStatus = false;
+
+ var fv = parseInt($(".favorite-value").text());
+ fv++;
+ $(".favorite-value").text(fv);
+
+ var fr = parseInt($(".favorite-rank").text());
+ fr--;
+ $(".favorite-rank").text(fr);
+
+ $("#pnlNonfavoriteCache").fadeOut("fast", function () {
+ $("#pnlFavoriteCache").fadeIn("fast");
+ });
+
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/update?u=' + userToken + '&f=true',
+ success: function () {
+ canUpdateFavoriteStatus = true;
+ gotScore = false;
+ showFavoriteScore();
+ }
+ });
+
+ return false;
+ }
+ });
+
+ $("#remove_from_favorites").click(function () {
+
+ if (canUpdateFavoriteStatus) {
+ canUpdateFavoriteStatus = false;
+
+ var fv = parseInt($(".favorite-value").text());
+ fv--;
+ $(".favorite-value").text(fv);
+
+ var fr = parseInt($(".favorite-rank").text());
+ fr++;
+ $(".favorite-rank").text(fr);
+
+ $("#pnlFavoriteCache").fadeOut("fast", function () {
+ $("#pnlNonfavoriteCache").fadeIn("fast");
+ });
+
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/update?u=' + userToken + '&f=false',
+ success: function () {
+ canUpdateFavoriteStatus = true;
+ gotScore = false;
+ showFavoriteScore();
+ }
+ });
+
+ return false;
+ }
+ });
+
+ $(function () {
+
+ // CSP Section
+ if ($("#cspMessage").length) {
+
+ var editLink = $('a[href*="report.aspx"]').attr('href');
+
+ $("#cspMessage").prepend('<P>Please take a moment to check the listing and ensure it is ready to enable. Clicking "Submit for Review" will enable your cache page.</P>');
+ $("#cspMessage").prepend('<P>Once it is enabled, you will receive a confirmation email that it was successfully submitted. It is peak season for cache placement. Your volunteer reviewer will strive to begin the review process within the next 7 days.</P>');
+ $("#cspMessage").prepend('<P>Your cache page has not been reviewed yet. It will not appear in the review queue until you enable it.</P>');
+
+ $("#cspGoBack").click(function (e) {
+ e.preventDefault();
+ window.location = editLink;
+ return false;
+ });
+
+ $("#cspSubmit").click(function (e) {
+ e.preventDefault();
+ $.pageMethod("/seek/cache_details.aspx/EnableCSPCache", JSON.stringify({ dto: { ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.success == true) {
+ window.location = '/seek/cache_details.aspx?guid=' + r.guid;
+ } else {
+ alert("There was an error enabling your cache.");
}
});
+ return false;
+ });
+
+ $("#cspConfirm").change(function() {
+ if ($("#cspConfirm").is(":checked")) {
+ $("#cspSubmit").removeAttr('disabled');
+ $("#cspGoBack").attr('disabled', true);
+ } else {
+ $("#cspSubmit").attr('disabled', true);
+ $("#cspGoBack").removeAttr('disabled');
+ }
});
}
-
+
+ //override coords
+ if (typeof(userDefinedCoords) != "undefined") {
+ if (userDefinedCoords.status == "success" && userDefinedCoords.data.isUserDefined == true) {
+ mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
+ $("#uxLatLon")
+ .data("isOverridden", true)
+ .addClass("myLatLon");
+ } else if (userDefinedCoords.status == "success") {
+ mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
+ } else {
+ $("#uxLatLonLink").contents().unwrap();
+ }
+ } else {
+ $("#uxLatLonLink").contents().unwrap();
+ }
- $(document).bind('mouseup', function (e) {
- var $clicked = $(e.target);
+ var cacheNoteText = {
+ DefaultText: 'Click to enter a note',
+ ErrorInSaving: 'There was an error saving page. Please refresh the page and try again.',
+ SavingText: 'Please wait, saving your note...'
+ };
+
- if (!$clicked.parents().hasClass("favorite-dropdown") && !$clicked.parents().hasClass("FavoriteWidget")) {
- favDropDown.hide(1, function () {
- favContainer.addClass('favorite-container');
- favContainer.removeClass('favorite-container-open');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-down.png');
+
+ $("time.timeago").timeago();
+
+ $(".button").button();
+
+ var sn = Cookie.get('sn');
+
+ if ($('#trNotPM').length > 0) {
+ $('#trNotPM').toggle(!sn);
+ }
+
+ $("#cache_note").editInPlace({
+ callback: function (unused, enteredText) {
+ var me = $(this);
+
+ var et = $.trim(enteredText);
+ if (et.length > 500 ) {
+ et = et.substr(0, 500);
+ }
+ $.pageMethod("/seek/cache_details.aspx/SetUserCacheNote", JSON.stringify({ dto: { et: et, ut: userToken} }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.success == true) {
+ if ($.trim(r.note) == "") {
+ $("#cache_note").text(cacheNoteText.DefaultText);
+ } else {
+ $("#cache_note").text(r.note);
+ }
+
+ me.effect('highlight', { color: '#ffb84c' }, 'slow');
+ } else {
+ alert(cacheNoteText.ErrorInSaving);
+ $("#cache_note").text(cacheNoteText.DefaultText);
+ }
+
});
+
+ return cacheNoteText.SavingText;
}
+ , default_text: cacheNoteText.DefaultText
+ , field_type: "textarea"
+ , textarea_rows: "7"
+ , textarea_cols: "65"
+ , show_buttons: true
+ , bg_over: "#dad7cb"
+ //, callback_skip_dom_reset: true
+
});
- $('#uxFavContainerLink').click(function () {
- if ($(favDropDown).is(':visible')) {
- favDropDown.hide(1, function(){
- favContainer.addClass('favorite-container');
- favContainer.removeClass('favorite-container-open');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-down.png');
- });
+ $("#lnk_slippyMap").click(function(e) {
+ e.preventDefault();
+ loadDynamicMap();
+ return false;
+ });
+
+ $(".inplace_field").live("focus", function () {
+ if ($(this).data("created") == null) {
+ $(this).data("created", true)
+ $(this).countable({
+ maxLength: 500
+ });
+ }
+ });
+
+ $("#pcn_help").qtip({
+ content: 'Enter your own notes here. No other user will be able to access them.',
+ position: {
+ my: 'top center',
+ at: 'bottom center'
+ },
+ style: {
+ classes: 'ui-tooltip-dark ui-tooltip-rounded pcn-tooltip'
+ },
+ });
+ $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
+
+ if ($("#cache_logs_container").length > 0) {
+
+ appendNewLogs(initalLogs);
+
+ if (DetectMobileQuick()) {
+ $("#pnlButtonLoad")
+ .show()
+ .find("a.MobileButton")
+ .click(function (e) {
+ e.preventDefault();
+ callLogLoad(false);
+ return false;
+ })
+ .button();
+ if(!DetectTierTablet()){
+ $("a.MobileButton").addClass("Phone");
+ }
+ } else {
+ $("#pnlLazyLoad").show();
+
+ $(window).endlessScroll({
+ fireOnce: true,
+ fireDelay: 500,
+ bottomPixels: ($(document).height() - $("#cache_logs_container").offset().top) + 50,
+ ceaseFire: function(){
+ // stop the scrolling if the last page is reached.
+ return (isLoggedIn == false) || (totalPages < currentPageIdx);
+ },
+ callback: function() {
+ if (!isBusy) {
+
+ isBusy = true;
+ $tfoot.show();
+ callLogLoad(true);
+ }
+ }
+ });
}
- else {
- if (!gotScore) {
- showFavoriteScore();
+ }
+
+ if (!isLoggedIn) {
+ $("#cache_logs_table").find("tfoot").hide();
+ }
+
+ if (mapLatLng != null) {
+
+ $("#uxLatLonLink").qtip({
+ suppress:false,
+ content: buildCacheCoordMenu(),
+ position: {
+ my: 'left top',
+ at: 'right top',
+ adjust: {
+ x: 10, y: -10
+ }
+ },
+ show: {
+ ready: false,
+ event: "click",
+ solo: true
+ }, hide: {
+ event: 'unfocus'
+ },
+ style: {
+ tip: {
+ corner: false
+ },
+ classes: 'ui-tooltip-widget'
+ },
+ events: {
+ show: function () {
+ if ($("#uxLatLon").data("isOverridden")) {
+ $("a.ccu-restore").show();
+ } else {
+ $("a.ccu-restore").hide();
+ }
+
+ if (userDefinedCoords.status != "success") {
+ $("div.ccu-update").hide();
+ } else {
+ $("div.ccu-update").show();
+ }
+ }
}
+ }).click(function (e) {
+ e.preventDefault();
+ return false;
+ });
+
+ setStaticMaps();
+ //$("#staticMap").lazyload();
+ }
+ });
- favContainer.addClass('favorite-container-open');
- favContainer.removeClass('favorite-container');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-up.png');
- favDropDown.show(1);
+ function setStaticMaps() {
+ var llBounds = new L.LatLngBounds();
+
+ var map = new L.Map('map_preview_canvas', {
+ center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ zoom: 10,
+ doubleClickZoom: false,
+ dragging: false,
+ touchZoom: false,
+ scrollWheelZoom: false,
+ attributionControl: false
+ })
+ .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }));
+
+ var mapLarge = new L.Map('map_canvas', {
+ center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ zoom: 14,
+ doubleClickZoom: true,
+ dragging: true,
+ touchZoom: false,
+ scrollWheelZoom: false,
+ zoomControl: true,
+ attributionControl: false
+ })
+ .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }))
+ .addControl(new L.Control.Scale());
+
+ llBounds.extend(new L.LatLng(mapLatLng.lat, mapLatLng.lng));
+
+ var tileOptions = {
+ tileUrl: "http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg",
+ name: "mpqosm",
+ alt: "MapQuest",
+ //attribution: "Tiles Courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>, Map and map data © 2012 <a href=\"http://www.openstreetmap.org\" target='_blank'>OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>. ",
+ subdomains: "1234",
+ tileSize: 256,
+ minZoom: 0,
+ maxZoom: 18
+ };
+
+ map.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
+ mapLarge.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
+
+ var pinIcon = L.Icon.extend({
+ iconSize: new L.Point(20, 23),
+ iconAnchor: new L.Point(10,23),
+ shadowUrl: null
+ });
+
+ var mkA = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
+ title: mapLatLng.name
+ })
+ .on("click", function () {
+ document.getElementById("uxlrgMap").scrollIntoView(true);
+ return false;
+ });
+
+ var mkA2 = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng), {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
+ clickable: false, zIndexOffset:99, title: mapLatLng.name
+ });
+
+ map.addLayer(mkA);
+ mapLarge.addLayer(mkA2);
+
+ $("#ctl00_ContentBody_uxNotesAboutPrinting").fancybox({
+ overlayShow: false
+ });
+
+ if (cmapAdditionalWaypoints != null && cmapAdditionalWaypoints.length > 0) {
+
+ for (var x = 0, len = cmapAdditionalWaypoints.length; x < len; x++) {
+
+ var item = cmapAdditionalWaypoints[x],
+ ll = new L.LatLng(item.lat, item.lng),
+ marker = new L.Marker(ll, {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + item.type + '.png', iconAnchor: new L.Point(10,23)}),
+ title: item.name,
+ clickable:false
+ });
+
+ llBounds.extend(ll);
+ mapLarge.addLayer(marker);
+ }
+ var bz = mapLarge.getBoundsZoom(llBounds.pad(1.1));
+
+ mapLarge.setView(new L.LatLng(mapLatLng.lat, mapLatLng.lng), bz);
+ }
+ }
+
+ var lnkDH = $('#ctl00_ContentBody_lnkDH');
+ function dht() {
+ try {
+ $('#div_hint').html(convertROTStringWithBrackets($('#div_hint').html()));
+ var linkText = ((lnkDH.attr('title') == 'Decrypt') ? 'Encrypt' : 'Decrypt');
+ lnkDH
+ .text(linkText)
+ .attr('title', linkText);
+ } catch (e) {
+ alert(e);
+ return false;
+ }
+ return false;
+ }
+
+ function buildCacheCoordMenu() {
+ var curLatLng = new LatLon(mapLatLng.lat, mapLatLng.lng)
+ $.template( "tmplCacheCoordinateUpdate_CoordItem", "<tr><td nowrap='nowrap'>${t}</td><td class='ccc-coord' nowrap='nowrap' dataum='${k}'>${v}</td></tr>" );
+
+ var $menu = $("<div></div>");
+
+ $( "#tmpl_CacheCoordinateUpdate" ).tmpl( {
+ ll: [mapLatLng.lat, mapLatLng.lng],
+ ll_formatted: mapLatLng.oldLatLngDisplay
+ } ).appendTo( $menu );
+
+ $menu.find("button.ccu-button").button();
+
+ $menu.delegate("button.ccu-parse", "click", function (e) {
+ e.preventDefault();
+ var $this = $(e.target),
+ $parse =$this.closest('dd').find(".cc-parse-text"),
+ parseCoords = $.trim($parse.val());
+
+ if (parseCoords.length == 0) {
+ alert('Please provide valid coordinates.');
+ } else {
+ $.getJSON("/api/geocode", { parse: parseCoords}, function (response) {
+ if (response.status == "success") {
+ var newLatLng = new LatLon(response.data.lat, response.data.lng);
+
+ // update the displayed coords
+ var dist = curLatLng.rhumbDistanceTo(newLatLng);
+ var bearingTo = curLatLng.rhumbBearingTo(newLatLng);
+ var bearing = bearingTo >= 0 || bearingTo < 22.5 ? "N" : bearingTo >= 22.5 || bearingTo < 67.5 ? "NE" : bearingTo >= 67.5 || bearingTo < 112.5 ? "E" : bearingTo >= 112.5 || bearingTo < 157.5 ? "SE" : bearingTo >= 157.5 || bearingTo < 202.5 ? "S" : bearingTo >= 202.5 || bearingTo < 247.5 ? "SW" : bearingTo >= 247.5 || bearingTo < 292.5 ? "W" : bearingTo >= 292.5 || bearingTo < 337.5 ? "NW" : "N";
+
+ var formats = response.data.formats;
+ // all these finds, make me feel dirty
+ $menu
+ .find("span.ccu-parseverify-coords").text(formats.DM).end()
+ .find("dl.ccu-parse").hide().end()
+ .find("dl.ccu-parseverify").show().end()
+ .find("button.ccu-parseverify-accept")
+ .data("utm", '')
+ .data("dm", formats.DM)
+ .data("lat", response.data.lat)
+ .data("lng", response.data.lng)
+ .end();
+ } else {
+ alert("Sorry unable to parse the coordinates you entered.");
+ }
+ });
+ }
+
+ return false;
+ });
+
+ $menu.delegate("button.ccu-parseverify-accept", "click", function (e) {
+ e.preventDefault();
+ var $this = $(this);
+ // update to webmethod
+ $.pageMethod("/seek/cache_details.aspx/SetUserCoordinate", JSON.stringify({ dto: { data: {lat: $this.data("lat"), lng: $this.data("lng") }, ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.status == "success") {
+ window.location.reload();
+ } else {
+ $("#uxLatLonLink").qtip('hide');
+ }
+
+ });
+
+ return false;
+ });
+
+ $menu.delegate("button.ccu-parseverify-cancel", "click", function (e) {
+ e.preventDefault();
+ $menu
+ .find("input.cc-parse-text").val('').end()
+ .find("dl.ccu-parse").show().end()
+ .find("dl.ccu-parseverify").hide().end();
+ return false;
+ });
+
+ $menu.delegate("a.ccu-restore", "click", function (e) {
+ e.preventDefault();
+
+ $.pageMethod("/seek/cache_details.aspx/ResetUserCoordinate", JSON.stringify({ dto: { ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.status == "success") {
+ window.location.reload();
+ }
+ });
+
+ return false;
+ });
+
+ return $menu;
+ }
+
+ GSPK = window.GSPK || {};
+ GSPK.Selector = {};
+ GSPK.Selector.getSelected = function(){
+ var t = null;
+ if ( window.getSelection ){
+ t = window.getSelection();
+ }else if(document.getSelection){
+ t = document.getSelection();
+ }else if(document.selection){
+ t = document.selection.createRange().text;
+ }
+ return t;
+ }
+ //-->
+ </script>
+ <script id="loc_favPointsScoreDesc" type="text/html">
+ Favorites/Premium Logs
+ </script>
+ <script type="text/javascript" language="javascript">
+ <!--
+ var gotScore = false;
+ var favDropDown = $('.favorite-dropdown');
+ var favContainer = $('.favorite-container');
+
+ function showFavoriteScore() {
+ $('#imgFavoriteScore').attr('src', '/images/loading3.gif');
+
+ $('#uxFavoriteScore').parent().fadeTo(200, .001, function () {
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/score?u=' + userToken,
+ success: function (scoreResult) {
+ gotScore = true;
+
+ var score = 0;
+
+ if(scoreResult)
+ score = scoreResult;
+
+ if(score > 100)
+ score = 100;
+
+ $('#imgFavoriteScore').attr('src', '/images/favorites/piecharts/' + score + '.png');
+ var pieDesc = (score < 1 ? "<1" : score) + '% ' + $("#loc_favPointsScoreDesc").text().trim();
+ $('#imgFavoriteScore').attr('alt', pieDesc);
+ $('#imgFavoriteScore').attr('title', pieDesc);
+
+ $('#uxFavoriteScore').parent().fadeTo(1000, 1);
+ $('#uxFavoriteScore').html('<strong>' + (score < 1 ? "<1" : score) + '%</strong> ' + $("#loc_favPointsScoreDesc").html());
}
});
- // End -->
+ });
+ }
+ var scrollId = false,
+ logTop = 0;
+
+ if (document.getElementById("cache_logs_container") != null){
+ logTop = $("#cache_logs_container").position().top;
+ }
+ $(window).on("scroll", function() {
+ if (scrollId != false) {
+ window.clearTimeout(scrollId);
+ scrollId = false;
+ }
+
+ scrollId = window.setTimeout(function() {
+ if (showScroll){
+ if ($(this).scrollTop()< logTop) {
+ $("#topScroll").fadeOut();
+ } else {
+ $("#topScroll").fadeIn();
+ }
+ }}, 250);
+ });
+
+ $(document).bind('mouseup', function (e) {
+ var $clicked = $(e.target);
+ if (!$clicked.parents().hasClass("favorite-dropdown") && !$clicked.parents().hasClass("FavoriteWidget")) {
+ favDropDown.hide(1, function () {
+ favContainer.addClass('favorite-container');
+ favContainer.removeClass('favorite-container-open');
+ });
+ }
+ if ($('#log-dropdown-options').is(':visible') && !$clicked.parents().hasClass('Dropdown')){
+ $('#log-dropdown-options').toggleClass('hideMe');
+ $('.Dropdown').toggleClass('Active');
+ }
+ });
+
+ $('#uxFavContainerLink').click(function () {
+ if ($(favDropDown).is(':visible')) {
+ favDropDown.hide(1, function(){
+ favContainer.addClass('favorite-container');
+ favContainer.removeClass('favorite-container-open');
+ });
+ }
+ else {
+ if (!gotScore) {
+ showFavoriteScore();
+ }
+
+ favContainer.addClass('favorite-container-open');
+ favContainer.removeClass('favorite-container');
+ favDropDown.show(1);
+ }
+ });
+
+ $('#dropdown-arrow').on('click', function(e){
+ e.preventDefault();
+ $('#log-dropdown-options').toggleClass('hideMe');
+ $('.Dropdown').toggleClass('Active');
+ });
+ // End -->
</script>
-
<script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-2020240-1']);
+ $(document).ready(function () {
+ $('#hlUpgrade').bind('click', function () {
+ var _this = $(this);
+ _gaq.push(['_trackEvent', 'Geocaching', 'Premium Upsell', 'Mini-profile Widget']);
+ setTimeout(function () { // Chrome requires a slight delay for tracking to fire.
+ window.location.href = _this.attr('href');
+ }, 100);
+ return false;
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ _gaq.push(['_require', 'inpage_linkid', '//www.google-analytics.com/plugins/ga/inpage_linkid.js']);
+ _gaq.push(['_setAccount', gaToken]);
_gaq.push(['_trackPageview']);
(function () {
var ga = document.createElement('script');
@@ -2926,8 +2723,6 @@ initalLogs = {"status":"success", "data": [{"LogID":278578940,"CacheID":2544319,
});
});
</script>
-
-
<!-- Quantcast Tag -->
<div id="Quantcast">
<script type="text/javascript">
@@ -2949,11 +2744,11 @@ initalLogs = {"status":"success", "data": [{"LogID":278578940,"CacheID":2544319,
<noscript>
<div style="display: none;">
<img src="http://pixel.quantserve.com/pixel/p-f6VPrfmR4cujU.gif" height="1" width="1"
- alt="Quantcast" /></div>
+ alt="Quantcast" />
+ </div>
</noscript>
</div>
<!-- End Quantcast tag -->
-
- <!-- Server: WEB08; Build: Web.HotFix_20121113.1 -->
+ <!-- Server: WEB09; Build: Web.HotFix_20130904.1 -->
</body>
</html>
diff --git a/tests/res/raw/gc430fm_published.html b/tests/res/raw/gc430fm_published.html
index 6d7d728..f5cbb31 100644
--- a/tests/res/raw/gc430fm_published.html
+++ b/tests/res/raw/gc430fm_published.html
@@ -1,224 +1,49 @@
+
<!DOCTYPE html>
<html lang="en" class="no-js">
-<head id="ctl00_Head1"><meta charset="utf-8" />
- <!--[if IE]><![endif]-->
- <title>
+<head id="ctl00_Head1"><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><title>
GC430FM Cache is Unpublished (Unknown Cache) in California, United States created by The North Star
-</title><meta name="DC.title" content="Geocaching - The Official Global GPS Cache Hunt Site" /><meta name="author" content="Groundspeak, Inc." /><meta name="DC.creator" content="Groundspeak, Inc." /><meta name="Copyright" content="Copyright (c) 2000-2012 Groundspeak, Inc. All Rights Reserved." /><!-- Copyright (c) 2000-2012 Groundspeak, Inc. All Rights Reserved. --><meta name="description" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta name="DC.subject" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta http-equiv="imagetoolbar" content="no" /><meta name="distribution" content="global" /><meta name="MSSmartTagsPreventParsing" content="true" /><meta name="rating" content="general" /><meta name="revisit-after" content="1 days" /><meta name="robots" content="all" /><meta http-equiv="X-UA-Compatible" content="IE=8" /><link rel="icon" href="/favicon.ico" /><link rel="shortcut icon" href="/favicon.ico" /><link rel="apple-touch-icon" href="/apple-touch-icon.png" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/reset.css" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/typography.css" /><link rel="stylesheet" type="text/css" media="screen,projection" href="../css/blueprint/src/grid.css" />
+</title><meta name="DC.title" content="Geocaching - The Official Global GPS Cache Hunt Site" /><meta name="author" content="Groundspeak, Inc." /><meta name="DC.creator" content="Groundspeak, Inc." /><meta name="Copyright" content="Copyright (c) 2000-2013 Groundspeak, Inc. All Rights Reserved." /><!-- Copyright (c) 2000-2013 Groundspeak, Inc. All Rights Reserved. --><meta name="description" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta name="DC.subject" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta http-equiv="imagetoolbar" content="no" /><meta name="distribution" content="global" /><meta name="MSSmartTagsPreventParsing" content="true" /><meta name="rating" content="general" /><meta name="revisit-after" content="1 days" /><meta name="robots" content="all" /><link rel="icon" href="/favicon.ico" /><link rel="shortcut icon" href="/favicon.ico" /><link rel="apple-touch-icon" href="/apple-touch-icon.png" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/reset.css" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/typography.css" /><link rel="stylesheet" type="text/css" media="screen,projection" href="../css/blueprint/src/grid.css" />
<!--[if lt IE 8]>
- <link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/ie.css" />
- <![endif]-->
+ <link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/ie.css" />
+ <![endif]-->
<link id="uxCssMaster" rel="stylesheet" type="text/css" media="screen,projection" href="../css/tlnMasterScreen.css?r=1" /><link id="uxCssMain" rel="stylesheet" type="text/css" media="all" href="../css/tlnMain.css?r=1" /><link rel="Stylesheet" type="text/css" media="all" href="../css/jqueryui1810/jquery-ui-1.8.10.custom.css" /><link rel="stylesheet" type="text/css" media="all" href="/js/jquery_plugins/jquery.jgrowl.css" /><link rel="stylesheet" type="text/css" media="print" href="../css/tlnMasterPrint.css" />
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ </script>
<script type="text/javascript" src="/js/modernizr-1.7.min.js"></script>
- <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
+
+ <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/js/jquery.truncate.min.js"></script>
+ <script type='text/javascript'>
+ var googletag = googletag || {};
+ googletag.cmd = googletag.cmd || [];
+ (function () {
+ var gads = document.createElement('script');
+ gads.async = true;
+ gads.type = 'text/javascript';
+ var useSSL = 'https:' == document.location.protocol;
+ gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';
+ var node = document.getElementsByTagName('script')[0];
+ node.parentNode.insertBefore(gads, node);
+ })();
+ </script>
+
+
<link href="/css/fancybox/jquery.fancybox.css" rel="stylesheet" type="text/css" />
<link href="/js/jquery_plugins/icalendar/jquery.icalendar.css" rel="stylesheet" type="text/css" />
- <link href="/js/jquery_plugins/tipTip/tipTip.css" rel="stylesheet" type="text/css" />
<link href="/js/jquery_plugins/qtip/jquery.qtip.css" rel="stylesheet" type="text/css" />
- <!--[if lte IE 8]>
- <style type="text/css" media="all">
- legend{
- position: absolute;
- top: -.6em;
- left: 1em;
- line-height: 1.3;
- }
- fieldset p{
- margin-top:1em;
- }
- img.CacheNoteHelpImg{
- top:-.2em;
- }
- </style>
- <![endif]-->
- <style type="text/css" media="screen,projection">
- #otherSearchOptions li
- {
- list-style-image: none;
- list-style-position: outside;
- list-style-type: none;
- }
- .ff
- {
- font-family: "Andale Mono" , "Courier New" ,Courier,monospace;
- }
- .fr
- {
- margin-top: 1.5em;
- float: right;
- }
- .fl
- {
- float: left;
- }
- .clsCell
- {
- border: 1px solid #c0cee3;
- font-size: 80%;
- background-color: #fff;
- }
- .clsResultTitle, .clsResultTitleNoBold
- {
- color: #0000de;
- }
- .clsResultDescription
- {
- color: #333;
- }
- .clsURL
- {
- color: #999;
- }
- a.title:link, a.title:visited, a.title:hover, a.title:active
- {
- color: #000;
- text-decoration: underline;
- }
- a.title
- {
- text-align: right;
- font-size: 10px;
- font-family: arial,sans-serif;
- padding: 0 1px 0 0;
- }
- #mapSizePager a:hover
- {
- font-weight: bold;
- }
- #mapSizePager ul
- {
- width: 100%;
- margin: 0;
- padding: 0;
- list-style: none;
- }
- #mapSizePager li
- {
- float: left;
- list-style: none;
- }
- #mapSizePager li a
- {
- font-family: verdana,sans-serif;
- font-size: x-small;
- display: block;
- margin: 0 2px 0 0;
- padding: 4px;
- text-decoration: none;
- border: solid 1px #c0c0c0;
- height: 10px;
- min-width: 10px;
- cursor: pointer;
- }
- #mapPrintingNotes
- {
- width: 280px;
- text-align: left;
- overflow: auto;
- }
- .inplace_field {
- width:100%;
- resize: none;
- }
- legend.note{
- background:url('../images/icons/16/user_note.png') no-repeat 0 0;
- padding-left:18px;
- }
- legend.warning{
- background:url('../images/icons/16/take_note.png') no-repeat 0 0;
- padding-left:18px;
- }
- fieldset.CacheNote{
- border-color: #e9a24c !important;
- background-color:#ffffde;
- position:relative;
- }
- .CacheNoteHelpImg{
- position:relative;
- cursor:pointer;
- top:-1em;
- right:-.75em;
- float:right;
- }
- .InformationWidget h3{
- margin-bottom:.5em;
- }
- .InformationWidget .AlignRight{
- font-size:.8em;
- }
- #tiptip_content{
- *background-color:#000;
- box-shadow:none;
- }
- .maxed{
- color:#992a2a;
- }
-
-
- span.ccu-parseverify-distance img{
- text-align:center !important;
- vertical-align:text-bottom !important;
- }
- .edit-cache-coordinates{
- text-decoration: none;
- color: #000 !important;
- background: url(/images/icons/16/edit.png) no-repeat right 0;
- padding:2px 20px 2px 0px;
- margin-right:4px;
- }
- .ccc-coord{
- cursor: text;
- font-family: Courier New, Sans-Serif;
- }
- .ccu-update dl {
- margin-bottom:.25em;
- }
- .ccu-update dt{
- float:left;
- min-width:90px;
- }
- .ccu-update .ui-button-text-only .ui-button-text{
- padding:.3em .75em;
- }
- .ccu-parseverify-coords{
- font-style:italic;
- margin-right:.25em;
- }
- .ccu-parseverify-accept, .ccu-parseverify-cancel{
- margin-top:-5px;
- }
- .ui-tooltip-widget .ui-tooltip-content{
- border-width:1px;
- background-color:#fff;
- border-color:#c0cee3;
- color:#594a42;
- padding:1em;
- width:420px;
- }
- .myLatLon {
- border-bottom:2px solid #c0cee3;
- font-style:italic;
- }
- .leaflet-control-attribution{
- padding:3px !important;
- }
- .leaflet-control-attribution img{
- vertical-align:middle;
- }
- </style>
- <link rel="Stylesheet" type="text/css" media="screen" href="/hide/css/CSPScreen.css" />
- <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/v5/leaflet.css" />
+ <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/0.5.1/leaflet.css" />
<!--[if IE]>
- <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/v5/leaflet.ie.css" />
- <![endif]-->
- <script type="text/javascript" language="javascript" src="/js/leaflet/v5/leaflet.js"></script>
- <script type="text/javascript" src="/js/jquery.pagemethods.js"></script>
+ <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/0.5.1/leaflet.ie.css" />
+ <![endif]-->
+ <link rel="stylesheet" type="text/css" media="screen" href="/css/seek/beta.css" />
+ <script type="text/javascript" src="/js/leaflet/0.5.1/leaflet.js"></script>
<script type="text/javascript" src="/js/geometa.js"></script>
<script type="text/javascript">
var userToken = null,
@@ -238,15 +63,16 @@
}
})();
</script>
-<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7" property="og:url" /><meta name="og:description" content="Solve the mystery and then use a smartphone or GPS device to navigate to the solution coordinates. Look for a micro hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 1.5 and difficulty is 4 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/8.png" property="og:image" /><meta name="og:title" content="Cache is Unpublished" property="og:title" /><meta name="description" content="Cache is Unpublished (GC430FM) was created by The North Star on 12/19/2012. It&#39;s a Micro size geocache, with difficulty of 4, terrain of 1.5. It&#39;s located in California, United States. The cache is not at the posted coordinates but is less than 2 miles awayI obtained a Geocache waypoint (GC#) on 02/12/12 for a cache that was not published." /></head>
-<body >
- <form name="aspnetForm" method="post" action="cache_details.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7" onsubmit="javascript:return WebForm_OnSubmit();" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ctl00_btnSignIn')" id="aspnetForm">
+<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?wp=GC430FM&amp;title=cache-is-unpublished" property="og:url" /><meta name="og:description" content="Solve the mystery and then use a smartphone or GPS device to navigate to the solution coordinates. Look for a micro hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 1.5 and difficulty is 4 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/8.png" property="og:image" /><meta name="og:title" content="Cache is Unpublished" property="og:title" /><script>function utmx_section(){}function utmx(){}(function(){var k='3682814-19',d=document,l=d.location,c=d.cookie; if(l.search.indexOf('utm_expid='+k)>0)return; function f(n){if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);return escape(c.substring(i+n.length+1,j<0?c.length:j))}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;d.write('<sc'+'ript src=" '+'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com/ga_exp.js?'+'utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+'" type="text/javascript" charset="utf-8"><\/sc'+'ript>')})();</script><script>utmx('url','A/B');</script><meta name="description" content="Cache is Unpublished (GC430FM) was created by The North Star on 12/19/2012. It&#39;s a Micro size geocache, with difficulty of 4, terrain of 1.5. It&#39;s located in California, United States. The cache is not at the posted coordinates but is less than 2 miles awayI obtained a Geocache waypoint (GC#) on February 12, 2012 for a cache that was not published." /><link rel="canonical" href="http://www.geocaching.com/seek/cache_details.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7" /></head>
+<body background="http://img.geocaching.com/cache/large/1856a78c-e27f-4fa5-a66d-2a083c6e9c21.jpg" class="CacheDetailsPage">
+ <form name="aspnetForm" method="post" action="/geocache/GC430FM_cache-is-unpublished" id="aspnetForm">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
-<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="2" />
-<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTc1MjcwNzgxNg8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzMzNzI4MjIWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYSAgUPFgIfAWRkAgcPFgIfA2cWAgIdDw8WAh4LUG9zdEJhY2tVcmwFfmh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9yZWRpcj0lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmZ3VpZCUzZGFmMzhhYWY5LTUzODYtNDBiYi05MmYwLTAyNWViYzc3MDBhN2RkAggPZBYCAgUPDxYCHgtOYXZpZ2F0ZVVybAWlAWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmZ3VpZCUzZGFmMzhhYWY5LTUzODYtNDBiYi05MmYwLTAyNWViYzc3MDBhN2RkAgwPFgIfA2dkAiwPZBYEAgMPFgIfAQUHRW5nbGlzaGQCBQ8WAh4LXyFJdGVtQ291bnQCEBYgZg9kFgICAQ8PFggeD0NvbW1hbmRBcmd1bWVudAUFZW4tVVMeC0NvbW1hbmROYW1lBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2geEENhdXNlc1ZhbGlkYXRpb25oZGQCAQ9kFgICAQ8PFggfBwUFZGUtREUfCAUNU2V0VGVtcExvY2FsZR8BBQdEZXV0c2NoHwloZGQCAg9kFgICAQ8PFggfBwUFZnItRlIfCAUNU2V0VGVtcExvY2FsZR8BBQlGcmFuw6dhaXMfCWhkZAIDD2QWAgIBDw8WCB8HBQVwdC1QVB8IBQ1TZXRUZW1wTG9jYWxlHwEFClBvcnR1Z3XDqnMfCWhkZAIED2QWAgIBDw8WCB8HBQVjcy1DWh8IBQ1TZXRUZW1wTG9jYWxlHwEFCcSMZcWhdGluYR8JaGRkAgUPZBYCAgEPDxYIHwcFBXN2LVNFHwgFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8JaGRkAgYPZBYCAgEPDxYIHwcFBWVzLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCWhkZAIHD2QWAgIBDw8WCB8HBQVpdC1JVB8IBQ1TZXRUZW1wTG9jYWxlHwEFCEl0YWxpYW5vHwloZGQCCA9kFgICAQ8PFggfBwUFbmwtTkwfCAUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwloZGQCCQ9kFgICAQ8PFggfBwUFY2EtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwloZGQCCg9kFgICAQ8PFggfBwUFcGwtUEwfCAUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCWhkZAILD2QWAgIBDw8WCB8HBQVldC1FRR8IBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwloZGQCDA9kFgICAQ8PFggfBwUFbmItTk8fCAUNU2V0VGVtcExvY2FsZR8BBQ5Ob3JzaywgQm9rbcOlbB8JaGRkAg0PZBYCAgEPDxYIHwcFBWtvLUtSHwgFDVNldFRlbXBMb2NhbGUfAQUJ7ZWc6rWt7Ja0HwloZGQCDg9kFgICAQ8PFggfBwUFaHUtSFUfCAUNU2V0VGVtcExvY2FsZR8BBQZNYWd5YXIfCWhkZAIPD2QWAgIBDw8WCB8HBQVyby1STx8IBQ1TZXRUZW1wTG9jYWxlHwEFCFJvbcOibsSDHwloZGQCLg9kFgICAw8WAh8DaGQCLw8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYuAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0M0MzBGTWRkAgIPFgIfAQWeATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy84LmdpZiIgYWx0PSJVbmtub3duIENhY2hlIiB0aXRsZT0iVW5rbm93biBDYWNoZSIgLz48L2E+ZAIGD2QWBAIBDxYCHwNnZAIGDxYCHwNoZAIHDxYCHwEFHEluIENhbGlmb3JuaWEsIFVuaXRlZCBTdGF0ZXNkAgsPFgIfA2hkAgwPFgIfA2dkAg0PDxYCHwNoZGQCEA8WAh8DaBYCAgEPFgIfAQWXAllvdSBtdXN0IGJlIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luLz9SRVNFVD1ZJnJlZGlyPWh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay9jYWNoZV9kZXRhaWxzLmFzcHg/Z3VpZD1hZjM4YWFmOS01Mzg2LTQwYmItOTJmMC0wMjVlYmM3NzAwYTciIHRpdGxlPSJMb2cgSW4iPmxvZ2dlZCBpbjwvYT4gd2l0aCBhIEdlb2NhY2hpbmcuY29tIGFjY291bnQgdG8gdmlldyB0aGUgc3BlY2lmaWMgbG9jYXRpb24gb2YgdGhpcyBnZW9jYWNoZS4gSXQncyBmcmVlIWQCEQ8WAh8DaGQCEg8WAh8DaBYOAgMPFgIeBXN0eWxlBQ1kaXNwbGF5Om5vbmU7FgICAQ8WAh8BZWQCDQ8PFgQfBQUzY2RwZi5hc3B4P2d1aWQ9YWYzOGFhZjktNTM4Ni00MGJiLTkyZjAtMDI1ZWJjNzcwMGE3HwNoZGQCDw8PFgIfBQU4Y2RwZi5hc3B4P2d1aWQ9YWYzOGFhZjktNTM4Ni00MGJiLTkyZjAtMDI1ZWJjNzcwMGE3JmxjPTVkZAIRDw8WAh8FBTljZHBmLmFzcHg/Z3VpZD1hZjM4YWFmOS01Mzg2LTQwYmItOTJmMC0wMjVlYmM3NzAwYTcmbGM9MTBkZAITDw8WBh8FBV5odHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/Zj1kJmhsPWVuJnNhZGRyPSZkYWRkcj0zNy4zOTgzMzMsLTEyMS45MTY2NjcoQ2FjaGUraXMrVW5wdWJsaXNoZWQpHgZUYXJnZXQFBl9ibGFuax8DaGRkAhUPFgIfA2hkAhsPFgIfA2gWBAIBDw8WBh4JRm9yZUNvbG9yCk4eB0VuYWJsZWRoHgRfIVNCAgRkZAIDDw8WBh8NCk4fDmgfDwIEZGQCFw9kFghmDxYCHwNoZAIBDw8WAh8DaGRkAgIPDxYCHwNoZGQCAw8WAh8DaGQCGA9kFgICAw8PFgIfAQUHRGVjcnlwdGRkAhkPFgIfAQWiAVF2cSBsYmggeGFiaiBndW5nIGxiaCBwbmEgc3ZhcSBuIHl2ZmcgYnMgPGI+RXJwcmFneWwgSXZyanJxIFBucHVyZjwvYj4gaGFxcmUgPGI+TGJoZSBDZWJzdnlyPC9iPj8g4oCcSXZyaiBOeXnigJ0gZ2IgZnJyIGd1ciB5bmZnIDUwIHBucHVyZiBndW5nIGxiaCB1bmlyIGl2cmpyceKApmQCHA8WAh8DaGQCHQ8PFgIfA2hkZAIfDxYCHwNoZAIiD2QWAgIBD2QWBAIBDw8WAh8BBf8DPGlmcmFtZSB0eXBlPSJpZnJhbWUiIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0JlNpdGVJRD0xJlg9JzE2NTQ0OTU2NDhjOTRjNGI5ZDE1YzUxNTUyYzU3MTBhJyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIE1hcmdpbndpZHRoPSIwIiBNYXJnaW5oZWlnaHQ9IjAiIEhzcGFjZT0iMCIgVnNwYWNlPSIwIiBGcmFtZWJvcmRlcj0iMCIgU2Nyb2xsaW5nPSJubyIgc3R5bGU9IndpZHRoOjEyMHB4O0hlaWdodDoyNDBweDsiPjxhIGhyZWY9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUNsaWNrJjtNb2RlPUhUTUwmU2l0ZUlEPTEiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0Jk1vZGU9SFRNTCZTaXRlSUQ9MSIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIGJvcmRlcj0iMCIgYWx0PSIiIC8+PC9hPjwvaWZyYW1lPmRkAgMPFgIeCWlubmVyaHRtbAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJg9kFgQCBQ8PFgIfA2dkZAIJDw8WAh8FBTx+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD1hZjM4YWFmOS01Mzg2LTQwYmItOTJmMC0wMjVlYmM3NzAwYTdkZAInDw8WAh8DZ2QWAmYPFgIfBgIBFgICAQ9kFgRmDxUDAFdodHRw" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="Oi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD05ZmQzOWZiOC05NTAyLTQ3YjQtYWUwOC04NmNlMjM2ZmM2NjEbZm1vcmFlcyYjMzk7IHNvbHZlZCBidXQgZmFyZAICDxUCTGh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD00NDBjZjYxYi1kY2YzLTQyMjAtYTg3Ny1jZTMxMmYxMDM5MjEHZm1vcmFlc2QCKQ9kFhQCAQ8PFgIfA2hkZAIHDw8WAh8DaGRkAhEPDxYCHwUFIy9zZWVrL25lYXJlc3QuYXNweD91PVRoZStOb3J0aCtTdGFyZGQCFQ8PFgIfBQUkL3NlZWsvbmVhcmVzdC5hc3B4P3VsPVRoZStOb3J0aCtTdGFyZGQCGQ8WAh8DaBYKAgMPDxYCHwUFWC9zZWVrL25lYXJlc3QuYXNweD90eD00MDg2MTgyMS0xODM1LTRlMTEtYjY2Ni04ZDQxMDY0ZDAzZmUmbGF0PTM3LjM5ODMzMyZsbmc9LTEyMS45MTY2NjdkZAIFDw8WAh8FBVwvc2Vlay9uZWFyZXN0LmFzcHg/dHg9NDA4NjE4MjEtMTgzNS00ZTExLWI2NjYtOGQ0MTA2NGQwM2ZlJmxhdD0zNy4zOTgzMzMmbG5nPS0xMjEuOTE2NjY3JmY9MWRkAgkPDxYCHwUFMC9zZWVrL25lYXJlc3QuYXNweD9sYXQ9MzcuMzk4MzMzJmxuZz0tMTIxLjkxNjY2N2RkAgsPDxYCHwUFNC9zZWVrL25lYXJlc3QuYXNweD9sYXQ9MzcuMzk4MzMzJmxuZz0tMTIxLjkxNjY2NyZmPTFkZAIPDw8WAh8FBUpodHRwOi8vd3d3LndheW1hcmtpbmcuY29tL2RpcmVjdG9yeS5hc3B4P2Y9MSZsYXQ9MzcuMzk4MzMzJmxvbj0tMTIxLjkxNjY2N2RkAhsPFgIfA2hkAh8PDxYCHwUFIS9yZXZpZXdzL2hvdGVscy1pbi1NaWxwaXRhcyxDQSxVU2RkAiEPDxYCHwNoZGQCIw8PFgIfA2hkZAInD2QWCAIBDxYCHwEFDzcgTG9nZ2VkIFZpc2l0c2QCBw8PFgIfBQVDfi9zZWVrL2NhY2hlX2xvZ2Jvb2suYXNweD9ndWlkPWFmMzhhYWY5LTUzODYtNDBiYi05MmYwLTAyNWViYzc3MDBhN2RkAggPFgIfA2hkAgkPDxYCHwNoZGQCKg8WAh8BBQVmYWxzZWQCKw8WAh8BBR5sYXQ9bnVsbDtsbmc9bnVsbDtndWlkPW51bGw7DQpkAiwPFgIfAQV1dHJ5IHsgX2dhcS5wdXNoKFsnX3RyYWNrRXZlbnQnLCAnR2VvY2FjaGluZycsICdDYWNoZURldGFpbHNNZW1iZXJUeXBlJywgJ05vdFNpZ25lZEluJywgbnVsbCwgdHJ1ZV0pOyB9IGNhdGNoKGVycikgeyB9ZAIwDxYCHwNoZAIxD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIfBgIQFiBmD2QWAgIBDw8WCB8HBQVlbi1VUx8IBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2gfCWhkZAIBD2QWAgIBDw8WCB8HBQVkZS1ERR8IBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCWhkZAICD2QWAgIBDw8WCB8HBQVmci1GUh8IBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8JaGRkAgMPZBYCAgEPDxYIHwcFBXB0LVBUHwgFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8JaGRkAgQPZBYCAgEPDxYIHwcFBWNzLUNaHwgFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwloZGQCBQ9kFgICAQ8PFggfBwUFc3YtU0UfCAUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHwloZGQCBg9kFgICAQ8PFggfBwUFZXMtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8JaGRkAgcPZBYCAgEPDxYIHwcFBWl0LUlUHwgFDVNldFRlbXBMb2NhbGUfAQUISXRhbGlhbm8fCWhkZAIID2QWAgIBDw8WCB8HBQVubC1OTB8IBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfCWhkZAIJD2QWAgIBDw8WCB8HBQVjYS1FUx8IBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfCWhkZAIKD2QWAgIBDw8WCB8HBQVwbC1QTB8IBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8JaGRkAgsPZBYCAgEPDxYIHwcFBWV0LUVFHwgFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfCWhkZAIMD2QWAgIBDw8WCB8HBQVuYi1OTx8IBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwloZGQCDQ9kFgICAQ8PFggfBwUFa28tS1IfCAUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCWhkZAIOD2QWAgIBDw8WCB8HBQVodS1IVR8IBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8JaGRkAg8PZBYCAgEPDxYIHwcFBXJvLVJPHwgFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCWhkZAIDDxYCHwEFK1NlcnZlcjogV0VCMDM7IEJ1aWxkOiBXZWIuSG90Rml4XzIwMTIxMjExLjFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBRJjdGwwMCRjYlJlbWVtYmVyTWUTsUNZ99o/ZMkVlQ0TmeDu4Dizww==" />
+<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="3" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE1Mzk0NTE5MTEPFgIeBEMuSUQoKVlTeXN0ZW0uSW50NjQsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQczMzcyODIyFgJmD2QWBmYPZBYKAgYPFgIeBFRleHQFYjxtZXRhIG5hbWU9IkNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLTIwMTMgR3JvdW5kc3BlYWssIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iIC8+ZAIHDxYCHwEFRzwhLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMTMgR3JvdW5kc3BlYWssIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gLS0+ZAIZDxYCHgRocmVmBR1+L2Nzcy90bG5NYXN0ZXJTY3JlZW4uY3NzP3I9MWQCGg8WAh8CBRV+L2Nzcy90bG5NYWluLmNzcz9yPTFkAh8PFgIeB1Zpc2libGVoZAIBDxYCHgZhY3Rpb24FJi9nZW9jYWNoZS9HQzQzMEZNX2NhY2hlLWlzLXVucHVibGlzaGVkFhYCCw8WAh8BZGQCDQ9kFgICBQ8WAh8DZxYIAgEPDxYCHghJbWFnZVVybAVOaHR0cDovL2ltZy5nZW9jYWNoaW5nLmNvbS91c2VyL2F2YXRhci82NDJkMjc3MS00MjRlLTRlZTYtYmViNi1lZmVjZGUzNDA2ZmMuanBnZGQCAw8WAh8BBXRIZWxsbywgPGEgaHJlZj0iL215L2RlZmF1bHQuYXNweCIgdGl0bGU9IlZpZXcgUHJvZmlsZSBmb3IgQmFuYW5ld2VpemVuIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+QmFuYW5ld2VpemVuPC9hPmQCBQ8PFgIeC05hdmlnYXRlVXJsBaUBaHR0cHM6Ly93d3cuZ2VvY2FjaGluZy5jb20vbG9naW4vZGVmYXVsdC5hc3B4P1JFU0VUPVkmcmVkaXI9aHR0cCUzYSUyZiUyZnd3dy5nZW9jYWNoaW5nLmNvbSUyZnNlZWslMmZjYWNoZV9kZXRhaWxzLmFzcHglM2Z3cCUzZEdDNDMwRk0lMjZ0aXRsZSUzZGNhY2hlLWlzLXVucHVibGlzaGVkZGQCCw8WAh8BBRA0NjIgQ2FjaGVzIEZvdW5kZAIXDxYCHwNnFgICDQ8PFgIfBgVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTMxODkyNjc4LTExMTctNDZlYi1hYTNiLTE5MWMyMGJkNjYwN2RkAh0PDxYCHwNnZGQCKQ8WAh8DZ2QCVw9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHgtfIUl0ZW1Db3VudAIUFihmD2QWAgIBDw8WCB4PQ29tbWFuZEFyZ3VtZW50BQVlbi1VUx4LQ29tbWFuZE5hbWUFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB4QQ2F1c2VzVmFsaWRhdGlvbmhkZAIBD2QWAgIBDw8WCB8IBQVkZS1ERR8JBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCmhkZAICD2QWAgIBDw8WCB8IBQVmci1GUh8JBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8KaGRkAgMPZBYCAgEPDxYIHwgFBXB0LVBUHwkFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8KaGRkAgQPZBYCAgEPDxYIHwgFBWNzLUNaHwkFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwpoZGQCBQ9kFgICAQ8PFggfCAUFZGEtREsfCQUNU2V0VGVtcExvY2FsZR8BBQVEYW5zax8KaGRkAgYPZBYCAgEPDxYIHwgFBXN2LVNFHwkFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8KaGRkAgcPZBYCAgEPDxYIHwgFBWVzLUVTHwkFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCmhkZAIID2QWAgIBDw8WCB8IBQVldC1FRR8JBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwpoZGQCCQ9kFgICAQ8PFggfCAUFaXQtSVQfCQUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8KaGRkAgoPZBYCAgEPDxYIHwgFBWVsLUdSHwkFDVNldFRlbXBMb2NhbGUfAQUQzpXOu867zrfOvc65zrrOrB8KaGRkAgsPZBYCAgEPDxYIHwgFBWx2LUxWHwkFDVNldFRlbXBMb2NhbGUfAQUJTGF0dmllxaF1HwpoZGQCDA9kFgICAQ8PFggfCAUFbmwtTkwfCQUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwpoZGQCDQ9kFgICAQ8PFggfCAUFY2EtRVMfCQUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwpoZGQCDg9kFgICAQ8PFggfCAUFcGwtUEwfCQUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCmhkZAIPD2QWAgIBDw8WCB8IBQVuYi1OTx8JBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwpoZGQCEA9kFgICAQ8PFggfCAUFa28tS1IfCQUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCmhkZAIRD2QWAgIBDw8WCB8IBQVodS1IVR8JBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8KaGRkAhIPZBYCAgEPDxYIHwgFBXJvLVJPHwkFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCmhkZAITD2QWAgIBDw8WCB8IBQVqYS1KUB8JBQ1TZXRUZW1wTG9jYWxlHwEFCeaXpeacrOiqnh8KaGRkAlsPZBYCAgMPFgIfA2hkAl0PFgIeBWNsYXNzBQxzcGFuLTI0IGxhc3QWAgIBD2QWJgIBD2QWAmYPZBYCAgEPDxYCHwEFB0dDNDMwRk1kZAICDxYCHwEFngE8YSBocmVmPSIvYWJvdXQvY2FjaGVfdHlwZXMuYXNweCIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJBYm91dCBDYWNoZSBUeXBlcyI+PGltZyBzcmM9Ii9pbWFnZXMvV3B0VHlwZXMvOC5naWYiIGFsdD0iVW5rbm93biBDYWNoZSIgdGl0bGU9IlVua25vd24gQ2FjaGUiIC8+PC9hPmQCBg9kFgQCAQ8WAh8DZ2QCBw8WAh8DaGQCCg9kFgYCAQ8WAh8BBQEzZAIFDxYCHwNoZAIHDw8WAh8GBUQvc2Vlay9jYWNoZV9mYXZvcml0ZWQuYXNweD9ndWlkPWFmMzhhYWY5LTUzODYtNDBiYi05MmYwLTAyNWViYzc3MDBhN2RkAgwPDxYCHwNoZGQCDw8WAh8DaGQCEA8WAh8DaGQCEQ9kFgwCAw9kFgICAQ8WAh8BBRtVVE06IDEwUyBFIDU5NTg4NyBOIDQxMzk2MTJkAg0PDxYCHwYFM2NkcGYuYXNweD9ndWlkPWFmMzhhYWY5LTUzODYtNDBiYi05MmYwLTAyNWViYzc3MDBhN2RkAg8PDxYCHwYFOGNkcGYuYXNweD9ndWlkPWFmMzhhYWY5LTUzODYtNDBiYi05MmYwLTAyNWViYzc3MDBhNyZsYz01ZGQCEQ8PFgIfBgU5Y2RwZi5hc3B4P2d1aWQ9YWYzOGFhZjktNTM4Ni00MGJiLTkyZjAtMDI1ZWJjNzcwMGE3JmxjPTEwZGQCEw8PFgQfBgWAAWh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9NDguODYxMDAyLDkuMTg2NTc3IChIb21lIExvY2F0aW9uKSZkYWRkcj0zNy4zOTgzMzMsLTEyMS45MTY2NjcoQ2FjaGUraXMrVW5wdWJsaXNoZWQpHgZUYXJnZXQFBl9ibGFua2RkAhsPZBYIZg8PFgQeCUZvcmVDb2xvcgweBF8hU0ICBGRkAgEPDxYEHw0MHw4CBGRkAgIPDxYCHwNnFgIeB29uY2xpY2sFO3MyZ3BzKCdhZjM4YWFmOS01Mzg2LTQwYmItOTJmMC0wMjVlYmM3NzAwYTcnKTtyZXR1cm4gZmFsc2U7ZAIDDw8WAh8DZxYCHw8FIHMycGhvbmUoJ0dDNDMwRk0nKTtyZXR1cm4gZmFsc2U7ZAITDxYCHwNnZAIXD2QWCGYPFgIfA2hkAgEPDxYCHwNoZGQCAg8PFgIfA2hkZAIDDxYCHwNoZAIYD2QWAgIDDw8WAh8BBQdEZWNyeXB0ZGQCGQ8WAh8BBaIBUXZxIGxiaCB4YWJqIGd1bmcgbGJoIHBuYSBzdmFxIG4geXZmZyBicyA8Yj5FcnByYWd5bCBJdnJqcnEgUG5wdXJmPC9iPiBoYXFyZSA8Yj5MYmhlIENlYnN2eXI8L2I+PyDigJxJdnJqIE55eeKAnSBnYiBmcnIgZ3VyIHluZmcgNTAgcG5wdXJmIGd1bmcgbGJoIHVuaXIgaXZyanJx4oCmZAIbD2QWBAIBDxYEHwIFHy9zZWVrL2xvZy5hc3B4P0lEPTMzNzI4MjImbGNuPTEeCWlubmVyaHRtbAUOTG9nIHlvdXIgdmlzaXRkAgIPFgIfA2hkAhwPFgIfA2dkAh0PFgIfA2hkAiAPZBYCAgMPFgIfEAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJA9kFgQCBQ8PFgIfA2dkZAIJDw8WAh8GBTx+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD1hZjM4YWFmOS01Mzg2LTQwYmItOTJmMC0wMjVlYmM3NzAwYTdkZAIlDw8WAh8DZ2QWAmYPFgIfBwIBFgICAQ9kFgJmDxUCAO0BPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9OWZkMzlmYjgtOTUwMi00N2I0LWFlMDgtODZjZTIzNmZjNjYx" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="Ij5mbW9yYWVzJiMzOTsgc29sdmVkIGJ1dCBmYXI8L2E+PGJyIC8+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD00NDBjZjYxYi1kY2YzLTQyMjAtYTg3Ny1jZTMxMmYxMDM5MjEiPmZtb3JhZXM8L2E+ZAInD2QWEgIBDw8WAh8DaGRkAgMPZBYCAgEPDxYCHwYFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD1hZjM4YWFmOS01Mzg2LTQwYmItOTJmMC0wMjVlYmM3NzAwYTcmRFM9MWRkAgcPDxYGHgZSRFMuSUQLKXZHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNzb24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDk5NS4xNjEwOSwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAczMzcyODIyHwNoZGQCCQ8PFgIfA2dkFgICAQ8PFgQfBgUvL21hcC9kZWZhdWx0LmFzcHg/bGF0PTM3LjM5ODMzMyZsbmc9LTEyMS45MTY2NjcfA2dkZAIPDxYCHwEFkQEuLi5vdGhlciBjYWNoZXMgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3U9VGhlK05vcnRoK1N0YXIiPmhpZGRlbjwvYT4gb3IgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3VsPVRoZStOb3J0aCtTdGFyIj5mb3VuZDwvYT4gYnkgdGhpcyB1c2VyZAIRD2QWBgIBDxYCHwEFhQIuLi5uZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTQwODYxODIxLTE4MzUtNGUxMS1iNjY2LThkNDEwNjRkMDNmZSZsYXQ9MzcuMzk4MzMzJmxuZz0tMTIxLjkxNjY2NyI+Y2FjaGVzIG9mIHRoaXMgdHlwZTwvYT4sIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD00MDg2MTgyMS0xODM1LTRlMTEtYjY2Ni04ZDQxMDY0ZDAzZmUmbGF0PTM3LjM5ODMzMyZsbmc9LTEyMS45MTY2NjcmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgMPFgIfAQWsAS4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD0zNy4zOTgzMzMmbG5nPS0xMjEuOTE2NjY3Ij5jYWNoZXM8L2E+LCA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTM3LjM5ODMzMyZsbmc9LTEyMS45MTY2NjcmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgUPFgIfAQWBAS4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iaHR0cDovL3d3dy53YXltYXJraW5nLmNvbS9kaXJlY3RvcnkuYXNweD9mPTEmbGF0PTM3LjM5ODMzMyZsb249LTEyMS45MTY2NjciPndheW1hcmtzIG9uIFdheW1hcmtpbmcuY29tPC9hPmQCEw9kFgICAQ8WAh8BBXAuLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFyay9uZWFyZXN0LmFzcHg/bGF0PTM3LjM5ODMzMyZsb249LTEyMS45MTY2NjciPmJlbmNobWFya3M8L2E+ZAIXD2QWAgIBDw8WBB8BBeUJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9MzcuMzk4MzMmbG5nPS0xMjEuOTE2NjciIHRhcmdldD0iX2JsYW5rIj5HZW9jYWNoaW5nLmNvbSBNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5teXRvcG8uY29tL21hcHMuY2ZtP2xhdD0zNy4zOTgzMyZsb249LTEyMS45MTY2NyZwaWQ9Z3JvdW5kc3BlYWsiIHRhcmdldD0iX2JsYW5rIj5NeVRvcG8gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/cT1OKzM3JWMyJWIwKzIzLjkwMCtXKzEyMSVjMiViMCs1NS4wMDArKEdDNDMwRk0pKyIgdGFyZ2V0PSJfYmxhbmsiPkdvb2dsZSBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWFwcXVlc3QuY29tL21hcHMvbWFwLmFkcD9zZWFyY2h0eXBlPWFkZHJlc3MmZm9ybXR5cGU9bGF0bG9uZyZsYXRsb25ndHlwZT1kZWNpbWFsJmxhdGl0dWRlPTM3LjM5ODMzJmxvbmdpdHVkZT0tMTIxLjkxNjY3Jnpvb209MTAiIHRhcmdldD0iX2JsYW5rIj5NYXBRdWVzdDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuMzcuMzk4MzNfLTEyMS45MTY2N19HQzQzMEZNIiB0YXJnZXQ9Il9ibGFuayI+QmluZyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLnlhaG9vLmNvbS8jbGF0PTM3LjM5ODMzJmxvbj0tMTIxLjkxNjY3Jnpvb209MTYmcT0zNy4zOTgzMywtMTIxLjkxNjY3JmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbXNybWFwcy5jb20vaW1hZ2UuYXNweD9Mb249LTEyMS45MTY2NyZMYXQ9MzcuMzk4MzMmdz0xJnJlZj1HfC0xMjEuOTE2NjcsMzcuMzk4MzMiIHRhcmdldD0iX2JsYW5rIj5NU1IgTWFwcyAoRm9ybWVybHkgVGVycmFzZXJ2ZXIpPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmN5Y2xlbWFwLm9yZy8/em9vbT0xMiZsYXQ9MzcuMzk4MzMmbG9uPS0xMjEuOTE2NjciIHRhcmdldD0iX2JsYW5rIj5PcGVuQ3ljbGVNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8/bWxhdD0zNy4zOTgzMyZtbG9uPS0xMjEuOTE2Njcmem9vbT0xMiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+PC9saT4fA2dkZAIbD2QWBgIBDxYCHwEFEDIzIExvZ2dlZCBWaXNpdHNkAgcPDxYCHwYFQ34vc2Vlay9jYWNoZV9sb2dib29rLmFzcHg/Z3VpZD1hZjM4YWFmOS01Mzg2LTQwYmItOTJmMC0wMjVlYmM3NzAwYTdkZAIJDw8WBB8GBT1+L3NlZWsvZ2FsbGVyeS5hc3B4P2d1aWQ9YWYzOGFhZjktNTM4Ni00MGJiLTkyZjAtMDI1ZWJjNzcwMGE3HwEFFlZpZXcgdGhlIEltYWdlIEdhbGxlcnlkZAJfDxYCHwNoFgICAQ8PZBYCHgVzdHlsZQUMd2lkdGg6MTIwcHg7ZAJhD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIfBwIUFihmD2QWAgIBDw8WCB8IBQVlbi1VUx8JBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2gfCmhkZAIBD2QWAgIBDw8WCB8IBQVkZS1ERR8JBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCmhkZAICD2QWAgIBDw8WCB8IBQVmci1GUh8JBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8KaGRkAgMPZBYCAgEPDxYIHwgFBXB0LVBUHwkFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8KaGRkAgQPZBYCAgEPDxYIHwgFBWNzLUNaHwkFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwpoZGQCBQ9kFgICAQ8PFggfCAUFZGEtREsfCQUNU2V0VGVtcExvY2FsZR8BBQVEYW5zax8KaGRkAgYPZBYCAgEPDxYIHwgFBXN2LVNFHwkFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8KaGRkAgcPZBYCAgEPDxYIHwgFBWVzLUVTHwkFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCmhkZAIID2QWAgIBDw8WCB8IBQVldC1FRR8JBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwpoZGQCCQ9kFgICAQ8PFggfCAUFaXQtSVQfCQUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8KaGRkAgoPZBYCAgEPDxYIHwgFBWVsLUdSHwkFDVNldFRlbXBMb2NhbGUfAQUQzpXOu867zrfOvc65zrrOrB8KaGRkAgsPZBYCAgEPDxYIHwgFBWx2LUxWHwkFDVNldFRlbXBMb2NhbGUfAQUJTGF0dmllxaF1HwpoZGQCDA9kFgICAQ8PFggfCAUFbmwtTkwfCQUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwpoZGQCDQ9kFgICAQ8PFggfCAUFY2EtRVMfCQUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwpoZGQCDg9kFgICAQ8PFggfCAUFcGwtUEwfCQUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCmhkZAIPD2QWAgIBDw8WCB8IBQVuYi1OTx8JBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwpoZGQCEA9kFgICAQ8PFggfCAUFa28tS1IfCQUNU2V0" />
+<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="VGVtcExvY2FsZR8BBQntlZzqta3slrQfCmhkZAIRD2QWAgIBDw8WCB8IBQVodS1IVR8JBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8KaGRkAhIPZBYCAgEPDxYIHwgFBXJvLVJPHwkFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCmhkZAITD2QWAgIBDw8WCB8IBQVqYS1KUB8JBQ1TZXRUZW1wTG9jYWxlHwEFCeaXpeacrOiqnh8KaGRkApUBDxYCHwEFECZjb3B5OyAyMDAwLTIwMTNkAgMPFgIfAQUrU2VydmVyOiBXRUIxMzsgQnVpbGQ6IFdlYi5Ib3RGaXhfMjAxMzA5MDQuMWRklT5Pm4SVKU0T8jhdR2z6hHKbztU=" />
</div>
<script type="text/javascript">
@@ -266,30 +92,15 @@ function __doPostBack(eventTarget, eventArgument) {
</script>
-<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&amp;t=634449413070371108" type="text/javascript"></script>
+<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&amp;t=634981132943076885" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=8q09cuy9-PZDS8eZx6HLVXd3YZywgUmuoy8VVtGr3vaISS8ybaBLyQLFlq93nr2dlYP0QJWcJvooQKkloTdALTrS571k1UcPpD2pbXbpthIOf2Mn8gCnpyvfv-ZudWTMi0y39YZC0-Q0yjjxQ82yTlKdhBw1&amp;t=6df0ad7a" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&amp;t=2610f696" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&amp;t=2610f696" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=l5IqBBbOFPRmpVAJwxQpHQyZ16ITBnk7fYRIeFc1JaDh64igpOv-k92v3DpzWBikWWvRdoxgNXda9cdmIFt2Ryy2gD2Tv71tVdwVNB4i-d1_vwLdJifCsG55PNiibmPX-x1Vspbf6jGBVWDKxT4kuLr2vWh-XRcY7PiryWks0UgjSCXEHO05VytTmCI6A-IhnCg2kD_i3YytsXr36qf0k6q0vQ41" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=mw8CUwVrYP9IGhC7WIGT8qdlVInGzqviii3RV8GrEEiOV2Nqjk57cAorEy9ACR1-rU7I3CZphWXcx81x-LDKIItu7BGPceT7Q61MOAXhSyJyW2DF3crLIX0Xef7vI1s2RLsp2bf8Aazkh-w4559ltQCi1H8uzBcnORltR9bo05Oe5VlRs1WnFqxyOK9aLEH4pBXNx8Bhb2-oIOLExj6kkCQgF06_A6ksiNnQXuGaKfXh1LjjCyujVv1xsxL_muSivN4bS4R4JR4M2Z3WmsBSnQXzJkIKkQB7kOS3JYimpNQ7sw1_qOYPZVB0xYbSCGD-xptYnX3Q4DLGiBNW4mP5R1Xv0QiVlwA9uiMAy_mQKBalvK4YjYdSbW9T9WZdtn39cD799HNy--sDKm1hhlBWb8Dz1jgxR2B9glqCYkqQmk3DSoPhPx9eWxB5q9VFjw1Q4u3d0Rgu8lF3NszOnHmJ19E6XZOdbRPyOjljcqTy1MWgNSwFAV-E3kWUGiJ0QNel49k3VkdjBUTKhIqIdQ9wve0zAcvWgxHEaFuvXv92aYmJwFYFDbNPvkYfBRLakBbpHIzGs9e0xu5sbTAVijArOHlzTSMNx2jK2mdt8VSjThXQAkMSV5W0jY2I6tuqFunlegJeA9zrFE9HdfbBtj9gOSe3LQQNMG7NaUShNTYUbJ5eZbQ8g7O5gjKFbDylaSZqv0aXQu0Lgrn7EdKV3B0BMhNeG3pR32zEBX1T3hEAnDKiYVOX0" type="text/javascript"></script>
-<script src="js/cachedetails.js" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&amp;t=ffffffff940d030f" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&amp;t=ffffffff940d030f" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=9neUao1ldOe56D-oi79ZeNMS580B2MfAxsmKBu7TscsFcznNYPXcB4UjFi8Z5hX-G3XpGkuINrrjEbWlRJIpYzuQ0Gp1bToM2sc-4L9fZg-lQ0EVBWKR25_fWQSYjJRU2uBjyiuXJBh1PbNktQneM9tmKKJqgNadYuBlhnmzF4N1y-qWT-8DqRvLM4LVm4xAlCFX3wxbNzTnqY8xYJhgpHEuAcg1" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=GPTAt64ibvPN-LF5CO6jFKhn4sPOUMnbiR5BoHKrnYKwAvpA9NFvbDd_NCdyclMYGcEaJ1h8R5rOhyFMIO7yEEfbbkZLpKZng-or5BGDpXDS_-XI5OtuK5kgopEm6zV17diANIXlqstGegNiNdfmbq6GZRxN8Kp2v-BO8mUY1SFxj1TTmrJa_wrYHLVzKd1FC84kKErcsViIYkRPYDW8-KOAH7eNzbb9ItvmAoTW4Lx4TTMxnLOYQN9uDGe_B5MPGKTQ_HVN3T7RHDC16s2vSwQCrjrD8RLS5LVJDGdLOhnGt1t2t7X8GZfI2fhDMOQncfm_O1CNWJHKP68M14XZXyh-N_N8_0R_8O2NfVy8zPF2wx6VK5xlS4kqqPoE6kJ-tNlFo3rnvHwhxf9IhYySvpAp6Fwxmz-qzumYrkicoWBPK6_4LW9ON_hKY0nIXImgMvNF4pApZ1KdZL-qTeHFVWFUieR7KDMbprQ3SHiC1rGn62whh1qPsFO69jLHedN7TzOrzq40I0bsi3EyYbNNS0oD0Rc7iJORDPeh-86QAVUZ2FDywODS3JB-NJVVT1_JUBBxtMfpBj711LXpmG6ftUbrr21LImyDDSQrp3lqIvRxTc-GwJV9ni69a3fOOBS2jyt6Zj5QmqoIJOYhV11p53vEVEvn7tFnf6w7zRf4tt7FtRqv0" type="text/javascript"></script>
+<script src="../seek/js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
-<script src="/WebResource.axd?d=Np8DmZmh2tcIkgE9SU7mE6n1BWbJ0opng-rHikqBjFQo0nbLYSeBBVhJhCHcmx1ihKnAnQv_ZhnItUUjENzIzc1uoXk1&amp;t=634449413070371108" type="text/javascript"></script>
-<script type="text/javascript">
-//<![CDATA[
-function WebForm_OnSubmit() {
-if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
-return true;
-}
-//]]>
-</script>
-
-<div>
-
- <input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="Q3QLAIGc3fycf1xcmR0oeYDSmxzti-0045OC6NZQvsE42Tm2u2QIX8zoZDBQxLovJ-hK6GtvJtlghgEFizixxK5opmWjeHAxzOpw_rZ8ZR8kHZBX0" />
-</div>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnetForm', [], [], [], 90, 'ctl00');
@@ -297,180 +108,166 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</script>
<div id="Top" class="SkipLinks">
-
<a id="ctl00_hlSkipLinksNavigation" accesskey="n" title="Skip to Navigation" href="#Navigation">Skip to Navigation</a>
<a id="ctl00_hlSkipLinksContent" accesskey="c" title="Skip to Content" href="#Content">Skip to Content</a>
-
</div>
-
- <!--[if lte IE 6]>
+ <!--[if lte IE 7]>
<div class="WarningMessage PhaseOut">
-
<p>Groundspeak is phasing out support for older browsers. Visit the <a href="http://support.groundspeak.com/index.php?pg=kb.page&id=215" title="Browser Support Information">Help Center</a> for more information.</p>
-
</div>
<![endif]-->
-
<div class="PrintOnly">
-
<p>
- <img src="/images/logo_print_bw.png" alt="Geocaching.com" /></p>
+ <img src="/images/logo_print_bw.png" alt="Geocaching.com" />
+ </p>
<hr />
-
</div>
-
- <header>
-
+ <header id="ctl00_siteHeader">
<div class="container">
-
<h1 class="Logo span-16">
- <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
+ <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">
+ <img src="/images/tlnMasters/geocaching-logo.png" alt="Geocaching" height="43" width="301" />
+ </a>
+ </h1>
<div class="ProfileWidget span-8 last">
- <div id="ctl00_divNotSignedIn" class="FloatContainer">
-
- <p class="NotSignedInText"><strong>Welcome, Visitor!</strong><br /></p>
- <p class="LoginWithFacebook">
- <a id="ctl00_uxSignIn" title="Login with Facebook" class="btnFacebookLogin NoWrap" href="javascript:__doPostBack(&#39;ctl00$uxSignIn&#39;,&#39;&#39;)"><span>Login with Facebook</span></a></p>
- <p class="NotSignedInLinks clear">
- <a id="hlSignIn" accesskey="s" title="Sign In" class="SignInLink" href="/login/">Sign In</a>&nbsp;|&nbsp;<a id="ctl00_hlRegister" accesskey="r" title="Sign Up" href="../membership/register.aspx?type=basic">Sign Up</a></p>
- <div id="SignInWidget">
-
- <h3>Sign In with Geocaching</h3>
- <div id="ctl00_vsSignInWidgetForm" class="FormSummaryWidget FormErrorWidget InputWidth" style="color:Red;display:none;">
-
-</div>
- <p>
- <label for="ctl00_tbUsername" id="ctl00_lblUsername" title="Geocaching Username">Geocaching Username:</label><br />
- <input name="ctl00$tbUsername" type="text" id="ctl00_tbUsername" class="text" autocomplete="off" />
- <span id="ctl00_rfvUsername" title="Username is a required field; please enter a valid username." style="color:Red;display:none;"><span class="FormIcon FormValidationIcon">*</span></span>
- </p>
- <p>
- <label for="ctl00_tbPassword" id="ctl00_lblPassword" title="Geocaching Password">Geocaching Password:</label><br />
- <input name="ctl00$tbPassword" type="password" id="ctl00_tbPassword" class="text" autocomplete="off" />
- <span id="ctl00_rfvPassword" title="Password is a required field; please enter a valid password." style="color:Red;display:none;"><span class="FormIcon FormValidationIcon">*</span></span>
+ <div id="ctl00_divSignedIn">
+ <p class="Avatar NoBottomSpacing">
+ <a id="ctl00_hlHeaderAvatar" accesskey="p" title="Your Profile" href="../my/"><img title="Your Profile" src="http://img.geocaching.com/user/avatar/642d2771-424e-4ee6-beb6-efecde3406fc.jpg" alt="" style="border-width:0px;" /></a>
</p>
- <p>
- <span class="Checkbox" title="Keep Me Signed In" autocomplete="off"><input id="ctl00_cbRememberMe" type="checkbox" name="ctl00$cbRememberMe" /><label for="ctl00_cbRememberMe">Keep Me Signed In</label></span><br />
- <small>
- Uncheck if on a shared computer.</small>
- </p>
- <p>
- <input type="submit" name="ctl00$btnSignIn" value="Sign In" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$btnSignIn&quot;, &quot;&quot;, true, &quot;SignInForm&quot;, &quot;https://www.geocaching.com/login/default.aspx?redir=%2fseek%2fcache_details.aspx%3fguid%3daf38aaf9-5386-40bb-92f0-025ebc7700a7&quot;, false, false))" id="ctl00_btnSignIn" title="Sign In" />
- or
- <a id="ctl00_hlSignInClose" title="Close this Window" class="SignInCloseLink" href="javascript:void(0);">Close</a></p>
- <p>
- <small>
- <a id="ctl00_hlForgot" title="Forgot your username or password?" href="../login/password.aspx">Forgot your username or password?</a></small></p>
+ <p class="SignedInText">
+ <strong>
+ Hello, <a href="/my/default.aspx" title="View Profile for Bananeweizen" class="SignedInProfileLink">Bananeweizen</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&amp;redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fwp%3dGC430FM%26title%3dcache-is-unpublished">Sign Out</a>)<br />
+ <span id="ctl00_litPMLevel">Premium Member</span>
+
+ <strong style="display: block">
+ 462 Caches Found</strong>
- </div>
-
-
+ </p>
</div>
+ </div>
+ </div>
+ </header>
+ <nav id="Navigation">
+ <div class="container">
+ <ul class="Menu">
+ <li>
+ <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/">Learn &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavGeocaching101" accesskey="i" title="Geocaching 101" href="../guide/">Geocaching 101</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGeocaching2Minutes" title="Geocaching in 2 Minutes" href="../videos/default.aspx#cat=PL939C3CBDC2F2F385&amp;vid=1YTqitVK-Ts">Geocaching in 2 Minutes</a></li>
+ </ul>
+ </li>
-
-
-
- </div>
-
- <div class="NavContainer span-24 last">
- <nav id="Navigation">
-
- <ul class="Menu">
+ <li id="ctl00_liNavProfile">
+ <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" href="../my/">Your Profile &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavQuickView" accesskey="p" title="Quick View" href="../my/">Quick View</a></li>
+ <li>
+ <a id="ctl00_hlSubNavLists" accesskey="q" title="Lists" href="../my/lists.aspx">Lists</a></li>
+ <li class="ExtraText">
+ <a id="ctl00_hlSubNavGeocaches" accesskey="m" title="Geocaches" class="NoRightPadding" href="../my/geocaches.aspx">Geocaches</a>
+ (<a id="ctl00_hlSubNavGeocachesYours" accesskey="y" title="Your Geocaches" class="NoSidePadding" href="../my/owned.aspx">Yours</a>)</li>
+ <li class="ExtraText">
+ <a id="ctl00_hlSubNavProfileTrackables" title="Trackables" class="NoRightPadding" href="../my/travelbugs.aspx">Trackables</a>
+ (<a id="ctl00_hlSubNavTrackablesYours" accesskey="8" title="Your Trackables" class="NoSidePadding" href="../track/search.aspx?o=1&amp;uid=31892678-1117-46eb-aa3b-191c20bd6607">Yours</a>)</li>
+ <li>
+ <a id="ctl00_hlSubNavPocketQueries" accesskey="9" title="Pocket Queries" href="../pocket/">Pocket Queries</a></li>
+ <li>
+ <a id="ctl00_hlSubNavFieldNotes" accesskey="0" title="Field Notes" href="../my/fieldnotes.aspx">Field Notes</a></li>
+ <li>
+ <a id="ctl00_hlSubNavAccount" accesskey="a" title="Account Details" href="../account/">Account Details</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavPlay" accesskey="3" title="Play" href="../seek/">Play &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavHide" accesskey="d" title="Hide &amp; Seek a Cache" href="../seek/">Hide & Seek a Cache</a></li>
+ <li>
+ <a id="ctl00_hlSubNavLogCache" title="Log a Cache" href="../my/recentlyviewedcaches.aspx">Log a Cache</a></li>
<li>
- <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/">Learn &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavGeocaching101" accesskey="i" title="Geocaching 101" href="../guide/">Geocaching 101</a></li>
- <li>
- <a id="ctl00_hlSubNavGeocaching2Minutes" title="Geocaching in 2 Minutes" href="../videos/#cat=cat:newbies&amp;vid=-4VFeYZTTYs">Geocaching in 2 Minutes</a></li>
- </ul>
+ <a id="ctl00_hlSubNavMap" accesskey="/" title="View Geocache Map" href="../map/">View Geocache Map</a></li>
+ <li>
+ <a id="ctl00_hlSubNavTrackables" accesskey="e" title="Find Trackables" href="../track/">Find Trackables</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGeoTours" title="GeoTours" href="../adventures/geotours">GeoTours</a>
</li>
- <li id="ctl00_liNavJoin">
- <a id="ctl00_hlNavJoin" accesskey="2" title="Join" href="../membership/register.aspx?type=basic">Join</a></li>
+ <li>
+ <a id="ctl00_hlSubNavHelpCenter" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/">Community &#9660;</a>
+ <ul class="SubMenu">
<li>
- <a id="ctl00_hlNavPlay" accesskey="3" title="Play" href="./">Play &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavHide" accesskey="d" title="Hide &amp; Seek a Cache" href="./">Hide & Seek a Cache</a></li>
- <li>
- </li>
- <li><a id="ctl00_hlSubNavMap" accesskey="/" title="View Geocache Map" href="../map/">View Geocache Map</a></li>
- <li>
- <a id="ctl00_hlSubNavTrackables" accesskey="e" title="Find Trackables" href="../track/">Find Trackables</a></li>
- <li>
- <a id="ctl00_hlSubNavHelpCenter" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
- </ul>
+ <a id="ctl00_hlSubNavTellaFriend" accesskey="-" title="Tell a Friend" href="../account/SendReferral.aspx">Tell a Friend</a>
</li>
+
<li>
- <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/">Community &#9660;</a>
- <ul class="SubMenu">
-
- <li>
- <a id="ctl00_hlSubNavTellaFriend" accesskey="-" title="Tell a Friend" href="../account/SendReferral.aspx">Tell a Friend</a></li>
-
- <li><a id="ctl00_hlSubNavVolunteers" accesskey="+" title="Volunteers" href="../volunteers/">Volunteers</a></li>
- <li>
- <a id="ctl00_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/">Local Organizations</a></li>
- <li>
- <a id="ctl00_hlSubNavDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
- <li>
- <a id="ctl00_hlSubNavBlog" accesskey="b" title="Blog" rel="external" href="http://blog.geocaching.com/">Blog</a></li>
- <li>
- <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavVolunteers" accesskey="+" title="Volunteers" href="../volunteers/">Volunteers</a></li>
+ <li>
+ <a id="ctl00_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/">Local Organizations</a></li>
<li>
- <a id="ctl00_hlNavShop" accesskey="4" title="Shop" href="http://shop.geocaching.com/">Shop &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavShop" accesskey="j" title="Shop Geocaching" rel="external" href="http://shop.geocaching.com/">Shop Geocaching</a></li>
- <li>
- <a id="ctl00_hlSubNavIntlRetailers" title="International Retailers" rel="external" href="http://shop.geocaching.com/default/international-retailers/">International Retailers</a></li>
- <li>
- <a id="ctl00_hlSubNavGPSReviews" accesskey="w" title="GPS Reviews" href="/reviews/gps">GPS Reviews</a></li>
- <li>
- <a id="ctl00_hlSubNavGPSGuide" accesskey="k" title="Guide to Buying a GPS Device" href="../about/buying.aspx">Guide to Buying a GPS Device</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
<li>
- <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavTravel" title="Travel and GeoTourism" href="../travel/">Travel and GeoTourism</a></li>
- <li>
- <a id="ctl00_hlSubNavBrandedPromotions" title="Branded Promotions" href="../brandedpromotions/">Branded Promotions</a></li>
- <li>
- <a id="ctl00_hlSubNavEducation" title="Geocaching and Education" href="../education/">Geocaching and Education</a></li>
- <li>
- <a id="ctl00_hlSubNavAdvertisingWithUs" title="Advertising with Us" href="../about/advertising.aspx">Advertising with Us</a></li>
- <li>
- <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/apidevelopers/">API Program</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavBlog" accesskey="b" title="Blog" rel="external" href="http://blog.geocaching.com/">Blog</a></li>
<li>
- <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
+ <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavShop" accesskey="4" title="Shop" href="http://shop.geocaching.com/?utm_source=Geocaching&amp;utm_medium=Links&amp;utm_content=Header&amp;utm_campaign=Geocaching+Links">Shop &#9660;</a>
+ <ul class="SubMenu">
<li>
- <a id="ctl00_hlNavFollowUs" title="Follow Us" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts">Follow Us &#9660;</a>
- <ul class="SubMenu NavSocialMedia">
- <li>
- <a id="ctl00_hlSubNavFacebook" title="Facebook" class="SubNavFacebook" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts">Facebook</a></li>
- <li>
- <a id="ctl00_hlSubNavTwitter" title="Twitter" class="SubNavTwitter" href="http://twitter.com/GoGeocaching">Twitter</a></li>
- <li>
- <a id="ctl00_hlSubNavFlickr" title="Flickr" class="SubNavFlickr" href="http://www.flickr.com/photos/geocaching_com/">Flickr</a></li>
- <li>
- <a id="ctl00_hlSubNavYouTube" title="YouTube" class="SubNavYouTube" href="http://www.youtube.com/user/GoGeocaching">YouTube</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavShop" accesskey="j" title="Shop Geocaching" rel="external" href="http://shop.geocaching.com/?utm_source=Geocaching&amp;utm_medium=Links&amp;utm_content=Header&amp;utm_campaign=Geocaching+Links">Shop Geocaching</a></li>
+ <li>
+ <a id="ctl00_hlSubNavIntlRetailers" title="International Retailers" rel="external" href="http://shop.geocaching.com/default/international-retailers/">International Retailers</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGPSReviews" accesskey="w" title="GPS Reviews" href="/reviews/gps">GPS Reviews</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGPSGuide" accesskey="k" title="Guide to Buying a GPS Device" href="../about/buying.aspx">Guide to Buying a GPS Device</a></li>
</ul>
-
- </nav>
- <div class="LanguageSelector">
-
+ </li>
+ <li>
+ <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavTravel" title="Travel and GeoTourism" href="../travel/">Travel and GeoTourism</a></li>
+ <li>
+ <a id="ctl00_hlSubNavBrandedPromotions" title="Branded Promotions" href="../brandedpromotions/">Branded Promotions</a></li>
+ <li>
+ <a id="ctl00_hlSubNavEducation" title="Geocaching and Education" href="../education/">Geocaching and Education</a></li>
+ <li>
+ <a id="ctl00_hlSubNavAdvertisingWithUs" title="Advertising with Us" href="../about/advertising.aspx">Advertising with Us</a></li>
+ <li>
+ <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/apidevelopers/">API Program</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
+ <li>
+ <a id="ctl00_hlNavFollowUs" title="Follow Us" href="http://www.facebook.com/geocaching">Follow Us &#9660;</a>
+ <ul class="SubMenu NavSocialMedia">
+ <li>
+ <a id="ctl00_hlSubNavFacebook" title="Facebook" class="SubNavFacebook" href="http://www.facebook.com/geocaching">Facebook</a></li>
+ <li>
+ <a id="ctl00_hlSubNavYouTube" title="YouTube" class="SubNavYouTube" href="http://www.youtube.com/user/GoGeocaching">YouTube</a></li>
+ <li>
+ <a id="ctl00_hlSubNavInstagram" title="Instagram" class="SubNavInstagram" href="http://instagram.com/gogeocaching">Instagram</a></li>
+ <li>
+ <a id="ctl00_hlSubNavTwitter" title="Twitter" class="SubNavTwitter" href="http://twitter.com/GoGeocaching">Twitter</a></li>
+ </ul>
+ </li>
+ </ul>
+ <div class="LanguageSelector">
+
<div class="LocaleText">
@@ -496,27 +293,35 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl04_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl04$uxLocaleItem&#39;,&#39;&#39;)">Čeština</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Dansk</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Ελληνικά</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Latviešu</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl16_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl16$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl17_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl17$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl18_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl18$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl19_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl19$uxLocaleItem&#39;,&#39;&#39;)">日本語</a></li>
</ul>
@@ -543,31 +348,20 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
});
});
</script>
- </div>
</div>
-
-
</div>
-
-
- </header>
+ </nav>
<section id="Content">
-
<div class="container">
-
<div id="ctl00_divBreadcrumbs" class="BreadcrumbWidget span-24 last">
-
<p>
<span id="ctl00_Breadcrumbs"><span><a title="Geocaching - The Official Global GPS Cache Hunt Site" href="/">Geocaching</a></span><span> &gt; </span><span><a title="Hide and Seek A Geocache" href="/seek/default.aspx">Hide and Seek A Geocache</a></span><span> &gt; </span><span>Geocache Details</span></span>
</p>
-
</div>
-
<div id="ctl00_divContentMain" class="span-24 last">
-
<div id="ctl00_ContentBody_CoordInfoLinkControl1_uxCoordInfoLinkPanel" class="CoordInfoLinkWidget">
@@ -622,173 +416,163 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</p>
<h2 class="NoBottomSpacing">
- <span id="ctl00_ContentBody_CacheName">Cache is Unpublished</span></h2>
+ <span id="ctl00_ContentBody_CacheName">Cache is Unpublished</span>
+ </h2>
<div class="minorCacheDetails Clear">
<div id="ctl00_ContentBody_mcd1">
- A cache by <a href="http://www.geocaching.com/profile/?guid=f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5&wid=af38aaf9-5386-40bb-92f0-025ebc7700a7&ds=2">The North Star</a></div>
+ A cache by <a href="http://www.geocaching.com/profile/?guid=f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5&wid=af38aaf9-5386-40bb-92f0-025ebc7700a7&ds=2">The North Star</a>
+ </div>
<div id="ctl00_ContentBody_mcd2">
- Hidden:
- 12/19/2012
+ Hidden
+ :
+ 2012-12-19
+
+ </div>
+ <div>
</div>
- <div>In California, United States</div>
</div>
</div>
- <div id="ctl00_ContentBody_diffTerr" class="CacheStarLabels span-3 BottomSpacing">
-
- Difficulty:
- <br />
- Terrain:
+ <div id="ctl00_ContentBody_diffTerr" class="CacheStarLabels span-6 BottomSpacing">
+
+ <dl>
+ <dt>
+ Difficulty:</dt>
+ <dd>
+ <span id="ctl00_ContentBody_uxLegendScale" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars4.gif" alt="4 out of 5" /></span>
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ Terrain:</dt>
+ <dd>
+ <span id="ctl00_ContentBody_Localize12" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars1_5.gif" alt="1.5 out of 5" /></span>
+ </dd>
+ </dl>
</div>
-
- <div id="ctl00_ContentBody_diffTerrStars" class="CacheStarImgs span-2">
+ <div id="ctl00_ContentBody_size" class="CacheSize span-5">
- <span id="ctl00_ContentBody_uxLegendScale" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars4.gif" alt="4 out of 5" /></span>
- <span id="ctl00_ContentBody_Localize12" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars1_5.gif" alt="1.5 out of 5" /></span>
+ <p class="AlignCenter">
+ Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/micro.gif" alt="Size: micro" title="Size: micro" />&nbsp<small>(micro)</small></span>
+ </p>
</div>
-
- <div id="ctl00_ContentBody_size" class="CacheSize span-9">
+ <div class="span-6 right last">
- <p style="text-align: center;">
- Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/micro.gif" alt="Size: micro" title="Size: micro" />&nbsp<small>(micro)</small></span></p>
-
- </div>
-
-
-
- <div class="span-3 right last">
+ <div class="favorite right">
+ <a id="uxFavContainerLink" href="javascript:void(0);">
+ <div class="favorite-container"><!-- TODO! -->
+ <span class="favorite-value">
+ 3
+ </span>
+ Favorites
+ </div>
+ </a>
+ <div class="favorite-dropdown">
+
+ <ul>
+ <li>
+ <img id="imgFavoriteScore" src="/images/loading3.gif" width="20" height="20" alt="Loading" title="Loading"><span id="uxFavoriteScore">&nbsp;</span>
+ </li>
+ <li>
+ <a id="hlViewWhoFavorited" title="View Who Favorited this Cache" href="/seek/cache_favorited.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7">View Who Favorited this Cache</a>
+ </li>
+ <li>
+ <a id="hlAboutFavorites" title="About Favorites" href="http://support.groundspeak.com/index.php?pg=kb.page&amp;id=287" target="_blank">About Favorites</a>
+ </li>
+ </ul>
+ </div>
+ </div>
</div>
-
- <div id="lus_container" class="lus-container Clear">
- <div class="lus-header">
- <span>
- Join now to view geocache location details. It's free!
- </span>
- <span class="lus-signup">
- <a id="ctl00_ContentBody_locdSignUpLink" title="Sign up" href="/membership/register.aspx?type=basic">Sign up</a><a id="hlFBLogin" title="Log in with Facebook" class="btnFacebookLogin" href="/api/beginfacebook"><span id="ctl00_ContentBody_locFBLogin">Login</span></a>
- </span>
- </div>
- <div style="position: relative;height:257px;">
- <div class="lus-video">
- <div class="lus-textblock">
- <div class="play-control AlignCenter"><a id="ctl00_ContentBody_hlPlayArrow" title="Play Video">▶</a></div>
- <h4>
- Watch
- </h4>
- How Geocaching Works
- </div>
- </div>
- <div class="lus-image">
- <img src="/images/seek/locdp_cityscape.jpg" width="380" height="257" />
- </div>
- </div>
- <div class="lus-footer">
- <span class="AlignRight">
- <span>Looking for a different adventure?</span>
- </span>
- <span class="lus-findacache NoWrap">
- <input type="submit" name="ctl00$ContentBody$findacache" value="Find a Cache Near Me" id="findacache" title="Find a Cache Near Me" />
- </span>
- </div>
- </div>
- <script type="text/javascript">
-
- $("#lus_container")
- .on("click", "div.lus-video", function () {
- var $this = $(this),
- h = $this.height(),
- w = $this.width();
-
- $("div.lus-image").hide('slide', { direction: 'right' }, 500, function () {
- var vhtml = ["<iframe width=\"" + w + "\" height=\"" + h + "\" src=\"http://www.youtube.com/embed/-4VFeYZTTYs?rel=0&autoplay=1\" frameborder=\"0\" allowfullscreen></iframe>"].join('');
- $this.replaceWith(vhtml);
- });
- return false;
- });
-
- $("#findacache").click(function (e) {
- e.preventDefault();
- $("#txtFindCache").text("Searching...");
-
- navigator.geolocation.getCurrentPosition(
- function (position) { // Browser success
- $(window.location).attr('href', '/seek/nearest.aspx?origin_lat=' + position.coords.latitude + '&origin_long=' + position.coords.longitude + '&dist=100');
- }, function (error) { // Browser failure, fallback to geocode.
- $.ajax({
- url: '/api/geocode?cmd=whoami',
- dataType: 'json',
- async: false,
- success: function (response) {
- if (response.status == 'success') { // Geocode success
- $(window.location).attr('href', '/seek/nearest.aspx?origin_lat=' + response.data.lat + '&origin_long=' + response.data.lng + '&dist=100');
- } else { // Total failure, just go to the search page.
- $(window.location).attr('href', '/seek/nearest.aspx');
- }
- }
- });
- },
- {
- timeout: 3000 // Wait on the browser for a max of 3 seconds.
- });
- return false;
- });
-
- // Geolocation emulator
- (function (geolocation) {
-
- if (geolocation) return;
-
- var cache;
-
- geolocation = window.navigator.geolocation = {};
- geolocation.getCurrentPosition = function (callback) {
-
- if (cache) callback(cache);
-
- $.getScript('//www.google.com/jsapi', function () {
-
- cache = {
- coords: {
- "latitude": google.loader.ClientLocation.latitude,
- "longitude": google.loader.ClientLocation.longitude
- }
- };
-
- callback(cache);
- });
-
- };
+ <p class="Clear">
- geolocation.watchPosition = geolocation.getCurrentPosition;
- })(navigator.geolocation);
-
+
- </script>
-
- <p class="Clear">
- </p>
-
-
+ </p>
+ <div id="ctl00_ContentBody_CacheInformationTable" class="CacheInformationTable">
+ <div class="LocationData FloatContainer">
+ <div class="span-9">
+ <p class="NoBottomSpacing">
+ <a href="#" class="edit-cache-coordinates" id="uxLatLonLink" title="Correct these coordinates">
+ <strong>
+ <span id="uxLatLon">N 37° 23.900 W 121° 55.000</span></strong>
+ </a>
+ <br />
+ <span id="ctl00_ContentBody_LocationSubPanel">
+ UTM: 10S E 595887 N 4139612<br />
+ </span>
+ <a id="ctl00_ContentBody_lnkConversions" title="Other Conversions" href="/wpt/?lat=37.398333&amp;lon=-121.916667&amp;detail=1" target="_blank">Other Conversions</a>
+ </p>
+ </div>
+ <div class="span-7 last AlignRight">
+ <span id="ctl00_ContentBody_Location">In <a href="/map/default.aspx?lat=37.398333&lng=-121.916667&z=16" title="View Map">California, United States</a></span><br />
+ <span id="lblDistFromHome"><img src="/images/icons/compass/NW.gif" alt="NW" style="vertical-align:text-bottom" />&nbsp;NW 9280.9&nbsp;km from your home location</span>
+ </div>
+ </div>
+ <div class="DownloadLinks">
+ <dl id="Print">
+ <dt class="label">
+ <span id="ctl00_ContentBody_uxPrintHeader">Print</span>:
+ </dt>
+ <dd>
+ <a id="ctl00_ContentBody_lnkPrintFriendly" href="../seek/cdpf.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7" target="_blank">No Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintFriendly5Logs" href="../seek/cdpf.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7&amp;lc=5" target="_blank">5 Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintFriendly10Logs" href="../seek/cdpf.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7&amp;lc=10" target="_blank">10 Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintDirectionsSimple" class="DrivingDirections" href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=48.861002,9.186577 (Home Location)&amp;daddr=37.398333,-121.916667(Cache+is+Unpublished)" target="_blank">Driving Directions</a>
+ </dd>
+ </dl>
+ <dl id="ctl00_ContentBody_uxPrintPDFSection" style="display: none;">
+ <dt>
+ PDF:
+ </dt>
+ <dd>
+ <a id="ctl00_ContentBody_lnkPDFPrintNoLogs" href="javascript:pl(0);">No Logs</a>
+ <a id="ctl00_ContentBody_lnkPDFPrint5Logs" href="javascript:pl(5);">5 Logs</a>
+ <a id="ctl00_ContentBody_lnkPDFPrint10Logs" href="javascript:pl(10);">10 Logs</a>
+ </dd>
+ </dl>
+ <dl id="Download">
+ <dt class="label">
+ <span id="ctl00_ContentBody_uxDownloadLabel">Download</span>:
+ </dt>
+ <dd>
+ <a id="ctl00_ContentBody_lnkDownloads" title="Read about waypoint downloads" href="/software/default.aspx">Read about waypoint downloads</a>
+ </dd>
+ <dt></dt>
+ <dd>
+ <input type="submit" name="ctl00$ContentBody$btnLocDL" value="LOC waypoint file" id="ctl00_ContentBody_btnLocDL" /><input type="submit" name="ctl00$ContentBody$btnGPXDL" value="GPX file" id="ctl00_ContentBody_btnGPXDL" /><input type="submit" name="ctl00$ContentBody$btnSendToGPS" value="Send to My GPS" onclick="s2gps(&#39;af38aaf9-5386-40bb-92f0-025ebc7700a7&#39;);return false;" id="ctl00_ContentBody_btnSendToGPS" /><input type="submit" name="ctl00$ContentBody$btnSendToPhone" value="Send to My Phone" onclick="s2phone(&#39;GC430FM&#39;);return false;" id="ctl00_ContentBody_btnSendToPhone" />
+ </dd>
+ </dl>
+ </div>
+ </div>
- <fieldset class="DisclaimerWidget">
- <legend class="warning">
+ <div class="Note Disclaimer">
+ <strong>
Please note
- </legend>
- <p class="NoBottomSpacing">
- Use of geocaching.com services is subject to the terms and conditions <a href="/about/disclaimer.aspx" title="Read Our Disclaimer">in our disclaimer</a>.
- </p>
- </fieldset>
+ </strong>
+ Use of geocaching.com services is subject to the terms and conditions <a href="/about/disclaimer.aspx" title="Read Our Disclaimer">in our disclaimer</a>.
+ </div>
+ <div class="Note PersonalCacheNote">
+ <strong>
+ Personal Cache Note
+ </strong>
+ <img src="/images/icons/16/help.png" id="pcn_help" class="CacheNoteHelpImg" />
+ <span id="cache_note">
+
+ </span>
+ </div>
+
+ <h3 class="CacheDescriptionHeader">Geocache Description:</h3>
<div class="UserSuppliedContent">
<span id="ctl00_ContentBody_ShortDescription">
@@ -801,7 +585,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<span id="ctl00_ContentBody_LongDescription"><div class="Section1">
<p><span style="font-size:10.0pt;font-family:Verdana;mso-bidi-font-family:Arial;color:red;">The cache is not at the posted coordinates but is less than 2 miles away</span></p>
-<p><span style="font-size:10.0pt;font-family:Verdana;mso-bidi-font-family:Arial;color:#333333;">I obtained a Geocache waypoint (GC#) on 02/12/12 for a cache that was not published. Find the name of the unpublished cache and you will find the coordinates for this cache.<br />
+<p><span style="font-size:10.0pt;font-family:Verdana;mso-bidi-font-family:Arial;color:#333333;">I obtained a Geocache waypoint (GC#) on February 12, 2012 for a cache that was not published. Find the name of the unpublished cache and you will find the coordinates for this cache.<br />
<br />
The waypoint starts with GC3C and contains 2 additional letters and 1 additional number. Per GC.com Base 31 implementation, the letters ILOSU (US OIL or LOUIS) are not used.<br />
<br />
@@ -813,10 +597,12 @@ There is room for very small trade and signature items. Don't forget to bring yo
<br />
Enjoy!<br />
<br />
-You can validate your puzzle solution with <a href="http://certitude.comxa.com/certitude.php?wp=GC430FM">certitude</a> or see <a href="http://certitude.comxa.com/certified.php?wp=GC430FM">who solved</a> this puzzle.<br />
+You can validate your puzzle solution with <a href="http://www.certitudes.org/certitude?wp=GC430FM">Certitude.</a><br />
<br />
Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" target="_blank" rel="nofollow">TeamOttlet</a> on FTS and FTF.</span></p>
-</div></span>
+<span style="font-size:12.0pt;font-family:Verdana;mso-bidi-font-family:Arial;color:red;"><b>Apparently this was more of a “bug” than a “feature”. With the 08-January-13 Geocaching.com site update, this puzzle can only be solved "by a method that is not available to everyone".<br />
+<br />
+With the 21-August-13 Geocaching.com site update, this puzzle can be solved again but not as originally intended.</b></span></div></span>
</div>
@@ -827,10 +613,8 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<p id="ctl00_ContentBody_hints">
<strong>
Additional Hints</strong>
- (<a id="ctl00_ContentBody_lnkDH" onclick="dht(this);return false;" title="Decrypt" href="#">Decrypt</a>)</p>
- <div id="div_hint" class="span-8 WrapFix">
- Qvq lbh xabj gung lbh pna svaq n yvfg bs <b>Erpragyl Ivrjrq Pnpurf</b> haqre <b>Lbhe Cebsvyr</b>? “Ivrj Nyy” gb frr gur ynfg 50 pnpurf gung lbh unir ivrjrq…</div>
- <div id='dk' style="display: block;" class="span-9 last">
+ (<a id="ctl00_ContentBody_lnkDH" onclick="dht(this);return false;" title="Decrypt" href="../seek/#">Decrypt</a>) </p><div id="div_hint" class="span-8 WrapFix">
+ Qvq lbh xabj gung lbh pna svaq n yvfg bs <b>Erpragyl Ivrjrq Pnpurf</b> haqre <b>Lbhe Cebsvyr</b>? “Ivrj Nyy” gb frr gur ynfg 50 pnpurf gung lbh unir ivrjrq…</div><div id='dk' style="display: block;" class="span-9 last">
<span id="ctl00_ContentBody_EncryptionKey" class="right"><div class="DecryptionKeyWidget"> <p class="WidgetHeader">Decryption Key</p> <p class="WidgetBody">A|B|C|D|E|F|G|H|I|J|K|L|M<br /> -------------------------<br /> N|O|P|Q|R|S|T|U|V|W|X|Y|Z</p> <p class="WidgetFooter">(letter above equals below, and vice versa)</p></div></span>
</div>
<div class="Clear">
@@ -842,34 +626,31 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<div class="span-6 prepend-1 last">
-<div class="CacheDetailNavigationWidget NoPrint">
-
- <h3 class="WidgetHeader">
- Navigation
- </h3>
- <div class="WidgetBody">
-
- <ul class="CacheDetailsNavLinks">
- <li><a href="https://www.geocaching.com/login/?RESET=Y&redir=%2fseek%2flog.aspx%3fID%3d3372822" class="lnk"><img src="/images/icons/16/write_log_locked.png" />&nbsp;<span>Log in to log your visit</span></a></li>
-<li><a href="https://www.geocaching.com/login/?RESET=Y&redir=%2fmy%2fwatchlist.aspx%3fw%3d3372822" class="lnk"><img src="/images/icons/16/watch_locked.png" />&nbsp;<span>Log in to watch this listing</span></a></li>
-
- </ul>
-
- </div>
+<div class="CacheDetailNavigation NoPrint">
+ <a href="/seek/log.aspx?ID=3372822&lcn=1" id="ctl00_ContentBody_GeoNav_logButton" class="Button LogVisit">Log your visit</a>
+ <ul>
+ <li><a href="/seek/gallery.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7">View Gallery</a> (1)</li>
+ <li><a href="/my/watchlist.aspx?w=3372822">Watch</a> (2)</li>
+ <li><a href="/bookmarks/mark.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7&amp;WptTypeID=8">Bookmark</a></li>
+ <li><a href="/bookmarks/ignore.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7&amp;WptTypeID=8">Ignore</a></li>
+ </ul>
</div>
+ <div id="map_preview_canvas" class="TopSpacing" style="width: 228px; height: 175px;">
+ </div>
<div id="ctl00_ContentBody_detailWidget" class="CacheDetailNavigationWidget TopSpacing BottomSpacing">
<h3 class="WidgetHeader">
- Attributes</h3>
+ Attributes
+ </h3>
<div class="WidgetBody">
<img src="/images/attributes/available-yes.gif" alt="available 24-7" title="available 24-7" width="30" height="30" /> <img src="/images/attributes/stealth-yes.gif" alt="stealth required" title="stealth required" width="30" height="30" /> <img src="/images/attributes/bicycles-yes.gif" alt="bikes allowed" title="bikes allowed" width="30" height="30" /> <img src="/images/attributes/parkngrab-yes.gif" alt="park and grab" title="park and grab" width="30" height="30" /> <img src="/images/attributes/onehour-yes.gif" alt="takes less than 1 hour" title="takes less than 1 hour" width="30" height="30" /> <img src="/images/attributes/attribute-blank.gif" alt="blank" title="blank" width="30" height="30" /> <p class="NoBottomSpacing"><small><a href="/about/icons.aspx" title="What are Attributes?">What are Attributes?</a></small></p>
</div>
@@ -877,24 +658,27 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
</div>
- <div id="ctl00_ContentBody_uxBanManWidget" class="CacheDetailPageAds clear">
+ <div id="ctl00_ContentBody_uxBanManWidget" class="InlinePageAds">
- <div id="ctl00_ContentBody_divContentSide">
-
- <p class="NoBottomSpacing">
- <span id="ctl00_ContentBody_ADModules_09"><iframe type="iframe" src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&SiteID=1&X='1654495648c94c4b9d15c51552c5710a'" width="120" height="240" Marginwidth="0" Marginheight="0" Hspace="0" Vspace="0" Frameborder="0" Scrolling="no" style="width:120px;Height:240px;"><a href="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Click&;Mode=HTML&SiteID=1" target="_blank"><img src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&Mode=HTML&SiteID=1" width="120" height="240" border="0" alt="" /></a></iframe></span>
- </p>
- <p class="AlignCenter">
- <small><a href="../about/advertising.aspx" id="ctl00_ContentBody_advertisingWithUs" title="Advertising with Us">Advertising with Us</a></small></p>
-
- </div>
-
+
+ <script type='text/javascript'>
+googletag.cmd.push(function() {{
+googletag.defineSlot('/1011121/cache_details_pg_120x240', [120, 240], 'div_b61ef416-ed1e-4656-b3ef-ca5f7e7e4224').addService(googletag.pubads());
+googletag.pubads().enableSingleRequest();
+googletag.enableServices();
+}});
+</script>
+<div id='div_b61ef416-ed1e-4656-b3ef-ca5f7e7e4224'>
+<script type='text/javascript'>
+googletag.cmd.push(function() { googletag.display('div_b61ef416-ed1e-4656-b3ef-ca5f7e7e4224'); });
+</script>
</div>
-
-
-
- <div class="GoogleAds AlignCenter BottomSpacing">
- </div>
+
+ <p>
+ <small><a href="../about/advertising.aspx" id="ctl00_ContentBody_advertisingWithUs" title="Advertising with Us">Advertising with Us</a></small> </p>
+</div><div class="GoogleAds AlignCenter BottomSpacing">
+
+ </div>
<div class="clear">
</div>
@@ -933,15 +717,10 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<div class="WidgetBody">
- <ul>
-
- <li style='padding: .5em;' class=''>
- <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=9fd39fb8-9502-47b4-ae08-86ce236fc661">
- fmoraes&#39; solved but far</a><br />
- <small><em>
- by
- <a href="http://www.geocaching.com/profile/?guid=440cf61b-dcf3-4220-a877-ce312f103921">
- fmoraes</a> </em></small>
+ <ul class="BookmarkList">
+
+ <li class=''>
+ <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=9fd39fb8-9502-47b4-ae08-86ce236fc661">fmoraes&#39; solved but far</a><br /> by <a href="http://www.geocaching.com/profile/?guid=440cf61b-dcf3-4220-a877-ce312f103921">fmoraes</a>
</li>
</ul>
@@ -965,13 +744,36 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<div id="ctl00_ContentBody_bottomSection" class="span-24 last">
<p>
- &nbsp;
- <br />
+ &nbsp; <br />
- </p>
-
+ <p>
+ <div id="uxlrgMap" class="FloatRight TopSpacing">
+
+ <div class="PageBreakBefore">
+
+ </div>
+ <div class="CDMapWidget">
+ <p class="WidgetHeader NoBottomSpacing">
+ <a id="ctl00_ContentBody_uxViewLargerMap" title="View Larger Map" href="/map/default.aspx?lat=37.398333&amp;lng=-121.916667" target="_blank">View Larger Map</a>
+ </p>
+
+ <div id="map_canvas" style="width: 325px; height: 325px;">
+ </div>
+ <p class="WidgetFooter">
+ <a id="ctl00_ContentBody_uxNotesAboutPrinting" href="#mapPrintingNotes" class="NoPrint">Notes about Printing Maps</a>
+ </p>
+ </div>
+ <div style="display: none;">
+ <div id="mapPrintingNotes">
+ To print the map in Firefox and Opera, enable background images in the print dialog.
+ <a href="#dlgMapPrintWarning" class="dialog" onclick="$.fancybox.close()">
+ Close
+ </a>
+ </div>
+ </div>
+</div>
<p class="NoPrint">
<span id="ctl00_ContentBody_uxFindLinksHeader" style="font-weight:bold;">Find...</span>
@@ -980,39 +782,51 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
</p>
<ul class="NoPrint">
<li>
- ...other caches&nbsp;
- <a id="ctl00_ContentBody_uxFindLinksHiddenByThisUser" href="/seek/nearest.aspx?u=The+North+Star">hidden</a>&nbsp;
- or&nbsp;
- <a id="ctl00_ContentBody_uxFindLinksFoundByThisUser" href="/seek/nearest.aspx?ul=The+North+Star">found</a>&nbsp;
- by this user
+ ...other caches <a href="/seek/nearest.aspx?u=The+North+Star">hidden</a> or <a href="/seek/nearest.aspx?ul=The+North+Star">found</a> by this user
</li>
+ <li>
+ ...nearby <a href="/seek/nearest.aspx?tx=40861821-1835-4e11-b666-8d41064d03fe&lat=37.398333&lng=-121.916667">caches of this type</a>, <a href="/seek/nearest.aspx?tx=40861821-1835-4e11-b666-8d41064d03fe&lat=37.398333&lng=-121.916667&f=1">that I haven't found</a>
+ </li>
+ <li>
+ ...all nearby <a href="/seek/nearest.aspx?lat=37.398333&lng=-121.916667">caches</a>, <a href="/seek/nearest.aspx?lat=37.398333&lng=-121.916667&f=1">that I haven't found</a>
+ </li>
+ <li>
+ ...all nearby <a href="http://www.waymarking.com/directory.aspx?f=1&lat=37.398333&lon=-121.916667">waymarks on Waymarking.com</a>
+ </li>
+
+
+ <li>
+ ...all nearby <a href="http://www.geocaching.com/mark/nearest.aspx?lat=37.398333&lon=-121.916667">benchmarks</a>
+ </li>
- <li>
- ...nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksHotels" href="/reviews/hotels-in-Milpitas,CA,US">Hotels</a>
- </li>
</ul>
<p class="NoPrint">
-
+ <span id="ctl00_ContentBody_uxMapLinkHeader" style="font-weight:bold;">For online maps...</span>
</p>
<span class="NoPrint">
+<ul>
+ <span id="ctl00_ContentBody_MapLinks_MapLinks"><li><a href="http://www.geocaching.com/map/default.aspx?lat=37.39833&lng=-121.91667" target="_blank">Geocaching.com Map</a></li><li><a href="http://www.mytopo.com/maps.cfm?lat=37.39833&lon=-121.91667&pid=groundspeak" target="_blank">MyTopo Maps</a></li><li><a href="http://maps.google.com/maps?q=N+37%c2%b0+23.900+W+121%c2%b0+55.000+(GC430FM)+" target="_blank">Google Maps</a></li><li><a href="http://www.mapquest.com/maps/map.adp?searchtype=address&formtype=latlong&latlongtype=decimal&latitude=37.39833&longitude=-121.91667&zoom=10" target="_blank">MapQuest</a></li><li><a href="http://www.bing.com/maps/default.aspx?v=2&lvl=14&sp=point.37.39833_-121.91667_GC430FM" target="_blank">Bing Maps</a></li><li><a href="http://maps.yahoo.com/#lat=37.39833&lon=-121.91667&zoom=16&q=37.39833,-121.91667&conf=1&start=1&mvt=m&trf=0" target="_blank">Yahoo Maps</a></li><li><a href="http://msrmaps.com/image.aspx?Lon=-121.91667&Lat=37.39833&w=1&ref=G|-121.91667,37.39833" target="_blank">MSR Maps (Formerly Terraserver)</a></li><li><a href="http://www.opencyclemap.org/?zoom=12&lat=37.39833&lon=-121.91667" target="_blank">OpenCycleMap</a></li><li><a href="http://www.openstreetmap.org/?mlat=37.39833&mlon=-121.91667&zoom=12" target="_blank">OpenStreetMap</a></li></span>
+</ul>
+
</span>
- <p class="NoPrint">
-
- </p>
+ <ul class="CachePageImages NoPrint">
+ <li><a href="http://img.geocaching.com/cache/large/1856a78c-e27f-4fa5-a66d-2a083c6e9c21.jpg" rel="lightbox">Cache is Unpublished</a></li>
+ </ul>
<div class="InformationWidget Clear">
<h3>
- 7 Logged Visits</h3>
+ 23 Logged Visits
+ </h3>
<div class="EncryptDecrypt">
<a href="#" class="decrypt-link">
Decrypt
</a>
</div>
- <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
+ <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
<p class="HalfLeft">
- <a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7">View Logbook</a>
+ <a id="ctl00_ContentBody_uxLogbookLink" href="../seek/cache_logbook.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7">View Logbook</a> | <a id="ctl00_ContentBody_uxGalleryImagesLink" DisplayFormatPlural="View the Image Gallery of {0:#,###} images" DisplayFormatSingular="View the Image Gallery" href="../seek/gallery.aspx?guid=af38aaf9-5386-40bb-92f0-025ebc7700a7">View the Image Gallery</a>
</p>
<p class="NoBottomSpacing AlignRight">
<span class="Warning">**Warning!</span> <a href="/about/glossary.aspx#spoiler" title="Spoilers">Spoilers</a> may be included in the descriptions or links.
@@ -1041,762 +855,130 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
</div>
<p>
<small>
- Current Time: <time datetime="2012-12-21T10:49:48Z">12/21/2012 10:49:48 AM (UTC-08:00) Pacific Time (US & Canada) (6:49 PM GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-12-21T11:06:00Z">2012-12-21T11:06:00Z</time> on 12/21/2012 3:06:00 AM (UTC-08:00) Pacific Time (US & Canada) (11:06 AM GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2013-09-15T09:46:44Z">09/15/2013 09:46:44 Pacific Daylight Time (16:46 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-09-01T16:03:00Z">2013-09-01T16:03:00Z</time> on 09/01/2013 09:03:00 Pacific Daylight Time (16:03 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
-
-
- </div>
- <script id="tmpl_CacheLogRow" type="text/x-jquery-tmpl">
- <tr class="log-row" data-encoded="${IsEncoded}" >
- <td>
- <div class="FloatLeft LogDisplayLeft" >
- <p class="logOwnerProfileName">
- <strong><a id="143568283" href="/profile/?guid=${AccountGuid}">${UserName}</a></strong></p>
- <p class="logOwnerBadge">
- <img title="${creator.GroupTitle}" src="${creator.GroupImageUrl}">${creator.GroupTitle}
- </p>
- <p class="logOwnerAvatar">
- <a href="/profile/?guid=${AccountGuid}">
- {{if includeAvatars && AvatarImage}}
+ <div id="topScroll" class="TopScroll" style="display: none;">
+ <a href="#Top">&nbsp;</a> </div></div><script id="tmpl_CacheLogRow" type="text/x-jquery-tmpl">
+ <tr class="log-row" data-encoded="${IsEncoded}">
+ <td>
+ <div class="FloatLeft LogDisplayLeft">
+ <p class="logOwnerProfileName">
+ <strong><a id="143568283" href="/profile/?guid=${AccountGuid}">${UserName}</a></strong>
+ </p>
+ <p class="logOwnerBadge">
+ <img title="${creator.GroupTitle}" src="${creator.GroupImageUrl}">${creator.GroupTitle}
+ </p>
+ <p class="logOwnerAvatar">
+ <a href="/profile/?guid=${AccountGuid}">{{if includeAvatars && AvatarImage}}
<img width="48" height="48" src="http://img.geocaching.com/user/avatar/${AvatarImage}">
- {{else includeAvatars }}
+ {{else includeAvatars }}
<img width="48" height="48" src="/images/default_avatar.jpg">
- {{/if}}
- </a></p>
- <p class="logOwnerStats">
-
- {{if GeocacheFindCount > 0 }}
- <img title="Caches Found" src="/images/icons/icon_smile.png"> ${GeocacheFindCount}
{{/if}}
-
- </p>
+ </a>
+ </p>
+ <p class="logOwnerStats">
+ {{if GeocacheFindCount > 0 }}
+ <img title="Caches Found" src="/images/icons/16/found.png">${GeocacheFindCount}
+ {{/if}}
+ </p>
+ </div>
+ <div class="FloatLeft LogDisplayRight">
+ <div class="HalfLeft LogType">
+ <strong>
+ <img title="${LogType}" alt="${LogType}" src="/images/logtypes/${LogTypeImage}">&nbsp;${LogType}</strong>
</div>
- <div class="FloatLeft LogDisplayRight">
- <div class="HalfLeft LogType">
- <strong>
- <img title="${LogType}" alt="${LogType}" src="/images/logtypes/${LogTypeImage}">&nbsp;${LogType}</strong></div>
- <div class="HalfRight AlignRight">
- <span class="minorDetails LogDate">${Visited}</span></div>
- <div class="Clear LogContent">
- {{if LatLonString.length > 0}}
+ <div class="HalfRight AlignRight">
+ <span class="minorDetails LogDate">${Visited}</span>
+ </div>
+ <div class="Clear LogContent">
+ {{if LatLonString.length > 0}}
<strong>${LatLonString}</strong>
- {{/if}}
+ {{/if}}
<p class="LogText">{{html LogText}}</p>
- {{if Images.length > 0}}
+ {{if Images.length > 0}}
<table cellspacing="0" cellpadding="3" class="LogImagesTable">
- {{tmpl(Images) "tmplCacheLogImages"}}
+ {{tmpl(Images) "tmplCacheLogImages"}}
</table>
- {{/if}}
+ {{/if}}
- <div class="AlignRight">
- <small><a title="View Log" href="log.aspx?LUID=${LogGuid}" target="_blank">
- {{if (userInfo.ID==AccountID)}}
+ <div class="AlignRight">
+ <small><a title="View Log" href="/seek/log.aspx?LUID=${LogGuid}" target="_blank">{{if (userInfo.ID==AccountID)}}
View / Edit Log / Images
{{else}}
View Log
{{/if}}
- </a></small>&nbsp;
+ </a></small>&nbsp;
{{if (userInfo.ID==AccountID)}}
- <small><a title="Upload Image" href="upload.aspx?LID=${LogID}" target="_blank">Upload Image</a></small>
- {{/if}}
- </div>
+ <small><a title="Upload Image" href="/seek/upload.aspx?LID=${LogID}" target="_blank">Upload Image</a></small>
+ {{/if}}
</div>
</div>
- </td>
- </tr>
- </script>
- <script id="tmpl_CacheLogImages" type="text/x-jquery-tmpl">
+ </div>
+ </td>
+ </tr>
+ </script><script id="tmpl_CacheLogImages" type="text/x-jquery-tmpl">
<tr>
<td>
+
<a class="tb_images lnk" rel="tb_images[grp${LogID}]" href="http://img.geocaching.com/cache/log/large/${FileName}" data-title="{{tmpl "tmplCacheLogImagesTitle"}}">
<img title="Photo" alt="Photo" src="/images/icons/16/photo.png">
<span>${ $('<div />').text($('<div />').html($item.data.Name).text()).html() }</span>
</a>
</td>
</tr>
+ </script><script id="tmpl_CacheLogImagesTitle" type="text/x-jquery-tmpl">
+ &lt;span class=&quot;LogImgTitle&quot;&gt; ${ $('<div />
+ ').text($('<div />
+ ').text($('<div />
+ ').html($item.data.Name).text()).html()).html() } &nbsp;&lt;/span&gt;&lt;span class=&quot;LogImgLink&quot;&gt;
+
+ &lt;a target=&quot;_blank&quot; href=&quot;/seek/log.aspx?LUID=${$item.parent.parent.data.LogGuid}&IID=${ImageGuid}&quot;>View Log&lt;/a&gt;&nbsp;
+
+ &lt;a href=&quot;http://img.geocaching.com/cache/log/large/${FileName}&quot;>Print Picture&lt;/a&gt;&lt;/span&gt;
+
+ {{if (Descr && Descr.length > 0) }}
+ &lt;br /&gt;&lt;p class=&quot;LogImgDescription&quot;&gt;${ $('<div />
+ ').text($('<div />
+ ').text($('<div />
+ ').html($item.data.Descr).text()).html()).html() }&lt;/p&gt;
+ {{/if}}
+ </script><script id="tmpl_CacheCoordinateUpdate" type="text/x-jquery-tmpl">
+ <div class="ccu-update" data-lat="${ll[0]}" data-lng="${ll[1]}">
+ <h4 class="BottomSpacing">Corrected Coordinates (hidden from others)</h4>
+ <dl>
+ <dt>Original:</dt>
+ <dd>${ll_formatted} <a href="#" class="ccu-restore">Restore</a></dd>
+ </dl>
+ <dl class="ccu-parse">
+ <dt>Change To:</dt>
+ <dd>
+ <input type="text" max="40" size="35" class="cc-parse-text">
+ <button class="ccu-button ccu-parse">Submit</button>
+ </dd>
+ </dl>
+ <dl class="ccu-parseverify" style="display: none;">
+ <dt>Change To:</dt>
+ <dd>
+ <span class="ccu-parseverify-coords">N 32°38.880′, W 097°23.755′</span>
+ </dd>
+ <dt>&nbsp;</dt>
+ <dd>
+ <button class="ccu-button ccu-parseverify-accept">Accept</button>&nbsp;
+ <button class="ccu-button ccu-parseverify-cancel">Cancel</button>
+ </dd>
+ </dl>
+ </div>
</script>
- <script id="tmpl_CacheLogImagesTitle" type="text/x-jquery-tmpl">
- &lt;span class=&quot;LogImgTitle&quot;&gt; ${ $('<div />').text($('<div />').text($('<div />').html($item.data.Name).text()).html()).html() } &nbsp;&lt;/span&gt;&lt;span class=&quot;LogImgLink&quot;&gt;
-
- &lt;a target=&quot;_blank&quot; href=&quot;log.aspx?LUID=${$item.parent.parent.data.LogGuid}&IID=${ImageGuid}&quot;>View Log&lt;/a&gt;&nbsp;
-
- &lt;a href=&quot;http://img.geocaching.com/cache/log/large/${FileName}&quot;>Print Picture&lt;/a&gt;&lt;/span&gt;
- {{if (Descr && Descr.length > 0) }}
- &lt;br /&gt;&lt;p class=&quot;LogImgDescription&quot;&gt;${ $('<div />').text($('<div />').text($('<div />').html($item.data.Descr).text()).html()).html() }&lt;/p&gt;
- {{/if}}
- </script>
- <script id="tmpl_CacheCoordinateUpdate" type="text/x-jquery-tmpl">
- <div class="ccu-update" data-lat="${ll[0]}" data-lng="${ll[1]}">
- <h4 class="BottomSpacing">Corrected Coordinates (hidden from others)</h4>
- <dl>
- <dt>Original:</dt>
- <dd>${ll_formatted} <a href="#" class="ccu-restore">Restore</a></dd>
- </dl>
- <dl class="ccu-parse">
- <dt>Change To:</dt>
- <dd>
- <input type="text" max="40" size="35" class="cc-parse-text">
- <button class="ccu-button ccu-parse">Submit</button>
- </dd>
- </dl>
- <dl class="ccu-parseverify" style="display:none;">
- <dt>Change To:</dt>
- <dd>
- <span class="ccu-parseverify-coords">N 32°38.880′, W 097°23.755′</span>
-
- <button class="ccu-button ccu-parseverify-accept">Accept</button>&nbsp;<button class="ccu-button ccu-parseverify-cancel">Cancel</button>
- </dd>
- </dl>
</div>
- <div class="Clear"></div>
-
- </script>
-
- <script type="text/javascript">
- <!--
- var dh, lat, lng, guid;
-
- dh = 'false';
-
- lat=null;lng=null;guid=null;
-
-
- function s2gps(guid) {
- var w = window.open('sendtogps.aspx?guid=' + guid, 's2gps', config='width=450,height=450,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no');
- w.focus();
- }
-
- function s2phone(wpid) {
- window.location.href='sendtophone.aspx?gc=' + wpid;
- }
-
- function pl(lc) {
- document.location.href='cache_details_print.aspx?guid=' + guid + '&numlogs=' + lc +'&pt=full&lt=letter&decrypt='+ ((dh)?'y':'n');
- }
- function setNotification(id) {
- //new Effect.Highlight(id, {startcolor:'#ffffff', endcolor:'#ffff99', restorecolor:'#ffff99', duration:3.0, queue:'front'});
- //new Effect.Highlight(id, {startcolor:'#ffff99', endcolor:'#ffffff', restorecolor:'#ffffff', duration:5.0, queue:'end'});
- }
- function cmo(id) {
- //new Effect.Fade(id);
- Cookie.set('sn', true);
- }
- function pp(img) {
- var w = window.open(img);
- w.focus();
- }
-
- //-->
- </script>
- <script language="javascript" type="text/javascript">
- var map, bounds;
- var canUpdateFavoriteStatus = true;
- var decryptLogs = (urlParams["decrypt"] && urlParams["decrypt"] == "y") ? true : false;
- var logInitialLoaded = false;
- var $tfoot = $("#cache_logs_table").find("tfoot");
- var currentPageIdx = 1, totalPages = 1, pageSize = 10;
- var isBusy = false;
-
- var locString = {
- decrypt: 'Decrypt',
- encrypt: 'Encrypt'
- };
-
- $("#tmpl_CacheLogImagesTitle").template("tmplCacheLogImagesTitle");
- $("#tmpl_CacheLogImages").template("tmplCacheLogImages");
- $("#tmpl_CacheLogRow").template("tmplCacheLogRow");
-
- $(".EncryptDecrypt")
- .button({ icons: { secondary: 'ui-icon-arrowreturnthick-1-w'} })
- .click(function (e) {
- e.preventDefault();
- $("tr.log-row").each(function (i, obj) {
- var $obj = $(obj);
- if ($obj.data("encoded") == true) {
- var lt = $obj.find("p.LogText");
- //var ltDecoded = $('<div />').html(lt.html()).text();
- lt.html(convertROTStringWithBrackets(lt.html()));
- }
- });
-
- decryptLogs = !decryptLogs;
-
- $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
-
- return false;
- });
-
- function appendNewLogs(obj) {
-
- totalPages = obj.pageInfo.totalPages;
-
- var $newBody = $(document.createElement("TBODY"));
-
- $("#tmpl_CacheLogRow").tmpl(obj.data,{ includeAvatars: includeAvatars }).appendTo($newBody);
-
- $newBody.find("a.tb_images").each(function()
- {
- var $this = $(this);
- $this.fancybox({
- 'type': 'image',
- 'titlePosition': 'inside',
- 'padding': 10,
- titleFormat: function() { return $this.data('title'); }
- });
- });
-
- $("#cache_logs_table")
- .append($newBody.children());
-
- currentPageIdx = obj.pageInfo.idx + 1;
- pageSize = obj.pageInfo.size;
- }
-
- function callLogLoad(hideFooter) {
- $.getJSON("/seek/geocache.logbook", { tkn: userToken, idx: currentPageIdx, num: pageSize, decrypt: decryptLogs },
- function (response) {
- if (response.status == "success") {
- appendNewLogs(response);
- if( hideFooter || (totalPages < currentPageIdx) ) {
- $tfoot.hide();
- }
- } else if (response.status == "error" && response.value == "1") {
- // reload the page since the data had expired.
- window.location.reload();
- }
- isBusy = false;
- });
- }
-
- $("#add_to_favorites").click(function () {
-
- if (canUpdateFavoriteStatus) {
- canUpdateFavoriteStatus = false;
-
- var fv = parseInt($(".favorite-value").text());
- fv++;
- $(".favorite-value").text(fv);
-
- var fr = parseInt($(".favorite-rank").text());
- fr--;
- $(".favorite-rank").text(fr);
-
- $("#pnlNonfavoriteCache").fadeOut("fast", function () {
- $("#pnlFavoriteCache").fadeIn("fast");
- });
-
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/update?u=' + userToken + '&f=true',
- success: function () {
- canUpdateFavoriteStatus = true;
- gotScore = false;
- showFavoriteScore();
- }
- });
-
- return false;
- }
- });
-
- $("#remove_from_favorites").click(function () {
-
- if (canUpdateFavoriteStatus) {
- canUpdateFavoriteStatus = false;
-
- var fv = parseInt($(".favorite-value").text());
- fv--;
- $(".favorite-value").text(fv);
-
- var fr = parseInt($(".favorite-rank").text());
- fr++;
- $(".favorite-rank").text(fr);
-
- $("#pnlFavoriteCache").fadeOut("fast", function () {
- $("#pnlNonfavoriteCache").fadeIn("fast");
- });
-
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/update?u=' + userToken + '&f=false',
- success: function () {
- canUpdateFavoriteStatus = true;
- gotScore = false;
- showFavoriteScore();
- }
- });
-
- return false;
- }
- });
-
- $(function () {
-
- // CSP Section
- if ($("#cspMessage").length) {
-
- var editLink = $('a[href*="report.aspx"]').attr('href');
-
- $("#cspMessage").prepend('<P>Please take a moment to check the listing and ensure it is ready to enable. Clicking "Submit for Review" will enable your cache page.</P>');
- $("#cspMessage").prepend('<P>Once it is enabled, you will receive a confirmation email that it was successfully submitted. It is peak season for cache placement. Your volunteer reviewer will strive to begin the review process within the next 7 days.</P>');
- $("#cspMessage").prepend('<P>Your cache page has not been reviewed yet. It will not appear in the review queue until you enable it.</P>');
-
- $("#cspGoBack").click(function (e) {
- e.preventDefault();
- window.location = editLink;
- return false;
- });
-
- $("#cspSubmit").click(function (e) {
- e.preventDefault();
- $.pageMethod("EnableCSPCache", JSON.stringify({ dto: { ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.success == true) {
- window.location = '/seek/cache_details.aspx?guid=' + r.guid;
- } else {
- alert("There was an error enabling your cache.");
- }
- });
- return false;
- });
-
- $("#cspConfirm").change(function() {
- if ($("#cspConfirm").is(":checked")) {
- $("#cspSubmit").removeAttr('disabled');
- $("#cspGoBack").attr('disabled', true);
- } else {
- $("#cspSubmit").attr('disabled', true);
- $("#cspGoBack").removeAttr('disabled');
- }
- });
- }
-
-
- //override coords
- if (typeof(userDefinedCoords) != "undefined") {
- if (userDefinedCoords.status == "success" && userDefinedCoords.data.isUserDefined == true) {
- mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
- $("#uxLatLon")
- .data("isOverridden", true)
- .addClass("myLatLon");
- } else if (userDefinedCoords.status == "success") {
- mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
- } else {
- $("#uxLatLonLink").contents().unwrap();
- }
- } else {
- $("#uxLatLonLink").contents().unwrap();
- }
-
-
- var cacheNoteText = {
- DefaultText: 'Click to enter a note',
- ErrorInSaving: 'There was an error saving page. Please refresh the page and try again.',
- SavingText: 'Please wait, saving your note...'
- };
-
-
-
- $("time.timeago").timeago();
-
- $(".button").button();
-
- var sn = Cookie.get('sn');
-
- if ($('#trNotPM').length > 0) {
- $('#trNotPM').toggle(!sn);
- }
-
- $("#cache_note").editInPlace({
- callback: function (unused, enteredText) {
- var me = $(this);
-
- var et = $.trim(enteredText);
- if (et.length > 500)
- et = et.substr(0, 500);
-
- $.pageMethod("SetUserCacheNote", JSON.stringify({ dto: { et: et, ut: userToken} }), function (r) {
- var r = JSON.parse(r.d);
- if (r.success == true) {
- if ($.trim(r.note) == "") {
- $("#cache_note").text(cacheNoteText.DefaultText);
- } else {
- $("#cache_note").text(r.note);
- }
-
- me.effect('highlight', { color: '#ffb84c' }, 'slow');
- } else {
- alert(cacheNoteText.ErrorInSaving);
- $("#cache_note").text(cacheNoteText.DefaultText);
- }
-
- });
-
- return cacheNoteText.SavingText;
- }
- , default_text: cacheNoteText.DefaultText
- , field_type: "textarea"
- , textarea_rows: "7"
- , textarea_cols: "65"
- , show_buttons: true
- , bg_over: "#FDEBBB"
- //, callback_skip_dom_reset: true
-
- });
-
- $("#lnk_slippyMap").click(function(e) {
- e.preventDefault();
- loadDynamicMap();
- return false;
- });
-
- $(".inplace_field").live("focus", function () {
- if ($(this).data("created") == null) {
- $(this).data("created", true)
- $(this).countable({
- maxLength: 500
- });
- }
- });
-
- $("#pcn_help").tipTip({ activation: 'hover', content: 'Enter your own notes here. No other user will be able to access them.' });
-
- $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
-
- if ($("#cache_logs_container").length > 0) {
-
- appendNewLogs(initalLogs);
-
- if (DetectMobileQuick()) {
- $("#pnlButtonLoad")
- .show()
- .find("a.MobileButton")
- .click(function (e) {
- e.preventDefault();
- callLogLoad(false);
- return false;
- })
- .button();
- if(!DetectTierTablet()){
- $("a.MobileButton").addClass("Phone");
- }
- } else {
- $("#pnlLazyLoad").show();
-
- $(window).endlessScroll({
- fireOnce: true,
- fireDelay: 500,
- bottomPixels: ($(document).height() - $("#cache_logs_container").offset().top) + 50,
- ceaseFire: function(){
- // stop the scrolling if the last page is reached.
- return (isLoggedIn == false) || (totalPages < currentPageIdx);
- },
- callback: function() {
- if (!isBusy) {
-
- isBusy = true;
- $tfoot.show();
- callLogLoad(true);
- }
- }
- });
- }
- }
-
- if (!isLoggedIn) {
- $("#cache_logs_table").find("tfoot").hide();
- }
-
- if (mapLatLng != null) {
-
- $("#uxLatLonLink").qtip({
- suppress:false,
- content: buildCacheCoordMenu(),
- position: {
- my: 'left top',
- at: 'right top',
- adjust: {
- x: 10, y: -10
- }
- },
- show: {
- ready: false,
- event: "click",
- solo: true
- }, hide: {
- event: 'unfocus'
- },
- style: {
- tip: {
- corner: false
- },
- classes: 'ui-tooltip-widget'
- },
- events: {
- show: function () {
- if ($("#uxLatLon").data("isOverridden")) {
- $("a.ccu-restore").show();
- } else {
- $("a.ccu-restore").hide();
- }
-
- if (userDefinedCoords.status != "success") {
- $("div.ccu-update").hide();
- } else {
- $("div.ccu-update").show();
- }
- }
- }
- }).click(function (e) {
- e.preventDefault();
- return false;
- });
-
- setStaticMaps();
- //$("#staticMap").lazyload();
- }
- });
-
- function setStaticMaps() {
-
- var map = new L.Map('map_preview_canvas', {
- center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- zoom: 10,
- doubleClickZoom: false,
- dragging: false,
- touchZoom: false,
- scrollWheelZoom: false,
- attributionControl: false
- })
- .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }));
-
-
- var mapLarge = new L.Map('map_canvas', {
- center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- zoom: 14,
- doubleClickZoom: true,
- dragging: true,
- touchZoom: false,
- scrollWheelZoom: false,
- zoomControl: true,
- attributionControl: false
- })
- .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }))
- .addControl(new L.Control.Scale());
-
- var tileOptions = {
- tileUrl: "http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg",
- name: "mpqosm",
- alt: "MapQuest",
- //attribution: "Tiles Courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>, Map and map data © 2012 <a href=\"http://www.openstreetmap.org\" target='_blank'>OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>. ",
- subdomains: "1234",
- tileSize: 256,
- minZoom: 0,
- maxZoom: 18
- };
-
- map.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
- mapLarge.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
-
- var pinIcon = L.Icon.extend({
- iconSize: new L.Point(20, 23),
- iconAnchor: new L.Point(10,23),
- shadowUrl: null
- });
-
- var mkA = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
- title: mapLatLng.name
- })
- .on("click", function () {
- document.getElementById("uxlrgMap").scrollIntoView(true);
- return false;
- });
-
- var mkA2 = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng), {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
- clickable: false, zIndexOffset:99, title: mapLatLng.name
- });
-
- map.addLayer(mkA);
- mapLarge.addLayer(mkA2);
-
- $("#ctl00_ContentBody_uxNotesAboutPrinting").fancybox({
- overlayShow: false
- });
-
-
- if (cmapAdditionalWaypoints != null && cmapAdditionalWaypoints.length > 0) {
- var llBounds = new L.LatLngBounds();
-
- for (var x = 0, len = cmapAdditionalWaypoints.length; x < len; x++) {
- var item = cmapAdditionalWaypoints[x],
- ll = new L.LatLng(item.lat, item.lng),
- marker = new L.Marker(ll, {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + item.type + '.png', iconAnchor: new L.Point(10,23)}),
- title: item.name,
- clickable:false
- });
-
- llBounds.extend(ll);
- mapLarge.addLayer(marker);
- }
- var bz = mapLarge.getBoundsZoom(llBounds);
-
- mapLarge.setView(new L.LatLng(mapLatLng.lat, mapLatLng.lng), bz);
- }
- }
-
-
-
- function dht() {
- try {
- $('#div_hint').html(convertROTStringWithBrackets($('#div_hint').html()));
- var linkText = (($('#ctl00_ContentBody_lnkDH').attr('title') == 'Decrypt') ? 'Encrypt' : 'Decrypt');
- $('#ctl00_ContentBody_lnkDH').text(linkText);
- $('#ctl00_ContentBody_lnkDH').attr('title', linkText);
- } catch (e) {
- alert(e);
- return false;
- }
- return false;
- }
-
- function buildCacheCoordMenu() {
- var curLatLng = new LatLon(mapLatLng.lat, mapLatLng.lng)
- $.template( "tmplCacheCoordinateUpdate_CoordItem", "<tr><td nowrap='nowrap'>${t}</td><td class='ccc-coord' nowrap='nowrap' dataum='${k}'>${v}</td></tr>" );
-
- var $menu = $("<div></div>");
-
- $( "#tmpl_CacheCoordinateUpdate" ).tmpl( {
- ll: [mapLatLng.lat, mapLatLng.lng],
- ll_formatted: mapLatLng.oldLatLngDisplay
- } ).appendTo( $menu );
-
- $menu.find("button.ccu-button").button();
-
- $menu.delegate("button.ccu-parse", "click", function (e) {
- e.preventDefault();
- var $this = $(e.target),
- $parse =$this.closest('dd').find(".cc-parse-text"),
- parseCoords = $.trim($parse.val());
-
- if (parseCoords.length == 0) {
- alert('Please provide valid coordinates.');
- } else {
- $.getJSON("/api/geocode", { parse: parseCoords}, function (response) {
- if (response.status == "success") {
- var newLatLng = new LatLon(response.data.lat, response.data.lng);
-
- // update the displayed coords
- var dist = curLatLng.rhumbDistanceTo(newLatLng);
- var bearingTo = curLatLng.rhumbBearingTo(newLatLng);
- var bearing = bearingTo >= 0 || bearingTo < 22.5 ? "N" : bearingTo >= 22.5 || bearingTo < 67.5 ? "NE" : bearingTo >= 67.5 || bearingTo < 112.5 ? "E" : bearingTo >= 112.5 || bearingTo < 157.5 ? "SE" : bearingTo >= 157.5 || bearingTo < 202.5 ? "S" : bearingTo >= 202.5 || bearingTo < 247.5 ? "SW" : bearingTo >= 247.5 || bearingTo < 292.5 ? "W" : bearingTo >= 292.5 || bearingTo < 337.5 ? "NW" : "N";
-
- var formats = response.data.formats;
- // all these finds, make me feel dirty
- $menu
- .find("span.ccu-parseverify-coords").text(formats.DM).end()
- .find("dl.ccu-parse").hide().end()
- .find("dl.ccu-parseverify").show().end()
- .find("button.ccu-parseverify-accept")
- .data("utm", '')
- .data("dm", formats.DM)
- .data("lat", response.data.lat)
- .data("lng", response.data.lng)
- .end();
- } else {
- alert("Sorry unable to parse the coordinates you entered.");
- }
- });
- }
-
- return false;
- });
-
- $menu.delegate("button.ccu-parseverify-accept", "click", function (e) {
- e.preventDefault();
- var $this = $(this);
- // update to webmethod
- $.pageMethod("SetUserCoordinate", JSON.stringify({ dto: { data: {lat: $this.data("lat"), lng: $this.data("lng") }, ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.status == "success") {
- window.location.reload();
- } else {
- $("#uxLatLonLink").qtip('hide');
- }
-
- });
-
- return false;
- });
-
- $menu.delegate("button.ccu-parseverify-cancel", "click", function (e) {
- e.preventDefault();
- $menu
- .find("input.cc-parse-text").val('').end()
- .find("dl.ccu-parse").show().end()
- .find("dl.ccu-parseverify").hide().end();
- return false;
- });
-
- $menu.delegate("a.ccu-restore", "click", function (e) {
- e.preventDefault();
-
- $.pageMethod("ResetUserCoordinate", JSON.stringify({ dto: { ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.status == "success") {
- window.location.reload();
- }
- });
-
- return false;
- });
-
- return $menu;
- }
-
- GSPK = window.GSPK || {};
- GSPK.Selector = {};
- GSPK.Selector.getSelected = function(){
- var t = null;
- if ( window.getSelection ){
- t = window.getSelection();
- }else if(document.getSelection){
- t = document.getSelection();
- }else if(document.selection){
- t = document.selection.createRange().text;
- }
- return t;
- }
-
- try { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'NotSignedIn', null, true]); } catch(err) { }
- </script>
-
-
-
- </div>
-
-
-
</div>
-
-
</section>
-
<footer>
-
<div class="container">
-
<div class="span-24 last FooterTop">
-
<div class="LocaleText">
@@ -1822,27 +1004,35 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<li><a id="ctl00_uxLocaleList_uxLocaleList_ctl04_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl04$uxLocaleItem&#39;,&#39;&#39;)">Čeština</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Dansk</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Ελληνικά</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Latviešu</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl16_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl16$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl17_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl17$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl18_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl18$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl19_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl19$uxLocaleItem&#39;,&#39;&#39;)">日本語</a></li>
</ul>
@@ -1869,14 +1059,14 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
});
});
</script>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ </div>
+ <div class="container column-container">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- About</strong></p>
+ About</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterGlossary" title="Glossary of Terms" href="../about/glossary.aspx">Glossary of Terms</a></li>
@@ -1885,18 +1075,14 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<li>
<a id="ctl00_hlFooterAbout" title="About Groundspeak" href="../about/groundspeak.aspx">About Groundspeak</a></li>
<li>
- <a id="ctl00_hlFooterVolunteers" title="About Our Volunteers" href="../volunteers/">About Our Volunteers</a></li>
- <li>
<a id="ctl00_hlFooterHistory" title="History" href="../about/history.aspx">History</a></li>
</ul>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Press</strong></p>
+ Press</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterNews" title="News Articles" href="../press/">News Articles</a></li>
@@ -1904,15 +1090,15 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<a id="ctl00_hlFooterMediaFAQs" title="Media FAQs" rel="document" href="../articles/Brochures/footer/FAQ_Media.pdf">Media FAQs</a></li>
<li>
<a id="ctl00_hlFooterMediaInquiries" title="Media Inquiries" rel="external" href="http://support.groundspeak.com/index.php?pg=request&amp;xCategory=11">Media Inquiries</a></li>
+ <li>
+ <a id="ctl00_hlFooterLogo" accesskey="l" title="Logo Usage Guidelines" href="../about/logousage.aspx">Logo Usage Guidelines</a></li>
</ul>
-
</div>
-
- <div class="span-5">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Questions & Suggestions</strong></p>
+ Questions & Suggestions</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterHelpCenterLink" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
@@ -1923,14 +1109,12 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<li>
<a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/">Contact Us</a></li>
</ul>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Resources</strong></p>
+ Resources</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/">Tools and Downloads</a></li>
@@ -1939,118 +1123,56 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=TeamOttlet" tar
<li>
<a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/">Find a Benchmark</a></li>
</ul>
-
</div>
- <div class="span-4 append-3 last">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Follow Us</strong></p>
- <ul class="FooterLinks FollowUsLinks">
- <li><a id="ctl00_hlFacebook" title="Facebook" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts"><img id="ctl00_imgFacebook" title="Facebook" src="../images/home/icon_facebook.png" alt="Facebook" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlTwitter" title="Twitter" href="http://twitter.com/GoGeocaching"><img id="ctl00_imgTwitter" title="Twitter" src="../images/twitter/twitter_icon_white_22.png" alt="Twitter" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlFlickr" title=" Flickr" href="http://www.flickr.com/photos/geocaching_com/"><img id="ctl00_imgFlickr" title="Flickr" src="../images/home/icon_flickr.png" alt="Flickr" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlYouTube" title="YouTube" href="http://www.youtube.com/user/GoGeocaching"><img id="ctl00_imgYouTube" title="YouTube" src="../images/home/icon_youtube.png" alt="YouTube" style="border-width:0px;" /></a></li>
- </ul>
-
+ Follow Us</strong>
+ </p>
+ <ul class="FooterLinks FollowUsLinks">
+ <li>
+ <a id="ctl00_hlFacebook" title="Facebook" href="http://www.facebook.com/geocaching"></a></li>
+ <li>
+ <a id="ctl00_hlYouTube" title="YouTube" href="http://www.youtube.com/user/GoGeocaching"></a></li>
+ <li>
+ <a id="ctl00_hlInstagram" title="Instagram" href="http://instagram.com/gogeocaching/"></a></li>
+ <li>
+ <a id="ctl00_hlTwitter" title="Twitter" href="http://twitter.com/GoGeocaching"></a></li>
+ </ul>
</div>
-
- <p class="span-24 last FooterBottom">
+ </div>
+ <div class="FooterBottom">
+ <div class="container">
+ <p>
Copyright
- &copy; 2000-2012
+ &copy; 2000-2013
<a href="http://www.groundspeak.com/" title="Groundspeak, Inc." accesskey="g">Groundspeak, Inc.</a>
- All Rights Reserved.<br />
+ All Rights Reserved.
<a id="ctl00_hlFooterTerms" accesskey="u" title="Groundspeak Terms of Use" href="../about/termsofuse.aspx">Groundspeak Terms of Use</a>
|
<a id="ctl00_hlFooterPrivacy" accesskey="x" title="Privacy Policy" href="../about/privacypolicy.aspx">Privacy Policy</a>
- |
- <a id="ctl00_hlFooterLogo" accesskey="l" title="Geocaching Logo Usage Guidelines" href="../about/logousage.aspx">Geocaching Logo Usage Guidelines</a>
- |
- <a id="ctl00_hlFooterAPI" accesskey="`" title="API License Agreement" href="../live/api_license_agreement.aspx">API License Agreement</a>
- |
- <a id="ctl00_HlFooterStatus" accesskey="`" title="Current Service Status" href="http://status.geocaching.com">Service Status</a></p>
-
+ </p>
+
+ </div>
</div>
-
-
</footer>
<div class="SkipLinks">
-
<a id="ctl00_hlSkipLinksTop" accesskey="t" title="Return to the Top of the Page" href="#Top">Return to the Top of the Page</a>
-
</div>
-
-
-<script type="text/javascript">
-//<![CDATA[
-var Page_ValidationSummaries = new Array(document.getElementById("ctl00_vsSignInWidgetForm"));
-var Page_Validators = new Array(document.getElementById("ctl00_rfvUsername"), document.getElementById("ctl00_rfvPassword"));
-//]]>
-</script>
-
-<script type="text/javascript">
-//<![CDATA[
-var ctl00_vsSignInWidgetForm = document.all ? document.all["ctl00_vsSignInWidgetForm"] : document.getElementById("ctl00_vsSignInWidgetForm");
-ctl00_vsSignInWidgetForm.headertext = "<h4>Please correct the following issues:</h4>";
-ctl00_vsSignInWidgetForm.validationGroup = "SignInForm";
-var ctl00_rfvUsername = document.all ? document.all["ctl00_rfvUsername"] : document.getElementById("ctl00_rfvUsername");
-ctl00_rfvUsername.controltovalidate = "ctl00_tbUsername";
-ctl00_rfvUsername.errormessage = "Username is a required field; please enter a valid username.";
-ctl00_rfvUsername.display = "Dynamic";
-ctl00_rfvUsername.validationGroup = "SignInForm";
-ctl00_rfvUsername.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
-ctl00_rfvUsername.initialvalue = "";
-var ctl00_rfvPassword = document.all ? document.all["ctl00_rfvPassword"] : document.getElementById("ctl00_rfvPassword");
-ctl00_rfvPassword.controltovalidate = "ctl00_tbPassword";
-ctl00_rfvPassword.errormessage = "Password is a required field; please enter a valid password.";
-ctl00_rfvPassword.display = "Dynamic";
-ctl00_rfvPassword.validationGroup = "SignInForm";
-ctl00_rfvPassword.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
-ctl00_rfvPassword.initialvalue = "";
-//]]>
-</script>
-
<script type="text/javascript">
//<![CDATA[
-var isLoggedIn = false;
-var userDefinedCoords = {"status":"fail","data":{"isUserDefined":false,"oldLatLngDisplay":"N 37° 23.900' W 121° 55.000'"}};
-userInfo = {ID: 0};
-userToken = 'WQZID4ZFAYC6SULYQF74LYDA3S3BDCRFF42MHAMCQ2FV344K2FX57T5PR5HMIIEYY3CGMUR4ZCJLPZTNFNAGW2TB53PY5QWTMDL4AU4IKCSURNTR555XW5UR6GPGTI3L77XLHQYQRCXS6J3O3FRH3WHZ23TV7YTF2XZ3PYA';
-//]]>
-</script>
-<script type="text/javascript">setNotification('ctl00_ContentBody_trNotLoggedIn');</script>
-<script type="text/javascript">
-//<![CDATA[
-initalLogs = {"status":"success", "data": [{"LogID":284766538,"CacheID":3372822,"LogGuid":"73790d15-edbd-4e22-8906-fd78557699b4","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"No idea eventually became one idea that became another idea...which became a lot of work! <img src=\"/images/icons/icon_smile_shock.gif\" border=\"0\" align=\"middle\" /> In fact, I might still be busy-bee-ing my way through the puzzle if I hadn't received a timely offer that was too good to refuse. Turned out I had figured out enough to be getting close but had a loooooong way to go, so I was very grateful for the boost up from skillz I lack. From there, the solution was quickly within reach, and after digging around in my mind for another bit of inspiration, the cache was soon in reach as well. TNLNSL, TFTC!","Created":"12/21/2012","Visited":"12/20/2012","UserName":"thelins","MembershipLevel":3,"AccountID":2999428,"AccountGuid":"01cb03f6-290f-4720-8786-0c5ac17a6cc0","Email":"","AvatarImage":"0ee825d9-bc33-41f4-bf0e-a62bde392303.jpg","GeocacheFindCount":1424,"GeocacheHideCount":14,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284677706,"CacheID":3372822,"LogGuid":"7c7a396a-337e-4b48-b76b-db5c1c351126","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"21:56. Consecutive Day 3445.<br />Knew what I needed to do right away with this puzzle, as I had been considering how to incorporate this \"feature\" into one of my own puzzles, but I misread the date as 12/12/12, and so my attempt to solve this morning failed. Saw the new info this evening and worked out a trick to make it easier to find the needed info. The cache hint confused me, and it took me a long time to find the cache.<br />{3/1.5m-puz,n,h}<br /><br />This entry was edited by kablooey on Thursday, December 20, 2012 at 2:25:22 PM UTC.","Created":"12/19/2012","Visited":"12/19/2012","UserName":"kablooey","MembershipLevel":1,"AccountID":18898,"AccountGuid":"a3dd3925-32ae-4ab2-9063-b62919d412b7","Email":"","AvatarImage":"906a0d82-5f39-4925-830f-a505f38d15fb.jpg","GeocacheFindCount":14367,"GeocacheHideCount":135,"ChallengesCompleted":13,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":284677102,"CacheID":3372822,"LogGuid":"7bc5e006-4d3a-4b40-9c3d-50dcf348ef56","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I saw this one this morning as I got ready to go out for my run. I was a little disappointed to see so much description of what was needed, since I knew what to do for once on a puzzle around here. The only clever part of what I did to solve this one was to narrow down the possibilities to essentially what the new extra information says. I underestimated how much time it was going to take to finish up once I got in to work, but it still went by relatively quickly. I don't think there's any way I could have made to be FTF, even though I did solve 8 minutes before TeamOttlet found it. Anyways, I stopped by on my way home, and despite the darkness, it was in the first place I checked, thanks to the certitude hint. Thanks for the puzzle.","Created":"12/19/2012","Visited":"12/19/2012","UserName":"payakoi","MembershipLevel":3,"AccountID":94859,"AccountGuid":"b20a5189-6852-49ba-951f-b3471d3198bf","Email":"","AvatarImage":"","GeocacheFindCount":5344,"GeocacheHideCount":7,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284659125,"CacheID":3372822,"LogGuid":"819ecce1-91db-48bc-899a-063e12512595","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Updated the description to include some details about the waypoint.<br /><br />Thank Chrysalides for the US OIL tip <img src=\"/images/icons/icon_smile_approve.gif\" border=\"0\" align=\"middle\" />. kanchan suggested LOUIS <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />.<font color=\"white\"><br /><br />This entry was edited by The North Star on Thursday, 20 December 2012 at 02:38:37 UTC.</font>","Created":"12/19/2012","Visited":"12/19/2012","UserName":"The North Star","MembershipLevel":3,"AccountID":669462,"AccountGuid":"f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5","Email":"","AvatarImage":"1561481d-e045-481f-9c19-eccb025fcfea.jpg","GeocacheFindCount":1308,"GeocacheHideCount":40,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284645348,"CacheID":3372822,"LogGuid":"05e00972-1576-4c93-b595-93c095632984","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"FTF at 11:40am<br />I made this one a lot more tedious than it had to be, I ought to have read the description more carefully. I did find a slightly more efficient search method, but still pretty manual. TFTP<font color=\"white\"></font>","Created":"12/19/2012","Visited":"12/19/2012","UserName":"TeamOttlet","MembershipLevel":3,"AccountID":623076,"AccountGuid":"b9f2639c-5ed0-4625-82ed-f7723aad6a24","Email":"","AvatarImage":"b4d5c924-f0b3-4668-866d-0c7eafe6a6ad.jpg","GeocacheFindCount":7971,"GeocacheHideCount":11,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 5, "totalRows": 7, "rows": 7 } };
-
-document.getElementById('ctl00_vsSignInWidgetForm').dispose = function() {
- Array.remove(Page_ValidationSummaries, document.getElementById('ctl00_vsSignInWidgetForm'));
-}
-
-var Page_ValidationActive = false;
-if (typeof(ValidatorOnLoad) == "function") {
- ValidatorOnLoad();
-}
-
-function ValidatorOnSubmit() {
- if (Page_ValidationActive) {
- return ValidatorCommonOnSubmit();
- }
- else {
- return true;
- }
-}
- WebForm_AutoFocus('btnSignIn');
-document.getElementById('ctl00_rfvUsername').dispose = function() {
- Array.remove(Page_Validators, document.getElementById('ctl00_rfvUsername'));
-}
-
-document.getElementById('ctl00_rfvPassword').dispose = function() {
- Array.remove(Page_Validators, document.getElementById('ctl00_rfvPassword'));
-}
-//]]>
+$(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); });var isLoggedIn = true;
+var userDefinedCoords = {"status":"success","data":{"isUserDefined":false,"oldLatLngDisplay":"N 37° 23.900' W 121° 55.000'"}};
+mapLatLng = {"lat":37.39833,"lng":-121.91667,"type":8,"name":"Cache is Unpublished"};
+var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"37.398333, -121.916667"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 37° 23' 53.999\" W 121° 55' 00.001\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"10S E 595887 N 4139612"}];
+var dh=false;userInfo = {ID: 3409138};
+userToken = 'ID5R2NBJDBPQYVKRP2QCKFMGOD72N345U34TRF3HIUOES7I3DEYZLGMWQENANSEL75TH743VWQXA4PRVBZVB2UFIVLT5HYFG73BJY737PC6AVOROLQCJBHWZ5WOPA4ZCUMZSO7RLBORYFW5XH4FZERAO4GV6P6EU7MMIJWSXR4HI3PG6GTCP6X6RFIY5IE6S32L5WHXGLDBMBACUPAWLOYXDFEZJDKCYQYB3LMZT6UHMTY2L2ULQ';
+includeAvatars = false;
+var lat=37.398333, lng=-121.916667, guid='af38aaf9-5386-40bb-92f0-025ebc7700a7';
+initalLogs = {"status":"success", "data": [{"LogID":342518422,"CacheID":3372822,"LogGuid":"924e8226-25d6-4d34-b514-e2eb29729795","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Not sure if it was introduced by the site update today or if it was there some time before but this puzzle is once again solvable by everyone, although not in the way described in the hint. I'll let the owner figure out how to solve his own puzzle now <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />.","Created":"2013-08-21","Visited":"2013-08-21","UserName":"xophe","MembershipLevel":1,"AccountID":805604,"AccountGuid":"0080ff5c-3921-4a44-a21d-8b76ce0fc66f","Email":"","AvatarImage":"3906abca-b591-4f84-a815-7e73eb40096e.jpg","GeocacheFindCount":2475,"GeocacheHideCount":60,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":303110745,"CacheID":3372822,"LogGuid":"a56a5e88-abf4-43c7-8de3-b7789a566312","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I had solved this one back in December when it first came out <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />. I figured out a way to cut down the search space and to partially automate the task, but there was still a human in the loop, and the human was quite bored by the end of it <img src=\"/images/icons/icon_smile_sleepy.gif\" border=\"0\" align=\"middle\" />. But I forgot to put the cache on my solved-but-not-found bookmark list, which had grown quite a bit already, so I lost track of it [:|]. Now that I'm trying to find a puzzle a day to meet a challenge, I was sure that I had solved some that were not on the list, and sure enough, there were a few including a couple by the CO <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" />. As I was checking them, I noticed that the plan is to archive this cache soon <img src=\"/images/icons/icon_smile_shock.gif\" border=\"0\" align=\"middle\" />. When I saw that, I figured I needed to go grab it in a hurry, so I headed over at lunch time today <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />. When I arrived, I found that GZ was the de-facto smoking area for people who work nearby <img src=\"/images/icons/icon_smile_sad.gif\" border=\"0\" align=\"middle\" /> so I had to out-wait the nicotine-addicted muggles <img src=\"/images/icons/icon_smile_dissapprove.gif\" border=\"0\" align=\"middle\" />. At first I misinterpreted the hide hint, so it took me a while to make the find, but I got it <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />.<br /><br />Glad I managed to score this one in time. It's my 26th day in a row with a puzzle find. Thanks!","Created":"2013-04-03","Visited":"2013-04-03","UserName":"not2b","MembershipLevel":3,"AccountID":489008,"AccountGuid":"3d6e5543-acb0-4686-b589-4a700a510368","Email":"","AvatarImage":"","GeocacheFindCount":5108,"GeocacheHideCount":43,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":291374061,"CacheID":3372822,"LogGuid":"a8d53b14-1302-491c-bbbc-d26e2ca552ce","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"The fact that I solved the puzzle after the bug was fixed is proof that it's still solvable but the method I used is not available to everyone, although many among the finders have already seen it in action. I had the advantage of having tools ready to work on this problem and there was no throttling issue, I got the answer in a few seconds.<br />I had noticed the bug before and I'm not too surprised it has been fixed, although you never know, it might still exist in other places, I know of a particular (unrelated) one that is still around.<br />Given the proximity of the cache and the fact that it might be archived soon pushed me to go get it, and even with my lack of practice, I found the cache in the first spot I checked.<br />Thanks for the interesting puzzle.","Created":"2013-01-28","Visited":"2013-01-28","UserName":"xophe","MembershipLevel":1,"AccountID":805604,"AccountGuid":"0080ff5c-3921-4a44-a21d-8b76ce0fc66f","Email":"","AvatarImage":"3906abca-b591-4f84-a815-7e73eb40096e.jpg","GeocacheFindCount":2475,"GeocacheHideCount":60,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":291245611,"CacheID":3372822,"LogGuid":"ed77f5ba-4832-4592-ab0e-8c7740a597c3","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I can't say that I enjoyed solving this one very much. The concept was very interesting, but I found that applying the process manually to be very tedious. I wasn't in the mood for setting up some automation, so I happily accepted some time-saving information. Still, I find it unfortunate that the puzzle no longer works. I appreciate the effort, and would have liked to see it continue. TFTC","Created":"2013-01-27","Visited":"2013-01-27","UserName":"jimbexleyspeed","MembershipLevel":3,"AccountID":942604,"AccountGuid":"45c5faf5-33a7-4c94-86ae-d40c5d3a1082","Email":"","AvatarImage":"43f9d002-ebba-4fc5-b3d6-6ee6b2b9f883.png","GeocacheFindCount":4039,"GeocacheHideCount":16,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289182452,"CacheID":3372822,"LogGuid":"7c2f6e74-12dd-4dc6-b116-305869e382de","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I re-used some code from past activities again to help me automate this. I throttled a LOT more than fizzy letting it collect data overnight. Then I applied some logic to narrow the range and a few minutes of manual pecking produced the solution. Thanks for an interesting twist.","Created":"2013-01-12","Visited":"2013-01-12","UserName":"mcdurr","MembershipLevel":3,"AccountID":2640212,"AccountGuid":"548197b2-c82e-498c-bcc7-f6643cf3f146","Email":"","AvatarImage":"1bd872d4-66db-4343-9b29-e865da668020.jpg","GeocacheFindCount":2171,"GeocacheHideCount":43,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289178556,"CacheID":3372822,"LogGuid":"8535e2fa-52ac-44d9-ab24-a81724c51683","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"We HAD to do this one today since it's not going to last very long! I automated this process completely; took about ten minutes to write and about ten minutes to run (I throttled a LOT). Good job. We naturally approached the cache from the harder side, even though we didn't need to.","Created":"2013-01-12","Visited":"2013-01-12","UserName":"fizzymagic","MembershipLevel":3,"AccountID":45488,"AccountGuid":"5275e5e9-9c23-4918-ac00-5b8130e257b9","Email":"","AvatarImage":"29e19b8d-b356-450f-bbf5-96cae9be70b2.jpg","GeocacheFindCount":6515,"GeocacheHideCount":78,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289171175,"CacheID":3372822,"LogGuid":"5158db72-427d-43b0-87c6-af42a167b7c9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"What a bummer that the puzzle got annihilated so soon after publication. Interesting trick. Glad we got to find it before it disappeared. Thanks!","Created":"2013-01-12","Visited":"2013-01-12","UserName":"geodanimal","MembershipLevel":3,"AccountID":282368,"AccountGuid":"d43e9c4f-d810-4b86-bad8-b4f7e6b69970","Email":"","AvatarImage":"2cc0fe63-0b72-4778-8b99-fc3f0407da7c.jpg","GeocacheFindCount":5470,"GeocacheHideCount":28,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":288721599,"CacheID":3372822,"LogGuid":"f424cf3e-474a-4f43-8779-ccd4a4a1211b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I was kinda puzzled about this when it first came out, but something became clearer -- I think it was the hint, but I'm not sure -- and everything fell into place. Cool feature. Too bad it's gone already. I'm sure there's some clever way to approach this, but I just slogged to the answer manually. Thank goodness for the limitation given. It didn't take me as long as I expected, but I did have enough time to start wondering how this was going to work since I wouldn't be able to see the coordinates. Cute answer. I have to admit, I was a little miffed about having my list blown away by my own actions, since I use it all the time, but I got over it.<br /><br />I noticed the update after the update, so I scurried down to get it before it, too, becomes unpublished. I parked at GZ, planning on heading off in a different direction, but I discovered unexpected access nearby -- the certitude hint really just a hide hint; I thought it was also an access hint -- making this an even better place to start, so I changed my plans entirely. Thanks a lot!","Created":"2013-01-09","Visited":"2013-01-09","UserName":"dprovan","MembershipLevel":3,"AccountID":3258372,"AccountGuid":"b0c308c0-6716-4ed1-9fbf-df696b5b6a8b","Email":"","AvatarImage":"88231129-6254-4bc1-9f64-a261c2b3db78.jpg","GeocacheFindCount":4009,"GeocacheHideCount":10,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":288597297,"CacheID":3372822,"LogGuid":"4eb2c340-0fae-494c-8f1a-0217516ed851","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Updated description. This puzzle can no longer be solved as intended <img src=\"/images/icons/icon_smile_sad.gif\" border=\"0\" align=\"middle\" />","Created":"2013-01-08","Visited":"2013-01-08","UserName":"The North Star","MembershipLevel":3,"AccountID":669462,"AccountGuid":"f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5","Email":"","AvatarImage":"4c5c063b-284a-4f03-b375-7e03a63ef6f2.jpg","GeocacheFindCount":1573,"GeocacheHideCount":48,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":286504639,"CacheID":3372822,"LogGuid":"11d8a0ae-08fc-4e17-82bc-a0ddedda7d34","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"0914h - Th15 0ne wa5 hard becav5e 1 wa5 c0nv1nced that 1t 5h0v1d have been 501vab1e by any0ne wh0 wa5 determ1ned en0vgh. 1 th0vght 1 wa5 determ1ned en0vgh 50 1 tr1ed a few th1ng5 and came vp w1th an appr0ach 1 th0vght w0v1d w0rk w1th a 11tt1e eff0rt. 1 c0ntacted TN5 and he c0nf1rmed that my appr0ach wa5 exact1y c0rrect. A few h0vr5 1atter 1 had the c00rd1nate5 1n hand and 1 d0n't fee1 1'm any w0r5t f0r the way 1 ended vp d01ng 1t. Thank5 f0r 5vch an 1ntere5t1ng pr0b1em.","Created":"2012-12-30","Visited":"2012-12-30","UserName":"cachbefound","MembershipLevel":3,"AccountID":1024015,"AccountGuid":"f67ddcbe-5913-4a16-a6f8-61d2ef526712","Email":"","AvatarImage":"93c7a561-7d4c-4933-9712-7c1a00c31131.jpg","GeocacheFindCount":2571,"GeocacheHideCount":147,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285603330,"CacheID":3372822,"LogGuid":"3c3a823d-726f-4ffd-8e82-bc055377b10f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I was in the area this afternoon, and thought with all the rain we are getting, I better grab some caches before it starts up again. This was the first of 5 caches for the day. I had a little inside knowledge of the \"Feature\" from an email thread with the CO and Chrysalides. However, that was no more helpful than the hint that was already supplied by the CO on the cache page. There is a rumor that some cachers have automated the solving of this puzzle, but I like most of the others resorted to a hunt and peck method to derive the coords. Even so, i had fun doing the work <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />. Thanks for another puzzle that I could actually solve!","Created":"2012-12-26","Visited":"2012-12-26","UserName":"Geo Fan","MembershipLevel":3,"AccountID":239534,"AccountGuid":"b9848393-afbd-4061-9e3c-b31ec0d69ca9","Email":"","AvatarImage":"c73c5cc8-e5ce-4e3d-8217-c926847fa309.jpg","GeocacheFindCount":4165,"GeocacheHideCount":20,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285418373,"CacheID":3372822,"LogGuid":"24c1acf4-081a-4a05-9a33-7fa1bf51c8dc","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I was aware of the page but never the <i>feature</i>. <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> I'm glad that I have previous solved a puzzle that is about Louis. I suggested it to the CO and got the idea behind the puzzle instead. <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> After that, it was a quick solve. I'm glad I started from the better end. TFTC!","Created":"2012-12-25","Visited":"2012-12-25","UserName":"kanchan","MembershipLevel":3,"AccountID":958017,"AccountGuid":"d92b7dda-5c23-44b7-ad69-47f5d8e900c8","Email":"","AvatarImage":"ee561784-8ba6-4c10-b365-18ede55aff0f.jpg","GeocacheFindCount":6356,"GeocacheHideCount":54,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285150911,"CacheID":3372822,"LogGuid":"1e3c7ed4-abdc-4c5b-80fd-ef24c3aa915b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"We could see the value of certain software tools in automating the solution, but neither of us are that skilled at debugging them. Some manual manipulation and logic brought up the coordinates fairly quickly. We picked a really miserable day to go for the grab but GZ was empty and the cache was in a rational spot. This was stop one on our Long Distance Challenge run. Thanks for the clever puzzle, North Star, and for revealing an interesting 'feature'.","Created":"2012-12-23","Visited":"2012-12-23","UserName":"Galileo the cat","MembershipLevel":3,"AccountID":2879439,"AccountGuid":"4adc2103-977a-4b06-a615-bcaed612f8c8","Email":"","AvatarImage":"18afc1d2-d800-4faa-b0e7-8bbe98de1c81.jpg","GeocacheFindCount":2903,"GeocacheHideCount":52,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284973742,"CacheID":3372822,"LogGuid":"2e3e6b30-da49-4f92-8b76-f31b7a946ef0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I didn't have time to work on this when it was first published, knowing I was going to have to figure it out manually with some logic, based on what my first attempt at using a tool told me. The extra info added later helped narrow down my search a whole lot, so it ended up taking considerably less time than I thought it would. Although I had noticed this interesting \"feature,\" it didn't occur to me that it would be workable for a puzzle. But my brain comes up with other stuff no one else seems to consider, so this does not surprise me in the least. <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br />No one at the location except someone working inside the nearby business. Cache was a quick find, not too hard, although the bonus hint was helpful.<br />TFTP&C<br />Happy Trails!","Created":"2012-12-22","Visited":"2012-12-22","UserName":"Gitonyerhorse","MembershipLevel":3,"AccountID":560406,"AccountGuid":"7e81563a-5138-4880-885d-5be35d5c456e","Email":"","AvatarImage":"0ad8a1f6-3d97-4ab4-9e49-9b4a5d279875.jpg","GeocacheFindCount":6881,"GeocacheHideCount":32,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284815692,"CacheID":3372822,"LogGuid":"82e392e1-0a80-49d6-82a9-1a3363f9513d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Changed the date in the description from 02/12/12 to February 12, 2012 to eliminate any confusion (about the date) <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />...","Created":"2012-12-21","Visited":"2012-12-21","UserName":"The North Star","MembershipLevel":3,"AccountID":669462,"AccountGuid":"f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5","Email":"","AvatarImage":"4c5c063b-284a-4f03-b375-7e03a63ef6f2.jpg","GeocacheFindCount":1573,"GeocacheHideCount":48,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284814888,"CacheID":3372822,"LogGuid":"f089c4f7-571a-4985-a7ea-33cd0bc753e7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I think Kablooey essentially wrote my log for me. Let me quote him here :<br /><br />\"Knew what I needed to do right away with this puzzle, as I had been considering how to incorporate this \"feature\" into one of my own puzzles,\"<br /><br />Yup. When TNS ask if he can use the idea in his puzzle, I told him of course. If he waited for me, it might take another 4 years <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br />\"but I misread the date as 12/12/12, and so my attempt to solve this morning failed.\"<br /><br />Yup. Though I didn't try very hard - I was in San Francisco and wanted to solve this at home.<br /><br />\"Saw the new info this evening and worked out a trick to make it easier to find the needed info.\"<br /><br />Well, kinda. It reduced my search space by about half. But the \"GC3\" was what clued me in that I misread the date. It didn't help that growing up outside the United States, \"2/12/12\" is Dec 2, 2012 <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br />\"The cache hint confused me, and it took me a long time to find the cache.\"<br /><br />Same here, I misinterpreted the hint. But it didn't take me as long to find as I was there when it is bright, makes it easier to spot visually. That \"something is just slightly off\" indicator that a cache is hidden there.<br /><br />Anyway, I didn't feel like approaching this with a full manual attack, so I used... let's see... 3 software applications (not including a C compiler), a few site features, custom code, multiple file formats including HTML, and finally clicked my way to the answer. I did not, however, access the website with automated tools, which would be against the TOS. I described the steps I took to TNS, whose response was \"at least it was somewhat automated\" - probably thinking why I need to make everything harder than it has to be <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />I don't know why I remembered US OIL but not LOUIS - I guess US OIL is just strange enough to stick in the mind...<br /><br />Since the world did not end this morning, I decided to get this cache on the way to work. The hint was accurate. But devious <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> Thanks for a fun one, now I need to take a look at Needle in a Haystack. I have to remember to post a photo of my magnet collection for that one.","Created":"2012-12-21","Visited":"2012-12-21","UserName":"Chrysalides","MembershipLevel":3,"AccountID":1933996,"AccountGuid":"27d4c4c0-e960-4f36-85e7-57058037d4d7","Email":"","AvatarImage":"2bbcd301-667f-48c1-8f4b-355318ba1e5b.jpg","GeocacheFindCount":3456,"GeocacheHideCount":5,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284766538,"CacheID":3372822,"LogGuid":"73790d15-edbd-4e22-8906-fd78557699b4","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"No idea eventually became one idea that became another idea...which became a lot of work! <img src=\"/images/icons/icon_smile_shock.gif\" border=\"0\" align=\"middle\" /> In fact, I might still be busy-bee-ing my way through the puzzle if I hadn't received a timely offer that was too good to refuse. Turned out I had figured out enough to be getting close but had a loooooong way to go, so I was very grateful for the boost up from skillz I lack. From there, the solution was quickly within reach, and after digging around in my mind for another bit of inspiration, the cache was soon in reach as well. TNLNSL, TFTC!","Created":"2012-12-21","Visited":"2012-12-20","UserName":"thelins","MembershipLevel":3,"AccountID":2999428,"AccountGuid":"01cb03f6-290f-4720-8786-0c5ac17a6cc0","Email":"","AvatarImage":"0ee825d9-bc33-41f4-bf0e-a62bde392303.jpg","GeocacheFindCount":1812,"GeocacheHideCount":16,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284677706,"CacheID":3372822,"LogGuid":"7c7a396a-337e-4b48-b76b-db5c1c351126","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"21:56. Consecutive Day 3445.<br />Knew what I needed to do right away with this puzzle, as I had been considering how to incorporate this \"feature\" into one of my own puzzles, but I misread the date as 12/12/12, and so my attempt to solve this morning failed. Saw the new info this evening and worked out a trick to make it easier to find the needed info. The cache hint confused me, and it took me a long time to find the cache.<br />{3/1.5m-puz,n,h}<br /><br />This entry was edited by kablooey on Thursday, December 20, 2012 at 2:25:22 PM UTC.","Created":"2012-12-19","Visited":"2012-12-19","UserName":"kablooey","MembershipLevel":1,"AccountID":18898,"AccountGuid":"a3dd3925-32ae-4ab2-9063-b62919d412b7","Email":"","AvatarImage":"906a0d82-5f39-4925-830f-a505f38d15fb.jpg","GeocacheFindCount":14970,"GeocacheHideCount":144,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":284677102,"CacheID":3372822,"LogGuid":"7bc5e006-4d3a-4b40-9c3d-50dcf348ef56","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I saw this one this morning as I got ready to go out for my run. I was a little disappointed to see so much description of what was needed, since I knew what to do for once on a puzzle around here. The only clever part of what I did to solve this one was to narrow down the possibilities to essentially what the new extra information says. I underestimated how much time it was going to take to finish up once I got in to work, but it still went by relatively quickly. I don't think there's any way I could have made to be FTF, even though I did solve 8 minutes before TeamOttlet found it. Anyways, I stopped by on my way home, and despite the darkness, it was in the first place I checked, thanks to the certitude hint. Thanks for the puzzle.","Created":"2012-12-19","Visited":"2012-12-19","UserName":"payakoi","MembershipLevel":3,"AccountID":94859,"AccountGuid":"b20a5189-6852-49ba-951f-b3471d3198bf","Email":"","AvatarImage":"","GeocacheFindCount":6007,"GeocacheHideCount":7,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284659125,"CacheID":3372822,"LogGuid":"819ecce1-91db-48bc-899a-063e12512595","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Updated the description to include some details about the waypoint.<br /><br />Thank Chrysalides for the US OIL tip <img src=\"/images/icons/icon_smile_approve.gif\" border=\"0\" align=\"middle\" />. kanchan suggested LOUIS <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />.<font color=\"white\"><br /><br />This entry was edited by The North Star on Thursday, 20 December 2012 at 02:38:37 UTC.</font>","Created":"2012-12-19","Visited":"2012-12-19","UserName":"The North Star","MembershipLevel":3,"AccountID":669462,"AccountGuid":"f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5","Email":"","AvatarImage":"4c5c063b-284a-4f03-b375-7e03a63ef6f2.jpg","GeocacheFindCount":1573,"GeocacheHideCount":48,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284645348,"CacheID":3372822,"LogGuid":"05e00972-1576-4c93-b595-93c095632984","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"FTF at 11:40am<br />I made this one a lot more tedious than it had to be, I ought to have read the description more carefully. I did find a slightly more efficient search method, but still pretty manual. TFTP<font color=\"white\"></font>","Created":"2012-12-19","Visited":"2012-12-19","UserName":"TeamOttlet","MembershipLevel":3,"AccountID":623076,"AccountGuid":"b9f2639c-5ed0-4625-82ed-f7723aad6a24","Email":"","AvatarImage":"b4d5c924-f0b3-4668-866d-0c7eafe6a6ad.jpg","GeocacheFindCount":9516,"GeocacheHideCount":12,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284643467,"CacheID":3372822,"LogGuid":"b45483e2-8cfc-4e81-8d89-7056bba2d0ec","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"In reply to all the hate mail <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />, the intent of this puzzle is not to DDoS GC.com but (1) to introduce you to this “feature” and (2) to explore (slightly more than manual) solutions that might prove handy in the future <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />...","Created":"2012-12-19","Visited":"2012-12-19","UserName":"The North Star","MembershipLevel":3,"AccountID":669462,"AccountGuid":"f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5","Email":"","AvatarImage":"4c5c063b-284a-4f03-b375-7e03a63ef6f2.jpg","GeocacheFindCount":1573,"GeocacheHideCount":48,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284603655,"CacheID":3372822,"LogGuid":"f5c6f6a4-2b16-45f6-8326-67eb9d8ca609","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Publish Listing","LogTypeImage":"24.png","LogText":"Published","Created":"2012-12-19","Visited":"2012-12-19","UserName":"Nomex","MembershipLevel":3,"AccountID":651514,"AccountGuid":"930c9960-afb8-4517-937c-a9256effcdb7","Email":"","AvatarImage":"f2fe44a0-95e7-4e94-b152-f462505ceb79.jpg","GeocacheFindCount":0,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Reviewer","GroupImageUrl":"/images/icon_admin.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 23, "rows": 23 } };
+var gaToken = 'UA-2020240-1';//]]>
</script>
</form>
<script type="text/javascript">
@@ -2079,12 +1201,20 @@ document.getElementById('ctl00_rfvPassword').dispose = function() {
$(".ProfileWidget").toggleClass("WidgetOpen");
$(this).blur();
$("#ctl00_tbUsername").focus();
+ $(document).click(function (e) {
+ if (!$(e.target).parents().hasClass("ProfileWidget")) {
+ $("#SignInWidget").hide();
+ $(".ProfileWidget").removeClass("WidgetOpen");
+ }
+ });
+ return false;
});
- $(".SignInCloseLink").click(function () {
- $("#SignInWidget").toggle();
- $(".ProfileWidget").toggleClass("WidgetOpen");
- });
}
+
+ if (!("placeholder" in document.createElement("input"))) {
+ $("#SignInWidget label").removeClass("hideMe");
+ }
+
$('.SignedInProfileLink').truncate({
width: 120,
after: '&amp;hellip;',
@@ -2111,91 +1241,751 @@ document.getElementById('ctl00_rfvPassword').dispose = function() {
});
</script>
+ <script type="text/javascript">
+ <!--
+
+ function s2gps(guid) {
+ var w = window.open('/seek/sendtogps.aspx?guid=' + guid, 's2gps', config='width=450,height=450,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no');
+ w.focus();
+ }
+
+ function s2phone(wpid) {
+ window.location.href='/seek/sendtophone.aspx?gc=' + wpid;
+ }
+
+ function pl(lc) {
+ document.location.href='/seek/cache_details_print.aspx?guid=' + guid + '&numlogs=' + lc +'&pt=full&lt=letter&decrypt='+ ((dh)?'y':'n');
+ }
- <script id="loc_favPointsScoreDesc" type="text/html">
- Favorites/Premium Logs
- </script>
- <script type="text/javascript" language="javascript">
- <!--
+ function setNotification(id) {
+ //new Effect.Highlight(id, {startcolor:'#ffffff', endcolor:'#ffff99', restorecolor:'#ffff99', duration:3.0, queue:'front'});
+ //new Effect.Highlight(id, {startcolor:'#ffff99', endcolor:'#ffffff', restorecolor:'#ffffff', duration:5.0, queue:'end'});
+ }
+
+ function cmo(id) {
+ Cookie.set('sn', true);
+ }
+
+ function pp(img) {
+ var w = window.open(img);
+ w.focus();
+ }
+ var map, bounds;
+ var canUpdateFavoriteStatus = true;
+ var decryptLogs = (urlParams["decrypt"] && urlParams["decrypt"] == "y") ? true : false;
+ var logInitialLoaded = false;
+ var $tfoot = $("#cache_logs_table").find("tfoot");
+ var currentPageIdx = 1, totalPages = 1, pageSize = 10;
+ var isBusy = false;
+
+ var locString = {
+ decrypt: 'Decrypt',
+ encrypt: 'Encrypt'
+ };
+
+ $("#tmpl_CacheLogImagesTitle").template("tmplCacheLogImagesTitle");
+ $("#tmpl_CacheLogImages").template("tmplCacheLogImages");
+ $("#tmpl_CacheLogRow").template("tmplCacheLogRow");
+
+ $(".EncryptDecrypt")
+ .button({ icons: { secondary: 'ui-icon-arrowreturnthick-1-w'} })
+ .click(function (e) {
+ e.preventDefault();
+ $("tr.log-row").each(function (i, obj) {
+ var $obj = $(obj);
+ if ($obj.data("encoded") == true) {
+ var lt = $obj.find("p.LogText");
+ //var ltDecoded = $('<div />').html(lt.html()).text();
+ lt.html(convertROTStringWithBrackets(lt.html()));
+ }
+ });
+
+ decryptLogs = !decryptLogs;
+ $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
+
+ return false;
+ });
+
+ function appendNewLogs(obj) {
+
+ totalPages = obj.pageInfo.totalPages;
+
+ var $newBody = $(document.createElement("TBODY"));
- var gotScore = false;
- var favDropDown = $('.favorite-dropdown');
- var favContainer = $('.favorite-container');
+ $("#tmpl_CacheLogRow").tmpl(obj.data,{ includeAvatars: includeAvatars }).appendTo($newBody);
- function showFavoriteScore() {
- $('#imgFavoriteScore').attr('src', '/images/loading3.gif');
+ $newBody.find("a.tb_images").each(function()
+ {
+ var $this = $(this);
+ $this.fancybox({
+ 'type': 'image',
+ 'titlePosition': 'inside',
+ 'padding': 10,
+ titleFormat: function() { return $this.data('title'); }
+ });
+ });
- $('#uxFavoriteScore').parent().fadeTo(200, .001, function () {
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/score?u=' + userToken,
- success: function (scoreResult) {
- gotScore = true;
+ $("#cache_logs_table")
+ .append($newBody.children());
- var score = 0;
+ currentPageIdx = obj.pageInfo.idx + 1;
+ pageSize = obj.pageInfo.size;
+ }
- if(scoreResult)
- score = scoreResult;
+ var showScroll = false;
- if(score > 100)
- score = 100;
-
- $('#imgFavoriteScore').attr('src', '/images/favorites/piecharts/' + score + '.png');
- var pieDesc = (score < 1 ? "<1" : score) + '% ' + $("#loc_favPointsScoreDesc").text().trim();
- $('#imgFavoriteScore').attr('alt', pieDesc);
- $('#imgFavoriteScore').attr('title', pieDesc);
+ function callLogLoad(hideFooter) {
+ if (screen.width > 1090){
+ showScroll = true;
+ }
+ $.getJSON("/seek/geocache.logbook", { tkn: userToken, idx: currentPageIdx, num: pageSize, decrypt: decryptLogs },
+ function (response) {
+ if (response.status == "success") {
+ appendNewLogs(response);
+ if( hideFooter || (totalPages < currentPageIdx) ) {
+ $tfoot.hide();
+ }
+ } else if (response.status == "error" && response.value == "1") {
+ // reload the page since the data had expired.
+ window.location.reload();
+ }
+ isBusy = false;
+ });
+ }
+
+ $("#add_to_favorites").click(function () {
+
+ if (canUpdateFavoriteStatus) {
+ canUpdateFavoriteStatus = false;
+
+ var fv = parseInt($(".favorite-value").text());
+ fv++;
+ $(".favorite-value").text(fv);
+
+ var fr = parseInt($(".favorite-rank").text());
+ fr--;
+ $(".favorite-rank").text(fr);
+
+ $("#pnlNonfavoriteCache").fadeOut("fast", function () {
+ $("#pnlFavoriteCache").fadeIn("fast");
+ });
+
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/update?u=' + userToken + '&f=true',
+ success: function () {
+ canUpdateFavoriteStatus = true;
+ gotScore = false;
+ showFavoriteScore();
+ }
+ });
+
+ return false;
+ }
+ });
+
+ $("#remove_from_favorites").click(function () {
+
+ if (canUpdateFavoriteStatus) {
+ canUpdateFavoriteStatus = false;
+
+ var fv = parseInt($(".favorite-value").text());
+ fv--;
+ $(".favorite-value").text(fv);
+
+ var fr = parseInt($(".favorite-rank").text());
+ fr++;
+ $(".favorite-rank").text(fr);
+
+ $("#pnlFavoriteCache").fadeOut("fast", function () {
+ $("#pnlNonfavoriteCache").fadeIn("fast");
+ });
+
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/update?u=' + userToken + '&f=false',
+ success: function () {
+ canUpdateFavoriteStatus = true;
+ gotScore = false;
+ showFavoriteScore();
+ }
+ });
+
+ return false;
+ }
+ });
- $('#uxFavoriteScore').parent().fadeTo(1000, 1);
- $('#uxFavoriteScore').html('<strong>' + (score < 1 ? "<1" : score) + '%</strong> ' + $("#loc_favPointsScoreDesc").html());
+ $(function () {
+
+ // CSP Section
+ if ($("#cspMessage").length) {
+
+ var editLink = $('a[href*="report.aspx"]').attr('href');
+
+ $("#cspMessage").prepend('<P>Please take a moment to check the listing and ensure it is ready to enable. Clicking "Submit for Review" will enable your cache page.</P>');
+ $("#cspMessage").prepend('<P>Once it is enabled, you will receive a confirmation email that it was successfully submitted. It is peak season for cache placement. Your volunteer reviewer will strive to begin the review process within the next 7 days.</P>');
+ $("#cspMessage").prepend('<P>Your cache page has not been reviewed yet. It will not appear in the review queue until you enable it.</P>');
+
+ $("#cspGoBack").click(function (e) {
+ e.preventDefault();
+ window.location = editLink;
+ return false;
+ });
+
+ $("#cspSubmit").click(function (e) {
+ e.preventDefault();
+ $.pageMethod("/seek/cache_details.aspx/EnableCSPCache", JSON.stringify({ dto: { ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.success == true) {
+ window.location = '/seek/cache_details.aspx?guid=' + r.guid;
+ } else {
+ alert("There was an error enabling your cache.");
}
});
+ return false;
+ });
+
+ $("#cspConfirm").change(function() {
+ if ($("#cspConfirm").is(":checked")) {
+ $("#cspSubmit").removeAttr('disabled');
+ $("#cspGoBack").attr('disabled', true);
+ } else {
+ $("#cspSubmit").attr('disabled', true);
+ $("#cspGoBack").removeAttr('disabled');
+ }
});
}
-
+
+ //override coords
+ if (typeof(userDefinedCoords) != "undefined") {
+ if (userDefinedCoords.status == "success" && userDefinedCoords.data.isUserDefined == true) {
+ mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
+ $("#uxLatLon")
+ .data("isOverridden", true)
+ .addClass("myLatLon");
+ } else if (userDefinedCoords.status == "success") {
+ mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
+ } else {
+ $("#uxLatLonLink").contents().unwrap();
+ }
+ } else {
+ $("#uxLatLonLink").contents().unwrap();
+ }
- $(document).bind('mouseup', function (e) {
- var $clicked = $(e.target);
+ var cacheNoteText = {
+ DefaultText: 'Click to enter a note',
+ ErrorInSaving: 'There was an error saving page. Please refresh the page and try again.',
+ SavingText: 'Please wait, saving your note...'
+ };
+
- if (!$clicked.parents().hasClass("favorite-dropdown") && !$clicked.parents().hasClass("FavoriteWidget")) {
- favDropDown.hide(1, function () {
- favContainer.addClass('favorite-container');
- favContainer.removeClass('favorite-container-open');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-down.png');
+
+ $("time.timeago").timeago();
+
+ $(".button").button();
+
+ var sn = Cookie.get('sn');
+
+ if ($('#trNotPM').length > 0) {
+ $('#trNotPM').toggle(!sn);
+ }
+
+ $("#cache_note").editInPlace({
+ callback: function (unused, enteredText) {
+ var me = $(this);
+
+ var et = $.trim(enteredText);
+ if (et.length > 500 ) {
+ et = et.substr(0, 500);
+ }
+ $.pageMethod("/seek/cache_details.aspx/SetUserCacheNote", JSON.stringify({ dto: { et: et, ut: userToken} }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.success == true) {
+ if ($.trim(r.note) == "") {
+ $("#cache_note").text(cacheNoteText.DefaultText);
+ } else {
+ $("#cache_note").text(r.note);
+ }
+
+ me.effect('highlight', { color: '#ffb84c' }, 'slow');
+ } else {
+ alert(cacheNoteText.ErrorInSaving);
+ $("#cache_note").text(cacheNoteText.DefaultText);
+ }
+
});
+
+ return cacheNoteText.SavingText;
}
+ , default_text: cacheNoteText.DefaultText
+ , field_type: "textarea"
+ , textarea_rows: "7"
+ , textarea_cols: "65"
+ , show_buttons: true
+ , bg_over: "#dad7cb"
+ //, callback_skip_dom_reset: true
+
+ });
+
+ $("#lnk_slippyMap").click(function(e) {
+ e.preventDefault();
+ loadDynamicMap();
+ return false;
});
- $('#uxFavContainerLink').click(function () {
- if ($(favDropDown).is(':visible')) {
- favDropDown.hide(1, function(){
- favContainer.addClass('favorite-container');
- favContainer.removeClass('favorite-container-open');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-down.png');
- });
+ $(".inplace_field").live("focus", function () {
+ if ($(this).data("created") == null) {
+ $(this).data("created", true)
+ $(this).countable({
+ maxLength: 500
+ });
+ }
+ });
+
+ $("#pcn_help").qtip({
+ content: 'Enter your own notes here. No other user will be able to access them.',
+ position: {
+ my: 'top center',
+ at: 'bottom center'
+ },
+ style: {
+ classes: 'ui-tooltip-dark ui-tooltip-rounded pcn-tooltip'
+ },
+ });
+ $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
+
+ if ($("#cache_logs_container").length > 0) {
+
+ appendNewLogs(initalLogs);
+
+ if (DetectMobileQuick()) {
+ $("#pnlButtonLoad")
+ .show()
+ .find("a.MobileButton")
+ .click(function (e) {
+ e.preventDefault();
+ callLogLoad(false);
+ return false;
+ })
+ .button();
+ if(!DetectTierTablet()){
+ $("a.MobileButton").addClass("Phone");
+ }
+ } else {
+ $("#pnlLazyLoad").show();
+
+ $(window).endlessScroll({
+ fireOnce: true,
+ fireDelay: 500,
+ bottomPixels: ($(document).height() - $("#cache_logs_container").offset().top) + 50,
+ ceaseFire: function(){
+ // stop the scrolling if the last page is reached.
+ return (isLoggedIn == false) || (totalPages < currentPageIdx);
+ },
+ callback: function() {
+ if (!isBusy) {
+
+ isBusy = true;
+ $tfoot.show();
+ callLogLoad(true);
+ }
+ }
+ });
}
- else {
- if (!gotScore) {
- showFavoriteScore();
+ }
+
+ if (!isLoggedIn) {
+ $("#cache_logs_table").find("tfoot").hide();
+ }
+
+ if (mapLatLng != null) {
+
+ $("#uxLatLonLink").qtip({
+ suppress:false,
+ content: buildCacheCoordMenu(),
+ position: {
+ my: 'left top',
+ at: 'right top',
+ adjust: {
+ x: 10, y: -10
+ }
+ },
+ show: {
+ ready: false,
+ event: "click",
+ solo: true
+ }, hide: {
+ event: 'unfocus'
+ },
+ style: {
+ tip: {
+ corner: false
+ },
+ classes: 'ui-tooltip-widget'
+ },
+ events: {
+ show: function () {
+ if ($("#uxLatLon").data("isOverridden")) {
+ $("a.ccu-restore").show();
+ } else {
+ $("a.ccu-restore").hide();
+ }
+
+ if (userDefinedCoords.status != "success") {
+ $("div.ccu-update").hide();
+ } else {
+ $("div.ccu-update").show();
+ }
+ }
+ }
+ }).click(function (e) {
+ e.preventDefault();
+ return false;
+ });
+
+ setStaticMaps();
+ //$("#staticMap").lazyload();
+ }
+ });
+
+ function setStaticMaps() {
+ var llBounds = new L.LatLngBounds();
+
+ var map = new L.Map('map_preview_canvas', {
+ center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ zoom: 10,
+ doubleClickZoom: false,
+ dragging: false,
+ touchZoom: false,
+ scrollWheelZoom: false,
+ attributionControl: false
+ })
+ .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }));
+
+ var mapLarge = new L.Map('map_canvas', {
+ center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ zoom: 14,
+ doubleClickZoom: true,
+ dragging: true,
+ touchZoom: false,
+ scrollWheelZoom: false,
+ zoomControl: true,
+ attributionControl: false
+ })
+ .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }))
+ .addControl(new L.Control.Scale());
+
+ llBounds.extend(new L.LatLng(mapLatLng.lat, mapLatLng.lng));
+
+ var tileOptions = {
+ tileUrl: "http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg",
+ name: "mpqosm",
+ alt: "MapQuest",
+ //attribution: "Tiles Courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>, Map and map data © 2012 <a href=\"http://www.openstreetmap.org\" target='_blank'>OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>. ",
+ subdomains: "1234",
+ tileSize: 256,
+ minZoom: 0,
+ maxZoom: 18
+ };
+
+ map.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
+ mapLarge.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
+
+ var pinIcon = L.Icon.extend({
+ iconSize: new L.Point(20, 23),
+ iconAnchor: new L.Point(10,23),
+ shadowUrl: null
+ });
+
+ var mkA = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
+ title: mapLatLng.name
+ })
+ .on("click", function () {
+ document.getElementById("uxlrgMap").scrollIntoView(true);
+ return false;
+ });
+
+ var mkA2 = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng), {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
+ clickable: false, zIndexOffset:99, title: mapLatLng.name
+ });
+
+ map.addLayer(mkA);
+ mapLarge.addLayer(mkA2);
+
+ $("#ctl00_ContentBody_uxNotesAboutPrinting").fancybox({
+ overlayShow: false
+ });
+
+ if (cmapAdditionalWaypoints != null && cmapAdditionalWaypoints.length > 0) {
+
+ for (var x = 0, len = cmapAdditionalWaypoints.length; x < len; x++) {
+
+ var item = cmapAdditionalWaypoints[x],
+ ll = new L.LatLng(item.lat, item.lng),
+ marker = new L.Marker(ll, {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + item.type + '.png', iconAnchor: new L.Point(10,23)}),
+ title: item.name,
+ clickable:false
+ });
+
+ llBounds.extend(ll);
+ mapLarge.addLayer(marker);
+ }
+ var bz = mapLarge.getBoundsZoom(llBounds.pad(1.1));
+
+ mapLarge.setView(new L.LatLng(mapLatLng.lat, mapLatLng.lng), bz);
+ }
+ }
+
+ var lnkDH = $('#ctl00_ContentBody_lnkDH');
+ function dht() {
+ try {
+ $('#div_hint').html(convertROTStringWithBrackets($('#div_hint').html()));
+ var linkText = ((lnkDH.attr('title') == 'Decrypt') ? 'Encrypt' : 'Decrypt');
+ lnkDH
+ .text(linkText)
+ .attr('title', linkText);
+ } catch (e) {
+ alert(e);
+ return false;
+ }
+ return false;
+ }
+
+ function buildCacheCoordMenu() {
+ var curLatLng = new LatLon(mapLatLng.lat, mapLatLng.lng)
+ $.template( "tmplCacheCoordinateUpdate_CoordItem", "<tr><td nowrap='nowrap'>${t}</td><td class='ccc-coord' nowrap='nowrap' dataum='${k}'>${v}</td></tr>" );
+
+ var $menu = $("<div></div>");
+
+ $( "#tmpl_CacheCoordinateUpdate" ).tmpl( {
+ ll: [mapLatLng.lat, mapLatLng.lng],
+ ll_formatted: mapLatLng.oldLatLngDisplay
+ } ).appendTo( $menu );
+
+ $menu.find("button.ccu-button").button();
+
+ $menu.delegate("button.ccu-parse", "click", function (e) {
+ e.preventDefault();
+ var $this = $(e.target),
+ $parse =$this.closest('dd').find(".cc-parse-text"),
+ parseCoords = $.trim($parse.val());
+
+ if (parseCoords.length == 0) {
+ alert('Please provide valid coordinates.');
+ } else {
+ $.getJSON("/api/geocode", { parse: parseCoords}, function (response) {
+ if (response.status == "success") {
+ var newLatLng = new LatLon(response.data.lat, response.data.lng);
+
+ // update the displayed coords
+ var dist = curLatLng.rhumbDistanceTo(newLatLng);
+ var bearingTo = curLatLng.rhumbBearingTo(newLatLng);
+ var bearing = bearingTo >= 0 || bearingTo < 22.5 ? "N" : bearingTo >= 22.5 || bearingTo < 67.5 ? "NE" : bearingTo >= 67.5 || bearingTo < 112.5 ? "E" : bearingTo >= 112.5 || bearingTo < 157.5 ? "SE" : bearingTo >= 157.5 || bearingTo < 202.5 ? "S" : bearingTo >= 202.5 || bearingTo < 247.5 ? "SW" : bearingTo >= 247.5 || bearingTo < 292.5 ? "W" : bearingTo >= 292.5 || bearingTo < 337.5 ? "NW" : "N";
+
+ var formats = response.data.formats;
+ // all these finds, make me feel dirty
+ $menu
+ .find("span.ccu-parseverify-coords").text(formats.DM).end()
+ .find("dl.ccu-parse").hide().end()
+ .find("dl.ccu-parseverify").show().end()
+ .find("button.ccu-parseverify-accept")
+ .data("utm", '')
+ .data("dm", formats.DM)
+ .data("lat", response.data.lat)
+ .data("lng", response.data.lng)
+ .end();
+ } else {
+ alert("Sorry unable to parse the coordinates you entered.");
+ }
+ });
+ }
+
+ return false;
+ });
+
+ $menu.delegate("button.ccu-parseverify-accept", "click", function (e) {
+ e.preventDefault();
+ var $this = $(this);
+ // update to webmethod
+ $.pageMethod("/seek/cache_details.aspx/SetUserCoordinate", JSON.stringify({ dto: { data: {lat: $this.data("lat"), lng: $this.data("lng") }, ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.status == "success") {
+ window.location.reload();
+ } else {
+ $("#uxLatLonLink").qtip('hide');
}
+
+ });
+
+ return false;
+ });
- favContainer.addClass('favorite-container-open');
- favContainer.removeClass('favorite-container');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-up.png');
- favDropDown.show(1);
+ $menu.delegate("button.ccu-parseverify-cancel", "click", function (e) {
+ e.preventDefault();
+ $menu
+ .find("input.cc-parse-text").val('').end()
+ .find("dl.ccu-parse").show().end()
+ .find("dl.ccu-parseverify").hide().end();
+ return false;
+ });
+
+ $menu.delegate("a.ccu-restore", "click", function (e) {
+ e.preventDefault();
+
+ $.pageMethod("/seek/cache_details.aspx/ResetUserCoordinate", JSON.stringify({ dto: { ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.status == "success") {
+ window.location.reload();
+ }
+ });
+
+ return false;
+ });
+
+ return $menu;
+ }
+
+ GSPK = window.GSPK || {};
+ GSPK.Selector = {};
+ GSPK.Selector.getSelected = function(){
+ var t = null;
+ if ( window.getSelection ){
+ t = window.getSelection();
+ }else if(document.getSelection){
+ t = document.getSelection();
+ }else if(document.selection){
+ t = document.selection.createRange().text;
+ }
+ return t;
+ }
+ //-->
+ </script>
+ <script id="loc_favPointsScoreDesc" type="text/html">
+ Favorites/Premium Logs
+ </script>
+ <script type="text/javascript" language="javascript">
+ <!--
+ var gotScore = false;
+ var favDropDown = $('.favorite-dropdown');
+ var favContainer = $('.favorite-container');
+
+ function showFavoriteScore() {
+ $('#imgFavoriteScore').attr('src', '/images/loading3.gif');
+
+ $('#uxFavoriteScore').parent().fadeTo(200, .001, function () {
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/score?u=' + userToken,
+ success: function (scoreResult) {
+ gotScore = true;
+
+ var score = 0;
+
+ if(scoreResult)
+ score = scoreResult;
+
+ if(score > 100)
+ score = 100;
+
+ $('#imgFavoriteScore').attr('src', '/images/favorites/piecharts/' + score + '.png');
+ var pieDesc = (score < 1 ? "<1" : score) + '% ' + $("#loc_favPointsScoreDesc").text().trim();
+ $('#imgFavoriteScore').attr('alt', pieDesc);
+ $('#imgFavoriteScore').attr('title', pieDesc);
+
+ $('#uxFavoriteScore').parent().fadeTo(1000, 1);
+ $('#uxFavoriteScore').html('<strong>' + (score < 1 ? "<1" : score) + '%</strong> ' + $("#loc_favPointsScoreDesc").html());
+ }
+ });
+ });
+ }
+ var scrollId = false,
+ logTop = 0;
+
+ if (document.getElementById("cache_logs_container") != null){
+ logTop = $("#cache_logs_container").position().top;
+ }
+ $(window).on("scroll", function() {
+ if (scrollId != false) {
+ window.clearTimeout(scrollId);
+ scrollId = false;
+ }
+
+ scrollId = window.setTimeout(function() {
+ if (showScroll){
+ if ($(this).scrollTop()< logTop) {
+ $("#topScroll").fadeOut();
+ } else {
+ $("#topScroll").fadeIn();
}
+ }}, 250);
+ });
+
+ $(document).bind('mouseup', function (e) {
+ var $clicked = $(e.target);
+ if (!$clicked.parents().hasClass("favorite-dropdown") && !$clicked.parents().hasClass("FavoriteWidget")) {
+ favDropDown.hide(1, function () {
+ favContainer.addClass('favorite-container');
+ favContainer.removeClass('favorite-container-open');
});
- // End -->
+ }
+ if ($('#log-dropdown-options').is(':visible') && !$clicked.parents().hasClass('Dropdown')){
+ $('#log-dropdown-options').toggleClass('hideMe');
+ $('.Dropdown').toggleClass('Active');
+ }
+ });
+
+ $('#uxFavContainerLink').click(function () {
+ if ($(favDropDown).is(':visible')) {
+ favDropDown.hide(1, function(){
+ favContainer.addClass('favorite-container');
+ favContainer.removeClass('favorite-container-open');
+ });
+ }
+ else {
+ if (!gotScore) {
+ showFavoriteScore();
+ }
+
+ favContainer.addClass('favorite-container-open');
+ favContainer.removeClass('favorite-container');
+ favDropDown.show(1);
+ }
+ });
+
+ $('#dropdown-arrow').on('click', function(e){
+ e.preventDefault();
+ $('#log-dropdown-options').toggleClass('hideMe');
+ $('.Dropdown').toggleClass('Active');
+ });
+ // End -->
</script>
-
<script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-2020240-1']);
+ $(document).ready(function () {
+ $('#hlUpgrade').bind('click', function () {
+ var _this = $(this);
+ _gaq.push(['_trackEvent', 'Geocaching', 'Premium Upsell', 'Mini-profile Widget']);
+ setTimeout(function () { // Chrome requires a slight delay for tracking to fire.
+ window.location.href = _this.attr('href');
+ }, 100);
+ return false;
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ _gaq.push(['_require', 'inpage_linkid', '//www.google-analytics.com/plugins/ga/inpage_linkid.js']);
+ _gaq.push(['_setAccount', gaToken]);
_gaq.push(['_trackPageview']);
(function () {
var ga = document.createElement('script');
@@ -2212,8 +2002,6 @@ document.getElementById('ctl00_rfvPassword').dispose = function() {
});
});
</script>
-
-
<!-- Quantcast Tag -->
<div id="Quantcast">
<script type="text/javascript">
@@ -2235,11 +2023,11 @@ document.getElementById('ctl00_rfvPassword').dispose = function() {
<noscript>
<div style="display: none;">
<img src="http://pixel.quantserve.com/pixel/p-f6VPrfmR4cujU.gif" height="1" width="1"
- alt="Quantcast" /></div>
+ alt="Quantcast" />
+ </div>
</noscript>
</div>
<!-- End Quantcast tag -->
-
- <!-- Server: WEB03; Build: Web.HotFix_20121211.1 -->
+ <!-- Server: WEB13; Build: Web.HotFix_20130904.1 -->
</body>
</html>
diff --git a/tests/res/raw/gc431f2_published.html b/tests/res/raw/gc431f2_published.html
index 869c0f8..89c4cfb 100644
--- a/tests/res/raw/gc431f2_published.html
+++ b/tests/res/raw/gc431f2_published.html
@@ -1,224 +1,49 @@
+
<!DOCTYPE html>
<html lang="en" class="no-js">
-<head id="ctl00_Head1"><meta charset="utf-8" />
- <!--[if IE]><![endif]-->
- <title>
+<head id="ctl00_Head1"><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><title>
GC431F2 Needle in a Haystack (Unknown Cache) in California, United States created by The North Star
-</title><meta name="DC.title" content="Geocaching - The Official Global GPS Cache Hunt Site" /><meta name="author" content="Groundspeak, Inc." /><meta name="DC.creator" content="Groundspeak, Inc." /><meta name="Copyright" content="Copyright (c) 2000-2012 Groundspeak, Inc. All Rights Reserved." /><!-- Copyright (c) 2000-2012 Groundspeak, Inc. All Rights Reserved. --><meta name="description" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta name="DC.subject" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta http-equiv="imagetoolbar" content="no" /><meta name="distribution" content="global" /><meta name="MSSmartTagsPreventParsing" content="true" /><meta name="rating" content="general" /><meta name="revisit-after" content="1 days" /><meta name="robots" content="all" /><meta http-equiv="X-UA-Compatible" content="IE=8" /><link rel="icon" href="/favicon.ico" /><link rel="shortcut icon" href="/favicon.ico" /><link rel="apple-touch-icon" href="/apple-touch-icon.png" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/reset.css" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/typography.css" /><link rel="stylesheet" type="text/css" media="screen,projection" href="../css/blueprint/src/grid.css" />
+</title><meta name="DC.title" content="Geocaching - The Official Global GPS Cache Hunt Site" /><meta name="author" content="Groundspeak, Inc." /><meta name="DC.creator" content="Groundspeak, Inc." /><meta name="Copyright" content="Copyright (c) 2000-2013 Groundspeak, Inc. All Rights Reserved." /><!-- Copyright (c) 2000-2013 Groundspeak, Inc. All Rights Reserved. --><meta name="description" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta name="DC.subject" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world." /><meta http-equiv="imagetoolbar" content="no" /><meta name="distribution" content="global" /><meta name="MSSmartTagsPreventParsing" content="true" /><meta name="rating" content="general" /><meta name="revisit-after" content="1 days" /><meta name="robots" content="all" /><link rel="icon" href="/favicon.ico" /><link rel="shortcut icon" href="/favicon.ico" /><link rel="apple-touch-icon" href="/apple-touch-icon.png" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/reset.css" /><link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/src/typography.css" /><link rel="stylesheet" type="text/css" media="screen,projection" href="../css/blueprint/src/grid.css" />
<!--[if lt IE 8]>
- <link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/ie.css" />
- <![endif]-->
+ <link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/ie.css" />
+ <![endif]-->
<link id="uxCssMaster" rel="stylesheet" type="text/css" media="screen,projection" href="../css/tlnMasterScreen.css?r=1" /><link id="uxCssMain" rel="stylesheet" type="text/css" media="all" href="../css/tlnMain.css?r=1" /><link rel="Stylesheet" type="text/css" media="all" href="../css/jqueryui1810/jquery-ui-1.8.10.custom.css" /><link rel="stylesheet" type="text/css" media="all" href="/js/jquery_plugins/jquery.jgrowl.css" /><link rel="stylesheet" type="text/css" media="print" href="../css/tlnMasterPrint.css" />
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ </script>
<script type="text/javascript" src="/js/modernizr-1.7.min.js"></script>
- <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js"></script>
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
+
+ <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/js/jquery.truncate.min.js"></script>
+ <script type='text/javascript'>
+ var googletag = googletag || {};
+ googletag.cmd = googletag.cmd || [];
+ (function () {
+ var gads = document.createElement('script');
+ gads.async = true;
+ gads.type = 'text/javascript';
+ var useSSL = 'https:' == document.location.protocol;
+ gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';
+ var node = document.getElementsByTagName('script')[0];
+ node.parentNode.insertBefore(gads, node);
+ })();
+ </script>
+
+
<link href="/css/fancybox/jquery.fancybox.css" rel="stylesheet" type="text/css" />
<link href="/js/jquery_plugins/icalendar/jquery.icalendar.css" rel="stylesheet" type="text/css" />
- <link href="/js/jquery_plugins/tipTip/tipTip.css" rel="stylesheet" type="text/css" />
<link href="/js/jquery_plugins/qtip/jquery.qtip.css" rel="stylesheet" type="text/css" />
- <!--[if lte IE 8]>
- <style type="text/css" media="all">
- legend{
- position: absolute;
- top: -.6em;
- left: 1em;
- line-height: 1.3;
- }
- fieldset p{
- margin-top:1em;
- }
- img.CacheNoteHelpImg{
- top:-.2em;
- }
- </style>
- <![endif]-->
- <style type="text/css" media="screen,projection">
- #otherSearchOptions li
- {
- list-style-image: none;
- list-style-position: outside;
- list-style-type: none;
- }
- .ff
- {
- font-family: "Andale Mono" , "Courier New" ,Courier,monospace;
- }
- .fr
- {
- margin-top: 1.5em;
- float: right;
- }
- .fl
- {
- float: left;
- }
- .clsCell
- {
- border: 1px solid #c0cee3;
- font-size: 80%;
- background-color: #fff;
- }
- .clsResultTitle, .clsResultTitleNoBold
- {
- color: #0000de;
- }
- .clsResultDescription
- {
- color: #333;
- }
- .clsURL
- {
- color: #999;
- }
- a.title:link, a.title:visited, a.title:hover, a.title:active
- {
- color: #000;
- text-decoration: underline;
- }
- a.title
- {
- text-align: right;
- font-size: 10px;
- font-family: arial,sans-serif;
- padding: 0 1px 0 0;
- }
- #mapSizePager a:hover
- {
- font-weight: bold;
- }
- #mapSizePager ul
- {
- width: 100%;
- margin: 0;
- padding: 0;
- list-style: none;
- }
- #mapSizePager li
- {
- float: left;
- list-style: none;
- }
- #mapSizePager li a
- {
- font-family: verdana,sans-serif;
- font-size: x-small;
- display: block;
- margin: 0 2px 0 0;
- padding: 4px;
- text-decoration: none;
- border: solid 1px #c0c0c0;
- height: 10px;
- min-width: 10px;
- cursor: pointer;
- }
- #mapPrintingNotes
- {
- width: 280px;
- text-align: left;
- overflow: auto;
- }
- .inplace_field {
- width:100%;
- resize: none;
- }
- legend.note{
- background:url('../images/icons/16/user_note.png') no-repeat 0 0;
- padding-left:18px;
- }
- legend.warning{
- background:url('../images/icons/16/take_note.png') no-repeat 0 0;
- padding-left:18px;
- }
- fieldset.CacheNote{
- border-color: #e9a24c !important;
- background-color:#ffffde;
- position:relative;
- }
- .CacheNoteHelpImg{
- position:relative;
- cursor:pointer;
- top:-1em;
- right:-.75em;
- float:right;
- }
- .InformationWidget h3{
- margin-bottom:.5em;
- }
- .InformationWidget .AlignRight{
- font-size:.8em;
- }
- #tiptip_content{
- *background-color:#000;
- box-shadow:none;
- }
- .maxed{
- color:#992a2a;
- }
-
-
- span.ccu-parseverify-distance img{
- text-align:center !important;
- vertical-align:text-bottom !important;
- }
- .edit-cache-coordinates{
- text-decoration: none;
- color: #000 !important;
- background: url(/images/icons/16/edit.png) no-repeat right 0;
- padding:2px 20px 2px 0px;
- margin-right:4px;
- }
- .ccc-coord{
- cursor: text;
- font-family: Courier New, Sans-Serif;
- }
- .ccu-update dl {
- margin-bottom:.25em;
- }
- .ccu-update dt{
- float:left;
- min-width:90px;
- }
- .ccu-update .ui-button-text-only .ui-button-text{
- padding:.3em .75em;
- }
- .ccu-parseverify-coords{
- font-style:italic;
- margin-right:.25em;
- }
- .ccu-parseverify-accept, .ccu-parseverify-cancel{
- margin-top:-5px;
- }
- .ui-tooltip-widget .ui-tooltip-content{
- border-width:1px;
- background-color:#fff;
- border-color:#c0cee3;
- color:#594a42;
- padding:1em;
- width:420px;
- }
- .myLatLon {
- border-bottom:2px solid #c0cee3;
- font-style:italic;
- }
- .leaflet-control-attribution{
- padding:3px !important;
- }
- .leaflet-control-attribution img{
- vertical-align:middle;
- }
- </style>
- <link rel="Stylesheet" type="text/css" media="screen" href="/hide/css/CSPScreen.css" />
- <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/v5/leaflet.css" />
+ <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/0.5.1/leaflet.css" />
<!--[if IE]>
- <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/v5/leaflet.ie.css" />
- <![endif]-->
- <script type="text/javascript" language="javascript" src="/js/leaflet/v5/leaflet.js"></script>
- <script type="text/javascript" src="/js/jquery.pagemethods.js"></script>
+ <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/0.5.1/leaflet.ie.css" />
+ <![endif]-->
+ <link rel="stylesheet" type="text/css" media="screen" href="/css/seek/beta.css" />
+ <script type="text/javascript" src="/js/leaflet/0.5.1/leaflet.js"></script>
<script type="text/javascript" src="/js/geometa.js"></script>
<script type="text/javascript">
var userToken = null,
@@ -238,15 +63,16 @@
}
})();
</script>
-<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?wp=GC431F2&amp;Submit6=Go" property="og:url" /><meta name="og:description" content="Solve the mystery and then use a smartphone or GPS device to navigate to the solution coordinates. Look for a other hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 1.5 and difficulty is 3 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/8.png" property="og:image" /><meta name="og:title" content="Needle in a Haystack" property="og:title" /><meta name="description" content="Needle in a Haystack (GC431F2) was created by The North Star on 12/21/2012. It&#39;s a Other size geocache, with difficulty of 3, terrain of 1.5. It&#39;s located in California, United States. The cache is not at the posted coordinates but is less than 2 miles awayCache is Unpublished is a little like looking for a Needle in a Haystack. The “Needle” should be easier to find in this Haystack.Cache is &quot;sign&quot; only." /></head>
+<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?wp=GC431F2&amp;title=needle-in-a-haystack" property="og:url" /><meta name="og:description" content="Solve the mystery and then use a smartphone or GPS device to navigate to the solution coordinates. Look for a other hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 1.5 and difficulty is 3 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/8.png" property="og:image" /><meta name="og:title" content="Needle in a Haystack" property="og:title" /><script>function utmx_section(){}function utmx(){}(function(){var k='3682814-19',d=document,l=d.location,c=d.cookie; if(l.search.indexOf('utm_expid='+k)>0)return; function f(n){if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);return escape(c.substring(i+n.length+1,j<0?c.length:j))}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;d.write('<sc'+'ript src=" '+'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com/ga_exp.js?'+'utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+'" type="text/javascript" charset="utf-8"><\/sc'+'ript>')})();</script><script>utmx('url','A/B');</script><meta name="description" content="Needle in a Haystack (GC431F2) was created by The North Star on 12/21/2012. It&#39;s a Other size geocache, with difficulty of 3, terrain of 1.5. It&#39;s located in California, United States. The cache is not at the posted coordinates but is less than 2 miles awayCache is Unpublished is a little like looking for a Needle in a Haystack. The “Needle” should be easier to find in this Haystack.Cache is &quot;sign&quot; only." /><link rel="canonical" href="http://www.geocaching.com/seek/cache_details.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384" /></head>
<body background="http://outplacing.com/files/2010/05/needle-in-a-haystack.jpg" class="CacheDetailsPage">
- <form name="aspnetForm" method="post" action="cache_details.aspx?wp=GC431F2&amp;Submit6=Go" onsubmit="javascript:return WebForm_OnSubmit();" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ctl00_btnSignIn')" id="aspnetForm">
+ <form name="aspnetForm" method="post" action="/geocache/GC431F2_needle-in-a-haystack" id="aspnetForm">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
-<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="2" />
-<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTc1MjcwNzgxNg8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzMzNzM3NjUWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYSAgUPFgIfAWRkAgcPFgIfA2cWAgIdDw8WAh4LUG9zdEJhY2tVcmwFbmh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9yZWRpcj0lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmd3AlM2RHQzQzMUYyJTI2U3VibWl0NiUzZEdvZGQCCA9kFgICBQ8PFgIeC05hdmlnYXRlVXJsBZUBaHR0cHM6Ly93d3cuZ2VvY2FjaGluZy5jb20vbG9naW4vZGVmYXVsdC5hc3B4P1JFU0VUPVkmcmVkaXI9aHR0cCUzYSUyZiUyZnd3dy5nZW9jYWNoaW5nLmNvbSUyZnNlZWslMmZjYWNoZV9kZXRhaWxzLmFzcHglM2Z3cCUzZEdDNDMxRjIlMjZTdWJtaXQ2JTNkR29kZAIMDxYCHwNnZAIsD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIeC18hSXRlbUNvdW50AhAWIGYPZBYCAgEPDxYIHg9Db21tYW5kQXJndW1lbnQFBWVuLVVTHgtDb21tYW5kTmFtZQUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHhBDYXVzZXNWYWxpZGF0aW9uaGRkAgEPZBYCAgEPDxYIHwcFBWRlLURFHwgFDVNldFRlbXBMb2NhbGUfAQUHRGV1dHNjaB8JaGRkAgIPZBYCAgEPDxYIHwcFBWZyLUZSHwgFDVNldFRlbXBMb2NhbGUfAQUJRnJhbsOnYWlzHwloZGQCAw9kFgICAQ8PFggfBwUFcHQtUFQfCAUNU2V0VGVtcExvY2FsZR8BBQpQb3J0dWd1w6pzHwloZGQCBA9kFgICAQ8PFggfBwUFY3MtQ1ofCAUNU2V0VGVtcExvY2FsZR8BBQnEjGXFoXRpbmEfCWhkZAIFD2QWAgIBDw8WCB8HBQVzdi1TRR8IBQ1TZXRUZW1wTG9jYWxlHwEFB1N2ZW5za2EfCWhkZAIGD2QWAgIBDw8WCB8HBQVlcy1FUx8IBQ1TZXRUZW1wTG9jYWxlHwEFCEVzcGHDsW9sHwloZGQCBw9kFgICAQ8PFggfBwUFaXQtSVQfCAUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8JaGRkAggPZBYCAgEPDxYIHwcFBW5sLU5MHwgFDVNldFRlbXBMb2NhbGUfAQUKTmVkZXJsYW5kcx8JaGRkAgkPZBYCAgEPDxYIHwcFBWNhLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUHQ2F0YWzDoB8JaGRkAgoPZBYCAgEPDxYIHwcFBXBsLVBMHwgFDVNldFRlbXBMb2NhbGUfAQUGUG9sc2tpHwloZGQCCw9kFgICAQ8PFggfBwUFZXQtRUUfCAUNU2V0VGVtcExvY2FsZR8BBQVFZXN0aR8JaGRkAgwPZBYCAgEPDxYIHwcFBW5iLU5PHwgFDVNldFRlbXBMb2NhbGUfAQUOTm9yc2ssIEJva23DpWwfCWhkZAIND2QWAgIBDw8WCB8HBQVrby1LUh8IBQ1TZXRUZW1wTG9jYWxlHwEFCe2VnOq1reyWtB8JaGRkAg4PZBYCAgEPDxYIHwcFBWh1LUhVHwgFDVNldFRlbXBMb2NhbGUfAQUGTWFneWFyHwloZGQCDw9kFgICAQ8PFggfBwUFcm8tUk8fCAUNU2V0VGVtcExvY2FsZR8BBQhSb23Dom7Egx8JaGRkAi4PZBYCAgMPFgIfA2hkAi8PFgIeBWNsYXNzBQxzcGFuLTI0IGxhc3QWAgIBD2QWLgIBD2QWAmYPZBYCAgEPDxYCHwEFB0dDNDMxRjJkZAICDxYCHwEFngE8YSBocmVmPSIvYWJvdXQvY2FjaGVfdHlwZXMuYXNweCIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJBYm91dCBDYWNoZSBUeXBlcyI+PGltZyBzcmM9Ii9pbWFnZXMvV3B0VHlwZXMvOC5naWYiIGFsdD0iVW5rbm93biBDYWNoZSIgdGl0bGU9IlVua25vd24gQ2FjaGUiIC8+PC9hPmQCBg9kFgQCAQ8WAh8DZ2QCBg8WAh8DaGQCBw8WAh8BBRxJbiBDYWxpZm9ybmlhLCBVbml0ZWQgU3RhdGVzZAILDxYCHwNoZAIMDxYCHwNnZAINDw8WAh8DaGRkAhAPFgIfA2gWAgIBDxYCHwEFgwJZb3UgbXVzdCBiZSA8YSBocmVmPSJodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi8/UkVTRVQ9WSZyZWRpcj1odHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvY2FjaGVfZGV0YWlscy5hc3B4P3dwPUdDNDMxRjImU3VibWl0Nj1HbyIgdGl0bGU9IkxvZyBJbiI+bG9nZ2VkIGluPC9hPiB3aXRoIGEgR2VvY2FjaGluZy5jb20gYWNjb3VudCB0byB2aWV3IHRoZSBzcGVjaWZpYyBsb2NhdGlvbiBvZiB0aGlzIGdlb2NhY2hlLiBJdCdzIGZyZWUhZAIRDxYCHwNoZAISDxYCHwNoFg4CAw8WAh4Fc3R5bGUFDWRpc3BsYXk6bm9uZTsWAgIBDxYCHwFlZAINDw8WBB8FBTNjZHBmLmFzcHg/Z3VpZD05OGU2ZjVhOS1jZjJkLTQyZjgtOWNkZi1hM2Y1MzQzNmYzODQfA2hkZAIPDw8WAh8FBThjZHBmLmFzcHg/Z3VpZD05OGU2ZjVhOS1jZjJkLTQyZjgtOWNkZi1hM2Y1MzQzNmYzODQmbGM9NWRkAhEPDxYCHwUFOWNkcGYuYXNweD9ndWlkPTk4ZTZmNWE5LWNmMmQtNDJmOC05Y2RmLWEzZjUzNDM2ZjM4NCZsYz0xMGRkAhMPDxYGHwUFW2h0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9JmRhZGRyPTM3LjM1OSwtMTIyLjAzMjI4MyhOZWVkbGUraW4rYStIYXlzdGFjaykeBlRhcmdldAUGX2JsYW5rHwNoZGQCFQ8WAh8DaGQCGw8WAh8DaBYEAgEPDxYGHglGb3JlQ29sb3IKTh4HRW5hYmxlZGgeBF8hU0ICBGRkAgMPDxYGHw0KTh8OaB8PAgRkZAIXD2QWCGYPFgIfA2hkAgEPDxYCHwNoZGQCAg8PFgIfA2hkZAIDDxYCHwNoZAIYD2QWAgIDDw8WAh8BBRNObyBoaW50cyBhdmFpbGFibGUuFgIeB29uY2xpY2sFDXJldHVybiBmYWxzZTtkAhkPFgIfA2hkAhwPFgIfA2hkAh0PDxYCHwNoZGQCHw8WAh8DaGQCIg9kFgICAQ9kFgQCAQ8PFgIfAQX/AzxpZnJhbWUgdHlwZT0iaWZyYW1lIiBzcmM9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUdldCZTaXRlSUQ9MSZYPScwZDFlZTAyY2RiZjM0OTgyODRiMGI0NGVmN2Q3YWVlZiciIHdpZHRoPSIxMjAiIGhlaWdodD0iMjQwIiBNYXJnaW53aWR0aD0iMCIgTWFyZ2luaGVpZ2h0PSIwIiBIc3BhY2U9IjAiIFZzcGFjZT0iMCIgRnJhbWVib3JkZXI9IjAiIFNjcm9sbGluZz0ibm8iIHN0eWxlPSJ3aWR0aDoxMjBweDtIZWlnaHQ6MjQwcHg7Ij48YSBocmVmPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1DbGljayY7TW9kZT1IVE1MJlNpdGVJRD0xIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUdldCZNb2RlPUhUTUwmU2l0ZUlEPTEiIHdpZHRoPSIxMjAiIGhlaWdodD0iMjQwIiBib3JkZXI9IjAiIGFsdD0iIiAvPjwvYT48L2lmcmFtZT5kZAIDDxYCHglpbm5lcmh0bWwFE0FkdmVydGlzaW5nIHdpdGggVXNkAiYPZBYEAgUPDxYCHwNnZGQCCQ8PFgIfBQU8fi90cmFjay9zZWFyY2guYXNweD93aWQ9OThlNmY1YTktY2YyZC00MmY4LTljZGYtYTNmNTM0MzZmMzg0ZGQCJw8PFgIfA2dkFgJmDxYCHwYCAhYEAgEPZBYEZg8VAwBXaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9OWZkMzlmYjgtOTUwMi00N2I0LWFlMDgtODZjZTIzNmZjNjYxG2Ztb3JhZXMmIzM5OyBzb2x2ZWQgYnV0IGZhcmQCAg8VAkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9NDQwY2Y2MWItZGNmMy00MjIwLWE4Nzct" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="Y2UzMTJmMTAzOTIxB2Ztb3JhZXNkAgIPZBYEZg8VAw5BbHRlcm5hdGluZ1Jvd1dodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD1kYTE5ZjUwMy04ZGYyLTRhMzYtYWE5OC01ZDQxNzlmNTg1NTAOU29sdmVkIFB1enpsZXNkAgIPFQJMaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTM3MWQzMTJlLWU4MjgtNGRhOC04MDIxLTY1MTQyMmE0NDYyMQZ3MDBmZWxkAikPZBYUAgEPDxYCHwNoZGQCBw8PFgIfA2hkZAIRDw8WAh8FBSMvc2Vlay9uZWFyZXN0LmFzcHg/dT1UaGUrTm9ydGgrU3RhcmRkAhUPDxYCHwUFJC9zZWVrL25lYXJlc3QuYXNweD91bD1UaGUrTm9ydGgrU3RhcmRkAhkPFgIfA2gWCgIDDw8WAh8FBVgvc2Vlay9uZWFyZXN0LmFzcHg/dHg9NDA4NjE4MjEtMTgzNS00ZTExLWI2NjYtOGQ0MTA2NGQwM2ZlJmxhdD0zNy4zNTkwMDAmbG5nPS0xMjIuMDMyMjgzZGQCBQ8PFgIfBQVcL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTQwODYxODIxLTE4MzUtNGUxMS1iNjY2LThkNDEwNjRkMDNmZSZsYXQ9MzcuMzU5MDAwJmxuZz0tMTIyLjAzMjI4MyZmPTFkZAIJDw8WAh8FBTAvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTM3LjM1OTAwMCZsbmc9LTEyMi4wMzIyODNkZAILDw8WAh8FBTQvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTM3LjM1OTAwMCZsbmc9LTEyMi4wMzIyODMmZj0xZGQCDw8PFgIfBQVKaHR0cDovL3d3dy53YXltYXJraW5nLmNvbS9kaXJlY3RvcnkuYXNweD9mPTEmbGF0PTM3LjM1OTAwMCZsb249LTEyMi4wMzIyODNkZAIbDxYCHwNoZAIfDw8WAh8FBSIvcmV2aWV3cy9ob3RlbHMtaW4tU3Vubnl2YWxlLENBLFVTZGQCIQ8PFgIfA2hkZAIjDw8WAh8DaGRkAicPZBYIAgEPFgIfAQUPMiBMb2dnZWQgVmlzaXRzZAIHDw8WAh8FBUN+L3NlZWsvY2FjaGVfbG9nYm9vay5hc3B4P2d1aWQ9OThlNmY1YTktY2YyZC00MmY4LTljZGYtYTNmNTM0MzZmMzg0ZGQCCA8WAh8DaGQCCQ8PFgIfA2hkZAIqDxYCHwEFBHRydWVkAisPFgIfAQUebGF0PW51bGw7bG5nPW51bGw7Z3VpZD1udWxsOw0KZAIsDxYCHwEFdXRyeSB7IF9nYXEucHVzaChbJ190cmFja0V2ZW50JywgJ0dlb2NhY2hpbmcnLCAnQ2FjaGVEZXRhaWxzTWVtYmVyVHlwZScsICdOb3RTaWduZWRJbicsIG51bGwsIHRydWVdKTsgfSBjYXRjaChlcnIpIHsgfWQCMA8WAh8DaGQCMQ9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHwYCEBYgZg9kFgICAQ8PFggfBwUFZW4tVVMfCAUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHwloZGQCAQ9kFgICAQ8PFggfBwUFZGUtREUfCAUNU2V0VGVtcExvY2FsZR8BBQdEZXV0c2NoHwloZGQCAg9kFgICAQ8PFggfBwUFZnItRlIfCAUNU2V0VGVtcExvY2FsZR8BBQlGcmFuw6dhaXMfCWhkZAIDD2QWAgIBDw8WCB8HBQVwdC1QVB8IBQ1TZXRUZW1wTG9jYWxlHwEFClBvcnR1Z3XDqnMfCWhkZAIED2QWAgIBDw8WCB8HBQVjcy1DWh8IBQ1TZXRUZW1wTG9jYWxlHwEFCcSMZcWhdGluYR8JaGRkAgUPZBYCAgEPDxYIHwcFBXN2LVNFHwgFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8JaGRkAgYPZBYCAgEPDxYIHwcFBWVzLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCWhkZAIHD2QWAgIBDw8WCB8HBQVpdC1JVB8IBQ1TZXRUZW1wTG9jYWxlHwEFCEl0YWxpYW5vHwloZGQCCA9kFgICAQ8PFggfBwUFbmwtTkwfCAUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwloZGQCCQ9kFgICAQ8PFggfBwUFY2EtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwloZGQCCg9kFgICAQ8PFggfBwUFcGwtUEwfCAUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCWhkZAILD2QWAgIBDw8WCB8HBQVldC1FRR8IBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwloZGQCDA9kFgICAQ8PFggfBwUFbmItTk8fCAUNU2V0VGVtcExvY2FsZR8BBQ5Ob3JzaywgQm9rbcOlbB8JaGRkAg0PZBYCAgEPDxYIHwcFBWtvLUtSHwgFDVNldFRlbXBMb2NhbGUfAQUJ7ZWc6rWt7Ja0HwloZGQCDg9kFgICAQ8PFggfBwUFaHUtSFUfCAUNU2V0VGVtcExvY2FsZR8BBQZNYWd5YXIfCWhkZAIPD2QWAgIBDw8WCB8HBQVyby1STx8IBQ1TZXRUZW1wTG9jYWxlHwEFCFJvbcOibsSDHwloZGQCAw8WAh8BBStTZXJ2ZXI6IFdFQjAzOyBCdWlsZDogV2ViLkhvdEZpeF8yMDEyMTIxMS4xZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUSY3RsMDAkY2JSZW1lbWJlck1l4bXr81thZG2PoWxIqVZjMOUf7tU=" />
+<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="3" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE1Mzk0NTE5MTEPFgIeBEMuSUQoKVlTeXN0ZW0uSW50NjQsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQczMzczNzY1FgJmD2QWBmYPZBYKAgYPFgIeBFRleHQFYjxtZXRhIG5hbWU9IkNvcHlyaWdodCIgY29udGVudD0iQ29weXJpZ2h0IChjKSAyMDAwLTIwMTMgR3JvdW5kc3BlYWssIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iIC8+ZAIHDxYCHwEFRzwhLS0gQ29weXJpZ2h0IChjKSAyMDAwLTIwMTMgR3JvdW5kc3BlYWssIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gLS0+ZAIZDxYCHgRocmVmBR1+L2Nzcy90bG5NYXN0ZXJTY3JlZW4uY3NzP3I9MWQCGg8WAh8CBRV+L2Nzcy90bG5NYWluLmNzcz9yPTFkAh8PFgIeB1Zpc2libGVoZAIBDxYCHgZhY3Rpb24FJi9nZW9jYWNoZS9HQzQzMUYyX25lZWRsZS1pbi1hLWhheXN0YWNrFhYCCw8WAh8BZGQCDQ9kFgICBQ8WAh8DZxYIAgEPDxYCHghJbWFnZVVybAVOaHR0cDovL2ltZy5nZW9jYWNoaW5nLmNvbS91c2VyL2F2YXRhci82NDJkMjc3MS00MjRlLTRlZTYtYmViNi1lZmVjZGUzNDA2ZmMuanBnZGQCAw8WAh8BBXRIZWxsbywgPGEgaHJlZj0iL215L2RlZmF1bHQuYXNweCIgdGl0bGU9IlZpZXcgUHJvZmlsZSBmb3IgQmFuYW5ld2VpemVuIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+QmFuYW5ld2VpemVuPC9hPmQCBQ8PFgIeC05hdmlnYXRlVXJsBaUBaHR0cHM6Ly93d3cuZ2VvY2FjaGluZy5jb20vbG9naW4vZGVmYXVsdC5hc3B4P1JFU0VUPVkmcmVkaXI9aHR0cCUzYSUyZiUyZnd3dy5nZW9jYWNoaW5nLmNvbSUyZnNlZWslMmZjYWNoZV9kZXRhaWxzLmFzcHglM2Z3cCUzZEdDNDMxRjIlMjZ0aXRsZSUzZG5lZWRsZS1pbi1hLWhheXN0YWNrZGQCCw8WAh8BBRA0NjIgQ2FjaGVzIEZvdW5kZAIXDxYCHwNnFgICDQ8PFgIfBgVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTMxODkyNjc4LTExMTctNDZlYi1hYTNiLTE5MWMyMGJkNjYwN2RkAh0PDxYCHwNnZGQCKQ8WAh8DZ2QCVw9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHgtfIUl0ZW1Db3VudAIUFihmD2QWAgIBDw8WCB4PQ29tbWFuZEFyZ3VtZW50BQVlbi1VUx4LQ29tbWFuZE5hbWUFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB4QQ2F1c2VzVmFsaWRhdGlvbmhkZAIBD2QWAgIBDw8WCB8IBQVkZS1ERR8JBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCmhkZAICD2QWAgIBDw8WCB8IBQVmci1GUh8JBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8KaGRkAgMPZBYCAgEPDxYIHwgFBXB0LVBUHwkFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8KaGRkAgQPZBYCAgEPDxYIHwgFBWNzLUNaHwkFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwpoZGQCBQ9kFgICAQ8PFggfCAUFZGEtREsfCQUNU2V0VGVtcExvY2FsZR8BBQVEYW5zax8KaGRkAgYPZBYCAgEPDxYIHwgFBXN2LVNFHwkFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8KaGRkAgcPZBYCAgEPDxYIHwgFBWVzLUVTHwkFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCmhkZAIID2QWAgIBDw8WCB8IBQVldC1FRR8JBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwpoZGQCCQ9kFgICAQ8PFggfCAUFaXQtSVQfCQUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8KaGRkAgoPZBYCAgEPDxYIHwgFBWVsLUdSHwkFDVNldFRlbXBMb2NhbGUfAQUQzpXOu867zrfOvc65zrrOrB8KaGRkAgsPZBYCAgEPDxYIHwgFBWx2LUxWHwkFDVNldFRlbXBMb2NhbGUfAQUJTGF0dmllxaF1HwpoZGQCDA9kFgICAQ8PFggfCAUFbmwtTkwfCQUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwpoZGQCDQ9kFgICAQ8PFggfCAUFY2EtRVMfCQUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwpoZGQCDg9kFgICAQ8PFggfCAUFcGwtUEwfCQUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCmhkZAIPD2QWAgIBDw8WCB8IBQVuYi1OTx8JBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwpoZGQCEA9kFgICAQ8PFggfCAUFa28tS1IfCQUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCmhkZAIRD2QWAgIBDw8WCB8IBQVodS1IVR8JBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8KaGRkAhIPZBYCAgEPDxYIHwgFBXJvLVJPHwkFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCmhkZAITD2QWAgIBDw8WCB8IBQVqYS1KUB8JBQ1TZXRUZW1wTG9jYWxlHwEFCeaXpeacrOiqnh8KaGRkAlsPZBYCAgMPFgIfA2hkAl0PFgIeBWNsYXNzBQxzcGFuLTI0IGxhc3QWAgIBD2QWJgIBD2QWAmYPZBYCAgEPDxYCHwEFB0dDNDMxRjJkZAICDxYCHwEFngE8YSBocmVmPSIvYWJvdXQvY2FjaGVfdHlwZXMuYXNweCIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJBYm91dCBDYWNoZSBUeXBlcyI+PGltZyBzcmM9Ii9pbWFnZXMvV3B0VHlwZXMvOC5naWYiIGFsdD0iVW5rbm93biBDYWNoZSIgdGl0bGU9IlVua25vd24gQ2FjaGUiIC8+PC9hPmQCBg9kFgQCAQ8WAh8DZ2QCBw8WAh8DaGQCCg9kFgYCAQ8WAh8BBQE3ZAIFDxYCHwNoZAIHDw8WAh8GBUQvc2Vlay9jYWNoZV9mYXZvcml0ZWQuYXNweD9ndWlkPTk4ZTZmNWE5LWNmMmQtNDJmOC05Y2RmLWEzZjUzNDM2ZjM4NGRkAgwPDxYCHwNoZGQCDw8WAh8DaGQCEA8WAh8DaGQCEQ9kFgwCAw9kFgICAQ8WAh8BBRtVVE06IDEwUyBFIDU4NTY5OCBOIDQxMzUxMzdkAg0PDxYCHwYFM2NkcGYuYXNweD9ndWlkPTk4ZTZmNWE5LWNmMmQtNDJmOC05Y2RmLWEzZjUzNDM2ZjM4NGRkAg8PDxYCHwYFOGNkcGYuYXNweD9ndWlkPTk4ZTZmNWE5LWNmMmQtNDJmOC05Y2RmLWEzZjUzNDM2ZjM4NCZsYz01ZGQCEQ8PFgIfBgU5Y2RwZi5hc3B4P2d1aWQ9OThlNmY1YTktY2YyZC00MmY4LTljZGYtYTNmNTM0MzZmMzg0JmxjPTEwZGQCEw8PFgQfBgV9aHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP2Y9ZCZobD1lbiZzYWRkcj00OC44NjEwMDIsOS4xODY1NzcgKEhvbWUgTG9jYXRpb24pJmRhZGRyPTM3LjM1OSwtMTIyLjAzMjI4MyhOZWVkbGUraW4rYStIYXlzdGFjaykeBlRhcmdldAUGX2JsYW5rZGQCGw9kFghmDw8WBB4JRm9yZUNvbG9yDB4EXyFTQgIEZGQCAQ8PFgQfDQwfDgIEZGQCAg8PFgIfA2cWAh4Hb25jbGljawU7czJncHMoJzk4ZTZmNWE5LWNmMmQtNDJmOC05Y2RmLWEzZjUzNDM2ZjM4NCcpO3JldHVybiBmYWxzZTtkAgMPDxYCHwNnFgIfDwUgczJwaG9uZSgnR0M0MzFGMicpO3JldHVybiBmYWxzZTtkAhMPFgIfA2dkAhcPZBYIZg8WAh8DaGQCAQ8PFgIfA2hkZAICDw8WAh8DaGRkAgMPFgIfA2hkAhgPZBYCAgMPDxYCHwEFE05vIGhpbnRzIGF2YWlsYWJsZS4WAh8PBQ1yZXR1cm4gZmFsc2U7ZAIZDxYCHwNoZAIbD2QWBAIBDxYEHwIFHy9zZWVrL2xvZy5hc3B4P0lEPTMzNzM3NjUmbGNuPTEeCWlubmVyaHRtbAUOTG9nIHlvdXIgdmlzaXRkAgIPFgIfA2hkAhwPFgIfA2dkAh0PFgIfA2hkAiAPZBYCAgMPFgIfEAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJA9kFgQCBQ8PFgIfA2dkZAIJDw8WAh8GBTx+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD05OGU2ZjVhOS1jZjJkLTQyZjgtOWNkZi1hM2Y1MzQzNmYzODRkZAIlDw8WAh8DZ2QWAmYPFgIfBwIBFgICAQ9kFgJmDxUCAO0BPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9OWZkMzlmYjgtOTUwMi00N2I0LWFlMDgtODZjZTIzNmZjNjYxIj5mbW9yYWVzJiMzOTsgc29sdmVkIGJ1dCBmYXI8L2E+PGJyIC8+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD00NDBjZjYxYi1kY2YzLTQyMjAtYTg3Ny1jZTMxMmYxMDM5MjEiPmZtb3JhZXM8" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="L2E+ZAInD2QWEgIBDw8WAh8DaGRkAgMPZBYCAgEPDxYCHwYFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD05OGU2ZjVhOS1jZjJkLTQyZjgtOWNkZi1hM2Y1MzQzNmYzODQmRFM9MWRkAgcPDxYGHgZSRFMuSUQLKXZHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNzb24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDk5NS4xNjEwOSwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAczMzczNzY1HwNoZGQCCQ8PFgIfA2dkFgICAQ8PFgQfBgUsL21hcC9kZWZhdWx0LmFzcHg/bGF0PTM3LjM1OSZsbmc9LTEyMi4wMzIyODMfA2dkZAIPDxYCHwEFkQEuLi5vdGhlciBjYWNoZXMgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3U9VGhlK05vcnRoK1N0YXIiPmhpZGRlbjwvYT4gb3IgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3VsPVRoZStOb3J0aCtTdGFyIj5mb3VuZDwvYT4gYnkgdGhpcyB1c2VyZAIRD2QWBgIBDxYCHwEFhQIuLi5uZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTQwODYxODIxLTE4MzUtNGUxMS1iNjY2LThkNDEwNjRkMDNmZSZsYXQ9MzcuMzU5MDAwJmxuZz0tMTIyLjAzMjI4MyI+Y2FjaGVzIG9mIHRoaXMgdHlwZTwvYT4sIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD00MDg2MTgyMS0xODM1LTRlMTEtYjY2Ni04ZDQxMDY0ZDAzZmUmbGF0PTM3LjM1OTAwMCZsbmc9LTEyMi4wMzIyODMmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgMPFgIfAQWsAS4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD0zNy4zNTkwMDAmbG5nPS0xMjIuMDMyMjgzIj5jYWNoZXM8L2E+LCA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTM3LjM1OTAwMCZsbmc9LTEyMi4wMzIyODMmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgUPFgIfAQWBAS4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iaHR0cDovL3d3dy53YXltYXJraW5nLmNvbS9kaXJlY3RvcnkuYXNweD9mPTEmbGF0PTM3LjM1OTAwMCZsb249LTEyMi4wMzIyODMiPndheW1hcmtzIG9uIFdheW1hcmtpbmcuY29tPC9hPmQCEw9kFgICAQ8WAh8BBXAuLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFyay9uZWFyZXN0LmFzcHg/bGF0PTM3LjM1OTAwMCZsb249LTEyMi4wMzIyODMiPmJlbmNobWFya3M8L2E+ZAIXD2QWAgIBDw8WBB8BBdEJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9MzcuMzU5JmxuZz0tMTIyLjAzMjI4IiB0YXJnZXQ9Il9ibGFuayI+R2VvY2FjaGluZy5jb20gTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubXl0b3BvLmNvbS9tYXBzLmNmbT9sYXQ9MzcuMzU5Jmxvbj0tMTIyLjAzMjI4JnBpZD1ncm91bmRzcGVhayIgdGFyZ2V0PSJfYmxhbmsiPk15VG9wbyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPU4rMzclYzIlYjArMjEuNTQwK1crMTIyJWMyJWIwKzAxLjkzNysoR0M0MzFGMikrIiB0YXJnZXQ9Il9ibGFuayI+R29vZ2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vbWFwcy9tYXAuYWRwP3NlYXJjaHR5cGU9YWRkcmVzcyZmb3JtdHlwZT1sYXRsb25nJmxhdGxvbmd0eXBlPWRlY2ltYWwmbGF0aXR1ZGU9MzcuMzU5JmxvbmdpdHVkZT0tMTIyLjAzMjI4Jnpvb209MTAiIHRhcmdldD0iX2JsYW5rIj5NYXBRdWVzdDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuMzcuMzU5Xy0xMjIuMDMyMjhfR0M0MzFGMiIgdGFyZ2V0PSJfYmxhbmsiPkJpbmcgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy55YWhvby5jb20vI2xhdD0zNy4zNTkmbG9uPS0xMjIuMDMyMjgmem9vbT0xNiZxPTM3LjM1OSwtMTIyLjAzMjI4JmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbXNybWFwcy5jb20vaW1hZ2UuYXNweD9Mb249LTEyMi4wMzIyOCZMYXQ9MzcuMzU5Jnc9MSZyZWY9R3wtMTIyLjAzMjI4LDM3LjM1OSIgdGFyZ2V0PSJfYmxhbmsiPk1TUiBNYXBzIChGb3JtZXJseSBUZXJyYXNlcnZlcik8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD0zNy4zNTkmbG9uPS0xMjIuMDMyMjgiIHRhcmdldD0iX2JsYW5rIj5PcGVuQ3ljbGVNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8/bWxhdD0zNy4zNTkmbWxvbj0tMTIyLjAzMjI4Jnpvb209MTIiIHRhcmdldD0iX2JsYW5rIj5PcGVuU3RyZWV0TWFwPC9hPjwvbGk+HwNnZGQCGw9kFggCAQ8WAh8BBRAzNSBMb2dnZWQgVmlzaXRzZAIHDw8WAh8GBUN+L3NlZWsvY2FjaGVfbG9nYm9vay5hc3B4P2d1aWQ9OThlNmY1YTktY2YyZC00MmY4LTljZGYtYTNmNTM0MzZmMzg0ZGQCCA8WAh8DaGQCCQ8PFgIfA2hkZAJfDxYCHwNoFgICAQ8PZBYCHgVzdHlsZQUMd2lkdGg6MTIwcHg7ZAJhD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIfBwIUFihmD2QWAgIBDw8WCB8IBQVlbi1VUx8JBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2gfCmhkZAIBD2QWAgIBDw8WCB8IBQVkZS1ERR8JBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCmhkZAICD2QWAgIBDw8WCB8IBQVmci1GUh8JBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8KaGRkAgMPZBYCAgEPDxYIHwgFBXB0LVBUHwkFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8KaGRkAgQPZBYCAgEPDxYIHwgFBWNzLUNaHwkFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwpoZGQCBQ9kFgICAQ8PFggfCAUFZGEtREsfCQUNU2V0VGVtcExvY2FsZR8BBQVEYW5zax8KaGRkAgYPZBYCAgEPDxYIHwgFBXN2LVNFHwkFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8KaGRkAgcPZBYCAgEPDxYIHwgFBWVzLUVTHwkFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCmhkZAIID2QWAgIBDw8WCB8IBQVldC1FRR8JBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwpoZGQCCQ9kFgICAQ8PFggfCAUFaXQtSVQfCQUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8KaGRkAgoPZBYCAgEPDxYIHwgFBWVsLUdSHwkFDVNldFRlbXBMb2NhbGUfAQUQzpXOu867zrfOvc65zrrOrB8KaGRkAgsPZBYCAgEPDxYIHwgFBWx2LUxWHwkFDVNldFRlbXBMb2NhbGUfAQUJTGF0dmllxaF1HwpoZGQCDA9kFgICAQ8PFggfCAUFbmwtTkwfCQUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwpoZGQCDQ9kFgICAQ8PFggfCAUFY2EtRVMfCQUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwpoZGQCDg9kFgICAQ8PFggfCAUFcGwtUEwfCQUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCmhkZAIPD2QWAgIBDw8WCB8IBQVuYi1OTx8JBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwpoZGQCEA9kFgICAQ8PFggfCAUFa28tS1IfCQUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCmhkZAIRD2QWAgIBDw8WCB8IBQVodS1IVR8JBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8KaGRkAhIPZBYCAgEPDxYIHwgFBXJvLVJPHwkFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCmhkZAITD2QWAgIBDw8WCB8IBQVqYS1KUB8JBQ1TZXRUZW1wTG9jYWxlHwEFCeaXpeacrOiqnh8KaGRkApUBDxYCHwEFECZjb3B5OyAyMDAwLTIwMTNkAgMPFgIfAQUrU2VydmVyOiBXRUIx" />
+<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="MzsgQnVpbGQ6IFdlYi5Ib3RGaXhfMjAxMzA5MDQuMWRk5MycvpiSR2WPhT5UsUuoA0HnSxY=" />
</div>
<script type="text/javascript">
@@ -266,30 +92,15 @@ function __doPostBack(eventTarget, eventArgument) {
</script>
-<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&amp;t=634449413070371108" type="text/javascript"></script>
+<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&amp;t=634981132943076885" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=8q09cuy9-PZDS8eZx6HLVXd3YZywgUmuoy8VVtGr3vaISS8ybaBLyQLFlq93nr2dlYP0QJWcJvooQKkloTdALTrS571k1UcPpD2pbXbpthIOf2Mn8gCnpyvfv-ZudWTMi0y39YZC0-Q0yjjxQ82yTlKdhBw1&amp;t=6df0ad7a" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&amp;t=2610f696" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&amp;t=2610f696" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=l5IqBBbOFPRmpVAJwxQpHQyZ16ITBnk7fYRIeFc1JaDh64igpOv-k92v3DpzWBikWWvRdoxgNXda9cdmIFt2Ryy2gD2Tv71tVdwVNB4i-d1_vwLdJifCsG55PNiibmPX-x1Vspbf6jGBVWDKxT4kuLr2vWh-XRcY7PiryWks0UgjSCXEHO05VytTmCI6A-IhnCg2kD_i3YytsXr36qf0k6q0vQ41" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=mw8CUwVrYP9IGhC7WIGT8qdlVInGzqviii3RV8GrEEiOV2Nqjk57cAorEy9ACR1-rU7I3CZphWXcx81x-LDKIItu7BGPceT7Q61MOAXhSyJyW2DF3crLIX0Xef7vI1s2RLsp2bf8Aazkh-w4559ltQCi1H8uzBcnORltR9bo05Oe5VlRs1WnFqxyOK9aLEH4pBXNx8Bhb2-oIOLExj6kkCQgF06_A6ksiNnQXuGaKfXh1LjjCyujVv1xsxL_muSivN4bS4R4JR4M2Z3WmsBSnQXzJkIKkQB7kOS3JYimpNQ7sw1_qOYPZVB0xYbSCGD-xptYnX3Q4DLGiBNW4mP5R1Xv0QiVlwA9uiMAy_mQKBalvK4YjYdSbW9T9WZdtn39cD799HNy--sDKm1hhlBWb8Dz1jgxR2B9glqCYkqQmk3DSoPhPx9eWxB5q9VFjw1Q4u3d0Rgu8lF3NszOnHmJ19E6XZOdbRPyOjljcqTy1MWgNSwFAV-E3kWUGiJ0QNel49k3VkdjBUTKhIqIdQ9wve0zAcvWgxHEaFuvXv92aYmJwFYFDbNPvkYfBRLakBbpHIzGs9e0xu5sbTAVijArOHlzTSMNx2jK2mdt8VSjThXQAkMSV5W0jY2I6tuqFunlegJeA9zrFE9HdfbBtj9gOSe3LQQNMG7NaUShNTYUbJ5eZbQ8g7O5gjKFbDylaSZqv0aXQu0Lgrn7EdKV3B0BMhNeG3pR32zEBX1T3hEAnDKiYVOX0" type="text/javascript"></script>
-<script src="js/cachedetails.js" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&amp;t=ffffffff940d030f" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&amp;t=ffffffff940d030f" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=9neUao1ldOe56D-oi79ZeNMS580B2MfAxsmKBu7TscsFcznNYPXcB4UjFi8Z5hX-G3XpGkuINrrjEbWlRJIpYzuQ0Gp1bToM2sc-4L9fZg-lQ0EVBWKR25_fWQSYjJRU2uBjyiuXJBh1PbNktQneM9tmKKJqgNadYuBlhnmzF4N1y-qWT-8DqRvLM4LVm4xAlCFX3wxbNzTnqY8xYJhgpHEuAcg1" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=GPTAt64ibvPN-LF5CO6jFKhn4sPOUMnbiR5BoHKrnYKwAvpA9NFvbDd_NCdyclMYGcEaJ1h8R5rOhyFMIO7yEEfbbkZLpKZng-or5BGDpXDS_-XI5OtuK5kgopEm6zV17diANIXlqstGegNiNdfmbq6GZRxN8Kp2v-BO8mUY1SFxj1TTmrJa_wrYHLVzKd1FC84kKErcsViIYkRPYDW8-KOAH7eNzbb9ItvmAoTW4Lx4TTMxnLOYQN9uDGe_B5MPGKTQ_HVN3T7RHDC16s2vSwQCrjrD8RLS5LVJDGdLOhnGt1t2t7X8GZfI2fhDMOQncfm_O1CNWJHKP68M14XZXyh-N_N8_0R_8O2NfVy8zPF2wx6VK5xlS4kqqPoE6kJ-tNlFo3rnvHwhxf9IhYySvpAp6Fwxmz-qzumYrkicoWBPK6_4LW9ON_hKY0nIXImgMvNF4pApZ1KdZL-qTeHFVWFUieR7KDMbprQ3SHiC1rGn62whh1qPsFO69jLHedN7TzOrzq40I0bsi3EyYbNNS0oD0Rc7iJORDPeh-86QAVUZ2FDywODS3JB-NJVVT1_JUBBxtMfpBj711LXpmG6ftUbrr21LImyDDSQrp3lqIvRxTc-GwJV9ni69a3fOOBS2jyt6Zj5QmqoIJOYhV11p53vEVEvn7tFnf6w7zRf4tt7FtRqv0" type="text/javascript"></script>
+<script src="../seek/js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
-<script src="/WebResource.axd?d=Np8DmZmh2tcIkgE9SU7mE6n1BWbJ0opng-rHikqBjFQo0nbLYSeBBVhJhCHcmx1ihKnAnQv_ZhnItUUjENzIzc1uoXk1&amp;t=634449413070371108" type="text/javascript"></script>
-<script type="text/javascript">
-//<![CDATA[
-function WebForm_OnSubmit() {
-if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
-return true;
-}
-//]]>
-</script>
-
-<div>
-
- <input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="Q3QLAIGc3fycf1xcmR0oeYDSmxzti-0045OC6NZQvsE42Tm2u2QIX8zoZDBQxLovJ-hK6GtvJtlghgEFizixxK5opmWjeHAxzOpw_rZ8ZR8kHZBX0" />
-</div>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnetForm', [], [], [], 90, 'ctl00');
@@ -297,180 +108,166 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</script>
<div id="Top" class="SkipLinks">
-
<a id="ctl00_hlSkipLinksNavigation" accesskey="n" title="Skip to Navigation" href="#Navigation">Skip to Navigation</a>
<a id="ctl00_hlSkipLinksContent" accesskey="c" title="Skip to Content" href="#Content">Skip to Content</a>
-
</div>
-
- <!--[if lte IE 6]>
+ <!--[if lte IE 7]>
<div class="WarningMessage PhaseOut">
-
<p>Groundspeak is phasing out support for older browsers. Visit the <a href="http://support.groundspeak.com/index.php?pg=kb.page&id=215" title="Browser Support Information">Help Center</a> for more information.</p>
-
</div>
<![endif]-->
-
<div class="PrintOnly">
-
<p>
- <img src="/images/logo_print_bw.png" alt="Geocaching.com" /></p>
+ <img src="/images/logo_print_bw.png" alt="Geocaching.com" />
+ </p>
<hr />
-
</div>
-
- <header>
-
+ <header id="ctl00_siteHeader">
<div class="container">
-
<h1 class="Logo span-16">
- <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
+ <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">
+ <img src="/images/tlnMasters/geocaching-logo.png" alt="Geocaching" height="43" width="301" />
+ </a>
+ </h1>
<div class="ProfileWidget span-8 last">
- <div id="ctl00_divNotSignedIn" class="FloatContainer">
-
- <p class="NotSignedInText"><strong>Welcome, Visitor!</strong><br /></p>
- <p class="LoginWithFacebook">
- <a id="ctl00_uxSignIn" title="Login with Facebook" class="btnFacebookLogin NoWrap" href="javascript:__doPostBack(&#39;ctl00$uxSignIn&#39;,&#39;&#39;)"><span>Login with Facebook</span></a></p>
- <p class="NotSignedInLinks clear">
- <a id="hlSignIn" accesskey="s" title="Sign In" class="SignInLink" href="/login/">Sign In</a>&nbsp;|&nbsp;<a id="ctl00_hlRegister" accesskey="r" title="Sign Up" href="../membership/register.aspx?type=basic">Sign Up</a></p>
- <div id="SignInWidget">
-
- <h3>Sign In with Geocaching</h3>
- <div id="ctl00_vsSignInWidgetForm" class="FormSummaryWidget FormErrorWidget InputWidth" style="color:Red;display:none;">
-
-</div>
- <p>
- <label for="ctl00_tbUsername" id="ctl00_lblUsername" title="Geocaching Username">Geocaching Username:</label><br />
- <input name="ctl00$tbUsername" type="text" id="ctl00_tbUsername" class="text" autocomplete="off" />
- <span id="ctl00_rfvUsername" title="Username is a required field; please enter a valid username." style="color:Red;display:none;"><span class="FormIcon FormValidationIcon">*</span></span>
- </p>
- <p>
- <label for="ctl00_tbPassword" id="ctl00_lblPassword" title="Geocaching Password">Geocaching Password:</label><br />
- <input name="ctl00$tbPassword" type="password" id="ctl00_tbPassword" class="text" autocomplete="off" />
- <span id="ctl00_rfvPassword" title="Password is a required field; please enter a valid password." style="color:Red;display:none;"><span class="FormIcon FormValidationIcon">*</span></span>
+ <div id="ctl00_divSignedIn">
+ <p class="Avatar NoBottomSpacing">
+ <a id="ctl00_hlHeaderAvatar" accesskey="p" title="Your Profile" href="../my/"><img title="Your Profile" src="http://img.geocaching.com/user/avatar/642d2771-424e-4ee6-beb6-efecde3406fc.jpg" alt="" style="border-width:0px;" /></a>
</p>
- <p>
- <span class="Checkbox" title="Keep Me Signed In" autocomplete="off"><input id="ctl00_cbRememberMe" type="checkbox" name="ctl00$cbRememberMe" /><label for="ctl00_cbRememberMe">Keep Me Signed In</label></span><br />
- <small>
- Uncheck if on a shared computer.</small>
- </p>
- <p>
- <input type="submit" name="ctl00$btnSignIn" value="Sign In" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$btnSignIn&quot;, &quot;&quot;, true, &quot;SignInForm&quot;, &quot;https://www.geocaching.com/login/default.aspx?redir=%2fseek%2fcache_details.aspx%3fwp%3dGC431F2%26Submit6%3dGo&quot;, false, false))" id="ctl00_btnSignIn" title="Sign In" />
- or
- <a id="ctl00_hlSignInClose" title="Close this Window" class="SignInCloseLink" href="javascript:void(0);">Close</a></p>
- <p>
- <small>
- <a id="ctl00_hlForgot" title="Forgot your username or password?" href="../login/password.aspx">Forgot your username or password?</a></small></p>
+ <p class="SignedInText">
+ <strong>
+ Hello, <a href="/my/default.aspx" title="View Profile for Bananeweizen" class="SignedInProfileLink">Bananeweizen</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&amp;redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fwp%3dGC431F2%26title%3dneedle-in-a-haystack">Sign Out</a>)<br />
+ <span id="ctl00_litPMLevel">Premium Member</span>
+
+ <strong style="display: block">
+ 462 Caches Found</strong>
- </div>
-
-
+ </p>
</div>
+ </div>
+ </div>
+ </header>
+ <nav id="Navigation">
+ <div class="container">
+ <ul class="Menu">
+ <li>
+ <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/">Learn &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavGeocaching101" accesskey="i" title="Geocaching 101" href="../guide/">Geocaching 101</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGeocaching2Minutes" title="Geocaching in 2 Minutes" href="../videos/default.aspx#cat=PL939C3CBDC2F2F385&amp;vid=1YTqitVK-Ts">Geocaching in 2 Minutes</a></li>
+ </ul>
+ </li>
-
-
-
- </div>
-
- <div class="NavContainer span-24 last">
- <nav id="Navigation">
-
- <ul class="Menu">
+ <li id="ctl00_liNavProfile">
+ <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" href="../my/">Your Profile &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavQuickView" accesskey="p" title="Quick View" href="../my/">Quick View</a></li>
+ <li>
+ <a id="ctl00_hlSubNavLists" accesskey="q" title="Lists" href="../my/lists.aspx">Lists</a></li>
+ <li class="ExtraText">
+ <a id="ctl00_hlSubNavGeocaches" accesskey="m" title="Geocaches" class="NoRightPadding" href="../my/geocaches.aspx">Geocaches</a>
+ (<a id="ctl00_hlSubNavGeocachesYours" accesskey="y" title="Your Geocaches" class="NoSidePadding" href="../my/owned.aspx">Yours</a>)</li>
+ <li class="ExtraText">
+ <a id="ctl00_hlSubNavProfileTrackables" title="Trackables" class="NoRightPadding" href="../my/travelbugs.aspx">Trackables</a>
+ (<a id="ctl00_hlSubNavTrackablesYours" accesskey="8" title="Your Trackables" class="NoSidePadding" href="../track/search.aspx?o=1&amp;uid=31892678-1117-46eb-aa3b-191c20bd6607">Yours</a>)</li>
+ <li>
+ <a id="ctl00_hlSubNavPocketQueries" accesskey="9" title="Pocket Queries" href="../pocket/">Pocket Queries</a></li>
+ <li>
+ <a id="ctl00_hlSubNavFieldNotes" accesskey="0" title="Field Notes" href="../my/fieldnotes.aspx">Field Notes</a></li>
+ <li>
+ <a id="ctl00_hlSubNavAccount" accesskey="a" title="Account Details" href="../account/">Account Details</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavPlay" accesskey="3" title="Play" href="../seek/">Play &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavHide" accesskey="d" title="Hide &amp; Seek a Cache" href="../seek/">Hide & Seek a Cache</a></li>
<li>
- <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/">Learn &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavGeocaching101" accesskey="i" title="Geocaching 101" href="../guide/">Geocaching 101</a></li>
- <li>
- <a id="ctl00_hlSubNavGeocaching2Minutes" title="Geocaching in 2 Minutes" href="../videos/#cat=cat:newbies&amp;vid=-4VFeYZTTYs">Geocaching in 2 Minutes</a></li>
- </ul>
+ <a id="ctl00_hlSubNavLogCache" title="Log a Cache" href="../my/recentlyviewedcaches.aspx">Log a Cache</a></li>
+ <li>
+ <a id="ctl00_hlSubNavMap" accesskey="/" title="View Geocache Map" href="../map/">View Geocache Map</a></li>
+ <li>
+ <a id="ctl00_hlSubNavTrackables" accesskey="e" title="Find Trackables" href="../track/">Find Trackables</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGeoTours" title="GeoTours" href="../adventures/geotours">GeoTours</a>
</li>
- <li id="ctl00_liNavJoin">
- <a id="ctl00_hlNavJoin" accesskey="2" title="Join" href="../membership/register.aspx?type=basic">Join</a></li>
+ <li>
+ <a id="ctl00_hlSubNavHelpCenter" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/">Community &#9660;</a>
+ <ul class="SubMenu">
<li>
- <a id="ctl00_hlNavPlay" accesskey="3" title="Play" href="./">Play &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavHide" accesskey="d" title="Hide &amp; Seek a Cache" href="./">Hide & Seek a Cache</a></li>
- <li>
- </li>
- <li><a id="ctl00_hlSubNavMap" accesskey="/" title="View Geocache Map" href="../map/">View Geocache Map</a></li>
- <li>
- <a id="ctl00_hlSubNavTrackables" accesskey="e" title="Find Trackables" href="../track/">Find Trackables</a></li>
- <li>
- <a id="ctl00_hlSubNavHelpCenter" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
- </ul>
+ <a id="ctl00_hlSubNavTellaFriend" accesskey="-" title="Tell a Friend" href="../account/SendReferral.aspx">Tell a Friend</a>
</li>
+
<li>
- <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/">Community &#9660;</a>
- <ul class="SubMenu">
-
- <li>
- <a id="ctl00_hlSubNavTellaFriend" accesskey="-" title="Tell a Friend" href="../account/SendReferral.aspx">Tell a Friend</a></li>
-
- <li><a id="ctl00_hlSubNavVolunteers" accesskey="+" title="Volunteers" href="../volunteers/">Volunteers</a></li>
- <li>
- <a id="ctl00_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/">Local Organizations</a></li>
- <li>
- <a id="ctl00_hlSubNavDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
- <li>
- <a id="ctl00_hlSubNavBlog" accesskey="b" title="Blog" rel="external" href="http://blog.geocaching.com/">Blog</a></li>
- <li>
- <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavVolunteers" accesskey="+" title="Volunteers" href="../volunteers/">Volunteers</a></li>
+ <li>
+ <a id="ctl00_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/">Local Organizations</a></li>
<li>
- <a id="ctl00_hlNavShop" accesskey="4" title="Shop" href="http://shop.geocaching.com/">Shop &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavShop" accesskey="j" title="Shop Geocaching" rel="external" href="http://shop.geocaching.com/">Shop Geocaching</a></li>
- <li>
- <a id="ctl00_hlSubNavIntlRetailers" title="International Retailers" rel="external" href="http://shop.geocaching.com/default/international-retailers/">International Retailers</a></li>
- <li>
- <a id="ctl00_hlSubNavGPSReviews" accesskey="w" title="GPS Reviews" href="/reviews/gps">GPS Reviews</a></li>
- <li>
- <a id="ctl00_hlSubNavGPSGuide" accesskey="k" title="Guide to Buying a GPS Device" href="../about/buying.aspx">Guide to Buying a GPS Device</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
<li>
- <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavTravel" title="Travel and GeoTourism" href="../travel/">Travel and GeoTourism</a></li>
- <li>
- <a id="ctl00_hlSubNavBrandedPromotions" title="Branded Promotions" href="../brandedpromotions/">Branded Promotions</a></li>
- <li>
- <a id="ctl00_hlSubNavEducation" title="Geocaching and Education" href="../education/">Geocaching and Education</a></li>
- <li>
- <a id="ctl00_hlSubNavAdvertisingWithUs" title="Advertising with Us" href="../about/advertising.aspx">Advertising with Us</a></li>
- <li>
- <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/apidevelopers/">API Program</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavBlog" accesskey="b" title="Blog" rel="external" href="http://blog.geocaching.com/">Blog</a></li>
<li>
- <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
+ <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavShop" accesskey="4" title="Shop" href="http://shop.geocaching.com/?utm_source=Geocaching&amp;utm_medium=Links&amp;utm_content=Header&amp;utm_campaign=Geocaching+Links">Shop &#9660;</a>
+ <ul class="SubMenu">
<li>
- <a id="ctl00_hlNavFollowUs" title="Follow Us" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts">Follow Us &#9660;</a>
- <ul class="SubMenu NavSocialMedia">
- <li>
- <a id="ctl00_hlSubNavFacebook" title="Facebook" class="SubNavFacebook" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts">Facebook</a></li>
- <li>
- <a id="ctl00_hlSubNavTwitter" title="Twitter" class="SubNavTwitter" href="http://twitter.com/GoGeocaching">Twitter</a></li>
- <li>
- <a id="ctl00_hlSubNavFlickr" title="Flickr" class="SubNavFlickr" href="http://www.flickr.com/photos/geocaching_com/">Flickr</a></li>
- <li>
- <a id="ctl00_hlSubNavYouTube" title="YouTube" class="SubNavYouTube" href="http://www.youtube.com/user/GoGeocaching">YouTube</a></li>
- </ul>
- </li>
+ <a id="ctl00_hlSubNavShop" accesskey="j" title="Shop Geocaching" rel="external" href="http://shop.geocaching.com/?utm_source=Geocaching&amp;utm_medium=Links&amp;utm_content=Header&amp;utm_campaign=Geocaching+Links">Shop Geocaching</a></li>
+ <li>
+ <a id="ctl00_hlSubNavIntlRetailers" title="International Retailers" rel="external" href="http://shop.geocaching.com/default/international-retailers/">International Retailers</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGPSReviews" accesskey="w" title="GPS Reviews" href="/reviews/gps">GPS Reviews</a></li>
+ <li>
+ <a id="ctl00_hlSubNavGPSGuide" accesskey="k" title="Guide to Buying a GPS Device" href="../about/buying.aspx">Guide to Buying a GPS Device</a></li>
</ul>
-
- </nav>
- <div class="LanguageSelector">
-
+ </li>
+ <li>
+ <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
+ <ul class="SubMenu">
+ <li>
+ <a id="ctl00_hlSubNavTravel" title="Travel and GeoTourism" href="../travel/">Travel and GeoTourism</a></li>
+ <li>
+ <a id="ctl00_hlSubNavBrandedPromotions" title="Branded Promotions" href="../brandedpromotions/">Branded Promotions</a></li>
+ <li>
+ <a id="ctl00_hlSubNavEducation" title="Geocaching and Education" href="../education/">Geocaching and Education</a></li>
+ <li>
+ <a id="ctl00_hlSubNavAdvertisingWithUs" title="Advertising with Us" href="../about/advertising.aspx">Advertising with Us</a></li>
+ <li>
+ <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/apidevelopers/">API Program</a></li>
+ </ul>
+ </li>
+ <li>
+ <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
+ <li>
+ <a id="ctl00_hlNavFollowUs" title="Follow Us" href="http://www.facebook.com/geocaching">Follow Us &#9660;</a>
+ <ul class="SubMenu NavSocialMedia">
+ <li>
+ <a id="ctl00_hlSubNavFacebook" title="Facebook" class="SubNavFacebook" href="http://www.facebook.com/geocaching">Facebook</a></li>
+ <li>
+ <a id="ctl00_hlSubNavYouTube" title="YouTube" class="SubNavYouTube" href="http://www.youtube.com/user/GoGeocaching">YouTube</a></li>
+ <li>
+ <a id="ctl00_hlSubNavInstagram" title="Instagram" class="SubNavInstagram" href="http://instagram.com/gogeocaching">Instagram</a></li>
+ <li>
+ <a id="ctl00_hlSubNavTwitter" title="Twitter" class="SubNavTwitter" href="http://twitter.com/GoGeocaching">Twitter</a></li>
+ </ul>
+ </li>
+ </ul>
+ <div class="LanguageSelector">
+
<div class="LocaleText">
@@ -496,27 +293,35 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl04_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl04$uxLocaleItem&#39;,&#39;&#39;)">Čeština</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Dansk</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Ελληνικά</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Latviešu</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl16_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl16$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl17_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl17$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl18_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl18$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+
+ <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl19_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleListTop$uxLocaleList$ctl19$uxLocaleItem&#39;,&#39;&#39;)">日本語</a></li>
</ul>
@@ -543,31 +348,20 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
});
});
</script>
- </div>
</div>
-
-
</div>
-
-
- </header>
+ </nav>
<section id="Content">
-
<div class="container">
-
<div id="ctl00_divBreadcrumbs" class="BreadcrumbWidget span-24 last">
-
<p>
<span id="ctl00_Breadcrumbs"><span><a title="Geocaching - The Official Global GPS Cache Hunt Site" href="/">Geocaching</a></span><span> &gt; </span><span><a title="Hide and Seek A Geocache" href="/seek/default.aspx">Hide and Seek A Geocache</a></span><span> &gt; </span><span>Geocache Details</span></span>
</p>
-
</div>
-
<div id="ctl00_divContentMain" class="span-24 last">
-
<div id="ctl00_ContentBody_CoordInfoLinkControl1_uxCoordInfoLinkPanel" class="CoordInfoLinkWidget">
@@ -622,173 +416,163 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</p>
<h2 class="NoBottomSpacing">
- <span id="ctl00_ContentBody_CacheName">Needle in a Haystack</span></h2>
+ <span id="ctl00_ContentBody_CacheName">Needle in a Haystack</span>
+ </h2>
<div class="minorCacheDetails Clear">
<div id="ctl00_ContentBody_mcd1">
- A cache by <a href="http://www.geocaching.com/profile/?guid=f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5&wid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384&ds=2">The North Star</a></div>
+ A cache by <a href="http://www.geocaching.com/profile/?guid=f3d7b7c8-8698-4e21-a6ad-24e148f5c6a5&wid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384&ds=2">The North Star</a>
+ </div>
<div id="ctl00_ContentBody_mcd2">
- Hidden:
- 12/21/2012
+ Hidden
+ :
+ 2012-12-21
+
+ </div>
+ <div>
</div>
- <div>In California, United States</div>
</div>
</div>
- <div id="ctl00_ContentBody_diffTerr" class="CacheStarLabels span-3 BottomSpacing">
-
- Difficulty:
- <br />
- Terrain:
+ <div id="ctl00_ContentBody_diffTerr" class="CacheStarLabels span-6 BottomSpacing">
+
+ <dl>
+ <dt>
+ Difficulty:</dt>
+ <dd>
+ <span id="ctl00_ContentBody_uxLegendScale" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars3.gif" alt="3 out of 5" /></span>
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ Terrain:</dt>
+ <dd>
+ <span id="ctl00_ContentBody_Localize12" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars1_5.gif" alt="1.5 out of 5" /></span>
+ </dd>
+ </dl>
</div>
-
- <div id="ctl00_ContentBody_diffTerrStars" class="CacheStarImgs span-2">
+ <div id="ctl00_ContentBody_size" class="CacheSize span-5">
- <span id="ctl00_ContentBody_uxLegendScale" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars3.gif" alt="3 out of 5" /></span>
- <span id="ctl00_ContentBody_Localize12" title="(1 is easiest, 5 is hardest)"><img src="http://www.geocaching.com/images/stars/stars1_5.gif" alt="1.5 out of 5" /></span>
+ <p class="AlignCenter">
+ Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/other.gif" alt="Size: other" title="Size: other" />&nbsp<small>(other)</small></span>
+ </p>
</div>
-
- <div id="ctl00_ContentBody_size" class="CacheSize span-9">
-
- <p style="text-align: center;">
- Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/other.gif" alt="Size: other" title="Size: other" />&nbsp<small>(other)</small></span></p>
+ <div class="span-6 right last">
- </div>
-
-
-
- <div class="span-3 right last">
+ <div class="favorite right">
+ <a id="uxFavContainerLink" href="javascript:void(0);">
+ <div class="favorite-container"><!-- TODO! -->
+ <span class="favorite-value">
+ 7
+ </span>
+ Favorites
+ </div>
+ </a>
+ <div class="favorite-dropdown">
+
+ <ul>
+ <li>
+ <img id="imgFavoriteScore" src="/images/loading3.gif" width="20" height="20" alt="Loading" title="Loading"><span id="uxFavoriteScore">&nbsp;</span>
+ </li>
+ <li>
+ <a id="hlViewWhoFavorited" title="View Who Favorited this Cache" href="/seek/cache_favorited.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384">View Who Favorited this Cache</a>
+ </li>
+ <li>
+ <a id="hlAboutFavorites" title="About Favorites" href="http://support.groundspeak.com/index.php?pg=kb.page&amp;id=287" target="_blank">About Favorites</a>
+ </li>
+ </ul>
+ </div>
+ </div>
</div>
-
- <div id="lus_container" class="lus-container Clear">
- <div class="lus-header">
- <span>
- Join now to view geocache location details. It's free!
- </span>
- <span class="lus-signup">
- <a id="ctl00_ContentBody_locdSignUpLink" title="Sign up" href="/membership/register.aspx?type=basic">Sign up</a><a id="hlFBLogin" title="Log in with Facebook" class="btnFacebookLogin" href="/api/beginfacebook"><span id="ctl00_ContentBody_locFBLogin">Login</span></a>
- </span>
- </div>
- <div style="position: relative;height:257px;">
- <div class="lus-video">
- <div class="lus-textblock">
- <div class="play-control AlignCenter"><a id="ctl00_ContentBody_hlPlayArrow" title="Play Video">▶</a></div>
- <h4>
- Watch
- </h4>
- How Geocaching Works
- </div>
- </div>
- <div class="lus-image">
- <img src="/images/seek/locdp_cityscape.jpg" width="380" height="257" />
- </div>
- </div>
- <div class="lus-footer">
- <span class="AlignRight">
- <span>Looking for a different adventure?</span>
- </span>
- <span class="lus-findacache NoWrap">
- <input type="submit" name="ctl00$ContentBody$findacache" value="Find a Cache Near Me" id="findacache" title="Find a Cache Near Me" />
- </span>
- </div>
- </div>
- <script type="text/javascript">
-
- $("#lus_container")
- .on("click", "div.lus-video", function () {
- var $this = $(this),
- h = $this.height(),
- w = $this.width();
-
- $("div.lus-image").hide('slide', { direction: 'right' }, 500, function () {
- var vhtml = ["<iframe width=\"" + w + "\" height=\"" + h + "\" src=\"http://www.youtube.com/embed/-4VFeYZTTYs?rel=0&autoplay=1\" frameborder=\"0\" allowfullscreen></iframe>"].join('');
- $this.replaceWith(vhtml);
- });
- return false;
- });
-
- $("#findacache").click(function (e) {
- e.preventDefault();
- $("#txtFindCache").text("Searching...");
-
- navigator.geolocation.getCurrentPosition(
- function (position) { // Browser success
- $(window.location).attr('href', '/seek/nearest.aspx?origin_lat=' + position.coords.latitude + '&origin_long=' + position.coords.longitude + '&dist=100');
- }, function (error) { // Browser failure, fallback to geocode.
- $.ajax({
- url: '/api/geocode?cmd=whoami',
- dataType: 'json',
- async: false,
- success: function (response) {
- if (response.status == 'success') { // Geocode success
- $(window.location).attr('href', '/seek/nearest.aspx?origin_lat=' + response.data.lat + '&origin_long=' + response.data.lng + '&dist=100');
- } else { // Total failure, just go to the search page.
- $(window.location).attr('href', '/seek/nearest.aspx');
- }
- }
- });
- },
- {
- timeout: 3000 // Wait on the browser for a max of 3 seconds.
- });
- return false;
- });
-
- // Geolocation emulator
- (function (geolocation) {
-
- if (geolocation) return;
-
- var cache;
-
- geolocation = window.navigator.geolocation = {};
- geolocation.getCurrentPosition = function (callback) {
-
- if (cache) callback(cache);
-
- $.getScript('//www.google.com/jsapi', function () {
-
- cache = {
- coords: {
- "latitude": google.loader.ClientLocation.latitude,
- "longitude": google.loader.ClientLocation.longitude
- }
- };
-
- callback(cache);
- });
-
- };
+ <p class="Clear">
- geolocation.watchPosition = geolocation.getCurrentPosition;
- })(navigator.geolocation);
-
+
- </script>
-
- <p class="Clear">
- </p>
-
-
+ </p>
+ <div id="ctl00_ContentBody_CacheInformationTable" class="CacheInformationTable">
+ <div class="LocationData FloatContainer">
+ <div class="span-9">
+ <p class="NoBottomSpacing">
+ <a href="#" class="edit-cache-coordinates" id="uxLatLonLink" title="Correct these coordinates">
+ <strong>
+ <span id="uxLatLon">N 37° 21.540 W 122° 01.937</span></strong>
+ </a>
+ <br />
+ <span id="ctl00_ContentBody_LocationSubPanel">
+ UTM: 10S E 585698 N 4135137<br />
+ </span>
+ <a id="ctl00_ContentBody_lnkConversions" title="Other Conversions" href="/wpt/?lat=37.359&amp;lon=-122.032283&amp;detail=1" target="_blank">Other Conversions</a>
+ </p>
+ </div>
+ <div class="span-7 last AlignRight">
+ <span id="ctl00_ContentBody_Location">In <a href="/map/default.aspx?lat=37.359&lng=-122.032283&z=16" title="View Map">California, United States</a></span><br />
+ <span id="lblDistFromHome"><img src="/images/icons/compass/NW.gif" alt="NW" style="vertical-align:text-bottom" />&nbsp;NW 9289.8&nbsp;km from your home location</span>
+ </div>
+ </div>
+ <div class="DownloadLinks">
+ <dl id="Print">
+ <dt class="label">
+ <span id="ctl00_ContentBody_uxPrintHeader">Print</span>:
+ </dt>
+ <dd>
+ <a id="ctl00_ContentBody_lnkPrintFriendly" href="../seek/cdpf.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384" target="_blank">No Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintFriendly5Logs" href="../seek/cdpf.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384&amp;lc=5" target="_blank">5 Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintFriendly10Logs" href="../seek/cdpf.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384&amp;lc=10" target="_blank">10 Logs</a>
+ <a id="ctl00_ContentBody_lnkPrintDirectionsSimple" class="DrivingDirections" href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=48.861002,9.186577 (Home Location)&amp;daddr=37.359,-122.032283(Needle+in+a+Haystack)" target="_blank">Driving Directions</a>
+ </dd>
+ </dl>
+ <dl id="ctl00_ContentBody_uxPrintPDFSection" style="display: none;">
+ <dt>
+ PDF:
+ </dt>
+ <dd>
+ <a id="ctl00_ContentBody_lnkPDFPrintNoLogs" href="javascript:pl(0);">No Logs</a>
+ <a id="ctl00_ContentBody_lnkPDFPrint5Logs" href="javascript:pl(5);">5 Logs</a>
+ <a id="ctl00_ContentBody_lnkPDFPrint10Logs" href="javascript:pl(10);">10 Logs</a>
+ </dd>
+ </dl>
+ <dl id="Download">
+ <dt class="label">
+ <span id="ctl00_ContentBody_uxDownloadLabel">Download</span>:
+ </dt>
+ <dd>
+ <a id="ctl00_ContentBody_lnkDownloads" title="Read about waypoint downloads" href="/software/default.aspx">Read about waypoint downloads</a>
+ </dd>
+ <dt></dt>
+ <dd>
+ <input type="submit" name="ctl00$ContentBody$btnLocDL" value="LOC waypoint file" id="ctl00_ContentBody_btnLocDL" /><input type="submit" name="ctl00$ContentBody$btnGPXDL" value="GPX file" id="ctl00_ContentBody_btnGPXDL" /><input type="submit" name="ctl00$ContentBody$btnSendToGPS" value="Send to My GPS" onclick="s2gps(&#39;98e6f5a9-cf2d-42f8-9cdf-a3f53436f384&#39;);return false;" id="ctl00_ContentBody_btnSendToGPS" /><input type="submit" name="ctl00$ContentBody$btnSendToPhone" value="Send to My Phone" onclick="s2phone(&#39;GC431F2&#39;);return false;" id="ctl00_ContentBody_btnSendToPhone" />
+ </dd>
+ </dl>
+ </div>
+ </div>
- <fieldset class="DisclaimerWidget">
- <legend class="warning">
+ <div class="Note Disclaimer">
+ <strong>
Please note
- </legend>
- <p class="NoBottomSpacing">
- Use of geocaching.com services is subject to the terms and conditions <a href="/about/disclaimer.aspx" title="Read Our Disclaimer">in our disclaimer</a>.
- </p>
- </fieldset>
+ </strong>
+ Use of geocaching.com services is subject to the terms and conditions <a href="/about/disclaimer.aspx" title="Read Our Disclaimer">in our disclaimer</a>.
+ </div>
+ <div class="Note PersonalCacheNote">
+ <strong>
+ Personal Cache Note
+ </strong>
+ <img src="/images/icons/16/help.png" id="pcn_help" class="CacheNoteHelpImg" />
+ <span id="cache_note">
+
+ </span>
+ </div>
+
+ <h3 class="CacheDescriptionHeader">Geocache Description:</h3>
<div class="UserSuppliedContent">
<span id="ctl00_ContentBody_ShortDescription">
@@ -807,7 +591,7 @@ Cache is "sign" only. Don't forget to bring your pen.<br />
<br />
Enjoy!<br />
<br />
-You can validate your puzzle solution with <a href="http://certitude.comxa.com/certitude.php?wp=GC431F2">Certitude</a> or see <a href="http://certitude.comxa.com/certified.php?wp=GC431F2">who solved</a> this puzzle.<br />
+You can validate your puzzle solution with <a href="http://www.certitudes.org/certitude?wp=GC431F2">Certitude</a>.<br />
<br />
Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target="_blank" rel="nofollow">fmoraes</a> on FTS and <a href="http://www.geocaching.com/profile/?u=TeamOttlet" target="_blank" rel="nofollow">TeamOttlet</a> on FTF. That's two The North Star FTF's in a row!</span></span></p>
</div></span>
@@ -821,10 +605,8 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<p id="ctl00_ContentBody_hints">
<strong>
Additional Hints</strong>
- (<a id="ctl00_ContentBody_lnkDH" title="Decrypt" onclick="return false;" href="#">No hints available.</a>)</p>
- <div id="div_hint" class="span-8 WrapFix">
- </div>
- <div id='dk' style="display: block;" class="span-9 last">
+ (<a id="ctl00_ContentBody_lnkDH" title="Decrypt" onclick="return false;" href="../seek/#">No hints available.</a>) </p><div id="div_hint" class="span-8 WrapFix">
+ </div><div id='dk' style="display: block;" class="span-9 last">
<span id="ctl00_ContentBody_EncryptionKey" class="right"></span>
</div>
<div class="Clear">
@@ -836,34 +618,31 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<div class="span-6 prepend-1 last">
-<div class="CacheDetailNavigationWidget NoPrint">
-
- <h3 class="WidgetHeader">
- Navigation
- </h3>
- <div class="WidgetBody">
-
- <ul class="CacheDetailsNavLinks">
- <li><a href="https://www.geocaching.com/login/?RESET=Y&redir=%2fseek%2flog.aspx%3fID%3d3373765" class="lnk"><img src="/images/icons/16/write_log_locked.png" />&nbsp;<span>Log in to log your visit</span></a></li>
-<li><a href="https://www.geocaching.com/login/?RESET=Y&redir=%2fmy%2fwatchlist.aspx%3fw%3d3373765" class="lnk"><img src="/images/icons/16/watch_locked.png" />&nbsp;<span>Log in to watch this listing</span></a></li>
-
- </ul>
-
- </div>
+<div class="CacheDetailNavigation NoPrint">
+ <a href="/seek/log.aspx?ID=3373765&lcn=1" id="ctl00_ContentBody_GeoNav_logButton" class="Button LogVisit">Log your visit</a>
+ <ul>
+ <li><a href="/seek/gallery.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384">View Gallery</a> (0)</li>
+ <li><a href="/my/watchlist.aspx?w=3373765">Watch</a> (2)</li>
+ <li><a href="/bookmarks/mark.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384&amp;WptTypeID=8">Bookmark</a></li>
+ <li><a href="/bookmarks/ignore.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384&amp;WptTypeID=8">Ignore</a></li>
+ </ul>
</div>
+ <div id="map_preview_canvas" class="TopSpacing" style="width: 228px; height: 175px;">
+ </div>
<div id="ctl00_ContentBody_detailWidget" class="CacheDetailNavigationWidget TopSpacing BottomSpacing">
<h3 class="WidgetHeader">
- Attributes</h3>
+ Attributes
+ </h3>
<div class="WidgetBody">
<img src="/images/attributes/bicycles-yes.gif" alt="bikes allowed" title="bikes allowed" width="30" height="30" /> <img src="/images/attributes/available-yes.gif" alt="available 24-7" title="available 24-7" width="30" height="30" /> <img src="/images/attributes/food-yes.gif" alt="food nearby" title="food nearby" width="30" height="30" /> <img src="/images/attributes/stealth-yes.gif" alt="stealth required" title="stealth required" width="30" height="30" /> <img src="/images/attributes/parking-yes.gif" alt="parking available" title="parking available" width="30" height="30" /> <img src="/images/attributes/onehour-yes.gif" alt="takes less than 1 hour" title="takes less than 1 hour" width="30" height="30" /> <img src="/images/attributes/kids-yes.gif" alt="kid friendly" title="kid friendly" width="30" height="30" /> <img src="/images/attributes/dogs-yes.gif" alt="dogs allowed" title="dogs allowed" width="30" height="30" /> <img src="/images/attributes/attribute-blank.gif" alt="blank" title="blank" width="30" height="30" /> <img src="/images/attributes/attribute-blank.gif" alt="blank" title="blank" width="30" height="30" /> <img src="/images/attributes/attribute-blank.gif" alt="blank" title="blank" width="30" height="30" /> <img src="/images/attributes/attribute-blank.gif" alt="blank" title="blank" width="30" height="30" /> <p class="NoBottomSpacing"><small><a href="/about/icons.aspx" title="What are Attributes?">What are Attributes?</a></small></p>
</div>
@@ -871,24 +650,27 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
</div>
- <div id="ctl00_ContentBody_uxBanManWidget" class="CacheDetailPageAds clear">
+ <div id="ctl00_ContentBody_uxBanManWidget" class="InlinePageAds">
- <div id="ctl00_ContentBody_divContentSide">
-
- <p class="NoBottomSpacing">
- <span id="ctl00_ContentBody_ADModules_09"><iframe type="iframe" src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&SiteID=1&X='0d1ee02cdbf3498284b0b44ef7d7aeef'" width="120" height="240" Marginwidth="0" Marginheight="0" Hspace="0" Vspace="0" Frameborder="0" Scrolling="no" style="width:120px;Height:240px;"><a href="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Click&;Mode=HTML&SiteID=1" target="_blank"><img src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&Mode=HTML&SiteID=1" width="120" height="240" border="0" alt="" /></a></iframe></span>
- </p>
- <p class="AlignCenter">
- <small><a href="../about/advertising.aspx" id="ctl00_ContentBody_advertisingWithUs" title="Advertising with Us">Advertising with Us</a></small></p>
-
- </div>
-
+
+ <script type='text/javascript'>
+googletag.cmd.push(function() {{
+googletag.defineSlot('/1011121/cache_details_pg_120x240', [120, 240], 'div_f42c77d9-c68d-4e5b-aaee-f2d42d71a1de').addService(googletag.pubads());
+googletag.pubads().enableSingleRequest();
+googletag.enableServices();
+}});
+</script>
+<div id='div_f42c77d9-c68d-4e5b-aaee-f2d42d71a1de'>
+<script type='text/javascript'>
+googletag.cmd.push(function() { googletag.display('div_f42c77d9-c68d-4e5b-aaee-f2d42d71a1de'); });
+</script>
</div>
-
-
-
- <div class="GoogleAds AlignCenter BottomSpacing">
- </div>
+
+ <p>
+ <small><a href="../about/advertising.aspx" id="ctl00_ContentBody_advertisingWithUs" title="Advertising with Us">Advertising with Us</a></small> </p>
+</div><div class="GoogleAds AlignCenter BottomSpacing">
+
+ </div>
<div class="clear">
</div>
@@ -927,24 +709,10 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<div class="WidgetBody">
- <ul>
-
- <li style='padding: .5em;' class=''>
- <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=9fd39fb8-9502-47b4-ae08-86ce236fc661">
- fmoraes&#39; solved but far</a><br />
- <small><em>
- by
- <a href="http://www.geocaching.com/profile/?guid=440cf61b-dcf3-4220-a877-ce312f103921">
- fmoraes</a> </em></small>
- </li>
+ <ul class="BookmarkList">
- <li style='padding: .5em;' class='AlternatingRow'>
- <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=da19f503-8df2-4a36-aa98-5d4179f58550">
- Solved Puzzles</a><br />
- <small><em>
- by
- <a href="http://www.geocaching.com/profile/?guid=371d312e-e828-4da8-8021-651422a44621">
- w00fel</a> </em></small>
+ <li class=''>
+ <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=9fd39fb8-9502-47b4-ae08-86ce236fc661">fmoraes&#39; solved but far</a><br /> by <a href="http://www.geocaching.com/profile/?guid=440cf61b-dcf3-4220-a877-ce312f103921">fmoraes</a>
</li>
</ul>
@@ -968,13 +736,36 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<div id="ctl00_ContentBody_bottomSection" class="span-24 last">
<p>
- &nbsp;
- <br />
+ &nbsp; <br />
- </p>
-
+ <p>
+ <div id="uxlrgMap" class="FloatRight TopSpacing">
+
+ <div class="PageBreakBefore">
+
+ </div>
+ <div class="CDMapWidget">
+ <p class="WidgetHeader NoBottomSpacing">
+ <a id="ctl00_ContentBody_uxViewLargerMap" title="View Larger Map" href="/map/default.aspx?lat=37.359&amp;lng=-122.032283" target="_blank">View Larger Map</a>
+ </p>
+
+ <div id="map_canvas" style="width: 325px; height: 325px;">
+ </div>
+ <p class="WidgetFooter">
+ <a id="ctl00_ContentBody_uxNotesAboutPrinting" href="#mapPrintingNotes" class="NoPrint">Notes about Printing Maps</a>
+ </p>
+ </div>
+ <div style="display: none;">
+ <div id="mapPrintingNotes">
+ To print the map in Firefox and Opera, enable background images in the print dialog.
+ <a href="#dlgMapPrintWarning" class="dialog" onclick="$.fancybox.close()">
+ Close
+ </a>
+ </div>
+ </div>
+</div>
<p class="NoPrint">
<span id="ctl00_ContentBody_uxFindLinksHeader" style="font-weight:bold;">Find...</span>
@@ -983,39 +774,51 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
</p>
<ul class="NoPrint">
<li>
- ...other caches&nbsp;
- <a id="ctl00_ContentBody_uxFindLinksHiddenByThisUser" href="/seek/nearest.aspx?u=The+North+Star">hidden</a>&nbsp;
- or&nbsp;
- <a id="ctl00_ContentBody_uxFindLinksFoundByThisUser" href="/seek/nearest.aspx?ul=The+North+Star">found</a>&nbsp;
- by this user
+ ...other caches <a href="/seek/nearest.aspx?u=The+North+Star">hidden</a> or <a href="/seek/nearest.aspx?ul=The+North+Star">found</a> by this user
</li>
+ <li>
+ ...nearby <a href="/seek/nearest.aspx?tx=40861821-1835-4e11-b666-8d41064d03fe&lat=37.359000&lng=-122.032283">caches of this type</a>, <a href="/seek/nearest.aspx?tx=40861821-1835-4e11-b666-8d41064d03fe&lat=37.359000&lng=-122.032283&f=1">that I haven't found</a>
+ </li>
+ <li>
+ ...all nearby <a href="/seek/nearest.aspx?lat=37.359000&lng=-122.032283">caches</a>, <a href="/seek/nearest.aspx?lat=37.359000&lng=-122.032283&f=1">that I haven't found</a>
+ </li>
+ <li>
+ ...all nearby <a href="http://www.waymarking.com/directory.aspx?f=1&lat=37.359000&lon=-122.032283">waymarks on Waymarking.com</a>
+ </li>
+
+
+ <li>
+ ...all nearby <a href="http://www.geocaching.com/mark/nearest.aspx?lat=37.359000&lon=-122.032283">benchmarks</a>
+ </li>
- <li>
- ...nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksHotels" href="/reviews/hotels-in-Sunnyvale,CA,US">Hotels</a>
- </li>
</ul>
<p class="NoPrint">
-
+ <span id="ctl00_ContentBody_uxMapLinkHeader" style="font-weight:bold;">For online maps...</span>
</p>
<span class="NoPrint">
+<ul>
+ <span id="ctl00_ContentBody_MapLinks_MapLinks"><li><a href="http://www.geocaching.com/map/default.aspx?lat=37.359&lng=-122.03228" target="_blank">Geocaching.com Map</a></li><li><a href="http://www.mytopo.com/maps.cfm?lat=37.359&lon=-122.03228&pid=groundspeak" target="_blank">MyTopo Maps</a></li><li><a href="http://maps.google.com/maps?q=N+37%c2%b0+21.540+W+122%c2%b0+01.937+(GC431F2)+" target="_blank">Google Maps</a></li><li><a href="http://www.mapquest.com/maps/map.adp?searchtype=address&formtype=latlong&latlongtype=decimal&latitude=37.359&longitude=-122.03228&zoom=10" target="_blank">MapQuest</a></li><li><a href="http://www.bing.com/maps/default.aspx?v=2&lvl=14&sp=point.37.359_-122.03228_GC431F2" target="_blank">Bing Maps</a></li><li><a href="http://maps.yahoo.com/#lat=37.359&lon=-122.03228&zoom=16&q=37.359,-122.03228&conf=1&start=1&mvt=m&trf=0" target="_blank">Yahoo Maps</a></li><li><a href="http://msrmaps.com/image.aspx?Lon=-122.03228&Lat=37.359&w=1&ref=G|-122.03228,37.359" target="_blank">MSR Maps (Formerly Terraserver)</a></li><li><a href="http://www.opencyclemap.org/?zoom=12&lat=37.359&lon=-122.03228" target="_blank">OpenCycleMap</a></li><li><a href="http://www.openstreetmap.org/?mlat=37.359&mlon=-122.03228&zoom=12" target="_blank">OpenStreetMap</a></li></span>
+</ul>
+
</span>
- <p class="NoPrint">
+ <ul class="CachePageImages NoPrint">
- </p>
+ </ul>
<div class="InformationWidget Clear">
<h3>
- 2 Logged Visits</h3>
+ 35 Logged Visits
+ </h3>
<div class="EncryptDecrypt">
<a href="#" class="decrypt-link">
Decrypt
</a>
</div>
- <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
+ <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
<p class="HalfLeft">
- <a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384">View Logbook</a>
+ <a id="ctl00_ContentBody_uxLogbookLink" href="../seek/cache_logbook.aspx?guid=98e6f5a9-cf2d-42f8-9cdf-a3f53436f384">View Logbook</a>
</p>
<p class="NoBottomSpacing AlignRight">
<span class="Warning">**Warning!</span> <a href="/about/glossary.aspx#spoiler" title="Spoilers">Spoilers</a> may be included in the descriptions or links.
@@ -1044,762 +847,130 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
</div>
<p>
<small>
- Current Time: <time datetime="2012-12-21T10:52:24Z">12/21/2012 10:52:24 AM (UTC-08:00) Pacific Time (US & Canada) (6:52 PM GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-12-21T16:59:00Z">2012-12-21T16:59:00Z</time> on 12/21/2012 8:59:00 AM (UTC-08:00) Pacific Time (US & Canada) (4:59 PM GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2013-09-15T09:47:53Z">09/15/2013 09:47:53 Pacific Daylight Time (16:47 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-09-03T19:02:37Z">2013-09-03T19:02:37Z</time> on 09/03/2013 12:02:37 Pacific Daylight Time (19:02 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
-
-
- </div>
- <script id="tmpl_CacheLogRow" type="text/x-jquery-tmpl">
- <tr class="log-row" data-encoded="${IsEncoded}" >
- <td>
- <div class="FloatLeft LogDisplayLeft" >
- <p class="logOwnerProfileName">
- <strong><a id="143568283" href="/profile/?guid=${AccountGuid}">${UserName}</a></strong></p>
- <p class="logOwnerBadge">
- <img title="${creator.GroupTitle}" src="${creator.GroupImageUrl}">${creator.GroupTitle}
- </p>
- <p class="logOwnerAvatar">
- <a href="/profile/?guid=${AccountGuid}">
- {{if includeAvatars && AvatarImage}}
+ <div id="topScroll" class="TopScroll" style="display: none;">
+ <a href="#Top">&nbsp;</a> </div></div><script id="tmpl_CacheLogRow" type="text/x-jquery-tmpl">
+ <tr class="log-row" data-encoded="${IsEncoded}">
+ <td>
+ <div class="FloatLeft LogDisplayLeft">
+ <p class="logOwnerProfileName">
+ <strong><a id="143568283" href="/profile/?guid=${AccountGuid}">${UserName}</a></strong>
+ </p>
+ <p class="logOwnerBadge">
+ <img title="${creator.GroupTitle}" src="${creator.GroupImageUrl}">${creator.GroupTitle}
+ </p>
+ <p class="logOwnerAvatar">
+ <a href="/profile/?guid=${AccountGuid}">{{if includeAvatars && AvatarImage}}
<img width="48" height="48" src="http://img.geocaching.com/user/avatar/${AvatarImage}">
- {{else includeAvatars }}
+ {{else includeAvatars }}
<img width="48" height="48" src="/images/default_avatar.jpg">
- {{/if}}
- </a></p>
- <p class="logOwnerStats">
-
- {{if GeocacheFindCount > 0 }}
- <img title="Caches Found" src="/images/icons/icon_smile.png"> ${GeocacheFindCount}
{{/if}}
-
- </p>
+ </a>
+ </p>
+ <p class="logOwnerStats">
+ {{if GeocacheFindCount > 0 }}
+ <img title="Caches Found" src="/images/icons/16/found.png">${GeocacheFindCount}
+ {{/if}}
+ </p>
+ </div>
+ <div class="FloatLeft LogDisplayRight">
+ <div class="HalfLeft LogType">
+ <strong>
+ <img title="${LogType}" alt="${LogType}" src="/images/logtypes/${LogTypeImage}">&nbsp;${LogType}</strong>
</div>
- <div class="FloatLeft LogDisplayRight">
- <div class="HalfLeft LogType">
- <strong>
- <img title="${LogType}" alt="${LogType}" src="/images/logtypes/${LogTypeImage}">&nbsp;${LogType}</strong></div>
- <div class="HalfRight AlignRight">
- <span class="minorDetails LogDate">${Visited}</span></div>
- <div class="Clear LogContent">
- {{if LatLonString.length > 0}}
+ <div class="HalfRight AlignRight">
+ <span class="minorDetails LogDate">${Visited}</span>
+ </div>
+ <div class="Clear LogContent">
+ {{if LatLonString.length > 0}}
<strong>${LatLonString}</strong>
- {{/if}}
+ {{/if}}
<p class="LogText">{{html LogText}}</p>
- {{if Images.length > 0}}
+ {{if Images.length > 0}}
<table cellspacing="0" cellpadding="3" class="LogImagesTable">
- {{tmpl(Images) "tmplCacheLogImages"}}
+ {{tmpl(Images) "tmplCacheLogImages"}}
</table>
- {{/if}}
+ {{/if}}
- <div class="AlignRight">
- <small><a title="View Log" href="log.aspx?LUID=${LogGuid}" target="_blank">
- {{if (userInfo.ID==AccountID)}}
+ <div class="AlignRight">
+ <small><a title="View Log" href="/seek/log.aspx?LUID=${LogGuid}" target="_blank">{{if (userInfo.ID==AccountID)}}
View / Edit Log / Images
{{else}}
View Log
{{/if}}
- </a></small>&nbsp;
+ </a></small>&nbsp;
{{if (userInfo.ID==AccountID)}}
- <small><a title="Upload Image" href="upload.aspx?LID=${LogID}" target="_blank">Upload Image</a></small>
- {{/if}}
- </div>
+ <small><a title="Upload Image" href="/seek/upload.aspx?LID=${LogID}" target="_blank">Upload Image</a></small>
+ {{/if}}
</div>
</div>
- </td>
- </tr>
- </script>
- <script id="tmpl_CacheLogImages" type="text/x-jquery-tmpl">
+ </div>
+ </td>
+ </tr>
+ </script><script id="tmpl_CacheLogImages" type="text/x-jquery-tmpl">
<tr>
<td>
+
<a class="tb_images lnk" rel="tb_images[grp${LogID}]" href="http://img.geocaching.com/cache/log/large/${FileName}" data-title="{{tmpl "tmplCacheLogImagesTitle"}}">
<img title="Photo" alt="Photo" src="/images/icons/16/photo.png">
<span>${ $('<div />').text($('<div />').html($item.data.Name).text()).html() }</span>
</a>
</td>
</tr>
+ </script><script id="tmpl_CacheLogImagesTitle" type="text/x-jquery-tmpl">
+ &lt;span class=&quot;LogImgTitle&quot;&gt; ${ $('<div />
+ ').text($('<div />
+ ').text($('<div />
+ ').html($item.data.Name).text()).html()).html() } &nbsp;&lt;/span&gt;&lt;span class=&quot;LogImgLink&quot;&gt;
+
+ &lt;a target=&quot;_blank&quot; href=&quot;/seek/log.aspx?LUID=${$item.parent.parent.data.LogGuid}&IID=${ImageGuid}&quot;>View Log&lt;/a&gt;&nbsp;
+
+ &lt;a href=&quot;http://img.geocaching.com/cache/log/large/${FileName}&quot;>Print Picture&lt;/a&gt;&lt;/span&gt;
+
+ {{if (Descr && Descr.length > 0) }}
+ &lt;br /&gt;&lt;p class=&quot;LogImgDescription&quot;&gt;${ $('<div />
+ ').text($('<div />
+ ').text($('<div />
+ ').html($item.data.Descr).text()).html()).html() }&lt;/p&gt;
+ {{/if}}
+ </script><script id="tmpl_CacheCoordinateUpdate" type="text/x-jquery-tmpl">
+ <div class="ccu-update" data-lat="${ll[0]}" data-lng="${ll[1]}">
+ <h4 class="BottomSpacing">Corrected Coordinates (hidden from others)</h4>
+ <dl>
+ <dt>Original:</dt>
+ <dd>${ll_formatted} <a href="#" class="ccu-restore">Restore</a></dd>
+ </dl>
+ <dl class="ccu-parse">
+ <dt>Change To:</dt>
+ <dd>
+ <input type="text" max="40" size="35" class="cc-parse-text">
+ <button class="ccu-button ccu-parse">Submit</button>
+ </dd>
+ </dl>
+ <dl class="ccu-parseverify" style="display: none;">
+ <dt>Change To:</dt>
+ <dd>
+ <span class="ccu-parseverify-coords">N 32°38.880′, W 097°23.755′</span>
+ </dd>
+ <dt>&nbsp;</dt>
+ <dd>
+ <button class="ccu-button ccu-parseverify-accept">Accept</button>&nbsp;
+ <button class="ccu-button ccu-parseverify-cancel">Cancel</button>
+ </dd>
+ </dl>
+ </div>
</script>
- <script id="tmpl_CacheLogImagesTitle" type="text/x-jquery-tmpl">
- &lt;span class=&quot;LogImgTitle&quot;&gt; ${ $('<div />').text($('<div />').text($('<div />').html($item.data.Name).text()).html()).html() } &nbsp;&lt;/span&gt;&lt;span class=&quot;LogImgLink&quot;&gt;
-
- &lt;a target=&quot;_blank&quot; href=&quot;log.aspx?LUID=${$item.parent.parent.data.LogGuid}&IID=${ImageGuid}&quot;>View Log&lt;/a&gt;&nbsp;
-
- &lt;a href=&quot;http://img.geocaching.com/cache/log/large/${FileName}&quot;>Print Picture&lt;/a&gt;&lt;/span&gt;
-
- {{if (Descr && Descr.length > 0) }}
- &lt;br /&gt;&lt;p class=&quot;LogImgDescription&quot;&gt;${ $('<div />').text($('<div />').text($('<div />').html($item.data.Descr).text()).html()).html() }&lt;/p&gt;
- {{/if}}
- </script>
- <script id="tmpl_CacheCoordinateUpdate" type="text/x-jquery-tmpl">
- <div class="ccu-update" data-lat="${ll[0]}" data-lng="${ll[1]}">
- <h4 class="BottomSpacing">Corrected Coordinates (hidden from others)</h4>
- <dl>
- <dt>Original:</dt>
- <dd>${ll_formatted} <a href="#" class="ccu-restore">Restore</a></dd>
- </dl>
- <dl class="ccu-parse">
- <dt>Change To:</dt>
- <dd>
- <input type="text" max="40" size="35" class="cc-parse-text">
- <button class="ccu-button ccu-parse">Submit</button>
- </dd>
- </dl>
- <dl class="ccu-parseverify" style="display:none;">
- <dt>Change To:</dt>
- <dd>
- <span class="ccu-parseverify-coords">N 32°38.880′, W 097°23.755′</span>
-
- <button class="ccu-button ccu-parseverify-accept">Accept</button>&nbsp;<button class="ccu-button ccu-parseverify-cancel">Cancel</button>
- </dd>
- </dl>
- </div>
- <div class="Clear"></div>
-
- </script>
-
- <script type="text/javascript">
- <!--
- var dh, lat, lng, guid;
-
- dh = 'true';
-
- lat=null;lng=null;guid=null;
-
-
- function s2gps(guid) {
- var w = window.open('sendtogps.aspx?guid=' + guid, 's2gps', config='width=450,height=450,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no');
- w.focus();
- }
-
- function s2phone(wpid) {
- window.location.href='sendtophone.aspx?gc=' + wpid;
- }
-
- function pl(lc) {
- document.location.href='cache_details_print.aspx?guid=' + guid + '&numlogs=' + lc +'&pt=full&lt=letter&decrypt='+ ((dh)?'y':'n');
- }
- function setNotification(id) {
- //new Effect.Highlight(id, {startcolor:'#ffffff', endcolor:'#ffff99', restorecolor:'#ffff99', duration:3.0, queue:'front'});
- //new Effect.Highlight(id, {startcolor:'#ffff99', endcolor:'#ffffff', restorecolor:'#ffffff', duration:5.0, queue:'end'});
- }
- function cmo(id) {
- //new Effect.Fade(id);
- Cookie.set('sn', true);
- }
- function pp(img) {
- var w = window.open(img);
- w.focus();
- }
-
- //-->
- </script>
- <script language="javascript" type="text/javascript">
- var map, bounds;
- var canUpdateFavoriteStatus = true;
- var decryptLogs = (urlParams["decrypt"] && urlParams["decrypt"] == "y") ? true : false;
- var logInitialLoaded = false;
- var $tfoot = $("#cache_logs_table").find("tfoot");
- var currentPageIdx = 1, totalPages = 1, pageSize = 10;
- var isBusy = false;
-
- var locString = {
- decrypt: 'Decrypt',
- encrypt: 'Encrypt'
- };
-
- $("#tmpl_CacheLogImagesTitle").template("tmplCacheLogImagesTitle");
- $("#tmpl_CacheLogImages").template("tmplCacheLogImages");
- $("#tmpl_CacheLogRow").template("tmplCacheLogRow");
-
- $(".EncryptDecrypt")
- .button({ icons: { secondary: 'ui-icon-arrowreturnthick-1-w'} })
- .click(function (e) {
- e.preventDefault();
- $("tr.log-row").each(function (i, obj) {
- var $obj = $(obj);
- if ($obj.data("encoded") == true) {
- var lt = $obj.find("p.LogText");
- //var ltDecoded = $('<div />').html(lt.html()).text();
- lt.html(convertROTStringWithBrackets(lt.html()));
- }
- });
-
- decryptLogs = !decryptLogs;
-
- $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
-
- return false;
- });
-
- function appendNewLogs(obj) {
-
- totalPages = obj.pageInfo.totalPages;
-
- var $newBody = $(document.createElement("TBODY"));
-
- $("#tmpl_CacheLogRow").tmpl(obj.data,{ includeAvatars: includeAvatars }).appendTo($newBody);
-
- $newBody.find("a.tb_images").each(function()
- {
- var $this = $(this);
- $this.fancybox({
- 'type': 'image',
- 'titlePosition': 'inside',
- 'padding': 10,
- titleFormat: function() { return $this.data('title'); }
- });
- });
-
- $("#cache_logs_table")
- .append($newBody.children());
-
- currentPageIdx = obj.pageInfo.idx + 1;
- pageSize = obj.pageInfo.size;
- }
-
- function callLogLoad(hideFooter) {
- $.getJSON("/seek/geocache.logbook", { tkn: userToken, idx: currentPageIdx, num: pageSize, decrypt: decryptLogs },
- function (response) {
- if (response.status == "success") {
- appendNewLogs(response);
- if( hideFooter || (totalPages < currentPageIdx) ) {
- $tfoot.hide();
- }
- } else if (response.status == "error" && response.value == "1") {
- // reload the page since the data had expired.
- window.location.reload();
- }
- isBusy = false;
- });
- }
-
- $("#add_to_favorites").click(function () {
-
- if (canUpdateFavoriteStatus) {
- canUpdateFavoriteStatus = false;
-
- var fv = parseInt($(".favorite-value").text());
- fv++;
- $(".favorite-value").text(fv);
-
- var fr = parseInt($(".favorite-rank").text());
- fr--;
- $(".favorite-rank").text(fr);
-
- $("#pnlNonfavoriteCache").fadeOut("fast", function () {
- $("#pnlFavoriteCache").fadeIn("fast");
- });
-
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/update?u=' + userToken + '&f=true',
- success: function () {
- canUpdateFavoriteStatus = true;
- gotScore = false;
- showFavoriteScore();
- }
- });
-
- return false;
- }
- });
-
- $("#remove_from_favorites").click(function () {
-
- if (canUpdateFavoriteStatus) {
- canUpdateFavoriteStatus = false;
-
- var fv = parseInt($(".favorite-value").text());
- fv--;
- $(".favorite-value").text(fv);
-
- var fr = parseInt($(".favorite-rank").text());
- fr++;
- $(".favorite-rank").text(fr);
-
- $("#pnlFavoriteCache").fadeOut("fast", function () {
- $("#pnlNonfavoriteCache").fadeIn("fast");
- });
-
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/update?u=' + userToken + '&f=false',
- success: function () {
- canUpdateFavoriteStatus = true;
- gotScore = false;
- showFavoriteScore();
- }
- });
-
- return false;
- }
- });
-
- $(function () {
-
- // CSP Section
- if ($("#cspMessage").length) {
-
- var editLink = $('a[href*="report.aspx"]').attr('href');
-
- $("#cspMessage").prepend('<P>Please take a moment to check the listing and ensure it is ready to enable. Clicking "Submit for Review" will enable your cache page.</P>');
- $("#cspMessage").prepend('<P>Once it is enabled, you will receive a confirmation email that it was successfully submitted. It is peak season for cache placement. Your volunteer reviewer will strive to begin the review process within the next 7 days.</P>');
- $("#cspMessage").prepend('<P>Your cache page has not been reviewed yet. It will not appear in the review queue until you enable it.</P>');
-
- $("#cspGoBack").click(function (e) {
- e.preventDefault();
- window.location = editLink;
- return false;
- });
-
- $("#cspSubmit").click(function (e) {
- e.preventDefault();
- $.pageMethod("EnableCSPCache", JSON.stringify({ dto: { ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.success == true) {
- window.location = '/seek/cache_details.aspx?guid=' + r.guid;
- } else {
- alert("There was an error enabling your cache.");
- }
- });
- return false;
- });
-
- $("#cspConfirm").change(function() {
- if ($("#cspConfirm").is(":checked")) {
- $("#cspSubmit").removeAttr('disabled');
- $("#cspGoBack").attr('disabled', true);
- } else {
- $("#cspSubmit").attr('disabled', true);
- $("#cspGoBack").removeAttr('disabled');
- }
- });
- }
-
-
- //override coords
- if (typeof(userDefinedCoords) != "undefined") {
- if (userDefinedCoords.status == "success" && userDefinedCoords.data.isUserDefined == true) {
- mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
- $("#uxLatLon")
- .data("isOverridden", true)
- .addClass("myLatLon");
- } else if (userDefinedCoords.status == "success") {
- mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
- } else {
- $("#uxLatLonLink").contents().unwrap();
- }
- } else {
- $("#uxLatLonLink").contents().unwrap();
- }
-
-
- var cacheNoteText = {
- DefaultText: 'Click to enter a note',
- ErrorInSaving: 'There was an error saving page. Please refresh the page and try again.',
- SavingText: 'Please wait, saving your note...'
- };
-
-
-
- $("time.timeago").timeago();
-
- $(".button").button();
-
- var sn = Cookie.get('sn');
-
- if ($('#trNotPM').length > 0) {
- $('#trNotPM').toggle(!sn);
- }
-
- $("#cache_note").editInPlace({
- callback: function (unused, enteredText) {
- var me = $(this);
-
- var et = $.trim(enteredText);
- if (et.length > 500)
- et = et.substr(0, 500);
-
- $.pageMethod("SetUserCacheNote", JSON.stringify({ dto: { et: et, ut: userToken} }), function (r) {
- var r = JSON.parse(r.d);
- if (r.success == true) {
- if ($.trim(r.note) == "") {
- $("#cache_note").text(cacheNoteText.DefaultText);
- } else {
- $("#cache_note").text(r.note);
- }
-
- me.effect('highlight', { color: '#ffb84c' }, 'slow');
- } else {
- alert(cacheNoteText.ErrorInSaving);
- $("#cache_note").text(cacheNoteText.DefaultText);
- }
-
- });
-
- return cacheNoteText.SavingText;
- }
- , default_text: cacheNoteText.DefaultText
- , field_type: "textarea"
- , textarea_rows: "7"
- , textarea_cols: "65"
- , show_buttons: true
- , bg_over: "#FDEBBB"
- //, callback_skip_dom_reset: true
-
- });
-
- $("#lnk_slippyMap").click(function(e) {
- e.preventDefault();
- loadDynamicMap();
- return false;
- });
-
- $(".inplace_field").live("focus", function () {
- if ($(this).data("created") == null) {
- $(this).data("created", true)
- $(this).countable({
- maxLength: 500
- });
- }
- });
-
- $("#pcn_help").tipTip({ activation: 'hover', content: 'Enter your own notes here. No other user will be able to access them.' });
-
- $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
-
- if ($("#cache_logs_container").length > 0) {
-
- appendNewLogs(initalLogs);
-
- if (DetectMobileQuick()) {
- $("#pnlButtonLoad")
- .show()
- .find("a.MobileButton")
- .click(function (e) {
- e.preventDefault();
- callLogLoad(false);
- return false;
- })
- .button();
- if(!DetectTierTablet()){
- $("a.MobileButton").addClass("Phone");
- }
- } else {
- $("#pnlLazyLoad").show();
-
- $(window).endlessScroll({
- fireOnce: true,
- fireDelay: 500,
- bottomPixels: ($(document).height() - $("#cache_logs_container").offset().top) + 50,
- ceaseFire: function(){
- // stop the scrolling if the last page is reached.
- return (isLoggedIn == false) || (totalPages < currentPageIdx);
- },
- callback: function() {
- if (!isBusy) {
-
- isBusy = true;
- $tfoot.show();
- callLogLoad(true);
- }
- }
- });
- }
- }
-
- if (!isLoggedIn) {
- $("#cache_logs_table").find("tfoot").hide();
- }
-
- if (mapLatLng != null) {
-
- $("#uxLatLonLink").qtip({
- suppress:false,
- content: buildCacheCoordMenu(),
- position: {
- my: 'left top',
- at: 'right top',
- adjust: {
- x: 10, y: -10
- }
- },
- show: {
- ready: false,
- event: "click",
- solo: true
- }, hide: {
- event: 'unfocus'
- },
- style: {
- tip: {
- corner: false
- },
- classes: 'ui-tooltip-widget'
- },
- events: {
- show: function () {
- if ($("#uxLatLon").data("isOverridden")) {
- $("a.ccu-restore").show();
- } else {
- $("a.ccu-restore").hide();
- }
-
- if (userDefinedCoords.status != "success") {
- $("div.ccu-update").hide();
- } else {
- $("div.ccu-update").show();
- }
- }
- }
- }).click(function (e) {
- e.preventDefault();
- return false;
- });
-
- setStaticMaps();
- //$("#staticMap").lazyload();
- }
- });
-
- function setStaticMaps() {
-
- var map = new L.Map('map_preview_canvas', {
- center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- zoom: 10,
- doubleClickZoom: false,
- dragging: false,
- touchZoom: false,
- scrollWheelZoom: false,
- attributionControl: false
- })
- .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }));
-
-
- var mapLarge = new L.Map('map_canvas', {
- center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- zoom: 14,
- doubleClickZoom: true,
- dragging: true,
- touchZoom: false,
- scrollWheelZoom: false,
- zoomControl: true,
- attributionControl: false
- })
- .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }))
- .addControl(new L.Control.Scale());
-
- var tileOptions = {
- tileUrl: "http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg",
- name: "mpqosm",
- alt: "MapQuest",
- //attribution: "Tiles Courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>, Map and map data © 2012 <a href=\"http://www.openstreetmap.org\" target='_blank'>OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>. ",
- subdomains: "1234",
- tileSize: 256,
- minZoom: 0,
- maxZoom: 18
- };
-
- map.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
- mapLarge.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
-
- var pinIcon = L.Icon.extend({
- iconSize: new L.Point(20, 23),
- iconAnchor: new L.Point(10,23),
- shadowUrl: null
- });
-
- var mkA = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
- title: mapLatLng.name
- })
- .on("click", function () {
- document.getElementById("uxlrgMap").scrollIntoView(true);
- return false;
- });
-
- var mkA2 = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng), {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
- clickable: false, zIndexOffset:99, title: mapLatLng.name
- });
-
- map.addLayer(mkA);
- mapLarge.addLayer(mkA2);
-
- $("#ctl00_ContentBody_uxNotesAboutPrinting").fancybox({
- overlayShow: false
- });
-
-
- if (cmapAdditionalWaypoints != null && cmapAdditionalWaypoints.length > 0) {
- var llBounds = new L.LatLngBounds();
-
- for (var x = 0, len = cmapAdditionalWaypoints.length; x < len; x++) {
- var item = cmapAdditionalWaypoints[x],
- ll = new L.LatLng(item.lat, item.lng),
- marker = new L.Marker(ll, {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + item.type + '.png', iconAnchor: new L.Point(10,23)}),
- title: item.name,
- clickable:false
- });
-
- llBounds.extend(ll);
- mapLarge.addLayer(marker);
- }
- var bz = mapLarge.getBoundsZoom(llBounds);
-
- mapLarge.setView(new L.LatLng(mapLatLng.lat, mapLatLng.lng), bz);
- }
- }
-
-
-
- function dht() {
- try {
- $('#div_hint').html(convertROTStringWithBrackets($('#div_hint').html()));
- var linkText = (($('#ctl00_ContentBody_lnkDH').attr('title') == 'Decrypt') ? 'Encrypt' : 'Decrypt');
- $('#ctl00_ContentBody_lnkDH').text(linkText);
- $('#ctl00_ContentBody_lnkDH').attr('title', linkText);
- } catch (e) {
- alert(e);
- return false;
- }
- return false;
- }
-
- function buildCacheCoordMenu() {
- var curLatLng = new LatLon(mapLatLng.lat, mapLatLng.lng)
- $.template( "tmplCacheCoordinateUpdate_CoordItem", "<tr><td nowrap='nowrap'>${t}</td><td class='ccc-coord' nowrap='nowrap' dataum='${k}'>${v}</td></tr>" );
-
- var $menu = $("<div></div>");
-
- $( "#tmpl_CacheCoordinateUpdate" ).tmpl( {
- ll: [mapLatLng.lat, mapLatLng.lng],
- ll_formatted: mapLatLng.oldLatLngDisplay
- } ).appendTo( $menu );
-
- $menu.find("button.ccu-button").button();
- $menu.delegate("button.ccu-parse", "click", function (e) {
- e.preventDefault();
- var $this = $(e.target),
- $parse =$this.closest('dd').find(".cc-parse-text"),
- parseCoords = $.trim($parse.val());
-
- if (parseCoords.length == 0) {
- alert('Please provide valid coordinates.');
- } else {
- $.getJSON("/api/geocode", { parse: parseCoords}, function (response) {
- if (response.status == "success") {
- var newLatLng = new LatLon(response.data.lat, response.data.lng);
-
- // update the displayed coords
- var dist = curLatLng.rhumbDistanceTo(newLatLng);
- var bearingTo = curLatLng.rhumbBearingTo(newLatLng);
- var bearing = bearingTo >= 0 || bearingTo < 22.5 ? "N" : bearingTo >= 22.5 || bearingTo < 67.5 ? "NE" : bearingTo >= 67.5 || bearingTo < 112.5 ? "E" : bearingTo >= 112.5 || bearingTo < 157.5 ? "SE" : bearingTo >= 157.5 || bearingTo < 202.5 ? "S" : bearingTo >= 202.5 || bearingTo < 247.5 ? "SW" : bearingTo >= 247.5 || bearingTo < 292.5 ? "W" : bearingTo >= 292.5 || bearingTo < 337.5 ? "NW" : "N";
-
- var formats = response.data.formats;
- // all these finds, make me feel dirty
- $menu
- .find("span.ccu-parseverify-coords").text(formats.DM).end()
- .find("dl.ccu-parse").hide().end()
- .find("dl.ccu-parseverify").show().end()
- .find("button.ccu-parseverify-accept")
- .data("utm", '')
- .data("dm", formats.DM)
- .data("lat", response.data.lat)
- .data("lng", response.data.lng)
- .end();
- } else {
- alert("Sorry unable to parse the coordinates you entered.");
- }
- });
- }
-
- return false;
- });
-
- $menu.delegate("button.ccu-parseverify-accept", "click", function (e) {
- e.preventDefault();
- var $this = $(this);
- // update to webmethod
- $.pageMethod("SetUserCoordinate", JSON.stringify({ dto: { data: {lat: $this.data("lat"), lng: $this.data("lng") }, ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.status == "success") {
- window.location.reload();
- } else {
- $("#uxLatLonLink").qtip('hide');
- }
-
- });
-
- return false;
- });
-
- $menu.delegate("button.ccu-parseverify-cancel", "click", function (e) {
- e.preventDefault();
- $menu
- .find("input.cc-parse-text").val('').end()
- .find("dl.ccu-parse").show().end()
- .find("dl.ccu-parseverify").hide().end();
- return false;
- });
-
- $menu.delegate("a.ccu-restore", "click", function (e) {
- e.preventDefault();
-
- $.pageMethod("ResetUserCoordinate", JSON.stringify({ dto: { ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.status == "success") {
- window.location.reload();
- }
- });
-
- return false;
- });
-
- return $menu;
- }
-
- GSPK = window.GSPK || {};
- GSPK.Selector = {};
- GSPK.Selector.getSelected = function(){
- var t = null;
- if ( window.getSelection ){
- t = window.getSelection();
- }else if(document.getSelection){
- t = document.getSelection();
- }else if(document.selection){
- t = document.selection.createRange().text;
- }
- return t;
- }
-
- try { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'NotSignedIn', null, true]); } catch(err) { }
- </script>
-
-
-
</div>
-
-
-
</div>
-
-
</section>
-
<footer>
-
<div class="container">
-
<div class="span-24 last FooterTop">
-
<div class="LocaleText">
@@ -1825,27 +996,35 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<li><a id="ctl00_uxLocaleList_uxLocaleList_ctl04_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl04$uxLocaleItem&#39;,&#39;&#39;)">Čeština</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl05$uxLocaleItem&#39;,&#39;&#39;)">Dansk</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Svenska</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Italiano</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Ελληνικά</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Latviešu</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl16_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl16$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl17_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl17$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl15$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl18_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl18$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl19_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl19$uxLocaleItem&#39;,&#39;&#39;)">日本語</a></li>
</ul>
@@ -1872,14 +1051,14 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
});
});
</script>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ </div>
+ <div class="container column-container">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- About</strong></p>
+ About</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterGlossary" title="Glossary of Terms" href="../about/glossary.aspx">Glossary of Terms</a></li>
@@ -1888,18 +1067,14 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<li>
<a id="ctl00_hlFooterAbout" title="About Groundspeak" href="../about/groundspeak.aspx">About Groundspeak</a></li>
<li>
- <a id="ctl00_hlFooterVolunteers" title="About Our Volunteers" href="../volunteers/">About Our Volunteers</a></li>
- <li>
<a id="ctl00_hlFooterHistory" title="History" href="../about/history.aspx">History</a></li>
</ul>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Press</strong></p>
+ Press</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterNews" title="News Articles" href="../press/">News Articles</a></li>
@@ -1907,15 +1082,15 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<a id="ctl00_hlFooterMediaFAQs" title="Media FAQs" rel="document" href="../articles/Brochures/footer/FAQ_Media.pdf">Media FAQs</a></li>
<li>
<a id="ctl00_hlFooterMediaInquiries" title="Media Inquiries" rel="external" href="http://support.groundspeak.com/index.php?pg=request&amp;xCategory=11">Media Inquiries</a></li>
+ <li>
+ <a id="ctl00_hlFooterLogo" accesskey="l" title="Logo Usage Guidelines" href="../about/logousage.aspx">Logo Usage Guidelines</a></li>
</ul>
-
</div>
-
- <div class="span-5">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Questions & Suggestions</strong></p>
+ Questions & Suggestions</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterHelpCenterLink" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
@@ -1926,14 +1101,12 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<li>
<a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/">Contact Us</a></li>
</ul>
-
</div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Resources</strong></p>
+ Resources</strong>
+ </p>
<ul class="FooterLinks">
<li>
<a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/">Tools and Downloads</a></li>
@@ -1942,118 +1115,56 @@ Congratulations to <a href="http://www.geocaching.com/profile/?u=fmoraes" target
<li>
<a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/">Find a Benchmark</a></li>
</ul>
-
</div>
- <div class="span-4 append-3 last">
-
- <p class="FooterHeader">
+ <div class="column">
+ <p class="FooterLinksHeader">
<strong>
- Follow Us</strong></p>
- <ul class="FooterLinks FollowUsLinks">
- <li><a id="ctl00_hlFacebook" title="Facebook" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts"><img id="ctl00_imgFacebook" title="Facebook" src="../images/home/icon_facebook.png" alt="Facebook" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlTwitter" title="Twitter" href="http://twitter.com/GoGeocaching"><img id="ctl00_imgTwitter" title="Twitter" src="../images/twitter/twitter_icon_white_22.png" alt="Twitter" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlFlickr" title=" Flickr" href="http://www.flickr.com/photos/geocaching_com/"><img id="ctl00_imgFlickr" title="Flickr" src="../images/home/icon_flickr.png" alt="Flickr" style="border-width:0px;" /></a></li>
- <li><a id="ctl00_hlYouTube" title="YouTube" href="http://www.youtube.com/user/GoGeocaching"><img id="ctl00_imgYouTube" title="YouTube" src="../images/home/icon_youtube.png" alt="YouTube" style="border-width:0px;" /></a></li>
- </ul>
-
+ Follow Us</strong>
+ </p>
+ <ul class="FooterLinks FollowUsLinks">
+ <li>
+ <a id="ctl00_hlFacebook" title="Facebook" href="http://www.facebook.com/geocaching"></a></li>
+ <li>
+ <a id="ctl00_hlYouTube" title="YouTube" href="http://www.youtube.com/user/GoGeocaching"></a></li>
+ <li>
+ <a id="ctl00_hlInstagram" title="Instagram" href="http://instagram.com/gogeocaching/"></a></li>
+ <li>
+ <a id="ctl00_hlTwitter" title="Twitter" href="http://twitter.com/GoGeocaching"></a></li>
+ </ul>
</div>
-
- <p class="span-24 last FooterBottom">
+ </div>
+ <div class="FooterBottom">
+ <div class="container">
+ <p>
Copyright
- &copy; 2000-2012
+ &copy; 2000-2013
<a href="http://www.groundspeak.com/" title="Groundspeak, Inc." accesskey="g">Groundspeak, Inc.</a>
- All Rights Reserved.<br />
+ All Rights Reserved.
<a id="ctl00_hlFooterTerms" accesskey="u" title="Groundspeak Terms of Use" href="../about/termsofuse.aspx">Groundspeak Terms of Use</a>
|
<a id="ctl00_hlFooterPrivacy" accesskey="x" title="Privacy Policy" href="../about/privacypolicy.aspx">Privacy Policy</a>
- |
- <a id="ctl00_hlFooterLogo" accesskey="l" title="Geocaching Logo Usage Guidelines" href="../about/logousage.aspx">Geocaching Logo Usage Guidelines</a>
- |
- <a id="ctl00_hlFooterAPI" accesskey="`" title="API License Agreement" href="../live/api_license_agreement.aspx">API License Agreement</a>
- |
- <a id="ctl00_HlFooterStatus" accesskey="`" title="Current Service Status" href="http://status.geocaching.com">Service Status</a></p>
-
+ </p>
+
+ </div>
</div>
-
-
</footer>
<div class="SkipLinks">
-
<a id="ctl00_hlSkipLinksTop" accesskey="t" title="Return to the Top of the Page" href="#Top">Return to the Top of the Page</a>
-
</div>
-
-
-<script type="text/javascript">
-//<![CDATA[
-var Page_ValidationSummaries = new Array(document.getElementById("ctl00_vsSignInWidgetForm"));
-var Page_Validators = new Array(document.getElementById("ctl00_rfvUsername"), document.getElementById("ctl00_rfvPassword"));
-//]]>
-</script>
-
-<script type="text/javascript">
-//<![CDATA[
-var ctl00_vsSignInWidgetForm = document.all ? document.all["ctl00_vsSignInWidgetForm"] : document.getElementById("ctl00_vsSignInWidgetForm");
-ctl00_vsSignInWidgetForm.headertext = "<h4>Please correct the following issues:</h4>";
-ctl00_vsSignInWidgetForm.validationGroup = "SignInForm";
-var ctl00_rfvUsername = document.all ? document.all["ctl00_rfvUsername"] : document.getElementById("ctl00_rfvUsername");
-ctl00_rfvUsername.controltovalidate = "ctl00_tbUsername";
-ctl00_rfvUsername.errormessage = "Username is a required field; please enter a valid username.";
-ctl00_rfvUsername.display = "Dynamic";
-ctl00_rfvUsername.validationGroup = "SignInForm";
-ctl00_rfvUsername.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
-ctl00_rfvUsername.initialvalue = "";
-var ctl00_rfvPassword = document.all ? document.all["ctl00_rfvPassword"] : document.getElementById("ctl00_rfvPassword");
-ctl00_rfvPassword.controltovalidate = "ctl00_tbPassword";
-ctl00_rfvPassword.errormessage = "Password is a required field; please enter a valid password.";
-ctl00_rfvPassword.display = "Dynamic";
-ctl00_rfvPassword.validationGroup = "SignInForm";
-ctl00_rfvPassword.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
-ctl00_rfvPassword.initialvalue = "";
-//]]>
-</script>
-
<script type="text/javascript">
//<![CDATA[
-var isLoggedIn = false;
-var userDefinedCoords = {"status":"fail","data":{"isUserDefined":false,"oldLatLngDisplay":"N 37° 21.540' W 122° 01.937'"}};
-userInfo = {ID: 0};
-userToken = 'WQZID4ZFAYC6SULYQF74LYDA3S3BDCRFF42MHAMCQ2FV344K2FX57T5PR5HMIIEYY3CGMUR4ZCJLPZTNFNAGW2TB5YIQR6RFKPTVW2ZNM3FM5APRUY3SDKBHWTW64K6GBBSWW67UP4QLB3IAMCTNJVRWCDBKLLDOGPUFLZA';
-//]]>
-</script>
-<script type="text/javascript">setNotification('ctl00_ContentBody_trNotLoggedIn');</script>
-<script type="text/javascript">
-//<![CDATA[
-initalLogs = {"status":"success", "data": [{"LogID":284793524,"CacheID":3373765,"LogGuid":"28f4aded-353c-4cb8-a8ac-17873b5e136f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"FTF 8am.<br />Woo-Hoo, two TNS cache FTFs in a row. This one was much easier, I just pulled out my really big magnet and sucked the needle right out of the stack! TFTP","Created":"12/21/2012","Visited":"12/21/2012","UserName":"TeamOttlet","MembershipLevel":3,"AccountID":623076,"AccountGuid":"b9f2639c-5ed0-4625-82ed-f7723aad6a24","Email":"","AvatarImage":"b4d5c924-f0b3-4668-866d-0c7eafe6a6ad.jpg","GeocacheFindCount":7971,"GeocacheHideCount":11,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284780265,"CacheID":3373765,"LogGuid":"28f7397c-4d68-419d-a78c-d9af48530900","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Publish Listing","LogTypeImage":"24.png","LogText":"Published","Created":"12/21/2012","Visited":"12/21/2012","UserName":"Nomex","MembershipLevel":3,"AccountID":651514,"AccountGuid":"930c9960-afb8-4517-937c-a9256effcdb7","Email":"","AvatarImage":"f2fe44a0-95e7-4e94-b152-f462505ceb79.jpg","GeocacheFindCount":0,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Reviewer","GroupImageUrl":"/images/icon_admin.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 5, "totalRows": 2, "rows": 2 } };
-
-document.getElementById('ctl00_vsSignInWidgetForm').dispose = function() {
- Array.remove(Page_ValidationSummaries, document.getElementById('ctl00_vsSignInWidgetForm'));
-}
-
-var Page_ValidationActive = false;
-if (typeof(ValidatorOnLoad) == "function") {
- ValidatorOnLoad();
-}
-
-function ValidatorOnSubmit() {
- if (Page_ValidationActive) {
- return ValidatorCommonOnSubmit();
- }
- else {
- return true;
- }
-}
- WebForm_AutoFocus('btnSignIn');
-document.getElementById('ctl00_rfvUsername').dispose = function() {
- Array.remove(Page_Validators, document.getElementById('ctl00_rfvUsername'));
-}
-
-document.getElementById('ctl00_rfvPassword').dispose = function() {
- Array.remove(Page_Validators, document.getElementById('ctl00_rfvPassword'));
-}
-//]]>
+$(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); });var isLoggedIn = true;
+var userDefinedCoords = {"status":"success","data":{"isUserDefined":false,"oldLatLngDisplay":"N 37° 21.540' W 122° 01.937'"}};
+mapLatLng = {"lat":37.359,"lng":-122.03228,"type":8,"name":"Needle in a Haystack"};
+var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"37.359000, -122.032283"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 37° 21' 32.400\" W 122° 01' 56.219\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"10S E 585698 N 4135137"}];
+var dh=true;userInfo = {ID: 3409138};
+userToken = 'ID5R2NBJDBPQYVKRP2QCKFMGOD72N345U34TRF3HIUOES7I3DEYZLGMWQENANSEL75TH743VWQXA4PRVBZVB2UFIVLT5HYFG73BJY737PC6AVOROLQCJBHWZ5WOPA4ZCUMZSO7RLBORYFW5XH4FZERAO4GV6P6EU7MMIJWSXR4HI3PG6GTCE6CCDR3RZ24MAX4ZRSBFMJCJOQRIXBP33MWBHKUZDSLRUMW5L5USXRO5HSSVZB2OQ';
+includeAvatars = false;
+var lat=37.359, lng=-122.032283, guid='98e6f5a9-cf2d-42f8-9cdf-a3f53436f384';
+initalLogs = {"status":"success", "data": [{"LogID":347197538,"CacheID":3373765,"LogGuid":"db309790-4a60-461d-9576-d31ec5f46768","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Wow that was a lot of work building the puzzle for the CO. I can appreciate the effort and actually feel bad it was broken with the simplest of programs so easily. <br />Love the cache site, it's perfect. <br />The log is pretty full, still a couple of openings left. ","Created":"2013-09-03","Visited":"2013-09-03","UserName":"BenDover777","MembershipLevel":1,"AccountID":7133172,"AccountGuid":"236f443a-2f4f-4781-a141-b3fbb6f2bcfe","Email":"","AvatarImage":"","GeocacheFindCount":212,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":337207661,"CacheID":3373765,"LogGuid":"f2d9cbcd-ad60-4b54-9393-13c36c57cbe1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"# 4294, 30.07.2013, 21:24<br /><br />We searched and found this cache on our Bay Area vacation tour 2013. We loved to sneak out and hunt for the little boxes.<br />Today, we were on our way to an event in San José. Caches along the way were a MUST. Like this one...<br />The puzzle was solved at home using the right tool. But without tools, this really becomes an endless search...<br />Nice idea! I spend a blue ribbon!<br /><br />Thanks for hiding and guiding!<br /><br />Greetings from Berlin, Germany!<br /><br />Cheers, bigchen.","Created":"2013-08-07","Visited":"2013-07-30","UserName":"bigchen","MembershipLevel":3,"AccountID":1923985,"AccountGuid":"d5f128e7-75ff-46e9-8bde-dbf115398a3a","Email":"","AvatarImage":"ee364e6a-fccd-4aa0-b41b-ea159d06b934.jpg","GeocacheFindCount":4409,"GeocacheHideCount":19,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":327202121,"CacheID":3373765,"LogGuid":"e35ae00b-1be8-404c-a3bc-e665ef7d4dc8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Good puzzle. It didn't take too long with my tools to work out where the needle was. Cheers.","Created":"2013-07-04","Visited":"2013-06-28","UserName":"sleuthers","MembershipLevel":3,"AccountID":546960,"AccountGuid":"9e3de94d-c6e5-4b91-b56c-d9752c6010ee","Email":"","AvatarImage":"e5fe0349-70a5-47a1-8e00-a7ac4f404896.jpg","GeocacheFindCount":4711,"GeocacheHideCount":60,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":316090132,"CacheID":3373765,"LogGuid":"f127b8ba-2b6c-46ff-a90f-286dc2c0c76e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Sweatpea and I solved this with the help of a colleague at work. The gz makes so much sense! LOL! TFTC!","Created":"2013-05-20","Visited":"2013-05-20","UserName":"leelelee","MembershipLevel":3,"AccountID":3332838,"AccountGuid":"57f1803f-45f5-4dc3-8ffd-a56fb4833d54","Email":"","AvatarImage":"49543f8d-aa8f-40a7-97f6-0f37b44cb323.jpg","GeocacheFindCount":3682,"GeocacheHideCount":14,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":312922908,"CacheID":3373765,"LogGuid":"9e5949b0-aea8-42ee-ad5e-4652ef554f5f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"This puzzle was a quickie for me, as I had the right tools readily available. I found the cache pretty quickly tonight. I like the location! Thanks.","Created":"2013-05-09","Visited":"2013-05-09","UserName":"doogelah","MembershipLevel":3,"AccountID":405997,"AccountGuid":"a94b24d5-ba5f-4dcc-a07c-3746a6d7ea34","Email":"","AvatarImage":"79b89882-4f0c-4f9d-ae9f-284038c700fe.jpg","GeocacheFindCount":4038,"GeocacheHideCount":20,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":311012659,"CacheID":3373765,"LogGuid":"846b79c9-341e-434c-9418-fa9f417cda3e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I solved the puzzle quickly when I first found it, and tonight KendraH was willing to make a return visit to this one to let me make the find. It was shortly before midnight; no muggle issues. Nice in-theme location.","Created":"2013-05-04","Visited":"2013-05-03","UserName":"sleepyrobin","MembershipLevel":3,"AccountID":223494,"AccountGuid":"e36d57ac-e50d-4fa3-bdb4-35b7011064b2","Email":"","AvatarImage":"","GeocacheFindCount":931,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":308192046,"CacheID":3373765,"LogGuid":"66804b1e-3a77-4042-87f4-54ad40f0b604","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"On the way from the CITO event to the place where my youngest sister is staying this week, I noticed this cache in my GPS. I had about 10 minutes to kill before she got back to the house, so I stopped by this cache. I only had the GC number and coordinates though, which is unusual. I normally have title, hint, D/T, and size. So that meant I must have manually entered the coordinates for some reason. I called sleepyrobin to ask which cache it was, and he said it was this one, which he had solved. Presumably he had told me the coordinates at some point when we were on a puzzle run, but we didn't get around to finding it. <br /><br />This area was quite busy - I had to wait out several customers in the immediate vicinity of the cache, and a police car at the nearby intersection where the light took a long time to change. It didn't take long to find once the coast was clear though. <br /><br />Then I had to solve the puzzle. It took a couple of frustrating hours, but I finally got it. Yes, knowing the coordinates could make the puzzle trivial, but I wanted to do it properly, since reading and parsing files automatically seems like a useful skill to have.","Created":"2013-04-23","Visited":"2013-04-21","UserName":"KendraH","MembershipLevel":3,"AccountID":76172,"AccountGuid":"834a524a-8c26-4050-b550-764d4386d6a5","Email":"","AvatarImage":"","GeocacheFindCount":4934,"GeocacheHideCount":5,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":306433943,"CacheID":3373765,"LogGuid":"2d6a4073-14f2-42e5-a221-a7483ce3e302","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"15:24 - On my way to the Mountain View library to return a book, I figured I'd swing by here again. I'd easily solved this the day it was published while pruning a PQ for a trip to the Palo Alto library the next day to return a DVD but when we came to search, I didn't have or remember the certitude hint so we looked for a few minutes before continuing on our way. When we got back home, I'd looked at the certitude hint; almost four months later, I still remembered where it pointed for the easy find. Looked at the puzzle again just now and noticed I (actually, the computer, when I tell it what to do) can find the needle in less than a second and a half.","Created":"2013-04-16","Visited":"2013-04-15","UserName":"dandm","MembershipLevel":3,"AccountID":140069,"AccountGuid":"532c5c1a-f30c-4070-a680-f464323404a2","Email":"","AvatarImage":"3a750fc0-ac4c-4c08-b22e-57ba876dca20.jpg","GeocacheFindCount":8248,"GeocacheHideCount":9,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":303298282,"CacheID":3373765,"LogGuid":"4a3e9882-ca30-438a-afeb-a16946654af0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I solved this very quickly when it first came out and managed to lose track of it. But it worked out well to have a puzzle final near work. This was certainly a lot easier than that other search task the CO gave us. Thanks for the fun.","Created":"2013-04-04","Visited":"2013-04-04","UserName":"not2b","MembershipLevel":3,"AccountID":489008,"AccountGuid":"3d6e5543-acb0-4686-b589-4a700a510368","Email":"","AvatarImage":"","GeocacheFindCount":5108,"GeocacheHideCount":43,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":300705122,"CacheID":3373765,"LogGuid":"d8796a3f-3368-4888-a7e2-9593d1af3ae0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"The CO has been solving and FTFing my puzzle caches so thought it was only fair to solve one of his. Easier said than done, had the right idea but had to find the correct source to apply it and reassurance that it was really there. The find was no problem, nice job TFTC","Created":"2013-03-25","Visited":"2013-03-25","UserName":"lmt000","MembershipLevel":3,"AccountID":1908552,"AccountGuid":"a4d14b13-17f7-4453-9511-066c87be63df","Email":"","AvatarImage":"a8f2ed4e-ab17-466d-b6b0-2aeea198d1bb.jpg","GeocacheFindCount":2632,"GeocacheHideCount":81,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":300505714,"CacheID":3373765,"LogGuid":"489c0f70-5458-4b9e-bd3a-3343d5c70f3b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"This was literally a Needle in a Haystack. We persevered and figured it out, then found the cache. Thanks for the Sunday morning fun!","Created":"2013-03-24","Visited":"2013-03-24","UserName":"CarlottaP","MembershipLevel":3,"AccountID":2074604,"AccountGuid":"29f136db-ae27-42f6-8615-fce940ede169","Email":"","AvatarImage":"fce9fdb8-4d83-4f71-9a4a-7a34a16d7600.jpg","GeocacheFindCount":20206,"GeocacheHideCount":18,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":300494140,"CacheID":3373765,"LogGuid":"4514113d-2189-4b91-93ec-c7289d950609","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Interesting puzzle, a good needle in a haystack. Thanks for the fun!","Created":"2013-03-24","Visited":"2013-03-24","UserName":"oaknest","MembershipLevel":3,"AccountID":2060522,"AccountGuid":"25e6ee09-269e-4821-a6ee-9e4c0b004499","Email":"","AvatarImage":"8e9010c5-8972-48f8-871b-99951e517f6e.jpg","GeocacheFindCount":24661,"GeocacheHideCount":74,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":299975229,"CacheID":3373765,"LogGuid":"4d91422e-d963-4ce2-91fa-0113a350b2a9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Wow...the learning curve was huge for me on this one. Nice to have a teaching community who can help with the various types of puzzle needs! Tx to my colleague who spent an hour figuring how to find this needle with me...made a beeline to the GZ and felt that Friday \"Awwww\".... wish this would earn me TNS Difficulty Challenge again....rating should truly be higher for us non-computer folks! TX...next time I will not fall for the red herring either. OK...I probably still will!","Created":"2013-03-22","Visited":"2013-03-22","UserName":"sweetpea1953","MembershipLevel":3,"AccountID":3326067,"AccountGuid":"5cc53feb-d51f-4f75-8bc5-489c7983bcd0","Email":"","AvatarImage":"3ebf0dc5-4fed-4cd1-b047-6dc021340abd.jpg","GeocacheFindCount":8680,"GeocacheHideCount":26,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":298371793,"CacheID":3373765,"LogGuid":"cd6acb48-8b11-42ab-bec8-d28fee0d1f70","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"While our kids ran crazily through the Children's Discovery Museum, mcdurr and I were, of course, discussing puzzles! <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> Actually, the conversation was much appreciated, as it was a great chance for me to learn all sorts of unfamiliar skills and topics. This one in particular came up, as I was lamenting about going blind from picking through all the hay. And that's when my geofriend taught me about this massive magnet, which could simply pull the needle right out...if I could figure out how to do it.<br /><br />So after our playdate, I eagerly read up on farming and magnetism, and it only took me a few botched attempts before...ZING! It worked! <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> But the best part, without question, was having my Other Half burst out laughing when I showed him what I'd learned. His bemused surprise (\"Who are you?!\") was worth all the effort I'd put in and more. And finally, with a short day at work, I had the chance to swing by GZ today and make the quick find. TNLNSL, TFTC, the valuable educational experience, and the fun!","Created":"2013-03-12","Visited":"2013-03-12","UserName":"thelins","MembershipLevel":3,"AccountID":2999428,"AccountGuid":"01cb03f6-290f-4720-8786-0c5ac17a6cc0","Email":"","AvatarImage":"0ee825d9-bc33-41f4-bf0e-a62bde392303.jpg","GeocacheFindCount":1812,"GeocacheHideCount":16,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":295835952,"CacheID":3373765,"LogGuid":"bf4717c4-1a8b-4857-a472-da710dbee404","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"After taking a look at the haystack, I found the needle after a few lines of typing. Certitude was down, but since the actual coords were not too far I decided to head out. Quick find and sign. Interesting puzzle idea. Cheers and TFTC!","Created":"2013-02-26","Visited":"2013-02-26","UserName":"Yaten","MembershipLevel":3,"AccountID":1375071,"AccountGuid":"909e572d-984f-4924-864d-d010c3c157fe","Email":"","AvatarImage":"","GeocacheFindCount":2235,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":295699465,"CacheID":3373765,"LogGuid":"e1bf0944-95eb-435a-978c-ee239f1bb4f3","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"A nudge from the CO resulted in a d'oh! as we'd forgotten to do something simple. That showed the way into the stack, and the gripping tool needed to solve the puzzle was laying in the shadows. I came out today and found the cache quickly at the coordinates given. TFTC and puzzle!","Created":"2013-02-25","Visited":"2013-02-25","UserName":"Galileo the cat","MembershipLevel":3,"AccountID":2879439,"AccountGuid":"4adc2103-977a-4b06-a615-bcaed612f8c8","Email":"","AvatarImage":"18afc1d2-d800-4faa-b0e7-8bbe98de1c81.jpg","GeocacheFindCount":2903,"GeocacheHideCount":52,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":291588087,"CacheID":3373765,"LogGuid":"c9f34be8-ed20-4873-a2ac-d3d27c163fd7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"This puzzle was published around the time I was on the steep part of the curve learning Python better for my new job, so it presented a good opportunity to practice. Some past logs suggest maybe I need more practice since it took me 7 lines (6 if I was sloppy and didn't close the file at the end). But that didn't require pulling the stack apart into straws first, so that should be worth something! Thanks for the fun way to practice.","Created":"2013-01-31","Visited":"2013-01-28","UserName":"Rogue Ramblers","MembershipLevel":3,"AccountID":303728,"AccountGuid":"651e2f56-a171-417f-ad4d-35f224a1001a","Email":"","AvatarImage":"3920a0c2-aaea-48a2-a013-f9a8e7d68e90.jpg","GeocacheFindCount":2999,"GeocacheHideCount":25,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":291011314,"CacheID":3373765,"LogGuid":"fa19155f-c334-45f2-a18d-055ed4186ffb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I certainly liked this puzzle a lot more than the one that inspired/preceded it. Very interesting to see how many different methods were used to solve it, though not surprising. Perhaps that speaks to a certain \"universality\" about this puzzle. I chose to try a built-in feature of my operating system, and the solution popped out six keystrokes later. Wow, nice! Thanks for another good one.","Created":"2013-01-26","Visited":"2013-01-26","UserName":"jimbexleyspeed","MembershipLevel":3,"AccountID":942604,"AccountGuid":"45c5faf5-33a7-4c94-86ae-d40c5d3a1082","Email":"","AvatarImage":"43f9d002-ebba-4fc5-b3d6-6ee6b2b9f883.png","GeocacheFindCount":4039,"GeocacheHideCount":16,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289458748,"CacheID":3373765,"LogGuid":"d931adc5-5035-433f-bd39-d6384fa54d20","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"This was a nice new puzzle idea. I immediately knew what to do and it just took a couple of Unix commands to find the needle.<br /><br />Thw problem I had was more with the listing. For some reason every time I tried to call it up on my GPSr (droid phone) it would say \"cache is unpublished\", which is funny given the CO's previous puzzle... Had to go manual on this one.<br /><br />Once at GZ it was a quick find. Needles were dormant on a Sunday morning. TFTC!","Created":"2013-01-13","Visited":"2013-01-13","UserName":"penguinphloppers","MembershipLevel":3,"AccountID":4615164,"AccountGuid":"d6d67a39-74d1-487a-9394-49be950a95c9","Email":"","AvatarImage":"a202068f-46d2-444f-b38e-eed47a824ebb.jpg","GeocacheFindCount":983,"GeocacheHideCount":10,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":288623638,"CacheID":3373765,"LogGuid":"b3ce81a6-5a4e-4661-a7e7-63bf6e8b2602","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"This was a very quick solve - I knew which tools to use right away after seeing what I had been given. The final is not far off the route home from tu bao bao's daycare, and we stopped by this evening to make the find. She asked me if she could sign the log, but I have trouble keeping my signature small enough on these logs. So I just let her hold the pen while I replaced the cache. That was dangerous enough. Thanks for the puzzle.","Created":"2013-01-08","Visited":"2013-01-08","UserName":"payakoi","MembershipLevel":3,"AccountID":94859,"AccountGuid":"b20a5189-6852-49ba-951f-b3471d3198bf","Email":"","AvatarImage":"","GeocacheFindCount":6007,"GeocacheHideCount":7,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":286866934,"CacheID":3373765,"LogGuid":"497f7b09-92a6-42e0-844f-020eff7c2db7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"I wasn't sure what to make of this when I first read the description, but once I downloaded the haystack I immediately knew what to do. I believe that I have access to the same digital magnet that Team Ottlet used and CBF alluded to in his log. TFTP.","Created":"2012-12-31","Visited":"2012-12-31","UserName":"w00fel","MembershipLevel":3,"AccountID":3948043,"AccountGuid":"371d312e-e828-4da8-8021-651422a44621","Email":"","AvatarImage":"dc6d303c-cc52-476a-94b0-09e98b0ae0bc.jpg","GeocacheFindCount":907,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":286502887,"CacheID":3373765,"LogGuid":"deaed58f-9ce5-4b55-8ad4-f7b3d35380d8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"0731h - My heart sank when I first looked at this one because I thought for sure TNS had duplicated a puzzle idea I've been working on for years. Of course after nearly an hour of trying numerous variations of my puzzle idea I discovered he had not copied my idea at all, but what had he done. As I saw the rapidly growing list of solvers I was in a panic but about that same time I was on my way down to the San Diego area with nothing more than my iPad. While I was away those 10,000 zero-sized files weighed heavy on my mind. How could so many have solved this puzzle I wondered. When I returned I tried a couple of things and discovered what I had previously missed. I then used a single Unix command to find the needle. <br /><br />Thanks to TNS for such a clever and fun one that I have abandoned my related puzzle idea, at least for another few years.","Created":"2012-12-30","Visited":"2012-12-30","UserName":"cachbefound","MembershipLevel":3,"AccountID":1024015,"AccountGuid":"f67ddcbe-5913-4a16-a6f8-61d2ef526712","Email":"","AvatarImage":"93c7a561-7d4c-4933-9712-7c1a00c31131.jpg","GeocacheFindCount":2571,"GeocacheHideCount":147,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":286185586,"CacheID":3373765,"LogGuid":"97e37303-1c6c-4b5c-93b2-bb72109237d5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"My first try ended up with a headache, and several doh's. Even after a nudge I kept coming up with straw. Then I tried something else that was right there all the time. Had a good chuckle when I saw where it was, so many needles to choose from. SL-TFTP&C","Created":"2012-12-29","Visited":"2012-12-29","UserName":"dj's","MembershipLevel":3,"AccountID":2040489,"AccountGuid":"b3cb60ca-51cc-4040-a56d-c940bb9922b2","Email":"","AvatarImage":"8067188f-814b-40cb-9f3a-5655e60027ac.jpg","GeocacheFindCount":3527,"GeocacheHideCount":18,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285990728,"CacheID":3373765,"LogGuid":"063b78b6-3284-40c2-b04f-70db535fa8cb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"<font color=\"orange\">My original plan was to load all 10,000 waypoints into the Garmin and visit each and every one until I found the prize. I then saw some logs suggesting there might be an easier way. Investigated some of these avenues and sure enough they were right. Arrived at the scene and realized that a brute force method might have worked on this in-theme location. Now I've got to search for a nebulous unpublished missive. <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> Thanks for the fun.</font>","Created":"2012-12-28","Visited":"2012-12-28","UserName":"Xklondike","MembershipLevel":3,"AccountID":898386,"AccountGuid":"59a2e9a5-53b9-4040-9d00-89925d074c91","Email":"","AvatarImage":"5f8c43af-421e-4b50-8a3e-4ffb774b9bef.jpg","GeocacheFindCount":7176,"GeocacheHideCount":29,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285789238,"CacheID":3373765,"LogGuid":"accf4b87-425a-4e49-944b-5505bd881f0d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Single-digit to find! (Though not to solve.)<br />Once I'd seen the first piece of Hay it was clear how to find the needle.<br />I think manipulating the log sheet was the trickiest part of it, but fortunately that worked out too.<br />Thanks for the fun!","Created":"2012-12-27","Visited":"2012-12-27","UserName":"Carl LaFong","MembershipLevel":1,"AccountID":181121,"AccountGuid":"a59e0f82-24b4-492f-9928-2b11bb799bc9","Email":"","AvatarImage":"","GeocacheFindCount":179,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 35, "rows": 35 } };
+var gaToken = 'UA-2020240-1';//]]>
</script>
</form>
<script type="text/javascript">
@@ -2082,12 +1193,20 @@ document.getElementById('ctl00_rfvPassword').dispose = function() {
$(".ProfileWidget").toggleClass("WidgetOpen");
$(this).blur();
$("#ctl00_tbUsername").focus();
+ $(document).click(function (e) {
+ if (!$(e.target).parents().hasClass("ProfileWidget")) {
+ $("#SignInWidget").hide();
+ $(".ProfileWidget").removeClass("WidgetOpen");
+ }
+ });
+ return false;
});
- $(".SignInCloseLink").click(function () {
- $("#SignInWidget").toggle();
- $(".ProfileWidget").toggleClass("WidgetOpen");
- });
}
+
+ if (!("placeholder" in document.createElement("input"))) {
+ $("#SignInWidget label").removeClass("hideMe");
+ }
+
$('.SignedInProfileLink').truncate({
width: 120,
after: '&amp;hellip;',
@@ -2114,91 +1233,751 @@ document.getElementById('ctl00_rfvPassword').dispose = function() {
});
</script>
+ <script type="text/javascript">
+ <!--
+
+ function s2gps(guid) {
+ var w = window.open('/seek/sendtogps.aspx?guid=' + guid, 's2gps', config='width=450,height=450,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no');
+ w.focus();
+ }
+
+ function s2phone(wpid) {
+ window.location.href='/seek/sendtophone.aspx?gc=' + wpid;
+ }
+
+ function pl(lc) {
+ document.location.href='/seek/cache_details_print.aspx?guid=' + guid + '&numlogs=' + lc +'&pt=full&lt=letter&decrypt='+ ((dh)?'y':'n');
+ }
- <script id="loc_favPointsScoreDesc" type="text/html">
- Favorites/Premium Logs
- </script>
- <script type="text/javascript" language="javascript">
- <!--
+ function setNotification(id) {
+ //new Effect.Highlight(id, {startcolor:'#ffffff', endcolor:'#ffff99', restorecolor:'#ffff99', duration:3.0, queue:'front'});
+ //new Effect.Highlight(id, {startcolor:'#ffff99', endcolor:'#ffffff', restorecolor:'#ffffff', duration:5.0, queue:'end'});
+ }
+
+ function cmo(id) {
+ Cookie.set('sn', true);
+ }
+
+ function pp(img) {
+ var w = window.open(img);
+ w.focus();
+ }
+ var map, bounds;
+ var canUpdateFavoriteStatus = true;
+ var decryptLogs = (urlParams["decrypt"] && urlParams["decrypt"] == "y") ? true : false;
+ var logInitialLoaded = false;
+ var $tfoot = $("#cache_logs_table").find("tfoot");
+ var currentPageIdx = 1, totalPages = 1, pageSize = 10;
+ var isBusy = false;
+
+ var locString = {
+ decrypt: 'Decrypt',
+ encrypt: 'Encrypt'
+ };
+
+ $("#tmpl_CacheLogImagesTitle").template("tmplCacheLogImagesTitle");
+ $("#tmpl_CacheLogImages").template("tmplCacheLogImages");
+ $("#tmpl_CacheLogRow").template("tmplCacheLogRow");
+
+ $(".EncryptDecrypt")
+ .button({ icons: { secondary: 'ui-icon-arrowreturnthick-1-w'} })
+ .click(function (e) {
+ e.preventDefault();
+ $("tr.log-row").each(function (i, obj) {
+ var $obj = $(obj);
+ if ($obj.data("encoded") == true) {
+ var lt = $obj.find("p.LogText");
+ //var ltDecoded = $('<div />').html(lt.html()).text();
+ lt.html(convertROTStringWithBrackets(lt.html()));
+ }
+ });
+
+ decryptLogs = !decryptLogs;
+ $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
+
+ return false;
+ });
+
+ function appendNewLogs(obj) {
+
+ totalPages = obj.pageInfo.totalPages;
+
+ var $newBody = $(document.createElement("TBODY"));
- var gotScore = false;
- var favDropDown = $('.favorite-dropdown');
- var favContainer = $('.favorite-container');
+ $("#tmpl_CacheLogRow").tmpl(obj.data,{ includeAvatars: includeAvatars }).appendTo($newBody);
- function showFavoriteScore() {
- $('#imgFavoriteScore').attr('src', '/images/loading3.gif');
+ $newBody.find("a.tb_images").each(function()
+ {
+ var $this = $(this);
+ $this.fancybox({
+ 'type': 'image',
+ 'titlePosition': 'inside',
+ 'padding': 10,
+ titleFormat: function() { return $this.data('title'); }
+ });
+ });
- $('#uxFavoriteScore').parent().fadeTo(200, .001, function () {
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/score?u=' + userToken,
- success: function (scoreResult) {
- gotScore = true;
+ $("#cache_logs_table")
+ .append($newBody.children());
- var score = 0;
+ currentPageIdx = obj.pageInfo.idx + 1;
+ pageSize = obj.pageInfo.size;
+ }
- if(scoreResult)
- score = scoreResult;
+ var showScroll = false;
- if(score > 100)
- score = 100;
-
- $('#imgFavoriteScore').attr('src', '/images/favorites/piecharts/' + score + '.png');
- var pieDesc = (score < 1 ? "<1" : score) + '% ' + $("#loc_favPointsScoreDesc").text().trim();
- $('#imgFavoriteScore').attr('alt', pieDesc);
- $('#imgFavoriteScore').attr('title', pieDesc);
+ function callLogLoad(hideFooter) {
+ if (screen.width > 1090){
+ showScroll = true;
+ }
+ $.getJSON("/seek/geocache.logbook", { tkn: userToken, idx: currentPageIdx, num: pageSize, decrypt: decryptLogs },
+ function (response) {
+ if (response.status == "success") {
+ appendNewLogs(response);
+ if( hideFooter || (totalPages < currentPageIdx) ) {
+ $tfoot.hide();
+ }
+ } else if (response.status == "error" && response.value == "1") {
+ // reload the page since the data had expired.
+ window.location.reload();
+ }
+ isBusy = false;
+ });
+ }
+
+ $("#add_to_favorites").click(function () {
+
+ if (canUpdateFavoriteStatus) {
+ canUpdateFavoriteStatus = false;
+
+ var fv = parseInt($(".favorite-value").text());
+ fv++;
+ $(".favorite-value").text(fv);
+
+ var fr = parseInt($(".favorite-rank").text());
+ fr--;
+ $(".favorite-rank").text(fr);
+
+ $("#pnlNonfavoriteCache").fadeOut("fast", function () {
+ $("#pnlFavoriteCache").fadeIn("fast");
+ });
+
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/update?u=' + userToken + '&f=true',
+ success: function () {
+ canUpdateFavoriteStatus = true;
+ gotScore = false;
+ showFavoriteScore();
+ }
+ });
+
+ return false;
+ }
+ });
+
+ $("#remove_from_favorites").click(function () {
+
+ if (canUpdateFavoriteStatus) {
+ canUpdateFavoriteStatus = false;
+
+ var fv = parseInt($(".favorite-value").text());
+ fv--;
+ $(".favorite-value").text(fv);
+
+ var fr = parseInt($(".favorite-rank").text());
+ fr++;
+ $(".favorite-rank").text(fr);
+
+ $("#pnlFavoriteCache").fadeOut("fast", function () {
+ $("#pnlNonfavoriteCache").fadeIn("fast");
+ });
+
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/update?u=' + userToken + '&f=false',
+ success: function () {
+ canUpdateFavoriteStatus = true;
+ gotScore = false;
+ showFavoriteScore();
+ }
+ });
+
+ return false;
+ }
+ });
- $('#uxFavoriteScore').parent().fadeTo(1000, 1);
- $('#uxFavoriteScore').html('<strong>' + (score < 1 ? "<1" : score) + '%</strong> ' + $("#loc_favPointsScoreDesc").html());
+ $(function () {
+
+ // CSP Section
+ if ($("#cspMessage").length) {
+
+ var editLink = $('a[href*="report.aspx"]').attr('href');
+
+ $("#cspMessage").prepend('<P>Please take a moment to check the listing and ensure it is ready to enable. Clicking "Submit for Review" will enable your cache page.</P>');
+ $("#cspMessage").prepend('<P>Once it is enabled, you will receive a confirmation email that it was successfully submitted. It is peak season for cache placement. Your volunteer reviewer will strive to begin the review process within the next 7 days.</P>');
+ $("#cspMessage").prepend('<P>Your cache page has not been reviewed yet. It will not appear in the review queue until you enable it.</P>');
+
+ $("#cspGoBack").click(function (e) {
+ e.preventDefault();
+ window.location = editLink;
+ return false;
+ });
+
+ $("#cspSubmit").click(function (e) {
+ e.preventDefault();
+ $.pageMethod("/seek/cache_details.aspx/EnableCSPCache", JSON.stringify({ dto: { ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.success == true) {
+ window.location = '/seek/cache_details.aspx?guid=' + r.guid;
+ } else {
+ alert("There was an error enabling your cache.");
}
});
+ return false;
+ });
+
+ $("#cspConfirm").change(function() {
+ if ($("#cspConfirm").is(":checked")) {
+ $("#cspSubmit").removeAttr('disabled');
+ $("#cspGoBack").attr('disabled', true);
+ } else {
+ $("#cspSubmit").attr('disabled', true);
+ $("#cspGoBack").removeAttr('disabled');
+ }
});
}
-
+
+ //override coords
+ if (typeof(userDefinedCoords) != "undefined") {
+ if (userDefinedCoords.status == "success" && userDefinedCoords.data.isUserDefined == true) {
+ mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
+ $("#uxLatLon")
+ .data("isOverridden", true)
+ .addClass("myLatLon");
+ } else if (userDefinedCoords.status == "success") {
+ mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
+ } else {
+ $("#uxLatLonLink").contents().unwrap();
+ }
+ } else {
+ $("#uxLatLonLink").contents().unwrap();
+ }
- $(document).bind('mouseup', function (e) {
- var $clicked = $(e.target);
+ var cacheNoteText = {
+ DefaultText: 'Click to enter a note',
+ ErrorInSaving: 'There was an error saving page. Please refresh the page and try again.',
+ SavingText: 'Please wait, saving your note...'
+ };
+
- if (!$clicked.parents().hasClass("favorite-dropdown") && !$clicked.parents().hasClass("FavoriteWidget")) {
- favDropDown.hide(1, function () {
- favContainer.addClass('favorite-container');
- favContainer.removeClass('favorite-container-open');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-down.png');
+
+ $("time.timeago").timeago();
+
+ $(".button").button();
+
+ var sn = Cookie.get('sn');
+
+ if ($('#trNotPM').length > 0) {
+ $('#trNotPM').toggle(!sn);
+ }
+
+ $("#cache_note").editInPlace({
+ callback: function (unused, enteredText) {
+ var me = $(this);
+
+ var et = $.trim(enteredText);
+ if (et.length > 500 ) {
+ et = et.substr(0, 500);
+ }
+ $.pageMethod("/seek/cache_details.aspx/SetUserCacheNote", JSON.stringify({ dto: { et: et, ut: userToken} }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.success == true) {
+ if ($.trim(r.note) == "") {
+ $("#cache_note").text(cacheNoteText.DefaultText);
+ } else {
+ $("#cache_note").text(r.note);
+ }
+
+ me.effect('highlight', { color: '#ffb84c' }, 'slow');
+ } else {
+ alert(cacheNoteText.ErrorInSaving);
+ $("#cache_note").text(cacheNoteText.DefaultText);
+ }
+
});
+
+ return cacheNoteText.SavingText;
}
+ , default_text: cacheNoteText.DefaultText
+ , field_type: "textarea"
+ , textarea_rows: "7"
+ , textarea_cols: "65"
+ , show_buttons: true
+ , bg_over: "#dad7cb"
+ //, callback_skip_dom_reset: true
+
+ });
+
+ $("#lnk_slippyMap").click(function(e) {
+ e.preventDefault();
+ loadDynamicMap();
+ return false;
});
- $('#uxFavContainerLink').click(function () {
- if ($(favDropDown).is(':visible')) {
- favDropDown.hide(1, function(){
- favContainer.addClass('favorite-container');
- favContainer.removeClass('favorite-container-open');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-down.png');
- });
+ $(".inplace_field").live("focus", function () {
+ if ($(this).data("created") == null) {
+ $(this).data("created", true)
+ $(this).countable({
+ maxLength: 500
+ });
+ }
+ });
+
+ $("#pcn_help").qtip({
+ content: 'Enter your own notes here. No other user will be able to access them.',
+ position: {
+ my: 'top center',
+ at: 'bottom center'
+ },
+ style: {
+ classes: 'ui-tooltip-dark ui-tooltip-rounded pcn-tooltip'
+ },
+ });
+ $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
+
+ if ($("#cache_logs_container").length > 0) {
+
+ appendNewLogs(initalLogs);
+
+ if (DetectMobileQuick()) {
+ $("#pnlButtonLoad")
+ .show()
+ .find("a.MobileButton")
+ .click(function (e) {
+ e.preventDefault();
+ callLogLoad(false);
+ return false;
+ })
+ .button();
+ if(!DetectTierTablet()){
+ $("a.MobileButton").addClass("Phone");
+ }
+ } else {
+ $("#pnlLazyLoad").show();
+
+ $(window).endlessScroll({
+ fireOnce: true,
+ fireDelay: 500,
+ bottomPixels: ($(document).height() - $("#cache_logs_container").offset().top) + 50,
+ ceaseFire: function(){
+ // stop the scrolling if the last page is reached.
+ return (isLoggedIn == false) || (totalPages < currentPageIdx);
+ },
+ callback: function() {
+ if (!isBusy) {
+
+ isBusy = true;
+ $tfoot.show();
+ callLogLoad(true);
+ }
+ }
+ });
}
- else {
- if (!gotScore) {
- showFavoriteScore();
+ }
+
+ if (!isLoggedIn) {
+ $("#cache_logs_table").find("tfoot").hide();
+ }
+
+ if (mapLatLng != null) {
+
+ $("#uxLatLonLink").qtip({
+ suppress:false,
+ content: buildCacheCoordMenu(),
+ position: {
+ my: 'left top',
+ at: 'right top',
+ adjust: {
+ x: 10, y: -10
+ }
+ },
+ show: {
+ ready: false,
+ event: "click",
+ solo: true
+ }, hide: {
+ event: 'unfocus'
+ },
+ style: {
+ tip: {
+ corner: false
+ },
+ classes: 'ui-tooltip-widget'
+ },
+ events: {
+ show: function () {
+ if ($("#uxLatLon").data("isOverridden")) {
+ $("a.ccu-restore").show();
+ } else {
+ $("a.ccu-restore").hide();
+ }
+
+ if (userDefinedCoords.status != "success") {
+ $("div.ccu-update").hide();
+ } else {
+ $("div.ccu-update").show();
+ }
+ }
+ }
+ }).click(function (e) {
+ e.preventDefault();
+ return false;
+ });
+
+ setStaticMaps();
+ //$("#staticMap").lazyload();
+ }
+ });
+
+ function setStaticMaps() {
+ var llBounds = new L.LatLngBounds();
+
+ var map = new L.Map('map_preview_canvas', {
+ center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ zoom: 10,
+ doubleClickZoom: false,
+ dragging: false,
+ touchZoom: false,
+ scrollWheelZoom: false,
+ attributionControl: false
+ })
+ .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }));
+
+ var mapLarge = new L.Map('map_canvas', {
+ center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ zoom: 14,
+ doubleClickZoom: true,
+ dragging: true,
+ touchZoom: false,
+ scrollWheelZoom: false,
+ zoomControl: true,
+ attributionControl: false
+ })
+ .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }))
+ .addControl(new L.Control.Scale());
+
+ llBounds.extend(new L.LatLng(mapLatLng.lat, mapLatLng.lng));
+
+ var tileOptions = {
+ tileUrl: "http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg",
+ name: "mpqosm",
+ alt: "MapQuest",
+ //attribution: "Tiles Courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>, Map and map data © 2012 <a href=\"http://www.openstreetmap.org\" target='_blank'>OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>. ",
+ subdomains: "1234",
+ tileSize: 256,
+ minZoom: 0,
+ maxZoom: 18
+ };
+
+ map.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
+ mapLarge.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
+
+ var pinIcon = L.Icon.extend({
+ iconSize: new L.Point(20, 23),
+ iconAnchor: new L.Point(10,23),
+ shadowUrl: null
+ });
+
+ var mkA = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng),
+ {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
+ title: mapLatLng.name
+ })
+ .on("click", function () {
+ document.getElementById("uxlrgMap").scrollIntoView(true);
+ return false;
+ });
+
+ var mkA2 = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng), {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
+ clickable: false, zIndexOffset:99, title: mapLatLng.name
+ });
+
+ map.addLayer(mkA);
+ mapLarge.addLayer(mkA2);
+
+ $("#ctl00_ContentBody_uxNotesAboutPrinting").fancybox({
+ overlayShow: false
+ });
+
+ if (cmapAdditionalWaypoints != null && cmapAdditionalWaypoints.length > 0) {
+
+ for (var x = 0, len = cmapAdditionalWaypoints.length; x < len; x++) {
+
+ var item = cmapAdditionalWaypoints[x],
+ ll = new L.LatLng(item.lat, item.lng),
+ marker = new L.Marker(ll, {
+ icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + item.type + '.png', iconAnchor: new L.Point(10,23)}),
+ title: item.name,
+ clickable:false
+ });
+
+ llBounds.extend(ll);
+ mapLarge.addLayer(marker);
+ }
+ var bz = mapLarge.getBoundsZoom(llBounds.pad(1.1));
+
+ mapLarge.setView(new L.LatLng(mapLatLng.lat, mapLatLng.lng), bz);
+ }
+ }
+
+ var lnkDH = $('#ctl00_ContentBody_lnkDH');
+ function dht() {
+ try {
+ $('#div_hint').html(convertROTStringWithBrackets($('#div_hint').html()));
+ var linkText = ((lnkDH.attr('title') == 'Decrypt') ? 'Encrypt' : 'Decrypt');
+ lnkDH
+ .text(linkText)
+ .attr('title', linkText);
+ } catch (e) {
+ alert(e);
+ return false;
+ }
+ return false;
+ }
+
+ function buildCacheCoordMenu() {
+ var curLatLng = new LatLon(mapLatLng.lat, mapLatLng.lng)
+ $.template( "tmplCacheCoordinateUpdate_CoordItem", "<tr><td nowrap='nowrap'>${t}</td><td class='ccc-coord' nowrap='nowrap' dataum='${k}'>${v}</td></tr>" );
+
+ var $menu = $("<div></div>");
+
+ $( "#tmpl_CacheCoordinateUpdate" ).tmpl( {
+ ll: [mapLatLng.lat, mapLatLng.lng],
+ ll_formatted: mapLatLng.oldLatLngDisplay
+ } ).appendTo( $menu );
+
+ $menu.find("button.ccu-button").button();
+
+ $menu.delegate("button.ccu-parse", "click", function (e) {
+ e.preventDefault();
+ var $this = $(e.target),
+ $parse =$this.closest('dd').find(".cc-parse-text"),
+ parseCoords = $.trim($parse.val());
+
+ if (parseCoords.length == 0) {
+ alert('Please provide valid coordinates.');
+ } else {
+ $.getJSON("/api/geocode", { parse: parseCoords}, function (response) {
+ if (response.status == "success") {
+ var newLatLng = new LatLon(response.data.lat, response.data.lng);
+
+ // update the displayed coords
+ var dist = curLatLng.rhumbDistanceTo(newLatLng);
+ var bearingTo = curLatLng.rhumbBearingTo(newLatLng);
+ var bearing = bearingTo >= 0 || bearingTo < 22.5 ? "N" : bearingTo >= 22.5 || bearingTo < 67.5 ? "NE" : bearingTo >= 67.5 || bearingTo < 112.5 ? "E" : bearingTo >= 112.5 || bearingTo < 157.5 ? "SE" : bearingTo >= 157.5 || bearingTo < 202.5 ? "S" : bearingTo >= 202.5 || bearingTo < 247.5 ? "SW" : bearingTo >= 247.5 || bearingTo < 292.5 ? "W" : bearingTo >= 292.5 || bearingTo < 337.5 ? "NW" : "N";
+
+ var formats = response.data.formats;
+ // all these finds, make me feel dirty
+ $menu
+ .find("span.ccu-parseverify-coords").text(formats.DM).end()
+ .find("dl.ccu-parse").hide().end()
+ .find("dl.ccu-parseverify").show().end()
+ .find("button.ccu-parseverify-accept")
+ .data("utm", '')
+ .data("dm", formats.DM)
+ .data("lat", response.data.lat)
+ .data("lng", response.data.lng)
+ .end();
+ } else {
+ alert("Sorry unable to parse the coordinates you entered.");
+ }
+ });
+ }
+
+ return false;
+ });
+
+ $menu.delegate("button.ccu-parseverify-accept", "click", function (e) {
+ e.preventDefault();
+ var $this = $(this);
+ // update to webmethod
+ $.pageMethod("/seek/cache_details.aspx/SetUserCoordinate", JSON.stringify({ dto: { data: {lat: $this.data("lat"), lng: $this.data("lng") }, ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.status == "success") {
+ window.location.reload();
+ } else {
+ $("#uxLatLonLink").qtip('hide');
}
+
+ });
+
+ return false;
+ });
- favContainer.addClass('favorite-container-open');
- favContainer.removeClass('favorite-container');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-up.png');
- favDropDown.show(1);
+ $menu.delegate("button.ccu-parseverify-cancel", "click", function (e) {
+ e.preventDefault();
+ $menu
+ .find("input.cc-parse-text").val('').end()
+ .find("dl.ccu-parse").show().end()
+ .find("dl.ccu-parseverify").hide().end();
+ return false;
+ });
+
+ $menu.delegate("a.ccu-restore", "click", function (e) {
+ e.preventDefault();
+
+ $.pageMethod("/seek/cache_details.aspx/ResetUserCoordinate", JSON.stringify({ dto: { ut: userToken } }), function (r) {
+ var r = JSON.parse(r.d);
+ if (r.status == "success") {
+ window.location.reload();
+ }
+ });
+
+ return false;
+ });
+
+ return $menu;
+ }
+
+ GSPK = window.GSPK || {};
+ GSPK.Selector = {};
+ GSPK.Selector.getSelected = function(){
+ var t = null;
+ if ( window.getSelection ){
+ t = window.getSelection();
+ }else if(document.getSelection){
+ t = document.getSelection();
+ }else if(document.selection){
+ t = document.selection.createRange().text;
+ }
+ return t;
+ }
+ //-->
+ </script>
+ <script id="loc_favPointsScoreDesc" type="text/html">
+ Favorites/Premium Logs
+ </script>
+ <script type="text/javascript" language="javascript">
+ <!--
+ var gotScore = false;
+ var favDropDown = $('.favorite-dropdown');
+ var favContainer = $('.favorite-container');
+
+ function showFavoriteScore() {
+ $('#imgFavoriteScore').attr('src', '/images/loading3.gif');
+
+ $('#uxFavoriteScore').parent().fadeTo(200, .001, function () {
+ $.ajax({
+ type: "POST",
+ cache: false,
+ url: '/datastore/favorites.svc/score?u=' + userToken,
+ success: function (scoreResult) {
+ gotScore = true;
+
+ var score = 0;
+
+ if(scoreResult)
+ score = scoreResult;
+
+ if(score > 100)
+ score = 100;
+
+ $('#imgFavoriteScore').attr('src', '/images/favorites/piecharts/' + score + '.png');
+ var pieDesc = (score < 1 ? "<1" : score) + '% ' + $("#loc_favPointsScoreDesc").text().trim();
+ $('#imgFavoriteScore').attr('alt', pieDesc);
+ $('#imgFavoriteScore').attr('title', pieDesc);
+
+ $('#uxFavoriteScore').parent().fadeTo(1000, 1);
+ $('#uxFavoriteScore').html('<strong>' + (score < 1 ? "<1" : score) + '%</strong> ' + $("#loc_favPointsScoreDesc").html());
+ }
+ });
+ });
+ }
+ var scrollId = false,
+ logTop = 0;
+
+ if (document.getElementById("cache_logs_container") != null){
+ logTop = $("#cache_logs_container").position().top;
+ }
+ $(window).on("scroll", function() {
+ if (scrollId != false) {
+ window.clearTimeout(scrollId);
+ scrollId = false;
+ }
+
+ scrollId = window.setTimeout(function() {
+ if (showScroll){
+ if ($(this).scrollTop()< logTop) {
+ $("#topScroll").fadeOut();
+ } else {
+ $("#topScroll").fadeIn();
}
+ }}, 250);
+ });
+
+ $(document).bind('mouseup', function (e) {
+ var $clicked = $(e.target);
+ if (!$clicked.parents().hasClass("favorite-dropdown") && !$clicked.parents().hasClass("FavoriteWidget")) {
+ favDropDown.hide(1, function () {
+ favContainer.addClass('favorite-container');
+ favContainer.removeClass('favorite-container-open');
});
- // End -->
+ }
+ if ($('#log-dropdown-options').is(':visible') && !$clicked.parents().hasClass('Dropdown')){
+ $('#log-dropdown-options').toggleClass('hideMe');
+ $('.Dropdown').toggleClass('Active');
+ }
+ });
+
+ $('#uxFavContainerLink').click(function () {
+ if ($(favDropDown).is(':visible')) {
+ favDropDown.hide(1, function(){
+ favContainer.addClass('favorite-container');
+ favContainer.removeClass('favorite-container-open');
+ });
+ }
+ else {
+ if (!gotScore) {
+ showFavoriteScore();
+ }
+
+ favContainer.addClass('favorite-container-open');
+ favContainer.removeClass('favorite-container');
+ favDropDown.show(1);
+ }
+ });
+
+ $('#dropdown-arrow').on('click', function(e){
+ e.preventDefault();
+ $('#log-dropdown-options').toggleClass('hideMe');
+ $('.Dropdown').toggleClass('Active');
+ });
+ // End -->
</script>
-
<script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-2020240-1']);
+ $(document).ready(function () {
+ $('#hlUpgrade').bind('click', function () {
+ var _this = $(this);
+ _gaq.push(['_trackEvent', 'Geocaching', 'Premium Upsell', 'Mini-profile Widget']);
+ setTimeout(function () { // Chrome requires a slight delay for tracking to fire.
+ window.location.href = _this.attr('href');
+ }, 100);
+ return false;
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ _gaq.push(['_require', 'inpage_linkid', '//www.google-analytics.com/plugins/ga/inpage_linkid.js']);
+ _gaq.push(['_setAccount', gaToken]);
_gaq.push(['_trackPageview']);
(function () {
var ga = document.createElement('script');
@@ -2215,8 +1994,6 @@ document.getElementById('ctl00_rfvPassword').dispose = function() {
});
});
</script>
-
-
<!-- Quantcast Tag -->
<div id="Quantcast">
<script type="text/javascript">
@@ -2238,11 +2015,11 @@ document.getElementById('ctl00_rfvPassword').dispose = function() {
<noscript>
<div style="display: none;">
<img src="http://pixel.quantserve.com/pixel/p-f6VPrfmR4cujU.gif" height="1" width="1"
- alt="Quantcast" /></div>
+ alt="Quantcast" />
+ </div>
</noscript>
</div>
<!-- End Quantcast tag -->
-
- <!-- Server: WEB03; Build: Web.HotFix_20121211.1 -->
+ <!-- Server: WEB13; Build: Web.HotFix_20130904.1 -->
</body>
</html>
diff --git a/tests/res/raw/gc433yc_owner_unpublished.html b/tests/res/raw/gc433yc_owner_unpublished.html
deleted file mode 100644
index aa144b0..0000000
--- a/tests/res/raw/gc433yc_owner_unpublished.html
+++ /dev/null
@@ -1,2188 +0,0 @@
-<!DOCTYPE html>
-<html class=" js flexbox canvas canvastext webgl no-touch geolocation postmessage no-websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients no-cssreflections csstransforms csstransforms3d csstransitions fontface video audio localstorage sessionstorage webworkers applicationcache svg inlinesvg smil svgclippaths" lang="en"><script id="bug.surrogate">var urchinTracker=function(){},_gaq={push:function(){try {if(arguments[0][0]=='_link')window.location.href=arguments[0][1]}catch(er){}}},_gat={_createTracker:function(){}, _getTracker:function(){return{__noSuchMethod__:function(){},_link:function(o){if(o)location.href=o;},_linkByPost:function(){return true;},_getLinkerUrl:function(o){return o;},_trackEvent:function(){}}}}; if (document.location.host == 'www.salon.com') {var _ga_ = document.querySelectorAll('script[src$=ga\\.js]')[0], ga_e = document.createEvent('Event'); ga_e.initEvent('load', true, true);_ga_.dispatchEvent(ga_e);}</script><head id="ctl00_Head1">
-<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta charset="utf-8">
- <!--[if IE]><![endif]-->
- <title>
- GC433YC Stenarna (Earthcache) in Södermanland, Sweden created by ra_sch
-</title><meta name="DC.title" content="Geocaching - The Official Global GPS Cache Hunt Site"><meta id="ctl00_ogTitle" property="og:title" content="Geocaching - The Official Global GPS Cache Hunt Site"><meta id="ctl00_ogSiteName" property="og:site_name" content="Geocaching - The Official Global GPS Cache Hunt Site"><meta id="ctl00_ogType" property="og:type" content="website"><meta id="ctl00_ogUrl" property="og:url" content="http://www.geocaching.com/"><meta name="author" content="Groundspeak, Inc."><meta name="DC.creator" content="Groundspeak, Inc."><meta name="Copyright" content="Copyright (c) 2000-2012 Groundspeak, Inc. All Rights Reserved."><!-- Copyright (c) 2000-2012 Groundspeak, Inc. All Rights Reserved. --><meta name="description" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world."><meta name="DC.subject" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world."><meta id="ctl00_ogDescription" property="og:description" content="Geocaching is a treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity. Geocaching.com is the listing service for geocaches around the world."><meta http-equiv="imagetoolbar" content="no"><meta name="distribution" content="global"><meta name="MSSmartTagsPreventParsing" content="true"><meta name="rating" content="general"><meta name="revisit-after" content="1 days"><meta name="robots" content="all"><meta http-equiv="X-UA-Compatible" content="IE=8"><link rel="icon" href="http://www.geocaching.com/favicon.ico"><link rel="shortcut icon" href="http://www.geocaching.com/favicon.ico"><link rel="apple-touch-icon" href="http://www.geocaching.com/apple-touch-icon.png"><link id="ctl00_imageSrc" rel="image_src" href="http://www.geocaching.com/preview.png"><meta id="ctl00_ogImage" property="og:image" content="/preview.png"><link rel="stylesheet" type="text/css" media="all" href="gc433yc_files/reset.css"><link rel="stylesheet" type="text/css" media="all" href="gc433yc_files/typography.css"><link rel="stylesheet" type="text/css" media="screen,projection" href="gc433yc_files/grid.css">
- <!--[if lt IE 8]>
- <link rel="stylesheet" type="text/css" media="all" href="../css/blueprint/ie.css" />
- <![endif]-->
- <link id="uxCssMaster" rel="stylesheet" type="text/css" media="screen,projection" href="gc433yc_files/tlnMasterScreen.css"><link id="uxCssMain" rel="stylesheet" type="text/css" media="all" href="gc433yc_files/tlnMain.css"><link rel="Stylesheet" type="text/css" media="all" href="gc433yc_files/jquery-ui-1.css"><link rel="stylesheet" type="text/css" media="all" href="gc433yc_files/jquery.css"><link rel="stylesheet" type="text/css" media="print" href="gc433yc_files/tlnMasterPrint.css">
- <script type="text/javascript" src="gc433yc_files/modernizr-1.js"></script>
- <script type="text/javascript" src="gc433yc_files/jquery_002.js"></script>
- <script type="text/javascript" src="gc433yc_files/jquery-ui.js"></script>
- <script type="text/javascript" src="gc433yc_files/jquery_003.js"></script>
-
-
-
- <link href="gc433yc_files/jquery_004.css" rel="stylesheet" type="text/css">
- <link href="gc433yc_files/jquery_003.css" rel="stylesheet" type="text/css">
- <link href="gc433yc_files/tipTip.css" rel="stylesheet" type="text/css">
- <link href="gc433yc_files/jquery_002.css" rel="stylesheet" type="text/css">
- <!--[if lte IE 8]>
- <style type="text/css" media="all">
- legend{
- position: absolute;
- top: -.6em;
- left: 1em;
- line-height: 1.3;
- }
- fieldset p{
- margin-top:1em;
- }
- img.CacheNoteHelpImg{
- top:-.2em;
- }
- </style>
- <![endif]-->
- <style type="text/css" media="screen,projection">
- #otherSearchOptions li
- {
- list-style-image: none;
- list-style-position: outside;
- list-style-type: none;
- }
- .ff
- {
- font-family: "Andale Mono" , "Courier New" ,Courier,monospace;
- }
- .fr
- {
- margin-top: 1.5em;
- float: right;
- }
- .fl
- {
- float: left;
- }
- .clsCell
- {
- border: 1px solid #c0cee3;
- font-size: 80%;
- background-color: #fff;
- }
- .clsResultTitle, .clsResultTitleNoBold
- {
- color: #0000de;
- }
- .clsResultDescription
- {
- color: #333;
- }
- .clsURL
- {
- color: #999;
- }
- a.title:link, a.title:visited, a.title:hover, a.title:active
- {
- color: #000;
- text-decoration: underline;
- }
- a.title
- {
- text-align: right;
- font-size: 10px;
- font-family: arial,sans-serif;
- padding: 0 1px 0 0;
- }
- #mapSizePager a:hover
- {
- font-weight: bold;
- }
- #mapSizePager ul
- {
- width: 100%;
- margin: 0;
- padding: 0;
- list-style: none;
- }
- #mapSizePager li
- {
- float: left;
- list-style: none;
- }
- #mapSizePager li a
- {
- font-family: verdana,sans-serif;
- font-size: x-small;
- display: block;
- margin: 0 2px 0 0;
- padding: 4px;
- text-decoration: none;
- border: solid 1px #c0c0c0;
- height: 10px;
- min-width: 10px;
- cursor: pointer;
- }
- #mapPrintingNotes
- {
- width: 280px;
- text-align: left;
- overflow: auto;
- }
- .inplace_field {
- width:100%;
- resize: none;
- }
- legend.note{
- background:url('../images/icons/16/user_note.png') no-repeat 0 0;
- padding-left:18px;
- }
- legend.warning{
- background:url('../images/icons/16/take_note.png') no-repeat 0 0;
- padding-left:18px;
- }
- fieldset.CacheNote{
- border-color: #e9a24c !important;
- background-color:#ffffde;
- position:relative;
- }
- .CacheNoteHelpImg{
- position:relative;
- cursor:pointer;
- top:-1em;
- right:-.75em;
- float:right;
- }
- .InformationWidget h3{
- margin-bottom:.5em;
- }
- .InformationWidget .AlignRight{
- font-size:.8em;
- }
- #tiptip_content{
- *background-color:#000;
- box-shadow:none;
- }
- .maxed{
- color:#992a2a;
- }
-
-
- span.ccu-parseverify-distance img{
- text-align:center !important;
- vertical-align:text-bottom !important;
- }
- .edit-cache-coordinates{
- text-decoration: none;
- color: #000 !important;
- background: url(/images/icons/16/edit.png) no-repeat right 0;
- padding:2px 20px 2px 0px;
- margin-right:4px;
- }
- .ccc-coord{
- cursor: text;
- font-family: Courier New, Sans-Serif;
- }
- .ccu-update dl {
- margin-bottom:.25em;
- }
- .ccu-update dt{
- float:left;
- min-width:90px;
- }
- .ccu-update .ui-button-text-only .ui-button-text{
- padding:.3em .75em;
- }
- .ccu-parseverify-coords{
- font-style:italic;
- margin-right:.25em;
- }
- .ccu-parseverify-accept, .ccu-parseverify-cancel{
- margin-top:-5px;
- }
- .ui-tooltip-widget .ui-tooltip-content{
- border-width:1px;
- background-color:#fff;
- border-color:#c0cee3;
- color:#594a42;
- padding:1em;
- width:420px;
- }
- .myLatLon {
- border-bottom:2px solid #c0cee3;
- font-style:italic;
- }
- .leaflet-control-attribution{
- padding:3px !important;
- }
- .leaflet-control-attribution img{
- vertical-align:middle;
- }
- </style>
- <link rel="Stylesheet" type="text/css" media="screen" href="gc433yc_files/CSPScreen.css">
- <link rel="stylesheet" type="text/css" media="all" href="gc433yc_files/leaflet.css">
- <!--[if IE]>
- <link rel="stylesheet" type="text/css" media="all" href="/js/leaflet/v5/leaflet.ie.css" />
- <![endif]-->
- <script type="text/javascript" language="javascript" src="gc433yc_files/leaflet.js"></script>
- <script type="text/javascript" src="gc433yc_files/jquery.js"></script>
- <script type="text/javascript" src="gc433yc_files/geometa.js"></script>
- <script type="text/javascript">
- var userToken = null,
- urlParams = {},
- mapLatLng = null,
- cmapAdditionalWaypoints = [],
- initalLogs = null, totalLogs = 0, includeAvatars = false;
-
- (function () {
- var e,
- d = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); },
- q = window.location.search.substring(1),
- r = /([^&=]+)=?([^&]*)/g;
-
- while (e = r.exec(q)) {
- urlParams[d(e[1])] = d(e[2]);
- }
- })();
- </script>
-<meta name="description" content="Stenarna (GC433YC) was created by ra_sch on 12/21/2012. It's a Not chosen size geocache, with difficulty of 1.5, terrain of 1.5. It's located in Södermanland, Sweden. "><style type="text/css">/** GCTour - Container*/#gctourButtonWrapper { height: 32px !important; padding: 0 !important; position: fixed !important; top: 30px !important; width: 35px !important; background-color: #fff; z-index: 100001 !important; border: 1px solid #333; border-width: 1px 1px 1px 0; border-radius: 0 5px 5px 0; -moz-user-select: none;}#gctourButtonWrapper img { position: relative; top: 8px; left: 8px;}#gctourContainer { background-color: #fff; overflow: hidden; left: -210px; padding: 0 !important; position: fixed !important; top: 30px !important; width: 200px; z-index: 100002 !important; border: 1px solid #333; border-left: 0px; border-radius: 0 5px 5px 0; font-size: 12px; line-height: 1.5;}#gctourContainer .cachelist { width: 100%; margin: 0; padding:0; font-size:80%; list-style-type:none;}#gctourContainer .cachelist li { color:#000; margin:0.5em; padding:3px; width:120px; min-height:44px; list-style-position:inside; border:1pt dashed gray; background-color:#FFF; -moz-background-clip:border; -moz-background-inline-policy:continuous; -moz-background-origin:padding; -moz-border-radius:8px 0 8px 0; border-radius:8px 0 8px 0;}#gctourContainer img.imgShadow { -moz-box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2); box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2); background-color: lightgray;}#gctourContainer img.tourImage { cursor: pointer; margin: 0 2px 0 2px;}/* Styling the placeholder for when the user starts dragging an item */#gctourContainer li.ui-sortable-placeholder { min-height:50px; max-height:80px; width: 90%; background-color: rgba(0, 0, 0, 0.03);}/** GCTour - Grand*/.gctour-grand-default { /* http://www.colorzilla.com/gradient-editor/#a7cfef+0,c9dded+3,ffffff+10;gctour-grand-default * http://css3please.com/ */ background: rgb(167,207,239); /* Old browsers */ background: -moz-linear-gradient(top, rgba(167,207,239,1) 0%, rgba(201,221,237,1) 3px, rgba(255,255,255,1) 10px); /* FF3.6+ */ background: -webkit-linear-gradient(top, rgba(167,207,239,1) 0%,rgba(201,221,237,1) 3px,rgba(255,255,255,1) 10px); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, rgba(167,207,239,1) 0%,rgba(201,221,237,1) 3px,rgba(255,255,255,1) 10px); /* Opera 11.10+ */ background: linear-gradient(top, rgba(167,207,239,1) 0%,rgba(201,221,237,1) 3px,rgba(255,255,255,1) 10px); /* W3C */}.gctour-grand-hover { /* http://www.colorzilla.com/gradient-editor/#ffad32+0,ffd699+3,ffffff+10;gctour-grand-hover */ background: rgb(255,173,50); /* Old browsers */ background: -moz-linear-gradient(top, rgba(255,173,50,1) 0%, rgba(255,214,153,1) 3px, rgba(255,255,255,1) 10px); /* FF3.6+ */ background: -webkit-linear-gradient(top, rgba(255,173,50,1) 0%,rgba(255,214,153,1) 3px,rgba(255,255,255,1) 10px); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, rgba(255,173,50,1) 0%,rgba(255,214,153,1) 3px,rgba(255,255,255,1) 10px); /* Opera 11.10+ */ background: linear-gradient(top, rgba(255,173,50,1) 0%,rgba(255,214,153,1) 3px,rgba(255,255,255,1) 10px); /* W3C */}.gctour-grand-highlight { /* http://www.colorzilla.com/gradient-editor/#ffe000+0,ffee7f+3,ffffff+10;gctour-grand-highlight */ background: rgb(255,224,0); /* Old browsers */ background: -moz-linear-gradient(top, rgba(255,224,0,1) 0%, rgba(255,238,127,1) 3px, rgba(255,255,255,1) 10px); /* FF3.6+ */ background: -webkit-linear-gradient(top, rgba(255,224,0,1) 0%,rgba(255,238,127,1) 3px,rgba(255,255,255,1) 10px); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, rgba(255,224,0,1) 0%,rgba(255,238,127,1) 3px,rgba(255,255,255,1) 10px); /* Opera 11.10+ */ background: linear-gradient(top, rgba(255,224,0,1) 0%,rgba(255,238,127,1) 3px,rgba(255,255,255,1) 10px); /* W3C */}.gctour-grand-active { /* Grün http://www.colorzilla.com/gradient-editor/#3dff32+0,9eff99+3,ffffff+10;gctour-grand-active */ background: rgb(61,255,50); /* Old browsers */ background: -moz-linear-gradient(top, rgba(61,255,50,1) 0%, rgba(158,255,153,1) 3px, rgba(255,255,255,1) 10px); /* FF3.6+ */ background: -webkit-linear-gradient(top, rgba(61,255,50,1) 0%,rgba(158,255,153,1) 3px,rgba(255,255,255,1) 10px); /* Chrome10+,Safari5.1+ */ background: linear-gradient(top, rgba(61,255,50,1) 0%,rgba(158,255,153,1) 3px,rgba(255,255,255,1) 10px); /* W3C */$$$$ background: -o-linear-gradient(top, rgba(61,255,50,1) 0%,rgba(158,255,153,1) 3px,rgba(255,255,255,1) 10px); /* Opera 11.10+ */}.gctour-grand-error { /* http://www.colorzilla.com/gradient-editor/#ff3232+0,ff9999+3,ffffff+10;gctour-grand-error */ background: rgb(255,50,50); /* Old browsers */ background: -moz-linear-gradient(top, rgba(255,50,50,1) 0%, rgba(255,153,153,1) 3px, rgba(255,255,255,1) 10px); /* FF3.6+ */ background: -webkit-linear-gradient(top, rgba(255,50,50,1) 0%,rgba(255,153,153,1) 3px,rgba(255,255,255,1) 10px); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, rgba(255,50,50,1) 0%,rgba(255,153,153,1) 3px,rgba(255,255,255,1) 10px); /* Opera 11.10+ */ background: linear-gradient(top, rgba(255,50,50,1) 0%,rgba(255,153,153,1) 3px,rgba(255,255,255,1) 10px); /* W3C */}/** GCTour Slider*/.gct_scrollbar { background-color:pink; height: 20px; left: 0; position: absolute; top: 0; width: 100%;}.gct_scroller{ background-color:lime; height: 20px; left: 0; position: absolute; top: 0; width: 20px; }/* * GCTour Pop-Up */.gct_popup{ position:absolute; z-index:10; width:172px; height:102px; text-align:center; color:#FF0000; font: 14px Verdana, Arial, Helvetica, sans-serif; background-color:lime; border-radius: 5px;}.gct_popup_header{ border-radius: 5px 5px 0px 0px;}.dialogMask { background-image:url(data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%08%00%00%00%08%08%06%00%00%00%C4%0F%BE%8B%00%00%00%01sRGB%00%AE%CE%1C%E9%00%00%00%06bKGD%00%FF%00%FF%00%FF%A0%BD%A7%93%00%00%00%09pHYs%00%00%0E%C4%00%00%0E%C4%01%95%2B%0E%1B%00%00%00%07tIME%07%DB%03%17%0C%03%0F%8C%CB%E4%8C%00%00%00%19tEXtComment%00Created%20with%20GIMPW%81%0E%17%00%00%00%26IDAT%18%D3c%F8%FF%FF%FF%FFMW%3E%FF%C7E3%FC%87%02%98%20%3A%9F%81%A0%09%B8t%C2%00%C3%20p%03%00%DA%B4%F2%A1%8A%CD%18%A3%00%00%00%00IEND%AEB%60%82); height:100%; left:0; opacity:0.7; position:fixed; top:0; width:100%; z-index:9000000;}.dialogBody { -moz-border-radius:5px; border-radius:5px; background:none repeat scroll 0 0 #fff; border:1px solid #333333; color:#333333; cursor:default; font-family:Arial; font-size:12px; left:50%; margin-left:-250px; margin-top:20px; padding:0 0 1em; position:fixed; text-align:left; top:0; width:600px; z-index:9000010; max-height:85%; min-height:440px; overflow:auto;}.dialogBody p { font-size:12px; font-weight:normal; margin:1em 0;}.header h1 { background-color:#B2D4F3; background-repeat:repeat-x; font-size:110% !important; font-family:Helvetica Neue,Arial,Helvetica,sans-serif; margin-bottom:0.2em; margin-top:0; padding:0.5em; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; color:#333333; background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAABWCAYAAACdOoshAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oKAwcSHqDAeZMAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAArElEQVR42u3XMQ5AUBRFwU9ESEgIlmn%2F5bMBt9Ap5ixhutNVVTXpa11V3RjeG1prF4aMc2LIOAeGjLNjyDgbhoyzYsg4C4aMM2PIOBOGjDNiyPtgPEM9Ajhw4MCBAwcOHDiCAwcOHDhw4MCBA0dw4MCBAwcOHDhwBAcOHDhw4MCBAweO4MCBAwcOHDhw4AgOHDhw4MCBAwcOHMGBAwcOHDhw4MARHDhw4MD5TQ9jZAyriwnP2QAAAABJRU5ErkJggg%3D%3D)}/*.dialogBody h1 { background-color:#7A7A7A; border-bottom:1px solid #333333; font-size:110%; font-family:Helvetica Neue,Arial,Helvetica,sans-serif; margin-bottom:0.2em; padding:0.5em; -moz-border-radius:5px 5px 0px 0px; border-radius:5px 5px 0px 0px; color:#fff;}*/.dialogHistory { border:1px inset #999999; margin:0 1em 1em; padding-bottom: 1em; max-height: 200px; overflow-y:auto; width:518px; padding-left:1em;}.dialogHistory ul { margin-left:2em;}.dialogHistory li { list-style-type:circle;}.dialogFooter input { -moz-border-radius:3px; border-radius:3px; background:none no-repeat scroll 4px center #EEEEEE; border:1px outset #666666; cursor:pointer; float:right; margin-left:0.5em; padding:3px 5px 5px 20px; min-width:100px; font-size: 12px;}.dialogFooter input:hover { background-color:#f9f9f9;}.dialogContent { padding:0 10px 0 10px;}.dialogMin { min-height:0 !important}#dialogDetails { height:364px; padding:3px; overflow:auto; background-color:#eff4f9; border:1px solid #C0CEE3; -moz-border-radius: 0 5px 5px 0; width:424px; position: absolute; right: 10px;}.dialogList li { font-size:10px; padding:3px; clear:both; list-style-type: none;}.dialogList { margin:0; padding:0}.activeTour { border: 1px solid #C0CEE3; -moz-border-radius: 5px 0 0 5px; border-radius: 5px 0 0 5px; background-color:#eff4f9; padding:1px;}#dialogListContainer { height:374px; overflow:auto; width:146px; position: absolute; left: 10px;}.unselectable { -o-user-select: none; -webkit-user-select: none; -moz-user-select: -none; -khtml-user-select: none; user-select: none;}#cacheList .counter { position:absolute; right:4px; bottom: 0; z-index:0; overflow:hidden; font: normal 24px arial,sans-serif; color: #d5d5d5; text-align:right; text-shadow: 1px 1px 1px #C0C0C0; vertical-align: text-bottom; background-color: transparent; margin-right:0; margin-bottom:0; padding: 0;}0</style><style type="text/css"></style><script type="text/javascript">function s2cgeo(code) {window.open('http://send2.cgeo.org/add.html?cache='+code,'cgeo','height=50,width=50'); }</script><style>@media print, screen and (view-mode:minimized){#ghostery-purple-bubble{display:none}}</style></head>
-<body gcvotemarker="3.0c">
- <form name="aspnetForm" method="post" action="cache_details.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68&amp;csp=1" id="aspnetForm" class="csp">
-<div>
-<input name="__EVENTTARGET" id="__EVENTTARGET" value="" type="hidden">
-<input name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" type="hidden">
-<input name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="2" type="hidden">
-<input name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTc1MjcwNzgxNg8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzMzNzYxMzEWAmYPZBYGZg9kFgoCCg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgsPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAiEPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIiDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCJw8WAh4HVmlzaWJsZWhkAgEPFgIeBWNsYXNzBQNjc3AWEgIFDxYCHwFkZAIIDxYCHwNnFggCAQ8PFgIeCEltYWdlVXJsBTNodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy9kZWZhdWx0X2F2YXRhci5qcGdkZAIDDxYCHwEFaEhlbGxvLCA8YSBocmVmPSIvbXkvZGVmYXVsdC5hc3B4IiB0aXRsZT0iVmlldyBQcm9maWxlIGZvciByYV9zY2giIGNsYXNzPSJTaWduZWRJblByb2ZpbGVMaW5rIj5yYV9zY2g8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFrwFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZmd1aWQlM2RmZWUxYWQ1YS1kM2RmLTQ2YjctOWZlMC0zMmViMGQ0NTJiNjglMjZjc3AlM2QxZGQCCw8WAh8BBRA5NTcgQ2FjaGVzIEZvdW5kZAINDxYCHwNnFgICDQ8PFgIfBgVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPWRmZDQ0NGQwLTUzN2EtNDlmZi05MGYxLWQ3ZWY5Yjg5MzYwYmRkAhAPDxYCHwNnZGQCLA9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHgtfIUl0ZW1Db3VudAIQFiBmD2QWAgIBDw8WCB4PQ29tbWFuZEFyZ3VtZW50BQVlbi1VUx4LQ29tbWFuZE5hbWUFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB4QQ2F1c2VzVmFsaWRhdGlvbmhkZAIBD2QWAgIBDw8WCB8IBQVkZS1ERR8JBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCmhkZAICD2QWAgIBDw8WCB8IBQVmci1GUh8JBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8KaGRkAgMPZBYCAgEPDxYIHwgFBXB0LVBUHwkFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8KaGRkAgQPZBYCAgEPDxYIHwgFBWNzLUNaHwkFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwpoZGQCBQ9kFgICAQ8PFggfCAUFc3YtU0UfCQUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHwpoZGQCBg9kFgICAQ8PFggfCAUFZXMtRVMfCQUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8KaGRkAgcPZBYCAgEPDxYIHwgFBWl0LUlUHwkFDVNldFRlbXBMb2NhbGUfAQUISXRhbGlhbm8fCmhkZAIID2QWAgIBDw8WCB8IBQVubC1OTB8JBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfCmhkZAIJD2QWAgIBDw8WCB8IBQVjYS1FUx8JBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfCmhkZAIKD2QWAgIBDw8WCB8IBQVwbC1QTB8JBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8KaGRkAgsPZBYCAgEPDxYIHwgFBWV0LUVFHwkFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfCmhkZAIMD2QWAgIBDw8WCB8IBQVuYi1OTx8JBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwpoZGQCDQ9kFgICAQ8PFggfCAUFa28tS1IfCQUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCmhkZAIOD2QWAgIBDw8WCB8IBQVodS1IVR8JBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8KaGRkAg8PZBYCAgEPDxYIHwgFBXJvLVJPHwkFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCmhkZAIuD2QWAgIDD2QWAgIBDxYCHwNnFgICAQ8WAh8BBVxZb3VyIGNhY2hlIGhhcyAxIG5vdGUocykgZnJvbSBhIHJldmlld2VyLiA8YSBocmVmPScjY2FjaGVfbG9nc19jb250YWluZXInPlJlYWQgdGhlbSBub3c8L2E+LmQCLw8WAh8EBQxzcGFuLTI0IGxhc3QWAgIBD2QWKgIBD2QWAmYPZBYCAgEPDxYCHwEFB0dDNDMzWUNkZAICDxYCHwEFmgE8YSBocmVmPSIvYWJvdXQvY2FjaGVfdHlwZXMuYXNweCIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJBYm91dCBDYWNoZSBUeXBlcyI+PGltZyBzcmM9Ii9pbWFnZXMvV3B0VHlwZXMvMTM3LmdpZiIgYWx0PSJFYXJ0aGNhY2hlIiB0aXRsZT0iRWFydGhjYWNoZSIgLz48L2E+ZAIGD2QWBAIBDxYCHwNnZAIGDxYCHwNoZAILD2QWBAIBDxYCHwEFATBkAgUPDxYCHwYFRC9zZWVrL2NhY2hlX2Zhdm9yaXRlZC5hc3B4P2d1aWQ9ZmVlMWFkNWEtZDNkZi00NmI3LTlmZTAtMzJlYjBkNDUyYjY4ZGQCDQ8PFgIfA2hkZAIQDxYCHwNoZAIRDxYCHwNoZAISD2QWDAIDDxYCHgVzdHlsZQUPZGlzcGxheTppbmxpbmU7FgICAQ8WAh8BBRtVVE06IDMzViBFIDY2MjM0NyBOIDY1MjEyMjdkAg0PDxYCHwYFM2NkcGYuYXNweD9ndWlkPWZlZTFhZDVhLWQzZGYtNDZiNy05ZmUwLTMyZWIwZDQ1MmI2OGRkAg8PDxYCHwYFOGNkcGYuYXNweD9ndWlkPWZlZTFhZDVhLWQzZGYtNDZiNy05ZmUwLTMyZWIwZDQ1MmI2OCZsYz01ZGQCEQ8PFgIfBgU5Y2RwZi5hc3B4P2d1aWQ9ZmVlMWFkNWEtZDNkZi00NmI3LTlmZTAtMzJlYjBkNDUyYjY4JmxjPTEwZGQCEw8PFgQfBgVuaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP2Y9ZCZobD1lbiZzYWRkcj00OS43MzMyLDguNTY5NjY3IChIb21lIExvY2F0aW9uKSZkYWRkcj01OC44MDAzNSwxNy44MTAwNShTdGVuYXJuYSkeBlRhcmdldAUGX2JsYW5rZGQCGw9kFggCAQ8PFgQeCUZvcmVDb2xvcgweBF8hU0ICBGRkAgMPDxYEHw0MHw4CBGRkAgUPDxYCHwNnFgIeB29uY2xpY2sFO3MyZ3BzKCdmZWUxYWQ1YS1kM2RmLTQ2YjctOWZlMC0zMmViMGQ0NTJiNjgnKTtyZXR1cm4gZmFsc2U7ZAIHDw8WAh8DZxYCHw8FIHMycGhvbmUoJ0dDNDMzWUMnKTtyZXR1cm4gZmFsc2U7ZAIUDxYCHwNnZAIXD2QWCGYPFgIfA2hkAgEPDxYCHwNoZGQCAg8PFgIfA2hkZAIDDxYCHwNoZAIYD2QWAgIDDw8WAh8BBRNObyBoaW50cyBhdmFpbGFibGUuFgIfDwUNcmV0dXJuIGZhbHNlO2QCGQ8WAh8DaGQCHA8WAh8DaGQCHQ8PFgIfA2hkFgICAw8PFgIfA2hkZAIeDxYCHwNnZAIfDxYCHwNoZAIiD2QWAgIBD2QWBAIBDw8WAh8BBf8DPGlmcmFtZSB0eXBlPSJpZnJhbWUiIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0JlNpdGVJRD0xJlg9J2U1MjJhZjRiNWM2NTQ0ZWViYTY3MmRkZDA2ODk2MTRhJyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIE1hcmdpbndpZHRoPSIwIiBNYXJnaW5oZWlnaHQ9IjAiIEhzcGFjZT0iMCIgVnNwYWNlPSIwIiBGcmFtZWJvcmRlcj0iMCIgU2Nyb2xsaW5nPSJubyIgc3R5bGU9IndpZHRoOjEyMHB4O0hlaWdodDoyNDBweDsiPjxhIGhyZWY9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUNsaWNrJjtNb2RlPUhUTUwmU2l0ZUlEPTEiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0Jk1vZGU9SFRNTCZTaXRlSUQ9MSIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIGJvcmRlcj0iMCIgYWx0PSIiIC8+PC9hPjwvaWZyYW1lPmRkAgMPFgIeCWlubmVyaHRtbAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCKQ9kFhYCAw8WAh8DZxYCAgEPDxYCHwYFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD1mZWUxYWQ1YS1kM2RmLTQ2YjctOWZl" type="hidden">
-<input name="__VIEWSTATE1" id="__VIEWSTATE1" value="MC0zMmViMGQ0NTJiNjgmRFM9MWRkAgUPFgIfA2dkAgcPDxYGHgZSRFMuSUQLKXZHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNzb24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDcyOC4xNjE1MiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAczMzc2MTMxHwNoZGQCCQ8PFgIfA2dkFgICAQ8PFgQfBgUrL21hcC9kZWZhdWx0LmFzcHg/bGF0PTU4LjgwMDM1JmxuZz0xNy44MTAwNR8DZ2RkAhEPDxYCHwYFGy9zZWVrL25lYXJlc3QuYXNweD91PXJhX3NjaGRkAhUPDxYCHwYFHC9zZWVrL25lYXJlc3QuYXNweD91bD1yYV9zY2hkZAIZD2QWCgIDDw8WAh8GBVYvc2Vlay9uZWFyZXN0LmFzcHg/dHg9YzY2ZjVjZjMtOTUyMy00NTQ5LWI4ZGQtNzU5Y2QyZjE4ZGI4JmxhdD01OC44MDAzNTAmbG5nPTE3LjgxMDA1MGRkAgUPDxYCHwYFWi9zZWVrL25lYXJlc3QuYXNweD90eD1jNjZmNWNmMy05NTIzLTQ1NDktYjhkZC03NTljZDJmMThkYjgmbGF0PTU4LjgwMDM1MCZsbmc9MTcuODEwMDUwJmY9MWRkAgkPDxYCHwYFLi9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTguODAwMzUwJmxuZz0xNy44MTAwNTBkZAILDw8WAh8GBTIvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTU4LjgwMDM1MCZsbmc9MTcuODEwMDUwJmY9MWRkAg8PDxYCHwYFSGh0dHA6Ly93d3cud2F5bWFya2luZy5jb20vZGlyZWN0b3J5LmFzcHg/Zj0xJmxhdD01OC44MDAzNTAmbG9uPTE3LjgxMDA1MGRkAhsPFgIfA2hkAh8PDxYCHwYFJi9yZXZpZXdzL2hvdGVscy1jb29yZHMtNTguODAwNCwxNy44MTAxZGQCIw9kFgICAQ8PFgQfAQXCBzxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL21hcC9kZWZhdWx0LmFzcHg/bGF0PTU4LjgwMDM1JmxuZz0xNy44MTAwNSIgdGFyZ2V0PSJfYmxhbmsiPkdlb2NhY2hpbmcuY29tIE1hcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/cT1OKzU4JWMyJWIwKzQ4LjAyMStFKzAxNyVjMiViMCs0OC42MDMrKEdDNDMzWUMpKyIgdGFyZ2V0PSJfYmxhbmsiPkdvb2dsZSBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWFwcXVlc3QuY29tL21hcHMvbWFwLmFkcD9zZWFyY2h0eXBlPWFkZHJlc3MmZm9ybXR5cGU9bGF0bG9uZyZsYXRsb25ndHlwZT1kZWNpbWFsJmxhdGl0dWRlPTU4LjgwMDM1JmxvbmdpdHVkZT0xNy44MTAwNSZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NTguODAwMzUmbG9uPTE3LjgxMDA1Jnpvb209MTYmcT01OC44MDAzNSwxNy44MTAwNSZjb25mPTEmc3RhcnQ9MSZtdnQ9bSZ0cmY9MCIgdGFyZ2V0PSJfYmxhbmsiPllhaG9vIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5iaW5nLmNvbS9tYXBzL2RlZmF1bHQuYXNweD92PTImbHZsPTE0JnNwPXBvaW50LjU4LjgwMDM1XzE3LjgxMDA1X0dDNDMzWUMiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD01OC44MDAzNSZsb249MTcuODEwMDUiIHRhcmdldD0iX2JsYW5rIj5PcGVuIEN5Y2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8/bWxhdD01OC44MDAzNSZtbG9uPTE3LjgxMDA1Jnpvb209MTIiIHRhcmdldD0iX2JsYW5rIj5PcGVuIFN0cmVldCBNYXBzPC9hPjwvbGk+HwNnZGQCJw9kFggCAQ8WAh8BBQ4xIExvZ2dlZCBWaXNpdGQCBw8PFgIfBgVDfi9zZWVrL2NhY2hlX2xvZ2Jvb2suYXNweD9ndWlkPWZlZTFhZDVhLWQzZGYtNDZiNy05ZmUwLTMyZWIwZDQ1MmI2OGRkAggPFgIfA2hkAgkPDxYCHwNoZGQCKg8WAh8BBQR0cnVlZAIrDxYCHwEFSmxhdD01OC44MDAzNTsgbG5nPTE3LjgxMDA1OyBndWlkPSdmZWUxYWQ1YS1kM2RmLTQ2YjctOWZlMC0zMmViMGQ0NTJiNjgnOw0KZAIsDxYCHwEFcXRyeSB7IF9nYXEucHVzaChbJ190cmFja0V2ZW50JywgJ0dlb2NhY2hpbmcnLCAnQ2FjaGVEZXRhaWxzTWVtYmVyVHlwZScsICdQcmVtaXVtJywgbnVsbCwgdHJ1ZV0pOyB9IGNhdGNoKGVycikgeyB9ZAIwDxYCHwNoZAIxD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIfBwIQFiBmD2QWAgIBDw8WCB8IBQVlbi1VUx8JBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2gfCmhkZAIBD2QWAgIBDw8WCB8IBQVkZS1ERR8JBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCmhkZAICD2QWAgIBDw8WCB8IBQVmci1GUh8JBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8KaGRkAgMPZBYCAgEPDxYIHwgFBXB0LVBUHwkFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8KaGRkAgQPZBYCAgEPDxYIHwgFBWNzLUNaHwkFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwpoZGQCBQ9kFgICAQ8PFggfCAUFc3YtU0UfCQUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHwpoZGQCBg9kFgICAQ8PFggfCAUFZXMtRVMfCQUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8KaGRkAgcPZBYCAgEPDxYIHwgFBWl0LUlUHwkFDVNldFRlbXBMb2NhbGUfAQUISXRhbGlhbm8fCmhkZAIID2QWAgIBDw8WCB8IBQVubC1OTB8JBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfCmhkZAIJD2QWAgIBDw8WCB8IBQVjYS1FUx8JBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfCmhkZAIKD2QWAgIBDw8WCB8IBQVwbC1QTB8JBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8KaGRkAgsPZBYCAgEPDxYIHwgFBWV0LUVFHwkFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfCmhkZAIMD2QWAgIBDw8WCB8IBQVuYi1OTx8JBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwpoZGQCDQ9kFgICAQ8PFggfCAUFa28tS1IfCQUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCmhkZAIOD2QWAgIBDw8WCB8IBQVodS1IVR8JBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8KaGRkAg8PZBYCAgEPDxYIHwgFBXJvLVJPHwkFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCmhkZAIDDxYCHwEFK1NlcnZlcjogV0VCMTM7IEJ1aWxkOiBXZWIuSG90Rml4XzIwMTIxMjExLjFkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBRtjdGwwMCRDb250ZW50Q1NQJGNzcENvbmZpcm06xL130XjARa21fe+yF8/udheOWQ==" type="hidden">
-</div>
-
-<script type="text/javascript">
-//<![CDATA[
-var theForm = document.forms['aspnetForm'];
-if (!theForm) {
- theForm = document.aspnetForm;
-}
-function __doPostBack(eventTarget, eventArgument) {
- if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
- theForm.__EVENTTARGET.value = eventTarget;
- theForm.__EVENTARGUMENT.value = eventArgument;
- theForm.submit();
- }
-}
-//]]>
-</script>
-
-
-<script src="gc433yc_files/WebResource.axd" type="text/javascript"></script>
-
-
-<script src="gc433yc_files/ScriptResource_004.axd" type="text/javascript"></script>
-<script src="gc433yc_files/ScriptResource.axd" type="text/javascript"></script>
-<script src="gc433yc_files/ScriptResource_003.axd" type="text/javascript"></script>
-<script src="gc433yc_files/ScriptResource_002.axd" type="text/javascript"></script>
-<script src="gc433yc_files/cachedetails.js" type="text/javascript"></script>
-<script src="gc433yc_files/latlng.js" type="text/javascript"></script>
- <script type="text/javascript">
-//<![CDATA[
-Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnetForm', [], [], [], 90, 'ctl00');
-//]]>
-</script>
-
- <div id="Top" class="SkipLinks">
-
- <a id="ctl00_hlSkipLinksNavigation" accesskey="n" title="Skip to Navigation" href="#Navigation">Skip to Navigation</a>
- <a id="ctl00_hlSkipLinksContent" accesskey="c" title="Skip to Content" href="#Content">Skip to Content</a>
-
- </div>
-
- <!--[if lte IE 6]>
- <div class="WarningMessage PhaseOut">
-
- <p>Groundspeak is phasing out support for older browsers. Visit the <a href="http://support.groundspeak.com/index.php?pg=kb.page&id=215" title="Browser Support Information">Help Center</a> for more information.</p>
-
- </div>
- <![endif]-->
-
-
-
- <div class="PrintOnly">
-
- <p>
- <img src="gc433yc_files/logo_print_bw.png" alt="Geocaching.com"></p>
- <hr>
-
- </div>
-
- <header>
-
- <div class="container">
-
- <h1 class="Logo span-16">
- <a href="http://www.geocaching.com/" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
- <div class="ProfileWidget span-8 last">
-
-
-
- <div id="ctl00_divSignedIn">
-
- <p class="Avatar NoBottomSpacing">
- <a id="ctl00_hlHeaderAvatar" accesskey="p" title="Your Profile" href="http://www.geocaching.com/my/"><img title="Your Profile" src="gc433yc_files/default_avatar.jpg" alt="" style="border-width:0px;"></a></p>
- <p class="SignedInText">
- <strong>
- Hello, <a href="http://www.geocaching.com/my/default.aspx" title="View Profile for ra_sch" class="SignedInProfileLink">ra_sch</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&amp;redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fguid%3dfee1ad5a-d3df-46b7-9fe0-32eb0d452b68%26csp%3d1">Sign Out</a>)<br>
- <span id="ctl00_litPMLevel">Premium Member</span>
-
- <strong style="display:block">
- 957 Caches Found</strong>
-
- </p>
-
- </div>
-
-
- </div>
-
- <div class="NavContainer span-24 last">
- <nav id="Navigation">
-
- <ul class="Menu">
- <li class="">
- <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="http://www.geocaching.com/guide/">Learn ▼</a>
- <ul style="visibility: hidden;" class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavGeocaching101" accesskey="i" title="Geocaching 101" href="http://www.geocaching.com/guide/">Geocaching 101</a></li>
- <li>
- <a id="ctl00_hlSubNavGeocaching2Minutes" title="Geocaching in 2 Minutes" href="http://www.geocaching.com/videos/#cat=cat:newbies&amp;vid=-4VFeYZTTYs">Geocaching in 2 Minutes</a></li>
- </ul>
- </li>
-
- <li class="" id="ctl00_liNavProfile">
- <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" href="http://www.geocaching.com/my/">Your Profile ▼</a>
- <ul style="visibility: hidden;" class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavQuickView" accesskey="p" title="Quick View" href="http://www.geocaching.com/my/">Quick View</a></li>
- <li>
- <a id="ctl00_hlSubNavLists" accesskey="q" title="Lists" href="http://www.geocaching.com/my/lists.aspx">Lists</a></li>
- <li class="ExtraText">
- <a id="ctl00_hlSubNavGeocaches" accesskey="m" title="Geocaches" class="NoRightPadding" href="http://www.geocaching.com/my/geocaches.aspx">Geocaches</a>
- (<a id="ctl00_hlSubNavGeocachesYours" accesskey="y" title="Yours" class="NoSidePadding" href="http://www.geocaching.com/my/owned.aspx">Yours</a>)</li>
- <li class="ExtraText">
- <a id="ctl00_hlSubNavProfileTrackables" title="Trackables" class="NoRightPadding" href="http://www.geocaching.com/my/travelbugs.aspx">Trackables</a>
- (<a id="ctl00_hlSubNavTrackablesYours" accesskey="8" title="Yours" class="NoSidePadding" href="http://www.geocaching.com/track/search.aspx?o=1&amp;uid=dfd444d0-537a-49ff-90f1-d7ef9b89360b">Yours</a>)</li>
- <li>
- <a id="ctl00_hlSubNavPocketQueries" accesskey="9" title="Pocket Queries" href="http://www.geocaching.com/pocket/">Pocket Queries</a></li>
- <li>
- <a id="ctl00_hlSubNavFieldNotes" accesskey="0" title="Field Notes" href="http://www.geocaching.com/my/fieldnotes.aspx">Field Notes</a></li>
- <li>
- <a id="ctl00_hlSubNavAccount" accesskey="a" title="Account Details" href="http://www.geocaching.com/account/">Account Details</a></li>
- </ul>
- </li>
- <li>
- <a id="ctl00_hlNavPlay" accesskey="3" title="Play" href="http://www.geocaching.com/seek/">Play ▼</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavHide" accesskey="d" title="Hide &amp; Seek a Cache" href="http://www.geocaching.com/seek/">Hide &amp; Seek a Cache</a></li>
- <li>
- <a id="ctl00_hlSubNavLogCache" title="Log a Cache" href="http://www.geocaching.com/my/recentlyviewedcaches.aspx">Log a Cache</a></li>
- <li><a id="ctl00_hlSubNavMap" accesskey="/" title="View Geocache Map" href="http://www.geocaching.com/map/">View Geocache Map</a></li>
- <li>
- <a id="ctl00_hlSubNavTrackables" accesskey="e" title="Find Trackables" href="http://www.geocaching.com/track/">Find Trackables</a></li>
- <li>
- <a id="ctl00_hlSubNavHelpCenter" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
- </ul>
- </li>
- <li>
- <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="http://www.geocaching.com/forums/">Community ▼</a>
- <ul class="SubMenu">
-
- <li>
- <a id="ctl00_hlSubNavTellaFriend" accesskey="-" title="Tell a Friend" href="http://www.geocaching.com/account/SendReferral.aspx">Tell a Friend</a></li>
-
- <li><a id="ctl00_hlSubNavVolunteers" accesskey="+" title="Volunteers" href="http://www.geocaching.com/volunteers/">Volunteers</a></li>
- <li>
- <a id="ctl00_hlSubNavLocal" accesskey="z" title="Local Organizations" href="http://www.geocaching.com/organizations/">Local Organizations</a></li>
- <li>
- <a id="ctl00_hlSubNavDiscussionForums" accesskey="f" title="Discussion Forums" href="http://www.geocaching.com/forums/">Discussion Forums</a></li>
- <li>
- <a id="ctl00_hlSubNavBlog" accesskey="b" title="Blog" rel="external" href="http://blog.geocaching.com/">Blog</a></li>
- <li>
- <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="http://www.geocaching.com/calendar/">Events</a></li>
- </ul>
- </li>
- <li>
- <a id="ctl00_hlNavShop" accesskey="4" title="Shop" href="http://shop.geocaching.com/">Shop ▼</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavShop" accesskey="j" title="Shop Geocaching" rel="external" href="http://shop.geocaching.com/">Shop Geocaching</a></li>
- <li>
- <a id="ctl00_hlSubNavIntlRetailers" title="International Retailers" rel="external" href="http://shop.geocaching.com/default/international-retailers/">International Retailers</a></li>
- <li>
- <a id="ctl00_hlSubNavGPSReviews" accesskey="w" title="GPS Reviews" href="http://www.geocaching.com/reviews/gps">GPS Reviews</a></li>
- <li>
- <a id="ctl00_hlSubNavGPSGuide" accesskey="k" title="Guide to Buying a GPS Device" href="http://www.geocaching.com/about/buying.aspx">Guide to Buying a GPS Device</a></li>
- </ul>
- </li>
- <li>
- <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="http://www.geocaching.com/travel/">Partnering ▼</a>
- <ul class="SubMenu">
- <li>
- <a id="ctl00_hlSubNavTravel" title="Travel and GeoTourism" href="http://www.geocaching.com/travel/">Travel and GeoTourism</a></li>
- <li>
- <a id="ctl00_hlSubNavBrandedPromotions" title="Branded Promotions" href="http://www.geocaching.com/brandedpromotions/">Branded Promotions</a></li>
- <li>
- <a id="ctl00_hlSubNavEducation" title="Geocaching and Education" href="http://www.geocaching.com/education/">Geocaching and Education</a></li>
- <li>
- <a id="ctl00_hlSubNavAdvertisingWithUs" title="Advertising with Us" href="http://www.geocaching.com/about/advertising.aspx">Advertising with Us</a></li>
- <li>
- <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="http://www.geocaching.com/live/apidevelopers/">API Program</a></li>
- </ul>
- </li>
- <li>
- <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="http://www.geocaching.com/videos/">Videos</a></li>
- <li>
- <a id="ctl00_hlNavFollowUs" title="Follow Us" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts">Follow Us ▼</a>
- <ul class="SubMenu NavSocialMedia">
- <li>
- <a id="ctl00_hlSubNavFacebook" title="Facebook" class="SubNavFacebook" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts">Facebook</a></li>
- <li>
- <a id="ctl00_hlSubNavTwitter" title="Twitter" class="SubNavTwitter" href="http://twitter.com/GoGeocaching">Twitter</a></li>
- <li>
- <a id="ctl00_hlSubNavFlickr" title="Flickr" class="SubNavFlickr" href="http://www.flickr.com/photos/geocaching_com/">Flickr</a></li>
- <li>
- <a id="ctl00_hlSubNavYouTube" title="YouTube" class="SubNavYouTube" href="http://www.youtube.com/user/GoGeocaching">YouTube</a></li>
- </ul>
- </li>
- </ul>
-
- </nav>
- <div class="LanguageSelector">
-
-
-<div class="LocaleText">
-
- <strong>Choose Your Language:</strong>
-
-</div>
-<div class="LocaleList">
-
- <div class="selected-language">
-
- <a href="#">English▼</a>
-
- </div>
- <ul class="language-list">
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl00_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl00$uxLocaleItem','')">English</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl01_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl01$uxLocaleItem','')">Deutsch</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl02_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl02$uxLocaleItem','')">Français</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl03_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl03$uxLocaleItem','')">Português</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl04_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl04$uxLocaleItem','')">Čeština</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl05$uxLocaleItem','')">Svenska</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl06$uxLocaleItem','')">Español</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl07$uxLocaleItem','')">Italiano</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl08$uxLocaleItem','')">Nederlands</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl09$uxLocaleItem','')">Català</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl10$uxLocaleItem','')">Polski</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl11$uxLocaleItem','')">Eesti</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl12$uxLocaleItem','')">Norsk, Bokmål</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl13$uxLocaleItem','')">한국어</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl14$uxLocaleItem','')">Magyar</a></li>
-
- <li><a id="ctl00_uxLocaleListTop_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleListTop$uxLocaleList$ctl15$uxLocaleItem','')">Română</a></li>
-
- </ul>
-
-</div>
-<script type="text/javascript">
-
- jQuery(document).ready(function () {
- jQuery(".selected-language a").click(function (e) {
- e.preventDefault();
- var $loc = jQuery(this).parent().next();
- jQuery($loc).show().position({
- of: $loc.parent(),
- my: "left top",
- at: "left bottom",
- offset: "0 0",
- collision: "fit fit"
- });
- jQuery(this).addClass("Expanded");
- jQuery(document).click(function () {
- jQuery(".language-list").fadeOut("fast");
- jQuery(".selected-language a").removeClass("Expanded");
- });
- return false;
- });
- });
-</script>
- </div>
- </div>
-
-
- </div>
-
-
- </header>
- <section id="Content">
-
-
- <div class="container">
-
- <div id="ctl00_divBreadcrumbs" class="BreadcrumbWidget span-24 last">
-
- <p>
- <span id="ctl00_Breadcrumbs"><span><a title="Geocaching - The Official Global GPS Cache Hunt Site" href="http://www.geocaching.com/">Geocaching</a></span><span> &gt; </span><span><a title="Hide and Seek A Geocache" href="http://www.geocaching.com/seek/default.aspx">Hide and Seek A Geocache</a></span><span> &gt; </span><span>Geocache Details</span></span>
- </p>
-
-
-
-
- <div style="display:none;">
- <p>
- Your cache has 1 note(s) from a reviewer. <a href="#cache_logs_container">Read them now</a>.
- </p>
- </div>
-
-
- <div id="cspMessage" class="cspWidget cspWarningWidget"><p>Your cache page has not been reviewed yet. It will not appear in the review queue until you enable it.</p><p>Once
- it is enabled, you will receive a confirmation email that it was
-successfully submitted. It is peak season for cache placement. Your
-volunteer reviewer will strive to begin the review process within the
-next 7 days.</p><p>Please take a moment to check the listing and ensure
-it is ready to enable. Clicking "Submit for Review" will enable your
-cache page.</p>
- <p>
- <span class="Checkbox" title="Yes, the cache is in place and ready to be found" autocomplete="off"><input id="cspConfirm" name="ctl00$ContentCSP$cspConfirm" type="checkbox"><label for="cspConfirm">Yes, the cache is in place and ready to be found</label></span>
- </p>
- <p class="NoBottomSpacing">
- <input name="ctl00$ContentCSP$cspSubmit" value="Submit for Review" id="cspSubmit" disabled="disabled" title="Submit for Review" class="cspButton cspPrimaryButton" type="submit">
- <input name="ctl00$ContentCSP$cspGoBack" value="Edit Listing" id="cspGoBack" title="Edit Listing" class="cspButton" type="submit"></p>
- </div>
-
- </div>
-
- <div id="ctl00_divContentMain" class="span-24 last">
-
-
-
-
- <div id="ctl00_ContentBody_CoordInfoLinkControl1_uxCoordInfoLinkPanel" class="CoordInfoLinkWidget">
-
- <p>
- <a href="#" class="CoordInfoLink">
- <span id="ctl00_ContentBody_CoordInfoLinkControl1_uxCoordInfoCode" class="CoordInfoCode">GC433YC</span>
- <span class="arrow">▼</span> </a>
- </p>
-
-</div>
-<div id="dlgClipboard">
- <input class="TextFormat" type="text">
- <a href="#" onclick="$('#dlgClipboard').hide();return false;" title="Close" class="Close">
- x</a>
-</div>
-<script type="text/javascript">
- $("a.CoordInfoLink").click(function (e) {
- e.preventDefault();
-
- $("#dlgClipboard")
- .show()
- .position({
- of: $("a.CoordInfoLink"),
- my: "right top",
- at: "right bottom",
- offset: "0 5"
- })
- .find("input")
- .val('http://coord.info/' + $('.CoordInfoCode').text())
- .focus()
- .select();
-
- $(document).mouseup(function (e) {
- if ($(e.target).parent("div#dlgClipboard").length == 0) {
- $(this).unbind(e);
- $("div#dlgClipboard").hide();
- }
- });
-
- return false;
- });
-
-
-</script>
-
- <div class="span-17">
-
- <div class="span-17 last BottomSpacing" id="cacheDetails">
- <p class="cacheImage">
- <a href="http://www.geocaching.com/about/cache_types.aspx" target="_blank" title="About Cache Types"><img src="gc433yc_files/137.gif" alt="Earthcache" title="Earthcache"></a>
- </p>
-
- <h2 class="NoBottomSpacing">
- <span id="ctl00_ContentBody_CacheName">Stenarna</span></h2>
- <div class="minorCacheDetails Clear">
- <div id="ctl00_ContentBody_mcd1">
- A cache by <a href="http://www.geocaching.com/profile/?guid=dfd444d0-537a-49ff-90f1-d7ef9b89360b&amp;wid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68&amp;ds=2">ra_sch</a></div>
- <div id="ctl00_ContentBody_mcd2">
- Hidden:
- 12/21/2012
-
- </div>
- <div></div>
- </div>
- </div>
- <div id="ctl00_ContentBody_diffTerr" class="CacheStarLabels span-3 BottomSpacing">
-
- Difficulty:
- <br>
- Terrain:
-
- </div>
-
- <div id="ctl00_ContentBody_diffTerrStars" class="CacheStarImgs span-2">
-
- <span id="ctl00_ContentBody_uxLegendScale" title="(1 is easiest, 5 is hardest)"><img src="gc433yc_files/stars1_5.gif" alt="1.5 out of 5"></span>
- <span id="ctl00_ContentBody_Localize12" title="(1 is easiest, 5 is hardest)"><img src="gc433yc_files/stars1_5.gif" alt="1.5 out of 5"></span>
-
- </div>
-
- <div id="ctl00_ContentBody_size" class="CacheSize span-9">
-
- <p style="text-align: center;">
- Size:&nbsp;<span class="minorCacheDetails"><img src="gc433yc_files/not_chosen.gif" alt="Size: not chosen" title="Size: not chosen">&nbsp;<small>(not chosen)</small><span id="GCVote_container"><div name="VoteControlfee1ad5a-d3df-46b7-9fe0-32eb0d452b68" style="float: right;"><div style="white-space: nowrap; font-size: small; padding: 0px; margin: 0px; line-height: 80%;"><table id="gcvoteDetailsfee1ad5a-d3df-46b7-9fe0-32eb0d452b68" style="z-index: 200; position: absolute; visibility: hidden; background-color: rgb(239, 244, 249); border: 1px solid rgb(192, 206, 227); width: auto;"><tr><td style="font-weight: bold;">Verteilung der Bewertungen:</td></tr><tr><td style="text-align: center;"><img src="gc433yc_files/chart.png"></td></tr></table><img style="cursor: pointer;" id="gcvoteStarsfee1ad5a-d3df-46b7-9fe0-32eb0d452b68" title="Durchschnitt (Mittel) 0.0 von 5" alt="Durchschnitt (Mittel) 0.0 von 5" src="gc433yc_files/stars0.gif" align="absmiddle"><small><em style="color: rgb(0, 0, 0); font-weight: normal; font-size: 1.15em;"> (0)</em></small></div><div style="white-space: nowrap; font-size: 1.3em;"><small></small><a title="unbewertet" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=0" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=0" style="background-color: rgb(48, 224, 48); font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=0">?</a><a title="1: schlecht" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=1" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=1" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=1">1</a><span style="color: grey; font-size: 1.4ex;"><a title="1,5: lohnt nicht" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=1.5" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=1.5" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=1.5">½</a></span><a title="2: schwach" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=2" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=2" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=2">2</a><span style="color: grey; font-size: 1.4ex;"><a title="2,5: ok" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=2.5" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=2.5" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=2.5">½</a></span><a title="3: durchschnittlich" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=3" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=3" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=3">3</a><span style="color: grey; font-size: 1.4ex;"><a title="3,5: besser" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=3.5" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=3.5" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=3.5">½</a></span><a title="4: gut" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=4" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=4" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=4">4</a><span style="color: grey; font-size: 1.4ex;"><a title="4,5: fast perfekt" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=4.5" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=4.5" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=4.5">½</a></span><a title="5: großartig" name="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=5" id="GCVoteLinkfee1ad5a-d3df-46b7-9fe0-32eb0d452b68=5" style="font-weight: normal;" href="#fee1ad5a-d3df-46b7-9fe0-32eb0d452b68=5">5</a><img name="GCVoteWaitfee1ad5a-d3df-46b7-9fe0-32eb0d452b68" id="GCVoteWaitfee1ad5a-d3df-46b7-9fe0-32eb0d452b68" style="display: none;" src="gc433yc_files/loading.gif" height="14px" width="14px"></div></div></span></span></p>
-
- </div>
-
-
-
- <div class="span-3 right last">
-
-
- <div class="favorite right">
- <a id="uxFavContainerLink" href="javascript:void(0);">
- <div class="favorite-container">
- <span class="favorite-value">
- 0</span><br>
- Favorites
- <img id="imgFavoriteArrow" src="gc433yc_files/arrow-down.png" alt="Expand" title="Expand">
- </div>
- </a>
- <div class="favorite-dropdown">
- <dl class="top">
- <dt>
- <img id="imgFavoriteScore" src="gc433yc_files/loading3.gif" alt="Loading" title="Loading" height="20" width="20"></dt>
- <dd>
- <span id="uxFavoriteScore">&nbsp;</span></dd>
- </dl>
- <dl class="bottom">
- <dt>
- <img src="gc433yc_files/view_user.png" alt="View Who Favorited this Cache" title="View Who Favorited this Cache"></dt>
- <dd>
- <a id="hlViewWhoFavorited" title="View Who Favorited this Cache" href="http://www.geocaching.com/seek/cache_favorited.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68">View Who Favorited this Cache</a></dd>
- <dt>
- <img src="gc433yc_files/help.png" alt="About Favorites" title="About Favorites"></dt>
- <dd>
- <a id="hlAboutFavorites" title="About Favorites" href="http://support.groundspeak.com/index.php?pg=kb.page&amp;id=287" target="_blank">About Favorites</a>
- </dd>
- </dl>
- </div>
- </div>
-
-
- </div>
-
-
- <p class="Clear">
- </p>
-
-
-
-
- <div id="ctl00_ContentBody_CacheInformationTable" class="CacheInformationTable">
- <div class="LocationData FloatContainer">
- <div class="span-9">
- <p class="NoBottomSpacing">
-
- <span id="uxLatLon" style="font-weight:bold;">N 58° 48.021 E 017° 48.603</span>
-
- <br>
- <span id="ctl00_ContentBody_LocationSubPanel" style="display:inline;"><small>
- UTM: 33V E 662347 N 6521227</small>
- <br>
- </span><small>
- <a id="ctl00_ContentBody_lnkConversions" title="Other Conversions" href="http://www.geocaching.com/wpt/?lat=58.80035&amp;lon=17.81005&amp;detail=1" target="_blank">Other Conversions</a>
- </small>
- </p>
- </div>
- <div class="span-7 last AlignRight">
- <span id="ctl00_ContentBody_Location">In Södermanland, Sweden</span><br>
- <span id="lblDistFromHome"><img src="gc433yc_files/NE.gif" alt="NE" style="vertical-align:text-bottom">&nbsp;NE 1170.9&nbsp;km from your home location</span>
- </div>
- </div>
- <div id="Print">
- <p class="NoBottomSpacing">
- <span id="ctl00_ContentBody_uxPrintHeader" style="font-weight:bold;">Print</span>:
- <br>
- <small>
- <a id="ctl00_ContentBody_lnkPrintFriendly" class="lnk" href="http://www.geocaching.com/seek/cdpf.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68" target="_blank">
- <img src="gc433yc_files/print.png" alt="Print" title="Print" height="16" width="16">&nbsp; <span>
- No Logs
- </span>
- </a>&nbsp;
- <a id="ctl00_ContentBody_lnkPrintFriendly5Logs" href="http://www.geocaching.com/seek/cdpf.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68&amp;lc=5" target="_blank">5 Logs</a>&nbsp;
- <a id="ctl00_ContentBody_lnkPrintFriendly10Logs" href="http://www.geocaching.com/seek/cdpf.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68&amp;lc=10" target="_blank">10 Logs</a>&nbsp;·&nbsp;
- <a id="ctl00_ContentBody_lnkPrintDirectionsSimple" class="lnk" href="http://maps.google.com/maps?f=d&amp;hl=en&amp;saddr=49.7332,8.569667%20%28Home%20Location%29&amp;daddr=58.80035,17.81005%28Stenarna%29" target="_blank">
- <img src="gc433yc_files/directions.png" alt="Driving Directions" title="Driving Directions" height="16" width="16">&nbsp; <span>
- Driving Directions
- </span>
- </a></small></p>
- <div id="ctl00_ContentBody_uxPrintPDFSection" style="display: none;">
- <p>
- <img src="gc433yc_files/pdf_icon.gif" alt="PDF" title="PDF" height="16" width="16">&nbsp;<small>[PDF:]&nbsp;<a id="ctl00_ContentBody_lnkPDFPrintNoLogs" href="javascript:pl(0);">No Logs</a>&nbsp;<a id="ctl00_ContentBody_lnkPDFPrint5Logs" href="javascript:pl(5);">5 Logs</a>&nbsp;<a id="ctl00_ContentBody_lnkPDFPrint10Logs" href="javascript:pl(10);">10 Logs</a></small></p>
- </div>
- </div>
- <div id="Download">
- <p class="NoBottomSpacing">
- <span id="ctl00_ContentBody_uxDownloadLabel" style="font-weight:bold;">Download</span>:
- <small>
- <a id="ctl00_ContentBody_lnkDownloads" title="Read about waypoint downloads" href="http://www.geocaching.com/software/default.aspx">Read about waypoint downloads</a>
- </small>
- </p>
-
- <p class="NoBottomSpacing TopSpacing">
- <input name="ctl00$ContentBody$btnLocDL" value="LOC waypoint file" id="ctl00_ContentBody_btnLocDL" type="submit">
- |
- <input name="ctl00$ContentBody$btnGPXDL" value="GPX file" id="ctl00_ContentBody_btnGPXDL" type="submit">
- |
- <input name="ctl00$ContentBody$btnSendToGPS" value="Send to My GPS" onclick="s2gps('fee1ad5a-d3df-46b7-9fe0-32eb0d452b68');return false;" id="ctl00_ContentBody_btnSendToGPS" type="submit">
- |
- <input name="ctl00$ContentBody$btnSendToPhone" value="Send to My Phone" onclick="s2phone('GC433YC');return false;" id="ctl00_ContentBody_btnSendToPhone" type="submit">
- | <input name="ctl00$ContentBody$btnSendTocgeo" value="Send to c:geo" onclick="s2cgeo('GC433YC'); return false;" id="ctl00_ContentBody_btnSendTocgeo" type="button"></p>
-
- </div>
- <div style="border-top: 1px solid rgb(192, 206, 227);"><fieldset class="dialogFooter" style="background-color: #EFF4F9;border-color: #C0CEE3 !important;margin-top:0;padding: 0.5em;"><legend class="note" style="background:url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sDGQg7CZXhIq0AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAD30lEQVQ4yy3M2W8UBRwH8O9vjj2ms92rpUsPutClLdjVQi0WS%2BHBNCq2QCKJhoemLxhr9QlTEhIjPIgxKiRINKSiQEKEBINIsVpSSRpQMLZKCU3tfQBdeyzda3Z3ZnZ%2Bvvj5Az5kWZaLiOwAFAAeZl6z%2BNevNRM%2FnGoB4JEUl5ReeuRNRaY9joKSZFnT%2Fpny5rYRu7tgEsA%2FAMaImSsBuP5P8mb7L25%2BfPvqzuo3D8%2F5qupVQ0sUyoqLLNPgse9Pls%2FevFCua3E5tOedBxWtHX2ykn9HAlDFM39uIFESkjZveuH367X1Xed%2FkZ15%2Fid3e8omrp1%2Brul47z1BklPVb3TFK%2FZ0LE799HVo%2BMz729jQ9eoDR2YkTixtxc3PX%2BP2s7cfnuiorDvUfUNyKGlmThc3tDy5d%2FzAbiLKAkgBEGWnyxXa%2B%2B5TpaAUeYGgJYhSoUBDVxqxMh2MR6MVzoISu%2Bx0qUTkJCKZmaXSptdnouNDfmZWcnpG1RNR1UhEHe4NYcHQ4r6ckQ2Q9UnjAoVeNEesYi0QbpzyVdWPA0gDUAEEsvGVwgfdh4Nrt7dGVifv58dnR%2FypyJRLj6%2BIejrFzWeGr0mIRVQE65%2Fqg4MeW76%2FAIDAc0OO5G%2BXS1aXI66Et9LKrC45kyMDtuJsxFa2721NKgpZDn%2BxOH%2BqzS5c%2F2CrBLaAlVkHBMkm2hyF030XSsa%2F6ija5taENTvbk4H9h%2BKr44P68qUjHq8tKiDPyXD7BZxvz1s3elk2fEESEN49hzvfuFQzJqXmR92e0BZ74KX2jHpiftn27KuWfLS6SFFdtmTx85wmhVASlhAZdfAfl2RiE5RNigL2fnSLFa9W8fCcU%2FiuU%2FUaS1K483RW8pWKqN1ngS2SVa%2FIVk7U3OsIfZ8pfOsLG1kGMjnAbO6akEhx3%2Bf3eon%2BvvqCMnCu0jz5ikuq3GFy01smhm%2FI8Ach%2B0ul4vUbybaQIP75Y5GMDHIWMO8OZ8sb26eImRuYOQSgiixz8%2FjFYw3ywJeBYD4IWpwgiIBdZTZ1gpEBLBNEQEwHzLZv53y72vqJmQPMXARgIxHVAtgy1tNdZ%2FR%2BWrCJZ0XkTBAIAMMCYAl2XvDWZO2ymCtSZY2D9UPEzA4AbgBBAHVs6ttJT4ZTpuB3HK1aG9vUkhB0zQDYyNjcmccJy%2FLW7Fhab08amLwro%2FXYFQmAwcwZIkrC1OP48cMAj%2FSVKU0Hl1BYHvMdPNuvJVZXQMKKR81PBACdmU0iymJXZ4yZ%2F5WYmYnIYGYNorwI1TeGZ142UBKOoLMnAuCRU3VHAESZWQNgEpHFzCYAnYhS%2FwF8odAV4EB4aAAAAABJRU5ErkJggg%3D%3D&quot;) no-repeat scroll 0 0 transparent">GCTour</legend><input onclick="return false;" style="float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB9kFFAUXKNiDRngAAAJmSURBVDjLjZPPS1RRFMc%2F972n1qiUpqMRaj8UXPVj46Igw0WrKIKkwEWSCC4jjKLoX5BoU5GUJg6KFrVpFYiBEAouAkH0Of4endHRKSSY53v3tHgzbyxddFb3Xu753O%2F3nHMVwOBw5LpSvBQtFQIggpAJkV1lGCOe53a13Ln7lYNicKg%2FtrWdlIMinU7LenxNPn4e%2Ft0%2F8P7Jv7kGgOu6x48eKWEzmWA9ESMWX2FlbYml1XnimzF%2BplLcuHbzcEW48mlfpOfxPoAWQRBcz2XWnsWetbFtmzl7jpmZWaILUQzD4MrlplBB%2FqFn73q7G7MAC0C0BgHPc6mprvaBotGiEa1ZXl7hw6ch8q0Czp09H%2Fo%2BPtYJjAYArTUArreLbUcR0YgIon2QJ5q8vDzCleUopXB33atv3r6y2u91uFbWgg%2FQVFdXAeIDBH5cbMTZ2AQgXV5GQzzB6LcRU0RbgJuzkGnfQnQeUf4awNnY5FJbGyjFWHc3%2FoMa0cI%2BC0opTp05jVIqqPJGVqEEk4FoHajOAPyNaZoszi%2BSuHUbN7nlXwiFfIVKkVdYSMQwKAJTGcYiUGFlJfkAi9q6WmLJLRpaW4MXdUbRhebm4Gy8pyf8dxsVWIaJPb8AwK%2BpKf4nAgsKMAyTuro61sNhpicmAMgvKuJkfT0AC9PTODs7mRE0EmjNHgsK0zQBaJqeyhRS8aXkWFAwZ2eHFtE8f9HliUgN9x%2F6AMu0Vre2kydKS8vI1T%2B30ns6kEqlsCwznk476cCC4zjtA4OR147jVOV%2BsZ9UXlxMdHLSBxUX09vXs%2BJ5bkfng0cC8AdIoVh%2Ffv3rlAAAAABJRU5ErkJggg%3D%3D)" value="Add to Tour" type="button"><input onclick="return false;" style="float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9oIGQopDsx58QcAAAHySURBVDjLpZNNaxNRFIafuWYRQRCLoCnTQIsfFAwxGFGQLBVRXPqJQfFHCEqd2iIupK6q7lwIfiVZ6EKrVkRGjQUDlRJQIVqoRd0Ixk7aTGbm3uuqTYbUVPDC4XIOnOe897xc%2BM9jtCb5Qm4IsP6hb%2FjI4aODbdV8IacbjUbHcF1X5ws5vdgTWQ5fKpX%2BOjqdTofyZQGJRKL5RsMI3VrrzgClFOVyGQAhRBsolUqtrMA0TYQQGIbRFisq0Fpj2%2FbSRCEEmUyGkddZ6t4co8cn2m28YA0MAVY0GmXL5q0opULyAZ7PX6W7q5cP3yZJ%2Fsriui7A8KICa9C6iJQS3%2FcBOP9wP1oFeCrAkwHd6zbRH9uF487zsj7K7TNTXL9xzYq0LqlSqRCLxbBtm0B57N12CqkVUkkUmu%2FVWRI9e6h5dQ7ejHOAs80dOI6DW69TrVZJJpM8sj2kVsz8rOCrgED5%2BNJnruGwvSdDzV%2Fg7vSlJkAIwZzjMD7%2BjFqthtvrEsiADWvjBFIiteLH7690rdnI5GyR4uci2VUDYReklOxI7wTg45cct96O4CkPN%2FDpW9%2FP7r59lGbe8OLTK3KHJhh78rgJ8DwP0zSX7LscHwu5cOJBGkOs5t30FE9PvkcpFbLxHnCs0%2Fe7o67gK8npyLnW8v0%2F5Gb7fMJoZowAAAAASUVORK5CYII%3D)" value="Print this geocache" type="button"><input onclick="return false;" style="float:left;background-image:url(http://www.geocaching.com/images/icons/coord_update.gif)" value="Move the coordinates" type="button"></fieldset></div></div>
-
- <fieldset class="DisclaimerWidget">
- <legend class="warning">
- Please note
- </legend>
- <p class="NoBottomSpacing">
- Use of geocaching.com services is subject to the terms and conditions <a href="http://www.geocaching.com/about/disclaimer.aspx" title="Read Our Disclaimer">in our disclaimer</a>.
- </p>
- </fieldset>
-
-
- <fieldset class="NotesWidget">
- <legend class="note">
- Personal Cache Note
- </legend>
- <img src="gc433yc_files/help.png" id="pcn_help" class="CacheNoteHelpImg">
- <p id="cache_note" class="NoBottomSpacing">Click to enter a note</p>
- </fieldset>
-
- <div class="UserSuppliedContent">
-
- <span id="ctl00_ContentBody_ShortDescription">Test
-</span>
-
- </div>
-
- <br>
- <div class="UserSuppliedContent">
-
- <span id="ctl00_ContentBody_LongDescription">Test</span>
-
- </div>
-
- <p>
-
-
- </p>
- <p id="ctl00_ContentBody_hints">
- <strong>
- Additional Hints</strong>
- (<a id="ctl00_ContentBody_lnkDH" title="Decrypt" onclick="return false;" href="#">No hints available.</a>)</p>
- <div id="div_hint" class="span-8 WrapFix">
- </div>
- <div id="dk" style="display: block;" class="span-9 last">
- <span id="ctl00_ContentBody_EncryptionKey" class="right"></span>
- </div>
- <div class="Clear">
- </div>
-
- </div>
-
-
- <div class="span-6 prepend-1 last">
-
-
-<div class="CacheDetailNavigationWidget NoPrint">
-
- <h3 class="WidgetHeader">
- Navigation
- </h3>
- <div class="WidgetBody">
-
- <ul class="CacheDetailsNavLinks">
- <li><a href="http://www.geocaching.com/seek/log.aspx?ID=3376131" class="lnk"><img src="gc433yc_files/write_log.png">&nbsp;<span>Log your visit</span></a></li>
-<li><a href="http://www.geocaching.com/my/watchlist.aspx?w=3376131" class="lnk"><img src="gc433yc_files/watch.png">&nbsp;<span>Watch Listing</span></a></li>
-<li><a href="http://www.geocaching.com/hide/report.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68" class="lnk"><img src="gc433yc_files/edit.png">&nbsp;<span>Edit Listing</span></a></li>
-<li><a href="http://www.geocaching.com/hide/attributes.aspx?WptID=3376131" class="lnk"><img src="gc433yc_files/edit_attributes.png">&nbsp;<span>Edit Attributes</span></a></li>
-<li><a href="http://www.geocaching.com/hide/wptlist.aspx?RefWptID=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68&amp;DS=1" class="lnk"><img src="gc433yc_files/waypoints.png">&nbsp;<span>Waypoints</span></a></li>
-<li><a href="http://www.geocaching.com/seek/upload.aspx?id=3376131" class="lnk"><img src="gc433yc_files/photo.png">&nbsp;<span>Upload Images</span></a></li>
-<li><a href="http://www.geocaching.com/seek/log.aspx?ID=3376131&amp;LogType=5" class="lnk"><img src="gc433yc_files/archive.png">&nbsp;<span>Archive Listing</span></a></li>
-<li><a href="http://www.geocaching.com/seek/log.aspx?ID=3376131&amp;LogType=23" class="lnk"><img src="gc433yc_files/enable.png">&nbsp;<span>Enable Listing</span></a></li>
-<li><a href="http://www.geocaching.com/bookmarks/ignore.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68&amp;WptTypeID=137" class="lnk"><img src="gc433yc_files/ignore.png">&nbsp;<span>Ignore Listing</span></a></li>
-<li><a href="http://www.geocaching.com/bookmarks/mark.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68&amp;WptTypeID=137" class="lnk"><img src="gc433yc_files/bookmark_list.png">&nbsp;<span>Bookmark Listing</span></a></li>
-
- </ul>
-
- </div>
-
-
-</div>
-
-
-
-
-
- <div id="map_preview_canvas" class="TopSpacing leaflet-container leaflet-fade-anim" style="width: 228px; height: 175px; position: relative;"><div style="left: 0px; top: 0px;" class="leaflet-map-pane"><div class="leaflet-tile-pane"><div class="leaflet-layer"><img src="gc433yc_files/303_002.jpg" style="width: 256px; height: 256px; left: -55px; top: -187px;" class="leaflet-tile leaflet-tile-loaded"><img src="gc433yc_files/303.jpg" style="width: 256px; height: 256px; left: 201px; top: -187px;" class="leaflet-tile leaflet-tile-loaded"><img src="gc433yc_files/304_002.jpg" style="width: 256px; height: 256px; left: -55px; top: 69px;" class="leaflet-tile leaflet-tile-loaded"><img src="gc433yc_files/304.jpg" style="width: 256px; height: 256px; left: 201px; top: 69px;" class="leaflet-tile leaflet-tile-loaded"></div></div><div class="leaflet-objects-pane"><div class="leaflet-shadow-pane"></div><div class="leaflet-overlay-pane"></div><div class="leaflet-marker-pane"><img title="Stenarna" style="margin-left: -10px; margin-top: -23px; opacity: 1; left: 114px; top: 88px; z-index: 88;" class="leaflet-marker-icon leaflet-clickable" src="gc433yc_files/137.png"></div><div class="leaflet-popup-pane"></div></div></div><div class="leaflet-control-container"><div class="leaflet-top leaflet-left"><div class="leaflet-control-zoom leaflet-control"><a title="Zoom in" href="#" class="leaflet-control-zoom-in"></a><a title="Zoom out" href="#" class="leaflet-control-zoom-out"></a></div></div><div class="leaflet-top leaflet-right"></div><div class="leaflet-bottom leaflet-left"></div><div class="leaflet-bottom leaflet-right"><div class="leaflet-control-attribution leaflet-control"><a href="http://www.geocaching.com/about/maps.aspx#leaflet" target="_blank">About our maps</a></div></div></div></div>
-
-
-
- <div id="ctl00_ContentBody_detailWidget" class="CacheDetailNavigationWidget TopSpacing BottomSpacing">
-
- <h3 class="WidgetHeader">
- Attributes</h3>
- <div class="WidgetBody">
- <img src="gc433yc_files/wheelchair-no.gif" alt="not wheelchair accessible" title="not wheelchair accessible" height="30" width="30"> <img src="gc433yc_files/available-yes.gif" alt="available 24-7" title="available 24-7" height="30" width="30"> <img src="gc433yc_files/scenic-yes.gif" alt="scenic view" title="scenic view" height="30" width="30"> <img src="gc433yc_files/restrooms-yes.gif" alt="restrooms available" title="restrooms available" height="30" width="30"> <img src="gc433yc_files/attribute-blank.gif" alt="blank" title="blank" height="30" width="30"> <img src="gc433yc_files/attribute-blank.gif" alt="blank" title="blank" height="30" width="30"> <p class="NoBottomSpacing"><small><a href="http://www.geocaching.com/about/icons.aspx" title="What are Attributes?">What are Attributes?</a></small></p>
- </div>
-
- </div>
-
-
- <div id="ctl00_ContentBody_uxBanManWidget" class="CacheDetailPageAds clear">
-
- <div id="ctl00_ContentBody_divContentSide">
-
- <p class="NoBottomSpacing">
- <span id="ctl00_ContentBody_ADModules_09"><iframe type="iframe" src="gc433yc_files/a.html" marginwidth="0" marginheight="0" hspace="0" vspace="0" style="width:120px;Height:240px;" frameborder="0" height="240" scrolling="no" width="120">&lt;a
-
-href="http://ads.groundspeak.com/a.aspx?ZoneID=9&amp;Task=Click&amp;;Mode=HTML&amp;SiteID=1"
- target="_blank"&gt;&lt;img
-src="http://ads.groundspeak.com/a.aspx?ZoneID=9&amp;Task=Get&amp;Mode=HTML&amp;SiteID=1"
- width="120" height="240" border="0" alt="" /&gt;&lt;/a&gt;</iframe></span>
- </p>
- <p class="AlignCenter">
- <small><a href="http://www.geocaching.com/about/advertising.aspx" id="ctl00_ContentBody_advertisingWithUs" title="Advertising with Us">Advertising with Us</a></small></p>
-
- </div>
-
-</div>
-
-
-
- <div class="GoogleAds AlignCenter BottomSpacing">
- </div>
- <div class="clear">
- </div>
-
- <span id="ctl00_ContentBody_lnkTravelBugs"></span>
-
-
-<div class="CacheDetailNavigationWidget">
-
- <h3 class="WidgetHeader">
- <span id="ctl00_ContentBody_uxTravelBugList_uxInventoryLabel">Inventory</span>
- </h3>
- <div class="WidgetBody">
-
-
-
- <div class="TopSpacing">
-
- <p class="NoBottomSpacing"><a id="ctl00_ContentBody_uxTravelBugList_uxTrackableItemsHistory">View past Trackables</a></p>
- <p class="NoBottomSpacing"><a id="ctl00_ContentBody_uxTravelBugList_uxWhatAreTrackables" title="What are Trackable Items?" href="http://www.geocaching.com/track/default.aspx">What are Trackable Items?</a></p>
- </div>
-
-
- </div>
-
-
-</div>
-
-
-
-
- </div>
-
-
- <div id="ctl00_ContentBody_bottomSection" class="span-24 last">
-
- <p>
- <span id="ctl00_ContentBody_WaypointsInfo" style="font-weight:bold;">Additional Waypoints</span>&nbsp;<span id="ctl00_ContentBody_addEditWptLink">(<a id="ctl00_ContentBody_uxAddEditWaypoints" href="http://www.geocaching.com/hide/wptlist.aspx?RefWptID=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68&amp;DS=1">Add / Edit waypoints</a>)</span>
- <br>
- No additional waypoints to display.
-
- </p>
-
- <div id="uxlrgMap" class="fr">
-
- <div class="PageBreakBefore">
- </div>
- <div class="CDMapWidget">
- <p class="WidgetHeader NoBottomSpacing">
- <a id="ctl00_ContentBody_uxViewLargerMap" title="View Larger Map" href="http://www.geocaching.com/map/default.aspx?lat=58.80035&amp;lng=17.81005" target="_blank">View Larger Map</a>
- </p>
-
- <div class=" leaflet-container leaflet-fade-anim" id="map_canvas" style="width: 325px; height: 325px; position: relative;"><div style="left: 0px; top: 0px;" class="leaflet-map-pane"><div class="leaflet-tile-pane"><div class="leaflet-layer"><img src="gc433yc_files/4864.jpg" style="width: 256px; height: 256px; left: 20px; top: -139px;" class="leaflet-tile leaflet-tile-loaded"><img src="gc433yc_files/4865.jpg" style="width: 256px; height: 256px; left: 20px; top: 117px;" class="leaflet-tile leaflet-tile-loaded"><img src="gc433yc_files/4864_002.jpg" style="width: 256px; height: 256px; left: -236px; top: -139px;" class="leaflet-tile leaflet-tile-loaded"><img src="gc433yc_files/4864_003.jpg" style="width: 256px; height: 256px; left: 276px; top: -139px;" class="leaflet-tile leaflet-tile-loaded"><img src="gc433yc_files/4865_003.jpg" style="width: 256px; height: 256px; left: -236px; top: 117px;" class="leaflet-tile leaflet-tile-loaded"><img src="gc433yc_files/4865_002.jpg" style="width: 256px; height: 256px; left: 276px; top: 117px;" class="leaflet-tile leaflet-tile-loaded"></div></div><div class="leaflet-objects-pane"><div class="leaflet-shadow-pane"></div><div class="leaflet-overlay-pane"></div><div class="leaflet-marker-pane"><img title="Stenarna" style="margin-left: -10px; margin-top: -23px; opacity: 1; left: 162px; top: 162px; z-index: 261;" class="leaflet-marker-icon " src="gc433yc_files/137.png"></div><div class="leaflet-popup-pane"></div></div></div><div class="leaflet-control-container"><div class="leaflet-top leaflet-left"><div class="leaflet-control-zoom leaflet-control"><a title="Zoom in" href="#" class="leaflet-control-zoom-in"></a><a title="Zoom out" href="#" class="leaflet-control-zoom-out"></a></div></div><div class="leaflet-top leaflet-right"></div><div class="leaflet-bottom leaflet-left"><div class="leaflet-control-scale leaflet-control"><div style="width: 30px;" class="leaflet-control-scale-line">200 m</div><div style="width: 52px;" class="leaflet-control-scale-line">1000 ft</div></div></div><div class="leaflet-bottom leaflet-right"><div class="leaflet-control-attribution leaflet-control"><a href="http://www.geocaching.com/about/maps.aspx#leaflet" target="_blank">About our maps</a></div></div></div></div>
- <p class="WidgetFooter">
- <a id="ctl00_ContentBody_uxNotesAboutPrinting" href="#mapPrintingNotes" class="NoPrint">Notes about Printing Maps</a></p>
- </div>
- <div style="display: none;">
- <div id="mapPrintingNotes">
- To print the map in Firefox and Opera, enable background images in the print dialog.
- <a href="#dlgMapPrintWarning" class="dialog" onclick="$.fancybox.close()">
- Close
- </a>
- </div>
- </div>
-
-</div>
-
- <p class="NoPrint">
- <span id="ctl00_ContentBody_uxFindLinksHeader" style="font-weight:bold;">Find...</span>
- <br>
- <span id="ctl00_ContentBody_FindText"></span>
- </p>
- <ul class="NoPrint">
- <li>
- ...other caches&nbsp;
- <a id="ctl00_ContentBody_uxFindLinksHiddenByThisUser" href="http://www.geocaching.com/seek/nearest.aspx?u=ra_sch">hidden</a>&nbsp;
- or&nbsp;
- <a id="ctl00_ContentBody_uxFindLinksFoundByThisUser" href="http://www.geocaching.com/seek/nearest.aspx?ul=ra_sch">found</a>&nbsp;
- by this user
- </li>
-
- <li>
- ...nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksNearbyCachesOfType" href="http://www.geocaching.com/seek/nearest.aspx?tx=c66f5cf3-9523-4549-b8dd-759cd2f18db8&amp;lat=58.800350&amp;lng=17.810050">caches of this type</a>,
- <a id="ctl00_ContentBody_uxFindLinksNearbyNotFound" href="http://www.geocaching.com/seek/nearest.aspx?tx=c66f5cf3-9523-4549-b8dd-759cd2f18db8&amp;lat=58.800350&amp;lng=17.810050&amp;f=1">that I haven't found</a>
- </li>
- <li>
- ...all nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksAllNearbyCaches" href="http://www.geocaching.com/seek/nearest.aspx?lat=58.800350&amp;lng=17.810050">caches</a>,
- <a id="ctl00_ContentBody_uxFindLinksAllNearbyNotFound" href="http://www.geocaching.com/seek/nearest.aspx?lat=58.800350&amp;lng=17.810050&amp;f=1">that I haven't found</a>
- </li>
- <li>
- ...all nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksWaymarking" href="http://www.waymarking.com/directory.aspx?f=1&amp;lat=58.800350&amp;lon=17.810050">waymarks on Waymarking.com</a>
- </li>
-
-
- <li>
- ...nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksHotels" href="http://www.geocaching.com/reviews/hotels-coords-58.8004,17.8101">Hotels</a>
- </li>
- </ul>
- <p class="NoPrint">
- <span id="ctl00_ContentBody_uxMapLinkHeader" style="font-weight:bold;">For online maps...</span>
- </p>
- <span class="NoPrint">
-
-<ul>
- <span id="ctl00_ContentBody_MapLinks_MapLinks"><li><a href="http://www.geocaching.com/map/default.aspx?lat=58.80035&amp;lng=17.81005" target="_blank">Geocaching.com Map</a></li><li><a href="http://maps.google.com/maps?q=N+58%c2%b0+48.021+E+017%c2%b0+48.603+%28GC433YC%29+" target="_blank">Google Maps</a></li><li><a href="http://www.mapquest.com/maps/map.adp?searchtype=address&amp;formtype=latlong&amp;latlongtype=decimal&amp;latitude=58.80035&amp;longitude=17.81005&amp;zoom=10" target="_blank">MapQuest</a></li><li><a href="http://maps.yahoo.com/#lat=58.80035&amp;lon=17.81005&amp;zoom=16&amp;q=58.80035,17.81005&amp;conf=1&amp;start=1&amp;mvt=m&amp;trf=0" target="_blank">Yahoo Maps</a></li><li><a href="http://www.bing.com/maps/default.aspx?v=2&amp;lvl=14&amp;sp=point.58.80035_17.81005_GC433YC" target="_blank">Bing Maps</a></li><li><a href="http://www.opencyclemap.org/?zoom=12&amp;lat=58.80035&amp;lon=17.81005" target="_blank">Open Cycle Maps</a></li><li><a href="http://www.openstreetmap.org/?mlat=58.80035&amp;mlon=17.81005&amp;zoom=12" target="_blank">Open Street Maps</a></li></span>
-</ul>
-
- </span>
- <p class="NoPrint">
-
- </p>
-
- <div class="InformationWidget Clear">
- <h3>
- 1 Logged Visit</h3>
- <div role="button" class="EncryptDecrypt ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-secondary"><span class="ui-button-text">
- <a href="#" class="decrypt-link">Decrypt</a>
- </span><span class="ui-button-icon-secondary ui-icon ui-icon-arrowreturnthick-1-w"></span></div>
- <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="gc433yc_files/18.png" alt="Post Reviewer Note" title="Post Reviewer Note"> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
- <p class="HalfLeft">
- <a id="ctl00_ContentBody_uxLogbookLink" href="http://www.geocaching.com/seek/cache_logbook.aspx?guid=fee1ad5a-d3df-46b7-9fe0-32eb0d452b68">View Logbook</a>
- </p>
- <p class="NoBottomSpacing AlignRight">
- <span class="Warning">**Warning!</span> <a href="http://www.geocaching.com/about/glossary.aspx#spoiler" title="Spoilers">Spoilers</a> may be included in the descriptions or links.
- </p>
- </div>
-
- <div id="cache_logs_container">
- <table id="cache_logs_table" class="LogsTable NoBottomSpacing">
- <tbody>
- <tr class="log-row" data-encoded="false"> <td> <div class="FloatLeft LogDisplayLeft"> <p class="logOwnerProfileName"> <strong><a id="143568283" href="http://www.geocaching.com/profile/?guid=dfd444d0-537a-49ff-90f1-d7ef9b89360b">ra_sch</a></strong></p> <p class="logOwnerBadge"> <img title="Premium Member" src="gc433yc_files/prem_user.gif">Premium Member </p> <p class="logOwnerAvatar"> <a href="http://www.geocaching.com/profile/?guid=dfd444d0-537a-49ff-90f1-d7ef9b89360b"> </a></p> <p class="logOwnerStats"> <img title="Caches Found" src="gc433yc_files/icon_smile.png"> 957 </p> </div> <div class="FloatLeft LogDisplayRight"> <div class="HalfLeft LogType"> <strong> <img title="Post Reviewer Note" alt="Post Reviewer Note" src="gc433yc_files/18.png">&nbsp;Post Reviewer Note</strong></div> <div class="HalfRight AlignRight"> <span class="minorDetails LogDate">12/21/2012</span></div> <div class="Clear LogContent"> <p class="LogText">test</p> <div class="AlignRight"> <small><a title="View Log" href="http://www.geocaching.com/seek/log.aspx?LUID=c5548283-9e9b-4dfd-bee3-bc4a2b17e1db" target="_blank">
-
- View / Edit Log / Images
- </a></small>&nbsp; <small><a title="Upload Image" href="http://www.geocaching.com/seek/upload.aspx?LID=284810941" target="_blank">Upload Image</a></small> </div> </div> </div> </td> </tr></tbody>
- <tfoot style="display: none;">
- <tr>
- <td class="AlignCenter">
- <div id="pnlLazyLoad" style="">
- <img src="gc433yc_files/loading2.gif" class="StatusIcon" alt="Loading">
- Loading Cache Logs...
- </div>
- <div id="pnlButtonLoad" style="display: none;">
- <a class="MobileButton">
- Load More Logs...</a>
- </div>
- </td>
- </tr>
- </tfoot>
- </table>
- </div>
- <p>
- <small>
- Current Time: <time datetime="2012-12-21T11:14:37Z">12/21/2012 11:14:37 (UTC-08:00) Pacific Time (US &amp; Canada) (19:14 GMT)</time><br>Last Updated: <time title="2012-12-21T19:14:41Z" class="timeago" datetime="2012-12-21T19:14:41Z">about a minute ago</time> on 12/21/2012 11:14:41 (UTC-08:00) Pacific Time (US &amp; Canada) (19:14 GMT) <br>Last Found: Never<br><span class="Warning">This cache has not been published yet.</span><br>Rendered From:Unknown<br>Coordinates are in the WGS84 datum
- </small>
- </p>
-
-
- </div>
- <script id="tmpl_CacheLogRow" type="text/x-jquery-tmpl">
- <tr class="log-row" data-encoded="${IsEncoded}" >
- <td>
- <div class="FloatLeft LogDisplayLeft" >
- <p class="logOwnerProfileName">
- <strong><a id="143568283" href="/profile/?guid=${AccountGuid}">${UserName}</a></strong></p>
- <p class="logOwnerBadge">
- <img title="${creator.GroupTitle}" src="${creator.GroupImageUrl}">${creator.GroupTitle}
- </p>
- <p class="logOwnerAvatar">
- <a href="/profile/?guid=${AccountGuid}">
- {{if includeAvatars && AvatarImage}}
- <img width="48" height="48" src="http://img.geocaching.com/user/avatar/${AvatarImage}">
- {{else includeAvatars }}
- <img width="48" height="48" src="/images/default_avatar.jpg">
- {{/if}}
- </a></p>
- <p class="logOwnerStats">
-
- {{if GeocacheFindCount > 0 }}
- <img title="Caches Found" src="/images/icons/icon_smile.png"> ${GeocacheFindCount}
- {{/if}}
-
- </p>
- </div>
- <div class="FloatLeft LogDisplayRight">
- <div class="HalfLeft LogType">
- <strong>
- <img title="${LogType}" alt="${LogType}" src="/images/logtypes/${LogTypeImage}">&nbsp;${LogType}</strong></div>
- <div class="HalfRight AlignRight">
- <span class="minorDetails LogDate">${Visited}</span></div>
- <div class="Clear LogContent">
- {{if LatLonString.length > 0}}
- <strong>${LatLonString}</strong>
- {{/if}}
- <p class="LogText">{{html LogText}}</p>
- {{if Images.length > 0}}
- <table cellspacing="0" cellpadding="3" class="LogImagesTable">
- {{tmpl(Images) "tmplCacheLogImages"}}
- </table>
- {{/if}}
-
- <div class="AlignRight">
- <small><a title="View Log" href="log.aspx?LUID=${LogGuid}" target="_blank">
- {{if (userInfo.ID==AccountID)}}
- View / Edit Log / Images
- {{else}}
- View Log
- {{/if}}
- </a></small>&nbsp;
- {{if (userInfo.ID==AccountID)}}
- <small><a title="Upload Image" href="upload.aspx?LID=${LogID}" target="_blank">Upload Image</a></small>
- {{/if}}
- </div>
- </div>
- </div>
- </td>
- </tr>
- </script>
- <script id="tmpl_CacheLogImages" type="text/x-jquery-tmpl">
- <tr>
- <td>
- <a class="tb_images lnk" rel="tb_images[grp${LogID}]" href="http://img.geocaching.com/cache/log/large/${FileName}" data-title="{{tmpl "tmplCacheLogImagesTitle"}}">
- <img title="Photo" alt="Photo" src="/images/icons/16/photo.png">
- <span>${ $('<div />').text($('<div />').html($item.data.Name).text()).html() }</span>
- </a>
- </td>
- </tr>
- </script>
- <script id="tmpl_CacheLogImagesTitle" type="text/x-jquery-tmpl">
- &lt;span class=&quot;LogImgTitle&quot;&gt; ${ $('<div />').text($('<div />').text($('<div />').html($item.data.Name).text()).html()).html() } &nbsp;&lt;/span&gt;&lt;span class=&quot;LogImgLink&quot;&gt;
-
- &lt;a target=&quot;_blank&quot; href=&quot;log.aspx?LUID=${$item.parent.parent.data.LogGuid}&IID=${ImageGuid}&quot;>View Log&lt;/a&gt;&nbsp;
-
- &lt;a href=&quot;http://img.geocaching.com/cache/log/large/${FileName}&quot;>Print Picture&lt;/a&gt;&lt;/span&gt;
-
- {{if (Descr && Descr.length > 0) }}
- &lt;br /&gt;&lt;p class=&quot;LogImgDescription&quot;&gt;${ $('<div />').text($('<div />').text($('<div />').html($item.data.Descr).text()).html()).html() }&lt;/p&gt;
- {{/if}}
- </script>
- <script id="tmpl_CacheCoordinateUpdate" type="text/x-jquery-tmpl">
- <div class="ccu-update" data-lat="${ll[0]}" data-lng="${ll[1]}">
- <h4 class="BottomSpacing">Corrected Coordinates (hidden from others)</h4>
- <dl>
- <dt>Original:</dt>
- <dd>${ll_formatted} <a href="#" class="ccu-restore">Restore</a></dd>
- </dl>
- <dl class="ccu-parse">
- <dt>Change To:</dt>
- <dd>
- <input type="text" max="40" size="35" class="cc-parse-text">
- <button class="ccu-button ccu-parse">Submit</button>
- </dd>
- </dl>
- <dl class="ccu-parseverify" style="display:none;">
- <dt>Change To:</dt>
- <dd>
- <span class="ccu-parseverify-coords">N 32°38.880′, W 097°23.755′</span>
-
- <button class="ccu-button ccu-parseverify-accept">Accept</button>&nbsp;<button class="ccu-button ccu-parseverify-cancel">Cancel</button>
- </dd>
- </dl>
- </div>
- <div class="Clear"></div>
-
- </script>
-
- <script type="text/javascript">
- <!--
- var dh, lat, lng, guid;
-
- dh = 'true';
-
- lat=58.80035; lng=17.81005; guid='fee1ad5a-d3df-46b7-9fe0-32eb0d452b68';
-
-
- function s2gps(guid) {
- var w = window.open('sendtogps.aspx?guid=' + guid, 's2gps', config='width=450,height=450,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no');
- w.focus();
- }
-
- function s2phone(wpid) {
- window.location.href='sendtophone.aspx?gc=' + wpid;
- }
-
- function pl(lc) {
- document.location.href='cache_details_print.aspx?guid=' + guid + '&numlogs=' + lc +'&pt=full&lt=letter&decrypt='+ ((dh)?'y':'n');
- }
- function setNotification(id) {
- //new Effect.Highlight(id, {startcolor:'#ffffff', endcolor:'#ffff99', restorecolor:'#ffff99', duration:3.0, queue:'front'});
- //new Effect.Highlight(id, {startcolor:'#ffff99', endcolor:'#ffffff', restorecolor:'#ffffff', duration:5.0, queue:'end'});
- }
- function cmo(id) {
- //new Effect.Fade(id);
- Cookie.set('sn', true);
- }
- function pp(img) {
- var w = window.open(img);
- w.focus();
- }
-
- //-->
- </script>
- <script language="javascript" type="text/javascript">
- var map, bounds;
- var canUpdateFavoriteStatus = true;
- var decryptLogs = (urlParams["decrypt"] && urlParams["decrypt"] == "y") ? true : false;
- var logInitialLoaded = false;
- var $tfoot = $("#cache_logs_table").find("tfoot");
- var currentPageIdx = 1, totalPages = 1, pageSize = 10;
- var isBusy = false;
-
- var locString = {
- decrypt: 'Decrypt',
- encrypt: 'Encrypt'
- };
-
- $("#tmpl_CacheLogImagesTitle").template("tmplCacheLogImagesTitle");
- $("#tmpl_CacheLogImages").template("tmplCacheLogImages");
- $("#tmpl_CacheLogRow").template("tmplCacheLogRow");
-
- $(".EncryptDecrypt")
- .button({ icons: { secondary: 'ui-icon-arrowreturnthick-1-w'} })
- .click(function (e) {
- e.preventDefault();
- $("tr.log-row").each(function (i, obj) {
- var $obj = $(obj);
- if ($obj.data("encoded") == true) {
- var lt = $obj.find("p.LogText");
- //var ltDecoded = $('<div />').html(lt.html()).text();
- lt.html(convertROTStringWithBrackets(lt.html()));
- }
- });
-
- decryptLogs = !decryptLogs;
-
- $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
-
- return false;
- });
-
- function appendNewLogs(obj) {
-
- totalPages = obj.pageInfo.totalPages;
-
- var $newBody = $(document.createElement("TBODY"));
-
- $("#tmpl_CacheLogRow").tmpl(obj.data,{ includeAvatars: includeAvatars }).appendTo($newBody);
-
- $newBody.find("a.tb_images").each(function()
- {
- var $this = $(this);
- $this.fancybox({
- 'type': 'image',
- 'titlePosition': 'inside',
- 'padding': 10,
- titleFormat: function() { return $this.data('title'); }
- });
- });
-
- $("#cache_logs_table")
- .append($newBody.children());
-
- currentPageIdx = obj.pageInfo.idx + 1;
- pageSize = obj.pageInfo.size;
- }
-
- function callLogLoad(hideFooter) {
- $.getJSON("/seek/geocache.logbook", { tkn: userToken, idx: currentPageIdx, num: pageSize, decrypt: decryptLogs },
- function (response) {
- if (response.status == "success") {
- appendNewLogs(response);
- if( hideFooter || (totalPages < currentPageIdx) ) {
- $tfoot.hide();
- }
- } else if (response.status == "error" && response.value == "1") {
- // reload the page since the data had expired.
- window.location.reload();
- }
- isBusy = false;
- });
- }
-
- $("#add_to_favorites").click(function () {
-
- if (canUpdateFavoriteStatus) {
- canUpdateFavoriteStatus = false;
-
- var fv = parseInt($(".favorite-value").text());
- fv++;
- $(".favorite-value").text(fv);
-
- var fr = parseInt($(".favorite-rank").text());
- fr--;
- $(".favorite-rank").text(fr);
-
- $("#pnlNonfavoriteCache").fadeOut("fast", function () {
- $("#pnlFavoriteCache").fadeIn("fast");
- });
-
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/update?u=' + userToken + '&f=true',
- success: function () {
- canUpdateFavoriteStatus = true;
- gotScore = false;
- showFavoriteScore();
- }
- });
-
- return false;
- }
- });
-
- $("#remove_from_favorites").click(function () {
-
- if (canUpdateFavoriteStatus) {
- canUpdateFavoriteStatus = false;
-
- var fv = parseInt($(".favorite-value").text());
- fv--;
- $(".favorite-value").text(fv);
-
- var fr = parseInt($(".favorite-rank").text());
- fr++;
- $(".favorite-rank").text(fr);
-
- $("#pnlFavoriteCache").fadeOut("fast", function () {
- $("#pnlNonfavoriteCache").fadeIn("fast");
- });
-
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/update?u=' + userToken + '&f=false',
- success: function () {
- canUpdateFavoriteStatus = true;
- gotScore = false;
- showFavoriteScore();
- }
- });
-
- return false;
- }
- });
-
- $(function () {
-
- // CSP Section
- if ($("#cspMessage").length) {
-
- var editLink = $('a[href*="report.aspx"]').attr('href');
-
- $("#cspMessage").prepend('<P>Please take a moment to check the listing and ensure it is ready to enable. Clicking "Submit for Review" will enable your cache page.</P>');
- $("#cspMessage").prepend('<P>Once it is enabled, you will receive a confirmation email that it was successfully submitted. It is peak season for cache placement. Your volunteer reviewer will strive to begin the review process within the next 7 days.</P>');
- $("#cspMessage").prepend('<P>Your cache page has not been reviewed yet. It will not appear in the review queue until you enable it.</P>');
-
- $("#cspGoBack").click(function (e) {
- e.preventDefault();
- window.location = editLink;
- return false;
- });
-
- $("#cspSubmit").click(function (e) {
- e.preventDefault();
- $.pageMethod("EnableCSPCache", JSON.stringify({ dto: { ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.success == true) {
- window.location = '/seek/cache_details.aspx?guid=' + r.guid;
- } else {
- alert("There was an error enabling your cache.");
- }
- });
- return false;
- });
-
- $("#cspConfirm").change(function() {
- if ($("#cspConfirm").is(":checked")) {
- $("#cspSubmit").removeAttr('disabled');
- $("#cspGoBack").attr('disabled', true);
- } else {
- $("#cspSubmit").attr('disabled', true);
- $("#cspGoBack").removeAttr('disabled');
- }
- });
- }
-
-
- //override coords
- if (typeof(userDefinedCoords) != "undefined") {
- if (userDefinedCoords.status == "success" && userDefinedCoords.data.isUserDefined == true) {
- mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
- $("#uxLatLon")
- .data("isOverridden", true)
- .addClass("myLatLon");
- } else if (userDefinedCoords.status == "success") {
- mapLatLng = $.extend({}, mapLatLng, userDefinedCoords.data);
- } else {
- $("#uxLatLonLink").contents().unwrap();
- }
- } else {
- $("#uxLatLonLink").contents().unwrap();
- }
-
-
- var cacheNoteText = {
- DefaultText: 'Click to enter a note',
- ErrorInSaving: 'There was an error saving page. Please refresh the page and try again.',
- SavingText: 'Please wait, saving your note...'
- };
-
-
-
- $("time.timeago").timeago();
-
- $(".button").button();
-
- var sn = Cookie.get('sn');
-
- if ($('#trNotPM').length > 0) {
- $('#trNotPM').toggle(!sn);
- }
-
- $("#cache_note").editInPlace({
- callback: function (unused, enteredText) {
- var me = $(this);
-
- var et = $.trim(enteredText);
- if (et.length > 500)
- et = et.substr(0, 500);
-
- $.pageMethod("SetUserCacheNote", JSON.stringify({ dto: { et: et, ut: userToken} }), function (r) {
- var r = JSON.parse(r.d);
- if (r.success == true) {
- if ($.trim(r.note) == "") {
- $("#cache_note").text(cacheNoteText.DefaultText);
- } else {
- $("#cache_note").text(r.note);
- }
-
- me.effect('highlight', { color: '#ffb84c' }, 'slow');
- } else {
- alert(cacheNoteText.ErrorInSaving);
- $("#cache_note").text(cacheNoteText.DefaultText);
- }
-
- });
-
- return cacheNoteText.SavingText;
- }
- , default_text: cacheNoteText.DefaultText
- , field_type: "textarea"
- , textarea_rows: "7"
- , textarea_cols: "65"
- , show_buttons: true
- , bg_over: "#FDEBBB"
- //, callback_skip_dom_reset: true
-
- });
-
- $("#lnk_slippyMap").click(function(e) {
- e.preventDefault();
- loadDynamicMap();
- return false;
- });
-
- $(".inplace_field").live("focus", function () {
- if ($(this).data("created") == null) {
- $(this).data("created", true)
- $(this).countable({
- maxLength: 500
- });
- }
- });
-
- $("#pcn_help").tipTip({ activation: 'hover', content: 'Enter your own notes here. No other user will be able to access them.' });
-
- $("a.decrypt-link").html(decryptLogs ? locString.encrypt : locString.decrypt);
-
- if ($("#cache_logs_container").length > 0) {
-
- appendNewLogs(initalLogs);
-
- if (DetectMobileQuick()) {
- $("#pnlButtonLoad")
- .show()
- .find("a.MobileButton")
- .click(function (e) {
- e.preventDefault();
- callLogLoad(false);
- return false;
- })
- .button();
- if(!DetectTierTablet()){
- $("a.MobileButton").addClass("Phone");
- }
- } else {
- $("#pnlLazyLoad").show();
-
- $(window).endlessScroll({
- fireOnce: true,
- fireDelay: 500,
- bottomPixels: ($(document).height() - $("#cache_logs_container").offset().top) + 50,
- ceaseFire: function(){
- // stop the scrolling if the last page is reached.
- return (isLoggedIn == false) || (totalPages < currentPageIdx);
- },
- callback: function() {
- if (!isBusy) {
-
- isBusy = true;
- $tfoot.show();
- callLogLoad(true);
- }
- }
- });
- }
- }
-
- if (!isLoggedIn) {
- $("#cache_logs_table").find("tfoot").hide();
- }
-
- if (mapLatLng != null) {
-
- $("#uxLatLonLink").qtip({
- suppress:false,
- content: buildCacheCoordMenu(),
- position: {
- my: 'left top',
- at: 'right top',
- adjust: {
- x: 10, y: -10
- }
- },
- show: {
- ready: false,
- event: "click",
- solo: true
- }, hide: {
- event: 'unfocus'
- },
- style: {
- tip: {
- corner: false
- },
- classes: 'ui-tooltip-widget'
- },
- events: {
- show: function () {
- if ($("#uxLatLon").data("isOverridden")) {
- $("a.ccu-restore").show();
- } else {
- $("a.ccu-restore").hide();
- }
-
- if (userDefinedCoords.status != "success") {
- $("div.ccu-update").hide();
- } else {
- $("div.ccu-update").show();
- }
- }
- }
- }).click(function (e) {
- e.preventDefault();
- return false;
- });
-
- setStaticMaps();
- //$("#staticMap").lazyload();
- }
- });
-
- function setStaticMaps() {
-
- var map = new L.Map('map_preview_canvas', {
- center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- zoom: 10,
- doubleClickZoom: false,
- dragging: false,
- touchZoom: false,
- scrollWheelZoom: false,
- attributionControl: false
- })
- .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }));
-
-
- var mapLarge = new L.Map('map_canvas', {
- center: new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- zoom: 14,
- doubleClickZoom: true,
- dragging: true,
- touchZoom: false,
- scrollWheelZoom: false,
- zoomControl: true,
- attributionControl: false
- })
- .addControl(new L.Control.Attribution({ prefix: '<a href="/about/maps.aspx#leaflet" target="_blank">About our maps</a>' }))
- .addControl(new L.Control.Scale());
-
- var tileOptions = {
- tileUrl: "http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg",
- name: "mpqosm",
- alt: "MapQuest",
- //attribution: "Tiles Courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>, Map and map data © 2012 <a href=\"http://www.openstreetmap.org\" target='_blank'>OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>. ",
- subdomains: "1234",
- tileSize: 256,
- minZoom: 0,
- maxZoom: 18
- };
-
- map.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
- mapLarge.addLayer(new L.TileLayer(tileOptions.tileUrl, tileOptions));
-
- var pinIcon = L.Icon.extend({
- iconSize: new L.Point(20, 23),
- iconAnchor: new L.Point(10,23),
- shadowUrl: null
- });
-
- var mkA = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng),
- {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
- title: mapLatLng.name
- })
- .on("click", function () {
- document.getElementById("uxlrgMap").scrollIntoView(true);
- return false;
- });
-
- var mkA2 = new L.Marker(new L.LatLng(mapLatLng.lat, mapLatLng.lng), {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + mapLatLng.type + '.png', iconAnchor: new L.Point(10,23)}),
- clickable: false, zIndexOffset:99, title: mapLatLng.name
- });
-
- map.addLayer(mkA);
- mapLarge.addLayer(mkA2);
-
- $("#ctl00_ContentBody_uxNotesAboutPrinting").fancybox({
- overlayShow: false
- });
-
-
- if (cmapAdditionalWaypoints != null && cmapAdditionalWaypoints.length > 0) {
- var llBounds = new L.LatLngBounds();
-
- for (var x = 0, len = cmapAdditionalWaypoints.length; x < len; x++) {
- var item = cmapAdditionalWaypoints[x],
- ll = new L.LatLng(item.lat, item.lng),
- marker = new L.Marker(ll, {
- icon: new pinIcon({iconUrl:'/images/wpttypes/pins/' + item.type + '.png', iconAnchor: new L.Point(10,23)}),
- title: item.name,
- clickable:false
- });
-
- llBounds.extend(ll);
- mapLarge.addLayer(marker);
- }
- var bz = mapLarge.getBoundsZoom(llBounds);
-
- mapLarge.setView(new L.LatLng(mapLatLng.lat, mapLatLng.lng), bz);
- }
- }
-
-
-
- function dht() {
- try {
- $('#div_hint').html(convertROTStringWithBrackets($('#div_hint').html()));
- var linkText = (($('#ctl00_ContentBody_lnkDH').attr('title') == 'Decrypt') ? 'Encrypt' : 'Decrypt');
- $('#ctl00_ContentBody_lnkDH').text(linkText);
- $('#ctl00_ContentBody_lnkDH').attr('title', linkText);
- } catch (e) {
- alert(e);
- return false;
- }
- return false;
- }
-
- function buildCacheCoordMenu() {
- var curLatLng = new LatLon(mapLatLng.lat, mapLatLng.lng)
- $.template( "tmplCacheCoordinateUpdate_CoordItem", "<tr><td nowrap='nowrap'>${t}</td><td class='ccc-coord' nowrap='nowrap' dataum='${k}'>${v}</td></tr>" );
-
- var $menu = $("<div></div>");
-
- $( "#tmpl_CacheCoordinateUpdate" ).tmpl( {
- ll: [mapLatLng.lat, mapLatLng.lng],
- ll_formatted: mapLatLng.oldLatLngDisplay
- } ).appendTo( $menu );
-
- $menu.find("button.ccu-button").button();
-
- $menu.delegate("button.ccu-parse", "click", function (e) {
- e.preventDefault();
- var $this = $(e.target),
- $parse =$this.closest('dd').find(".cc-parse-text"),
- parseCoords = $.trim($parse.val());
-
- if (parseCoords.length == 0) {
- alert('Please provide valid coordinates.');
- } else {
- $.getJSON("/api/geocode", { parse: parseCoords}, function (response) {
- if (response.status == "success") {
- var newLatLng = new LatLon(response.data.lat, response.data.lng);
-
- // update the displayed coords
- var dist = curLatLng.rhumbDistanceTo(newLatLng);
- var bearingTo = curLatLng.rhumbBearingTo(newLatLng);
- var bearing = bearingTo >= 0 || bearingTo < 22.5 ? "N" : bearingTo >= 22.5 || bearingTo < 67.5 ? "NE" : bearingTo >= 67.5 || bearingTo < 112.5 ? "E" : bearingTo >= 112.5 || bearingTo < 157.5 ? "SE" : bearingTo >= 157.5 || bearingTo < 202.5 ? "S" : bearingTo >= 202.5 || bearingTo < 247.5 ? "SW" : bearingTo >= 247.5 || bearingTo < 292.5 ? "W" : bearingTo >= 292.5 || bearingTo < 337.5 ? "NW" : "N";
-
- var formats = response.data.formats;
- // all these finds, make me feel dirty
- $menu
- .find("span.ccu-parseverify-coords").text(formats.DM).end()
- .find("dl.ccu-parse").hide().end()
- .find("dl.ccu-parseverify").show().end()
- .find("button.ccu-parseverify-accept")
- .data("utm", '')
- .data("dm", formats.DM)
- .data("lat", response.data.lat)
- .data("lng", response.data.lng)
- .end();
- } else {
- alert("Sorry unable to parse the coordinates you entered.");
- }
- });
- }
-
- return false;
- });
-
- $menu.delegate("button.ccu-parseverify-accept", "click", function (e) {
- e.preventDefault();
- var $this = $(this);
- // update to webmethod
- $.pageMethod("SetUserCoordinate", JSON.stringify({ dto: { data: {lat: $this.data("lat"), lng: $this.data("lng") }, ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.status == "success") {
- window.location.reload();
- } else {
- $("#uxLatLonLink").qtip('hide');
- }
-
- });
-
- return false;
- });
-
- $menu.delegate("button.ccu-parseverify-cancel", "click", function (e) {
- e.preventDefault();
- $menu
- .find("input.cc-parse-text").val('').end()
- .find("dl.ccu-parse").show().end()
- .find("dl.ccu-parseverify").hide().end();
- return false;
- });
-
- $menu.delegate("a.ccu-restore", "click", function (e) {
- e.preventDefault();
-
- $.pageMethod("ResetUserCoordinate", JSON.stringify({ dto: { ut: userToken } }), function (r) {
- var r = JSON.parse(r.d);
- if (r.status == "success") {
- window.location.reload();
- }
- });
-
- return false;
- });
-
- return $menu;
- }
-
- GSPK = window.GSPK || {};
- GSPK.Selector = {};
- GSPK.Selector.getSelected = function(){
- var t = null;
- if ( window.getSelection ){
- t = window.getSelection();
- }else if(document.getSelection){
- t = document.getSelection();
- }else if(document.selection){
- t = document.selection.createRange().text;
- }
- return t;
- }
-
- try { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); } catch(err) { }
- </script>
-
-
-
- </div>
-
-
-
-
- </div>
-
-
- </section>
-
- <footer>
-
- <div class="container">
-
- <div class="span-24 last FooterTop">
-
-
-
-<div class="LocaleText">
-
- <strong>Choose Your Language:</strong>
-
-</div>
-<div class="LocaleList">
-
- <div class="selected-language">
-
- <a href="#">English▼</a>
-
- </div>
- <ul class="language-list">
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl00_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl00$uxLocaleItem','')">English</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl01_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl01$uxLocaleItem','')">Deutsch</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl02_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl02$uxLocaleItem','')">Français</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl03_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl03$uxLocaleItem','')">Português</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl04_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl04$uxLocaleItem','')">Čeština</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl05_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl05$uxLocaleItem','')">Svenska</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl06_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl06$uxLocaleItem','')">Español</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl07$uxLocaleItem','')">Italiano</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl08$uxLocaleItem','')">Nederlands</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl09$uxLocaleItem','')">Català</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl10$uxLocaleItem','')">Polski</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl11$uxLocaleItem','')">Eesti</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl12$uxLocaleItem','')">Norsk, Bokmål</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl13$uxLocaleItem','')">한국어</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl14$uxLocaleItem','')">Magyar</a></li>
-
- <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl15_uxLocaleItem" href="javascript:__doPostBack('ctl00$uxLocaleList$uxLocaleList$ctl15$uxLocaleItem','')">Română</a></li>
-
- </ul>
-
-</div>
-<script type="text/javascript">
-
- jQuery(document).ready(function () {
- jQuery(".selected-language a").click(function (e) {
- e.preventDefault();
- var $loc = jQuery(this).parent().next();
- jQuery($loc).show().position({
- of: $loc.parent(),
- my: "left top",
- at: "left bottom",
- offset: "0 0",
- collision: "fit fit"
- });
- jQuery(this).addClass("Expanded");
- jQuery(document).click(function () {
- jQuery(".language-list").fadeOut("fast");
- jQuery(".selected-language a").removeClass("Expanded");
- });
- return false;
- });
- });
-</script>
-
- </div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
- <strong>
- About</strong></p>
- <ul class="FooterLinks">
- <li>
- <a id="ctl00_hlFooterGlossary" title="Glossary of Terms" href="http://www.geocaching.com/about/glossary.aspx">Glossary of Terms</a></li>
- <li>
- <a id="ctl00_hlFooterBrochures" title="Brochures" href="http://www.geocaching.com/tools/#Guide">Brochures</a></li>
- <li>
- <a id="ctl00_hlFooterAbout" title="About Groundspeak" href="http://www.geocaching.com/about/groundspeak.aspx">About Groundspeak</a></li>
- <li>
- <a id="ctl00_hlFooterVolunteers" title="About Our Volunteers" href="http://www.geocaching.com/volunteers/">About Our Volunteers</a></li>
- <li>
- <a id="ctl00_hlFooterHistory" title="History" href="http://www.geocaching.com/about/history.aspx">History</a></li>
- </ul>
-
- </div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
- <strong>
- Press</strong></p>
- <ul class="FooterLinks">
- <li>
- <a id="ctl00_hlFooterNews" title="News Articles" href="http://www.geocaching.com/press/">News Articles</a></li>
- <li>
- <a id="ctl00_hlFooterMediaFAQs" title="Media FAQs" rel="document" href="http://www.geocaching.com/articles/Brochures/footer/FAQ_Media.pdf">Media FAQs</a></li>
- <li>
- <a id="ctl00_hlFooterMediaInquiries" title="Media Inquiries" rel="external" href="http://support.groundspeak.com/index.php?pg=request&amp;xCategory=11">Media Inquiries</a></li>
- </ul>
-
- </div>
-
- <div class="span-5">
-
- <p class="FooterHeader">
- <strong>
- Questions &amp; Suggestions</strong></p>
- <ul class="FooterLinks">
- <li>
- <a id="ctl00_hlFooterHelpCenterLink" title="Help Center" rel="external" href="http://support.groundspeak.com/index.php">Help Center</a></li>
- <li>
- <a id="ctl00_hlFooterDiscussionForums" accesskey="f" title="Discussion Forums" href="http://www.geocaching.com/forums/">Discussion Forums</a></li>
- <li>
- <a id="ctl00_hlFooterParksPoliceLink" title="Land Management and Law Enforcement" href="http://www.geocaching.com/parksandpolice/">Land Management and Law&nbsp;Enforcement</a></li>
- <li>
- <a id="ctl00_hlFooterContactUs" title="Contact Us" href="http://www.geocaching.com/contact/">Contact Us</a></li>
- </ul>
-
- </div>
-
- <div class="span-4">
-
- <p class="FooterHeader">
- <strong>
- Resources</strong></p>
- <ul class="FooterLinks">
- <li>
- <a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="http://www.geocaching.com/tools/">Tools and Downloads</a></li>
- <li>
- <a id="ctl00_hlFooterAPIProgram" title="API Program" href="http://www.geocaching.com/live/">API Program</a></li>
- <li>
- <a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="http://www.geocaching.com/mark/">Find a Benchmark</a></li>
- </ul>
-
- </div>
- <div class="span-4 append-3 last">
-
- <p class="FooterHeader">
- <strong>
- Follow Us</strong></p>
- <ul class="FooterLinks FollowUsLinks">
- <li><a id="ctl00_hlFacebook" title="Facebook" href="http://www.facebook.com/pages/Geocachingcom/45625464679?ref=ts"><img id="ctl00_imgFacebook" title="Facebook" src="gc433yc_files/icon_facebook.png" alt="Facebook" style="border-width:0px;"></a></li>
- <li><a id="ctl00_hlTwitter" title="Twitter" href="http://twitter.com/GoGeocaching"><img id="ctl00_imgTwitter" title="Twitter" src="gc433yc_files/twitter_icon_white_22.png" alt="Twitter" style="border-width:0px;"></a></li>
- <li><a id="ctl00_hlFlickr" title=" Flickr" href="http://www.flickr.com/photos/geocaching_com/"><img id="ctl00_imgFlickr" title="Flickr" src="gc433yc_files/icon_flickr.png" alt="Flickr" style="border-width:0px;"></a></li>
- <li><a id="ctl00_hlYouTube" title="YouTube" href="http://www.youtube.com/user/GoGeocaching"><img id="ctl00_imgYouTube" title="YouTube" src="gc433yc_files/icon_youtube.png" alt="YouTube" style="border-width:0px;"></a></li>
- </ul>
-
- </div>
-
- <p class="span-24 last FooterBottom">
- Copyright
- © 2000-2012
- <a href="http://www.groundspeak.com/" title="Groundspeak, Inc." accesskey="g">Groundspeak, Inc.</a>
- All Rights Reserved.<br>
- <a id="ctl00_hlFooterTerms" accesskey="u" title="Groundspeak Terms of Use" href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeak Terms of Use</a>
- |
- <a id="ctl00_hlFooterPrivacy" accesskey="x" title="Privacy Policy" href="http://www.geocaching.com/about/privacypolicy.aspx">Privacy Policy</a>
- |
- <a id="ctl00_hlFooterLogo" accesskey="l" title="Geocaching Logo Usage Guidelines" href="http://www.geocaching.com/about/logousage.aspx">Geocaching Logo Usage Guidelines</a>
- |
- <a id="ctl00_hlFooterAPI" accesskey="`" title="API License Agreement" href="http://www.geocaching.com/live/api_license_agreement.aspx">API License Agreement</a>
- |
- <a id="ctl00_HlFooterStatus" accesskey="`" title="Current Service Status" href="http://status.geocaching.com/">Service Status</a></p>
-
- </div>
-
-
- </footer>
- <div class="SkipLinks">
-
- <a id="ctl00_hlSkipLinksTop" accesskey="t" title="Return to the Top of the Page" href="#Top">Return to the Top of the Page</a>
-
- </div>
-
-
-
-
-<script type="text/javascript">
-//<![CDATA[
-var uvtoken = 'eQoxbEsq2D0GKwApaTf6ye1uohqqSH9uBN58l8RKNQR8LIUjzbsrLb35KciGi63NpSiOeI%2bbWi%2f2TK4A7hs18eGBxRDQY0Zdteyw6JOTSnSn4usk0Adoik1Hroz5IVJb%2fZ2YYVAP1zIGCPXp2qNQJvRKrkJIEPUsjSMaDRtfTlWoJrj2CHNs%2blb1Gqo3Rg3iLL0MtaX54CezHnyjaw9diMDzKpLHNEp3BQ3%2bYKGSSDiHgKb1By9RwqflB4CwsGJSNgnF813K%2b4WkJ67Heid%2bwMyNcUkK77xwHvPHZykAsUIYz%2fABtMMd5CsIOqqOuTqA';var isLoggedIn = true;
-var userDefinedCoords = {"status":"fail","data":{"isUserDefined":false,"oldLatLngDisplay":"N 58° 48.021' E 017° 48.603'"}};
-mapLatLng = {"lat":58.80035,"lng":17.81005,"type":137,"name":"Stenarna"};
-var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"58.800350, 017.810050"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 58° 48' 01.260\" E 017° 48' 36.180\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"33V E 662347 N 6521227"}];
-userInfo = {ID: 1750448};
-userToken = 'FOUTFKOKLELXO6UEFIAQZWR6FG2ZEQLSILWLDKKY2HLEBIZYVHL44E2A27ZQQEK3WKH5JLPDQY24MBCNITG7FIJDSON6YYQ2FJXQVAEE5X7543VDICPKLCBGI53CYFJMR2S4JRHE4URPVORDQTHYRGYK5AJWDE63UP7VC5M2XKK4WREFITXQFRBJD46T4JDBPNENTZ3U4GVXK7NFUZWAPM3UX74XVRXHWYHNTKZ47HR72BTNMCBA';
-includeAvatars = false;
-initalLogs = {"status":"success", "data": [{"LogID":284810941,"CacheID":3376131,"LogGuid":"c5548283-9e9b-4dfd-bee3-bc4a2b17e1db","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Post Reviewer Note","LogTypeImage":"18.png","LogText":"test","Created":"12/21/2012","Visited":"12/21/2012","UserName":"ra_sch","MembershipLevel":3,"AccountID":1750448,"AccountGuid":"dfd444d0-537a-49ff-90f1-d7ef9b89360b","Email":"","AvatarImage":"","GeocacheFindCount":957,"GeocacheHideCount":3,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 1, "rows": 1 } };
-//]]>
-</script>
-</form>
- <script type="text/javascript">
- var browserType = {
- IE: !!(window.attachEvent && !window.opera),
- Opera: !!window.opera,
- WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
- Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
- MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
- };
-
- $(function () {
- // Make the menu system play nice with all browsers:
- $('ul.Menu li').hover(function () {
- $(this).addClass('hover');
- $('ul:first', this).css('visibility', 'visible');
- }, function () {
- $(this).removeClass('hover');
- $('ul:first', this).css('visibility', 'hidden');
- });
- if (!isiOS()) {
- // Constructing a Twitter-esque Login:
- $(".SignInLink").click(function (e) {
- e.preventDefault();
- $("#SignInWidget").toggle();
- $(".ProfileWidget").toggleClass("WidgetOpen");
- $(this).blur();
- $("#ctl00_tbUsername").focus();
- });
- $(".SignInCloseLink").click(function () {
- $("#SignInWidget").toggle();
- $(".ProfileWidget").toggleClass("WidgetOpen");
- });
- }
- $('.SignedInProfileLink').truncate({
- width: 120,
- after: '&amp;hellip;',
- center: false,
- addclass: false,
- addtitle: false
- });
-
- // Hide the warning message if the user closed it already
- if ($.cookie('hide_warning') != null) {
- $(".WarningMessage").hide();
- } else {
- $("#warningCloseButton").click(function () {
- $('.WarningMessage').hide('blind');
- $.cookie('hide_warning', 'true', { expires: 1 });
- });
- }
-
- function isiOS() {
- return (
- (navigator.userAgent.match(/(iPhone)|(iPod)|(iPad)/i))
- );
- }
- });
- </script>
-
-
- <script id="loc_favPointsScoreDesc" type="text/html">
- Favorites/Premium Logs
- </script>
- <script type="text/javascript" language="javascript">
- <!--
-
-
-
- var gotScore = false;
- var favDropDown = $('.favorite-dropdown');
- var favContainer = $('.favorite-container');
-
- function showFavoriteScore() {
- $('#imgFavoriteScore').attr('src', '/images/loading3.gif');
-
- $('#uxFavoriteScore').parent().fadeTo(200, .001, function () {
- $.ajax({
- type: "POST",
- cache: false,
- url: '/datastore/favorites.svc/score?u=' + userToken,
- success: function (scoreResult) {
- gotScore = true;
-
- var score = 0;
-
- if(scoreResult)
- score = scoreResult;
-
- if(score > 100)
- score = 100;
-
- $('#imgFavoriteScore').attr('src', '/images/favorites/piecharts/' + score + '.png');
- var pieDesc = (score < 1 ? "<1" : score) + '% ' + $("#loc_favPointsScoreDesc").text().trim();
- $('#imgFavoriteScore').attr('alt', pieDesc);
- $('#imgFavoriteScore').attr('title', pieDesc);
-
- $('#uxFavoriteScore').parent().fadeTo(1000, 1);
- $('#uxFavoriteScore').html('<strong>' + (score < 1 ? "<1" : score) + '%</strong> ' + $("#loc_favPointsScoreDesc").html());
- }
- });
- });
- }
-
-
-
- $(document).bind('mouseup', function (e) {
- var $clicked = $(e.target);
-
-
- if (!$clicked.parents().hasClass("favorite-dropdown") && !$clicked.parents().hasClass("FavoriteWidget")) {
- favDropDown.hide(1, function () {
- favContainer.addClass('favorite-container');
- favContainer.removeClass('favorite-container-open');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-down.png');
- });
- }
- });
-
- $('#uxFavContainerLink').click(function () {
- if ($(favDropDown).is(':visible')) {
- favDropDown.hide(1, function(){
- favContainer.addClass('favorite-container');
- favContainer.removeClass('favorite-container-open');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-down.png');
- });
- }
- else {
- if (!gotScore) {
- showFavoriteScore();
- }
-
- favContainer.addClass('favorite-container-open');
- favContainer.removeClass('favorite-container');
- $('#imgFavoriteArrow').attr('src', '/images/arrow-up.png');
- favDropDown.show(1);
- }
- });
- // End -->
- </script>
-
-
- <script type="text/javascript">
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-2020240-1']);
- _gaq.push(['_trackPageview']);
- (function () {
- var ga = document.createElement('script');
- ga.src = ('https:' == document.location.protocol ?
- 'https://ssl' : 'http://www') +
- '.google-analytics.com/ga.js';
- ga.setAttribute('async', 'true');
- document.documentElement.firstChild.appendChild(ga);
- })();
- $(function () {
- $("a.language").click(function (e) {
- e.preventDefault();
- window.location.replace(window.location.href + (window.location.search.indexOf("?") == -1 ? "?" : "&") + "lang=" + $(this).attr("lang"));
- });
- });
- </script>
-
-
- <!-- Quantcast Tag -->
- <div id="Quantcast">
- <script type="text/javascript">
- var _qevents = _qevents || [];
-
- (function () {
- var elem = document.createElement('script');
-
- elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";
- elem.async = true;
- elem.type = "text/javascript";
- var scpt = document.getElementsByTagName('script')[0];
- scpt.parentNode.insertBefore(elem, scpt);
- })();
- </script>
- <script type="text/javascript">
- _qevents.push({ qacct: "p-f6VPrfmR4cujU" });
- </script>
- <noscript>
- <div style="display: none;">
- <img src="http://pixel.quantserve.com/pixel/p-f6VPrfmR4cujU.gif" height="1" width="1"
- alt="Quantcast" /></div>
- </noscript>
- </div>
- <!-- End Quantcast tag -->
-
- <!-- Server: WEB13; Build: Web.HotFix_20121211.1 -->
-
-
-<div class="header gctour-grand-default" id="gctourButtonWrapper"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sDGQg7CZXhIq0AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAD30lEQVQ4yy3M2W8UBRwH8O9vjj2ms92rpUsPutClLdjVQi0WS%2BHBNCq2QCKJhoemLxhr9QlTEhIjPIgxKiRINKSiQEKEBINIsVpSSRpQMLZKCU3tfQBdeyzda3Z3ZnZ%2Bvvj5Az5kWZaLiOwAFAAeZl6z%2BNevNRM%2FnGoB4JEUl5ReeuRNRaY9joKSZFnT%2Fpny5rYRu7tgEsA%2FAMaImSsBuP5P8mb7L25%2BfPvqzuo3D8%2F5qupVQ0sUyoqLLNPgse9Pls%2FevFCua3E5tOedBxWtHX2ykn9HAlDFM39uIFESkjZveuH367X1Xed%2FkZ15%2Fid3e8omrp1%2Brul47z1BklPVb3TFK%2FZ0LE799HVo%2BMz729jQ9eoDR2YkTixtxc3PX%2BP2s7cfnuiorDvUfUNyKGlmThc3tDy5d%2FzAbiLKAkgBEGWnyxXa%2B%2B5TpaAUeYGgJYhSoUBDVxqxMh2MR6MVzoISu%2Bx0qUTkJCKZmaXSptdnouNDfmZWcnpG1RNR1UhEHe4NYcHQ4r6ckQ2Q9UnjAoVeNEesYi0QbpzyVdWPA0gDUAEEsvGVwgfdh4Nrt7dGVifv58dnR%2FypyJRLj6%2BIejrFzWeGr0mIRVQE65%2Fqg4MeW76%2FAIDAc0OO5G%2BXS1aXI66Et9LKrC45kyMDtuJsxFa2721NKgpZDn%2BxOH%2BqzS5c%2F2CrBLaAlVkHBMkm2hyF030XSsa%2F6ija5taENTvbk4H9h%2BKr44P68qUjHq8tKiDPyXD7BZxvz1s3elk2fEESEN49hzvfuFQzJqXmR92e0BZ74KX2jHpiftn27KuWfLS6SFFdtmTx85wmhVASlhAZdfAfl2RiE5RNigL2fnSLFa9W8fCcU%2FiuU%2FUaS1K483RW8pWKqN1ngS2SVa%2FIVk7U3OsIfZ8pfOsLG1kGMjnAbO6akEhx3%2Bf3eon%2BvvqCMnCu0jz5ikuq3GFy01smhm%2FI8Ach%2B0ul4vUbybaQIP75Y5GMDHIWMO8OZ8sb26eImRuYOQSgiixz8%2FjFYw3ywJeBYD4IWpwgiIBdZTZ1gpEBLBNEQEwHzLZv53y72vqJmQPMXARgIxHVAtgy1tNdZ%2FR%2BWrCJZ0XkTBAIAMMCYAl2XvDWZO2ymCtSZY2D9UPEzA4AbgBBAHVs6ttJT4ZTpuB3HK1aG9vUkhB0zQDYyNjcmccJy%2FLW7Fhab08amLwro%2FXYFQmAwcwZIkrC1OP48cMAj%2FSVKU0Hl1BYHvMdPNuvJVZXQMKKR81PBACdmU0iymJXZ4yZ%2F5WYmYnIYGYNorwI1TeGZ142UBKOoLMnAuCRU3VHAESZWQNgEpHFzCYAnYhS%2FwF8odAV4EB4aAAAAABJRU5ErkJggg%3D%3D"></div><div style="left: -210px; height: 828px;" id="gctourContainer"><div style="height: 40px; cursor: pointer; -moz-user-select: none;" class="header gctour-grand-default" id="gctour_header"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIcAAAAYCAYAAADQ1%2B6cAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oIGQo6LQ%2FxwecAAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAAEBBJREFUaN7tW2tUVFeW%2Fu6jHlRB8S5eIo8SRFAQFaKxfSW2qBgjMmpixkfSJplMllkaku6OkzG2vZJxTDR20tMmrCahk8YsO3REDGjHFyrYohGiRsQSQZRnBSwKq6iqW3Xrzo%2Bcq8ebinavNT8GV%2B5aZ91bt86rzv7O3t%2Fe%2BxQDckmSxODOxQDgAKgAqAFoAGjJsxoAT75nSX0RgADABcBJ7m7yTgQgMQwjUf0rx%2FvBpax%2Fvzb%2FF%2F3%2FdCnWSLGQDBE4RwCgAaADoCclgAKJDBCGAscQADuAQQC3yGc3AK8MEMVY9P22XBX3H8z3n2hzL4BIPwHl3hdPhEWDQgaGmoBBDyDw1JtP5vdfOvVzdVConeVVrMdhCx%2F6riOJ5VWCPia5ZcTUxX9Pe%2BLX5xiOsxFAqUi%2FPrlIkkQDkC4MJTAfuYvkLinaMD%2FSRllfWY8GhUTNS5IkifkJIH52oiRJLAGDijIbKlI0AHRfPZe5Xh0UJjy0YdeRgPBY2cxwouDmzH%2Fdnta2v%2BQRR%2FfV0dqw6I7Uf3nls9FLik4D6AXQA%2BAmAAfRHrLAeGoc2jzJQvaQ%2Bl5K2Dw1T568k4Xspdr4KLOoNH%2ByCaTHEClA%2FlMmyJ%2FpepBAxkiSpFKYDy0lNO7o%2BmlLw9Ieupb1%2FDtXARiuH%2F1s9K0Oc0zGijeayOICAH%2F1yw%2FGXCp783FnX0ecccLsAzP%2B%2B%2BBOAJ0EJINEGBylkWgTxVGC8xDO4qI4C0fxHnp%2BEqnvJlzHTc1JBrGGApNP0b%2BTfJYB4s80SfcyyT9mrh4EkLBkoQMABAOIxMUDY%2FDJLxYCCDOXb09X6YOdWc%2B%2Fc44somegpTH86t7%2FWUgtsgOA07Tg38x5HzUVB8aOumZpODSv%2FXDZGACBFABkAIYAiAQQDSAOQJwgCPGCIMSTz7EAYgAYAYSTEgkginwXByDO5XLFezweum4kgFAABqqEkfcxVL9yvSAyHy0FIo0f7UlzK4bSShylyeh6HNl0zP1I8f97zkHKHaH9ZX0RHl1XBSDkRs3uvFm%2Fqy0mu8ELwGta%2BGLTlYr3g31eQWJ5tUjeswB8qoAgccrG8orrRz%2BLGzGtUOYeOgIiiTyHAQi5fPlyfHl5eUFHR8ckl8tlBACtVmuJi4trWLRo0d6xY8feIO188hzPnj2buG%2FfvkU9PT3j3W53KACfXq%2B%2FkZCQcGzlypXlUVFRfYQE%2BwCo1q5dWyyKYgTDMCxD2LAkST6DwdC4ZcuWN8i8XRRf8fm5eynzIykIuz%2BT6KW0kTTcwSFrDgOOf5iNXnMucp7cfe3gJxkBEXF2llNpyI%2FkAHD6qAQh1JTd0Fm7Jz5%2B5rI2SvvwADjDyDGu2MkLer67cDw%2BeuKcfmKqPKQPA4DwL7744mfV1dXrQkND22bNmrU7MzOzjed578WLF0eePn16xo4dO3bk5eX9YcmSJV%2BTdvyuXbsePnz48Jro6Ohz%2Bfn5Jenp6ddcLhfT0NCQfObMmQWbNm16dNWqVa9Onjy5lZgjdvr06R%2FxPB%2Fe39%2BfXFdXt2rJkiXveDyeIZ1O1000h1pBZH2KQpssgbzjKG0je23y5nETsDGySZQkadiaGP4ul%2FXUp7MQZLQgwKC9fmTX1JRFaw8S0yDzAh0AbfrKN05c%2B1tpZvzMZRar%2BWxga3Vx5kDr%2BVRHT9tIwdYXLvlEVmcc2Z5f1n6FtPcQEIXU1dWNq6qqenXChAl7XnjhhS9ZlnWQhZRGjRrV8fjjjzcUFxfn7d%2B%2Ff21iYuKbOTk5lhMnTiQfOnTouenTp5etXr36IHGX3QDEjIyMK0uXLj20cePG9aWlpb9NT09fYTAYvADEJUuWNAKIqK2tZevq6jB%2F%2FvwW0tZOwBFImQp%2F3pKL1LUR8%2Bkja6GnzJKa1HcR932Q0iK%2B4aw9%2BLtsZ0%2FzGESP7gagGeptT4jOmSsQM%2BDFd616BEcz8Lj0hoQMceBq45ivnh9v4hhIQRExAyHJmZbIzBm9nCYAnErraan8fa6rtzVCG5U8SHkqQRUVFStHjBhx9sUXX6wiiz5IdqYkg%2FS5556rioiI6Jd3aWVl5eLk5OT61atXHwZgJUUWFqvRaFQvvfTS5urq6rTu7m6vwWAYojiVSxRFjyK4FwBAe%2F78eWN5eXlhb2%2FvWFEUA%2FR6fU9GRsaxZ5555jjP8%2BK6deteXbx48dvTp0%2F%2FhjIxAVu3bl1qt9uzNm%2FevPvll1%2FePGXKlL0nT57MY1m2e9u2bS%2BT38PeJ84yLMBxJ%2FbAMAxC4gYBqCXRq2VYLhCA1nNqV8zA0Y8noevbUb1OlrkZnnEjMHbUTXVQ2FBuSswtXK4ZhcK3ziM%2B2wmAh3OQMx77r1nMe3OfxZvm3xBhMC0tLcb%2B%2Fv6MwsLC31C7cpDiJLdV9%2BLFixsAGNra2mL6%2BvqSly9f%2FikBhBVAH3mWPRlVXFwc9%2Byzz3bKxJkyd4IkSSIFFjUArra2Nqm0tLQoJibmXEFBQXFERMTghQsXRtfX1y%2Fu6uoat3HjxjKbzZYhCEIExZtYABqXyzXSbrenAgixWq1jDh48ODI%2BPv7o%2BPHj9yi00LDnHHfsLcP60NU0AoBKkny85PMFXvrsrdTmXW%2FlZxlc2oRglSd01ppj%2FNJt57w%2BH75akfiMqMu9yvW1xmLQ8r35%2BNMzD6G%2BLCfMJ%2FBuZ4CDsstobm5OYFnWnZub26Egej6K1NGBLO7KlSsxHMcJWVlZXZR35FCAg1e4w%2FJ7D7H7Eg0OURSZ3bt3%2F8JkMp167bXXPpWJ76RJkzpyc3Ovvvvuu69XVlZOBACO4%2BiUAQCoOY7jWZZlCegxevTo40VFRX8C0PWPxk6GCzjk2IKAxJyz%2BPbAPBzaYdKEGG%2FdNJ%2BJDEudZA9OzmwPmfpIG5%2B%2FzowvXpuA10et4tdW7dHGploua9MG0vlvRGTk2WC9ocPFA2kQBR4AOMGuozSTJIoiyzCM%2BP26fi%2F87du3z7NarZEMwzAsy3JqtVqj0WgC1Gp1gEqlCtDpdD6GYXwsyzL3iT3cKxIqXxwAtr6%2BPt5ut8esWrVqGwHGIFmHgIyMjE6TyXSmoaFhPACwLMtT7i0LQMNxHM8wjKyZkJWVdYEioy6ynsMeHCwVr7BjxR8roAvpx%2BcvF07RdIYO%2FnVTTnTOXOuj75%2FaH%2F7EW5cQZBTx5O8b4HFq0N8eFJY6qaf73IkkMCxQ91EizlfFwtYdKnfuSp19ilLzYnJycocoirrm5mYjYfwBLpdrpMvlSnU6nSlOpzPF4XCYbDZbQk9PT1p9ff2CiIgIh9fr1VJtdFSeR0dIpRzXCCLfqanYhBJAbHd3d7hGo7kVGxt76%2FbGoJKFRqOx69atW6FEcyiDhDqO41QEHCwAqNXqIQocbipSO6yDYTxZHAcAG4Kju%2FHGhY344%2FJ%2F1ZmPTU0avBEl%2FWpELDPz389gzi9bwPES9r0xFiwvImthX6wUJF0%2Fsisbr2w7is%2BLZsH%2BnUHuuMWh8iQ99d4hatHYcePGdQUHB7fu27dvRlpa2ucAxA0bNuyXXU8ihEAAhp07dy6w2%2B1ReXl55gMHDli%2B%2FPLLmWlpaddJAEsi4PDJYX5RFPn6%2BvqwpKSkzpiYmH7SJ6PQND4ACAkJuSUIgs5ut6sDAwNld17WLIzdbg%2FSaDRDLMv6vF5vAJmT7N7qJEkKIuDgSRjdR8YTFDERPAiaY4gQPQuCY9pRdPRDbLq4YcA0p85t6zOg4j%2Fm49cjVuDzoiycKH4IQUY7vt1vNPIubnxach%2F2vv4zGhj9YoD7Zubyo1x4vI0wd6fME2bPnl126dKlR%2Fbu3ZtNFj2YCDyEPOtrampSvv7669lz5szZx3Gcffbs2dVNTU0zKysrJxHvKUoR9YzasmXL2tLS0hKn0xlMhdcZkliTBeUFIEyePLmF53nX7t27pxCQBZGxAx0Oh85sNk80mUzNer2%2Bv7W1NYHMM5REa0MsFstowjk4Ag7RD9eQhnsIXeYcTmqHfR%2F4iRnjDvnl3%2F58%2FsOiHt%2BpP8%2FKFFwa9tD2mQAAp02P9%2BcvBYCRfkx%2Fv6h2T3h6099h7%2FciMNxFwCcBQH5%2B%2Fpne3t6SysrKZ5ubm2see%2ByxI%2Bnp6X0A0NnZadizZ8%2F0xsbGednZ2ZX5%2BfknAYgLFy480d7ebqioqHjBbDYnFxQUfGUymfoBSGfOnImtqKhY1NvbO76goGBDcnKyg%2BIbIgCRcmWdALx6vZ6ZNm1aWU1NzdMMw4hPPPFEnU6nE8xmc3hJSckKhmHEZcuW1bjdbpw%2BfXpuWlpa28MPP9w6NDTEl5SUzLVarUlGo7FNzuOQ%2FkVKuzwwiTc6gynb9GAq%2FxHVWlU88fIn%2F7lwaoSgMngHAv32xKm8Xaq474asluCECTMaVH3mcCTmHsGaXWXE9fSQ%2FkMBhB4%2FfnxsdXX1UovFksXzvIthGFEQBENwcHDrjBkzygsKCk7LwpTD53v37p147NixQqvVmqJSqQYlSWJFUdQZjcazhYWFH%2BXk5JgB9BMt6CZmKqyqqmpyeXn5Bx9%2F%2FHEBlenVlJWVTa2trX3K7XaHqVQqhyAIQdHR0Y1r1qwpNZlMNrfbrX777beXt7a2zuJ53i6KoiYkJKQ9Kiqqra%2BvL37r1q3vPf30039YtmzZS3Pnzq0FYCGxGzcA33DXHHRyiKWipYEAIm4nutyOGC%2BYoBvFL05N%2BrZ0qoUNHdRqtG6OESFIvKdP4MTrNi%2BrMU26NNkUfZO%2FejwNLGfDUx%2B8h5RpZkpYHCF1MoHUWa1W%2FYULF2IFQeBTUlIsCQkJVsoMDZEdyRP1HwhA29nZabh8%2BXI0y7K%2BjIyMrsjISBupayPFTkCgIeOEEGDKsRRJzg6LoqhtbGyMs1qtgSkpKT2JiYlWilByAFSdnZ2GpqammLCwMEd2draFZVmaw7jImP1UcE54EMyK8iSY7J7pAYRD9Mah69tUHP%2FwETy18yKGBrQoinxF2GrZ1NtwKMjrsnsCwmJtoaMn9WsM4e7bUcShAREttTwyF7SSBRukhKL1k7JnFSl1OgVPp%2BzlNjxpI7uqAqk%2FhDunz2SyqiPt1FSUU6L6VKb0vRQ4WCrFwCpC7LQZdhJAOqg5PxjgoADCULs0FDe%2BScJf1q%2FB1ZMFSJh4FppAJ9x2FX51skSxGN57JKwclO8v4e6TZjwlGIbiCbL7qxSSSkk2cfcBIQ91BgSKsVhFck1Or6sU4KRPldEn5FiKy9BCF6lx5TlLD8J5Dv42Sr7PaNOpZwHx4%2FuQMLEeEUmdMI4axLwNTZTA7WSXCpQQ7yKClMA8ioSWl3JfWT%2FBK3%2FH%2FgRKSMr4hU8hWCiA4KXA9GNHD3%2Fg8lIbiFGMKfmZr%2B9BcWH9RhWJ9mApdRxEipYIRs5UOnH3ySufQtX6S4Hf64CxUjjSPaKgyvYS7n0oGfdJgNH9%2BevH33jwA5QH5gTYDzSH4seKVDLMTal%2B%2BjCLQGkI6Ud21A8WTb7fCT34F%2BiP%2FDXhXgC411lPv3UIUO8nzH9I2A%2FiAeX%2FBUPhQRLDQ08NAAAAAElFTkSuQmCC" style="margin: 6px 0 0 6px;"><img id="gcTourPin" style="float:right;margin: 6px 2px 0 0;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAGYktHRAD%2FAP8A%2F6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfbBQcMJyOQosv2AAAD4UlEQVRYw8WXzU9cVRiHn3PuvXOH%2BWLK8FmhkDZltEAqdeHCnbGbmqgJqfEvcOMsTFyw6ca4mhgTE9HEhf9BiV8JqyZGo4AYDCpCIY0x6IAQmDIznZl758651wUXuWmwDJQpJ3lzc3PevOc5v%2Fc9X3DGTRzHeXAsG9E0%2BZ6uaa8p1015HniAEGLHVeq253nvrk6OV5oCMDiW7WwJh%2B4%2B%2B8xA4vLFPq2ORqFSp1Cpky9W%2BGd9QxV2NsuqXr%2B8Ojm%2B1WhcvVFHTZPLAz1t525ef45CVVGoOBiGg6bXkbqBGYlp24ab2NjY%2FBp4vtG4smFSTeb%2B%2BHubuYUVUlHJhY4Il7pjpJ%2BKMdIboVVts76xiRBi%2FjgpaFgBIdixanW%2B%2Bn6JL7%2F7HV3XEAKkAM%2F1qNoOSrkgZakpAHhsADiuIHVpiO4L%2FVzrj%2FFCH6hiiTezn6NJiXLd6nEAGk6Bo9wNKQ9qNhRuIRqL0tYaPQgmhQ0UmgKglLula7J%2BRJoU0BwFgLw%2Fw0esaeE2E6AoEMYRCoQA1RQAwzDeDptGKB4xD%2B1vT0aJtZghAR8OjmWTp7oKht744JNUZ%2BdQSNdIhBQXB2K0dxn0JjQcq8J2sUo8YrK5XcSQJBXiG2D0VLbiwbHs1Ugs9u2LN260SilZWfyNrfUcxUIJ8AjpGoYmcewauq9nte4VFXy0cnv81mMrEDaNt4bTA1Ep96Knh0cYuTZKe3sc6SpWfl3k55mf8ALJjIS0RM0TrwC3HrsGLNt5Z35hyes2ykTNPfdarU7%2Bfhl0jfTVYa6Mjvzn33EuxoXzKQdYbOiMOcphZ%2FlOre3plz69e2%2FtZVW%2BH073Js3z7XHCGkR0SUfCZHCgi85kC8loiJ2SXfhrq7hg1eo3d5bvOKd6H7jy%2BvvZSEvo1dIDKx2PHqyGUtnGNI2SFOLHilX7eHVy%2FIumXEj228TExG5rqqe15jjYtoVrP1jLZDL9J4klOVmbT0R0OpIRYnt1MXPSK9lJAeYcx8E0TTzPOxOAedu2MU0Tx3HOBGChWq1iGAaWZVWBhScKkMlk7lmWlbdtG2Auk8nUnrQCAPPlchlg7qSr6aitWPgblQyY2DfLshZLpdL13d3dX4A4e0%2BEh831j2fXt4YB9gcPAWH%2FawSBcrncn%2FF4nKmpqTWgJzCQB9R9s32rBaCOBWACUd%2FCPoQOyJmZmc2%2Bvr7c9PS0DnQFABTgABaw%2F0pSvnmN1oAX%2BD4sqQt4s7Oz6%2Fl8%2FofArIP9buCfwwZupAaUL5%2FwZxRMgQDk0tLSZ8B6YLBg3oMpUP8HIY4oQnlIERIoxsMU4xA13EepcKbtX%2BRcieZqbkRNAAAAAElFTkSuQmCC"></div><div style="height: 20px; -moz-user-select: none;" id="gctour_toolbar"><img alt="New Tour" title="New Tour" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABmJLR0QA%2FADpAE8017ENAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QISDiYc07YZKQAAAWpJREFUOMutkE9LW1EQxX9z741WJH0lgtDKWxbc1O5cZqkb8w2ycVm%2FRd6y3XcjBMSC38BNN90qhVJKslJKSVqEEP9FYpved8eFJsYYk1R6NjMMc%2BacM1Iul7drtVqREZid%2FcvcXJtn0W%2Fyy5%2Ff5aJvH%2BHPvmTDGaVSScfh%2FHhTL0%2FfaOe8oJcnK52LxuKutrLr2jIzrqvSbDYJIQAgIj31jNlj2n4h474iZgnrTCbY9mrHt1tTzld7BwbJ3WrkCGvqiHmFuAJgMSpG01%2BL4F66%2FqyD5OtebzoLTIE4EAuCABduNFkIOk%2FQ59hQRdNpQNC0ot6besamFffQ57uHAq%2Fx4SfgsVoBFO9f6OlZ69PM%2FPeDkRFEBOUpHV1DdYE0%2FQE8YWvn0GxsbL8FcKPItzWL1zwiQhRFNBpJT9QwIfp%2F0497EYY5eIh8x8GwpcHZsB0zqd2xEXK5HI%2BBi%2BP4Q5IkxX8hxXH8nv%2BFK8w9mWB7rBTJAAAAAElFTkSuQmCC" class="tourImage"><img alt="Load a tour" title="Load a tour" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH1QsVETINEBVQCwAAAaZJREFUOMulkb9PU1EUxz8vfajv0QYLDE1MNxlgc0ITIwODfwAIRgYkDBIQHNwMBAYXBxY2E34OBNQwA9FBRwYTEgxshGhMhCZtbeC95%2B279zi0aa15TTF%2BcpN7T8493%2FO951oPBvtmU6nUHH%2BhlCrtv9TYyvLaa%2BpgTT6bkJHh0chkEPgsrSxSKBQevXuztREpMP50TAb6Bzk8OgTAboqRSMRpRC6ffTn%2BZGrG1lrjOC7XW5IlxZjh4cBQQ4HNt%2BvTwIytlML3PfI%2FcwAkW1sA8LyLusWu21w522EY1jgAU0kelZ%2F1J52dXTWxDUQ6iLocxaUdxOMJ0ul0tIDve7z%2Fcs5BxgVg%2FsN6nX6fa6LeiSWxARzH5SDjsvD8PoHSXIZrV2JMze9WZwDwIxdwfHbRsFhrQ7rdrQ7RcUqBACKCZVmICCJgRNBGCLVQ1AYVGkIttCWu1v7CzaRP9lzxPeuDWBiE8kIEBEGkLAwERVMVOM2ccevOXfZP8uWiUncRMAiCBSIVV90drexu75AMvq1a9x6%2F%2Bug13ejhH2kuft37tPriNv%2FLbzdmyosZb3GLAAAAAElFTkSuQmCC" class="tourImage"><img alt="Download Tour" title="Download Tour" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9oIGQorAW7wjhQAAAMSSURBVDjLnZNNaFxlFIaf797v3tvMTOd%2FJjOZ%2FHSGhAyZmh%2FIlEhjSS00gihxoUatQqXqxoWFRkHBlVTcCi5ciBFLXQiiq0oRQw0qpoS0IaFiiyGJSabJOBPNZO783s%2BFaDBLHzibw%2Fs%2BiwNHcIjJ16dfAV7WpexTYCnH2VeKOU3Xrly9fO7jw3nxb%2FGNTwZNXfu6JxlrHenvIpkI4bIsiiWbe%2Bs7zC%2Bvc3dt%2B6YQ4sLVy%2BcW%2FyN46uJHWbe35aeJ0wNioCdKsWSzs7mG9EShJQDlHRKtIeaWN7g2u%2Fw7Qjz8j0QChEKeb86ezIgHUkEK%2BRzhzgy%2BcJxypU5u%2FVekU0Nr2pzJpmg6KnT9hzsfAg8CaC%2B%2B9ek7sWjAezrbjaE5NKQHNIEhJaYhcVmS1tBR4tEIEb%2BbbKadrrbgyLNvXjkPoHl9rgvDmU52i3nuV11E246hFDgKEBrCqbFV2OfLG0tcn53HZyn6utsAngSQe%2BV6pCsWYO7uNqmeKI46uGxpt8CJwQxCCJRSbGzdp2LbxCM%2BgGEAWak1NMsy0TxRdksVmo7CY%2Bk0m01qpR2ECANwa3wczeNh5aVXiXT0AgQBpK5rzh%2F7Fc1d2cQjLbb3w%2BQNk0bToVJoMFivc2t0FO%2FwMPbKCscSEbbtGkABQBqallv5Ld821B0j1RFndX2D2Xt%2FUsPErrn5dmSE9nSaowMDqGoV%2B%2BJrRAyDKdOMTE1MKH3ooSeSpWr9RKY7Qdjvxu%2Fz0hHQmVncou3tp0l1dhI4dYrq5ibuvj48x4%2F%2FPZkMpcVF9IXvvrjWnX3sktB10%2Bc2aDF1fpxfojb1Av3xOIGxMSqrqzTLZRrFIvVCgUaxiBEMsnf7NjpAsm%2FsztauPekgkVLj8%2B%2FX%2BaX%2FcZwbn9Fq27jTaZxKhSPt7UifDyMYBKXYW1g4%2BIVHz7%2F3TGeqY9rr85vpVIxY2ItlGSxNnuVkMol%2FdJTizAxr%2BTxHNA0JeKQ8EAD4g0lz%2FPlL07rlegRd%2BkEIpZzGma%2FelUOJBD%2Fncjy3tCT4P7zf26s%2BSKfV4f1fpUgaHTdq5X0AAAAASUVORK5CYII%3D" class="tourImage"><img alt="autoTour" title="autoTour" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAFMAIwADJfKnZwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9kKEg8hB1Dip48AAAJvSURBVDjLjdNLSFVBHMfx73%2FOued4r14wpSLQNj0JokUtFIKCgqIXPQgikqSijUrqoqA21lIkywoiCAqyRUZRFBGFoIEkFdHGoPcLF75S79Nz7sy0UK6kIf03s5j%2FfGZ%2BzIwwR7UecLYrl91a0yOiuxpu82Vmj8wFXDzopPedeRrtf98V9r24lRsf%2BpkRpbpzob43tlK3NzVhBODK0ZILYSZRa612ZiI1NzMEqRGUDciO%2FmDwUw8f3z7na9%2BLz3U3s0tdgCAzXlfV%2Bk3F4vPwPD%2B%2F%2BFKVB0B65DvhyAeYGKE4HqNy23E%2BvutcAuACYI1y%2FRjZbIZsNjOdTzlYnaMgXoprFhEMjRIM90GYAGuZBgCbHsCEKbBmatKwbN0ueu%2BcpGxFJb5fgHKL8OML0clf%2BU3yAAMvMalB%2FPmriC1aizgRNh1upvPaETrfPCOdGsOGKUoXLGbL9j0UFcWBsWlATyTo%2F9DL4KtuhpPwO4gxmnWpPtTAhtIyQAhTAwTj%2FSCQTCZmRLCa4iKX4rjHcnEQ16Oh%2FjqvO9r%2FupXmlmpiC1fPjqBzOYJsCqNDrMlhTI6zp9ajdci5ll5On1iD0SFDX3ooceOzAQuIAjGKx9eeA7D12EYcNfnWnIiP47oYrXFcfzagRCGiUI6ws2YHVmseXX3CtuObAYh4UazRWNf8G0AEpSIYDA%2Fb7k03RKKTo1%2BItQZrNK4XnQ2ICCKKB2132duwHwvcb%2B3A8QsmT%2BAXIlNRI35sBiBickFaxcorOHS%2BgluNjfmGwrJKoIPC8sopQNBhGkRM%2FjdeqY5eCIOg1lrr8B8lIjrieZdrbmTq%2FwA8AAC7ufHXbAAAAABJRU5ErkJggg%3D%3D" class="tourImage"><img alt="Show settings" title="Show settings" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QkaDBM5i2PCSAAAAfBJREFUOMulkktoE2EUhb%2BZ%2BEyKTRQKgkqwzMaFtt1FrC40FGJm60JwIVSkqLUtElICFQNDQqBrQXRlQIriwomN0GJXgtI2iUkXFYJVadOXhiBERDozbmaGMR3rwrP7ueece%2B%2B5P%2FwnBOcjnVGigArI8Vgi9xdNNJ1RbI7YUlT7r%2FYDqKaZq%2Fj6tQHNbLQd6YxiNBp1I51RDPdaw6pFAcR0RolaZKur19vmZhwFePDwPvFYQgZyACKgDt4cMp4%2BmzAA9fatETbX15A6Jer1r%2Fdas4ndGRUsMYBgFW8MDBqatiXoum7oukZhfk4ovC8CyDsFK7R0sBHpu0i5UmG59gUgGY8l7v7zjE68yr80SpUS3Sd7KJYLmBNMArqrQTCSOgzUrPeVkE7XCYmjR47RbDZ5N%2FcWtzU8TvH4cJi%2BUCcdAS%2FZmU2Ot39LLn1eOtd9qoeAP8BKbfnyhfD5%2Bemp11XAABCDkVQXUHs0JjNbXmS2vEjHQR8A5t5yLv8CSZI4e7rX%2BmR2HiJQHB8OM%2FWmxJamI%2B7zs1Fv2iOaI8vZJ4850O7nTKgXYMxpAMDuXR72%2BA7x88cvsvkFgHCrSS6vUv1Y%2FSNsEWBl4zv7fQHa9np4PvMBIPxpcnTaSTRNkmvrqwtA0r5CMJK6BEw4uNvEO%2BE3N%2BLV9uq8VLwAAAAASUVORK5CYII%3D" class="tourImage"><img alt="Send a message to the author." title="Send a message to the author." src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKLSURBVDiNfZPNbxNXFMV%2Fd2bMjDtYiZMYJRhivgoxiRtACV8SXXRLhdQdUrsICzb9D5DYVwWxqopYtkLdFLGBVt1WbVWh7mhiywgFMFEkKLKdEI8%2F5uPdLpwEVTE90tu8d9%2B595zznqgqg9BqncqJRCcskmlgHEbVUK84sf2nO7S4vFUngwiC4KMSxlwU0QNgJrq16iUAt1D8TdA1FetH3y%2F%2FAODs7Dw7I8bkxTJvgdlurXo2e7yDiEejLB97halVUd0TbMyk%2FMzSd%2F%2BZoNmcG3JTncvdWuXO1t7Q1F9q2%2FMCoLqmzUpWts52FYolVHV7tVrTJ%2BpLaBz%2B%2FMyY0Oj%2FIImfhPUl7smNWzc%2BtYW7URwNFyZXye99zfTIfbLHI0R2KNxGoyxE2flHjkmi7xeuXB3OjeUIw19Q85hg%2BT5h7zq73K8QkR2Xk6TSN7vjzVnGmBHPdXn40wNsywdsvAOfEyx%2FjZrmwO7r1WncQokg8BzLsiw%2B8H0OHTrMr78vYVkZRDL9jK3MeyUIWV79k8MCEBH25fPkxk7yePEltjXeL5IUqh0aZaFRFkzy5h2BTPCilt98Bwq2Y7M3f4SVlZNUqn9QnLpGo9zX7xVKQMRadQ8A7uSXWM4nNBpP%2BgSqSpzE9LodOt1xDk5%2Bxt%2BL99jtf4HrbuDUOwwP%2BcRjR0mlRuhF53DTl4CbmwQo7aBFc73J%2BTMXaLcDPG8%2FIk%2Bx5DnQwLY9RvwPefrMJZ0%2BQmbTnj6BUZLEMFOc5e3GOiZJQLIop0l0vh9dDL0IisdGeV5bRtX0CZyUU0%2BSeHT%2FvgJRFJL20ttG7fxmShj2OFg4TLvTxkk5dccYWfj29jd34yQefm9mA%2BDYzppBFv4FO4Au%2FTAT%2FmYAAAAASUVORK5CYII%3D" class="tourImage"></div><div id="gctour_tourHeader"><img id="inconsistentTour" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIwSURBVDiNjdO9T5NRHMXx7%2B%2Fe573tU%2FoUCpTy1kjlTTExIRol0ZiY4OTE0iZuuhgHIxvRuGhcUAeMcXNwcwH%2FARcHjUpYTExUEsWQ6CAEWiiFXhc1QYvhLHc593OXc8UYQ6MsXJACyn4mZqdcM%2FXzRx%2Bbz416quFtQDnBk47j431to%2BdGHMt5uGev4eslORvrOTIUtmQk2ZpRXnbw1EJRRvcHiIhOJGda%2BoZ98SOUl6Tl4CFPfP%2FBvoC3RSYSPSNZ11WojiFUtp%2FAtyWWGxiYL8n4f4Hnp8Vy48l7UbY9EMtBpbKo5jxYFs1dXYH2%2FRluitoTaOrgYjzXFzpSRbUXmJyeZXJ6Ft3ej6drxNvymfmPFBsCby5JoILErSgdBOIGqGQLzaFNpslBRR2I45LOhDFl%2B9Mfroj7D6A2uNaUydh2vYLuHMRsb5BN2WQjG7Ozie4cxmWDMJ32yytc3gW8m5DIcrzJVIJAEhESC2G7QnezTb7Vhe0KEqYRSxM5qzED11%2BWJPwD1DxuJELXsswGunsQamWorjHWH3CsV8P6EpS%2FojsL2PU1wgDLF6YAZKFIzmje53Nu4OQK2IfP%2FB4E%2BuRdAHZeXAVjwNTZej3H1vIin5ap7BgOWGjuNMWxtami23upb64iokAUS09LgGCq64DBmDq6awDr2yKpOPrHGrctYCzuYQNsvZrbNZLUr7P693qAwMNdKXPCMoZHX74zZQxug97eETaV4b7s9Z33m5%2BP5JF%2FA6jokgAAAABJRU5ErkJggg%3D%3D" style="float:right;padding:3px;display:none"><u id="tourName">Tour 2</u>&nbsp;<span style="font-size: 66%; background-color: rgb(255, 247, 193);" id="cachecount">(0)</span><span id="webcode" style="display:none;"><br>Webcode: <b><a href="http://gctourdev.madd.in/tour/" title="View on map" target="_blank">undefined</a></b>&nbsp;</span><br><img style="opacity: 0.5;" alt="Rename" title="Rename" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk%2FcWPt%2F3ZQ9WQtjwsZdsgQAiI6wIyBBZohCSAGGEEBJAxYWIClYUFRGcSFXEgtUKSJ2I4qAouGdBiohai1VcOO4f3Ke1fXrv7e371%2Fu855zn%2FM55zw%2BAERImkeaiagA5UoU8Otgfj09IxMm9gAIVSOAEIBDmy8JnBcUAAPADeXh%2BdLA%2F%2FAGvbwACAHDVLiQSx%2BH%2Fg7pQJlcAIJEA4CIS5wsBkFIAyC5UyBQAyBgAsFOzZAoAlAAAbHl8QiIAqg0A7PRJPgUA2KmT3BcA2KIcqQgAjQEAmShHJAJAuwBgVYFSLALAwgCgrEAiLgTArgGAWbYyRwKAvQUAdo5YkA9AYACAmUIszAAgOAIAQx4TzQMgTAOgMNK%2F4KlfcIW4SAEAwMuVzZdL0jMUuJXQGnfy8ODiIeLCbLFCYRcpEGYJ5CKcl5sjE0jnA0zODAAAGvnRwf44P5Dn5uTh5mbnbO%2F0xaL%2Ba%2FBvIj4h8d%2F%2BvIwCBAAQTs%2Fv2l%2Fl5dYDcMcBsHW%2Fa6lbANpWAGjf%2BV0z2wmgWgrQevmLeTj8QB6eoVDIPB0cCgsL7SViob0w44s%2B%2FzPhb%2BCLfvb8QB7%2B23rwAHGaQJmtwKOD%2FXFhbnauUo7nywRCMW735yP%2Bx4V%2F%2FY4p0eI0sVwsFYrxWIm4UCJNx3m5UpFEIcmV4hLpfzLxH5b9CZN3DQCshk%2FATrYHtctswH7uAQKLDljSdgBAfvMtjBoLkQAQZzQyefcAAJO%2F%2BY9AKwEAzZek4wAAvOgYXKiUF0zGCAAARKCBKrBBBwzBFKzADpzBHbzAFwJhBkRADCTAPBBCBuSAHAqhGJZBGVTAOtgEtbADGqARmuEQtMExOA3n4BJcgetwFwZgGJ7CGLyGCQRByAgTYSE6iBFijtgizggXmY4EImFINJKApCDpiBRRIsXIcqQCqUJqkV1II%2FItchQ5jVxA%2BpDbyCAyivyKvEcxlIGyUQPUAnVAuagfGorGoHPRdDQPXYCWomvRGrQePYC2oqfRS%2Bh1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h7wgkAouAE%2BwIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE%2B0JXoS%2BcR4YjqxkFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5APkE%2BS%2B8nD5LcUOsWI4kwJoiRSpJQSSjVlP%2BUEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1miXNmxZDy6Qto9XQmmlnafdoL%2Bl0ugndgx5Fl9CX0mvoB%2Bnn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3GS%2BZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U%2F1XmqC1SrVQ%2BrXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O%2BX%2F2C%2BmMNsoaFRqCGSKNUY7fGGY0hFsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF%2Bxt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0%2FLbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY%2Bt56Qn1yvUO6d3RR%2FVt9KP1F%2Brv1u%2FRHzcwNAg2kBlsMThj8MyQY%2BhrmGm40fCE4agRy2i6kcRoo9FJoye4Ju6HZ%2BM1eBc%2BZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWca55hvtm82%2FyNhaVFnMVKizaLx5balnzLBZZNlvesmFY%2BVnlW9VbXrEnWXOss623WV2xQG1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10%2FWjm7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvgvct7YDo%2BPWX6zukDPsY%2BAp96n4e%2Bpr4i3z2%2BI37Wfpl%2BB%2Fye%2Bzv6y%2F2P%2BL%2FhefIW8U4FYAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG%2FljM9xnLJrRFcoInRVaG%2FowzCZMHtYRjobPCN8Qfm%2Bm%2BUzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7Z72O8Y%2BpjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h%2FhF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zkmlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I%2F5YMgQlAvGE%2Flp25NHRPyhJuFT0W%2Boo2iUbG3uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvXMLcot09mKyuTDeR55m3KG5OHyvfkI%2Flz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b%2B6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzyjlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV%2BscKyorviwRrjm4ldOX9V89Xlt2treSrfK7etI66Trbqz3Wb%2BvSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas2%2FKhNqP2ep1%2FXctW%2Fa2rt77ZJtrWv913e%2FMOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur%2Fmft24R3dPxZ6Pe6V7B%2FZF7%2BtqdG9s3K%2B%2Fv7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8e%2BNQ6KHOw9zDzd%2BZf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe%2Bt%2F9%2B7zHjY3XHNY9XnqCdKD3x%2BeSCk%2BOnZKeenU4%2FPdSZ3Hn3TPyZa11RXb1nQ8%2BePxd07ky3X%2FfJ897nj13wvHD0Ivdi2yW3S609rj1HfnD94UivW2%2FrZffL7Vc8rnT0Tes70e%2FTf%2FpqwNVz1%2FjXLl2feb3vxuwbt24m3Ry4Jbr1%2BHb27Rd3Cu5M3F16j3iv%2FL7a%2FeoH%2Bg%2Fqf7T%2BsWXAbeD4YMBgz8NZD%2B8OCYee%2FpT%2F04fh0kfMR9UjRiONj50fHxsNGr3yZM6T4aeypxPPyn5W%2F3nrc6vn3%2F3i%2B0vPWPzY8Av5i8%2B%2Frnmp83Lvq6mvOscjxx%2B8znk98ab8rc7bfe%2B477rfx70fmSj8QP5Q89H6Y8en0E%2F3Pud8%2Fvwv94Tz%2B4A5JREAAAAGYktHRADVAJ8AvxXHGoYAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfZBwcIASdkENZ8AAABgUlEQVQ4y5VTvUtCURT%2FmUmSWCqaSUtbEA1R4GRfFARBNfV%2FRNYUjY1JTY0N4VAiDdEgSNIQTUVDtgZBiPmBVkrq8%2FwaHj6VZ6%2B8cOGcc%2Fl9nHPvBbpckeAWW%2FOebsHjE6ttJKZGcH4WphHYVn3EqLKi5c9Pl9g4CJk0MEmKkPV6nYqisFarslqpsFL55tXpDpXXMJMnCSZPEmx10NvUINLplE75IX6I5blJpLNFjC0CF0f3CGwHgYNQO4EI4fEMgUKQ6o5H9jSw1z2I2M0j6J9GxyEKBZnMO7K5DHL5bEdwYH1X57B5C0K4XG44nS7V9oK%2FHby2C4p%2Bzs0WSOTzWe0g%2FZ6B1zuM2PUdppY2US6XYO2zGhCIwOFwQkhEo7dqMfmiKpMgBWLkABQUigUAwP5xRCuXyyUttlgsvxOQhN0%2BoN0AKZBGLKLVDVogPr8%2BDJ%2By2Ww2ciCw9dtUVaiqQgKi5oqigCI6gn%2F%2FhcaamZ2Hzzdi0hEAQCr19idJKxgAfgDG6PPJecMc5gAAAABJRU5ErkJggg%3D%3D" class="tourImage"><img style="opacity: 0.5;" alt="Printview" title="Printview" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9oIGQopDsx58QcAAAHySURBVDjLpZNNaxNRFIafuWYRQRCLoCnTQIsfFAwxGFGQLBVRXPqJQfFHCEqd2iIupK6q7lwIfiVZ6EKrVkRGjQUDlRJQIVqoRd0Ixk7aTGbm3uuqTYbUVPDC4XIOnOe897xc%2BM9jtCb5Qm4IsP6hb%2FjI4aODbdV8IacbjUbHcF1X5ws5vdgTWQ5fKpX%2BOjqdTofyZQGJRKL5RsMI3VrrzgClFOVyGQAhRBsolUqtrMA0TYQQGIbRFisq0Fpj2%2FbSRCEEmUyGkddZ6t4co8cn2m28YA0MAVY0GmXL5q0opULyAZ7PX6W7q5cP3yZJ%2Fsriui7A8KICa9C6iJQS3%2FcBOP9wP1oFeCrAkwHd6zbRH9uF487zsj7K7TNTXL9xzYq0LqlSqRCLxbBtm0B57N12CqkVUkkUmu%2FVWRI9e6h5dQ7ejHOAs80dOI6DW69TrVZJJpM8sj2kVsz8rOCrgED5%2BNJnruGwvSdDzV%2Fg7vSlJkAIwZzjMD7%2BjFqthtvrEsiADWvjBFIiteLH7690rdnI5GyR4uci2VUDYReklOxI7wTg45cct96O4CkPN%2FDpW9%2FP7r59lGbe8OLTK3KHJhh78rgJ8DwP0zSX7LscHwu5cOJBGkOs5t30FE9PvkcpFbLxHnCs0%2Fe7o67gK8npyLnW8v0%2F5Gb7fMJoZowAAAAASUVORK5CYII%3D" class="tourImage"><img style="opacity: 0.5;" alt="Send to GPS" title="Send to GPS" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9oIGQooOW3fZUkAAAFtSURBVDjLrZPLK0RhGMZ%2Fx62UEimSo0wihSxphhXKwsLGdsrextKt2fAnsJGVlX%2FAwqXIIRPCSpHLjEjJdcJ857vYOBhzjhRPfX3f4n1%2Bve%2FT%2B1l8ynx5W%2FxSOfxRQQDzHx38CmJ9L3aTXQDk24tBtf4Az%2Bind5gvIM%2BnMEM%2FgbMAALHxGJG2MACdPZ%2FmwbkO8yIemRnYs34M0TN%2FV1oKqsoa6J%2BuN4EZ5NuLxMZjANzWLWG0RGiJUJLKklqa7Qjx0xX2L7ZYGrq2fEeItIVZ33SQWtDVGEUZjdIKjeHyPkmTHSYlXribWDU7I8LKAnhzD8y2oIzm%2FOYIV0ukdnGVy2P6iRa7nZT7zP2YY%2FKCEo8uJJFKUl5cjVQKZTRXDwlKiyrYTTo4xw5nE1hZGXh331QNr0IgtOBVuoTKGmgNdbOd2GD5cI3EZDozA8%2Fsab63NmM3nicPsHIKiZ%2Fsf5j9dj%2FoEBotMPZwbtb%2FeAM%2Bw7BUpUnjdQAAAABJRU5ErkJggg%3D%3D" class="tourImage"><img style="opacity: 0.5;" alt="Download GPX" title="Download GPX" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9oIGQotDqgVNAMAAAG4SURBVDjLlZPPaxNBFMc%2Fs41CD1oMlVp1FUIPBhR6UxCPestucvIiqPtn%2BAOyET2I5yoUAmL%2FgMwS9OTBH%2FGgqHgT%2FAF1QTwYLG01yezsjKeN3TS25J3mveH74715I5rN5qM4ji8xQbiuSxAEAoAwDO2kEYahzcgK2aHb7WKMAUAIMVRzHCenXiwWc%2FmQwBhDu90eXnieRxRFw9z3%2FbHtOKOFSqWC53m7ArcRZLaFEDllKeWOBIXRQgbOCHdzkCPIrI8D15%2FU6Kl1lq%2B%2B%2F38LURQhhEBKmXsJgIFWHJ0tc%2FHBiZ0dSCnxfZ%2F6Yw9rNMpoVKo5fGCB8vxpNvq%2FedFbGk%2BwdZDaKM6fvExqDalJMVi%2Br8Wccs%2ByqXr8uv3Mvr2uRGErWEpJtVql1WrRR5Faw%2BrPTyRGo01CkiasDzZYdM%2Bxmfxh7WbH5vYgG1qtVqOv%2B%2BhUMzdzjEP7jzM%2FU2LP1DQH9x3hXdyh87nDl1v8czC6oj094OGreyij6OuE0myZM6ULvFl9ydOPz%2Fl2BwFQcF13pdFobPuNi1zJ5a0fdxHONK%2B%2FfqC%2BcH8pIGCiKN3Ya91rU3a0%2FheAk99ghKc72QAAAABJRU5ErkJggg%3D%3D" class="tourImage"><img style="opacity: 0.5;" alt="View on map" title="View on map" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9sBEQ0rMteXYLwAAAKiSURBVDjLlZPLaxRBEIe%2F3Z11N%2FvMxpFoXgfRQDBCRGIEEQQfIOJBEERRFG8eQvCg%2FgMiHjzpQcQHBvTiTRAVMSpqVAxEgxoMxmiMT5KY7EzPTM9Mz4yHmCwqItalmh%2FFr7%2FqroqtWrsqam5dipZI8L8xOPAarbl1KedOnftnsaOcP7TOg51oszfHgsuIW88o9diMH2kim88xNPSIQXGWrxMG2Vyeb5MGCS2JYUn2bYlIaSnis25GeZJyq4YhBPaNQYT4gmkKYm4%2Fjm1gCRPPETiOQElrjkKbPRSK84kin0yXDsf6SW3Xqa2rI%2BO%2FxVHN5Et50sk4WnIewpYkEhKgQlCe%2Fo6wppnSFUZJ4VwZhiAksh%2FguwJpOfiujSOm8Vz7T4Jidf3PXINxQFI6PYlat4iU7tLkTpDMN5LWYiRTSUzLA4wZgkRsxkNKF0vYGOVJzGzAVDPI7pGZIu86115s5fbIFqQQhF7lDeZaqKqqRq%2FWKRQbyOcWkNzTRtWoRtqrpV7%2FhKs8GvQWrg5vpq3%2BPMl4%2FNcWzLKFISQ6U%2FR9%2BsrNV31EGxTe42G8QFFXWkLLog5MaXG4p5uTO3b%2B9gvVCzGUy2Nh895No0KPja17CaKQIAwIifg8PcbyxjUIz2HPxQ7a2F0xeDL2jr6PQxRyGSxbIJVHEIWMTrzBDxUq9PEDH8M1aWtci%2FBt7skLMwaOchgPfLKpLKV0AS%2BjkEqiAkVtsQkVBARRyJfyB2pyC%2Bkf66V3uJf1xv4KQZ4CTsomEWXJxFwc5dL96ARe6CGVz2K9hdWLN9E3%2BpCe1%2Ffp6XrO8aMn0YJIAdBQs5KGmsqidCzZ9svi7DrTTixexdORAe4cGpjTY%2B1r2qNlK1qYnYe%2Fxd3iJfwwYJO5d057%2BewFPwAsnUE8ZPBqbQAAAABJRU5ErkJggg%3D%3D" class="tourImage"><img style="opacity: 0.5;" alt="Upload tour" title="Upload tour" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9oIGQoqEWpcrzEAAAMVSURBVDjLlZPfa1t1AMU%2F33tvE5pmSZvfSZfWXlNnF7sfsrjqnqq4OUUQRFHZkJWhD4ooDIXpg4gWhPkH%2BCBWHJtPUwYyGSpspdN1raOyYqWlW5N2bZqmTdsk9%2Fbm3vv1ycn65ufxcM55OHAE23jl%2FaE3gTdUTdstwStdtyYlo4qqnD03eOzr7X5xL%2FjBN%2Fs8qvJTd1ci3renk672MD6vl7WqwUyhxPhkgen88g0hxMlzg8f%2BvK%2Fg5fe%2ByrUEmq%2B%2F0L9X7O2OsVY1KN3No%2Flj0NwG9RLt8TCjkwtcGp4sI8ST%2F5ZoAOGw%2F%2BfDh7KiVw%2BxurJEpCNLMJKkbjZYKsyiuRaKY%2FBUTsdxZfjytb%2B%2BBB4HUAY%2B%2FPbTRKwt0J%2FL0KS42JofFEGTpuFp0vB5NeLhHSRjUaKtLeSyO%2BlMhfpeO332BIASCPpOHsh2UFlbobjlI5Z6ACnBlYBQEK7F4mqNH67c4vLwOEGvZHcmBfASgLZZb0Q7E22MTi%2Bjd8dw5X%2FLViurPLYvixACKSULi0VMwyAZDQIcANBMy1a8Xg%2BKP0alauK4Er9XxXEcrGoJISIAvHu%2BH8Pa4Nn4GaLpXQAhAEVVFXe9ZtJizuM38iyX1rhT3OB2cZO5so3VaLBZrbFlW%2ByM9PBd%2Fi1qhgWwCqA1KcrS7fmV1P5MAj2dZK6wwPDMBmOLA0jX5tfzNpZjk2rL0JM8yKZZ48zIE8T4YgxAk45z4ebU%2FNtZPQZAZ7qdwI51fl%2BwePqR13Gki%2BM6uEjuVgr0pg9RtQzGjIGjAOrNqxcuZXLPnxKq6gm2NNHsUflt%2FBYTqxfJxPcztzJNuVaiXC1St6psmBs8GO2lbhvU9xQ%2B1gAqyyvHr9xwv3ddeHRXnB8n1jF9JrZjEw92YDsOjnRZXM8T8if4ozDCyMwIdz5D3PvCcyc%2Bf7VDTw8Fgq2eh%2FUEF%2FMvYloWlmth2g30SA99%2BmHG8tf4Zeoq%2BcEtcd%2BZAFpDXZ4jx08NqV7fM6haKwghpWtLuzH7d%2Bidh3pTBxmdnWDqk7Lg%2F6J%2F5JHp06rcrv8D001PzAwk7SYAAAAASUVORK5CYII%3D" class="tourImage"><img style="opacity: 0.5;" alt="Add own waypoint" title="Add own waypoint" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAFQSURBVDiNpZM7SwNBFIXPTB47TYioMAErLSz9BYJFIJ2FheA%2FEO2CTTB1go2ktrMSxFIQjFgIgkU6SxtthAyIGC0yz10LzSaz7AYlt7pzOXzcc7hDoijCLJVPG9aa5b5zIZ%2Bc5XJUdFuDyp8AzoW8tXvszZonBzxNmwoAAGMVnt%2FuAQDLi%2BtZsikAp2CdjfupgNphue%2FCsWcWBNIYxZx1PwCjwIJAVhulOPEcpaLbHlTyAODCkNd36pNgltxgb2ufAQB%2BEZ3zDvcsGKPw%2Bv6YuuaL6Hnvpfk13wIAaCNhrc30OlnayBSAlVgorXhC8fEEAOBzqz7AJgCUEnF6dRaHWCwU5PbG5jhELXFxdym1MWykoZSIGHDT%2FvQurNooRcqOQ1RWQRvDbo%2B%2BSNJO5h1oPcRoA62HWbJsgDJDsGI57v8FoISI694DT87StGTW7%2FwNezmaY41c7QEAAAAASUVORK5CYII%3D" class="tourImage"><img style="display: inline; opacity: 0.5;" alt="Delete this tour" title="Delete this tour" src="data:image/gif;base64,R0lGODlhEgASANUlAJaWluXl5dfX197e3pSUlNnZ2aampre3t3p6eubm5qioqLW1taenp9zc3LOzs7a2toGBgdra2t3d3YuLi3x8fKSkpHV1dc%2FPz%2BHh4ZiYmH5%2BfpeXl4qKioyMjMXFxaKior%2B%2Fv8vLy9DQ0LS0tDs7OwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACUALAAAAAASABIAAAZ4wJJwSCwaj8gjaZkcLp9QJOkhGHgACM2EQzJCv9EiaQSKBEQGAiHT9Y5IGFKBpCAB2uJ3gNQgOUgfeEQkCyR7EmN0gk4PJAl8iQyLQiQHjnKRkyWEhiQCfiQbmiQVJAMkFyQGJBSjCAAHISMAHRAWmptgTE28vUdBADs%3D" class="tourImage" id="gctourDeleteButton"></div><div style="overflow: auto; height: 713px; width: 100%;" id="gctour_geocacheList"><ul style="" class="cachelist ui-sortable" id="cacheList">The list is empty.</ul></div><div style="position: absolute; bottom: 0px; font-size: 75%; width: 100%; height: 14px;" id="gctour_footer"><div style="width: 100%;"><a title="http://gctour.madd.in" href="http://gctour.madd.in/" style="padding-left: 5px;">http://gctour.madd.in</a><div style="float: right; margin-right: 5px;">v 2.3.12356</div></div></div></div><div id="fancybox-tmp"></div><div id="fancybox-loading"><div></div></div><div id="fancybox-overlay"></div><div id="fancybox-wrap"><div id="fancybox-outer"><div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div><div id="fancybox-content"></div><a id="fancybox-close"></a><div id="fancybox-title"></div><a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a><a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a></div></div><div id="tiptip_holder" style="max-width:200px;"><div id="tiptip_arrow"><div id="tiptip_arrow_inner"></div></div><div id="tiptip_content"></div></div><div style="display: block;"></div></body></html> \ No newline at end of file
diff --git a/tests/res/values/strings.xml b/tests/res/values/strings.xml
index 6f4b38a..1230358 100644
--- a/tests/res/values/strings.xml
+++ b/tests/res/values/strings.xml
@@ -2,5 +2,7 @@
<resources>
<string name="app_name">c:geo tests</string>
+ <string name="logcat">Logcat:</string>
+ <string name="run_tests">Run tests…</string>
</resources> \ No newline at end of file
diff --git a/tests/src/cgeo/CGeoTestCase.java b/tests/src/cgeo/CGeoTestCase.java
index 6a63cbc..7dd5956 100644
--- a/tests/src/cgeo/CGeoTestCase.java
+++ b/tests/src/cgeo/CGeoTestCase.java
@@ -1,15 +1,24 @@
package cgeo;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.enumerations.LoadFlags;
+import cgeo.geocaching.enumerations.LoadFlags.RemoveFlag;
+import cgeo.geocaching.settings.Settings;
+import cgeo.geocaching.settings.TestSettings;
import android.test.ApplicationTestCase;
-public abstract class CGeoTestCase extends ApplicationTestCase<cgeoapplication> {
+import java.util.EnumSet;
+
+public abstract class CGeoTestCase extends ApplicationTestCase<CgeoApplication> {
+
+ private boolean oldStoreMapsFlag;
+ private boolean oldStoreWpMapsFlag;
+ private boolean oldMapStoreFlagsRecorded = false;
public CGeoTestCase() {
- super(cgeoapplication.class);
+ super(CgeoApplication.class);
}
@Override
@@ -20,7 +29,58 @@ public abstract class CGeoTestCase extends ApplicationTestCase<cgeoapplication>
/** Remove cache from DB and cache to ensure that the cache is not loaded from the database */
protected static void deleteCacheFromDB(String geocode) {
- cgData.removeCache(geocode, LoadFlags.REMOVE_ALL);
+ DataStore.removeCache(geocode, LoadFlags.REMOVE_ALL);
+ }
+
+ /**
+ * remove cache from database and file system
+ *
+ * @param geocode
+ */
+ protected static void removeCacheCompletely(final String geocode) {
+ final EnumSet<RemoveFlag> flags = EnumSet.copyOf(LoadFlags.REMOVE_ALL);
+ flags.add(RemoveFlag.REMOVE_OWN_WAYPOINTS_ONLY_FOR_TESTING);
+ DataStore.removeCache(geocode, flags);
+ }
+
+ /**
+ * must be called once before setting the flags
+ * can be called again after restoring the flags
+ */
+ protected void recordMapStoreFlags() {
+ if (oldMapStoreFlagsRecorded) {
+ throw new IllegalStateException("MapStoreFlags already recorded!");
+ }
+ oldStoreMapsFlag = Settings.isStoreOfflineMaps();
+ oldStoreWpMapsFlag = Settings.isStoreOfflineWpMaps();
+ oldMapStoreFlagsRecorded = true;
}
+ /**
+ * can be called after recordMapStoreFlags,
+ * to set the flags for map storing as necessary
+ * @param storeCacheMap
+ * @param storeWpMaps
+ */
+ protected void setMapStoreFlags(boolean storeCacheMap, boolean storeWpMaps) {
+ if (!oldMapStoreFlagsRecorded) {
+ throw new IllegalStateException("Previous MapStoreFlags havn't been recorded! Setting not allowed");
+ }
+
+ TestSettings.setStoreOfflineMaps(storeCacheMap);
+ TestSettings.setStoreOfflineWpMaps(storeWpMaps);
+ }
+
+ /**
+ * has to be called after completion of the test (preferably in the finally part of a try statement)
+ */
+ protected void restoreMapStoreFlags() {
+ if (!oldMapStoreFlagsRecorded) {
+ throw new IllegalStateException("Previous MapStoreFlags havn't been recorded. Restore not possible");
+ }
+
+ TestSettings.setStoreOfflineMaps(oldStoreMapsFlag);
+ TestSettings.setStoreOfflineWpMaps(oldStoreWpMapsFlag);
+ oldMapStoreFlagsRecorded = false;
+ }
}
diff --git a/tests/src/cgeo/geocaching/cgDataTest.java b/tests/src/cgeo/geocaching/DataStoreTest.java
index cacf061..7dc3016 100644
--- a/tests/src/cgeo/geocaching/cgDataTest.java
+++ b/tests/src/cgeo/geocaching/DataStoreTest.java
@@ -8,6 +8,7 @@ import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.list.StoredList;
import org.apache.commons.lang3.StringUtils;
@@ -18,7 +19,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-public class cgDataTest extends CGeoTestCase {
+public class DataStoreTest extends CGeoTestCase {
public static void testStoredLists() {
@@ -35,11 +36,11 @@ public class cgDataTest extends CGeoTestCase {
try {
// create lists
- listId1 = cgData.createList("cgData Test");
+ listId1 = DataStore.createList("DataStore Test");
assertTrue(listId1 > StoredList.STANDARD_LIST_ID);
- listId2 = cgData.createList("cgDataTest");
+ listId2 = DataStore.createList("DataStoreTest");
assertTrue(listId2 > StoredList.STANDARD_LIST_ID);
- assertTrue(cgData.getLists().size() >= 2);
+ assertTrue(DataStore.getLists().size() >= 2);
cache1.setDetailed(true);
cache1.setListId(listId1);
@@ -47,33 +48,33 @@ public class cgDataTest extends CGeoTestCase {
cache2.setListId(listId1);
// save caches to DB (cache1=listId1, cache2=listId1)
- cgData.saveCache(cache1, LoadFlags.SAVE_ALL);
- cgData.saveCache(cache2, LoadFlags.SAVE_ALL);
- assertTrue(cgData.getAllCachesCount() >= 2);
+ DataStore.saveCache(cache1, LoadFlags.SAVE_ALL);
+ DataStore.saveCache(cache2, LoadFlags.SAVE_ALL);
+ assertTrue(DataStore.getAllCachesCount() >= 2);
// rename list (cache1=listId1, cache2=listId1)
- assertEquals(1, cgData.renameList(listId1, "cgData Test (renamed)"));
+ assertEquals(1, DataStore.renameList(listId1, "DataStore Test (renamed)"));
// get list
- final StoredList list1 = cgData.getList(listId1);
- assertEquals("cgData Test (renamed)", list1.title);
+ final StoredList list1 = DataStore.getList(listId1);
+ assertEquals("DataStore Test (renamed)", list1.title);
// move to list (cache1=listId2, cache2=listId2)
- cgData.moveToList(Collections.singletonList(cache1), listId2);
- assertEquals(1, cgData.getAllStoredCachesCount(CacheType.ALL, listId2));
+ DataStore.moveToList(Collections.singletonList(cache1), listId2);
+ assertEquals(1, DataStore.getAllStoredCachesCount(CacheType.ALL, listId2));
// remove list (cache1=listId2, cache2=listId2)
- assertTrue(cgData.removeList(listId1));
+ assertTrue(DataStore.removeList(listId1));
// mark dropped (cache1=1, cache2=0)
- cgData.markDropped(Collections.singletonList(cache2));
+ DataStore.markDropped(Collections.singletonList(cache2));
// mark stored (cache1=1, cache2=listId2)
- cgData.moveToList(Collections.singletonList(cache2), listId2);
- assertEquals(2, cgData.getAllStoredCachesCount(CacheType.ALL, listId2));
+ DataStore.moveToList(Collections.singletonList(cache2), listId2);
+ assertEquals(2, DataStore.getAllStoredCachesCount(CacheType.ALL, listId2));
// drop stored (cache1=0, cache2=0)
- cgData.removeList(listId2);
+ DataStore.removeList(listId2);
} finally {
@@ -81,25 +82,25 @@ public class cgDataTest extends CGeoTestCase {
final Set<String> geocodes = new HashSet<String>();
geocodes.add(cache1.getGeocode());
geocodes.add(cache2.getGeocode());
- cgData.removeCaches(geocodes, LoadFlags.REMOVE_ALL);
+ DataStore.removeCaches(geocodes, LoadFlags.REMOVE_ALL);
// remove list
- cgData.removeList(listId1);
- cgData.removeList(listId2);
+ DataStore.removeList(listId1);
+ DataStore.removeList(listId2);
}
}
// Check that queries don't throw an exception (see issue #1429).
public static void testLoadWaypoints() {
final Viewport viewport = new Viewport(new Geopoint(-1, -2), new Geopoint(3, 4));
- cgData.loadWaypoints(viewport, false, false, CacheType.ALL);
- cgData.loadWaypoints(viewport, false, true, CacheType.ALL);
- cgData.loadWaypoints(viewport, true, false, CacheType.ALL);
- cgData.loadWaypoints(viewport, true, true, CacheType.ALL);
- cgData.loadWaypoints(viewport, false, false, CacheType.TRADITIONAL);
- cgData.loadWaypoints(viewport, false, true, CacheType.TRADITIONAL);
- cgData.loadWaypoints(viewport, true, false, CacheType.TRADITIONAL);
- cgData.loadWaypoints(viewport, true, true, CacheType.TRADITIONAL);
+ DataStore.loadWaypoints(viewport, false, false, CacheType.ALL);
+ DataStore.loadWaypoints(viewport, false, true, CacheType.ALL);
+ DataStore.loadWaypoints(viewport, true, false, CacheType.ALL);
+ DataStore.loadWaypoints(viewport, true, true, CacheType.ALL);
+ DataStore.loadWaypoints(viewport, false, false, CacheType.TRADITIONAL);
+ DataStore.loadWaypoints(viewport, false, true, CacheType.TRADITIONAL);
+ DataStore.loadWaypoints(viewport, true, false, CacheType.TRADITIONAL);
+ DataStore.loadWaypoints(viewport, true, true, CacheType.TRADITIONAL);
}
// Check that saving a cache and trackable without logs works (see #2199)
@@ -118,12 +119,12 @@ public class cgDataTest extends CGeoTestCase {
cache.setInventory(inventory);
try {
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
- final Geocache loadedCache = cgData.loadCache(GEOCODE_CACHE, LoadFlags.LOAD_ALL_DB_ONLY);
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ final Geocache loadedCache = DataStore.loadCache(GEOCODE_CACHE, LoadFlags.LOAD_ALL_DB_ONLY);
assertNotNull("Cache was not saved!", loadedCache);
assertEquals(1, loadedCache.getInventory().size());
} finally {
- cgData.removeCache(GEOCODE_CACHE, LoadFlags.REMOVE_ALL);
+ DataStore.removeCache(GEOCODE_CACHE, LoadFlags.REMOVE_ALL);
}
}
@@ -141,25 +142,25 @@ public class cgDataTest extends CGeoTestCase {
cache.setDetailed(true);
try {
- final Geocache oldCache = cgData.loadCache(upperCase, LoadFlags.LOAD_ALL_DB_ONLY);
+ final Geocache oldCache = DataStore.loadCache(upperCase, LoadFlags.LOAD_ALL_DB_ONLY);
assertNull("Database contained old cache!", oldCache);
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
- final Geocache cacheWithOriginalCode = cgData.loadCache(upperCase, LoadFlags.LOAD_ALL_DB_ONLY);
+ DataStore.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ final Geocache cacheWithOriginalCode = DataStore.loadCache(upperCase, LoadFlags.LOAD_ALL_DB_ONLY);
assertNotNull("Cache was not saved correctly!", cacheWithOriginalCode);
- final Geocache cacheLowerCase = cgData.loadCache(lowerCase, LoadFlags.LOAD_ALL_DB_ONLY);
+ final Geocache cacheLowerCase = DataStore.loadCache(lowerCase, LoadFlags.LOAD_ALL_DB_ONLY);
assertNotNull("Could not find cache by case insensitive geocode", cacheLowerCase);
} finally {
- cgData.removeCache(upperCase, LoadFlags.REMOVE_ALL);
+ DataStore.removeCache(upperCase, LoadFlags.REMOVE_ALL);
}
}
// Loading logs for an empty geocode should return an empty list, not null!
public static void testLoadLogsFromEmptyGeocode() {
- final List<LogEntry> logs = cgData.loadLogs("");
+ final List<LogEntry> logs = DataStore.loadLogs("");
assertNotNull("Logs must not be null", logs);
assertEquals("Logs from empty geocode must be empty", 0, logs.size());
@@ -169,7 +170,7 @@ public class cgDataTest extends CGeoTestCase {
int sumCaches = 0;
int allCaches = 0;
for (CacheType cacheType : CacheType.values()) {
- SearchResult historyOfType = cgData.getHistoryOfCaches(false, cacheType);
+ SearchResult historyOfType = DataStore.getHistoryOfCaches(false, cacheType);
assertNotNull(historyOfType);
if (cacheType != CacheType.ALL) {
sumCaches += historyOfType.getCount();
@@ -180,7 +181,7 @@ public class cgDataTest extends CGeoTestCase {
// check that sum of types equals 'all'
assertEquals(sumCaches, allCaches);
// check that two different routines behave the same
- assertEquals(cgData.getAllHistoryCachesCount(), sumCaches);
+ assertEquals(DataStore.getAllHistoryCachesCount(), sumCaches);
}
public static void testCachedMissing() {
@@ -208,15 +209,15 @@ public class cgDataTest extends CGeoTestCase {
inTileHighZoom.setCoords(new Geopoint("N49 44.001 E8 37.001"), Tile.ZOOMLEVEL_MIN_PERSONALIZED + 1);
// put in cache
- cgData.saveCache(main, EnumSet.of(SaveFlag.SAVE_CACHE));
- cgData.saveCache(inTileLowZoom, EnumSet.of(SaveFlag.SAVE_CACHE));
- cgData.saveCache(inTileHighZoom, EnumSet.of(SaveFlag.SAVE_CACHE));
- cgData.saveCache(outTile, EnumSet.of(SaveFlag.SAVE_CACHE));
- cgData.saveCache(otherConnector, EnumSet.of(SaveFlag.SAVE_CACHE));
+ DataStore.saveCache(main, EnumSet.of(SaveFlag.SAVE_CACHE));
+ DataStore.saveCache(inTileLowZoom, EnumSet.of(SaveFlag.SAVE_CACHE));
+ DataStore.saveCache(inTileHighZoom, EnumSet.of(SaveFlag.SAVE_CACHE));
+ DataStore.saveCache(outTile, EnumSet.of(SaveFlag.SAVE_CACHE));
+ DataStore.saveCache(otherConnector, EnumSet.of(SaveFlag.SAVE_CACHE));
final SearchResult search = new SearchResult(main);
- Set<String> filteredGeoCodes = cgData.getCachedMissingFromSearch(search, tiles, GCConnector.getInstance(), Tile.ZOOMLEVEL_MIN_PERSONALIZED - 1);
+ Set<String> filteredGeoCodes = DataStore.getCachedMissingFromSearch(search, tiles, GCConnector.getInstance(), Tile.ZOOMLEVEL_MIN_PERSONALIZED - 1);
assertTrue(filteredGeoCodes.contains(inTileLowZoom.getGeocode()));
assertFalse(filteredGeoCodes.contains(inTileHighZoom.getGeocode()));
diff --git a/tests/src/cgeo/geocaching/GeocacheTest.java b/tests/src/cgeo/geocaching/GeocacheTest.java
index 4c09594..2f5281c 100644
--- a/tests/src/cgeo/geocaching/GeocacheTest.java
+++ b/tests/src/cgeo/geocaching/GeocacheTest.java
@@ -1,16 +1,15 @@
package cgeo.geocaching;
+import cgeo.CGeoTestCase;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.geopoint.Geopoint;
-
-import android.os.Handler;
-import android.test.AndroidTestCase;
+import cgeo.geocaching.list.StoredList;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
-public class GeocacheTest extends AndroidTestCase {
+public class GeocacheTest extends CGeoTestCase {
final static private class MockedEventCache extends Geocache {
public MockedEventCache(final Date date) {
@@ -52,31 +51,41 @@ public class GeocacheTest extends AndroidTestCase {
assertEquals("GC1234", cache.getGeocode());
}
- public static void testUpdateWaypointFromNote() {
+ public void testUpdateWaypointFromNote() {
assertWaypointsParsed("Test N51 13.888 E007 03.444", 1);
}
- public static void testUpdateWaypointsFromNote() {
+ public void testUpdateWaypointsFromNote() {
assertWaypointsParsed("Test N51 13.888 E007 03.444 Test N51 13.233 E007 03.444 Test N51 09.123 E007 03.444", 3);
}
- private static void assertWaypointsParsed(String note, int expectedWaypoints) {
- Geocache cache = new Geocache();
- cache.setGeocode("Test" + System.nanoTime());
- cache.setWaypoints(new ArrayList<Waypoint>(), false);
- for (int i = 0; i < 2; i++) {
- cache.setPersonalNote(note);
- cache.parseWaypointsFromNote();
- final List<Waypoint> waypoints = cache.getWaypoints();
- assertNotNull(waypoints);
- assertEquals(expectedWaypoints, waypoints.size());
- final Waypoint waypoint = waypoints.get(0);
- assertEquals(new Geopoint("N51 13.888 E007 03.444"), waypoint.getCoords());
- // assertEquals("Test", waypoint.getNote());
- assertEquals(cgeoapplication.getInstance().getString(R.string.cache_personal_note) + " 1", waypoint.getName());
- cache.store(StoredList.TEMPORARY_LIST_ID, null);
+ private void assertWaypointsParsed(String note, int expectedWaypoints) {
+
+ recordMapStoreFlags();
+
+ try {
+ setMapStoreFlags(false, false);
+
+ Geocache cache = new Geocache();
+ final String geocode = "Test" + System.nanoTime();
+ cache.setGeocode(geocode);
+ cache.setWaypoints(new ArrayList<Waypoint>(), false);
+ for (int i = 0; i < 2; i++) {
+ cache.setPersonalNote(note);
+ cache.parseWaypointsFromNote();
+ final List<Waypoint> waypoints = cache.getWaypoints();
+ assertNotNull(waypoints);
+ assertEquals(expectedWaypoints, waypoints.size());
+ final Waypoint waypoint = waypoints.get(0);
+ assertEquals(new Geopoint("N51 13.888 E007 03.444"), waypoint.getCoords());
+ // assertEquals("Test", waypoint.getNote());
+ assertEquals(CgeoApplication.getInstance().getString(R.string.cache_personal_note) + " 1", waypoint.getName());
+ cache.store(StoredList.TEMPORARY_LIST_ID, null);
+ }
+ removeCacheCompletely(geocode);
+ } finally {
+ restoreMapStoreFlags();
}
- cache.drop(new Handler());
}
public static void testMergeDownloadedStored() {
diff --git a/tests/src/cgeo/geocaching/PersonalNoteTest.java b/tests/src/cgeo/geocaching/PersonalNoteTest.java
index c8aa8ba..c31662f 100644
--- a/tests/src/cgeo/geocaching/PersonalNoteTest.java
+++ b/tests/src/cgeo/geocaching/PersonalNoteTest.java
@@ -1,5 +1,7 @@
package cgeo.geocaching;
+import cgeo.geocaching.list.StoredList;
+
import junit.framework.TestCase;
public class PersonalNoteTest extends TestCase {
diff --git a/tests/src/cgeo/geocaching/StoredListTest.java b/tests/src/cgeo/geocaching/StoredListTest.java
deleted file mode 100644
index dd8b6c7..0000000
--- a/tests/src/cgeo/geocaching/StoredListTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cgeo.geocaching;
-
-import junit.framework.TestCase;
-
-public class StoredListTest extends TestCase {
-
- public static void testStandardListExists() {
- final StoredList list = cgData.getList(StoredList.STANDARD_LIST_ID);
- assertNotNull(list);
- }
-
- public static void testEquals() {
- final StoredList list1 = cgData.getList(StoredList.STANDARD_LIST_ID);
- final StoredList list2 = cgData.getList(StoredList.STANDARD_LIST_ID);
- assertEquals(list1, list2);
- }
-
-}
diff --git a/tests/src/cgeo/geocaching/activity/ProgressTest.java b/tests/src/cgeo/geocaching/activity/ProgressTest.java
index e4b4289..9dab166 100644
--- a/tests/src/cgeo/geocaching/activity/ProgressTest.java
+++ b/tests/src/cgeo/geocaching/activity/ProgressTest.java
@@ -1,14 +1,18 @@
package cgeo.geocaching.activity;
-import cgeo.geocaching.MainActivity;
+import cgeo.geocaching.AboutActivity;
import android.annotation.TargetApi;
import android.test.ActivityInstrumentationTestCase2;
+/**
+ * This test uses the about activity to avoid side effects like network and GPS being triggered by the main activity.
+ *
+ */
@TargetApi(8)
-public class ProgressTest extends ActivityInstrumentationTestCase2<MainActivity> {
+public class ProgressTest extends ActivityInstrumentationTestCase2<AboutActivity> {
public ProgressTest() {
- super(MainActivity.class);
+ super(AboutActivity.class);
}
public void testProgressWrapper() {
diff --git a/tests/src/cgeo/geocaching/cgeoApplicationTest.java b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
index 83bf28d..b2537a3 100644
--- a/tests/src/cgeo/geocaching/cgeoApplicationTest.java
+++ b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
@@ -12,6 +12,7 @@ import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.loaders.RecaptchaReceiver;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.settings.TestSettings;
@@ -111,7 +112,7 @@ public class cgeoApplicationTest extends CGeoTestCase {
if (Settings.isPremiumMember() || search.getError() == null) {
assertEquals(1, search.getGeocodes().size());
assertTrue(search.getGeocodes().contains(geocode));
- return cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ return DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
}
assertEquals(0, search.getGeocodes().size());
return null;
@@ -128,36 +129,16 @@ public class cgeoApplicationTest extends CGeoTestCase {
}
/**
- * Test {@link Geocache#searchByGeocode(String, String, int, boolean, CancellableHandler)}
+ * Set the login data to the cgeo login, run the given Runnable, and restore the login.
+ *
+ * @param runnable
*/
- @MediumTest
- public static void testSearchByGeocodeNotLoggedIn() {
+ private static void withMockedLoginDo(final Runnable runnable) {
final ImmutablePair<String, String> login = Settings.getGcLogin();
final String memberStatus = Settings.getMemberStatus();
try {
- // non premium cache
- MockedCache cache = new GC2CJPF();
-
- deleteCacheFromDBAndLogout(cache.getGeocode());
-
- SearchResult search = Geocache.searchByGeocode(cache.getGeocode(), null, StoredList.TEMPORARY_LIST_ID, true, null);
- assertNotNull(search);
- assertEquals(1, search.getGeocodes().size());
- assertTrue(search.getGeocodes().contains(cache.getGeocode()));
- final Geocache searchedCache = search.getFirstCacheFromResult(LoadFlags.LOAD_CACHE_OR_DB);
- // coords must be null if the user is not logged in
- assertNull(searchedCache.getCoords());
-
- // premium cache. Not visible to guests
- cache = new GC2JVEH();
-
- deleteCacheFromDBAndLogout(cache.getGeocode());
-
- search = Geocache.searchByGeocode(cache.getGeocode(), null, StoredList.TEMPORARY_LIST_ID, true, null);
- assertNotNull(search);
- assertEquals(0, search.getGeocodes().size());
-
+ runnable.run();
} finally {
// restore user and password
TestSettings.setLogin(login.left, login.right);
@@ -170,26 +151,53 @@ public class cgeoApplicationTest extends CGeoTestCase {
* Test {@link Geocache#searchByGeocode(String, String, int, boolean, CancellableHandler)}
*/
@MediumTest
- public static void testSearchErrorOccured() {
- final ImmutablePair<String, String> login = Settings.getGcLogin();
- final String memberStatus = Settings.getMemberStatus();
+ public static void testSearchByGeocodeNotLoggedIn() {
+ withMockedLoginDo(new Runnable() {
- try {
- // non premium cache
- final MockedCache cache = new GC1ZXX2();
+ public void run() {
+ // non premium cache
+ MockedCache cache = new GC2CJPF();
- deleteCacheFromDBAndLogout(cache.getGeocode());
+ deleteCacheFromDBAndLogout(cache.getGeocode());
- final SearchResult search = Geocache.searchByGeocode(cache.getGeocode(), null, StoredList.TEMPORARY_LIST_ID, true, null);
- assertNotNull(search);
- assertEquals(0, search.getGeocodes().size());
+ SearchResult search = Geocache.searchByGeocode(cache.getGeocode(), null, StoredList.TEMPORARY_LIST_ID, true, null);
+ assertNotNull(search);
+ assertEquals(1, search.getGeocodes().size());
+ assertTrue(search.getGeocodes().contains(cache.getGeocode()));
+ final Geocache searchedCache = search.getFirstCacheFromResult(LoadFlags.LOAD_CACHE_OR_DB);
+ // coords must be null if the user is not logged in
+ assertNull(searchedCache.getCoords());
- } finally {
- // restore user and password
- TestSettings.setLogin(login.left, login.right);
- Settings.setMemberStatus(memberStatus);
- Login.login();
- }
+ // premium cache. Not visible to guests
+ cache = new GC2JVEH();
+
+ deleteCacheFromDBAndLogout(cache.getGeocode());
+
+ search = Geocache.searchByGeocode(cache.getGeocode(), null, StoredList.TEMPORARY_LIST_ID, true, null);
+ assertNotNull(search);
+ assertEquals(0, search.getGeocodes().size());
+ }
+ });
+ }
+
+ /**
+ * Test {@link Geocache#searchByGeocode(String, String, int, boolean, CancellableHandler)}
+ */
+ @MediumTest
+ public static void testSearchErrorOccured() {
+ withMockedLoginDo(new Runnable() {
+
+ public void run() {
+ // non premium cache
+ final MockedCache cache = new GC1ZXX2();
+
+ deleteCacheFromDBAndLogout(cache.getGeocode());
+
+ final SearchResult search = Geocache.searchByGeocode(cache.getGeocode(), null, StoredList.TEMPORARY_LIST_ID, true, null);
+ assertNotNull(search);
+ assertEquals(0, search.getGeocodes().size());
+ }
+ });
}
/**
@@ -295,7 +303,7 @@ public class cgeoApplicationTest extends CGeoTestCase {
SearchResult search = ConnectorFactory.searchByViewport(viewport, tokens);
assertNotNull(search);
assertTrue(search.getGeocodes().contains(mockedCache.getGeocode()));
- Geocache parsedCache = cgData.loadCache(mockedCache.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
+ Geocache parsedCache = DataStore.loadCache(mockedCache.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
assertEquals(Settings.isPremiumMember(), mockedCache.getCoords().equals(parsedCache.getCoords()));
assertEquals(Settings.isPremiumMember(), parsedCache.isReliableLatLon());
@@ -307,7 +315,7 @@ public class cgeoApplicationTest extends CGeoTestCase {
search = ConnectorFactory.searchByViewport(viewport, tokens);
assertNotNull(search);
assertTrue(search.getGeocodes().contains(mockedCache.getGeocode()));
- parsedCache = cgData.loadCache(mockedCache.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
+ parsedCache = DataStore.loadCache(mockedCache.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
assertEquals(Settings.isPremiumMember(), mockedCache.getCoords().equals(parsedCache.getCoords()));
assertEquals(Settings.isPremiumMember(), parsedCache.isReliableLatLon());
@@ -326,56 +334,54 @@ public class cgeoApplicationTest extends CGeoTestCase {
*/
@MediumTest
public static void testSearchByViewportNotLoggedIn() {
+ withMockedLoginDo(new Runnable() {
- final ImmutablePair<String, String> login = Settings.getGcLogin();
- final String memberStatus = Settings.getMemberStatus();
- final Strategy strategy = Settings.getLiveMapStrategy();
- final Strategy testStrategy = Strategy.FAST; // FASTEST, FAST or DETAILED for tests
- Settings.setLiveMapStrategy(testStrategy);
- final CacheType cacheType = Settings.getCacheType();
-
- try {
-
- final String[] tokens = null; // without a valid token we are "logged off"
+ public void run() {
+ final Strategy strategy = Settings.getLiveMapStrategy();
+ final Strategy testStrategy = Strategy.FAST; // FASTEST, FAST or DETAILED for tests
+ Settings.setLiveMapStrategy(testStrategy);
+ final CacheType cacheType = Settings.getCacheType();
- // non premium cache
- MockedCache cache = new GC2CJPF();
- deleteCacheFromDBAndLogout(cache.getGeocode());
- Tile.Cache.removeFromTileCache(cache);
- Settings.setCacheType(CacheType.ALL);
+ try {
- Viewport viewport = new Viewport(cache, 0.003, 0.003);
- SearchResult search = ConnectorFactory.searchByViewport(viewport, tokens);
+ final String[] tokens = null; // without a valid token we are "logged off"
- assertNotNull(search);
- assertTrue(search.getGeocodes().contains(cache.getGeocode()));
- // coords differ
- final Geocache cacheFromViewport = cgData.loadCache(cache.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
- Log.d("cgeoApplicationTest.testSearchByViewportNotLoggedIn: Coords expected = " + cache.getCoords());
- Log.d("cgeoApplicationTest.testSearchByViewportNotLoggedIn: Coords actual = " + cacheFromViewport.getCoords());
- assertFalse(cache.getCoords().isEqualTo(cacheFromViewport.getCoords(), 1e-3));
- // depending on the chosen strategy the coords can be reliable or not
- assertEquals(testStrategy == Strategy.DETAILED, cacheFromViewport.isReliableLatLon());
+ // non premium cache
+ MockedCache cache = new GC2CJPF();
+ deleteCacheFromDBAndLogout(cache.getGeocode());
+ Tile.Cache.removeFromTileCache(cache);
+ Settings.setCacheType(CacheType.ALL);
- // premium cache
- cache = new GC2JVEH();
- deleteCacheFromDBAndLogout(cache.getGeocode());
+ Viewport viewport = new Viewport(cache, 0.003, 0.003);
+ SearchResult search = ConnectorFactory.searchByViewport(viewport, tokens);
- viewport = new Viewport(cache, 0.003, 0.003);
- search = ConnectorFactory.searchByViewport(viewport, tokens);
+ assertNotNull(search);
+ assertTrue(search.getGeocodes().contains(cache.getGeocode()));
+ // coords differ
+ final Geocache cacheFromViewport = DataStore.loadCache(cache.getGeocode(), LoadFlags.LOAD_CACHE_OR_DB);
+ Log.d("cgeoApplicationTest.testSearchByViewportNotLoggedIn: Coords expected = " + cache.getCoords());
+ Log.d("cgeoApplicationTest.testSearchByViewportNotLoggedIn: Coords actual = " + cacheFromViewport.getCoords());
+ assertFalse(cache.getCoords().isEqualTo(cacheFromViewport.getCoords(), 1e-3));
+ // depending on the chosen strategy the coords can be reliable or not
+ assertEquals(testStrategy == Strategy.DETAILED, cacheFromViewport.isReliableLatLon());
+
+ // premium cache
+ cache = new GC2JVEH();
+ deleteCacheFromDBAndLogout(cache.getGeocode());
+
+ viewport = new Viewport(cache, 0.003, 0.003);
+ search = ConnectorFactory.searchByViewport(viewport, tokens);
- assertNotNull(search);
- // depending on the chosen strategy the cache is part of the search or not
- assertEquals(testStrategy == Strategy.DETAILED, search.getGeocodes().contains(cache.getGeocode()));
+ assertNotNull(search);
+ // depending on the chosen strategy the cache is part of the search or not
+ assertEquals(testStrategy == Strategy.DETAILED, search.getGeocodes().contains(cache.getGeocode()));
- } finally {
- // restore user and password
- TestSettings.setLogin(login.left, login.right);
- Settings.setMemberStatus(memberStatus);
- Login.login();
- Settings.setLiveMapStrategy(strategy);
- Settings.setCacheType(cacheType);
- }
+ } finally {
+ Settings.setLiveMapStrategy(strategy);
+ Settings.setCacheType(cacheType);
+ }
+ }
+ });
}
/**
diff --git a/tests/src/cgeo/geocaching/connector/gc/GCBaseTest.java b/tests/src/cgeo/geocaching/connector/gc/GCBaseTest.java
index d70ab9b..29fd886 100644
--- a/tests/src/cgeo/geocaching/connector/gc/GCBaseTest.java
+++ b/tests/src/cgeo/geocaching/connector/gc/GCBaseTest.java
@@ -14,19 +14,6 @@ import junit.framework.TestCase;
public class GCBaseTest extends TestCase {
- public static void testSplitJSONKey() {
- assertKey("(1, 2)", 1, 2);
- assertKey("(12, 34)", 12, 34);
- assertKey("(1234,56)", 1234, 56);
- assertKey("(1234, 567)", 1234, 567);
- }
-
- private static void assertKey(String key, int x, int y) {
- final UTFGridPosition pos = UTFGridPosition.fromString(key);
- assertEquals(x, pos.getX());
- assertEquals(y, pos.getY());
- }
-
public static void testSearchFromMap() {
final MockedCache mockedCache = new GC2CJPF();
diff --git a/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java b/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java
index de52171..163cbe7 100644
--- a/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java
+++ b/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java
@@ -1,11 +1,11 @@
package cgeo.geocaching.connector.gc;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.Image;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Trackable;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.enumerations.WaypointType;
@@ -18,7 +18,7 @@ import cgeo.geocaching.test.mock.MockedCache;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.test.Compare;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.os.Handler;
@@ -34,11 +34,6 @@ public class GCParserTest extends AbstractResourceInstrumentationTestCase {
assertUnpublished(cache);
}
- public void testUnpublishedCacheOwner() {
- final int cache = R.raw.gc433yc_owner_unpublished;
- assertUnpublished(cache);
- }
-
private void assertUnpublished(final int cache) {
final String page = getFileContent(cache);
final SearchResult result = GCParser.parseCacheFromText(page, null);
@@ -220,7 +215,7 @@ public class GCParserTest extends AbstractResourceInstrumentationTestCase {
final Trackable trackable = GCParser.parseTrackable(page, "TB123E");
assertNotNull(trackable);
assertEquals("TB123E", trackable.getGeocode());
- final String expectedDetails = cgeoapplication.getInstance().getString(cgeo.geocaching.R.string.trackable_not_activated);
+ final String expectedDetails = CgeoApplication.getInstance().getString(cgeo.geocaching.R.string.trackable_not_activated);
assertEquals(expectedDetails, trackable.getDetails());
}
}
diff --git a/tests/src/cgeo/geocaching/connector/gc/UTFGridPositionTest.java b/tests/src/cgeo/geocaching/connector/gc/UTFGridPositionTest.java
new file mode 100644
index 0000000..a742faf
--- /dev/null
+++ b/tests/src/cgeo/geocaching/connector/gc/UTFGridPositionTest.java
@@ -0,0 +1,34 @@
+package cgeo.geocaching.connector.gc;
+
+import junit.framework.TestCase;
+
+public class UTFGridPositionTest extends TestCase {
+
+ public static void testValidUTFGridPosition() {
+ assertNotNull(new UTFGridPosition(0, 0));
+ }
+
+ public static void testInvalidUTFGridPosition() {
+ boolean valid = true;
+ try {
+ assertNotNull(new UTFGridPosition(-1, 0));
+ } catch (Exception e) {
+ valid = false;
+ }
+ assertFalse(valid);
+ }
+
+ public static void testFromString() throws Exception {
+ assertXYFromString("(1, 2)", 1, 2);
+ assertXYFromString("(12, 34)", 12, 34);
+ assertXYFromString("(34,56)", 34, 56);
+ assertXYFromString("(34, 56)", 34, 56);
+ }
+
+ private static void assertXYFromString(final String key, int x, int y) {
+ final UTFGridPosition pos = UTFGridPosition.fromString(key);
+ assertEquals(x, pos.getX());
+ assertEquals(y, pos.getY());
+ }
+
+}
diff --git a/tests/src/cgeo/geocaching/connector/gc/WaypointsTest.java b/tests/src/cgeo/geocaching/connector/gc/WaypointsTest.java
index d186526..19acd7c 100644
--- a/tests/src/cgeo/geocaching/connector/gc/WaypointsTest.java
+++ b/tests/src/cgeo/geocaching/connector/gc/WaypointsTest.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.connector.gc;
import cgeo.CGeoTestCase;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.utils.CancellableHandler;
@@ -27,7 +27,7 @@ public class WaypointsTest extends CGeoTestCase {
public static void testDownloadWaypoints() {
// Check that repeated loads of "GC33HXE" hold the right number of waypoints (issue #2430).
final String GEOCODE = "GC33HXE";
- cgData.removeCache(GEOCODE, LoadFlags.REMOVE_ALL);
+ DataStore.removeCache(GEOCODE, LoadFlags.REMOVE_ALL);
assertEquals(9, downloadCache(GEOCODE).getWaypoints().size());
assertEquals(9, downloadCache(GEOCODE).getWaypoints().size());
}
diff --git a/tests/src/cgeo/geocaching/connector/oc/OCConnectorTest.java b/tests/src/cgeo/geocaching/connector/oc/OCConnectorTest.java
new file mode 100644
index 0000000..bbbd710
--- /dev/null
+++ b/tests/src/cgeo/geocaching/connector/oc/OCConnectorTest.java
@@ -0,0 +1,25 @@
+package cgeo.geocaching.connector.oc;
+
+import cgeo.geocaching.connector.ConnectorFactory;
+import cgeo.geocaching.connector.IConnector;
+
+import junit.framework.TestCase;
+
+public class OCConnectorTest extends TestCase {
+
+ /**
+ * OC.DE used up the 4 digit/character name space and switched over to 5 recently
+ */
+ public static void testCanHandleNew5DigitCodes() {
+ final IConnector ocConnector = getOcDeConnector();
+ assertTrue(ocConnector.canHandle("OCFFFF"));
+ assertTrue(ocConnector.canHandle("OC10000"));
+ }
+
+ private static IConnector getOcDeConnector() {
+ final IConnector ocConnector = ConnectorFactory.getConnector("OCXXX");
+ assertTrue(ocConnector.getHost().contains(".de"));
+ return ocConnector;
+ }
+
+}
diff --git a/tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java b/tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java
index 410252f..eb797c2 100644
--- a/tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java
+++ b/tests/src/cgeo/geocaching/connector/oc/OkapiClientTest.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.connector.oc;
import cgeo.CGeoTestCase;
import cgeo.geocaching.Geocache;
-import cgeo.geocaching.cgData;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.enumerations.LoadFlags;
public class OkapiClientTest extends CGeoTestCase {
@@ -10,12 +10,12 @@ public class OkapiClientTest extends CGeoTestCase {
public static void testGetOCCache() {
final String geoCode = "OU0331";
Geocache cache = OkapiClient.getCache(geoCode);
- assertNotNull(cache);
- assertEquals(geoCode, cache.getGeocode());
+ assertNotNull("Did not get cache from OKAPI", cache);
+ assertEquals("Unexpected geo code", geoCode, cache.getGeocode());
assertEquals("Oshkosh Municipal Tank", cache.getName());
assertTrue(cache.isDetailed());
// cache should be stored to DB (to listID 0) when loaded above
- cache = cgData.loadCache(geoCode, LoadFlags.LOAD_ALL_DB_ONLY);
+ cache = DataStore.loadCache(geoCode, LoadFlags.LOAD_ALL_DB_ONLY);
assertNotNull(cache);
assertEquals(geoCode, cache.getGeocode());
assertEquals("Oshkosh Municipal Tank", cache.getName());
diff --git a/tests/src/cgeo/geocaching/connector/trackable/GeokretyParserTest.java b/tests/src/cgeo/geocaching/connector/trackable/GeokretyParserTest.java
index 3915993..8f21342 100644
--- a/tests/src/cgeo/geocaching/connector/trackable/GeokretyParserTest.java
+++ b/tests/src/cgeo/geocaching/connector/trackable/GeokretyParserTest.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.connector.trackable;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Trackable;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.test.AbstractResourceInstrumentationTestCase;
import cgeo.geocaching.test.R;
@@ -13,7 +13,7 @@ public class GeokretyParserTest extends AbstractResourceInstrumentationTestCase
assertEquals("WeltenbummlerKret", trackable.getName());
assertEquals("GK008D", trackable.getGeocode());
assertEquals(2235f, trackable.getDistance());
- assertEquals(cgeoapplication.getInstance().getString(cgeo.geocaching.R.string.geokret_type_traditional), trackable.getType());
+ assertEquals(CgeoApplication.getInstance().getString(cgeo.geocaching.R.string.geokret_type_traditional), trackable.getType());
}
}
diff --git a/tests/src/cgeo/geocaching/export/ExportTest.java b/tests/src/cgeo/geocaching/export/ExportTest.java
index 3e5505a..6d39f8d 100644
--- a/tests/src/cgeo/geocaching/export/ExportTest.java
+++ b/tests/src/cgeo/geocaching/export/ExportTest.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.export;
import cgeo.CGeoTestCase;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.geopoint.Geopoint;
@@ -30,7 +30,7 @@ public class ExportTest extends CGeoTestCase {
cache.setCoords(new Geopoint("N 49 44.000 E 8 37.000"));
final LogEntry log = new LogEntry(1353244820000L, LogType.FOUND_IT, "Smile: \ud83d\ude0a");
cache.getLogs().add(log);
- cgData.saveCache(cache, LoadFlags.SAVE_ALL);
+ DataStore.saveCache(cache, LoadFlags.SAVE_ALL);
ArrayList<Geocache> exportList = new ArrayList<Geocache>();
exportList.add(cache);
GpxExportTester gpxExport = new GpxExportTester();
@@ -38,7 +38,7 @@ public class ExportTest extends CGeoTestCase {
try {
result = gpxExport.testExportSync(exportList);
} finally {
- cgData.removeCache(cache.getGeocode(), LoadFlags.REMOVE_ALL);
+ DataStore.removeCache(cache.getGeocode(), LoadFlags.REMOVE_ALL);
}
assertNotNull(result);
diff --git a/tests/src/cgeo/geocaching/export/GpxSerializerTest.java b/tests/src/cgeo/geocaching/export/GpxSerializerTest.java
index 0080b76..5c83b35 100644
--- a/tests/src/cgeo/geocaching/export/GpxSerializerTest.java
+++ b/tests/src/cgeo/geocaching/export/GpxSerializerTest.java
@@ -1,12 +1,19 @@
package cgeo.geocaching.export;
import cgeo.geocaching.Geocache;
+import cgeo.geocaching.files.GPX10Parser;
import cgeo.geocaching.files.ParserException;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.test.AbstractResourceInstrumentationTestCase;
import cgeo.geocaching.test.R;
+import org.apache.commons.lang3.CharEncoding;
+
+import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.StringWriter;
+import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.atomic.AtomicReference;
@@ -34,4 +41,42 @@ public class GpxSerializerTest extends AbstractResourceInstrumentationTestCase {
});
assertEquals("Progress listener not called", 1, importedCount.get().intValue());
}
+
+ /**
+ * This test verifies that a loop of import, export, import leads to the same cache information.
+ *
+ * @throws IOException
+ * @throws ParserException
+ */
+ public void testStableExportImportExport() throws IOException, ParserException {
+ final String geocode = "GC1BKP3";
+ final int cacheResource = R.raw.gc1bkp3_gpx101;
+ final Geocache cache = loadCacheFromResource(cacheResource);
+ assertNotNull(cache);
+
+ final String gpxFirst = getGPXFromCache(geocode);
+
+ assertTrue(gpxFirst.length() > 0);
+
+ final GPX10Parser parser = new GPX10Parser(StoredList.TEMPORARY_LIST_ID);
+
+ final InputStream stream = new ByteArrayInputStream(gpxFirst.getBytes(CharEncoding.UTF_8));
+ Collection<Geocache> caches = parser.parse(stream, null);
+ assertNotNull(caches);
+ assertEquals(1, caches.size());
+
+ final String gpxSecond = getGPXFromCache(geocode);
+ assertEquals(replaceLogIds(gpxFirst), replaceLogIds(gpxSecond));
+ }
+
+ private static String replaceLogIds(String gpx) {
+ return gpx.replaceAll("log id=\"\\d*\"", "");
+ }
+
+ private static String getGPXFromCache(String geocode) throws IOException {
+ final StringWriter writer = new StringWriter();
+ new GpxSerializer().writeGPX(Collections.singletonList(geocode), writer, null);
+ return writer.toString();
+ }
+
}
diff --git a/tests/src/cgeo/geocaching/files/GPXImporterTest.java b/tests/src/cgeo/geocaching/files/GPXImporterTest.java
index 03f917c..8f5d821 100644
--- a/tests/src/cgeo/geocaching/files/GPXImporterTest.java
+++ b/tests/src/cgeo/geocaching/files/GPXImporterTest.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.settings.Settings;
@@ -74,7 +74,7 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
assertEquals(GPXImporter.IMPORT_STEP_FINISHED, iMsg.next().what);
final SearchResult search = (SearchResult) importStepHandler.messages.get(3).obj;
assertEquals(Collections.singletonList(geocode), new ArrayList<String>(search.getGeocodes()));
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
assertCacheProperties(cache);
assertTrue(cache.getWaypoints().isEmpty());
@@ -101,7 +101,7 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
assertImportStepMessages(GPXImporter.IMPORT_STEP_START, GPXImporter.IMPORT_STEP_READ_FILE, GPXImporter.IMPORT_STEP_READ_WPT_FILE, GPXImporter.IMPORT_STEP_STORE_STATIC_MAPS, GPXImporter.IMPORT_STEP_FINISHED);
final SearchResult search = (SearchResult) importStepHandler.messages.get(4).obj;
assertEquals(Collections.singletonList("GC31J2H"), new ArrayList<String>(search.getGeocodes()));
- final Geocache cache = cgData.loadCache("GC31J2H", LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache("GC31J2H", LoadFlags.LOAD_CACHE_OR_DB);
assertCacheProperties(cache);
assertEquals(2, cache.getWaypoints().size());
}
@@ -114,7 +114,7 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
runImportThread(importThread);
assertImportStepMessages(GPXImporter.IMPORT_STEP_START, GPXImporter.IMPORT_STEP_READ_FILE, GPXImporter.IMPORT_STEP_STORE_STATIC_MAPS, GPXImporter.IMPORT_STEP_FINISHED);
- final Geocache cache = cgData.loadCache("AID1", LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache("AID1", LoadFlags.LOAD_CACHE_OR_DB);
assertCacheProperties(cache);
assertEquals("First Aid Station #1", cache.getName());
}
@@ -136,7 +136,7 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
assertImportStepMessages(GPXImporter.IMPORT_STEP_START, GPXImporter.IMPORT_STEP_READ_FILE, GPXImporter.IMPORT_STEP_STORE_STATIC_MAPS, GPXImporter.IMPORT_STEP_FINISHED);
final SearchResult search = (SearchResult) importStepHandler.messages.get(3).obj;
assertEquals(Collections.singletonList("OC5952"), new ArrayList<String>(search.getGeocodes()));
- final Geocache cache = cgData.loadCache("OC5952", LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache("OC5952", LoadFlags.LOAD_CACHE_OR_DB);
assertCacheProperties(cache);
}
@@ -178,7 +178,7 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
assertImportStepMessages(GPXImporter.IMPORT_STEP_START, GPXImporter.IMPORT_STEP_READ_FILE, GPXImporter.IMPORT_STEP_STORE_STATIC_MAPS, GPXImporter.IMPORT_STEP_FINISHED);
final SearchResult search = (SearchResult) importStepHandler.messages.get(3).obj;
assertEquals(Collections.singletonList(geocode), new ArrayList<String>(search.getGeocodes()));
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
assertCacheProperties(cache);
assertTrue(cache.getWaypoints().isEmpty());
@@ -196,7 +196,7 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
assertImportStepMessages(GPXImporter.IMPORT_STEP_START, GPXImporter.IMPORT_STEP_READ_FILE, GPXImporter.IMPORT_STEP_READ_WPT_FILE, GPXImporter.IMPORT_STEP_STORE_STATIC_MAPS, GPXImporter.IMPORT_STEP_FINISHED);
final SearchResult search = (SearchResult) importStepHandler.messages.get(4).obj;
assertEquals(Collections.singletonList(geocode), new ArrayList<String>(search.getGeocodes()));
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
assertCacheProperties(cache);
assertEquals(1, cache.getWaypoints().size()); // this is the original pocket query result without test waypoint
}
@@ -222,7 +222,7 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
assertImportStepMessages(GPXImporter.IMPORT_STEP_START, GPXImporter.IMPORT_STEP_READ_FILE, GPXImporter.IMPORT_STEP_READ_WPT_FILE, GPXImporter.IMPORT_STEP_STORE_STATIC_MAPS, GPXImporter.IMPORT_STEP_FINISHED);
final SearchResult search = (SearchResult) importStepHandler.messages.get(4).obj;
assertEquals(Collections.singletonList(geocode), new ArrayList<String>(search.getGeocodes()));
- final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
+ final Geocache cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB);
assertCacheProperties(cache);
assertEquals(1, cache.getWaypoints().size()); // this is the original pocket query result without test waypoint
}
@@ -267,8 +267,8 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
tempDir.mkdir();
assertTrue("Could not create directory " + tempDir.getPath(), tempDir.exists());
// workaround to get storage initialized
- cgData.getAllHistoryCachesCount();
- listId = cgData.createList("cgeogpxesTest");
+ DataStore.getAllHistoryCachesCount();
+ listId = DataStore.createList("cgeogpxesTest");
importCacheStaticMaps = Settings.isStoreOfflineMaps();
TestSettings.setStoreOfflineMaps(true);
@@ -278,11 +278,11 @@ public class GPXImporterTest extends AbstractResourceInstrumentationTestCase {
@Override
protected void tearDown() throws Exception {
- final SearchResult search = cgData.getBatchOfStoredCaches(null, CacheType.ALL, listId);
+ final SearchResult search = DataStore.getBatchOfStoredCaches(null, CacheType.ALL, listId);
final List<Geocache> cachesInList = new ArrayList<Geocache>();
cachesInList.addAll(search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB));
- cgData.markDropped(cachesInList);
- cgData.removeList(listId);
+ DataStore.markDropped(cachesInList);
+ DataStore.removeList(listId);
deleteDirectory(tempDir);
TestSettings.setStoreOfflineMaps(importCacheStaticMaps);
TestSettings.setStoreOfflineWpMaps(importWpStaticMaps);
diff --git a/tests/src/cgeo/geocaching/files/GPXParserTest.java b/tests/src/cgeo/geocaching/files/GPXParserTest.java
index 892b2a0..9604519 100644
--- a/tests/src/cgeo/geocaching/files/GPXParserTest.java
+++ b/tests/src/cgeo/geocaching/files/GPXParserTest.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
@@ -150,6 +150,9 @@ public class GPXParserTest extends AbstractResourceInstrumentationTestCase {
assertEquals(parseTime("2011-09-11T07:00:00Z"), log.date);
assertEquals(-1, log.found);
assertEquals("Sehr schöne Runde und wir haben wieder etwas Neues über Hockenheim gelernt. Super Tarnung.\nTFTC, Geoteufel", log.log);
+ assertFalse(log.isOwn());
+ assertEquals(log.log, log.getDisplayText());
+ assertTrue(log.daysSinceLog() > 700);
// following info is not contained in pocket query gpx file
assertEquals(0, cache.getAttributes().size());
@@ -212,7 +215,7 @@ public class GPXParserTest extends AbstractResourceInstrumentationTestCase {
}
}
// reload caches, because the parser only returns the minimum version of each cache
- return new ArrayList<Geocache>(cgData.loadCaches(result, LoadFlags.LOAD_ALL_DB_ONLY));
+ return new ArrayList<Geocache>(DataStore.loadCaches(result, LoadFlags.LOAD_ALL_DB_ONLY));
}
public static void testParseDateWithFractionalSeconds() throws ParseException {
@@ -255,9 +258,9 @@ public class GPXParserTest extends AbstractResourceInstrumentationTestCase {
removeCacheCompletely(geocode);
final List<Geocache> caches = readGPX10(R.raw.lazy);
assertEquals(1, caches.size());
- cgData.removeAllFromCache();
+ DataStore.removeAllFromCache();
// load only the minimum cache, it has several members missing
- final Geocache minimalCache = cgData.loadCache(geocode, EnumSet.of(LoadFlag.LOAD_DB_MINIMAL));
+ final Geocache minimalCache = DataStore.loadCache(geocode, EnumSet.of(LoadFlag.LOAD_DB_MINIMAL));
// now check that we load lazy members on demand
assertFalse(minimalCache.getAttributes().isEmpty());
diff --git a/tests/src/cgeo/geocaching/list/PseudoListTest.java b/tests/src/cgeo/geocaching/list/PseudoListTest.java
new file mode 100644
index 0000000..8a138ef
--- /dev/null
+++ b/tests/src/cgeo/geocaching/list/PseudoListTest.java
@@ -0,0 +1,18 @@
+package cgeo.geocaching.list;
+
+import junit.framework.TestCase;
+
+public class PseudoListTest extends TestCase {
+
+ public static void testGetTitleAndCount() throws Exception {
+ final String title = PseudoList.ALL_LIST.getTitleAndCount();
+ for (int i = 0; i < title.length(); i++) {
+ assertFalse("pseudo lists shall not have a number shown in their title", Character.isDigit(title.charAt(i)));
+ }
+ }
+
+ public static void testIsConcrete() throws Exception {
+ assertFalse("pseudo lists are not concrete lists", PseudoList.ALL_LIST.isConcrete());
+ }
+
+}
diff --git a/tests/src/cgeo/geocaching/list/StoredListTest.java b/tests/src/cgeo/geocaching/list/StoredListTest.java
new file mode 100644
index 0000000..bc4ebe4
--- /dev/null
+++ b/tests/src/cgeo/geocaching/list/StoredListTest.java
@@ -0,0 +1,31 @@
+package cgeo.geocaching.list;
+
+import cgeo.geocaching.DataStore;
+
+import junit.framework.TestCase;
+
+public class StoredListTest extends TestCase {
+
+ public static void testStandardListExists() {
+ final StoredList list = getStandardList();
+ assertNotNull(list);
+ }
+
+ private static StoredList getStandardList() {
+ return DataStore.getList(StoredList.STANDARD_LIST_ID);
+ }
+
+ public static void testEquals() {
+ final StoredList list1 = getStandardList();
+ final StoredList list2 = getStandardList();
+ assertEquals(list1, list2);
+ }
+
+ public static void testConcrete() {
+ assertTrue(getStandardList().isConcrete());
+ }
+
+ public static void testTitleAndCountContainsTitle() {
+ assertTrue(getStandardList().getTitleAndCount().startsWith(getStandardList().getTitle()));
+ }
+}
diff --git a/tests/src/cgeo/geocaching/speech/TextFactoryTest.java b/tests/src/cgeo/geocaching/speech/TextFactoryTest.java
index 864757b..ec8e1b0 100644
--- a/tests/src/cgeo/geocaching/speech/TextFactoryTest.java
+++ b/tests/src/cgeo/geocaching/speech/TextFactoryTest.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.speech;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.settings.TestSettings;
@@ -29,7 +29,7 @@ public class TextFactoryTest extends AndroidTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- final Resources resources = cgeoapplication.getInstance().getResources();
+ final Resources resources = CgeoApplication.getInstance().getResources();
final Configuration config = resources.getConfiguration();
defaultLocale1 = config.locale;
defaultLocale2 = Locale.getDefault();
@@ -149,7 +149,7 @@ public class TextFactoryTest extends AndroidTestCase {
private static void setLocale(Locale locale1, Locale locale2, boolean metric) {
final Configuration config = new Configuration();
config.locale = locale1;
- final Resources resources = cgeoapplication.getInstance().getResources();
+ final Resources resources = CgeoApplication.getInstance().getResources();
resources.updateConfiguration(config, resources.getDisplayMetrics());
Locale.setDefault(locale2);
diff --git a/tests/src/cgeo/geocaching/test/AbstractResourceInstrumentationTestCase.java b/tests/src/cgeo/geocaching/test/AbstractResourceInstrumentationTestCase.java
index cb8238f..12e83cc 100644
--- a/tests/src/cgeo/geocaching/test/AbstractResourceInstrumentationTestCase.java
+++ b/tests/src/cgeo/geocaching/test/AbstractResourceInstrumentationTestCase.java
@@ -1,14 +1,14 @@
package cgeo.geocaching.test;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.StoredList;
-import cgeo.geocaching.cgData;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.enumerations.LoadFlags.RemoveFlag;
import cgeo.geocaching.files.GPX10Parser;
import cgeo.geocaching.files.ParserException;
+import cgeo.geocaching.list.StoredList;
import android.content.res.Resources;
import android.test.InstrumentationTestCase;
@@ -27,7 +27,7 @@ public abstract class AbstractResourceInstrumentationTestCase extends Instrument
protected static void removeCacheCompletely(final String geocode) {
final EnumSet<RemoveFlag> flags = EnumSet.copyOf(LoadFlags.REMOVE_ALL);
flags.add(RemoveFlag.REMOVE_OWN_WAYPOINTS_ONLY_FOR_TESTING);
- cgData.removeCache(geocode, flags);
+ DataStore.removeCache(geocode, flags);
}
protected InputStream getResourceStream(int resourceId) {
@@ -65,17 +65,17 @@ public abstract class AbstractResourceInstrumentationTestCase extends Instrument
@Override
protected void setUp() throws Exception {
super.setUp();
- temporaryListId = cgData.createList("Temporary unit testing");
+ temporaryListId = DataStore.createList("Temporary unit testing");
assertTrue(temporaryListId != StoredList.TEMPORARY_LIST_ID);
assertTrue(temporaryListId != StoredList.STANDARD_LIST_ID);
}
@Override
protected void tearDown() throws Exception {
- final SearchResult search = cgData.getBatchOfStoredCaches(null, CacheType.ALL, temporaryListId);
+ final SearchResult search = DataStore.getBatchOfStoredCaches(null, CacheType.ALL, temporaryListId);
assertNotNull(search);
- cgData.removeCaches(search.getGeocodes(), LoadFlags.REMOVE_ALL);
- cgData.removeList(temporaryListId);
+ DataStore.removeCaches(search.getGeocodes(), LoadFlags.REMOVE_ALL);
+ DataStore.removeList(temporaryListId);
super.tearDown();
}
diff --git a/tests/src/cgeo/geocaching/test/BottomAwareScrollView.java b/tests/src/cgeo/geocaching/test/BottomAwareScrollView.java
new file mode 100644
index 0000000..5735241
--- /dev/null
+++ b/tests/src/cgeo/geocaching/test/BottomAwareScrollView.java
@@ -0,0 +1,36 @@
+package cgeo.geocaching.test;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ScrollView;
+
+public class BottomAwareScrollView extends ScrollView {
+
+ private boolean isAtBottom = true;
+
+ public BottomAwareScrollView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public BottomAwareScrollView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public BottomAwareScrollView(Context context) {
+ super(context);
+ }
+
+ @Override
+ protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+ View lastChildView = getChildAt(getChildCount() - 1);
+ int diff = (lastChildView.getBottom() - (getHeight() + getScrollY()));
+ isAtBottom = diff <= 0;
+ super.onScrollChanged(l, t, oldl, oldt);
+ }
+
+ public boolean isAtBottom() {
+ return isAtBottom;
+ }
+
+}
diff --git a/tests/src/cgeo/geocaching/test/CgeoTestsActivity.java b/tests/src/cgeo/geocaching/test/CgeoTestsActivity.java
new file mode 100644
index 0000000..0f41cef
--- /dev/null
+++ b/tests/src/cgeo/geocaching/test/CgeoTestsActivity.java
@@ -0,0 +1,147 @@
+package cgeo.geocaching.test;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.pm.InstrumentationInfo;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.text.Html;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.List;
+
+public class CgeoTestsActivity extends Activity {
+ private static final String TAG = CgeoTestsActivity.class.getName();
+
+ private static final int TIMEOUT = 600 * 1000;
+
+ private TextView logView;
+ private LogcatAsyncTask logCatTask;
+
+ private BottomAwareScrollView scrollView;
+
+ private class LogcatAsyncTask extends AsyncTask<Integer, String, Void> {
+ // TestRunner and silence others
+ private static final String CMD = "logcat -v brief TestRunner:I cgeo:I *:S";
+ private BufferedReader mReader;
+ private Process mProc;
+
+ public LogcatAsyncTask() {
+ try {
+ mProc = Runtime.getRuntime().exec(CMD);
+ mReader = new BufferedReader(new InputStreamReader(
+ mProc.getInputStream()));
+ } catch (Exception e) {
+ Log.e(TAG, "Creating proc", e);
+ }
+ }
+
+ @Override
+ protected void onProgressUpdate(String... values) {
+ final String line = values[0];
+ final boolean isAtBottom = scrollView.isAtBottom();
+ if (!TextUtils.isEmpty(line)) {
+ logView.append(Html.fromHtml("<font color=\"" + color(line) + "\">" + line + "</font><br/>"));
+ if (isAtBottom) {
+ scrollView.scrollTo(0, logView.getBottom());
+ }
+ }
+ }
+
+ private String color(String line) {
+ switch (line.charAt(0)) {
+ case 'E':
+ return "red";
+ case 'W':
+ return "#FFA500";
+ case 'D':
+ return "blue";
+ default:
+ return "white";
+ }
+ }
+
+ @Override
+ protected Void doInBackground(Integer... params) {
+ final long timeout = System.currentTimeMillis() + params[0];
+ try {
+ do {
+ Thread.sleep(50);
+ publishProgress(mReader.readLine());
+ } while (System.currentTimeMillis() < timeout);
+ } catch (Exception e) {
+ publishProgress("ERROR: " + e);
+ } finally {
+ publishProgress("END");
+ mProc.destroy();
+ }
+ return null;
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.cgeo_tests_activity);
+ logView = (TextView) findViewById(R.id.logOutput);
+ scrollView = (BottomAwareScrollView) findViewById(R.id.scrollView);
+ }
+
+ @Override
+ protected void onDestroy() {
+ if (logCatTask != null) {
+ logCatTask.cancel(true);
+ }
+ super.onDestroy();
+ }
+
+ private InstrumentationInfo getInstrumentationInfo(final String packageName) {
+ final List<InstrumentationInfo> list =
+ getPackageManager()
+ .queryInstrumentation(packageName, 0);
+ return (!list.isEmpty()) ? list.get(0) : null;
+ }
+
+ /**
+ * @param v
+ * referenced from XML layout
+ */
+ public void runTests(final View v) {
+ final Button button = (Button) findViewById(R.id.buttonRun);
+ button.setEnabled(false);
+ try {
+ runTestsInternally();
+ } finally {
+ // button.setEnabled(true);
+ }
+ }
+
+ private void runTestsInternally() {
+ final String pn = getPackageName().replaceFirst(".test$", "");
+ final InstrumentationInfo info = getInstrumentationInfo(pn);
+ if (info == null) {
+ Toast.makeText(this,
+ "Cannot find instrumentation for " + pn, Toast.LENGTH_SHORT)
+ .show();
+ return;
+ }
+ final ComponentName cn = new ComponentName(info.packageName,
+ info.name);
+ if (startInstrumentation(cn, null, null)) {
+ logCatTask = new LogcatAsyncTask();
+ logCatTask.execute(TIMEOUT);
+ }
+ else {
+ Toast.makeText(this,
+ "Cannot run instrumentation for " + pn, Toast.LENGTH_SHORT)
+ .show();
+ }
+ }
+}
diff --git a/tests/src/cgeo/geocaching/ui/FormatterTest.java b/tests/src/cgeo/geocaching/ui/FormatterTest.java
index e65f425..53aba0f 100644
--- a/tests/src/cgeo/geocaching/ui/FormatterTest.java
+++ b/tests/src/cgeo/geocaching/ui/FormatterTest.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.ui;
import cgeo.geocaching.R;
import cgeo.geocaching.Waypoint;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.enumerations.WaypointType;
import android.test.AndroidTestCase;
@@ -20,7 +20,7 @@ public class FormatterTest extends AndroidTestCase {
public static void testOwnWaypoint() {
final Waypoint own = new Waypoint("my own", WaypointType.OWN, true);
own.setPrefix(Waypoint.PREFIX_OWN);
- assertFormatting(own, cgeoapplication.getInstance().getString(R.string.waypoint_custom));
+ assertFormatting(own, CgeoApplication.getInstance().getString(R.string.waypoint_custom));
}
private static void assertFormatting(Waypoint waypoint, String expected) {
diff --git a/tests/src/cgeo/geocaching/utils/CryptUtilsTest.java b/tests/src/cgeo/geocaching/utils/CryptUtilsTest.java
index e727747..9264d29 100644
--- a/tests/src/cgeo/geocaching/utils/CryptUtilsTest.java
+++ b/tests/src/cgeo/geocaching/utils/CryptUtilsTest.java
@@ -23,4 +23,16 @@ public class CryptUtilsTest extends TestCase {
public static void testIssue1902() {
assertEquals("ƖƖlƖƖƖƖ", CryptUtils.rot13("ƖƖyƖƖƖƖ"));
}
+
+ public static void testSha1() {
+ assertEquals("da39a3ee5e6b4b0d3255bfef95601890afd80709", CryptUtils.sha1(""));
+ // expected value taken from debugger. should assure every developer uses UTF-8
+ assertEquals("cf2f343f59cea81afc0a5a566cb138ba349c548f", CryptUtils.sha1("äöü"));
+ }
+
+ public static void testMd5() {
+ assertEquals("d41d8cd98f00b204e9800998ecf8427e", CryptUtils.md5(""));
+ // expected value taken from debugger. should assure every developer uses UTF-8
+ assertEquals("a7f4e3ec08f09be2ef7ecb4eea5f8981", CryptUtils.md5("äöü"));
+ }
}
diff --git a/tests/src/cgeo/geocaching/utils/UncertainPropertyTest.java b/tests/src/cgeo/geocaching/utils/UncertainPropertyTest.java
new file mode 100644
index 0000000..74aa680
--- /dev/null
+++ b/tests/src/cgeo/geocaching/utils/UncertainPropertyTest.java
@@ -0,0 +1,19 @@
+package cgeo.geocaching.utils;
+
+import junit.framework.TestCase;
+
+public class UncertainPropertyTest extends TestCase {
+
+ public static void testHigherCertaintyWins() throws Exception {
+ final UncertainProperty<String> prop1 = new UncertainProperty<String>("prop1", 10);
+ final UncertainProperty<String> prop2 = new UncertainProperty<String>("prop2", 20);
+ assertEquals(prop2, UncertainProperty.getMergedProperty(prop1, prop2));
+ }
+
+ public static void testAvoidNull() throws Exception {
+ final UncertainProperty<String> prop1 = new UncertainProperty<String>("prop1", 10);
+ final UncertainProperty<String> prop2 = new UncertainProperty<String>(null, 20);
+ assertEquals(prop1, UncertainProperty.getMergedProperty(prop1, prop2));
+ assertEquals(prop1, UncertainProperty.getMergedProperty(prop2, prop1));
+ }
+}
diff --git a/tests/src/cgeo/geocaching/utils/XmlUtilsTest.java b/tests/src/cgeo/geocaching/utils/XmlUtilsTest.java
new file mode 100644
index 0000000..a089ee0
--- /dev/null
+++ b/tests/src/cgeo/geocaching/utils/XmlUtilsTest.java
@@ -0,0 +1,48 @@
+package cgeo.geocaching.utils;
+
+import cgeo.org.kxml2.io.KXmlSerializer;
+
+import org.apache.commons.lang3.CharEncoding;
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.IOException;
+import java.io.StringWriter;
+
+import junit.framework.TestCase;
+
+public class XmlUtilsTest extends TestCase {
+
+ private XmlSerializer xml;
+ private StringWriter stringWriter;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ stringWriter = new StringWriter();
+ xml = new KXmlSerializer();
+ xml.setOutput(stringWriter);
+ xml.startDocument(CharEncoding.UTF_8, null);
+ }
+
+ public void testSimpleText() throws Exception {
+ XmlUtils.simpleText(xml, "", "tag", "text");
+ assertXmlEquals("<tag>text</tag>");
+ }
+
+ public void testSimpleTextWithPrefix() throws Exception {
+ XmlUtils.simpleText(xml, "prefix", "tag", "text");
+ assertXmlEquals("<n0:tag xmlns:n0=\"prefix\">text</n0:tag>");
+ }
+
+ private void assertXmlEquals(final String expected) throws IOException {
+ xml.endDocument();
+ xml.flush();
+ assertEquals("<?xml version='1.0' encoding='UTF-8' ?>" + expected, stringWriter.toString());
+ }
+
+ public void testMultipleTexts() throws Exception {
+ XmlUtils.multipleTexts(xml, "", "tag1", "text1", "tag2", "text2");
+ assertXmlEquals("<tag1>text1</tag1><tag2>text2</tag2>");
+ }
+
+}