aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cgeo-calendar/AndroidManifest.xml2
-rw-r--r--cgeo-calendar/src/cgeo/calendar/CalendarActivity.java42
-rw-r--r--main/.classpath6
-rw-r--r--main/AndroidManifest.xml8
-rw-r--r--main/res/layout-land/coords.xml30
-rw-r--r--main/res/layout/about.xml2
-rw-r--r--main/res/layout/auth.xml6
-rw-r--r--main/res/layout/cacheview_waypoints.xml2
-rw-r--r--main/res/layout/coords.xml30
-rw-r--r--main/res/layout/gpx_export_dialog.xml26
-rw-r--r--main/res/layout/init.xml34
-rw-r--r--main/res/layout/navigate.xml71
-rw-r--r--main/res/layout/point_controls.xml10
-rw-r--r--main/res/layout/search.xml30
-rw-r--r--main/res/layout/touch.xml10
-rw-r--r--main/res/layout/visit.xml14
-rw-r--r--main/res/layout/waypoint_new.xml14
-rw-r--r--main/res/values-cs/strings.xml464
-rw-r--r--main/res/values-de/strings.xml11
-rw-r--r--main/res/values-es/strings.xml2
-rw-r--r--main/res/values-fr/strings.xml6
-rw-r--r--main/res/values-hu/strings.xml2
-rw-r--r--main/res/values-it/strings.xml8
-rw-r--r--main/res/values-ja/strings.xml2
-rw-r--r--main/res/values-nl/strings.xml2
-rw-r--r--main/res/values-pl/strings.xml2
-rw-r--r--main/res/values-pt/strings.xml2
-rw-r--r--main/res/values-sk/strings.xml2
-rw-r--r--main/res/values-sv/strings.xml22
-rw-r--r--main/res/values/colors.xml2
-rw-r--r--main/res/values/strings.xml84
-rw-r--r--main/res/values/styles.xml47
-rw-r--r--main/res/values/themes.xml224
-rw-r--r--main/src/cgeo/calendar/ICalendar.java1
-rw-r--r--main/src/cgeo/geocaching/AbstractPopupActivity.java37
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java126
-rw-r--r--main/src/cgeo/geocaching/DirectionProvider.java14
-rw-r--r--main/src/cgeo/geocaching/GeoDataProvider.java34
-rw-r--r--main/src/cgeo/geocaching/ICache.java4
-rw-r--r--main/src/cgeo/geocaching/LiveMapInfo.java1
-rw-r--r--main/src/cgeo/geocaching/LogEntry.java12
-rw-r--r--main/src/cgeo/geocaching/LogTrackableActivity.java4
-rw-r--r--main/src/cgeo/geocaching/Settings.java21
-rw-r--r--main/src/cgeo/geocaching/SettingsActivity.java12
-rw-r--r--main/src/cgeo/geocaching/StaticMapsActivity.java34
-rw-r--r--main/src/cgeo/geocaching/StaticMapsProvider.java52
-rw-r--r--main/src/cgeo/geocaching/VisitCacheActivity.java7
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java6
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractListActivity.java6
-rw-r--r--main/src/cgeo/geocaching/activity/ActivityMixin.java29
-rw-r--r--main/src/cgeo/geocaching/activity/IAbstractActivity.java2
-rw-r--r--main/src/cgeo/geocaching/activity/Progress.java2
-rw-r--r--main/src/cgeo/geocaching/apps/AbstractApp.java5
-rw-r--r--main/src/cgeo/geocaching/apps/AbstractLocusApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/App.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java15
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java56
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java36
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java17
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java44
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java22
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GeopointNavigationApp.java13
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java37
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java39
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java37
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java110
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java52
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java22
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java15
-rw-r--r--main/src/cgeo/geocaching/backup/CentralBackupAgent.java2
-rw-r--r--main/src/cgeo/geocaching/cgCache.java98
-rw-r--r--main/src/cgeo/geocaching/cgData.java98
-rw-r--r--main/src/cgeo/geocaching/cgWaypoint.java2
-rw-r--r--main/src/cgeo/geocaching/cgeo.java11
-rw-r--r--main/src/cgeo/geocaching/cgeocaches.java247
-rw-r--r--main/src/cgeo/geocaching/cgeoimages.java33
-rw-r--r--main/src/cgeo/geocaching/cgeonavigate.java51
-rw-r--r--main/src/cgeo/geocaching/cgeotrackable.java4
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel11.java2
-rw-r--r--main/src/cgeo/geocaching/compatibility/AndroidLevel8.java2
-rw-r--r--main/src/cgeo/geocaching/compatibility/Compatibility.java16
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConstants.java10
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCMap.java11
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCParser.java66
-rw-r--r--main/src/cgeo/geocaching/connector/gc/Login.java8
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiClient.java2
-rw-r--r--main/src/cgeo/geocaching/enumerations/CacheType.java7
-rw-r--r--main/src/cgeo/geocaching/export/FieldnoteExport.java2
-rw-r--r--main/src/cgeo/geocaching/export/GpxExport.java169
-rw-r--r--main/src/cgeo/geocaching/files/FileList.java20
-rw-r--r--main/src/cgeo/geocaching/files/GPXParser.java45
-rw-r--r--main/src/cgeo/geocaching/filter/FilterUserInterface.java13
-rw-r--r--main/src/cgeo/geocaching/geopoint/HumanDistance.java49
-rw-r--r--main/src/cgeo/geocaching/geopoint/Units.java73
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java131
-rw-r--r--main/src/cgeo/geocaching/maps/MapProviderFactory.java45
-rw-r--r--main/src/cgeo/geocaching/maps/ScaleOverlay.java4
-rw-r--r--main/src/cgeo/geocaching/network/HtmlImage.java6
-rw-r--r--main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java118
-rw-r--r--main/src/cgeo/geocaching/sorting/DateComparator.java17
-rw-r--r--main/src/cgeo/geocaching/sorting/FindsComparator.java11
-rw-r--r--main/src/cgeo/geocaching/sorting/VisitComparator.java2
-rw-r--r--main/src/cgeo/geocaching/ui/AbstractUIFactory.java9
-rw-r--r--main/src/cgeo/geocaching/ui/AddressListAdapter.java4
-rw-r--r--main/src/cgeo/geocaching/ui/CacheDetailsCreator.java4
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java57
-rw-r--r--main/src/cgeo/geocaching/ui/CompassView.java15
-rw-r--r--main/src/cgeo/geocaching/ui/DistanceView.java6
-rw-r--r--main/src/cgeo/geocaching/ui/Formatter.java91
-rw-r--r--main/src/cgeo/geocaching/ui/LoggingUI.java144
-rw-r--r--main/src/cgeo/geocaching/utils/DateUtils.java18
-rw-r--r--main/src/cgeo/geocaching/utils/UnknownTagsHandler.java14
-rw-r--r--tests/.classpath6
-rw-r--r--tests/res/raw/geotoad.gpx199
-rw-r--r--tests/res/raw/own_cache.htm2374
-rw-r--r--tests/src/cgeo/geocaching/cgeoApplicationTest.java2
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java2
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/GCParserTest.java17
-rw-r--r--tests/src/cgeo/geocaching/files/GPXParserTest.java21
-rw-r--r--tests/src/cgeo/geocaching/geopoint/HumanDistanceTest.java41
-rw-r--r--tests/src/cgeo/geocaching/geopoint/UnitsTest.java103
-rw-r--r--tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html99
-rw-r--r--tests/src/cgeo/geocaching/test/mock/GC1ZXX2.java4
-rw-r--r--tests/src/cgeo/geocaching/test/mock/GC2CJPF.html127
-rw-r--r--tests/src/cgeo/geocaching/test/mock/GC2CJPF.java6
-rw-r--r--tests/src/cgeo/geocaching/test/mock/GC2JVEH.html111
-rw-r--r--tests/src/cgeo/geocaching/test/mock/GC2JVEH.java4
-rw-r--r--tests/src/cgeo/geocaching/test/mock/MockedCache.java11
-rw-r--r--tests/src/cgeo/geocaching/utils/MemorySubjectTest.java3
-rw-r--r--tests/src/cgeo/test/Compare.java4
135 files changed, 5142 insertions, 1886 deletions
diff --git a/cgeo-calendar/AndroidManifest.xml b/cgeo-calendar/AndroidManifest.xml
index d187891..cd9da52 100644
--- a/cgeo-calendar/AndroidManifest.xml
+++ b/cgeo-calendar/AndroidManifest.xml
@@ -5,7 +5,7 @@
android:versionCode="1"
android:versionName="1.0" >
- <uses-sdk android:minSdkVersion="4" />
+ <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="8"/>
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
diff --git a/cgeo-calendar/src/cgeo/calendar/CalendarActivity.java b/cgeo-calendar/src/cgeo/calendar/CalendarActivity.java
index 1bcb16e..ed17d4c 100644
--- a/cgeo-calendar/src/cgeo/calendar/CalendarActivity.java
+++ b/cgeo-calendar/src/cgeo/calendar/CalendarActivity.java
@@ -30,6 +30,7 @@ public final class CalendarActivity extends Activity {
private String location;
private String coords;
private Uri uri;
+ private int startTimeMinutes = -1;
/** Called when the activity is first created. */
@Override
@@ -49,6 +50,13 @@ public final class CalendarActivity extends Activity {
name = getParameter(ICalendar.PARAM_NAME);
location = getParameter(ICalendar.PARAM_LOCATION);
coords = getParameter(ICalendar.PARAM_COORDS);
+ final String startTime = getParameter(ICalendar.PARAM_START_TIME_MINUTES);
+ if (startTime.length() > 0) {
+ try {
+ startTimeMinutes = Integer.valueOf(startTime);
+ } catch (NumberFormatException e) {
+ }
+ }
if (name.length() > 0 && hiddenDate.length() > 0) {
if (Compatibility.isLevel14()) {
@@ -147,12 +155,17 @@ public final class CalendarActivity extends Activity {
* @return <code>Date</code> based on hidden date. Time is set to 00:00:00.
*/
private Date parseDate() {
- final Date eventDate = new Date(Long.parseLong(hiddenDate));
- eventDate.setHours(0);
- eventDate.setMinutes(0);
- eventDate.setSeconds(0);
-
- return eventDate;
+ try {
+ final Date eventDate = new Date(Long.parseLong(hiddenDate));
+ eventDate.setHours(0);
+ eventDate.setMinutes(0);
+ eventDate.setSeconds(0);
+
+ return eventDate;
+ } catch (NumberFormatException e) {
+ // cannot happen normally, but static code analysis does not know
+ }
+ return null;
}
/**
@@ -221,8 +234,12 @@ public final class CalendarActivity extends Activity {
// values
final ContentValues event = new ContentValues();
event.put("calendar_id", calendarId);
- event.put("dtstart", eventDate.getTime() + 43200000); // noon
- event.put("dtend", eventDate.getTime() + 43200000 + 3600000); // + one hour
+ if (startTimeMinutes >= 0) {
+ event.put("dtstart", eventDate.getTime() + startTimeMinutes * 60000);
+ }
+ else {
+ event.put("allDay", 1);
+ }
event.put("eventTimezone", "UTC");
event.put("title", Html.fromHtml(name).toString());
event.put("description", description);
@@ -230,7 +247,6 @@ public final class CalendarActivity extends Activity {
if (eventLocation.length() > 0) {
event.put("eventLocation", eventLocation);
}
- event.put("allDay", 1);
event.put("hasAlarm", 0);
getContentResolver().insert(calendarProvider, event);
@@ -261,13 +277,17 @@ public final class CalendarActivity extends Activity {
*/
final Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(Compatibility.getCalendarEventsProviderURI())
- .putExtra("beginTime", eventDate.getTime() + 43200000)
- .putExtra("allDay", true)
.putExtra("title", Html.fromHtml(name).toString())
.putExtra("description", description)
.putExtra("hasAlarm", false)
.putExtra("eventTimezone", "UTC")
.putExtra("eventLocation", eventLocation);
+ if (startTimeMinutes >= 0) {
+ intent.putExtra("beginTime", eventDate.getTime() + startTimeMinutes * 60000);
+ }
+ else {
+ intent.putExtra("allDay", true);
+ }
startActivity(intent);
} catch (Exception e) {
showToast(getResources().getString(R.string.event_fail));
diff --git a/main/.classpath b/main/.classpath
index ef4f094..8a16be1 100644
--- a/main/.classpath
+++ b/main/.classpath
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gen"/>
+ <classpathentry kind="src" path="gen">
+ <attributes>
+ <attribute name="ignore_optional_problems" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry exported="true" kind="lib" path="libs/commons-lang3-3.1.jar"/>
<classpathentry kind="lib" path="libs/locus-api-4.0.jar"/>
<classpathentry kind="lib" path="libs/commons-collections-3.2.1.jar"/>
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml
index bf578d5..a2f0597 100644
--- a/main/AndroidManifest.xml
+++ b/main/AndroidManifest.xml
@@ -56,7 +56,7 @@
<activity
android:name=".CachePopup"
android:label="@string/app_name"
- android:theme="@style/cgeo_transparent"
+ android:theme="@style/popup_dark"
android:windowSoftInputMode="stateHidden"
android:configChanges="keyboardHidden|orientation" >
</activity>
@@ -211,7 +211,7 @@
<activity
android:name=".cgeonavigate"
android:label="@string/app_name_compass"
- android:screenOrientation="nosensor" >
+ android:screenOrientation="portrait">
</activity>
<activity
android:name=".cgeogpxes"
@@ -226,14 +226,14 @@
<activity
android:name=".LiveMapInfo"
android:label="@string/app_name"
- android:theme="@style/cgeo_transparent"
+ android:theme="@style/popup_dark"
android:configChanges="keyboardHidden|orientation" >
</activity>
<provider android:name=".apps.LocusDataStorageProvider"
android:authorities="cgeo.geocaching.apps.locusdatastorageprovider" />
<activity android:name="WaypointPopup"
android:label="@string/app_name"
- android:theme="@style/cgeo_transparent"
+ android:theme="@style/popup_dark"
android:windowSoftInputMode="stateHidden"
android:configChanges="keyboardHidden|orientation" >
</activity>
diff --git a/main/res/layout-land/coords.xml b/main/res/layout-land/coords.xml
index c25a2c0..c2dc9c5 100644
--- a/main/res/layout-land/coords.xml
+++ b/main/res/layout-land/coords.xml
@@ -31,8 +31,8 @@
android:layout_weight="1">
<TableRow android:id="@+id/tableRow1">
<Button android:id="@+id/ButtonLat"
- style="@style/button"/>
- <EditText style="@style/edittext"
+ style="@style/button_full"/>
+ <EditText style="@style/edittext_full"
android:id="@+id/EditTextLatDeg"
android:gravity="right"
android:inputType="number"
@@ -40,63 +40,63 @@
<TextView android:id="@+id/LatSeparator1"
android:text="°" />
<EditText android:id="@+id/EditTextLatMin"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LatSeparator2"
android:text="," />
<EditText android:id="@+id/EditTextLatSec"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LatSeparator3"
android:text="," />
<EditText android:id="@+id/EditTextLatSecFrac"
- style="@style/edittext"
+ style="@style/edittext_full"
android:inputType="number"
android:selectAllOnFocus="true" />
</TableRow>
<TableRow android:id="@+id/tableRow2">
<Button android:id="@+id/ButtonLon"
- style="@style/button"/>
+ style="@style/button_full"/>
<EditText android:id="@+id/EditTextLonDeg"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LonSeparator1"
android:text="°" />
<EditText android:id="@+id/EditTextLonMin"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LonSeparator2"
android:text="," />
<EditText android:id="@+id/EditTextLonSec"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LonSeparator3"
android:text="," />
<EditText android:id="@+id/EditTextLonSecFrac"
- style="@style/edittext"
+ style="@style/edittext_full"
android:inputType="number"
android:selectAllOnFocus="true" />
</TableRow>
</TableLayout>
<EditText
android:id="@+id/latitude"
- style="@style/edittext"
+ style="@style/edittext_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/latitude" />
<EditText
android:id="@+id/longitude"
- style="@style/edittext"
+ style="@style/edittext_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/longitude" />
@@ -104,20 +104,20 @@
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/current"
android:layout_weight="1"
android:text="@string/waypoint_my_coordinates" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/cache"
android:layout_weight="1"
android:text="@string/waypoint_cache_coordinates" />
</LinearLayout>
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/done"
diff --git a/main/res/layout/about.xml b/main/res/layout/about.xml
index 4e64226..fc29654 100644
--- a/main/res/layout/about.xml
+++ b/main/res/layout/about.xml
@@ -81,7 +81,7 @@
android:layout_marginTop="10dip"
android:orientation="horizontal"
android:gravity="center_horizontal" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/donation_more"
android:layout_width="280dip"
android:singleLine="false"
diff --git a/main/res/layout/auth.xml b/main/res/layout/auth.xml
index 51c7d03..d94b08a 100644
--- a/main/res/layout/auth.xml
+++ b/main/res/layout/auth.xml
@@ -64,15 +64,15 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="7dip" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/start"
android:text="@string/auth_authorize" />
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/pin"
android:visibility="gone"
android:inputType="number"
android:hint="@string/auth_pin_hint" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/pin_button"
android:visibility="gone"
android:text="@string/auth_finish" />
diff --git a/main/res/layout/cacheview_waypoints.xml b/main/res/layout/cacheview_waypoints.xml
index 9ce5b57..faf90f5 100644
--- a/main/res/layout/cacheview_waypoints.xml
+++ b/main/res/layout/cacheview_waypoints.xml
@@ -18,7 +18,7 @@
<Button
android:id="@+id/add_waypoint"
- style="@style/button"
+ style="@style/button_full"
android:text="@string/cache_waypoints_add"
android:layout_marginTop="9dp" />
</LinearLayout>
diff --git a/main/res/layout/coords.xml b/main/res/layout/coords.xml
index d673d00..3adcb2a 100644
--- a/main/res/layout/coords.xml
+++ b/main/res/layout/coords.xml
@@ -31,8 +31,8 @@
android:layout_weight="1">
<TableRow android:id="@+id/tableRow1">
<Button android:id="@+id/ButtonLat"
- style="@style/button"/>
- <EditText style="@style/edittext"
+ style="@style/button_full"/>
+ <EditText style="@style/edittext_full"
android:id="@+id/EditTextLatDeg"
android:gravity="right"
android:inputType="number"
@@ -40,75 +40,75 @@
<TextView android:id="@+id/LatSeparator1"
android:text="°" />
<EditText android:id="@+id/EditTextLatMin"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LatSeparator2"
android:text="," />
<EditText android:id="@+id/EditTextLatSec"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LatSeparator3"
android:text="," />
<EditText android:id="@+id/EditTextLatSecFrac"
- style="@style/edittext"
+ style="@style/edittext_full"
android:inputType="number"
android:selectAllOnFocus="true" />
</TableRow>
<TableRow android:id="@+id/tableRow2">
<Button android:id="@+id/ButtonLon"
- style="@style/button"/>
+ style="@style/button_full"/>
<EditText android:id="@+id/EditTextLonDeg"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LonSeparator1"
android:text="°" />
<EditText android:id="@+id/EditTextLonMin"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LonSeparator2"
android:text="," />
<EditText android:id="@+id/EditTextLonSec"
- style="@style/edittext"
+ style="@style/edittext_full"
android:gravity="right"
android:inputType="number"
android:selectAllOnFocus="true" />
<TextView android:id="@+id/LonSeparator3"
android:text="," />
<EditText android:id="@+id/EditTextLonSecFrac"
- style="@style/edittext"
+ style="@style/edittext_full"
android:inputType="number"
android:selectAllOnFocus="true" />
</TableRow>
</TableLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/latitude"
android:hint="@string/latitude" />
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/longitude"
android:hint="@string/longitude" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/current"
android:text="@string/waypoint_my_coordinates" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/cache"
android:text="@string/waypoint_cache_coordinates" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/done"
diff --git a/main/res/layout/gpx_export_dialog.xml b/main/res/layout/gpx_export_dialog.xml
new file mode 100644
index 0000000..86c0862
--- /dev/null
+++ b/main/res/layout/gpx_export_dialog.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:padding="3dip" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/export_gpx_info" />
+
+ <CheckBox
+ android:id="@+id/share"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/init_share_after_export" />
+
+ <Button
+ android:id="@+id/export"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="3dip"
+ android:text="@string/export" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/main/res/layout/init.xml b/main/res/layout/init.xml
index bbcc33f..6708bcc 100644
--- a/main/res/layout/init.xml
+++ b/main/res/layout/init.xml
@@ -43,14 +43,14 @@
android:textColorLink="?text_color_link"
android:linksClickable="true"
android:text="@string/legal_note" />
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/username"
android:hint="@string/init_username" />
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/password"
android:hint="@string/init_password"
android:password="true" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/log_me_in"
android:lines="2"
android:singleLine="false"
@@ -62,7 +62,7 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/init_gcvote" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/passvote"
android:hint="@string/init_passvote"
android:password="true" />
@@ -126,7 +126,7 @@
android:textColorLink="?text_color_link"
android:linksClickable="true"
android:text="@string/about_twitter" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/authorize_twitter"
android:text="@string/init_twitter_authorize" />
<LinearLayout
@@ -157,7 +157,7 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/init_signature" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/signature"
android:hint="@string/init_signature"
android:singleLine="false"
@@ -167,13 +167,13 @@
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/signature_template"
android:layout_width="wrap_content"
android:layout_weight="2"
android:textSize="14dip"
android:text="@string/init_signature_template_button" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/signature_help"
android:layout_width="wrap_content"
android:layout_weight="1"
@@ -651,7 +651,7 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/init_showwaypoints" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/showwaypointsthreshold"
android:singleLine="true"
android:lines="1"
@@ -688,6 +688,7 @@
android:textColor="?text_color"
android:textColorLink="?text_color_link"
android:linksClickable="true"
+ android:autoLink="web"
android:text="@string/init_mapsources_description" />
<Spinner android:id="@+id/mapsource"
android:layout_width="fill_parent"
@@ -698,11 +699,11 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/select_mapfile"
android:text="@string/init_select_mapfile"
android:layout_width="wrap_content" />
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/mapfile"
android:singleLine="true"
android:lines="1"
@@ -715,7 +716,7 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/init_altitude" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/altitude"
android:singleLine="true"
android:lines="1"
@@ -795,7 +796,7 @@
android:textColorLink="?text_color_link"
android:linksClickable="true"
android:text="@string/init_sendToCgeo_name" />
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/webDeviceName"
android:singleLine="true"
android:lines="1"
@@ -814,8 +815,9 @@
android:textColor="?text_color"
android:textColorLink="?text_color_link"
android:linksClickable="true"
+ android:autoLink="web"
android:text="@string/init_sendToCgeo_description" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/sendToCgeo_register"
android:text="@string/init_sendToCgeo_register" />
<!-- ** -->
@@ -843,13 +845,13 @@
android:layout_margin="3dip"
android:orientation="horizontal"
android:padding="3dip" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/backup_backup"
android:layout_width="0dip"
android:layout_weight="1"
android:text="@string/init_backup_backup"
android:onClick="backup" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/backup_restore"
android:layout_width="0dip"
android:layout_weight="1"
diff --git a/main/res/layout/navigate.xml b/main/res/layout/navigate.xml
index 8e98136..94ed7bc 100644
--- a/main/res/layout/navigate.xml
+++ b/main/res/layout/navigate.xml
@@ -17,36 +17,47 @@
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
- <TextView android:id="@+id/destination"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_gravity="center"
- android:textSize="14dip"
- android:textColor="?text_color"/>
- <TextView android:id="@+id/heading"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dip"
- android:layout_marginLeft="3dip"
- android:layout_alignParentTop="true"
- android:layout_alignParentLeft="true"
- android:layout_gravity="left"
- android:textSize="26dip"
- android:textColor="?text_color"
- android:text="@null" />
- <TextView android:id="@+id/distance"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dip"
- android:layout_marginRight="3dip"
- android:layout_alignParentTop="true"
- android:layout_alignParentRight="true"
- android:layout_gravity="right"
- android:textSize="26dip"
- android:textColor="?text_color"
- android:text="@null" />
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+ <TextView android:id="@+id/destination"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:layout_gravity="center"
+ android:textSize="14dip"
+ android:textColor="?text_color"/>
+ <TextView android:id="@+id/cacheinfo"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:layout_gravity="center"
+ android:textSize="14dip"
+ android:textColor="?text_color"/>
+ <RelativeLayout
+ android:layout_width="fill_parent"
+ android:layout_height="30dip" >
+ <TextView android:id="@+id/heading"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="3dip"
+ android:layout_alignParentLeft="true"
+ android:layout_gravity="left"
+ android:textSize="26dip"
+ android:textColor="?text_color"
+ android:text="@null" />
+ <TextView android:id="@+id/distance"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginRight="3dip"
+ android:layout_alignParentRight="true"
+ android:layout_gravity="right"
+ android:textSize="26dip"
+ android:textColor="?text_color"
+ android:text="@null" />
+ </RelativeLayout>
+ </LinearLayout>
<view class="cgeo.geocaching.ui.CompassView"
android:id="@+id/rose"
android:layout_width="fill_parent"
diff --git a/main/res/layout/point_controls.xml b/main/res/layout/point_controls.xml
index 4ec685d..22d05c7 100644
--- a/main/res/layout/point_controls.xml
+++ b/main/res/layout/point_controls.xml
@@ -16,17 +16,17 @@
<Button
android:id="@+id/buttonLatitude"
- style="@style/button"
+ style="@style/button_full"
android:hint="@string/latitude" />
<Button
android:id="@+id/buttonLongitude"
- style="@style/button"
+ style="@style/button_full"
android:hint="@string/longitude" />
<Button
android:id="@+id/current"
- style="@style/button"
+ style="@style/button_full"
android:text="@string/waypoint_my_coordinates" />
<RelativeLayout style="@style/separator_horizontal_layout" >
@@ -40,7 +40,7 @@
<EditText
android:id="@+id/bearing"
- style="@style/edittext"
+ style="@style/edittext_full"
android:hint="@string/waypoint_bearing"
android:inputType="numberDecimal" />
@@ -51,7 +51,7 @@
<EditText
android:id="@+id/distance"
- style="@style/edittext"
+ style="@style/edittext_full"
android:layout_width="0dip"
android:layout_weight="1"
android:hint="@string/waypoint_distance"
diff --git a/main/res/layout/search.xml b/main/res/layout/search.xml
index 82fdac6..09fb886 100644
--- a/main/res/layout/search.xml
+++ b/main/res/layout/search.xml
@@ -30,13 +30,13 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/search_coordinates" />
</RelativeLayout>
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:hint="@string/latitude"
android:id="@+id/buttonLatitude"/>
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:hint="@string/longitude"
android:id="@+id/buttonLongitude"/>
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/search_coordinates"
android:text="@string/search_coordinates_button" />
<!-- ** -->
@@ -45,11 +45,11 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/search_address" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/address"
android:hint="@string/search_address"
android:imeOptions="actionGo" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/search_address"
android:text="@string/search_address_button" />
<!-- ** -->
@@ -58,13 +58,13 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/search_gc" />
</RelativeLayout>
- <AutoCompleteTextView style="@style/edittext"
+ <AutoCompleteTextView style="@style/edittext_full"
android:id="@+id/geocode"
android:hint="@string/search_gc"
android:imeOptions="actionGo"
android:text="GC"
android:inputType="textCapCharacters" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/display_geocode"
android:text="@string/search_gc_button" />
<!-- ** -->
@@ -73,11 +73,11 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/search_kw" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/keyword"
android:hint="@string/search_kw_prefill"
android:imeOptions="actionGo" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/search_keyword"
android:text="@string/search_kw_button" />
<!-- ** -->
@@ -86,11 +86,11 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/search_fbu" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/username"
android:hint="@string/search_fbu_prefill"
android:imeOptions="actionGo" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/search_username"
android:text="@string/search_fbu_button" />
<!-- ** -->
@@ -99,11 +99,11 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/search_hbu" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/owner"
android:hint="@string/search_hbu_prefill"
android:imeOptions="actionGo" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/search_owner"
android:text="@string/search_hbu_button" />
<!-- ** -->
@@ -112,12 +112,12 @@
<TextView style="@style/separator_horizontal_headline"
android:text="@string/search_tb" />
</RelativeLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/trackable"
android:hint="@string/search_tb_hint"
android:imeOptions="actionGo"
android:inputType="textCapCharacters" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/display_trackable"
android:text="@string/search_tb_button" />
</LinearLayout>
diff --git a/main/res/layout/touch.xml b/main/res/layout/touch.xml
index de17c3d..06a9d25 100644
--- a/main/res/layout/touch.xml
+++ b/main/res/layout/touch.xml
@@ -30,20 +30,20 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/type"
android:layout_width="0dip"
android:layout_weight="1"/>
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/date"
android:layout_width="0dip"
android:layout_weight="1"/>
</LinearLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/tracking"
android:inputType="textCapCharacters"
android:hint="@string/trackable_code" />
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/log"
android:hint="@string/log_new_log_text"
android:singleLine="false"
@@ -73,7 +73,7 @@
android:textColor="?text_color"
android:text="@string/visit_tweet" />
</LinearLayout>
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/post"
android:text="@string/log_post" />
</LinearLayout>
diff --git a/main/res/layout/visit.xml b/main/res/layout/visit.xml
index 80a3a5c..8018d48 100644
--- a/main/res/layout/visit.xml
+++ b/main/res/layout/visit.xml
@@ -35,16 +35,16 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/type"
android:layout_width="0dip"
android:layout_weight="1"/>
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/date"
android:layout_width="0dip"
android:layout_weight="1"/>
</LinearLayout>
- <EditText style="@style/edittext"
+ <EditText style="@style/edittext_full"
android:id="@+id/log"
android:hint="@string/log_new_log_text"
android:singleLine="false"
@@ -75,7 +75,7 @@
android:textColor="?text_color"
android:text="@string/visit_tweet" />
</LinearLayout>
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/post"
android:text="@string/log_post" />
<RelativeLayout style="@style/separator_horizontal_layout" >
@@ -87,12 +87,12 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/save"
android:layout_width="0dip"
android:layout_weight="1"
android:text="@string/log_save" />
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/clear"
android:layout_width="0dip"
android:layout_weight="1"
@@ -122,7 +122,7 @@
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="vertical" >
- <Button style="@style/button"
+ <Button style="@style/button_full"
android:id="@+id/changebutton"
android:layout_width="wrap_content"
android:layout_weight="1"
diff --git a/main/res/layout/waypoint_new.xml b/main/res/layout/waypoint_new.xml
index b8237ea..397f0ee 100644
--- a/main/res/layout/waypoint_new.xml
+++ b/main/res/layout/waypoint_new.xml
@@ -37,17 +37,17 @@
<Button
android:id="@+id/buttonLatitude"
- style="@style/button"
+ style="@style/button_full"
android:hint="@string/latitude" />
<Button
android:id="@+id/buttonLongitude"
- style="@style/button"
+ style="@style/button_full"
android:hint="@string/longitude" />
<EditText
android:id="@+id/bearing"
- style="@style/edittext"
+ style="@style/edittext_full"
android:hint="@string/waypoint_bearing"
android:inputType="numberDecimal" />
@@ -58,7 +58,7 @@
<EditText
android:id="@+id/distance"
- style="@style/edittext"
+ style="@style/edittext_full"
android:hint="@string/waypoint_distance"
android:inputType="numberDecimal"
android:layout_width="0dip"
@@ -73,7 +73,7 @@
<AutoCompleteTextView
android:id="@+id/name"
- style="@style/edittext"
+ style="@style/edittext_full"
android:hint="@string/waypoint_name" />
<Spinner
@@ -83,7 +83,7 @@
<EditText
android:id="@+id/note"
- style="@style/edittext"
+ style="@style/edittext_full"
android:layout_height="wrap_content"
android:capitalize="sentences"
android:hint="@string/waypoint_note"
@@ -92,7 +92,7 @@
<Button
android:id="@+id/add_waypoint"
- style="@style/button"
+ style="@style/button_full"
android:text="@string/waypoint_save" />
</LinearLayout>
</ScrollView>
diff --git a/main/res/values-cs/strings.xml b/main/res/values-cs/strings.xml
index 7719014..a253313 100644
--- a/main/res/values-cs/strings.xml
+++ b/main/res/values-cs/strings.xml
@@ -4,11 +4,12 @@
<string name="app_name_compass">c:geo kompas</string>
<!-- basics -->
- <string name="cache">keš</string>
- <string name="detail">detail</string>
+ <string name="cache">Keš</string>
+ <string name="detail">Detail</string>
<string name="search">vyhledávání</string>
- <string name="settings">nastavení</string>
- <string name="about">o aplikaci</string>
+ <string name="settings">Nastavení</string>
+ <string name="helpers">Užitečné aplikace</string>
+ <string name="about">O aplikaci</string>
<string name="helper">Chcete se něco dovědět o <b>c:geo</b>?\nPodívejte se na snadno čitelný manuál.</string>
<string name="latitude">Zeměpisná šířka</string>
<string name="longitude">Zeměpisná délka</string>
@@ -16,25 +17,25 @@
<string name="action_bar_share_title">Sdílet odkaz ke keši</string>
<!-- caches -->
- <string name="all_types">všechny typy keší</string>
- <string name="traditional">tradiční keš</string>
- <string name="multi">multi-keš</string>
- <string name="mystery">neznámá keš</string>
- <string name="letterbox">dopisní schránka</string>
- <string name="event">událost</string>
- <string name="mega">mega-událost</string>
- <string name="earth">earthcache</string>
- <string name="cito">událost cache in trash out</string>
- <string name="webcam">webcam keš</string>
- <string name="virtual">virtuální keš</string>
- <string name="wherigo">wherigo keš</string>
- <string name="lostfound">ztraceno a nalezeno</string>
- <string name="ape">keš projektu ape</string>
- <string name="gchq">ústředí groundspeaku</string>
- <string name="gps">gps cache exhibit</string>
+ <string name="all_types">Všechny typy keší</string>
+ <string name="traditional">Tradiční keš</string>
+ <string name="multi">Multi-keš</string>
+ <string name="mystery">Neznámá keš</string>
+ <string name="letterbox">Dopisní schránka</string>
+ <string name="event">Událost</string>
+ <string name="mega">Mega-událost</string>
+ <string name="earth">Earthcache</string>
+ <string name="cito">Událost cache in trash out</string>
+ <string name="webcam">Webcam keš</string>
+ <string name="virtual">Virtuální keš</string>
+ <string name="wherigo">Wherigo keš</string>
+ <string name="lostfound">Ztraceno a nalezeno</string>
+ <string name="ape">Keš projektu APE</string>
+ <string name="gchq">Ústředí Groundspeaku</string>
+ <string name="gps">Gps cache exhibit</string>
<!-- waypoints -->
- <string name="wp_final">cíl</string>
+ <string name="wp_final">Cíl</string>
<string name="wp_stage">část multi-keše</string>
<string name="wp_puzzle">otázka</string>
<string name="wp_pkg">parkoviště</string>
@@ -42,47 +43,60 @@
<string name="wp_waypoint">referenční bod</string>
<!-- logs -->
- <string name="log_found">nález</string>
- <string name="log_dnf">nenalezeno</string>
- <string name="log_note">poznámka</string>
- <string name="log_published">zveřejněno</string>
- <string name="log_enabled">aktivováno</string>
- <string name="log_disabled">deaktivováno</string>
- <string name="log_attend">zúčastní se</string>
- <string name="log_attended">účastnil se</string>
- <string name="log_retrieved">vytažen z keše</string>
- <string name="log_grabbed">převzat</string>
- <string name="log_maintained">udržována</string>
- <string name="log_maintenance_needed">vyžaduje údržbu</string>
- <string name="log_update">změna souřadnic</string>
- <string name="log_archived">archivace</string>
- <string name="log_needs_archived">vyžaduje archivaci</string>
- <string name="log_discovered">nalezen</string>
- <string name="log_reviewed">poznámka kontroly</string>
- <string name="log_tb_nothing">beze změny</string>
- <string name="log_tb_visit">návštěva</string>
- <string name="log_tb_drop">nechat zde</string>
- <string name="log_tb_changeall">změnit vše</string>
- <string name="log_save">uložit</string>
- <string name="log_saving">ukládání logu</string>
- <string name="log_clear">vyčistit</string>
- <string name="log_post">odeslat log</string>
- <string name="log_post_rate">odeslat log a hlasovat</string>
- <string name="log_post_no_rate">odeslat log a nehlasovat</string>
- <string name="log_add">přidat</string>
- <string name="log_date">datum</string>
- <string name="log_time">čas</string>
- <string name="log_date_time">datum a čas</string>
- <string name="log_rating">hlasovat</string>
- <string name="log_no_rating">nehlasovat</string>
+ <string name="log_found">Nález</string>
+ <string name="log_dnf">Nenalezeno</string>
+ <string name="log_note">Poznámka</string>
+ <string name="log_published">Zveřejněno</string>
+ <string name="log_enabled">Aktivováno</string>
+ <string name="log_disabled">Deaktivováno</string>
+ <string name="log_attend">Zúčastní se</string>
+ <string name="log_attended">Účastnil se</string>
+ <string name="log_retrieved">Vytažen z keše</string>
+ <string name="log_grabbed">Převzat</string>
+ <string name="log_maintained">Udržována</string>
+ <string name="log_maintenance_needed">Vyžaduje údržbu</string>
+ <string name="log_update">Změna souřadnic</string>
+ <string name="log_archived">Archivace</string>
+ <string name="log_needs_archived">Vyžaduje archivaci</string>
+ <string name="log_discovered">Nalezen</string>
+ <string name="log_reviewed">Poznámka kontroly</string>
+ <string name="log_tb_nothing">Beze změny</string>
+ <string name="log_tb_visit">Návštěva</string>
+ <string name="log_tb_drop">Nechat zde</string>
+ <string name="log_tb_changeall">Změnit vše</string>
+ <string name="log_save">Uložit</string>
+ <string name="log_saving">Ukládání logu</string>
+ <string name="log_clear">Vyčistit</string>
+ <string name="log_post">Odeslat log</string>
+ <string name="log_post_rate">Odeslat log a hlasovat</string>
+ <string name="log_post_no_rate">Odeslat log a nehlasovat</string>
+ <string name="log_add">Přidat</string>
+ <string name="log_date">Datum</string>
+ <string name="log_time">Čas</string>
+ <string name="log_date_time">Datum a čas</string>
+ <string name="log_rating">Hlasovat</string>
+ <string name="log_no_rating">Nehlasovat</string>
<string name="log_stars_1">1 hvězdička</string>
+ <string name="log_stars_15">1,5 hvězdičky</string>
<string name="log_stars_2">2 hvězdičky</string>
+ <string name="log_stars_25">2,5 hvězdičky</string>
<string name="log_stars_3">3 hvězdičky</string>
+ <string name="log_stars_35">3,5 hvězdičky</string>
<string name="log_stars_4">4 hvězdičky</string>
+ <string name="log_stars_45">4,5 hvězdičky</string>
<string name="log_stars_5">5 hvězdiček</string>
- <string name="log_webcam">vyfocen webkamerou</string>
+ <string name="log_stars_1_description">Slabá</string>
+ <string name="log_stars_15_description">Docela slabá</string>
+ <string name="log_stars_2_description">Podprůměrná</string>
+ <string name="log_stars_25_description">Není špatná</string>
+ <string name="log_stars_3_description">Obvyklá</string>
+ <string name="log_stars_35_description">Není vůbec špatná</string>
+ <string name="log_stars_4_description">Lepší než obvyklá</string>
+ <string name="log_stars_45_description">Velmi dobrá</string>
+ <string name="log_stars_5_description">Vynikající</string>
+ <string name="log_webcam">Vyfocen webkamerou</string>
<string name="log_new_log">Log</string>
- <string name="log_new_log_text">text logu</string>
+ <string name="log_new_log_text">Text logu</string>
<!-- errors -->
<string name="err_none">ok</string>
@@ -169,62 +183,74 @@
<!-- location service -->
<string name="loc_last">poslední známá</string>
- <string name="loc_net">síť</string>
- <string name="loc_gps">gps</string>
- <string name="loc_sat">sat</string>
- <string name="loc_trying">zjišťuji pozici</string>
- <string name="loc_no_addr">neznámá adresa</string>
+ <string name="loc_net">Síť</string>
+ <string name="loc_gps">GPS</string>
+ <string name="loc_sat">Sat</string>
+ <string name="loc_trying">Zjišťuji pozici</string>
+ <string name="loc_no_addr">Neznámá adresa</string>
<string name="loc_gps_disabled">GPS zakázána</string>
<!-- standard menu -->
- <string name="menu_about">o aplikaci</string>
- <string name="menu_settings">nastavení</string>
+ <string name="menu_about">O aplikaci</string>
+ <string name="menu_helpers">Pomocné programy</string>
+ <string name="menu_settings">Nastavení</string>
<string name="menu_history">Historie</string>
<string name="menu_filter">Filtr</string>
<string name="menu_scan_geo">Naskenuj geokód</string>
<!-- main screen -->
- <string name="live_map_button">aktivní mapa</string>
- <string name="caches_nearby_button">nejbližší</string>
- <string name="advanced_search_button">hledání</string>
- <string name="stored_caches_button">uložené</string>
- <string name="any_button">cíl</string>
+ <string name="live_map_button">Aktivní mapa</string>
+ <string name="caches_nearby_button">Nejbližší</string>
+ <string name="advanced_search_button">Hledání</string>
+ <string name="stored_caches_button">Uložené</string>
+ <string name="any_button">Cíl</string>
<string name="unknown_scan">Nenašel jsem žádný geokód ve skenu.</string>
<!-- caches -->
- <string name="caches_no_cache">žádná keš</string>
- <string name="caches_more_caches">další keše</string>
+ <string name="caches_no_cache">Žádná keš</string>
+ <string name="caches_more_caches">Načíst další keše</string>
<string name="caches_more_caches_no">žádné další keše</string>
- <string name="caches_downloading">stahuji keše…\nETA:</string>
+ <string name="caches_more_caches_loading">Načítám keše…</string>
+ <string name="caches_more_caches_currently">aktuálně</string>
+ <string name="caches_downloading">Stahuji keše…\nETA:</string>
<string name="caches_eta_ltm">méně než minutu</string>
<string name="caches_eta_mins">minuty</string>
<string name="caches_eta_min">minuta</string>
- <string name="caches_store_offline">uložit pro offline</string>
- <string name="caches_store_selected">uložit vybrané</string>
- <string name="caches_on_map">zobrazit na mapě</string>
- <string name="caches_select_mode">mód výběru</string>
- <string name="caches_select_mode_exit">opustit mód výběru</string>
- <string name="caches_nearby">blízké</string>
- <string name="caches_drop_selected">odebrat vybrané</string>
- <string name="caches_drop_selected_ask">Opravdu chcete smazat vybrané keše z přístroje?</string>
- <string name="caches_drop_all">odebrat vše</string>
- <string name="caches_drop_all_ask">Opravdu chcete smazat všechny keše z přístroje?</string>
- <string name="caches_drop_stored">odebrat uložené</string>
- <string name="caches_refresh_selected">aktualizovat vybrané</string>
- <string name="caches_refresh_all">aktualizovat vše</string>
- <string name="caches_sort_name">Jméno</string>
- <string name="caches_sort_gccode">GC-Kód</string>
+ <string name="caches_store_offline">Uložit pro offline</string>
+ <string name="caches_store_selected">Uložit vybrané</string>
+ <string name="caches_history">Historie</string>
+ <string name="caches_on_map">Zobrazit na mapě</string>
+ <string name="caches_sort">Třídit</string>
+ <string name="caches_sort_title">Setřídit dle</string>
+ <string name="caches_sort_distance">Vzdálenosti</string>
+ <string name="caches_sort_difficulty">Obtížnosti</string>
+ <string name="caches_sort_terrain">Terénu</string>
+ <string name="caches_sort_size">Velikosti</string>
+ <string name="caches_sort_favorites">Oblíbenosti</string>
+ <string name="caches_sort_name">Jména</string>
+ <string name="caches_sort_gccode">GC-kódu</string>
<string name="caches_sort_rating">Hodnocení</string>
- <string name="caches_sort_vote">Hlasy (vaše vlastní hodnocení)</string>
- <string name="caches_sort_inventory">Počet položek v inventáři</string>
- <string name="caches_sort_date">Datum</string>
- <string name="caches_sort_finds">Počet nálezů</string>
- <string name="caches_sort_state">Stav</string>
- <string name="caches_sort_storage">Datum uložení do zařízení</string>
+ <string name="caches_sort_vote">Hlasů (vlastní hodnocení)</string>
+ <string name="caches_sort_inventory">Počtu položek v inventáři</string>
+ <string name="caches_sort_date_hidden">Data schování</string>
+ <string name="caches_sort_date_logged">Data zápisu</string>
+ <string name="caches_sort_finds">Počtu nálezů</string>
+ <string name="caches_sort_state">Stavu</string>
+ <string name="caches_sort_storage">Data uložení do zařízení</string>
+ <string name="caches_select_mode">Mód výběru</string>
+ <string name="caches_select_mode_exit">Opustit mód výběru</string>
<string name="caches_select_invert">Invertuj výběr</string>
+ <string name="caches_nearby">Blízké</string>
<string name="caches_manage">Správa</string>
+ <string name="caches_drop_selected">Smazat vybrané</string>
+ <string name="caches_drop_selected_ask">Opravdu chcete smazat vybrané keše z přístroje?</string>
+ <string name="caches_drop_all">Smazat vše</string>
+ <string name="caches_drop_all_ask">Opravdu chcete smazat všechny keše z přístroje?</string>
+ <string name="caches_drop_stored">Smazat uložené</string>
<string name="caches_drop_progress">Mažu keše</string>
<string name="caches_drop_all_and_list">Vymaž všechny a zruš seznam</string>
+ <string name="caches_refresh_selected">Aktualizovat vybrané</string>
+ <string name="caches_refresh_all">Aktualizovat vše</string>
<string name="caches_move_selected">Přesuň vybrané</string>
<string name="caches_move_all">Přesuň všechny</string>
<string name="caches_map_locus">Locus</string>
@@ -259,7 +285,7 @@
<string name="list_dialog_create_ok">Nový seznam byl vytvořen</string>
<string name="list_dialog_create_err">c:geo nemohlo vytvořit nový seznam</string>
<string name="list_dialog_remove_title">Odstranit seznam</string>
- <string name="list_dialog_remove_description">Chceš zrušit aktuální seznam ? Všechny keše budou přesunuty do seznamu \"Uložené\".</string>
+ <string name="list_dialog_remove_description">Chceš zrušit aktuální seznam? Všechny keše budou přesunuty do seznamu \"Uložené\".</string>
<string name="list_dialog_remove">Odstranit</string>
<string name="list_dialog_remove_ok">Seznam byl odstraněn</string>
<string name="list_dialog_remove_err">c:geo nemohlo odstani aktuální seznam</string>
@@ -267,30 +293,31 @@
<string name="list_dialog_rename">Přejmenovat</string>
<!-- about -->
- <string name="about_changelog">změny</string>
- <string name="about_donate">podpora vývoje</string>
- <string name="about_detail">detaily</string>
- <string name="about_donation_more">podpořte\nvývoj</string>
- <string name="about_contributors">přispěvatelé</string>
+ <string name="about_version">Verze</string>
+ <string name="about_changelog">Změny</string>
+ <string name="about_donate">Podpora vývoje</string>
+ <string name="about_detail">Detaily</string>
+ <string name="about_donation_more">Podpořte\nvývoj</string>
+ <string name="about_contributors">Přispěvatelé</string>
<!-- init -->
<string name="init_geocaching">Geocaching.com</string>
<string name="init_gcvote">gcvote.com</string>
<string name="init_go4cache">Go 4 Cache</string>
- <string name="init_twitter">twitter</string>
- <string name="init_username">uživatelské jméno</string>
- <string name="init_password">heslo</string>
- <string name="init_passvote">heslo</string>
- <string name="init_login">zkontrolovat</string>
- <string name="init_login_popup">přihlášení</string>
- <string name="init_login_popup_working">přihlašování na Geocaching.com…</string>
- <string name="init_login_popup_ok">přihlášení proběhlo</string>
- <string name="init_login_popup_failed">přihlášení neproběhlo</string>
- <string name="init_login_popup_failed_reason">přihlášení neproběhlo, protože</string>
- <string name="init_go4cache_connect">připojit k Go 4 Cache</string>
- <string name="init_twitter_authorize">autorizovat c:geo</string>
- <string name="init_twitter_publish">nový status při nálezu keše</string>
- <string name="init_signature">podpis</string>
+ <string name="init_twitter">Twitter</string>
+ <string name="init_username">Uživatelské jméno</string>
+ <string name="init_password">Heslo</string>
+ <string name="init_passvote">Heslo</string>
+ <string name="init_login">Zkontrolovat</string>
+ <string name="init_login_popup">Přihlášení</string>
+ <string name="init_login_popup_working">Přihlašování na Geocaching.com…</string>
+ <string name="init_login_popup_ok">Přihlášení proběhlo</string>
+ <string name="init_login_popup_failed">Přihlášení neproběhlo</string>
+ <string name="init_login_popup_failed_reason">Přihlášení neproběhlo, protože</string>
+ <string name="init_go4cache_connect">Připojit ke Go 4 Cache</string>
+ <string name="init_twitter_authorize">Autorizovat c:geo</string>
+ <string name="init_twitter_publish">Nový status při nálezu keše</string>
+ <string name="init_signature">Podpis</string>
<string name="init_signature_help_button">Návod</string>
<string name="init_signature_help_title">Tipy a triky k podpisu</string>
<string name="init_signature_help_text">Zde vložte svůj podpis k použití při logování.\nSpeciální řetězce, které můžete použít: [DATE] , [TIME], [DATETIME], [USER] a [NUMBER].\nTyto budou nahrazeny v okamžiku vložení podpisu do logu.</string>
@@ -298,7 +325,7 @@
<string name="init_signature_template_date">Datum</string>
<string name="init_signature_template_time">Čas</string>
<string name="init_signature_template_datetime">Datum a čas</string>
- <string name="init_signature_template_user">Uživate</string>
+ <string name="init_signature_template_user">Uživatel</string>
<string name="init_signature_template_number">Číslo (pořadí nálezu)</string>
<string name="init_details">Detaily keše</string>
<string name="init_ratingwanted">Načti hodnocení keše z GCvote.com</string>
@@ -307,31 +334,31 @@
<string name="init_friendlogswanted">Načti extra navíc stránku logbooku s logy kamarádů.</string>
<string name="init_openlastdetailspage">Otevři detaily na naposledy použité stránce.</string>
<string name="init_autoload">Automaticky načti dlouhý popis</string>
- <string name="init_other">další možnosti</string>
- <string name="init_skin">světlý skin (vyžaduje restart)</string>
+ <string name="init_other">Další možnosti</string>
+ <string name="init_skin">Světlý skin (vyžaduje restart)</string>
<string name="init_address">Ukazuj adresu na hlavní obrazovce</string>
<string name="init_captcha">Ukaž CAPTCHA obrázek, pokud je třeba. (jen Basic Member)</string>
- <string name="init_useenglish">Používej angličtinu pro c:geo\n(potřeba restartovat)</string>
- <string name="init_exclude">nezobrazovat vlastní a nalezené keše</string>
+ <string name="init_useenglish">Používej angličtinu pro c:geo (vyžaduje restart)</string>
+ <string name="init_exclude">Nezobrazovat vlastní a nalezené keše</string>
<string name="init_showwaypoints">Zobrazuj waypointy na živé mapě</string>
<string name="init_showwaypoint_description">Pokud je na mapě zobrazeno méně než zadaný počet keší, zobrazují se i jejich waypointy.</string>
- <string name="init_disabled">nezobrazovat zrušené keše</string>
- <string name="init_offline">ukládat mapy pro offline použití</string>
- <string name="init_offline_wp">uklídat statické mapy k waypointům pro offline použití</string>
+ <string name="init_disabled">Nezobrazovat zrušené keše</string>
+ <string name="init_offline">Ukládat mapy pro offline použití</string>
+ <string name="init_offline_wp">Ukládat statické mapy k waypointům pro offline použití</string>
<string name="init_save_log_img">Ulož obrázky z logů</string>
- <string name="init_units">používat imperiální jednotky vzdálenosti</string>
- <string name="init_nav">používat Google Navigaci</string>
+ <string name="init_units">Používat imperiální jednotky vzdálenosti</string>
+ <string name="init_nav">Používat Google Navigaci</string>
<string name="init_log_offline">Offline logování\n(Při logování nezobrazovat online logovací obrazovku a neodesílat log na server)</string>
- <string name="init_livelist">zobrazovat směr v seznamu keší</string>
+ <string name="init_livelist">Zobrazovat směr v seznamu keší</string>
<string name="init_altitude">Výšková korekce</string>
- <string name="init_altitude_description">Pokud Vaše GPS počítá špatně výšku, můžete ji korigovat zde, stačí zadat kladné či záporné číslo v metrech.</string>
+ <string name="init_altitude_description">Pokud Vaše GPS špatně počítá výšku, můžete ji korigovat zde. Stačí zadat kladné či záporné číslo v metrech.</string>
<string name="init_clear">smazat přihlašovací údaje</string>
<string name="init_cleared">c:geo smazalo přihlašovací údaje.</string>
<string name="init_backup">Záloha</string>
- <string name="init_backup_backup">Záloha</string>
+ <string name="init_backup_backup">Zálohovat</string>
<string name="init_backup_running">Vytvářím zálohu databáze keší…</string>
- <string name="init_backup_note">Tato funkce nezálohuje nastavení a přihlašovací údaje. Zálohuje a obnovuje jen databázi keší.\nVaše přihlašovací údaje nikdy neopustí c:geo.</string>
- <string name="init_backup_restore">Obnova</string>
+ <string name="init_backup_note">Tato funkce nezálohuje nastavení a přihlašovací údaje. Zálohuje a obnovuje pouze databázi keší. Vaše přihlašovací údaje nikdy neopustí c:geo.</string>
+ <string name="init_backup_restore">Obnovit</string>
<string name="init_backup_success">Databáze c:geo byla úspěšně zkopírována do souboru</string>
<string name="init_backup_failed">Záloha databáze c:geo selhala.</string>
<string name="init_backup_unnecessary">Databáze je prázná, není třeba jí zálohovat.</string>
@@ -342,7 +369,7 @@
<string name="init_backup_last">Dostupná záloha z</string>
<string name="init_backup_last_no">Žádný soubor se zálohou není k dispozici.</string>
<string name="init_mapsources">Zdroje map</string>
- <string name="init_mapsources_description">Zde můžete vybrat zdroj map. Jako alternativu ke Google maps jsou k dispozici různé typy OpenStreetMap a navíc i offline mapové soubory (Viz <a href="http://code.google.com/p/mapsforge/">http://code.google.com/p/mapsforge/</a> pro detaily).</string>
+ <string name="init_mapsources_description">Zde můžete vybrat zdroj map. Alternativou ke Google maps jsou různé typy OpenStreetMap, jakož i offline mapové podklady (Více viz na <a href="http://code.google.com/p/mapsforge/">http://code.google.com/p/mapsforge/</a>).</string>
<string name="init_mapsource_select">Vyber zdroj mapy</string>
<string name="init_select_mapfile">…</string>
<string name="init_maptrail">Zobrazuj trasu na mapě</string>
@@ -352,14 +379,17 @@
<string name="init_default_navigation_tool">Výchozí navigace</string>
<string name="init_default_navigation_tool_description">Zde můžete vybrat preferovaný navigační nástroj.</string>
<string name="init_default_navigation_tool_select">Vyberte nástroj</string>
- <string name="init_default_navigation_tool_2_description">Zde můžete vybrat druhý přeferovaný navigační prostředek. Ten se aktivuje dlouhým kliknutím na navigační ikonu vedle názvu keše.</string>
+ <string name="init_default_navigation_tool_2_description">Zde můžete vybrat sekundární přeferovaný navigační nástroj. Ten se aktivuje dlouhým kliknutím na navigační ikonu vedle názvu keše.</string>
<string name="init_debug_title">Ladicí informace</string>
- <string name="init_debug_note">c:geo může generovat mnoho ladicích informací. Tyto nejsou pro běžné uživatele uživatečné. Pro vývojáře hledajícího chybu můžou mít tato data význam, v takovém případě váš požádají povolit tuto volbu a po zopakování chyby jim informace zašlete v souboru.</string>
+ <string name="init_debug_note">c:geo může generovat mnoho ladicích informací. Tyto nejsou pro běžné uživatele užitečné. Pro vývojáře hledajícího chybu můžou mít tato data význam, v takovém případě váš požádají povolit tuto volbu a po zopakování chyby jim informace zašlete v souboru.</string>
<string name="init_debug">Generovat ladicí informace</string>
+ <string name="init_dbonsdcard_title">Umístění databáze</string>
+ <string name="init_dbonsdcard_note">Databáze c:geo může být umístěna na SD kartě. Ušetříte tím část interní paměti, avšak za cenu případného snížení rychlosti aplikace. Bez SD karty aplikace nebude následně fungovat.</string>
+ <string name="init_dbonsdcard">Databáze na SD kartě</string>
<string name="init_sendToCgeo_name">Jméno vašeho zařízení:</string>
- <string name="init_sendToCgeo_description"><b>Send2cgeo</b> umožnuje stahování keší pomocí speciálního pluginu pro Firefox a Chrome. Před registrací si přečtěte <a href="http://send2.cgeo.org/">http://send2.cgeo.org/</a>. Registraci proveďte jen, když potřebujete send2cgeo. c:geo bude normálně fungovat i bez registrace.</string>
- <string name="init_sendToCgeo_register">Požádej o registraci</string>
+ <string name="init_sendToCgeo_description"><b>Send2cgeo</b> umožnuje stahování keší pomocí speciálního pluginu pro Firefox a Chrome. Před registrací si přečtěte <a href="http://send2.cgeo.org/">http://send2.cgeo.org/</a>. Registraci proveďte pouze pokud potřebujete send2cgeo. c:geo bude normálně fungovat i bez registrace.</string>
+ <string name="init_sendToCgeo_register">Požádat o registraci</string>
<string name="init_sendToCgeo_registering">Registrace vašeho zařízení pro "Send to c:geo"…</string>
<string name="init_sendToCgeo_register_ok">Registrace byla úspěšná. PIN kód #### použijte na webu c:geo k přidání zařízení do Vašeho prohlížeče.</string>
<string name="init_sendToCgeo_register_fail">Registrace selhala.</string>
@@ -382,15 +412,15 @@
<string name="auth_dialog_completed">c:geo nyní může posílat zprávy na Váš Twitter.</string>
<!-- cache -->
- <string name="cache_count_no">žádná keš</string>
- <string name="cache_count_one">jedna keš</string>
+ <string name="cache_count_no">Žádná keš</string>
+ <string name="cache_count_one">Jedna keš</string>
<string name="cache_count_more">keší</string>
- <string name="cache_offline">offline</string>
- <string name="cache_offline_refresh">obnovit</string>
- <string name="cache_offline_drop">smazat</string>
- <string name="cache_offline_store">uložit</string>
- <string name="cache_offline_stored">uložena v zařízení</string>
- <string name="cache_offline_not_ready">není připravena\npro použití offline</string>
+ <string name="cache_offline">Offline</string>
+ <string name="cache_offline_refresh">Obnovit</string>
+ <string name="cache_offline_drop">Smazat</string>
+ <string name="cache_offline_store">Uložit</string>
+ <string name="cache_offline_stored">Uložena v zařízení</string>
+ <string name="cache_offline_not_ready">Není připravena\npro použití offline</string>
<string name="cache_offline_time_about">přibližně před</string>
<string name="cache_offline_time_mins">minutami</string>
<string name="cache_offline_time_mins_few">několika minutami</string>
@@ -400,14 +430,14 @@
<string name="cache_premium">placený účet</string>
<string name="cache_attributes">atributy</string>
<string name="cache_attributes_no_icons">(obnov cache ke zobrazení atributů)</string>
- <string name="cache_inventory">inventář</string>
+ <string name="cache_inventory">Inventář</string>
<string name="cache_log_offline">offline log</string>
<string name="cache_log_images_loading">Načítám obrázky z logů…</string>
<string name="cache_log_images_title">Obrázky z logů</string>
<string name="cache_log_image_default_title">Fotografie</string>
<string name="cache_personal_note">Osobní poznámka</string>
- <string name="cache_description">popis</string>
- <string name="cache_description_long">dlouhý popis</string>
+ <string name="cache_description">Popis</string>
+ <string name="cache_description_long">Dlouhý popis</string>
<string name="cache_description_table_note">Popis obsahuje tabulkové formátování, které je pravděpodobně nutné prohlížet na geocaching.com, aby bylo správně zobrazené.</string>
<string name="cache_watchlist">Watchlist</string>
<string name="cache_watchlist_on">Tato je ve vašem watchlistu.</string>
@@ -417,34 +447,34 @@
<string name="cache_favpoint_on">Tato keš je jedna z vašich oblíbených.</string>
<string name="cache_favpoint_not_on">Tato keš nepatří mezi vaše oblíbené.</string>
<string name="cache_favpoint_add">Přidat k oblíbeným</string>
- <string name="cache_favpoint_remove">Odstraniz z oblíbených</string>
+ <string name="cache_favpoint_remove">Odstranit z oblíbených</string>
- <string name="cache_waypoints">body trasy</string>
+ <string name="cache_waypoints">Body trasy</string>
<plurals name="waypoints">
<item quantity="one">1 bod trasy</item>
<item quantity="other">%d bodů trasy</item>
</plurals>
- <string name="cache_waypoints_add">přidat bod</string>
+ <string name="cache_waypoints_add">Přidat bod</string>
<string name="cache_hint">nápověda</string>
<string name="cache_logs">logbook</string>
- <string name="cache_dialog_loading_details">načítám detaily keše…</string>
+ <string name="cache_dialog_loading_details">Načítám detaily keše…</string>
<string name="cache_dialog_offline_save_title">offline</string>
<string name="cache_dialog_offline_save_message">Ukládám keš pro použití offline…</string>
<string name="cache_dialog_offline_drop_title">offline</string>
<string name="cache_dialog_offline_drop_message">Odstraňuji keš z paměti zařízení…</string>
- <string name="cache_dialog_refresh_title">aktualizace</string>
+ <string name="cache_dialog_refresh_title">Aktualizace</string>
<string name="cache_dialog_refresh_message">Aktualizuji detaily keše…</string>
- <string name="cache_menu_navigate">navigovat</string>
- <string name="cache_menu_tbt">turn-by-turn</string>
- <string name="cache_menu_radar">radar</string>
- <string name="cache_menu_map">zobrazit na mapě</string>
- <string name="cache_menu_map_ext">zobrazit na jiné mapě</string>
- <string name="cache_menu_map_static">statické mapy</string>
- <string name="cache_menu_browser">otevřít v prohlížečí</string>
+ <string name="cache_menu_navigate">Navigovat</string>
+ <string name="cache_menu_tbt">Turn-by-turn</string>
+ <string name="cache_menu_radar">Radar</string>
+ <string name="cache_menu_map">Zobrazit na mapě</string>
+ <string name="cache_menu_map_ext">Zobrazit na jiné mapě</string>
+ <string name="cache_menu_map_static">Statické mapy</string>
+ <string name="cache_menu_browser">Otevřít v prohlížečí</string>
<string name="cache_menu_visit">zapsat návštěvu</string>
<string name="cache_menu_spoilers">obrázky</string>
- <string name="cache_menu_around">keš v okolí</string>
+ <string name="cache_menu_around">Keš v okolí</string>
<string name="cache_menu_event">přidat do kalendáře</string>
<string name="cache_menu_details">detaily</string>
<string name="cache_status">status</string>
@@ -502,81 +532,81 @@
<!-- waypoint -->
<string name="waypoint_title">Bod trasy</string>
<string name="waypoint_custom">vlastní</string>
- <string name="waypoint_my_coordinates">aktuální poloha</string>
- <string name="waypoint_bearing">směr</string>
- <string name="waypoint_distance">vzdálenost</string>
- <string name="waypoint_name">název</string>
- <string name="waypoint_edit">upravit</string>
- <string name="waypoint_delete">smazat</string>
- <string name="waypoint_edit_title">úprava waypointu</string>
- <string name="waypoint_add_title">nový bod trasy</string>
- <string name="waypoint_note">poznámka</string>
- <string name="waypoint_save">uložit</string>
- <string name="waypoint_loading">načítání bodu trasy…</string>
+ <string name="waypoint_my_coordinates">Aktuální poloha</string>
+ <string name="waypoint_bearing">Směr</string>
+ <string name="waypoint_distance">Vzdálenost</string>
+ <string name="waypoint_name">Název</string>
+ <string name="waypoint_edit">Upravit</string>
+ <string name="waypoint_delete">Smazat</string>
+ <string name="waypoint_edit_title">Úprava waypointu</string>
+ <string name="waypoint_add_title">Nový bod trasy</string>
+ <string name="waypoint_note">Poznámka</string>
+ <string name="waypoint_save">Uložit</string>
+ <string name="waypoint_loading">Načítání bodu trasy…</string>
<!-- visit -->
<string name="visit_tweet">informovat o nálezu na twitteru</string>
<!-- map -->
<string name="map_map">Mapa</string>
- <string name="map_live">aktivní mapa</string>
- <string name="map_view_map">pohled do mapy</string>
- <string name="map_trail_show">zobrazit záznam trasy</string>
- <string name="map_trail_hide">skrýt záznam trasy</string>
- <string name="map_live_enable">povolit aktivní mapu</string>
- <string name="map_live_disable">zakázat aktivní mapu</string>
- <string name="map_static_title">statické mapy</string>
- <string name="map_static_loading">načítání statických map…</string>
+ <string name="map_live">Aktivní mapa</string>
+ <string name="map_view_map">Vybrat typ mapy</string>
+ <string name="map_trail_show">Zobraziy záznam trasy</string>
+ <string name="map_trail_hide">Skrýt záznam trasy</string>
+ <string name="map_live_enable">Povolit aktivní mapu</string>
+ <string name="map_live_disable">Zakázat aktivní mapu</string>
+ <string name="map_static_title">Statické mapy</string>
+ <string name="map_static_loading">Načítání statických map…</string>
<!-- search -->
- <string name="search_coordinates">souřadnice</string>
- <string name="search_coordinates_button">hledat podle souřadnic</string>
- <string name="search_address">adresa</string>
- <string name="search_address_button">hledat podle adresy</string>
- <string name="search_gc">geokód</string>
- <string name="search_gc_button">hledat podle geokódu</string>
- <string name="search_kw">klíčová slova</string>
- <string name="search_kw_prefill">klíčové slovo</string>
- <string name="search_kw_button">hledat podle klíčového slova</string>
- <string name="search_fbu">nalezeno uživatelem</string>
- <string name="search_fbu_prefill">uživatelské jméno</string>
- <string name="search_fbu_button">hledat podle nálezce</string>
- <string name="search_hbu">skryto uživatelem</string>
- <string name="search_hbu_prefill">vlastník</string>
- <string name="search_hbu_button">hledat podle vlastníka</string>
+ <string name="search_coordinates">Souřadnice</string>
+ <string name="search_coordinates_button">Hledat podle souřadnic</string>
+ <string name="search_address">Adresa</string>
+ <string name="search_address_button">Hledat podle adresy</string>
+ <string name="search_gc">Geokód</string>
+ <string name="search_gc_button">Hledat podle geokódu</string>
+ <string name="search_kw">Klíčová slova</string>
+ <string name="search_kw_prefill">Klíčové slovo</string>
+ <string name="search_kw_button">Hledat dle klíčového slova</string>
+ <string name="search_fbu">Nalezeno uživatelem</string>
+ <string name="search_fbu_prefill">Uživatelské jméno</string>
+ <string name="search_fbu_button">Hledat podle nálezce</string>
+ <string name="search_hbu">Skryto uživatelem</string>
+ <string name="search_hbu_prefill">Vlastník</string>
+ <string name="search_hbu_button">Hledat podle vlastníka</string>
<string name="search_tb">Trackable</string>
- <string name="search_tb_hint">identifikace trackable</string>
- <string name="search_tb_button">vyhledávání trackable</string>
- <string name="search_destination">cíl</string>
- <string name="search_direction_rel">od této polohy</string>
+ <string name="search_tb_hint">Identifikace trackable</string>
+ <string name="search_tb_button">Vyhledávání trackable</string>
+ <string name="search_destination">Cíl</string>
+ <string name="search_direction_rel">Od této polohy</string>
<string name="search_address_started">vyhledávání míst</string>
<string name="search_address_result">místa nalezena</string>
<!-- trackable -->
<string name="trackable">Trackable</string>
- <string name="trackable_details_loading">načítání detailů…</string>
- <string name="trackable_log_touch">hlášení zahlédnutí</string>
- <string name="trackable_browser_open">otevřít v prohlížeči</string>
- <string name="trackable_goal">cíl</string>
- <string name="trackable_details">detaily</string>
- <string name="trackable_image">obrázek</string>
+ <string name="trackable_details_loading">Načítání detailů…</string>
+ <string name="trackable_log_touch">Hlášení zahlédnutí</string>
+ <string name="trackable_browser_open">Otevřít v prohlížeči</string>
+ <string name="trackable_goal">Cíl</string>
+ <string name="trackable_details">Detaily</string>
+ <string name="trackable_image">Obrázek</string>
<string name="trackable_code">TB-kód</string>
- <string name="trackable_name">název</string>
- <string name="trackable_type">typ</string>
- <string name="trackable_owner">vlastník</string>
- <string name="trackable_spotted">Spotted</string>
- <string name="trackable_origin">původ</string>
- <string name="trackable_unknown">neznámý</string>
- <string name="trackable_released">vypuštění</string>
- <string name="trackable_touch">dotyk</string>
+ <string name="trackable_name">Název</string>
+ <string name="trackable_type">Typ</string>
+ <string name="trackable_owner">Vlastník</string>
+ <string name="trackable_spotted">Viděn</string>
+ <string name="trackable_origin">Původ</string>
+ <string name="trackable_unknown">Neznámý</string>
+ <string name="trackable_released">Vypuštění</string>
+ <string name="trackable_touch">Dotyk</string>
<!-- navigation -->
- <string name="navigation">navigace</string>
- <string name="compass_title">kompas</string>
- <string name="use_gps">použít GPS</string>
- <string name="use_compass">použít kompas</string>
- <string name="destination_select">vyberte cíl</string>
- <string name="destination_set">cíl nastaven</string>
+ <string name="navigation">Navigace</string>
+ <string name="compass_title">Kompas</string>
+ <string name="use_gps">Použít GPS</string>
+ <string name="use_compass">Použít kompas</string>
+ <string name="destination_select">Vyberte cíl</string>
+ <string name="destination_set">Cíl nastaven</string>
<!-- license -->
<string name="license">Licence</string>
@@ -589,8 +619,8 @@
<string name="website">web: <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="twitter">twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string>
- <string name="about_go4cache">Služba<b>Go 4 cache</b>umožňuje sledovat v reálném čase ostatní kačery na mapě (v <b>c:geo</b>nebo v prohlížeči). Můžete se tak podívat třeba na to, jakou kešku právě hledají. Připojením ke službě <b>Go 4 cache</b>umožníte aplikaci <b>c:geo</b>zveřejňovat Vaši aktuální polohu (pouze pokud <b>c:geo</b>běží).</string>
- <string name="about_twitter">Chcete aby <b>c:geo</b>napsalo na Váš Twitter pokaždé, když zapíšete nález kešky? </string>
- <string name="about_auth_1">Pomocí následujícího procesu můžete aplikaci <b>c:geo</b>umožnit odesílání příspěvků na Váš Twitter. </string>
+ <string name="about_go4cache">Služba <b>Go 4 cache</b> umožňuje sledovat v reálném čase ostatní kačery na mapě (v <b>c:geo</b> nebo v prohlížeči). Můžete se tak podívat třeba na to, jakou kešku právě hledají. Připojením ke službě <b>Go 4 cache</b> umožníte aplikaci <b>c:geo</b> zveřejňovat Vaši aktuální polohu (pouze pokud <b>c:geo</b> běží).</string>
+ <string name="about_twitter">Chcete, aby <b>c:geo</b> napsalo na Váš Twitter pokaždé, když zapíšete nález kešky?</string>
+ <string name="about_auth_1">Pomocí následujícího procesu můžete umožnit <b>c:geo</b> aplikaci odesílání příspěvků na Váš Twitter.</string>
<string name="about_auth_2">Tapnutím na tlačítko "zahájit autorizaci" celý proces začne. Tento proces otevře webovou stránku Twitteru, kde se budete muset přihlásit a tlačítkem Accept pak umožnit aplikaci <b>c:geo</b>přístup k Vašemu Twitteru. Twitter Vám přidělí PIN kód pokud tapnete na Accept. Tento kód zkopírujte a vložte do aplikace <b>c:geo</b>. A potvrďte. To je vše.</string>
</resources>
diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml
index dc727e9..f811f44 100644
--- a/main/res/values-de/strings.xml
+++ b/main/res/values-de/strings.xml
@@ -114,6 +114,8 @@
<string name="log_new_log">Loggen</string>
<string name="log_new_log_text">Log-Text</string>
<string name="log_announcement">Ankündigung</string>
+ <string name="log_today">Heute</string>
+ <string name="log_yesterday">Gestern</string>
<!-- translation -->
<string name="translate_to_sys_lang">Übersetze in %s</string>
@@ -282,7 +284,8 @@
<string name="caches_sort_rating">Bewertung</string>
<string name="caches_sort_vote">Eigene Bewertung</string>
<string name="caches_sort_inventory">Inventaranzahl</string>
- <string name="caches_sort_date">Datum</string>
+ <string name="caches_sort_date_hidden">Versteckdatum</string>
+ <string name="caches_sort_date_logged">Log-Datum</string>
<string name="caches_sort_finds">Funde</string>
<string name="caches_sort_state">Status</string>
<string name="caches_sort_storage">Speicherdatum</string>
@@ -423,6 +426,7 @@
<string name="init_mapsource_select">Kartenquelle wählen</string>
<string name="init_select_mapfile">…</string>
<string name="init_maptrail">Zeige Spur auf Karte</string>
+ <string name="init_share_after_export">Weiterleiten nach dem Export</string>
<string name="init_trackautovisit">Trackables automatisch auf \"besuchen\" setzen</string>
<string name="init_sigautoinsert">Signatur automatisch einfügen</string>
<string name="init_loaddirectionimg">Richtungs-Grafik laden wenn nötig (nur Basic Member)</string>
@@ -594,7 +598,8 @@
<string name="cache_image_open_file">Als Datei öffnen</string>
<string name="cache_image_open_browser">Im Browser öffnen</string>
<string name="cache_share_field">Weiterleiten</string>
-
+ <string name="cache_time_full_hours">Uhr</string>
+
<!-- file list base -->
<string name="file_searching_in">Suche nach Dateien\nin</string>
<string name="file_searching_sdcard_in">Keine Dateien in Standardverzeichnissen gefunden:\n%1$s\n\nDurchsuche komplette SD-Karte:\n</string>
@@ -799,6 +804,8 @@
<string name="export_fieldnotes_onlynew">Nur seit letztem Export</string>
<string name="export_fieldnotes_creating">Erstelle Field Notes…</string>
<string name="export_gpx">GPX</string>
+ <string name="export_gpx_info">GPX-Datei wird nach /sdcard/gpx mit dem aktuellen Datum und Zeit als Dateiname exportiert.</string>
+ <string name="export_gpx_to">Exportierte GPX-Datei senden an</string>
<!-- attribute unknown -->
<string name="attribute_unknown_yes">Unbekannte Attribute vorhanden</string>
diff --git a/main/res/values-es/strings.xml b/main/res/values-es/strings.xml
index bc68aeb..c64468a 100644
--- a/main/res/values-es/strings.xml
+++ b/main/res/values-es/strings.xml
@@ -257,7 +257,7 @@
<string name="caches_sort_rating">valoración</string>
<string name="caches_sort_vote">votar (valoración propia)</string>
<string name="caches_sort_inventory">recuento de inventario</string>
- <string name="caches_sort_date">fecha</string>
+ <string name="caches_sort_date_hidden">fecha</string>
<string name="caches_select_mode">Modo selección</string>
<string name="caches_select_mode_exit">Salir de modo selección</string>
<string name="caches_select_invert">Invertir selección</string>
diff --git a/main/res/values-fr/strings.xml b/main/res/values-fr/strings.xml
index 4b80de1..f18996a 100644
--- a/main/res/values-fr/strings.xml
+++ b/main/res/values-fr/strings.xml
@@ -114,6 +114,8 @@
<string name="log_new_log">Carnet</string>
<string name="log_new_log_text">Message</string>
<string name="log_announcement">Annonce</string>
+ <string name="log_today">Aujourd\'hui</string>
+ <string name="log_yesterday">Hier</string>
<!-- translation -->
<string name="translate_to_sys_lang">Traduire en %s</string>
@@ -232,7 +234,7 @@
<string name="info_storing_static_maps">Sauvegarde des cartes statiques</string>
<!-- location service -->
- <string name="loc_last">Dernière pos. connue</string>
+ <string name="loc_last">Aucun</string>
<string name="loc_net">Réseau</string>
<string name="loc_gps">Gps</string>
<string name="loc_sat">Satellites</string>
@@ -282,7 +284,7 @@
<string name="caches_sort_rating">note</string>
<string name="caches_sort_vote">vote (note perso)</string>
<string name="caches_sort_inventory">nombre d\'objets dans l\'inventaire</string>
- <string name="caches_sort_date">date</string>
+ <string name="caches_sort_date_hidden">date</string>
<string name="caches_sort_finds">trouvées</string>
<string name="caches_sort_state">état</string>
<string name="caches_sort_storage">date de sauvegarde dans l\'appareil</string>
diff --git a/main/res/values-hu/strings.xml b/main/res/values-hu/strings.xml
index a298d15..c86c333 100644
--- a/main/res/values-hu/strings.xml
+++ b/main/res/values-hu/strings.xml
@@ -260,7 +260,7 @@
<string name="caches_sort_rating">osztályzat</string>
<string name="caches_sort_vote">szavazat (saját osztályzat)</string>
<string name="caches_sort_inventory">tárgyak száma</string>
- <string name="caches_sort_date">dátum</string>
+ <string name="caches_sort_date_hidden">dátum</string>
<string name="caches_sort_finds">megtalálások</string>
<string name="caches_sort_state">állapot</string>
<string name="caches_select_mode">Kiválsztó mód</string>
diff --git a/main/res/values-it/strings.xml b/main/res/values-it/strings.xml
index 62594f2..ab256de 100644
--- a/main/res/values-it/strings.xml
+++ b/main/res/values-it/strings.xml
@@ -114,6 +114,8 @@
<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>
<!-- translation -->
<string name="translate_to_sys_lang">Traduci in %s</string>
@@ -282,7 +284,7 @@
<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">Data</string>
+ <string name="caches_sort_date_hidden">Data</string>
<string name="caches_sort_finds">Numero ritrovamenti</string>
<string name="caches_sort_state">Stato</string>
<string name="caches_sort_storage">Data salvataggio</string>
@@ -421,6 +423,7 @@
<string name="init_mapsource_select">Seleziona il tipo di mappa</string>
<string name="init_select_mapfile">…</string>
<string name="init_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_sigautoinsert">Inserisce la firma automaticamente</string>
<string name="init_loaddirectionimg">Carica le immagini di direzione se necessario</string>
@@ -587,6 +590,7 @@
<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>
<!-- file list base -->
<string name="file_searching_in">Ricerca file\nin</string>
@@ -792,6 +796,8 @@
<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 /sdcard/gpx con data ed ora correnti come nome file.</string>
+ <string name="export_gpx_to">Invia il GPX esportato a</string>
<!-- attribute unknown -->
<string name="attribute_unknown_yes">(attributo sconosciuto) permesso</string>
diff --git a/main/res/values-ja/strings.xml b/main/res/values-ja/strings.xml
index e4e6ac5..18248bc 100644
--- a/main/res/values-ja/strings.xml
+++ b/main/res/values-ja/strings.xml
@@ -283,7 +283,7 @@
<string name="caches_sort_rating">評価</string>
<string name="caches_sort_vote">Vote (Own Rating)</string>
<string name="caches_sort_inventory">目録の数</string>
- <string name="caches_sort_date">日付</string>
+ <string name="caches_sort_date_hidden">日付</string>
<string name="caches_sort_finds">Finds</string>
<string name="caches_sort_state">State</string>
<string name="caches_sort_storage">オフライン用に保存した日時</string>
diff --git a/main/res/values-nl/strings.xml b/main/res/values-nl/strings.xml
index fc576ab..34e4774 100644
--- a/main/res/values-nl/strings.xml
+++ b/main/res/values-nl/strings.xml
@@ -278,7 +278,7 @@
<string name="caches_sort_rating">waardering</string>
<string name="caches_sort_vote">stemmen (eigen waardering)</string>
<string name="caches_sort_inventory">aantal items</string>
- <string name="caches_sort_date">datum</string>
+ <string name="caches_sort_date_hidden">datum</string>
<string name="caches_sort_finds">Aantal keer gevonden</string>
<string name="caches_sort_state">staat</string>
<string name="caches_select_mode">Selectie modus</string>
diff --git a/main/res/values-pl/strings.xml b/main/res/values-pl/strings.xml
index 9c91fba..45b6c3d 100644
--- a/main/res/values-pl/strings.xml
+++ b/main/res/values-pl/strings.xml
@@ -254,7 +254,7 @@
<string name="caches_sort_rating">oceny</string>
<string name="caches_sort_vote">głosów (twoja ocena)</string>
<string name="caches_sort_inventory">ilości w inwentarzu</string>
- <string name="caches_sort_date">daty</string>
+ <string name="caches_sort_date_hidden">daty</string>
<string name="caches_select_mode">Tryb wyboru</string>
<string name="caches_select_mode_exit">Wyjście z trybu wyboru</string>
<string name="caches_select_invert">Odwróć zaznaczenie</string>
diff --git a/main/res/values-pt/strings.xml b/main/res/values-pt/strings.xml
index 2262d70..930726e 100644
--- a/main/res/values-pt/strings.xml
+++ b/main/res/values-pt/strings.xml
@@ -273,7 +273,7 @@
<string name="caches_sort_rating">pontuação</string>
<string name="caches_sort_vote">votos (pontuação própria)</string>
<string name="caches_sort_inventory">somatório do inventário</string>
- <string name="caches_sort_date">data</string>
+ <string name="caches_sort_date_hidden">data</string>
<string name="caches_sort_finds">Encontradas</string>
<string name="caches_sort_state">Estado</string>
<string name="caches_select_mode">Modo de selecção</string>
diff --git a/main/res/values-sk/strings.xml b/main/res/values-sk/strings.xml
index c522735..2164c53 100644
--- a/main/res/values-sk/strings.xml
+++ b/main/res/values-sk/strings.xml
@@ -283,7 +283,7 @@
<string name="caches_sort_rating">hodnotenia</string>
<string name="caches_sort_vote">hlasovania (vlastného hodn.)</string>
<string name="caches_sort_inventory">počtu položiek v skrýši</string>
- <string name="caches_sort_date">dátumu</string>
+ <string name="caches_sort_date_hidden">dátumu</string>
<string name="caches_sort_finds">nájdení</string>
<string name="caches_sort_state">stavu</string>
<string name="caches_sort_storage">dátumu uloženia v zariadení</string>
diff --git a/main/res/values-sv/strings.xml b/main/res/values-sv/strings.xml
index 68410e2..37fe1c7 100644
--- a/main/res/values-sv/strings.xml
+++ b/main/res/values-sv/strings.xml
@@ -114,6 +114,8 @@
<string name="log_new_log">Logga</string>
<string name="log_new_log_text">Loggtext</string>
<string name="log_announcement">Kungörelse</string>
+ <string name="log_today">Idag</string>
+ <string name="log_yesterday">Igår</string>
<!-- translation -->
<string name="translate_to_sys_lang">Översätt till %s</string>
@@ -282,7 +284,8 @@
<string name="caches_sort_rating">Betyg (GC-vote)</string>
<string name="caches_sort_vote">Betyg (eget)</string>
<string name="caches_sort_inventory">Antal trackable</string>
- <string name="caches_sort_date">Datum</string>
+ <string name="caches_sort_date_hidden">Datum för utplacering</string>
+ <string name="caches_sort_date_logged">Datum för senaste log</string>
<string name="caches_sort_finds">Antal som hittat</string>
<string name="caches_sort_state">Status</string>
<string name="caches_sort_storage">Tid för sparandet i enheten</string>
@@ -344,6 +347,7 @@
<string name="list_dialog_rename">Byt namn</string>
<!-- about -->
+ <string name="about_version">Version</string>
<string name="about_changelog">Historik</string>
<string name="about_donate">Stöd c:geo</string>
<string name="about_detail">Detaljer</string>
@@ -360,9 +364,9 @@
<string name="init_passvote">Lösenord</string>
<string name="init_login">Testa och spara inloggning</string>
<string name="init_login_popup">Inloggning</string>
- <string name="init_login_popup_working">Testar inloggning mot Geocaching.com…</string>
- <string name="init_login_popup_ok">Inloggning ok.</string>
- <string name="init_login_popup_failed">Inloggning misslyckades.</string>
+ <string name="init_login_popup_working">Testar inloggning mot gc.com…</string>
+ <string name="init_login_popup_ok">Inloggning OK</string>
+ <string name="init_login_popup_failed">Inloggning misslyckades</string>
<string name="init_login_popup_failed_reason">Inloggning misslyckades pga </string>
<string name="init_go4cache_connect">Anslut till Go 4 Cache</string>
<string name="init_twitter_authorize">Inställningar för Twitter</string>
@@ -422,6 +426,7 @@
<string name="init_mapsource_select">Välj kartkälla</string>
<string name="init_select_mapfile">…</string>
<string name="init_maptrail">Visa spår på kartan</string>
+ <string name="init_share_after_export">Visa meny för att dela efter slutförd exportering</string>
<string name="init_trackautovisit">Sätt trackable automatiskt till \"besök\" vid loggning av en cache</string>
<string name="init_sigautoinsert">Infoga signatur automatiskt i loggar</string>
<string name="init_loaddirectionimg">Ladda riktningsbild om det behövs (enbart Basic Member)</string>
@@ -793,6 +798,8 @@
<string name="export_fieldnotes_onlynew">Bara sedan senaste exporteringen</string>
<string name="export_fieldnotes_creating">Skapar Field Notes…</string>
<string name="export_gpx">GPX</string>
+ <string name="export_gpx_info">GPX filen kommer att exporteras till /sdcard/gpx med datum och tid i filnamnet.</string>
+ <string name="export_gpx_to">Skicka exporterad GPX till</string>
<!-- next things -->
<string name="legal_note">För att använda tjänster hos Geocaching.com, måste regler och villkor i <a href="http://www.geocaching.com/about/termsofuse.aspx">Groundspeaks avtal</a> godkännas.</string>
@@ -805,6 +812,13 @@
<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>
+ <!-- status -->
+ <string name="status_new_release">Ny officiell version finns tillgänglig.\nKlicka för att installera.</string>
+ <string name="status_new_nightly">Nytt nattligt bygge finns tillgängligt.\nKlicka för att installera.</string>
+ <string name="status_new_rc">Ny kandidat till officiellt bygge finns tillgängligt.\nKlicka för att installera.</string>
+ <string name="status_geocaching_change">Ändringar som gjorts på geocaching.com har gjort så att c:geo inte fungerar.\nVi jobbar för att lösa problemen, försök igen om en stund.</string>
+ <string name="status_geocaching_livemap">Ändringar som gjorts på geocaching.com har gjort så att Live kartan inte fungerar.\nVi jobbar för att lösa problemen, försök igen om en stund.</string>
+
<!-- go4cache -->
<string name="go4cache_looking_around">Tittar omkring</string>
<string name="go4cache_tweeting">Tweeting</string>
diff --git a/main/res/values/colors.xml b/main/res/values/colors.xml
index 1d965e3..7289bc7 100644
--- a/main/res/values/colors.xml
+++ b/main/res/values/colors.xml
@@ -25,5 +25,5 @@
<color name="link">#FF00C0FF</color>
<color name="button_enabled">#FF000000</color>
<color name="button_disabled">#66000000</color>
-
+ <color name="archived_cache_color">#FFAC0B0B</color>
</resources> \ No newline at end of file
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index d6f141f..6735730 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="app_name">c:geo</string>
<string name="app_name_compass">c:geo compass</string>
@@ -114,6 +114,8 @@
<string name="log_new_log">Log</string>
<string name="log_new_log_text">Log Text</string>
<string name="log_announcement">Announcement</string>
+ <string name="log_today">Today</string>
+ <string name="log_yesterday">Yesterday</string>
<!-- translation -->
<string name="translate_to_sys_lang">Translate to %s</string>
@@ -283,7 +285,8 @@
<string name="caches_sort_rating">Rating</string>
<string name="caches_sort_vote">Vote (Own Rating)</string>
<string name="caches_sort_inventory">Count of Inventory</string>
- <string name="caches_sort_date">Date</string>
+ <string name="caches_sort_date_hidden">Date Hidden</string>
+ <string name="caches_sort_date_logged">Date Logged</string>
<string name="caches_sort_finds">Finds</string>
<string name="caches_sort_state">State</string>
<string name="caches_sort_storage">Date stored on device</string>
@@ -424,6 +427,7 @@
<string name="init_mapsource_select">Select Map Source</string>
<string name="init_select_mapfile">…</string>
<string name="init_maptrail">Show trail on Map</string>
+ <string name="init_share_after_export">Open share menu after GPX export</string>
<string name="init_trackautovisit">Set trackables to \"Visited\" as a default</string>
<string name="init_sigautoinsert">Insert signature automatically</string>
<string name="init_loaddirectionimg">Load direction-image if necessary (only Basic Member)</string>
@@ -604,7 +608,8 @@
<string name="cache_image_open_file">Open as file</string>
<string name="cache_image_open_browser">Open in browser</string>
<string name="cache_share_field">Share</string>
-
+ <string name="cache_time_full_hours">o\'clock</string>
+
<!-- file list base -->
<string name="file_searching_in">Searching for files\nin</string>
<string name="file_searching_sdcard_in">No files found in default folders:\n%1$s\n\nSearching whole SD card for files:\n</string>
@@ -816,13 +821,15 @@
<string name="export_exportedto">exported to</string>
<string name="export_failed">Export failed</string>
<string name="export_fieldnotes">Field Notes</string>
- <string name="export_fieldnotes_info">Field Notes will be exported into /sdcard/field-notes with current date and time as file name.</string>
+ <string name="export_fieldnotes_info">Field Notes will be exported to /sdcard/field-notes with current date and time as file name.</string>
<string name="export_fieldnotes_upload">Upload to geocaching.com</string>
<string name="export_fieldnotes_uploading">Uploading…</string>
<string name="export_fieldnotes_upload_success">Upload to geocaching.com successful</string>
<string name="export_fieldnotes_onlynew">Only since last export</string>
<string name="export_fieldnotes_creating">Creating Field Notes…</string>
<string name="export_gpx">GPX</string>
+ <string name="export_gpx_info">The GPX file will be exported to /sdcard/gpx with current date and time as file name.</string>
+ <string name="export_gpx_to">Send exported GPX to</string>
<!-- attribute unknown -->
<string name="attribute_unknown_yes">Unknown attribute present</string>
@@ -1018,7 +1025,7 @@
· campbeb (code)\n
· Charles (localization FR)\n
· Denny (localization DA)\n
- · Eisbehr (code, open source project leader)\n
+ · Eisbehr (code)\n
· F. Coello (localization ES)\n
· Filipe C. (code)\n
· <a href="http://www.hunterthornsberry.com">Hunter275</a> (tester)\n
@@ -1061,62 +1068,22 @@
<!-- changelog -->
<string name="changelog">\n
- <b>2012.06.28</b>\n\n
- <b>Bugfixing:</b>\n
- · Adaptation to GC.com changes\n
- · Corrected owner name display with special characters\n
- · Speed improvement and battery saving for mapsforge 0.3.0 maps\n\n\n
- <b>2012.06.18</b>\n\n
- <b>Bugfixing:</b>\n
- · Save for offline menu-option is shown again\n
- · Solved login problems experienced by some users\n
- · Stability improvements\n\n\n
- <b>2012.06.06</b>\n\n
- <b>Bugfixing:</b>\n
- · Do not crash when exporting GPX with unknown attribute\n
- · Do not allow dangerous operations on the virtual "all caches" list\n
- · Do not apply filters when searching one specific cache\n
- · Fix some concurrency issues\n\n\n
- <b>2012.06.01</b>\n\n
+ <b>Next release</b>\n\n
<b>New Features/Functions:</b>\n
- · Add/remove cache to/from Favorites\n
- · Export caches as GPX file\n
- · Filter for D/T in lists\n
- · Allow close of popup by click on map\n
- · Support of v0.3.0 mapsforge offline maps\n
- · Sorting of caches by store date\n
- · New popup for waypoints on live map\n
- · On-demand download of static maps\n
- · Upload fieldnotes to geocaching.com\n
- · Optionally move stored data to sd-card\n
- · Display time since last log on TB page\n
- · Popup on live map will give more details for unsaved caches\n
- · View all caches from different lists at once\n
- · Notification to user in case of new version, disturbances and similar occasions\n
+ · Sort by found date in lists\n
+ · Title of archived caches now shown in red\n
+ · Display cache size and D/T-rating in compass\n
\n
<b>Bugfixing:</b>\n
- · Static maps download for waypoints now off by default\n
- · Waypoints on map do no longer disappear when moving map\n
- · Static map download improved\n
- · Distance information in nearby search corrected\n
- · Adaption to changes on geocaching.com\n
- · Warning displayed for incompatible or outdated map files\n
- · No change of font color in selection mode\n
- · List layout optimized for most efficient screen usage\n
- · Watchlist status shown correct\n
- · Faster reaction when opening popup on map\n
- · Hiding of found/owned caches on map corrected\n
- · Show all stored caches on map (limit of 500 caches removed)\n
- · Position marker now shown above cache icons\n
- · Wrong cache size in cache details corrected\n
- · Display coordinates embedded in a log\n
- · Circles on map still shown after orientation change\n
- · Fixed possible crash when starting live map\n
- · Fixed possible crash while using compass\n
- · Less CPU-usage for the compass\n
- · A lot of translation improvements\n
+ · Show as list from live map corrected to display the correct caches\n
+ · GPX import/export compatability improvements\n
+ · Export URLs in GPX export\n
+ · Use last known location on startup\n
+ · Show spoiler images for owned caches\n
+ · Sort file names in GPX import list\n
+ · Corrected owner name display with special characters\n
\n
- <a href="https://github.com/cgeo/c-geo-opensource/issues?milestone=6&amp;state=closed">Detailed list of all changes</a>\n
+ <a href="https://github.com/cgeo/c-geo-opensource/issues?milestone=7&amp;state=closed">Detailed list of all changes</a>\n
\n
<b>Known Limitations/Bugs:</b>\n
· Live map:\n
@@ -1126,8 +1093,7 @@
Fast mode only detectes Tradi, Multi, Mystery, Event caches\n
On low zoom owned/found caches may not be hidden anymore\n
· Other:\n
- Log images with huge size cause a long loading time\n
- Recursively opening several instances of the map can cause a crash\n\n\n
+ Log images with huge size cause a long loading time\n\n\n
<b>Old releases</b>\n
· Please refer to the release notes on the <a href="http://www.cgeo.org">c:geo-website</a>.\n
\n</string>
diff --git a/main/res/values/styles.xml b/main/res/values/styles.xml
index ad3fc8d..394e3d0 100644
--- a/main/res/values/styles.xml
+++ b/main/res/values/styles.xml
@@ -2,7 +2,6 @@
<resources>
<!-- system definitions -->
- <style name="cgeo" parent="android:Theme.NoTitleBar"></style>
<style name="button" parent="@android:style/Widget.Button">
<item name="android:padding">6dip</item>
@@ -13,9 +12,6 @@
<item name="android:textSize">22dip</item>
<item name="android:textColor">?text_color</item>
<item name="android:background">?button</item>
- <item name="android:focusable">true</item>
- <item name="android:clickable">true</item>
- <item name="android:gravity">center</item>
</style>
<style name="edittext" parent="@android:style/Widget.EditText">
@@ -26,7 +22,6 @@
<item name="android:textColor">?text_color</item>
<item name="android:textColorHint">?text_color_hint</item>
<item name="android:background">?input</item>
- <item name="android:focusable">true</item>
<item name="android:gravity">top|left</item>
<item name="android:capitalize">none</item>
</style>
@@ -92,7 +87,7 @@
</style>
<!-- button: full width -->
- <style name="button">
+ <style name="button_full" parent="button">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">10dip</item>
@@ -101,7 +96,7 @@
</style>
<!-- button: small -->
- <style name="button_small">
+ <style name="button_small" parent="button">
<item name="android:layout_width">125dip</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">right</item>
@@ -114,7 +109,7 @@
</style>
<!-- edittext -->
- <style name="edittext">
+ <style name="edittext_full" parent="edittext">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">10dip</item>
@@ -122,7 +117,7 @@
<item name="android:layout_marginBottom">5dip</item>
</style>
- <style name="edittext_dialog">
+ <style name="edittext_dialog" parent="edittext">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginLeft">10dip</item>
@@ -199,11 +194,10 @@
<item name="android:background">@drawable/icon_bcg</item>
</style>
- <style name="location_current_type">
+ <style name="location_current_style">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_alignParentBottom">true</item>
- <item name="android:layout_alignParentRight">true</item>
<item name="android:layout_gravity">right</item>
<item name="android:paddingLeft">3dip</item>
<item name="android:paddingRight">3dip</item>
@@ -215,36 +209,17 @@
<item name="android:textColor">@color/text_dark</item>
</style>
- <style name="location_current_accuracy">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_alignParentBottom">true</item>
+ <style name="location_current_type" parent="location_current_style">
+ <item name="android:layout_alignParentRight">true</item>
+ </style>
+
+ <style name="location_current_accuracy" parent="location_current_style">
<item name="android:layout_centerHorizontal">true</item>
- <item name="android:layout_gravity">right</item>
- <item name="android:paddingLeft">3dip</item>
- <item name="android:paddingRight">3dip</item>
- <item name="android:lines">1</item>
- <item name="android:singleLine">true</item>
- <item name="android:scrollHorizontally">true</item>
- <item name="android:ellipsize">marquee</item>
- <item name="android:textSize">12dip</item>
- <item name="android:textColor">@color/text_dark</item>
</style>
- <style name="location_current_satellites">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_alignParentBottom">true</item>
+ <style name="location_current_satellites" parent="location_current_style">
<item name="android:layout_alignParentLeft">true</item>
<item name="android:layout_gravity">left</item>
- <item name="android:paddingLeft">3dip</item>
- <item name="android:paddingRight">3dip</item>
- <item name="android:lines">1</item>
- <item name="android:singleLine">true</item>
- <item name="android:scrollHorizontally">true</item>
- <item name="android:ellipsize">marquee</item>
- <item name="android:textSize">12dip</item>
- <item name="android:textColor">@color/text_dark</item>
</style>
<!-- separators -->
diff --git a/main/res/values/themes.xml b/main/res/values/themes.xml
index 0c53d29..5c2c861 100644
--- a/main/res/values/themes.xml
+++ b/main/res/values/themes.xml
@@ -1,128 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <style name="cgeo_main" parent="android:Theme.Wallpaper.NoTitleBar">
- <!-- system elements -->
- <item name="android:windowNoTitle">true</item>
- <item name="android:windowContentOverlay">@null</item>
- </style>
-
- <style name="cgeo" parent="android:Theme.NoTitleBar">
- <!-- system elements -->
- <item name="android:buttonStyle">@style/button</item>
- <item name="android:editTextStyle">@style/edittext</item>
- <item name="android:windowContentOverlay">@null</item>
- </style>
-
- <style name="cgeo_transparent" parent="android:Theme.Dialog">
- <!-- system elements -->
- <item name="android:buttonStyle">@style/button</item>
- <item name="android:editTextStyle">@style/edittext</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:windowIsTranslucent">true</item>
- </style>
-
- <style name="dark" parent="cgeo">
- <!-- system values -->
-
- <!-- own values: colors -->
- <item name="just_color">@color/just_black</item>
- <item name="text_color">@color/text_dark</item>
- <item name="text_color_headline">@color/text_headline_dark</item>
- <item name="text_color_grey">@color/text_grey_dark</item>
- <item name="text_color_hint">@color/text_hint_dark</item>
- <item name="text_color_link">@color/link</item>
- <item name="button_color_enabled">@color/button_enabled</item>
- <item name="button_color_disabled">@color/button_disabled</item>
- <item name="background_color">@color/background_dark</item>
- <item name="background_color_notice">@color/background_dark_notice</item>
- <item name="background_color_transparent">@color/background_dark_transparent</item>
- <item name="separator_color">@color/separator_dark</item>
-
- <!-- own values: drawables -->
- <item name="button">@drawable/action_button_dark</item>
- <item name="input">@drawable/input_bcg_dark</item>
- <item name="inventory">@drawable/inventory_background_dark</item>
- <item name="favourite">@drawable/favourite_background_dark</item>
- <item name="favourite_r">@drawable/favourite_background_red_dark</item>
- <item name="favourite_o">@drawable/favourite_background_orange_dark</item>
- <item name="favourite_g">@drawable/favourite_background_green_dark</item>
- <item name="close">@drawable/map_close_dark</item>
+
+ <style name="cgeo_main" parent="android:style/Theme.Wallpaper.NoTitleBar">
+ <!-- system elements -->
+ <item name="android:windowContentOverlay">@null</item>
+ </style>
+
+ <style name="cgeo" parent="android:style/Theme.NoTitleBar">
+ <!-- system elements -->
+ <item name="android:buttonStyle">@style/button</item>
+ <item name="android:editTextStyle">@style/edittext</item>
+ <item name="android:windowContentOverlay">@null</item>
+
+ <!-- own values: colors -->
+ <item name="just_color">@color/just_black</item>
+ <item name="text_color_link">@color/link</item>
+ <item name="button_color_enabled">@color/button_enabled</item>
+ <item name="button_color_disabled">@color/button_disabled</item>
+ </style>
+
+ <style name="dark" parent="cgeo">
+ <!-- system values -->
+
+ <!-- own values: colors -->
+ <item name="text_color">@color/text_dark</item>
+ <item name="text_color_headline">@color/text_headline_dark</item>
+ <item name="text_color_grey">@color/text_grey_dark</item>
+ <item name="text_color_hint">@color/text_hint_dark</item>
+ <item name="background_color">@color/background_dark</item>
+ <item name="background_color_notice">@color/background_dark_notice</item>
+ <item name="background_color_transparent">@color/background_dark_transparent</item>
+ <item name="separator_color">@color/separator_dark</item>
+
+ <!-- own values: drawables -->
+ <item name="button">@drawable/action_button_dark</item>
+ <item name="input">@drawable/input_bcg_dark</item>
+ <item name="inventory">@drawable/inventory_background_dark</item>
+ <item name="favourite">@drawable/favourite_background_dark</item>
+ <item name="favourite_r">@drawable/favourite_background_red_dark</item>
+ <item name="favourite_o">@drawable/favourite_background_orange_dark</item>
+ <item name="favourite_g">@drawable/favourite_background_green_dark</item>
+ <item name="close">@drawable/map_close_dark</item>
<item name="log_img_icon">@drawable/log_img_dark</item>
<item name="actionbar_compass">@drawable/actionbar_compass_dark</item>
-
<item name="progressSpinnerLarge">@android:style/Widget.ProgressBar.Large</item>
- <!-- own values: other -->
- <item name="compass">0</item>
- </style>
-
- <style name="light" parent="cgeo">
- <!-- system values -->
-
- <!-- own values: colors -->
- <item name="just_color">@color/just_black</item>
- <item name="text_color">@color/text_light</item>
- <item name="text_color_headline">@color/text_headline_light</item>
- <item name="text_color_grey">@color/text_grey_light</item>
- <item name="text_color_hint">@color/text_hint_light</item>
- <item name="text_color_link">@color/link</item>
- <item name="button_color_enabled">@color/button_enabled</item>
- <item name="button_color_disabled">@color/button_disabled</item>
- <item name="background_color">@color/background_light</item>
- <item name="background_color_notice">@color/background_light_notice</item>
- <item name="background_color_transparent">@color/background_light_transparent</item>
- <item name="separator_color">@color/separator_light</item>
-
- <!-- own values: drawables -->
- <item name="button">@drawable/action_button_light</item>
- <item name="input">@drawable/input_bcg_light</item>
- <item name="inventory">@drawable/inventory_background_light</item>
- <item name="favourite">@drawable/favourite_background_light</item>
- <item name="favourite_r">@drawable/favourite_background_red_light</item>
- <item name="favourite_o">@drawable/favourite_background_orange_light</item>
- <item name="favourite_g">@drawable/favourite_background_green_light</item>
- <item name="close">@drawable/map_close_light</item>
+ <!-- own values: other -->
+ <item name="compass">0</item>
+ </style>
+
+ <style name="light" parent="cgeo">
+ <!-- system values -->
+
+ <!-- own values: colors -->
+ <item name="text_color">@color/text_light</item>
+ <item name="text_color_headline">@color/text_headline_light</item>
+ <item name="text_color_grey">@color/text_grey_light</item>
+ <item name="text_color_hint">@color/text_hint_light</item>
+ <item name="background_color">@color/background_light</item>
+ <item name="background_color_notice">@color/background_light_notice</item>
+ <item name="background_color_transparent">@color/background_light_transparent</item>
+ <item name="separator_color">@color/separator_light</item>
+
+ <!-- own values: drawables -->
+ <item name="button">@drawable/action_button_light</item>
+ <item name="input">@drawable/input_bcg_light</item>
+ <item name="inventory">@drawable/inventory_background_light</item>
+ <item name="favourite">@drawable/favourite_background_light</item>
+ <item name="favourite_r">@drawable/favourite_background_red_light</item>
+ <item name="favourite_o">@drawable/favourite_background_orange_light</item>
+ <item name="favourite_g">@drawable/favourite_background_green_light</item>
+ <item name="close">@drawable/map_close_light</item>
<item name="log_img_icon">@drawable/log_img_light</item>
<item name="actionbar_compass">@drawable/actionbar_compass_light</item>
-
<item name="progressSpinnerLarge">@android:style/Widget.ProgressBar.Large.Inverse</item>
-
+
<!-- own values: other -->
- <item name="compass">1</item>
- </style>
-
- <style name="transparent" parent="cgeo_transparent">
- <!-- system values -->
-
- <!-- own values: colors -->
- <item name="just_color">@color/just_black</item>
- <item name="text_color">@color/text_dark</item>
- <item name="text_color_headline">@color/text_headline_dark</item>
- <item name="text_color_grey">@color/text_grey_dark</item>
- <item name="text_color_hint">@color/text_hint_dark</item>
- <item name="text_color_link">@color/link</item>
- <item name="button_color_enabled">@color/button_enabled</item>
- <item name="button_color_disabled">@color/button_disabled</item>
- <item name="background_color">@color/background_dark</item>
- <item name="background_color_notice">@color/background_dark_notice</item>
- <item name="background_color_transparent">@color/background_dark_transparent</item>
- <item name="separator_color">@color/separator_dark</item>
-
- <!-- own values: drawables -->
- <item name="button">@drawable/action_button_dark</item>
- <item name="input">@drawable/input_bcg_dark</item>
- <item name="inventory">@drawable/inventory_background_dark</item>
- <item name="favourite">@drawable/favourite_background_dark</item>
- <item name="favourite_r">@drawable/favourite_background_red_dark</item>
- <item name="favourite_o">@drawable/favourite_background_orange_dark</item>
- <item name="favourite_g">@drawable/favourite_background_green_dark</item>
- <item name="close">@drawable/map_close_dark</item>
+ <item name="compass">1</item>
+ </style>
+
+ <style name="cgeo_popup" parent="android:style/Theme.Dialog">
+ <!-- system elements -->
+ <item name="android:buttonStyle">@style/button</item>
+ <item name="android:editTextStyle">@style/edittext</item>
+ <item name="android:windowNoTitle">true</item>
+ </style>
+
+ <!-- TODO: Popup probably doesn't need all these fields set. Should delete unnecessary ones. -->
+ <style name="popup_dark" parent="cgeo_popup">
+ <!-- system values -->
+
+ <!-- own values: colors -->
+ <item name="just_color">@color/just_black</item>
+ <item name="text_color">@color/text_dark</item>
+ <item name="text_color_headline">@color/text_headline_dark</item>
+ <item name="text_color_grey">@color/text_grey_dark</item>
+ <item name="text_color_hint">@color/text_hint_dark</item>
+ <item name="text_color_link">@color/link</item>
+ <item name="button_color_enabled">@color/button_enabled</item>
+ <item name="button_color_disabled">@color/button_disabled</item>
+ <item name="background_color">@color/background_dark</item>
+ <item name="background_color_notice">@color/background_dark_notice</item>
+ <item name="background_color_transparent">@color/background_dark_transparent</item>
+ <item name="separator_color">@color/separator_dark</item>
+
+ <!-- own values: drawables -->
+ <item name="button">@drawable/action_button_dark</item>
+ <item name="input">@drawable/input_bcg_dark</item>
+ <item name="inventory">@drawable/inventory_background_dark</item>
+ <item name="favourite">@drawable/favourite_background_dark</item>
+ <item name="favourite_r">@drawable/favourite_background_red_dark</item>
+ <item name="favourite_o">@drawable/favourite_background_orange_dark</item>
+ <item name="favourite_g">@drawable/favourite_background_green_dark</item>
+ <item name="close">@drawable/map_close_dark</item>
<item name="log_img_icon">@drawable/log_img_dark</item>
<item name="actionbar_compass">@drawable/actionbar_compass_dark</item>
-
<item name="progressSpinnerLarge">@android:style/Widget.ProgressBar.Large</item>
-
+
<!-- own values: other -->
- <item name="compass">0</item>
- </style>
-</resources>
+ <item name="compass">0</item>
+ </style>
+
+</resources> \ No newline at end of file
diff --git a/main/src/cgeo/calendar/ICalendar.java b/main/src/cgeo/calendar/ICalendar.java
index 856de1a..933d248 100644
--- a/main/src/cgeo/calendar/ICalendar.java
+++ b/main/src/cgeo/calendar/ICalendar.java
@@ -15,4 +15,5 @@ public interface ICalendar {
static final String PARAM_NAME = "name"; // cache name
static final String PARAM_LOCATION = "location"; // cache location, or empty string
static final String PARAM_COORDS = "coords"; // cache coords, or empty string
+ static final String PARAM_START_TIME_MINUTES = "time"; // time of start
}
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java
index 588ba2a..a119949 100644
--- a/main/src/cgeo/geocaching/AbstractPopupActivity.java
+++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java
@@ -4,12 +4,12 @@ import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.LoadFlags;
-import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.gcvote.GCVote;
import cgeo.geocaching.gcvote.GCVoteRating;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.geopoint.HumanDistance;
+import cgeo.geocaching.geopoint.Units;
import cgeo.geocaching.ui.CacheDetailsCreator;
+import cgeo.geocaching.ui.LoggingUI;
import cgeo.geocaching.utils.GeoDirHandler;
import cgeo.geocaching.utils.Log;
@@ -64,7 +64,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
protected void updateGeoData(final IGeoData geo) {
try {
if (geo.getCoords() != null && cache != null && cache.getCoords() != null) {
- cacheDistance.setText(HumanDistance.getHumanDistance(geo.getCoords().distanceTo(cache.getCoords())));
+ cacheDistance.setText(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(cache.getCoords())));
cacheDistance.bringToFront();
}
} catch (Exception e) {
@@ -123,15 +123,6 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
geocode = cache.getGeocode().toUpperCase();
}
- private void logOffline(int menuItem) {
- cache.logOffline(this, LogType.getById(menuItem - MENU_LOG_VISIT_OFFLINE));
- }
-
- private void logVisit() {
- cache.logVisit(this);
- finish();
- }
-
private void showInBrowser() {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/seek/cache_details.aspx?wp=" + cache.getGeocode())));
}
@@ -142,7 +133,6 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set layout
- setTheme(R.style.transparent);
setContentView(layout);
setTitle(res.getString(R.string.detail));
@@ -174,7 +164,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_DEFAULT_NAVIGATION, 0, NavigationAppFactory.getDefaultNavigationApplication().getName()).setIcon(R.drawable.ic_menu_compass); // default navigation tool
menu.add(0, MENU_NAVIGATION, 0, res.getString(R.string.cache_menu_navigate)).setIcon(R.drawable.ic_menu_mapmode);
- addVisitMenu(menu, cache);
+ LoggingUI.addMenuItems(menu, cache);
menu.add(0, MENU_CACHES_AROUND, 0, res.getString(R.string.cache_menu_around)).setIcon(R.drawable.ic_menu_rotate); // caches around
menu.add(0, MENU_SHOW_IN_BROWSER, 0, res.getString(R.string.cache_menu_browser)).setIcon(R.drawable.ic_menu_info_details); // browser
@@ -188,21 +178,20 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
switch (menuItem) {
case MENU_DEFAULT_NAVIGATION:
navigateTo();
- break;
+ return true;
case MENU_NAVIGATION:
showNavigationMenu();
- break;
+ return true;
case MENU_CACHES_AROUND:
cachesAround();
- break;
- case MENU_LOG_VISIT:
- logVisit();
- break;
+ return true;
case MENU_SHOW_IN_BROWSER:
showInBrowser();
- break;
- default:
- logOffline(menuItem);
+ return true;
+ }
+
+ if (LoggingUI.onMenuItemSelected(item, this, cache)) {
+ return true;
}
return true;
@@ -224,7 +213,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity {
menu.findItem(MENU_NAVIGATION).setVisible(visible);
menu.findItem(MENU_CACHES_AROUND).setVisible(visible);
- menu.findItem(MENU_LOG_VISIT).setEnabled(Settings.isLogin());
+ LoggingUI.onPrepareOptionsMenu(menu);
} catch (Exception e) {
// nothing
}
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index d9b4e96..93566c2 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -12,15 +12,14 @@ import cgeo.geocaching.enumerations.CacheAttribute;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.enumerations.LogType;
-import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.GeopointFormatter;
-import cgeo.geocaching.geopoint.HumanDistance;
-import cgeo.geocaching.geopoint.IConversion;
+import cgeo.geocaching.geopoint.Units;
import cgeo.geocaching.network.HtmlImage;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.ui.CacheDetailsCreator;
import cgeo.geocaching.ui.DecryptTextClickListener;
import cgeo.geocaching.ui.Formatter;
+import cgeo.geocaching.ui.LoggingUI;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.ClipboardUtils;
@@ -46,7 +45,6 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
@@ -65,6 +63,7 @@ import android.text.Spannable;
import android.text.Spanned;
import android.text.format.DateUtils;
import android.text.method.LinkMovementMethod;
+import android.text.style.ForegroundColorSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.view.ContextMenu;
@@ -139,20 +138,13 @@ public class CacheDetailActivity extends AbstractActivity {
final StringBuilder dist = new StringBuilder();
if (geo.getCoords() != null && cache != null && cache.getCoords() != null) {
- dist.append(HumanDistance.getHumanDistance(geo.getCoords().distanceTo(cache.getCoords())));
+ dist.append(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(cache.getCoords())));
}
if (cache != null && cache.getElevation() != null) {
if (geo.getAltitude() != 0.0) {
- final double diff = cache.getElevation() - geo.getAltitude();
- dist.append(diff >= 0 ? " ↗" : " ↘");
- if (Settings.isUseMetricUnits()) {
- dist.append(Math.abs((int) diff));
- dist.append(" m");
- } else {
- dist.append(Math.abs((int) (diff * IConversion.METERS_TO_FEET)));
- dist.append(" ft");
- }
+ final float diff = (float) (cache.getElevation() - geo.getAltitude());
+ dist.append(' ').append(Units.getElevation(diff));
}
}
@@ -565,7 +557,7 @@ public class CacheDetailActivity extends AbstractActivity {
GeneralAppsFactory.addMenuItems(subMenu, cache);
menu.add(1, MENU_CALENDAR, 0, res.getString(R.string.cache_menu_event)).setIcon(R.drawable.ic_menu_agenda); // add event to calendar
- addVisitMenu(menu, cache);
+ LoggingUI.addMenuItems(menu, cache);
menu.add(0, MENU_CACHES_AROUND, 0, res.getString(R.string.cache_menu_around)).setIcon(R.drawable.ic_menu_rotate); // caches around
menu.add(1, MENU_BROWSER, 0, res.getString(R.string.cache_menu_browser)).setIcon(R.drawable.ic_menu_globe); // browser
menu.add(0, MENU_SHARE, 0, res.getString(R.string.cache_menu_share)).setIcon(R.drawable.ic_menu_share); // share cache
@@ -593,10 +585,6 @@ public class CacheDetailActivity extends AbstractActivity {
case MENU_DEFAULT_NAVIGATION:
startDefaultNavigation();
return true;
- case MENU_LOG_VISIT:
- refreshOnResume = true;
- cache.logVisit(this);
- return true;
case MENU_BROWSER:
cache.openInBrowser(this);
return true;
@@ -619,8 +607,11 @@ public class CacheDetailActivity extends AbstractActivity {
if (GeneralAppsFactory.onMenuItemSelected(item, this, cache)) {
return true;
}
+ if (LoggingUI.onMenuItemSelected(item, this, cache)) {
+ refreshOnResume = true;
+ return true;
+ }
- cache.logOffline(this, LogType.getById(menuItem - MENU_LOG_VISIT_OFFLINE));
return true;
}
@@ -796,7 +787,8 @@ public class CacheDetailActivity extends AbstractActivity {
ICalendar.PARAM_URL, StringUtils.defaultString(cache.getUrl()),
ICalendar.PARAM_COORDS, cache.getCoords() == null ? "" : cache.getCoords().format(GeopointFormatter.Format.LAT_LON_DECMINUTE_RAW),
ICalendar.PARAM_LOCATION, StringUtils.defaultString(cache.getLocation()),
- ICalendar.PARAM_SHORT_DESC, StringUtils.defaultString(cache.getShortDescription())
+ ICalendar.PARAM_SHORT_DESC, StringUtils.defaultString(cache.getShortDescription()),
+ ICalendar.PARAM_START_TIME_MINUTES, StringUtils.defaultString(cache.guessEventTimeMinutes())
);
startActivity(new Intent(ICalendar.INTENT,
@@ -894,8 +886,8 @@ public class CacheDetailActivity extends AbstractActivity {
}
// Use real owner name vice the one owner chose to display
- if (StringUtils.isNotBlank(cache.getOwnerReal())) {
- clickedItemText = cache.getOwnerReal();
+ if (StringUtils.isNotBlank(cache.getOwnerUserId())) {
+ clickedItemText = cache.getOwnerUserId();
} else {
clickedItemText = ((TextView) view).getText().toString();
}
@@ -1344,6 +1336,9 @@ public class CacheDetailActivity extends AbstractActivity {
if (cache.isDisabled() || cache.isArchived()) { // strike
span.setSpan(new StrikethroughSpan(), 0, span.toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
+ if (cache.isArchived()) {
+ span.setSpan(new ForegroundColorSpan(res.getColor(R.color.archived_cache_color)), 0, span.toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
details.add(R.string.cache_name, span);
details.add(R.string.cache_type, cache.getType().getL10n());
@@ -1367,12 +1362,12 @@ public class CacheDetailActivity extends AbstractActivity {
}
// cache author
- if (StringUtils.isNotBlank(cache.getOwner()) || StringUtils.isNotBlank(cache.getOwnerReal())) {
+ if (StringUtils.isNotBlank(cache.getOwnerDisplayName()) || StringUtils.isNotBlank(cache.getOwnerUserId())) {
TextView ownerView = details.add(R.string.cache_owner, "");
- if (StringUtils.isNotBlank(cache.getOwner())) {
- ownerView.setText(cache.getOwner(), TextView.BufferType.SPANNABLE);
+ if (StringUtils.isNotBlank(cache.getOwnerDisplayName())) {
+ ownerView.setText(cache.getOwnerDisplayName(), TextView.BufferType.SPANNABLE);
} else { // OwnerReal guaranteed to be not blank based on above
- ownerView.setText(cache.getOwnerReal(), TextView.BufferType.SPANNABLE);
+ ownerView.setText(cache.getOwnerUserId(), TextView.BufferType.SPANNABLE);
}
ownerView.setOnClickListener(new OwnerActionsClickListener());
}
@@ -1830,7 +1825,7 @@ public class CacheDetailActivity extends AbstractActivity {
}
private Bitmap decode(final cgCache cache) {
- return BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(cache.getGeocode(), "preview", false).getPath());
+ return StaticMapsProvider.getPreviewMap(cache.getGeocode());
}
@Override
@@ -2027,8 +2022,10 @@ public class CacheDetailActivity extends AbstractActivity {
publishProgress();
}
- // if description has HTML table, add a note at the end of the long description
- if (unknownTagsHandler.isTableDetected() && descriptionView == view.findViewById(R.id.longdesc)) {
+ // If description has an HTML construct which may be problematic to render, add a note at the end of the long description.
+ // Technically, it may not be a table, but a pre, which has the same problems as a table, so the message is ok even though
+ // sometimes technically incorrect.
+ if (unknownTagsHandler.isProblematicDetected() && descriptionView == view.findViewById(R.id.longdesc)) {
final int startPos = description.length();
((Editable) description).append("\n\n").append(res.getString(R.string.cache_description_table_note));
((Editable) description).setSpan(new StyleSpan(Typeface.ITALIC), startPos, description.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -2113,43 +2110,33 @@ public class CacheDetailActivity extends AbstractActivity {
view = (ListView) getLayoutInflater().inflate(R.layout.cacheview_logs, null);
// log count
- if (cache.getLogCounts() != null) {
- final StringBuilder text = new StringBuilder(200);
- text.append(res.getString(R.string.cache_log_types));
- text.append(": ");
-
- // sort the log counts by type id ascending. that way the FOUND, DNF log types are the first and most visible ones
- final List<Entry<LogType, Integer>> sortedLogCounts = new ArrayList<Entry<LogType, Integer>>();
- for (Entry<LogType, Integer> entry : cache.getLogCounts().entrySet()) {
- sortedLogCounts.add(entry); // don't add these entries using addAll(), the iterator in the EntrySet can go wrong (see Findbugs)
+ final Map<LogType, Integer> logCounts = cache.getLogCounts();
+ if (logCounts != null) {
+ final List<Entry<LogType, Integer>> sortedLogCounts = new ArrayList<Entry<LogType, Integer>>(logCounts.size());
+ for (Entry<LogType, Integer> entry : logCounts.entrySet()) {
+ // it may happen that the label is unknown -> then avoid any output for this type
+ if (entry.getKey() != LogType.PUBLISH_LISTING && entry.getKey().getL10n() != null) {
+ sortedLogCounts.add(entry);
+ }
}
- Collections.sort(sortedLogCounts, new Comparator<Entry<LogType, Integer>>() {
-
- @Override
- public int compare(Entry<LogType, Integer> logCountItem1, Entry<LogType, Integer> logCountItem2) {
- return logCountItem1.getKey().compareTo(logCountItem2.getKey());
- }
- });
+ if (sortedLogCounts.size() > 0) {
+ // sort the log counts by type id ascending. that way the FOUND, DNF log types are the first and most visible ones
+ Collections.sort(sortedLogCounts, new Comparator<Entry<LogType, Integer>>() {
- boolean showLogCounter = false;
- for (Entry<LogType, Integer> pair : sortedLogCounts) {
- String logTypeLabel = pair.getKey().getL10n();
- // it may happen that the label is unknown -> then avoid any output for this type
- if (logTypeLabel != null && pair.getKey() != LogType.PUBLISH_LISTING) {
- if (showLogCounter) {
- text.append(", ");
+ @Override
+ public int compare(Entry<LogType, Integer> logCountItem1, Entry<LogType, Integer> logCountItem2) {
+ return logCountItem1.getKey().compareTo(logCountItem2.getKey());
}
- text.append(pair.getValue().intValue());
- text.append("× ");
- text.append(logTypeLabel);
+ });
+
+ ArrayList<String> labels = new ArrayList<String>(sortedLogCounts.size());
+ for (Entry<LogType, Integer> pair : sortedLogCounts) {
+ labels.add(pair.getValue() + "× " + pair.getKey().getL10n());
}
- showLogCounter = true;
- }
- if (showLogCounter) {
final TextView countView = new TextView(CacheDetailActivity.this);
- countView.setText(text.toString());
+ countView.setText(res.getString(R.string.cache_log_types) + ": " + StringUtils.join(labels, ", "));
view.addHeaderView(countView, null, false);
}
}
@@ -2317,23 +2304,10 @@ public class CacheDetailActivity extends AbstractActivity {
}
// info
- final List<String> infoTextList = new ArrayList<String>(3);
- if (WaypointType.ALL_TYPES_EXCEPT_OWN.contains(wpt.getWaypointType())) {
- infoTextList.add(wpt.getWaypointType().getL10n());
- }
- if (cgWaypoint.PREFIX_OWN.equalsIgnoreCase(wpt.getPrefix())) {
- infoTextList.add(res.getString(R.string.waypoint_custom));
- } else {
- if (StringUtils.isNotBlank(wpt.getPrefix())) {
- infoTextList.add(wpt.getPrefix());
- }
- if (StringUtils.isNotBlank(wpt.getLookup())) {
- infoTextList.add(wpt.getLookup());
- }
- }
- if (CollectionUtils.isNotEmpty(infoTextList)) {
+ final String waypointInfo = Formatter.formatWaypointInfo(wpt);
+ if (StringUtils.isNotBlank(waypointInfo)) {
final TextView infoView = (TextView) waypointView.findViewById(R.id.info);
- infoView.setText(StringUtils.join(infoTextList, Formatter.SEPARATOR));
+ infoView.setText(waypointInfo);
infoView.setVisibility(View.VISIBLE);
}
diff --git a/main/src/cgeo/geocaching/DirectionProvider.java b/main/src/cgeo/geocaching/DirectionProvider.java
index 7bb940f..14fd283 100644
--- a/main/src/cgeo/geocaching/DirectionProvider.java
+++ b/main/src/cgeo/geocaching/DirectionProvider.java
@@ -14,6 +14,12 @@ public class DirectionProvider extends MemorySubject<Float> implements SensorEve
private final SensorManager sensorManager;
+ // Previous values signalled to observers to avoid resending the same value when the
+ // device doesn't change orientation. The orientation is usually given with a 1 degree
+ // precision by Android, so it is not uncommon to obtain exactly the same value several
+ // times.
+ private float previous = -1;
+
public DirectionProvider(final Context context) {
sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
@@ -46,7 +52,11 @@ public class DirectionProvider extends MemorySubject<Float> implements SensorEve
@Override
public void onSensorChanged(final SensorEvent event) {
- notifyObservers(event.values[0]);
+ final float direction = event.values[0];
+ if (direction != previous) {
+ notifyObservers(direction);
+ previous = direction;
+ }
}
/**
@@ -57,7 +67,7 @@ public class DirectionProvider extends MemorySubject<Float> implements SensorEve
* @return the adjusted direction in degrees, in the [0, 360[ range
*/
public static float getDirectionNow(final Activity activity, final float direction) {
- return Compatibility.getDirectionNow(direction, activity) % 360;
+ return Compatibility.getDirectionNow(direction, activity);
}
}
diff --git a/main/src/cgeo/geocaching/GeoDataProvider.java b/main/src/cgeo/geocaching/GeoDataProvider.java
index 441c871..1b9a0f5 100644
--- a/main/src/cgeo/geocaching/GeoDataProvider.java
+++ b/main/src/cgeo/geocaching/GeoDataProvider.java
@@ -168,11 +168,41 @@ class GeoDataProvider extends MemorySubject<IGeoData> {
GeoDataProvider(final Context context) {
geoManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
unregisterer.start();
- // Start with an empty GeoData just in case someone queries it before we get
+
+ final Location initialLocation = new Location(LAST_LOCATION_PSEUDO_PROVIDER);
+ try {
+ // Try to find a sensible initial location from the last locations known to Android.
+ final Location lastGpsLocation = geoManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ final Location lastNetworkLocation = geoManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+
+ // If both providers are non-null, take the most recent one
+ if (lastGpsLocation != null && lastNetworkLocation != null) {
+ if (lastGpsLocation.getTime() >= lastNetworkLocation.getTime()) {
+ copyCoords(initialLocation, lastGpsLocation);
+ } else {
+ copyCoords(initialLocation, lastNetworkLocation);
+ }
+ } else if (lastGpsLocation != null) {
+ copyCoords(initialLocation, lastGpsLocation);
+ } else if (lastNetworkLocation != null) {
+ copyCoords(initialLocation, lastNetworkLocation);
+ } else {
+ Log.i("GeoDataProvider: no last known location available");
+ }
+ } catch (final Exception e) {
+ // This error is non-fatal as its only consequence is that we will start with a dummy location
+ // instead of a previously known one.
+ Log.e("GeoDataProvider: error when retrieving last known location", e);
+ }
+ // Start with an historical GeoData just in case someone queries it before we get
// a chance to get any information.
- notifyObservers(new GeoData(new Location(LAST_LOCATION_PSEUDO_PROVIDER), false, 0, 0));
+ notifyObservers(new GeoData(initialLocation, false, 0, 0));
}
+ private static void copyCoords(final Location target, final Location source) {
+ target.setLatitude(source.getLatitude());
+ target.setLongitude(source.getLongitude());
+ }
private void registerListeners() {
geoManager.addGpsStatusListener(gpsStatusListener);
diff --git a/main/src/cgeo/geocaching/ICache.java b/main/src/cgeo/geocaching/ICache.java
index a4f5eda..d76bacc 100644
--- a/main/src/cgeo/geocaching/ICache.java
+++ b/main/src/cgeo/geocaching/ICache.java
@@ -17,12 +17,12 @@ public interface ICache extends IBasicCache {
/**
* @return Displayed owner, might differ from the real owner
*/
- public String getOwner();
+ public String getOwnerDisplayName();
/**
* @return GC username of the (actual) owner, might differ from the owner. Never empty.
*/
- public String getOwnerReal();
+ public String getOwnerUserId();
/**
* @return true if the user is the owner of the cache, false else
diff --git a/main/src/cgeo/geocaching/LiveMapInfo.java b/main/src/cgeo/geocaching/LiveMapInfo.java
index 822fbf6..2fee940 100644
--- a/main/src/cgeo/geocaching/LiveMapInfo.java
+++ b/main/src/cgeo/geocaching/LiveMapInfo.java
@@ -13,7 +13,6 @@ public class LiveMapInfo extends AbstractActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setTheme(R.style.transparent);
setContentView(R.layout.livemapinfo);
final int showCount = Settings.getLiveMapHintShowCount();
diff --git a/main/src/cgeo/geocaching/LogEntry.java b/main/src/cgeo/geocaching/LogEntry.java
index 31a9703..e03dc66 100644
--- a/main/src/cgeo/geocaching/LogEntry.java
+++ b/main/src/cgeo/geocaching/LogEntry.java
@@ -1,6 +1,7 @@
package cgeo.geocaching;
import cgeo.geocaching.enumerations.LogType;
+import cgeo.geocaching.utils.DateUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -94,15 +95,6 @@ public final class LogEntry {
}
public int daysSinceLog() {
- final Calendar logDate = Calendar.getInstance();
- logDate.setTimeInMillis(date);
- logDate.set(Calendar.SECOND, 0);
- logDate.set(Calendar.MINUTE, 0);
- logDate.set(Calendar.HOUR, 0);
- final Calendar today = Calendar.getInstance();
- today.set(Calendar.SECOND, 0);
- today.set(Calendar.MINUTE, 0);
- today.set(Calendar.HOUR, 0);
- return (int) Math.round((today.getTimeInMillis() - logDate.getTimeInMillis()) / 86400000d);
+ return DateUtils.daysSince(date);
}
}
diff --git a/main/src/cgeo/geocaching/LogTrackableActivity.java b/main/src/cgeo/geocaching/LogTrackableActivity.java
index 2a0d503..578bd62 100644
--- a/main/src/cgeo/geocaching/LogTrackableActivity.java
+++ b/main/src/cgeo/geocaching/LogTrackableActivity.java
@@ -247,8 +247,8 @@ public class LogTrackableActivity extends AbstractActivity implements DateDialog
});
final Button dateButton = (Button) findViewById(R.id.date);
- dateButton.setText(Formatter.formatShortDate(date.getTime().getTime()));
dateButton.setOnClickListener(new DateListener());
+ setDate(date);
if (tweetBox == null) {
tweetBox = (LinearLayout) findViewById(R.id.tweet_box);
@@ -281,7 +281,7 @@ public class LogTrackableActivity extends AbstractActivity implements DateDialog
date = dateIn;
final Button dateButton = (Button) findViewById(R.id.date);
- dateButton.setText(Formatter.formatShortDate(date.getTime().getTime()));
+ dateButton.setText(Formatter.formatShortDateVerbally(date.getTime().getTime()));
}
public void setType(LogType type) {
diff --git a/main/src/cgeo/geocaching/Settings.java b/main/src/cgeo/geocaching/Settings.java
index 2d86c2f..bbcb80b 100644
--- a/main/src/cgeo/geocaching/Settings.java
+++ b/main/src/cgeo/geocaching/Settings.java
@@ -94,6 +94,7 @@ public final class Settings {
private static final String KEY_SETTINGS_VERSION = "settingsversion";
private static final String KEY_DB_ON_SDCARD = "dbonsdcard";
private static final String KEY_LAST_TRACKABLE_ACTION = "trackableaction";
+ private static final String KEY_SHARE_AFTER_EXPORT = "shareafterexport";
private final static int unitsMetric = 1;
@@ -202,7 +203,7 @@ public final class Settings {
e.putBoolean(KEY_HIDE_LIVE_MAP_HINT, old.getInt(KEY_HIDE_LIVE_MAP_HINT, 0) != 0);
e.putInt(KEY_LIVE_MAP_HINT_SHOW_COUNT, old.getInt(KEY_LIVE_MAP_HINT_SHOW_COUNT, 0));
- e.putInt(KEY_SETTINGS_VERSION, 1) ; // mark migrated
+ e.putInt(KEY_SETTINGS_VERSION, 1); // mark migrated
e.commit();
}
}
@@ -1109,7 +1110,6 @@ public final class Settings {
});
}
-
public static boolean isDebug() {
return Log.isDebug();
}
@@ -1117,7 +1117,8 @@ public final class Settings {
public static void setDebug(final boolean debug) {
editSharedSettings(new PrefRunnable() {
- @Override public void edit(Editor edit) {
+ @Override
+ public void edit(Editor edit) {
edit.putBoolean(KEY_DEBUG, debug);
}
});
@@ -1158,7 +1159,6 @@ public final class Settings {
public static void setDbOnSDCard(final boolean dbOnSDCard) {
editSharedSettings(new PrefRunnable() {
-
@Override
public void edit(Editor edit) {
edit.putBoolean(KEY_DB_ON_SDCARD, dbOnSDCard);
@@ -1166,6 +1166,15 @@ public final class Settings {
});
}
+ public static void setShareAfterExport(final boolean shareAfterExport) {
+ editSharedSettings(new PrefRunnable() {
+ @Override
+ public void edit(Editor edit) {
+ edit.putBoolean(KEY_SHARE_AFTER_EXPORT, shareAfterExport);
+ }
+ });
+ }
+
public static int getTrackableAction() {
return sharedPrefs.getInt(KEY_LAST_TRACKABLE_ACTION, LogType.RETRIEVED_IT.id);
}
@@ -1178,6 +1187,10 @@ public final class Settings {
edit.putInt(KEY_LAST_TRACKABLE_ACTION, trackableAction);
}
});
+ }
+
+ public static boolean getShareAfterExport() {
+ return sharedPrefs.getBoolean(KEY_SHARE_AFTER_EXPORT, true);
}
public static String getPreferencesName() {
diff --git a/main/src/cgeo/geocaching/SettingsActivity.java b/main/src/cgeo/geocaching/SettingsActivity.java
index b87bd73..d70b300 100644
--- a/main/src/cgeo/geocaching/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/SettingsActivity.java
@@ -19,6 +19,7 @@ import cgeo.geocaching.utils.LogTemplateProvider;
import cgeo.geocaching.utils.LogTemplateProvider.LogTemplate;
import ch.boye.httpclientandroidlib.HttpResponse;
+
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -57,6 +58,7 @@ public class SettingsActivity extends AbstractActivity {
private ProgressDialog loginDialog = null;
private ProgressDialog webDialog = null;
+ private boolean enableTemplatesMenu = false;
private Handler logInHandler = new Handler() {
@Override
@@ -115,7 +117,6 @@ public class SettingsActivity extends AbstractActivity {
init();
}
};
- protected boolean enableTemplatesMenu = false;
public SettingsActivity() {
super("c:geo-configuration");
@@ -135,12 +136,6 @@ public class SettingsActivity extends AbstractActivity {
}
@Override
- public void onResume() {
- super.onResume();
-
- }
-
- @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
@@ -594,7 +589,7 @@ public class SettingsActivity extends AbstractActivity {
// Default navigation tool settings
Spinner defaultNavigationToolSelector = (Spinner) findViewById(R.id.default_navigation_tool);
- final List<NavigationAppsEnum> apps = NavigationAppFactory.getInstalledNavigationApps();
+ final List<NavigationAppsEnum> apps = NavigationAppFactory.getInstalledDefaultNavigationApps();
ArrayAdapter<NavigationAppsEnum> naviAdapter = new ArrayAdapter<NavigationAppsEnum>(this, android.R.layout.simple_spinner_item, apps) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
@@ -602,6 +597,7 @@ public class SettingsActivity extends AbstractActivity {
textView.setText(getItem(position).app.getName());
return textView;
}
+
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
diff --git a/main/src/cgeo/geocaching/StaticMapsActivity.java b/main/src/cgeo/geocaching/StaticMapsActivity.java
index a95f4d2..7ddc4e0 100644
--- a/main/src/cgeo/geocaching/StaticMapsActivity.java
+++ b/main/src/cgeo/geocaching/StaticMapsActivity.java
@@ -135,42 +135,28 @@ public class StaticMapsActivity extends AbstractActivity {
factory = new BitmapFactory();
}
- for (int level = 1; level <= 5; level++) {
- try {
- if (waypoint_id != null) {
- final Bitmap image = BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(geocode, "wp" + waypoint_id + "_" + level, false).getPath());
- if (image != null) {
- maps.add(image);
- }
- } else {
- final Bitmap image = BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(geocode, "" + level, false).getPath());
- if (image != null) {
- maps.add(image);
- }
- }
- } catch (Exception e) {
- Log.e("StaticMapsActivity.LoadMapsThread.run.1: " + e.toString());
- }
- }
-
- if (maps.isEmpty()) {
+ // try downloading 2 times
+ for (int trials = 0; trials < 2; trials++) {
for (int level = 1; level <= 5; level++) {
try {
if (waypoint_id != null) {
- final Bitmap image = BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(geocode, "wp" + waypoint_id + "_" + level, false).getPath());
+ final Bitmap image = StaticMapsProvider.getWaypointMap(geocode, waypoint_id, level);
if (image != null) {
maps.add(image);
}
} else {
- final Bitmap image = BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(geocode, "" + level, false).getPath());
+ final Bitmap image = StaticMapsProvider.getCacheMap(geocode, level);
if (image != null) {
maps.add(image);
}
}
} catch (Exception e) {
- Log.e("StaticMapsActivity.LoadMapsThread.run.2: " + e.toString());
+ Log.e("StaticMapsActivity.LoadMapsThread.run: " + e.toString());
}
}
+ if (!maps.isEmpty()) {
+ break;
+ }
}
loadMapsHandler.sendMessage(Message.obtain());
@@ -201,13 +187,13 @@ public class StaticMapsActivity extends AbstractActivity {
if (waypoint_id == null) {
showToast(res.getString(R.string.info_storing_static_maps));
StaticMapsProvider.storeCacheStaticMap(cache, this, true);
- return StaticMapsProvider.doesExistStaticMapForCache(geocode);
+ return StaticMapsProvider.hasStaticMapForCache(geocode);
}
final cgWaypoint waypoint = cache.getWaypointById(waypoint_id);
if (waypoint != null) {
showToast(res.getString(R.string.info_storing_static_maps));
StaticMapsProvider.storeWaypointStaticMap(cache, this, waypoint, true);
- return StaticMapsProvider.doesExistStaticMapForWaypoint(geocode, waypoint_id);
+ return StaticMapsProvider.hasStaticMapForWaypoint(geocode, waypoint_id);
}
showToast(res.getString(R.string.err_detail_not_load_map_static));
return false;
diff --git a/main/src/cgeo/geocaching/StaticMapsProvider.java b/main/src/cgeo/geocaching/StaticMapsProvider.java
index 030efeb..6de1291 100644
--- a/main/src/cgeo/geocaching/StaticMapsProvider.java
+++ b/main/src/cgeo/geocaching/StaticMapsProvider.java
@@ -8,11 +8,14 @@ import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.utils.Log;
import ch.boye.httpclientandroidlib.HttpResponse;
+
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
@@ -21,6 +24,7 @@ import java.io.File;
import java.util.concurrent.TimeUnit;
public class StaticMapsProvider {
+ private static final String PREFIX_PREVIEW = "preview";
private static final String GOOGLE_STATICMAP_URL = "http://maps.google.com/maps/api/staticmap";
private static final String SATELLITE = "satellite";
private static final String ROADMAP = "roadmap";
@@ -32,7 +36,7 @@ public class StaticMapsProvider {
/** ThreadPool restricting this to 1 Thread. **/
private static final BlockingThreadPool pool = new BlockingThreadPool(1, Thread.MIN_PRIORITY);
- public static File getMapFile(final String geocode, String prefix, final boolean createDirs) {
+ private static File getMapFile(final String geocode, String prefix, final boolean createDirs) {
return LocalStorage.getStorageFile(geocode, MAP_FILENAME_PREFIX + prefix, false, createDirs);
}
@@ -48,7 +52,7 @@ public class StaticMapsProvider {
final Parameters params = new Parameters(
"center", latlonMap,
"zoom", String.valueOf(zoom),
- "size", width + "x" + height,
+ "size", String.valueOf(width) + 'x' + String.valueOf(height),
"maptype", mapType,
"markers", "icon:" + markerUrl + '|' + shadow + latlonMap,
"sensor", "false");
@@ -80,7 +84,7 @@ public class StaticMapsProvider {
downloadMaps(cache, display);
}
- public static void downloadMaps(cgCache cache, Display display) {
+ private static void downloadMaps(cgCache cache, Display display) {
if ((!Settings.isStoreOfflineMaps() && !Settings.isStoreOfflineWpMaps()) || StringUtils.isBlank(cache.getGeocode())) {
return;
}
@@ -114,7 +118,7 @@ public class StaticMapsProvider {
String wpLatlonMap = waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA);
String wpMarkerUrl = getWpMarkerUrl(waypoint);
// download map images in separate background thread for higher performance
- downloadMaps(geocode, wpMarkerUrl, WAYPOINT_PREFIX + waypoint.getId() + "_", wpLatlonMap, edge, null, waitForResult);
+ downloadMaps(geocode, wpMarkerUrl, WAYPOINT_PREFIX + waypoint.getId() + '_', wpLatlonMap, edge, null, waitForResult);
}
public static void storeCacheStaticMap(cgCache cache, Activity activity, final boolean waitForResult) {
@@ -130,7 +134,7 @@ public class StaticMapsProvider {
continue;
}
final String wpMarkerUrl = getWpMarkerUrl(waypoint);
- waypoints.put("markers", "icon:" + wpMarkerUrl + "|" + waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA));
+ waypoints.put("markers", "icon:" + wpMarkerUrl + '|' + waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA));
}
// download map images in separate background thread for higher performance
final String cacheMarkerUrl = getCacheMarkerUrl(cache);
@@ -145,7 +149,7 @@ public class StaticMapsProvider {
display.getMetrics(metrics);
final int width = metrics.widthPixels;
final int height = (int) (110 * metrics.density);
- downloadMap(cache.getGeocode(), 15, ROADMAP, markerUrl, "preview", "shadow:false|", latlonMap, width, height, null);
+ downloadMap(cache.getGeocode(), 15, ROADMAP, markerUrl, PREFIX_PREVIEW, "shadow:false|", latlonMap, width, height, null);
}
private static int guessMaxDisplaySide(Display display) {
@@ -182,14 +186,15 @@ public class StaticMapsProvider {
}
private static String getCacheMarkerUrl(final cgCache cache) {
- String type = cache.getType().id;
+ StringBuilder url = new StringBuilder(MARKERS_URL);
+ url.append("marker_cache_").append(cache.getType().id);
if (cache.isFound()) {
- type += "_found";
+ url.append("_found");
} else if (cache.isDisabled()) {
- type += "_disabled";
+ url.append("_disabled");
}
-
- return MARKERS_URL + "marker_cache_" + type + ".png";
+ url.append(".png");
+ return url.toString();
}
private static String getWpMarkerUrl(final cgWaypoint waypoint) {
@@ -198,11 +203,12 @@ public class StaticMapsProvider {
}
public static void removeWpStaticMaps(int wp_id, final String geocode) {
+ if (wp_id <= 0) {
+ return;
+ }
for (int level = 1; level <= 5; level++) {
try {
- if (wp_id > 0) {
- StaticMapsProvider.getMapFile(geocode, WAYPOINT_PREFIX + wp_id + "_" + level, false).delete();
- }
+ StaticMapsProvider.getMapFile(geocode, WAYPOINT_PREFIX + wp_id + '_' + level, false).delete();
} catch (Exception e) {
Log.e("StaticMapsProvider.removeWpStaticMaps: " + e.toString());
}
@@ -215,9 +221,9 @@ public class StaticMapsProvider {
* @param geocode
* @return <code>true</code> if at least one mapfile exists; <code>false</code> otherwise
*/
- public static boolean doesExistStaticMapForCache(String geocode) {
+ public static boolean hasStaticMapForCache(String geocode) {
for (int level = 1; level <= 5; level++) {
- File mapFile = StaticMapsProvider.getMapFile(geocode, "" + level, false);
+ File mapFile = StaticMapsProvider.getMapFile(geocode, String.valueOf(level), false);
if (mapFile != null && mapFile.exists()) {
return true;
}
@@ -232,7 +238,7 @@ public class StaticMapsProvider {
* @param waypointId
* @return <code>true</code> if at least one mapfile exists; <code>false</code> otherwise
*/
- public static boolean doesExistStaticMapForWaypoint(String geocode, int waypointId) {
+ public static boolean hasStaticMapForWaypoint(String geocode, int waypointId) {
for (int level = 1; level <= 5; level++) {
File mapFile = StaticMapsProvider.getMapFile(geocode, WAYPOINT_PREFIX + waypointId + "_" + level, false);
if (mapFile != null && mapFile.exists()) {
@@ -241,4 +247,16 @@ public class StaticMapsProvider {
}
return false;
}
+
+ public static Bitmap getPreviewMap(final String geocode) {
+ return BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(geocode, PREFIX_PREVIEW, false).getPath());
+ }
+
+ public static Bitmap getWaypointMap(final String geocode, int waypoint_id, int level) {
+ return BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(geocode, WAYPOINT_PREFIX + waypoint_id + "_" + level, false).getPath());
+ }
+
+ public static Bitmap getCacheMap(final String geocode, int level) {
+ return BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(geocode, String.valueOf(level), false).getPath());
+ }
}
diff --git a/main/src/cgeo/geocaching/VisitCacheActivity.java b/main/src/cgeo/geocaching/VisitCacheActivity.java
index c211157..e5410e7 100644
--- a/main/src/cgeo/geocaching/VisitCacheActivity.java
+++ b/main/src/cgeo/geocaching/VisitCacheActivity.java
@@ -510,7 +510,7 @@ public class VisitCacheActivity extends AbstractActivity implements DateDialog.D
});
final Button dateButton = (Button) findViewById(R.id.date);
- dateButton.setText(Formatter.formatShortDate(date.getTime().getTime()));
+ setDate(date);
dateButton.setOnClickListener(new DateListener());
final EditText logView = (EditText) findViewById(R.id.log);
@@ -548,7 +548,7 @@ public class VisitCacheActivity extends AbstractActivity implements DateDialog.D
date = dateIn;
final Button dateButton = (Button) findViewById(R.id.date);
- dateButton.setText(Formatter.formatShortDate(date.getTime().getTime()));
+ dateButton.setText(Formatter.formatShortDateVerbally(date.getTime().getTime()));
}
public void setType(LogType type) {
@@ -602,6 +602,7 @@ public class VisitCacheActivity extends AbstractActivity implements DateDialog.D
@Override
public void onClick(View arg0) {
+ //TODO: unify this method and the code in init()
app.clearLogOffline(geocode);
if (alreadyFound) {
@@ -615,8 +616,8 @@ public class VisitCacheActivity extends AbstractActivity implements DateDialog.D
setType(typeSelected);
final Button dateButton = (Button) findViewById(R.id.date);
- dateButton.setText(Formatter.formatShortDate(date.getTime().getTime()));
dateButton.setOnClickListener(new DateListener());
+ setDate(date);
final EditText logView = (EditText) findViewById(R.id.log);
logView.setText("");
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java
index 5a90238..a648486 100644
--- a/main/src/cgeo/geocaching/activity/AbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java
@@ -1,7 +1,6 @@
package cgeo.geocaching.activity;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.compatibility.Compatibility;
import cgeo.geocaching.network.Cookies;
@@ -10,7 +9,6 @@ import android.app.Activity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.view.Menu;
import android.view.View;
import android.widget.EditText;
@@ -90,10 +88,6 @@ public abstract class AbstractActivity extends Activity implements IAbstractActi
ActivityMixin.keepScreenOn(this, keepScreenOn);
}
- public void addVisitMenu(Menu menu, cgCache cache) {
- ActivityMixin.addVisitMenu(this, menu, cache);
- }
-
protected static void disableSuggestions(final EditText edit) {
Compatibility.disableSuggestions(edit);
}
diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
index a209b23..dc9c0fe 100644
--- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
@@ -1,6 +1,5 @@
package cgeo.geocaching.activity;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.compatibility.Compatibility;
@@ -8,7 +7,6 @@ import android.app.ListActivity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.view.Menu;
import android.view.View;
public abstract class AbstractListActivity extends ListActivity implements
@@ -85,10 +83,6 @@ public abstract class AbstractListActivity extends ListActivity implements
ActivityMixin.setTitle(this, title);
}
- public void addVisitMenu(Menu menu, cgCache cache) {
- ActivityMixin.addVisitMenu(this, menu, cache);
- }
-
@Override
public void invalidateOptionsMenuCompatible() {
Compatibility.invalidateOptionsMenu(this);
diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java
index 8d5611b..8900593 100644
--- a/main/src/cgeo/geocaching/activity/ActivityMixin.java
+++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java
@@ -2,10 +2,8 @@ package cgeo.geocaching.activity;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeo;
import cgeo.geocaching.compatibility.Compatibility;
-import cgeo.geocaching.enumerations.LogType;
import org.apache.commons.lang3.StringUtils;
@@ -14,11 +12,8 @@ import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.view.Gravity;
-import android.view.Menu;
-import android.view.SubMenu;
import android.view.View;
import android.view.WindowManager;
import android.widget.ProgressBar;
@@ -27,10 +22,7 @@ import android.widget.Toast;
import gnu.android.app.appmanualclient.AppManualReaderClient;
-import java.util.List;
-
public final class ActivityMixin {
- private static final int MENU_ICON_LOG_VISIT = R.drawable.ic_menu_edit;
public final static void goHome(final Activity fromActivity) {
final Intent intent = new Intent(fromActivity, cgeo.class);
@@ -129,27 +121,6 @@ public final class ActivityMixin {
helpDialog(activity, title, message, null);
}
- protected static void addVisitMenu(IAbstractActivity activity, Menu menu, cgCache cache) {
- if (cache == null) {
- return;
- }
- if (!cache.supportsLogging()) {
- return;
- }
- Resources res = ((Activity) activity).getResources();
- if (Settings.getLogOffline()) {
- SubMenu logMenu = menu.addSubMenu(1, IAbstractActivity.MENU_LOG_VISIT_OFFLINE, 0, res.getString(R.string.cache_menu_visit_offline)).setIcon(MENU_ICON_LOG_VISIT);
- List<LogType> logTypes = cache.getPossibleLogTypes();
- for (LogType logType : logTypes) {
- logMenu.add(1, IAbstractActivity.MENU_LOG_VISIT_OFFLINE + logType.id, 0, logType.getL10n());
- }
- logMenu.add(1, IAbstractActivity.MENU_LOG_VISIT, 0, res.getString(R.string.cache_menu_visit));
- }
- else {
- menu.add(1, IAbstractActivity.MENU_LOG_VISIT, 0, res.getString(R.string.cache_menu_visit)).setIcon(MENU_ICON_LOG_VISIT);
- }
- }
-
public static void keepScreenOn(final Activity abstractActivity, boolean keepScreenOn) {
if (keepScreenOn) {
abstractActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
diff --git a/main/src/cgeo/geocaching/activity/IAbstractActivity.java b/main/src/cgeo/geocaching/activity/IAbstractActivity.java
index 2503b99..04709c6 100644
--- a/main/src/cgeo/geocaching/activity/IAbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/IAbstractActivity.java
@@ -3,8 +3,6 @@ package cgeo.geocaching.activity;
import android.view.View;
public interface IAbstractActivity {
- static final int MENU_LOG_VISIT = 100;
- static final int MENU_LOG_VISIT_OFFLINE = 101;
public void goHome(View view);
diff --git a/main/src/cgeo/geocaching/activity/Progress.java b/main/src/cgeo/geocaching/activity/Progress.java
index dbe4700..7a1995d 100644
--- a/main/src/cgeo/geocaching/activity/Progress.java
+++ b/main/src/cgeo/geocaching/activity/Progress.java
@@ -27,6 +27,7 @@ public class Progress {
dialog = ProgressDialog.show(context, title, message, indeterminate, cancelMessage != null);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
dialog.setProgress(0);
+ dialog.setCanceledOnTouchOutside(false);
this.progress = 0;
if (cancelMessage != null) {
dialog.setCancelMessage(cancelMessage);
@@ -38,6 +39,7 @@ public class Progress {
if (dialog == null) {
dialog = new ProgressDialog(context);
dialog.setProgress(0);
+ dialog.setCanceledOnTouchOutside(false);
this.progress = 0;
dialog.setTitle(title);
dialog.setMessage(message);
diff --git a/main/src/cgeo/geocaching/apps/AbstractApp.java b/main/src/cgeo/geocaching/apps/AbstractApp.java
index 9acc0ae..5bed2d9 100644
--- a/main/src/cgeo/geocaching/apps/AbstractApp.java
+++ b/main/src/cgeo/geocaching/apps/AbstractApp.java
@@ -47,6 +47,11 @@ public abstract class AbstractApp implements App {
}
@Override
+ public boolean isDefaultNavigationApp() {
+ return true;
+ }
+
+ @Override
public String getName() {
return name;
}
diff --git a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
index 8f5160a..ac6fc1c 100644
--- a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
+++ b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
@@ -123,7 +123,7 @@ public abstract class AbstractLocusApp extends AbstractApp {
pg.archived = cache.isArchived();
pg.premiumOnly = cache.isPremiumMembersOnly();
pg.name = cache.getName();
- pg.placedBy = cache.getOwner();
+ pg.placedBy = cache.getOwnerDisplayName();
if (cache.getHiddenDate() != null) {
pg.hidden = ISO8601DATE.format(cache.getHiddenDate().getTime());
}
diff --git a/main/src/cgeo/geocaching/apps/App.java b/main/src/cgeo/geocaching/apps/App.java
index 2e5e730..9d6d371 100644
--- a/main/src/cgeo/geocaching/apps/App.java
+++ b/main/src/cgeo/geocaching/apps/App.java
@@ -5,6 +5,8 @@ import cgeo.geocaching.cgCache;
public interface App {
public boolean isInstalled();
+ public boolean isDefaultNavigationApp();
+
public String getName();
int getId();
diff --git a/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java b/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java
index 22ce677..98e7db8 100644
--- a/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java
+++ b/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java
@@ -31,14 +31,15 @@ public final class GeneralAppsFactory extends AbstractAppFactory {
public static boolean onMenuItemSelected(final MenuItem item, Activity activity, cgCache cache) {
final GeneralApp app = (GeneralApp) getAppFromMenuItem(item, apps);
- if (app != null) {
- try {
- return app.invoke(activity, cache);
- } catch (Exception e) {
- Log.e("GeneralAppsFactory.onMenuItemSelected: " + e.toString());
- }
+ if (app == null) {
+ return false;
+ }
+ try {
+ app.invoke(activity, cache);
+ } catch (Exception e) {
+ Log.e("GeneralAppsFactory.onMenuItemSelected: " + e.toString());
}
- return false;
+ return true;
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
index 5817763..ca8c7db 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
@@ -2,14 +2,14 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
-import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.apps.AbstractApp;
import android.app.Activity;
/**
* navigation app for simple point navigation (no differentiation between cache/waypoint/point)
*/
-abstract class AbstractPointNavigationApp extends AbstractNavigationApp {
+abstract class AbstractPointNavigationApp extends AbstractApp implements CacheNavigationApp, WaypointNavigationApp, GeopointNavigationApp {
protected AbstractPointNavigationApp(String name, String intent) {
super(name, intent);
@@ -20,46 +20,22 @@ abstract class AbstractPointNavigationApp extends AbstractNavigationApp {
}
@Override
- public final boolean invoke(Activity activity, cgCache cache, cgWaypoint waypoint, Geopoint coords) {
- if (cache == null && waypoint == null && coords == null) {
- return false;
- }
-
- try {
- if (isInstalled()) {
- final Geopoint point = getCoordinates(cache, waypoint, coords);
- if (point != null) {
- navigate(activity, point);
- return true;
- }
- }
- } catch (Exception e) {
- // nothing
- }
-
- return false;
+ public void navigate(Activity activity, cgCache cache) {
+ navigate(activity, cache.getCoords());
}
- protected abstract void navigate(Activity activity, Geopoint point);
-
- /**
- * Return the first of the cache coordinates, the waypoint coordinates or the extra coordinates. <code>null</code>
- * entities are skipped.
- *
- * @param cache a cache
- * @param waypoint a waypoint
- * @param coords extra coordinates
- * @return the first non-null coordinates, or null if none are set
- */
- private static Geopoint getCoordinates(final cgCache cache, final cgWaypoint waypoint, final Geopoint coords) {
- if (cache != null && cache.getCoords() != null) {
- return cache.getCoords();
- }
+ @Override
+ public void navigate(Activity activity, cgWaypoint waypoint) {
+ navigate(activity, waypoint.getCoords());
+ }
- if (waypoint != null && waypoint.getCoords() != null) {
- return waypoint.getCoords();
- }
+ @Override
+ public boolean isEnabled(cgCache cache) {
+ return cache.getCoords() != null;
+ }
- return coords;
+ @Override
+ public boolean isEnabled(cgWaypoint waypoint) {
+ return waypoint.getCoords() != null;
}
-} \ No newline at end of file
+}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
index 266acfd..dacb03f 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
@@ -8,13 +8,13 @@ import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
-import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.apps.AbstractApp;
import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
-abstract class AbstractStaticMapsApp extends AbstractNavigationApp {
+abstract class AbstractStaticMapsApp extends AbstractApp implements CacheNavigationApp, WaypointNavigationApp {
public AbstractStaticMapsApp(String name) {
super(name, null);
}
@@ -24,28 +24,29 @@ abstract class AbstractStaticMapsApp extends AbstractNavigationApp {
return true;
}
+ @Override
+ public boolean isDefaultNavigationApp() {
+ return false;
+ }
+
protected static boolean hasStaticMap(cgCache cache) {
- if (cache != null) {
- String geocode = cache.getGeocode();
- if (StringUtils.isNotEmpty(geocode) && cgeoapplication.getInstance().isOffline(geocode, null)) {
- return StaticMapsProvider.doesExistStaticMapForCache(geocode);
- }
+ String geocode = cache.getGeocode();
+ if (StringUtils.isNotEmpty(geocode) && cgeoapplication.getInstance().isOffline(geocode, null)) {
+ return StaticMapsProvider.hasStaticMapForCache(geocode);
}
return false;
}
protected static boolean hasStaticMap(cgWaypoint waypoint) {
- if (waypoint != null) {
- String geocode = waypoint.getGeocode();
- int id = waypoint.getId();
- if (StringUtils.isNotEmpty(geocode) && cgeoapplication.getInstance().isOffline(geocode, null)) {
- return StaticMapsProvider.doesExistStaticMapForWaypoint(geocode, id);
- }
+ String geocode = waypoint.getGeocode();
+ int id = waypoint.getId();
+ if (StringUtils.isNotEmpty(geocode) && cgeoapplication.getInstance().isOffline(geocode, null)) {
+ return StaticMapsProvider.hasStaticMapForWaypoint(geocode, id);
}
return false;
}
- protected static boolean invoke(final Activity activity, final cgCache cache, final cgWaypoint waypoint, final boolean download) {
+ protected static boolean invokeStaticMaps(final Activity activity, final cgCache cache, final cgWaypoint waypoint, final boolean download) {
final ILogable logable = cache != null && cache.getListId() != 0 ? cache : waypoint;
final String geocode = StringUtils.upperCase(logable.getGeocode());
if (geocode == null) {
@@ -56,11 +57,4 @@ abstract class AbstractStaticMapsApp extends AbstractNavigationApp {
StaticMapsActivity.startActivity(activity, geocode, download, waypoint);
return true;
}
-
-
- @Override
- public boolean isEnabled(Geopoint geopoint) {
- return false;
- }
-
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java
new file mode 100644
index 0000000..e47150f
--- /dev/null
+++ b/main/src/cgeo/geocaching/apps/cache/navi/CacheNavigationApp.java
@@ -0,0 +1,17 @@
+package cgeo.geocaching.apps.cache.navi;
+
+import cgeo.geocaching.cgCache;
+import cgeo.geocaching.apps.App;
+
+import android.app.Activity;
+
+/**
+ * interface for navigation to a cache
+ *
+ */
+public interface CacheNavigationApp extends App {
+ void navigate(final Activity activity, final cgCache cache);
+
+ @Override
+ boolean isEnabled(final cgCache cache);
+} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
index 1576617..5275d53 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
@@ -4,11 +4,13 @@ import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeonavigate;
+import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.ui.Formatter;
import android.app.Activity;
-class CompassApp extends AbstractNavigationApp {
+class CompassApp extends AbstractApp implements CacheNavigationApp, WaypointNavigationApp, GeopointNavigationApp {
CompassApp() {
super(getString(R.string.compass_title), null);
@@ -20,22 +22,30 @@ class CompassApp extends AbstractNavigationApp {
}
@Override
- public boolean invoke(Activity activity, cgCache cache, cgWaypoint waypoint, final Geopoint coords) {
-
- if (cache != null && cache.getGeocode() != null) {
- cgeonavigate.startActivity(activity, cache.getGeocode(), cache.getName(), cache.getCoords(), null);
- return true;
- }
- if (waypoint != null && waypoint.getCoords() != null) {
- cgeonavigate.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), null);
- return true;
- }
- if (coords != null) {
- cgeonavigate.startActivity(activity, getString(R.string.navigation_direct_navigation), getString(R.string.navigation_target), coords, null);
- return true;
- }
- // search is not handled here
- return false;
+ public void navigate(Activity activity, Geopoint coords) {
+ cgeonavigate.startActivity(activity, getString(R.string.navigation_direct_navigation), getString(R.string.navigation_target), coords, null);
+ }
+
+ @Override
+ public void navigate(Activity activity, cgWaypoint waypoint) {
+ cgeonavigate.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), null,
+ waypoint.getWaypointType().getL10n());
+ }
+
+ @Override
+ public boolean isEnabled(cgWaypoint waypoint) {
+ return waypoint.getCoords() != null;
+ }
+
+ @Override
+ public void navigate(Activity activity, cgCache cache) {
+ cgeonavigate.startActivity(activity, cache.getGeocode(), cache.getName(), cache.getCoords(), null,
+ Formatter.formatCacheInfoShort(cache));
+ }
+
+ @Override
+ public boolean isEnabled(cgCache cache) {
+ return cache.getGeocode() != null;
}
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
index 1625ef7..f093937 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
@@ -3,7 +3,6 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
-import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
@@ -14,23 +13,22 @@ class DownloadStaticMapsApp extends AbstractStaticMapsApp {
}
@Override
- public boolean invoke(Activity activity, cgCache cache, cgWaypoint waypoint, final Geopoint coords) {
- return invoke(activity, cache, waypoint, true);
- }
-
- @Override
public boolean isEnabled(cgCache cache) {
- if (cache == null) {
- return false;
- }
return !hasStaticMap(cache);
}
@Override
public boolean isEnabled(cgWaypoint waypoint) {
- if (waypoint == null) {
- return false;
- }
return !hasStaticMap(waypoint);
}
+
+ @Override
+ public void navigate(Activity activity, cgCache cache) {
+ invokeStaticMaps(activity, cache, null, true);
+ }
+
+ @Override
+ public void navigate(Activity activity, cgWaypoint waypoint) {
+ invokeStaticMaps(activity, null, waypoint, true);
+ }
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GeopointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GeopointNavigationApp.java
new file mode 100644
index 0000000..fe4fd5d
--- /dev/null
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GeopointNavigationApp.java
@@ -0,0 +1,13 @@
+package cgeo.geocaching.apps.cache.navi;
+
+import cgeo.geocaching.geopoint.Geopoint;
+
+import android.app.Activity;
+
+/**
+ * interface for navigation to a coordinate. This one cannot be enabled/disabled.
+ *
+ */
+public interface GeopointNavigationApp {
+ void navigate(final Activity activity, final Geopoint coords);
+}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
index 4e6e62b..eac33cc 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
@@ -21,7 +21,7 @@ class GoogleMapsApp extends AbstractPointNavigationApp {
}
@Override
- protected void navigate(Activity activity, Geopoint point) {
+ public void navigate(Activity activity, Geopoint point) {
// INFO: q parameter works with Google Maps, but breaks cooperation with all other apps
try {
activity.startActivity(new Intent(Intent.ACTION_VIEW,
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
index 31d99e9..7258e11 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
@@ -3,8 +3,6 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.IGeoData;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.geopoint.Geopoint;
@@ -14,7 +12,7 @@ import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
-class GoogleNavigationApp extends AbstractNavigationApp {
+class GoogleNavigationApp extends AbstractPointNavigationApp {
GoogleNavigationApp() {
super(getString(R.string.cache_menu_tbt), null);
@@ -25,33 +23,8 @@ class GoogleNavigationApp extends AbstractNavigationApp {
return true;
}
- @Override
- public boolean invoke(final Activity activity, final cgCache cache, final cgWaypoint waypoint, final Geopoint coords) {
- if (activity == null) {
- return false;
- }
-
+ private static boolean navigateToCoordinates(Activity activity, final Geopoint coords) {
IGeoData geo = cgeoapplication.getInstance().currentGeo();
- boolean navigationResult = false;
- if (coords != null) {
- navigationResult = navigateToCoordinates(geo, activity, coords);
- }
- else if (waypoint != null) {
- navigationResult = navigateToCoordinates(geo, activity, waypoint.getCoords());
- }
- else if (cache != null) {
- navigationResult = navigateToCoordinates(geo, activity, cache.getCoords());
- }
-
- if (!navigationResult) {
- ActivityMixin.showToast(activity, getString(R.string.err_navigation_no));
- return false;
- }
-
- return true;
- }
-
- private static boolean navigateToCoordinates(IGeoData geo, Activity activity, final Geopoint coords) {
final Geopoint coordsNow = geo == null ? null : geo.getCoords();
// Google Navigation
@@ -89,4 +62,10 @@ class GoogleNavigationApp extends AbstractNavigationApp {
return false;
}
+ @Override
+ public void navigate(Activity activity, Geopoint coords) {
+ if (!navigateToCoordinates(activity, coords)) {
+ ActivityMixin.showToast(activity, getString(R.string.err_navigation_no));
+ }
+ }
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java b/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
index f1e03ed..8185f40 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
@@ -3,37 +3,46 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.maps.CGeoMap;
import android.app.Activity;
-class InternalMap extends AbstractNavigationApp {
+class InternalMap extends AbstractApp implements CacheNavigationApp, WaypointNavigationApp, GeopointNavigationApp {
InternalMap() {
super(getString(R.string.cache_menu_map), null);
}
@Override
- public boolean invoke(Activity activity, cgCache cache, cgWaypoint waypoint, final Geopoint coords) {
- if (cache != null) {
- CGeoMap.startActivityGeoCode(activity, cache.getGeocode());
- // may need some code from CGeoMap.startActivitySearch(activity, search, cache != null ? cache.getGeocode() : null, true);
- }
- else if (waypoint != null) {
- CGeoMap.startActivityCoords(activity, waypoint.getCoords(), waypoint.getWaypointType(), waypoint.getName());
- }
- else if (coords != null) {
- CGeoMap.startActivityCoords(activity, coords, WaypointType.WAYPOINT, null);
- }
-
+ public boolean isInstalled() {
return true;
}
@Override
- public boolean isInstalled() {
- return true;
+ public void navigate(Activity activity, Geopoint coords) {
+ CGeoMap.startActivityCoords(activity, coords, WaypointType.WAYPOINT, null);
}
+ @Override
+ public void navigate(Activity activity, cgWaypoint waypoint) {
+ CGeoMap.startActivityCoords(activity, waypoint.getCoords(), waypoint.getWaypointType(), waypoint.getName());
+ }
+
+ @Override
+ public boolean isEnabled(cgWaypoint waypoint) {
+ return waypoint.getCoords() != null;
+ }
+
+ @Override
+ public void navigate(Activity activity, cgCache cache) {
+ CGeoMap.startActivityGeoCode(activity, cache.getGeocode());
+ }
+
+ @Override
+ public boolean isEnabled(cgCache cache) {
+ return cache.getCoords() != null;
+ }
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java b/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
index d71a474..a20f2ce 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
@@ -3,45 +3,30 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.apps.AbstractLocusApp;
-import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
-import java.util.ArrayList;
+import java.util.Collections;
-class LocusApp extends AbstractLocusApp implements NavigationApp {
+class LocusApp extends AbstractLocusApp implements CacheNavigationApp, WaypointNavigationApp {
+
+ @Override
+ public boolean isEnabled(cgWaypoint waypoint) {
+ return waypoint.getCoords() != null;
+ }
/**
* Show a single cache with waypoints or a single waypoint in Locus.
* This method constructs a list of cache and waypoints only.
*
- * @see AbstractLocusApp#showInLocus
*/
@Override
- public boolean invoke(Activity activity, cgCache cache, cgWaypoint waypoint, final Geopoint coords) {
-
- final ArrayList<Object> points = new ArrayList<Object>();
-
- // add cache if present
- if (cache != null && cache.getCoords() != null) {
- points.add(cache);
- }
-
- // add waypoint if present
- if (waypoint != null && waypoint.getCoords() != null) {
- points.add(waypoint);
- }
-
- return showInLocus(points, true, false, activity);
- }
-
- @Override
- public boolean isEnabled(cgWaypoint waypoint) {
- return waypoint != null;
+ public void navigate(Activity activity, cgWaypoint waypoint) {
+ showInLocus(Collections.singletonList(waypoint), true, false, activity);
}
@Override
- public boolean isEnabled(Geopoint geopoint) {
- return geopoint != null;
+ public void navigate(Activity activity, cgCache cache) {
+ showInLocus(Collections.singletonList(cache), true, false, activity);
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
index 95f6408..bf0517f 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
@@ -7,8 +7,8 @@ import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractAppFactory;
+import cgeo.geocaching.apps.App;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.utils.Log;
import android.app.Activity;
import android.app.AlertDialog;
@@ -48,7 +48,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
/** The external navigon app */
NAVIGON(new NavigonApp(), 10);
- NavigationAppsEnum(NavigationApp app, int id) {
+ NavigationAppsEnum(App app, int id) {
this.app = app;
this.id = id;
}
@@ -56,7 +56,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
/**
* The app instance to use
*/
- public final NavigationApp app;
+ public final App app;
/**
* The id - used in c:geo settings
*/
@@ -119,7 +119,17 @@ public final class NavigationAppFactory extends AbstractAppFactory {
for (NavigationAppsEnum navApp : getInstalledNavigationApps()) {
if ((showInternalMap || !(navApp.app instanceof InternalMap)) &&
(showDefaultNavigation || defaultNavigationTool != navApp.id)) {
- if (navApp.app.isEnabled(cache) || navApp.app.isEnabled(waypoint) || navApp.app.isEnabled(destination)) {
+ boolean add = false;
+ if (cache != null && navApp.app instanceof CacheNavigationApp && ((CacheNavigationApp) navApp.app).isEnabled(cache)) {
+ add = true;
+ }
+ if (waypoint != null && navApp.app instanceof WaypointNavigationApp && ((WaypointNavigationApp) navApp.app).isEnabled(waypoint)) {
+ add = true;
+ }
+ if (destination != null && navApp.app instanceof GeopointNavigationApp) {
+ add = true;
+ }
+ if (add) {
items.add(navApp);
}
}
@@ -134,7 +144,18 @@ public final class NavigationAppFactory extends AbstractAppFactory {
@Override
public void onClick(DialogInterface dialog, int item) {
NavigationAppsEnum selectedItem = adapter.getItem(item);
- selectedItem.app.invoke(activity, cache, waypoint, destination);
+ if (cache != null) {
+ CacheNavigationApp cacheApp = (CacheNavigationApp) selectedItem.app;
+ cacheApp.navigate(activity, cache);
+ }
+ else if (waypoint != null) {
+ WaypointNavigationApp waypointApp = (WaypointNavigationApp) selectedItem.app;
+ waypointApp.navigate(activity, waypoint);
+ }
+ else {
+ GeopointNavigationApp geopointApp = (GeopointNavigationApp) selectedItem.app;
+ geopointApp.navigate(activity, destination);
+ }
}
});
final AlertDialog alert = builder.create();
@@ -157,6 +178,21 @@ public final class NavigationAppFactory extends AbstractAppFactory {
}
/**
+ * Returns all installed navigation apps for default navigation.
+ *
+ * @return
+ */
+ public static List<NavigationAppsEnum> getInstalledDefaultNavigationApps() {
+ final List<NavigationAppsEnum> installedNavigationApps = new ArrayList<NavigationAppsEnum>();
+ for (NavigationAppsEnum appEnum : NavigationAppsEnum.values()) {
+ if (appEnum.app.isInstalled() && appEnum.app.isDefaultNavigationApp()) {
+ installedNavigationApps.add(appEnum);
+ }
+ }
+ return installedNavigationApps;
+ }
+
+ /**
* This offset is used to build unique menu ids to avoid collisions of ids in menus
*/
private static final int MENU_ITEM_OFFSET = 12345;
@@ -174,16 +210,22 @@ public final class NavigationAppFactory extends AbstractAppFactory {
*/
public static void addMenuItems(final Menu menu, final cgCache cache) {
for (NavigationAppsEnum navApp : getInstalledNavigationApps()) {
- if (navApp.app.isEnabled(cache)) {
- menu.add(0, MENU_ITEM_OFFSET + navApp.id, 0, navApp.app.getName());
+ if (navApp.app instanceof CacheNavigationApp) {
+ CacheNavigationApp cacheApp = (CacheNavigationApp) navApp.app;
+ if (cacheApp.isEnabled(cache)) {
+ menu.add(0, MENU_ITEM_OFFSET + navApp.id, 0, navApp.app.getName());
+ }
}
}
}
public static void addMenuItems(final Menu menu, final cgWaypoint waypoint) {
for (NavigationAppsEnum navApp : getInstalledNavigationApps()) {
- if (navApp.app.isEnabled(waypoint)) {
- menu.add(0, MENU_ITEM_OFFSET + navApp.id, 0, navApp.app.getName());
+ if (navApp.app instanceof WaypointNavigationApp) {
+ WaypointNavigationApp waypointApp = (WaypointNavigationApp) navApp.app;
+ if (waypointApp.isEnabled(waypoint)) {
+ menu.add(0, MENU_ITEM_OFFSET + navApp.id, 0, navApp.app.getName());
+ }
}
}
}
@@ -197,29 +239,39 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* @return
*/
public static boolean onMenuItemSelected(final MenuItem item, Activity activity, cgCache cache) {
- return invokeApp(activity, cache, null, null, getAppFromMenuItem(item));
+ final App menuItem = getAppFromMenuItem(item);
+ navigateCache(activity, cache, menuItem);
+ return menuItem != null;
+ }
+
+ private static void navigateCache(Activity activity, cgCache cache, App app) {
+ if (app instanceof CacheNavigationApp) {
+ CacheNavigationApp cacheApp = (CacheNavigationApp) app;
+ cacheApp.navigate(activity, cache);
+ }
}
public static boolean onMenuItemSelected(final MenuItem item, Activity activity, cgWaypoint waypoint) {
- return invokeApp(activity, null, waypoint, null, getAppFromMenuItem(item));
+ final App menuItem = getAppFromMenuItem(item);
+ navigateWaypoint(activity, waypoint, menuItem);
+ return menuItem != null;
}
- private static boolean invokeApp(Activity activity, cgCache cache, cgWaypoint waypoint, final Geopoint destination, final NavigationApp app) {
- if (app == null) {
- return false;
+ private static void navigateWaypoint(Activity activity, cgWaypoint waypoint, App app) {
+ if (app instanceof WaypointNavigationApp) {
+ WaypointNavigationApp waypointApp = (WaypointNavigationApp) app;
+ waypointApp.navigate(activity, waypoint);
}
- if (cache == null && waypoint == null && destination == null) {
- return false;
- }
- try {
- return app.invoke(activity, cache, waypoint, destination);
- } catch (Exception e) {
- Log.e("NavigationAppFactory.onMenuItemSelected: " + e.toString());
+ }
+
+ private static void navigateGeopoint(Activity activity, Geopoint destination, App app) {
+ if (app instanceof GeopointNavigationApp) {
+ GeopointNavigationApp geopointApp = (GeopointNavigationApp) app;
+ geopointApp.navigate(activity, destination);
}
- return false;
}
- private static NavigationApp getAppFromMenuItem(MenuItem item) {
+ private static App getAppFromMenuItem(MenuItem item) {
final int id = item.getItemId();
for (NavigationAppsEnum navApp : NavigationAppsEnum.values()) {
if (MENU_ITEM_OFFSET + navApp.id == id) {
@@ -243,10 +295,10 @@ public final class NavigationAppFactory extends AbstractAppFactory {
return;
}
- invokeApp(activity, cache, null, null, getDefaultNavigationApplication(defaultNavigation));
+ navigateCache(activity, cache, getDefaultNavigationApplication(defaultNavigation));
}
- private static NavigationApp getDefaultNavigationApplication(int defaultNavigation) {
+ private static App getDefaultNavigationApplication(int defaultNavigation) {
if (defaultNavigation == 2) {
return getNavigationAppFromSetting(Settings.getDefaultNavigationTool2());
}
@@ -264,7 +316,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
ActivityMixin.showToast(activity, cgeoapplication.getInstance().getString(R.string.err_location_unknown));
return;
}
- invokeApp(activity, null, waypoint, null, getDefaultNavigationApplication(defaultNavigation));
+ navigateWaypoint(activity, waypoint, getDefaultNavigationApplication(defaultNavigation));
}
/**
@@ -279,7 +331,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
return;
}
- invokeApp(activity, null, null, destination, getDefaultNavigationApplication(defaultNavigation));
+ navigateGeopoint(activity, destination, getDefaultNavigationApplication(defaultNavigation));
}
/**
@@ -287,11 +339,11 @@ public final class NavigationAppFactory extends AbstractAppFactory {
*
* @return never <code>null</code>
*/
- public static NavigationApp getDefaultNavigationApplication() {
+ public static App getDefaultNavigationApplication() {
return getNavigationAppFromSetting(Settings.getDefaultNavigationTool());
}
- private static NavigationApp getNavigationAppFromSetting(final int defaultNavigationTool) {
+ private static App getNavigationAppFromSetting(final int defaultNavigationTool) {
final List<NavigationAppsEnum> installedNavigationApps = getInstalledNavigationApps();
for (NavigationAppsEnum navigationApp : installedNavigationApps) {
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java
index 69f63dc..7ea86fb 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java
@@ -16,7 +16,7 @@ class NavigonApp extends AbstractPointNavigationApp {
}
@Override
- protected void navigate(Activity activity, Geopoint point) {
+ public void navigate(Activity activity, Geopoint point) {
final Intent intent = new Intent(INTENT);
/*
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java
index 27ec2fa..24ef81b 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java
@@ -15,7 +15,7 @@ class OruxMapsApp extends AbstractPointNavigationApp {
}
@Override
- protected void navigate(Activity activity, Geopoint point) {
+ public void navigate(Activity activity, Geopoint point) {
final Intent intent = new Intent(INTENT);
intent.putExtra("latitude", point.getLatitude());//latitude, wgs84 datum
intent.putExtra("longitude", point.getLongitude());//longitude, wgs84 datum
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
index 8044cc6..a481813 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
@@ -3,6 +3,7 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter.Format;
@@ -11,7 +12,7 @@ import android.content.Intent;
import java.util.ArrayList;
-class RMapsApp extends AbstractNavigationApp {
+class RMapsApp extends AbstractApp implements CacheNavigationApp, WaypointNavigationApp, GeopointNavigationApp {
private static final String INTENT = "com.robert.maps.action.SHOW_POINTS";
@@ -20,29 +21,30 @@ class RMapsApp extends AbstractNavigationApp {
}
@Override
- public boolean invoke(Activity activity, cgCache cache, cgWaypoint waypoint, final Geopoint coords) {
- try {
- final ArrayList<String> locations = new ArrayList<String>();
- if (cache != null && cache.getCoords() != null) {
- locations.add(cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA)
- + ";" + cache.getGeocode()
- + ";" + cache.getName());
- } else if (waypoint != null && waypoint.getCoords() != null) {
- locations.add(waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA)
- + ";" + waypoint.getLookup()
- + ";" + waypoint.getName());
- }
-
- if (!locations.isEmpty()) {
- final Intent intent = new Intent(INTENT);
- intent.putStringArrayListExtra("locations", locations);
- activity.startActivity(intent);
- return true;
- }
- } catch (Exception e) {
- // nothing
- }
-
- return false;
+ public void navigate(Activity activity, cgWaypoint waypoint) {
+ navigate(activity, waypoint.getCoords(), waypoint.getLookup(), waypoint.getName());
+ }
+
+ private static void navigate(Activity activity, Geopoint coords, String code, String name) {
+ final ArrayList<String> locations = new ArrayList<String>();
+ locations.add(coords.format(Format.LAT_LON_DECDEGREE_COMMA) + ";" + code + ";" + name);
+ final Intent intent = new Intent(INTENT);
+ intent.putStringArrayListExtra("locations", locations);
+ activity.startActivity(intent);
+ }
+
+ @Override
+ public boolean isEnabled(cgWaypoint waypoint) {
+ return waypoint.getCoords() != null;
+ }
+
+ @Override
+ public void navigate(Activity activity, cgCache cache) {
+ navigate(activity, cache.getCoords(), cache.getGeocode(), cache.getName());
+ }
+
+ @Override
+ public void navigate(Activity activity, Geopoint coords) {
+ navigate(activity, coords, "", "");
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java b/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java
index 3374691..b01539c 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java
@@ -16,7 +16,7 @@ class RadarApp extends AbstractPointNavigationApp {
}
@Override
- protected void navigate(Activity activity, Geopoint point) {
+ public void navigate(Activity activity, Geopoint point) {
final Intent radarIntent = new Intent(INTENT);
radarIntent.putExtra("latitude", (float) point.getLatitude());
radarIntent.putExtra("longitude", (float) point.getLongitude());
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java b/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
index d805656..6be027f 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
@@ -3,7 +3,6 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
-import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
@@ -14,23 +13,22 @@ class StaticMapApp extends AbstractStaticMapsApp {
}
@Override
- public boolean invoke(Activity activity, cgCache cache, cgWaypoint waypoint, final Geopoint coords) {
- return invoke(activity, cache, waypoint, false);
- }
-
- @Override
public boolean isEnabled(cgCache cache) {
- if (cache == null) {
- return false;
- }
return hasStaticMap(cache);
}
@Override
public boolean isEnabled(cgWaypoint waypoint) {
- if (waypoint == null) {
- return false;
- }
return hasStaticMap(waypoint);
}
+
+ @Override
+ public void navigate(Activity activity, cgCache cache) {
+ invokeStaticMaps(activity, cache, null, false);
+ }
+
+ @Override
+ public void navigate(Activity activity, cgWaypoint waypoint) {
+ invokeStaticMaps(activity, null, waypoint, false);
+ }
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java b/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
index 41f958d..012b94f 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
@@ -22,7 +22,7 @@ class StreetviewApp extends AbstractPointNavigationApp {
}
@Override
- protected void navigate(Activity activity, Geopoint point) {
+ public void navigate(Activity activity, Geopoint point) {
try {
activity.startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("google.streetview:cbll=" + point.getLatitude() + "," + point.getLongitude())));
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java
new file mode 100644
index 0000000..7d3a706
--- /dev/null
+++ b/main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java
@@ -0,0 +1,15 @@
+package cgeo.geocaching.apps.cache.navi;
+
+import cgeo.geocaching.cgWaypoint;
+
+import android.app.Activity;
+
+/**
+ * interface for navigation to a waypoint
+ *
+ */
+public interface WaypointNavigationApp {
+ void navigate(final Activity activity, final cgWaypoint waypoint);
+
+ boolean isEnabled(final cgWaypoint waypoint);
+}
diff --git a/main/src/cgeo/geocaching/backup/CentralBackupAgent.java b/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
index aef2b7b..f6b9024 100644
--- a/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
+++ b/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
@@ -2,9 +2,11 @@ package cgeo.geocaching.backup;
import cgeo.geocaching.Settings;
+import android.annotation.TargetApi;
import android.app.backup.BackupAgentHelper;
import android.app.backup.SharedPreferencesBackupHelper;
+@TargetApi(8)
public class CentralBackupAgent extends BackupAgentHelper {
private static final String PREFS_BACKUP_KEY = "prefs";
diff --git a/main/src/cgeo/geocaching/cgCache.java b/main/src/cgeo/geocaching/cgCache.java
index c765678..b8590e5 100644
--- a/main/src/cgeo/geocaching/cgCache.java
+++ b/main/src/cgeo/geocaching/cgCache.java
@@ -1,6 +1,7 @@
package cgeo.geocaching;
import cgeo.geocaching.cgData.StorageLocation;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
@@ -61,8 +62,8 @@ public class cgCache implements ICache, IWaypoint {
private CacheType cacheType = CacheType.UNKNOWN;
private String name = "";
private Spannable nameSp = null;
- private String owner = "";
- private String ownerReal = "";
+ private String ownerDisplayName = "";
+ private String ownerUserId = "";
private Date hidden = null;
private String hint = "";
private CacheSize size = CacheSize.UNKNOWN;
@@ -189,11 +190,11 @@ public class cgCache implements ICache, IWaypoint {
if (StringUtils.isBlank(nameSp)) {
nameSp = other.nameSp;
}
- if (StringUtils.isBlank(owner)) {
- owner = other.owner;
+ if (StringUtils.isBlank(ownerDisplayName)) {
+ ownerDisplayName = other.ownerDisplayName;
}
- if (StringUtils.isBlank(ownerReal)) {
- ownerReal = other.ownerReal;
+ if (StringUtils.isBlank(ownerUserId)) {
+ ownerUserId = other.ownerUserId;
}
if (hidden == null) {
hidden = other.hidden;
@@ -316,8 +317,8 @@ public class cgCache implements ICache, IWaypoint {
disabled == other.disabled &&
archived == other.archived &&
listId == other.listId &&
- StringUtils.equalsIgnoreCase(owner, other.owner) &&
- StringUtils.equalsIgnoreCase(ownerReal, other.ownerReal) &&
+ StringUtils.equalsIgnoreCase(ownerDisplayName, other.ownerDisplayName) &&
+ StringUtils.equalsIgnoreCase(ownerUserId, other.ownerUserId) &&
StringUtils.equalsIgnoreCase(description, other.description) &&
StringUtils.equalsIgnoreCase(personalNote, other.personalNote) &&
StringUtils.equalsIgnoreCase(shortdesc, other.shortdesc) &&
@@ -404,33 +405,33 @@ public class cgCache implements ICache, IWaypoint {
((Activity) fromActivity).startActivity(logVisitIntent);
}
- public void logOffline(final IAbstractActivity fromActivity, final LogType logType) {
+ public void logOffline(final Activity fromActivity, final LogType logType) {
final boolean mustIncludeSignature = StringUtils.isNotBlank(Settings.getSignature()) && Settings.isAutoInsertSignature();
final String initial = mustIncludeSignature ? LogTemplateProvider.applyTemplates(Settings.getSignature(), true) : "";
logOffline(fromActivity, initial, Calendar.getInstance(), logType);
}
- void logOffline(final IAbstractActivity fromActivity, final String log, Calendar date, final LogType logType) {
+ void logOffline(final Activity fromActivity, final String log, Calendar date, final LogType logType) {
if (logType == LogType.UNKNOWN) {
return;
}
- cgeoapplication app = (cgeoapplication) ((Activity) fromActivity).getApplication();
+ cgeoapplication app = (cgeoapplication) fromActivity.getApplication();
final boolean status = app.saveLogOffline(geocode, date.getTime(), logType, log);
- Resources res = ((Activity) fromActivity).getResources();
+ Resources res = fromActivity.getResources();
if (status) {
- fromActivity.showToast(res.getString(R.string.info_log_saved));
+ ActivityMixin.showToast(fromActivity, res.getString(R.string.info_log_saved));
app.saveVisitDate(geocode);
logOffline = true;
notifyChange();
} else {
- fromActivity.showToast(res.getString(R.string.err_log_post_failed));
+ ActivityMixin.showToast(fromActivity, res.getString(R.string.err_log_post_failed));
}
}
public List<LogType> getPossibleLogTypes() {
- boolean isOwner = owner != null && owner.equalsIgnoreCase(Settings.getUsername());
+ boolean isOwner = getOwnerUserId() != null && getOwnerUserId().equalsIgnoreCase(Settings.getUsername());
List<LogType> logTypes = new ArrayList<LogType>();
if (isEventCache()) {
logTypes.add(LogType.WILL_ATTEND);
@@ -506,8 +507,8 @@ public class cgCache implements ICache, IWaypoint {
}
@Override
- public String getOwner() {
- return owner;
+ public String getOwnerDisplayName() {
+ return ownerDisplayName;
}
@Override
@@ -548,8 +549,8 @@ public class cgCache implements ICache, IWaypoint {
}
@Override
- public String getOwnerReal() {
- return ownerReal;
+ public String getOwnerUserId() {
+ return ownerUserId;
}
@Override
@@ -988,12 +989,12 @@ public class cgCache implements ICache, IWaypoint {
this.name = name;
}
- public void setOwner(String owner) {
- this.owner = owner;
+ public void setOwnerDisplayName(String ownerDisplayName) {
+ this.ownerDisplayName = ownerDisplayName;
}
- public void setOwnerReal(String ownerReal) {
- this.ownerReal = ownerReal;
+ public void setOwnerUserId(String ownerUserId) {
+ this.ownerUserId = ownerUserId;
}
public void setHint(String hint) {
@@ -1403,11 +1404,11 @@ public class cgCache implements ICache, IWaypoint {
if (getDifficulty() == 0.0) {
Log.e("difficulty not parsed correctly");
}
- if (StringUtils.isBlank(getOwner())) {
- Log.e("owner not parsed correctly");
+ if (StringUtils.isBlank(getOwnerDisplayName())) {
+ Log.e("owner display name not parsed correctly");
}
- if (StringUtils.isBlank(getOwnerReal())) {
- Log.e("owner real not parsed correctly");
+ if (StringUtils.isBlank(getOwnerUserId())) {
+ Log.e("owner user id real not parsed correctly");
}
if (getHiddenDate() == null) {
Log.e("hidden not parsed correctly");
@@ -1549,4 +1550,45 @@ public class cgCache implements ICache, IWaypoint {
return listId >= StoredList.STANDARD_LIST_ID;
}
-}
+ /**
+ * guess an event start time from the description
+ *
+ * @return start time in minutes after midnight
+ */
+ public String guessEventTimeMinutes() {
+ if (!isEventCache()) {
+ return null;
+ }
+ // 12:34
+ final Pattern time = Pattern.compile("\\b(\\d{1,2})\\:(\\d\\d)\\b");
+ final Matcher matcher = time.matcher(getDescription());
+ while (matcher.find()) {
+ try {
+ final int hours = Integer.valueOf(matcher.group(1));
+ final int minutes = Integer.valueOf(matcher.group(2));
+ if (hours >= 0 && hours < 24 && minutes >= 0 && minutes < 60) {
+ return String.valueOf(hours * 60 + minutes);
+ }
+ } catch (NumberFormatException e) {
+ // cannot happen, but static code analysis doesn't know
+ }
+ }
+ // 12 o'clock
+ 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 Matcher matcherHours = fullHours.matcher(getDescription());
+ if (matcherHours.find()) {
+ try {
+ final int hours = Integer.valueOf(matcherHours.group(1));
+ if (hours >= 0 && hours < 24) {
+ return String.valueOf(hours * 60);
+ }
+ } catch (NumberFormatException e) {
+ // cannot happen, but static code analysis doesn't know
+ }
+ }
+ }
+ return null;
+ }
+} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/cgData.java b/main/src/cgeo/geocaching/cgData.java
index 4831524..53ac334 100644
--- a/main/src/cgeo/geocaching/cgData.java
+++ b/main/src/cgeo/geocaching/cgData.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.Resources;
import android.database.Cursor;
+import android.database.DatabaseUtils;
import android.database.DatabaseUtils.InsertHelper;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
@@ -1003,8 +1004,8 @@ public class cgData {
values.put("type", cache.getType().id);
values.put("name", cache.getName());
values.put("own", cache.isOwn() ? 1 : 0);
- values.put("owner", cache.getOwner());
- values.put("owner_real", cache.getOwnerReal());
+ values.put("owner", cache.getOwnerDisplayName());
+ values.put("owner_real", cache.getOwnerUserId());
if (cache.getHiddenDate() == null) {
values.put("hidden", 0);
} else {
@@ -1467,22 +1468,28 @@ public class cgData {
init();
- final Cursor cursor = database.query(
- dbTableCaches,
- CACHE_COLUMNS,
- cgData.whereGeocodeIn(geocodes),
- null,
- null,
- null,
- null,
- null);
+ final StringBuilder query = new StringBuilder("SELECT ");
+ for (int i = 0; i < CACHE_COLUMNS.length; i++) {
+ query.append(i > 0 ? ", " : "").append(dbTableCaches).append('.').append(CACHE_COLUMNS[i]).append(' ');
+ }
+ query.append(',').append(dbTableLogsOffline).append(".log");
+ query.append(" FROM ").append(dbTableCaches);
+ if (loadFlags.contains(LoadFlag.LOAD_OFFLINE_LOG)) {
+ query.append(" LEFT OUTER JOIN ").append(dbTableLogsOffline).append(" ON ( ").append(dbTableCaches).append(".geocode == ").append(dbTableLogsOffline).append(".geocode) ");
+ }
+
+ query.append(" WHERE ").append(dbTableCaches).append('.');
+ query.append(cgData.whereGeocodeIn(geocodes));
+
+ Cursor cursor = database.rawQuery(query.toString(), null);
try {
if (!cursor.moveToFirst()) {
return Collections.emptySet();
}
final Set<cgCache> caches = new HashSet<cgCache>();
+ int logIndex = -1;
do {
//Extracted Method = LOADDBMINIMAL
cgCache cache = cgData.createCacheFromDatabaseContent(cursor);
@@ -1532,7 +1539,10 @@ public class cgData {
}
if (loadFlags.contains(LoadFlag.LOAD_OFFLINE_LOG)) {
- cache.setLogOffline(hasLogOffline(cache.getGeocode()));
+ if (logIndex < 0) {
+ logIndex = cursor.getColumnIndex("log");
+ }
+ cache.setLogOffline(!cursor.isNull(logIndex));
}
cache.addStorageLocation(StorageLocation.DATABASE);
cacheCache.putCacheInCache(cache);
@@ -1545,6 +1555,7 @@ public class cgData {
}
}
+
/**
* Builds a where for a viewport with the size enhanced by 50%.
*
@@ -1624,8 +1635,8 @@ public class cgData {
cache.setType(CacheType.getById(cursor.getString(cacheColumnIndex[8])));
cache.setName(cursor.getString(cacheColumnIndex[9]));
cache.setOwn(cursor.getInt(cacheColumnIndex[10]) == 1);
- cache.setOwner(cursor.getString(cacheColumnIndex[11]));
- cache.setOwnerReal(cursor.getString(cacheColumnIndex[12]));
+ cache.setOwnerDisplayName(cursor.getString(cacheColumnIndex[11]));
+ cache.setOwnerUserId(cursor.getString(cacheColumnIndex[12]));
long dateValue = cursor.getLong(cacheColumnIndex[13]);
if (dateValue != 0) {
cache.setHidden(new Date(dateValue));
@@ -2116,13 +2127,13 @@ public class cgData {
if (cacheType == CacheType.ALL) {
sql = "select count(_id) from " + dbTableCaches + listSql;
} else {
- sql = "select count(_id) from " + dbTableCaches + " where type = \"" + cacheType.id + "\"" + listSqlW;
+ sql = "select count(_id) from " + dbTableCaches + " where type = " + DatabaseUtils.sqlEscapeString(cacheType.id) + listSqlW;
}
} else {
if (cacheType == CacheType.ALL) {
sql = "select count(_id) from " + dbTableCaches + " where detailed = 1" + listSqlW;
} else {
- sql = "select count(_id) from " + dbTableCaches + " where detailed = 1 and type = \"" + cacheType.id + "\"" + listSqlW;
+ sql = "select count(_id) from " + dbTableCaches + " where detailed = 1 and type = " + DatabaseUtils.sqlEscapeString(cacheType.id) + listSqlW;
}
}
SQLiteStatement compiledStmnt = database.compileStatement(sql);
@@ -2179,9 +2190,8 @@ public class cgData {
}
if (cacheType != CacheType.ALL) {
- specifySql.append(" and type = \"");
- specifySql.append(cacheType.id);
- specifySql.append('"');
+ specifySql.append(" and type = ");
+ specifySql.append(DatabaseUtils.sqlEscapeString(cacheType.id));
}
try {
@@ -2237,9 +2247,8 @@ public class cgData {
specifySql.append(" and detailed = 1");
}
if (cacheType != CacheType.ALL) {
- specifySql.append(" and type = \"");
- specifySql.append(cacheType.id);
- specifySql.append('"');
+ specifySql.append(" and type = ");
+ specifySql.append(DatabaseUtils.sqlEscapeString(cacheType.id));
}
try {
@@ -2312,9 +2321,8 @@ public class cgData {
// cacheType limitation
if (cacheType != CacheType.ALL) {
- where.append(" and type = \"");
- where.append(cacheType.id);
- where.append('"');
+ where.append(" and type = ");
+ where.append(DatabaseUtils.sqlEscapeString(cacheType.id));
}
// offline caches only
@@ -2458,7 +2466,7 @@ public class cgData {
// Drop caches from the database
final ArrayList<String> quotedGeocodes = new ArrayList<String>(geocodes.size());
for (final String geocode : geocodes) {
- quotedGeocodes.add('"' + geocode + '"');
+ quotedGeocodes.add(DatabaseUtils.sqlEscapeString(geocode));
}
final String geocodeList = StringUtils.join(quotedGeocodes.toArray(), ',');
final String baseWhereClause = "geocode in (" + geocodeList + ")";
@@ -2470,7 +2478,7 @@ public class cgData {
database.delete(dbTableLogs, baseWhereClause, null);
database.delete(dbTableLogCount, baseWhereClause, null);
database.delete(dbTableLogsOffline, baseWhereClause, null);
- database.delete(dbTableWaypoints, baseWhereClause + " and type <> \"own\"", null);
+ database.delete(dbTableWaypoints, baseWhereClause + " and type <> 'own'", null);
database.delete(dbTableTrackables, baseWhereClause, null);
database.setTransactionSuccessful();
} finally {
@@ -2486,41 +2494,29 @@ public class cgData {
public boolean saveLogOffline(String geocode, Date date, LogType type, String log) {
if (StringUtils.isBlank(geocode)) {
+ Log.e("cgData.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");
return false;
}
init();
- boolean status = false;
- ContentValues values = new ContentValues();
+ final ContentValues values = new ContentValues();
values.put("geocode", geocode);
values.put("updated", System.currentTimeMillis());
values.put("type", type.id);
values.put("log", log);
values.put("date", date.getTime());
- try {
- if (hasLogOffline(geocode)) {
- final int rows = database.update(dbTableLogsOffline, values, "geocode = ?", new String[] { geocode });
-
- if (rows > 0) {
- status = true;
- }
- } else {
- final long id = database.insert(dbTableLogsOffline, null, values);
-
- if (id > 0) {
- status = true;
- }
- }
- } catch (Exception e) {
- Log.e("cgData.saveLogOffline: " + e.toString());
+ if (hasLogOffline(geocode)) {
+ final int rows = database.update(dbTableLogsOffline, values, "geocode = ?", new String[] { geocode });
+ return rows > 0;
}
-
- return status;
+ final long id = database.insert(dbTableLogsOffline, null, values);
+ return id != -1;
}
public LogEntry loadLogOffline(String geocode) {
@@ -2917,14 +2913,10 @@ public class cgData {
if (all.length() > 0) {
all.append(", ");
}
- all.append('"');
- all.append(geocode);
- all.append('"');
+ all.append(DatabaseUtils.sqlEscapeString(geocode));
}
- where.append("geocode in (");
- where.append(all);
- where.append(')');
+ where.append("geocode in (").append(all).append(')');
}
return where.toString();
diff --git a/main/src/cgeo/geocaching/cgWaypoint.java b/main/src/cgeo/geocaching/cgWaypoint.java
index c847b24..af6bab5 100644
--- a/main/src/cgeo/geocaching/cgWaypoint.java
+++ b/main/src/cgeo/geocaching/cgWaypoint.java
@@ -12,7 +12,7 @@ import java.util.List;
public class cgWaypoint implements IWaypoint, Comparable<cgWaypoint> {
- static final String PREFIX_OWN = "OWN";
+ public static final String PREFIX_OWN = "OWN";
private static final int ORDER_UNDEFINED = -2;
private int id = 0;
private String geocode = "geocode";
diff --git a/main/src/cgeo/geocaching/cgeo.java b/main/src/cgeo/geocaching/cgeo.java
index 1c81a63..5bf728f 100644
--- a/main/src/cgeo/geocaching/cgeo.java
+++ b/main/src/cgeo/geocaching/cgeo.java
@@ -6,8 +6,7 @@ import cgeo.geocaching.connector.gc.Login;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.geopoint.HumanDistance;
-import cgeo.geocaching.geopoint.IConversion;
+import cgeo.geocaching.geopoint.Units;
import cgeo.geocaching.maps.CGeoMap;
import cgeo.geocaching.network.StatusUpdater.Status;
import cgeo.geocaching.ui.Formatter;
@@ -628,11 +627,7 @@ public class cgeo extends AbstractActivity {
if (geo.getAccuracy() >= 0) {
int speed = Math.round(geo.getSpeed()) * 60 * 60 / 1000;
- if (Settings.isUseMetricUnits()) {
- navAccuracy.setText("±" + Math.round(geo.getAccuracy()) + " m" + Formatter.SEPARATOR + speed + " km/h");
- } else {
- navAccuracy.setText("±" + Math.round(geo.getAccuracy() * IConversion.METERS_TO_FEET) + " ft" + Formatter.SEPARATOR + speed / IConversion.MILES_TO_KILOMETER + " mph");
- }
+ navAccuracy.setText("±" + Units.getDistanceFromMeters(geo.getAccuracy()) + Formatter.SEPARATOR + Units.getSpeed(speed));
} else {
navAccuracy.setText(null);
}
@@ -646,7 +641,7 @@ public class cgeo extends AbstractActivity {
}
} else {
if (geo.getAltitude() != 0.0) {
- final String humanAlt = HumanDistance.getHumanDistance((float) geo.getAltitude() / 1000);
+ final String humanAlt = Units.getDistanceFromKilometers((float) geo.getAltitude() / 1000);
navLocation.setText(geo.getCoords() + " | " + humanAlt);
} else {
navLocation.setText(geo.getCoords().toString());
diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java
index 3be48ca..340122a 100644
--- a/main/src/cgeo/geocaching/cgeocaches.java
+++ b/main/src/cgeo/geocaching/cgeocaches.java
@@ -12,7 +12,6 @@ import cgeo.geocaching.connector.gc.SearchHandler;
import cgeo.geocaching.enumerations.CacheListType;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
-import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.export.ExportFactory;
import cgeo.geocaching.files.GPXImporter;
@@ -24,27 +23,17 @@ import cgeo.geocaching.network.Cookies;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.sorting.CacheComparator;
-import cgeo.geocaching.sorting.DateComparator;
-import cgeo.geocaching.sorting.DifficultyComparator;
+import cgeo.geocaching.sorting.ComparatorUserInterface;
import cgeo.geocaching.sorting.EventDateComparator;
-import cgeo.geocaching.sorting.FindsComparator;
-import cgeo.geocaching.sorting.GeocodeComparator;
-import cgeo.geocaching.sorting.InventoryComparator;
-import cgeo.geocaching.sorting.NameComparator;
-import cgeo.geocaching.sorting.PopularityComparator;
-import cgeo.geocaching.sorting.RatingComparator;
-import cgeo.geocaching.sorting.SizeComparator;
-import cgeo.geocaching.sorting.StateComparator;
-import cgeo.geocaching.sorting.StorageTimeComparator;
-import cgeo.geocaching.sorting.TerrainComparator;
import cgeo.geocaching.sorting.VisitComparator;
-import cgeo.geocaching.sorting.VoteComparator;
import cgeo.geocaching.ui.CacheListAdapter;
+import cgeo.geocaching.ui.LoggingUI;
import cgeo.geocaching.utils.GeoDirHandler;
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.lang3.StringUtils;
@@ -71,10 +60,8 @@ import android.widget.TextView;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
public class cgeocaches extends AbstractListActivity {
@@ -93,17 +80,7 @@ public class cgeocaches extends AbstractListActivity {
private static final int MENU_CREATE_LIST = 7;
private static final int MENU_DROP_LIST = 8;
private static final int MENU_INVERT_SELECTION = 9;
- private static final int MENU_SORT_DISTANCE = 10;
- private static final int MENU_SORT_DIFFICULTY = 11;
- private static final int MENU_SORT_TERRAIN = 12;
- private static final int MENU_SORT_SIZE = 13;
- private static final int MENU_SORT_FAVORITES = 14;
- private static final int MENU_SORT_NAME = 15;
- private static final int MENU_SORT_GEOCODE = 16;
private static final int MENU_SWITCH_LIST = 17;
- private static final int MENU_SORT_RATING = 18;
- private static final int MENU_SORT_VOTE = 19;
- private static final int MENU_SORT_INVENTORY = 20;
private static final int MENU_IMPORT_WEB = 21;
private static final int MENU_EXPORT = 22;
private static final int MENU_REMOVE_FROM_HISTORY = 23;
@@ -113,18 +90,14 @@ public class cgeocaches extends AbstractListActivity {
private static final int SUBMENU_SHOW_MAP = 54;
private static final int SUBMENU_MANAGE_LISTS = 55;
private static final int SUBMENU_MANAGE_OFFLINE = 56;
- private static final int SUBMENU_SORT = 57;
+ private static final int MENU_SORT = 57;
private static final int SUBMENU_MANAGE_HISTORY = 60;
- private static final int MENU_SORT_DATE = 61;
- private static final int MENU_SORT_FINDS = 62;
- private static final int MENU_SORT_STATE = 63;
private static final int MENU_RENAME_LIST = 64;
private static final int MENU_DROP_CACHES_AND_LIST = 65;
private static final int MENU_DEFAULT_NAVIGATION = 66;
private static final int MENU_NAVIGATION = 69;
private static final int MENU_STORE_CACHE = 73;
private static final int MENU_FILTER = 74;
- private static final int MENU_SORT_STORAGE = 75;
private static final int MSG_DONE = -1;
private static final int MSG_RESTART_GEO_AND_DIR = -2;
@@ -133,7 +106,6 @@ public class cgeocaches extends AbstractListActivity {
private String action = null;
private CacheListType type = null;
private Geopoint coords = null;
- private CacheType cacheType = Settings.getCacheType();
private SearchResult search = null;
private final List<cgCache> cacheList = new ArrayList<cgCache>();
private CacheListAdapter adapter = null;
@@ -141,7 +113,6 @@ public class cgeocaches extends AbstractListActivity {
private View listFooter = null;
private TextView listFooterText = null;
private final Progress progress = new Progress();
- private Float northHeading = 0f;
private String title = "";
private int detailTotal = 0;
private int detailProgress = 0;
@@ -151,41 +122,31 @@ public class cgeocaches extends AbstractListActivity {
private int listId = StoredList.TEMPORARY_LIST_ID; // Only meaningful for the OFFLINE type
private final GeoDirHandler geoDirHandler = new GeoDirHandler() {
- @Override
+ @Override
public void updateGeoData(final IGeoData geo) {
if (adapter == null) {
return;
}
- try {
- if (geo.getCoords() != null) {
- adapter.setActualCoordinates(geo.getCoords());
- }
-
- if (!Settings.isUseCompass() || geo.getSpeed() > 5) { // use GPS when speed is higher than 18 km/h
- if (!Settings.isUseCompass()) {
- adapter.setActualHeading(geo.getBearing());
- }
- if (northHeading != null) {
- adapter.setActualHeading(northHeading);
- }
- }
- } catch (Exception e) {
- Log.w("Failed to UpdateLocation location.");
+ if (geo.getCoords() != null) {
+ adapter.setActualCoordinates(geo.getCoords());
+ }
+ if (!Settings.isUseCompass() || geo.getSpeed() > 5) { // use GPS when speed is higher than 18 km/h
+ adapter.setActualHeading(geo.getBearing());
}
}
- @Override
- public void updateDirection(final float direction) {
- if (!Settings.isLiveList()) {
- return;
- }
+ @Override
+ public void updateDirection(final float direction) {
+ if (adapter == null || !Settings.isLiveList()) {
+ return;
+ }
- northHeading = DirectionProvider.getDirectionNow(cgeocaches.this, direction);
- if (northHeading != null && adapter != null && (app.currentGeo().getSpeed() <= 5)) { // use compass when speed is lower than 18 km/h) {
- adapter.setActualHeading(northHeading);
- }
- }
+ if (app.currentGeo().getSpeed() <= 5) { // use compass when speed is lower than 18 km/h) {
+ final float northHeading = DirectionProvider.getDirectionNow(cgeocaches.this, direction);
+ adapter.setActualHeading(northHeading);
+ }
+ }
};
private ContextMenuInfo lastMenuInfo;
@@ -202,8 +163,6 @@ public class cgeocaches extends AbstractListActivity {
try {
if (search != null) {
setTitle(title + " [" + search.getCount() + ']');
- cacheList.clear();
- cacheList.addAll(search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB));
} else {
setTitle(title);
}
@@ -248,11 +207,7 @@ public class cgeocaches extends AbstractListActivity {
return;
}
- final Geopoint coordsNow = app.currentGeo().getCoords();
- if (coordsNow != null) {
- adapter.setActualCoordinates(coordsNow);
- adapter.setActualHeading(northHeading);
- }
+ setAdapterCurrentCoordinates(false);
} catch (Exception e) {
showToast(res.getString(R.string.err_detail_cache_find_any));
Log.e("cgeocaches.loadCachesHandler: " + e.toString());
@@ -283,8 +238,7 @@ public class cgeocaches extends AbstractListActivity {
try {
if (search != null) {
setTitle(title + " [" + search.getCount() + "]");
- cacheList.clear();
- cacheList.addAll(search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB));
+ replaceCacheListFromSearch();
if (adapter != null) {
adapter.reFilter();
}
@@ -307,11 +261,7 @@ public class cgeocaches extends AbstractListActivity {
return;
}
- final Geopoint coordsNow = app.currentGeo().getCoords();
- if (coordsNow != null) {
- adapter.setActualCoordinates(coordsNow);
- adapter.setActualHeading(northHeading);
- }
+ setAdapterCurrentCoordinates(false);
} catch (Exception e) {
showToast(res.getString(R.string.err_detail_cache_find_next));
Log.e("cgeocaches.loadNextPageHandler: " + e.toString());
@@ -325,6 +275,12 @@ public class cgeocaches extends AbstractListActivity {
}
}
};
+
+ private void replaceCacheListFromSearch() {
+ cacheList.clear();
+ cacheList.addAll(search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB));
+ }
+
private Handler loadDetailsHandler = new Handler() {
@Override
@@ -364,11 +320,7 @@ public class cgeocaches extends AbstractListActivity {
}
}
- final Geopoint coordsNow = app.currentGeo().getCoords();
- if (coordsNow != null) {
- adapter.setActualCoordinates(coordsNow);
- adapter.setActualHeading(northHeading);
- }
+ setAdapterCurrentCoordinates(false);
showProgress(false);
progress.dismiss();
@@ -410,8 +362,7 @@ public class cgeocaches extends AbstractListActivity {
adapter.setSelectMode(false);
}
- cacheList.clear();
- cacheList.addAll(search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB));
+ replaceCacheListFromSearch();
progress.dismiss();
}
@@ -428,8 +379,7 @@ public class cgeocaches extends AbstractListActivity {
refreshCurrentList();
- cacheList.clear();
- cacheList.addAll(search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB));
+ replaceCacheListFromSearch();
progress.dismiss();
}
@@ -487,7 +437,6 @@ public class cgeocaches extends AbstractListActivity {
else {
extras = new Bundle();
}
- cacheType = Settings.getCacheType();
if (isInvokedFromAttachment()) {
type = CacheListType.OFFLINE;
if (coords == null) {
@@ -613,8 +562,8 @@ public class cgeocaches extends AbstractListActivity {
title = res.getString(R.string.map_map);
setTitle(title);
showProgress(true);
- SearchResult result = (SearchResult) extras.get(EXTRAS_SEARCH);
- search = new SearchResult(result);
+ search = (SearchResult) extras.get(EXTRAS_SEARCH);
+ replaceCacheListFromSearch();
loadCachesHandler.sendMessage(Message.obtain());
break;
default:
@@ -668,27 +617,33 @@ public class cgeocaches extends AbstractListActivity {
if (adapter != null) {
adapter.setSelectMode(false);
- final Geopoint coordsNow = app.currentGeo().getCoords();
- if (coordsNow != null) {
- adapter.setActualCoordinates(coordsNow);
- adapter.setActualHeading(northHeading);
- adapter.forceSort();
- }
+ setAdapterCurrentCoordinates(true);
}
if (loadCachesHandler != null && search != null) {
+ replaceCacheListFromSearch();
loadCachesHandler.sendEmptyMessage(0);
}
// refresh standard list if it has changed (new caches downloaded)
if (type == CacheListType.OFFLINE && listId >= StoredList.STANDARD_LIST_ID && search != null) {
- SearchResult newSearch = cgeoapplication.getInstance().getBatchOfStoredCaches(true, coords, cacheType, listId);
+ SearchResult newSearch = cgeoapplication.getInstance().getBatchOfStoredCaches(true, coords, Settings.getCacheType(), listId);
if (newSearch != null && newSearch.getTotal() != search.getTotal()) {
refreshCurrentList();
}
}
}
+ private void setAdapterCurrentCoordinates(final boolean forceSort) {
+ final Geopoint coordsNow = app.currentGeo().getCoords();
+ if (coordsNow != null) {
+ adapter.setActualCoordinates(coordsNow);
+ if (forceSort) {
+ adapter.forceSort();
+ }
+ }
+ }
+
@Override
public void onDestroy() {
if (adapter != null) {
@@ -710,34 +665,7 @@ public class cgeocaches extends AbstractListActivity {
menu.add(0, MENU_FILTER, 0, res.getString(R.string.caches_filter)).setIcon(R.drawable.ic_menu_filter);
if (type != CacheListType.HISTORY) {
- final SubMenu subMenuSort = menu.addSubMenu(0, SUBMENU_SORT, 0, res.getString(R.string.caches_sort)).setIcon(R.drawable.ic_menu_sort_alphabetically);
- subMenuSort.setHeaderTitle(res.getString(R.string.caches_sort_title));
-
- // sort the context menu labels alphabetically for easier reading
- final Map<String, Integer> comparators = new HashMap<String, Integer>();
- comparators.put(res.getString(R.string.caches_sort_distance), MENU_SORT_DISTANCE);
- comparators.put(res.getString(R.string.caches_sort_difficulty), MENU_SORT_DIFFICULTY);
- comparators.put(res.getString(R.string.caches_sort_terrain), MENU_SORT_TERRAIN);
- comparators.put(res.getString(R.string.caches_sort_size), MENU_SORT_SIZE);
- comparators.put(res.getString(R.string.caches_sort_favorites), MENU_SORT_FAVORITES);
- comparators.put(res.getString(R.string.caches_sort_name), MENU_SORT_NAME);
- comparators.put(res.getString(R.string.caches_sort_gccode), MENU_SORT_GEOCODE);
- comparators.put(res.getString(R.string.caches_sort_rating), MENU_SORT_RATING);
- comparators.put(res.getString(R.string.caches_sort_vote), MENU_SORT_VOTE);
- comparators.put(res.getString(R.string.caches_sort_inventory), MENU_SORT_INVENTORY);
- comparators.put(res.getString(R.string.caches_sort_date), MENU_SORT_DATE);
- comparators.put(res.getString(R.string.caches_sort_finds), MENU_SORT_FINDS);
- comparators.put(res.getString(R.string.caches_sort_state), MENU_SORT_STATE);
- comparators.put(res.getString(R.string.caches_sort_storage), MENU_SORT_STORAGE);
-
- final List<String> sortedLabels = new ArrayList<String>(comparators.keySet());
- Collections.sort(sortedLabels);
- for (String label : sortedLabels) {
- Integer id = comparators.get(label);
- subMenuSort.add(1, id, 0, label).setCheckable(true).setChecked(id == MENU_SORT_DISTANCE);
- }
-
- subMenuSort.setGroupCheckable(1, true, true);
+ menu.add(0, MENU_SORT, 0, res.getString(R.string.caches_sort)).setIcon(R.drawable.ic_menu_sort_alphabetically);
}
menu.add(0, MENU_SWITCH_SELECT_MODE, 0, res.getString(R.string.caches_select_mode)).setIcon(R.drawable.ic_menu_agenda);
@@ -806,7 +734,7 @@ public class cgeocaches extends AbstractListActivity {
setVisible(menu, MENU_SWITCH_SELECT_MODE, !isEmpty);
setVisible(menu, SUBMENU_MANAGE_HISTORY, !isEmpty);
setVisible(menu, SUBMENU_SHOW_MAP, !isEmpty);
- setVisible(menu, SUBMENU_SORT, !isEmpty);
+ setVisible(menu, MENU_SORT, !isEmpty);
setVisible(menu, MENU_REFRESH_STORED, !isEmpty && (isConcrete || type != CacheListType.OFFLINE));
setVisible(menu, MENU_DROP_CACHES, !isEmpty);
setVisible(menu, MENU_DROP_CACHES_AND_LIST, isConcrete && !isEmpty);
@@ -916,52 +844,10 @@ public class cgeocaches extends AbstractListActivity {
}
invalidateOptionsMenuCompatible();
return false;
- case MENU_SORT_DISTANCE:
- setComparator(item, null);
- return false;
- case MENU_SORT_DIFFICULTY:
- setComparator(item, new DifficultyComparator());
- return false;
- case MENU_SORT_TERRAIN:
- setComparator(item, new TerrainComparator());
- return false;
- case MENU_SORT_SIZE:
- setComparator(item, new SizeComparator());
- return false;
- case MENU_SORT_FAVORITES:
- setComparator(item, new PopularityComparator());
- return false;
- case MENU_SORT_NAME:
- setComparator(item, new NameComparator());
- return false;
- case MENU_SORT_GEOCODE:
- setComparator(item, new GeocodeComparator());
- return false;
- case MENU_SORT_STORAGE:
- setComparator(item, new StorageTimeComparator());
- return false;
case MENU_SWITCH_LIST:
selectList(null);
invalidateOptionsMenuCompatible();
return false;
- case MENU_SORT_RATING:
- setComparator(item, new RatingComparator());
- return false;
- case MENU_SORT_VOTE:
- setComparator(item, new VoteComparator());
- return false;
- case MENU_SORT_INVENTORY:
- setComparator(item, new InventoryComparator());
- return false;
- case MENU_SORT_DATE:
- setComparator(item, new DateComparator());
- return true;
- case MENU_SORT_FINDS:
- setComparator(item, new FindsComparator(app));
- return true;
- case MENU_SORT_STATE:
- setComparator(item, new StateComparator());
- return true;
case MENU_FILTER:
new FilterUserInterface(this).selectFilter(new RunnableWithArgument<IFilter>() {
@Override
@@ -978,6 +864,14 @@ public class cgeocaches extends AbstractListActivity {
}
});
return true;
+ case MENU_SORT:
+ new ComparatorUserInterface(this).selectComparator(adapter.getCacheComparator(), new RunnableWithArgument<CacheComparator>() {
+ @Override
+ public void run(CacheComparator selectedComparator) {
+ setComparator(selectedComparator);
+ }
+ });
+ return true;
case MENU_IMPORT_WEB:
importWeb();
return false;
@@ -997,12 +891,10 @@ public class cgeocaches extends AbstractListActivity {
return CacheListAppFactory.onMenuItemSelected(item, cacheList, this, search);
}
- private void setComparator(MenuItem item,
- CacheComparator comparator) {
+ private void setComparator(final CacheComparator comparator) {
if (adapter != null) {
adapter.setComparator(comparator);
}
- item.setChecked(true);
}
@Override
@@ -1032,7 +924,7 @@ public class cgeocaches extends AbstractListActivity {
if (cache.getCoords() != null) {
menu.add(0, MENU_DEFAULT_NAVIGATION, 0, NavigationAppFactory.getDefaultNavigationApplication().getName());
menu.add(1, MENU_NAVIGATION, 0, res.getString(R.string.cache_menu_navigate)).setIcon(R.drawable.ic_menu_mapmode);
- addVisitMenu(menu, cache);
+ LoggingUI.addMenuItems(menu, cache);
menu.add(0, MENU_CACHE_DETAILS, 0, res.getString(R.string.cache_menu_details));
}
if (cache.isOffline()) {
@@ -1094,9 +986,6 @@ public class cgeocaches extends AbstractListActivity {
case MENU_NAVIGATION:
NavigationAppFactory.showNavigationMenu(this, cache, null, null);
break;
- case MENU_LOG_VISIT:
- cache.logVisit(this);
- break;
case MENU_CACHE_DETAILS:
final Intent cachesIntent = new Intent(this, CacheDetailActivity.class);
cachesIntent.putExtra("geocode", cache.getGeocode().toUpperCase());
@@ -1107,6 +996,7 @@ public class cgeocaches extends AbstractListActivity {
cache.drop(new Handler() {
@Override
public void handleMessage(Message msg) {
+ adapter.notifyDataSetChanged();
refreshCurrentList();
}
});
@@ -1134,8 +1024,7 @@ public class cgeocaches extends AbstractListActivity {
// in Android:
// https://code.google.com/p/android/issues/detail?id=7139
lastMenuInfo = info;
- // create a search for a single cache (as if in details view)
- cache.logOffline(this, LogType.getById(id - MENU_LOG_VISIT_OFFLINE));
+ LoggingUI.onMenuItemSelected(item, this, cache);
}
return true;
@@ -1381,6 +1270,7 @@ public class cgeocaches extends AbstractListActivity {
@Override
public void run() {
search = cgeoapplication.getInstance().getBatchOfStoredCaches(true, coords, Settings.getCacheType(), listId);
+ replaceCacheListFromSearch();
loadCachesHandler.sendMessage(Message.obtain());
}
}
@@ -1389,6 +1279,7 @@ public class cgeocaches extends AbstractListActivity {
@Override
public void run() {
search = cgeoapplication.getInstance().getHistoryOfCaches(true, coords != null ? Settings.getCacheType() : CacheType.ALL);
+ replaceCacheListFromSearch();
loadCachesHandler.sendMessage(Message.obtain());
}
}
@@ -1414,7 +1305,8 @@ public class cgeocaches extends AbstractListActivity {
@Override
public void runSearch() {
- search = GCParser.searchByCoords(coords, cacheType, Settings.isShowCaptcha());
+ search = GCParser.searchByCoords(coords, Settings.getCacheType(), Settings.isShowCaptcha());
+ replaceCacheListFromSearch();
}
}
@@ -1428,7 +1320,8 @@ public class cgeocaches extends AbstractListActivity {
@Override
public void runSearch() {
- search = GCParser.searchByKeyword(keyword, cacheType, Settings.isShowCaptcha());
+ search = GCParser.searchByKeyword(keyword, Settings.getCacheType(), Settings.isShowCaptcha());
+ replaceCacheListFromSearch();
}
}
@@ -1442,7 +1335,8 @@ public class cgeocaches extends AbstractListActivity {
@Override
public void runSearch() {
- search = GCParser.searchByUsername(username, cacheType, Settings.isShowCaptcha());
+ search = GCParser.searchByUsername(username, Settings.getCacheType(), Settings.isShowCaptcha());
+ replaceCacheListFromSearch();
}
}
@@ -1456,7 +1350,8 @@ public class cgeocaches extends AbstractListActivity {
@Override
public void runSearch() {
- search = GCParser.searchByOwner(username, cacheType, Settings.isShowCaptcha());
+ search = GCParser.searchByOwner(username, Settings.getCacheType(), Settings.isShowCaptcha());
+ replaceCacheListFromSearch();
}
}
diff --git a/main/src/cgeo/geocaching/cgeoimages.java b/main/src/cgeo/geocaching/cgeoimages.java
index b2f7ad6..6de6444 100644
--- a/main/src/cgeo/geocaching/cgeoimages.java
+++ b/main/src/cgeo/geocaching/cgeoimages.java
@@ -34,7 +34,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
+import java.util.LinkedList;
import java.util.List;
public class cgeoimages extends AbstractActivity {
@@ -55,7 +55,11 @@ public class cgeoimages extends AbstractActivity {
private BitmapDrawable currentDrawable;
private cgImage currentImage;
- static private final Collection<Bitmap> bitmaps = Collections.synchronizedCollection(new ArrayList<Bitmap>());
+ // We could use a Set here, but we will insert no duplicates, so there is no need to check for uniqueness.
+ private final Collection<Bitmap> bitmaps = new LinkedList<Bitmap>();
+ private int message;
+ private boolean offline;
+ private ArrayList<cgImage> imageNames;
private void loadImages(final List<cgImage> images, final int progressMessage, final boolean offline) {
@@ -175,31 +179,34 @@ public class cgeoimages extends AbstractActivity {
setTitle(res.getString(img_type == SPOILER_IMAGES ? R.string.cache_spoiler_images_title : R.string.cache_log_images_title));
inflater = getLayoutInflater();
- if (imagesView == null) {
- imagesView = (LinearLayout) findViewById(R.id.spoiler_list);
- }
+ imagesView = (LinearLayout) findViewById(R.id.spoiler_list);
- final ArrayList<cgImage> images = extras.getParcelableArrayList("images");
- if (CollectionUtils.isEmpty(images)) {
+ imageNames = extras.getParcelableArrayList("images");
+ if (CollectionUtils.isEmpty(imageNames)) {
showToast(res.getString(R.string.warn_load_images));
finish();
return;
}
- final int message = img_type == SPOILER_IMAGES ? R.string.cache_spoiler_images_loading : R.string.cache_log_images_loading;
- final boolean offline = app.isOffline(geocode, null) && (img_type == SPOILER_IMAGES || Settings.isStoreLogImages());
+ message = img_type == SPOILER_IMAGES ? R.string.cache_spoiler_images_loading : R.string.cache_log_images_loading;
+ offline = app.isOffline(geocode, null) && (img_type == SPOILER_IMAGES || Settings.isStoreLogImages());
+ }
- loadImages(images, message, offline);
+ @Override
+ public void onStart() {
+ super.onStart();
+ loadImages(imageNames, message, offline);
}
@Override
- public void onDestroy() {
+ public void onStop() {
// Reclaim native memory faster than the finalizers would
- for (Bitmap b : bitmaps) {
+ imagesView.removeAllViews();
+ for (final Bitmap b : bitmaps) {
b.recycle();
}
bitmaps.clear();
- super.onDestroy();
+ super.onStop();
}
private void viewImageInStandardApp(final BitmapDrawable image) {
diff --git a/main/src/cgeo/geocaching/cgeonavigate.java b/main/src/cgeo/geocaching/cgeonavigate.java
index 567ae74..53470b3 100644
--- a/main/src/cgeo/geocaching/cgeonavigate.java
+++ b/main/src/cgeo/geocaching/cgeonavigate.java
@@ -2,8 +2,7 @@ package cgeo.geocaching;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.geopoint.HumanDistance;
-import cgeo.geocaching.geopoint.IConversion;
+import cgeo.geocaching.geopoint.Units;
import cgeo.geocaching.maps.CGeoMap;
import cgeo.geocaching.ui.CompassView;
import cgeo.geocaching.utils.GeoDirHandler;
@@ -18,6 +17,7 @@ import android.os.PowerManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
+import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
@@ -29,6 +29,7 @@ public class cgeonavigate extends AbstractActivity {
private static final String EXTRAS_COORDS = "coords";
private static final String EXTRAS_NAME = "name";
private static final String EXTRAS_GEOCODE = "geocode";
+ private static final String EXTRAS_CACHE_INFO = "cacheinfo";
private static final List<IWaypoint> coordinates = new ArrayList<IWaypoint>();
private static final int MENU_MAP = 0;
private static final int MENU_SWITCH_COMPASS_GPS = 1;
@@ -37,6 +38,7 @@ public class cgeonavigate extends AbstractActivity {
private float cacheHeading = 0;
private String title = null;
private String name = null;
+ private String info = null;
private TextView navType = null;
private TextView navAccuracy = null;
private TextView navSatellites = null;
@@ -65,6 +67,7 @@ public class cgeonavigate extends AbstractActivity {
title = geocode;
name = extras.getString(EXTRAS_NAME);
dstCoords = (Geopoint) extras.getParcelable(EXTRAS_COORDS);
+ info = extras.getString(EXTRAS_CACHE_INFO);
if (StringUtils.isNotBlank(name)) {
if (StringUtils.isNotBlank(title)) {
@@ -86,6 +89,7 @@ public class cgeonavigate extends AbstractActivity {
// set header
setTitle();
setDestCoords();
+ setCacheInfo();
// get textviews once
compassView = (CompassView) findViewById(R.id.rose);
@@ -179,6 +183,7 @@ public class cgeonavigate extends AbstractActivity {
dstCoords = coordinate.getCoords();
setTitle();
setDestCoords();
+ setCacheInfo();
updateDistanceInfo(app.currentGeo());
Log.d("destination set: " + title + " (" + dstCoords + ")");
@@ -204,6 +209,16 @@ public class cgeonavigate extends AbstractActivity {
((TextView) findViewById(R.id.destination)).setText(dstCoords.toString());
}
+ private void setCacheInfo() {
+ final TextView cacheInfoView = (TextView) findViewById(R.id.cacheinfo);
+ if (info == null) {
+ cacheInfoView.setVisibility(View.GONE);
+ return;
+ }
+ cacheInfoView.setVisibility(View.VISIBLE);
+ cacheInfoView.setText(info);
+ }
+
private void updateDistanceInfo(final IGeoData geo) {
if (geo.getCoords() == null || dstCoords == null) {
return;
@@ -217,7 +232,7 @@ public class cgeonavigate extends AbstractActivity {
}
cacheHeading = geo.getCoords().bearingTo(dstCoords);
- distanceView.setText(HumanDistance.getHumanDistance(geo.getCoords().distanceTo(dstCoords)));
+ distanceView.setText(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(dstCoords)));
headingView.setText(Math.round(cacheHeading) + "°");
}
@@ -233,29 +248,22 @@ public class cgeonavigate extends AbstractActivity {
}
if (geo.getCoords() != null) {
- String satellites;
- if (geo.getSatellitesFixed() > 0) {
- satellites = res.getString(R.string.loc_sat) + ": " + geo.getSatellitesFixed() + "/" + geo.getSatellitesVisible();
- } else if (geo.getSatellitesVisible() >= 0) {
- satellites = res.getString(R.string.loc_sat) + ": 0/" + geo.getSatellitesVisible();
- } else {
- satellites = "";
+ if (geo.getSatellitesVisible() >= 0) {
+ navSatellites.setText(res.getString(R.string.loc_sat) + ": " + geo.getSatellitesFixed() + "/" + geo.getSatellitesVisible());
+ }
+ else {
+ navSatellites.setText("");
}
- navSatellites.setText(satellites);
navType.setText(res.getString(geo.getLocationProvider().resourceId));
if (geo.getAccuracy() >= 0) {
- if (Settings.isUseMetricUnits()) {
- navAccuracy.setText("±" + Math.round(geo.getAccuracy()) + " m");
- } else {
- navAccuracy.setText("±" + Math.round(geo.getAccuracy() * IConversion.METERS_TO_FEET) + " ft");
- }
+ navAccuracy.setText("±" + Units.getDistanceFromMeters(geo.getAccuracy()));
} else {
navAccuracy.setText(null);
}
if (geo.getAltitude() != 0.0f) {
- final String humanAlt = HumanDistance.getHumanDistance((float) geo.getAltitude() / 1000);
+ final String humanAlt = Units.getDistanceFromMeters((float) geo.getAltitude());
navLocation.setText(geo.getCoords() + " | " + humanAlt);
} else {
navLocation.setText(geo.getCoords().toString());
@@ -290,7 +298,8 @@ public class cgeonavigate extends AbstractActivity {
}
}
- public static void startActivity(final Context context, final String geocode, final String displayedName, final Geopoint coords, final Collection<IWaypoint> coordinatesWithType) {
+ public static void startActivity(final Context context, final String geocode, final String displayedName, final Geopoint coords, final Collection<IWaypoint> coordinatesWithType,
+ final String info) {
coordinates.clear();
if (coordinatesWithType != null) { // avoid possible NPE
coordinates.addAll(coordinatesWithType);
@@ -302,6 +311,12 @@ public class cgeonavigate extends AbstractActivity {
if (null != displayedName) {
navigateIntent.putExtra(EXTRAS_NAME, displayedName);
}
+ navigateIntent.putExtra(EXTRAS_CACHE_INFO, info);
context.startActivity(navigateIntent);
}
+
+ public static void startActivity(final Context context, final String geocode, final String displayedName, final Geopoint coords, final Collection<IWaypoint> coordinatesWithType) {
+ cgeonavigate.startActivity(context, geocode, displayedName, coords, coordinatesWithType, null);
+ }
+
}
diff --git a/main/src/cgeo/geocaching/cgeotrackable.java b/main/src/cgeo/geocaching/cgeotrackable.java
index c635e41..acd351d 100644
--- a/main/src/cgeo/geocaching/cgeotrackable.java
+++ b/main/src/cgeo/geocaching/cgeotrackable.java
@@ -3,7 +3,7 @@ package cgeo.geocaching;
import cgeo.geocaching.activity.AbstractActivity;
import cgeo.geocaching.connector.gc.GCParser;
import cgeo.geocaching.enumerations.LogType;
-import cgeo.geocaching.geopoint.HumanDistance;
+import cgeo.geocaching.geopoint.Units;
import cgeo.geocaching.network.HtmlImage;
import cgeo.geocaching.ui.CacheDetailsCreator;
import cgeo.geocaching.ui.Formatter;
@@ -166,7 +166,7 @@ public class cgeotrackable extends AbstractActivity {
// trackable distance
if (trackable.getDistance() >= 0) {
- details.add(R.string.trackable_distance, HumanDistance.getHumanDistance(trackable.getDistance()));
+ details.add(R.string.trackable_distance, Units.getDistanceFromKilometers(trackable.getDistance()));
}
// trackable goal
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel11.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel11.java
index f933071..a425ee5 100644
--- a/main/src/cgeo/geocaching/compatibility/AndroidLevel11.java
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel11.java
@@ -1,10 +1,12 @@
package cgeo.geocaching.compatibility;
+import android.annotation.TargetApi;
import android.app.Activity;
/**
* Android level 11 support
*/
+@TargetApi(11)
public class AndroidLevel11 implements AndroidLevel11Interface {
@Override
diff --git a/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java b/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java
index 859fdf1..ea5a795 100644
--- a/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java
+++ b/main/src/cgeo/geocaching/compatibility/AndroidLevel8.java
@@ -2,10 +2,12 @@ package cgeo.geocaching.compatibility;
import cgeo.geocaching.utils.Log;
+import android.annotation.TargetApi;
import android.app.Activity;
import android.app.backup.BackupManager;
import android.view.Display;
+@TargetApi(8)
public class AndroidLevel8 implements AndroidLevel8Interface {
@Override
diff --git a/main/src/cgeo/geocaching/compatibility/Compatibility.java b/main/src/cgeo/geocaching/compatibility/Compatibility.java
index d869c58..0821655 100644
--- a/main/src/cgeo/geocaching/compatibility/Compatibility.java
+++ b/main/src/cgeo/geocaching/compatibility/Compatibility.java
@@ -1,6 +1,7 @@
package cgeo.geocaching.compatibility;
import cgeo.geocaching.activity.AbstractActivity;
+import cgeo.geocaching.utils.AngleUtils;
import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.reflect.MethodUtils;
@@ -40,23 +41,22 @@ public final class Compatibility {
/**
* Add 90, 180 or 270 degrees to the given rotation.
- * <br/>
- * Note: the result is not normalized and may fall outside your desired range.
*
* @param directionNowPre the direction in degrees before adjustment
* @param activity the activity whose rotation is used to adjust the direction
- * @return the adjusted direction
+ * @return the adjusted direction, in the [0, 360[ range
*/
public static float getDirectionNow(final float directionNowPre, final Activity activity) {
+ float offset = 0;
if (isLevel8) {
try {
final int rotation = level8.getRotation(activity);
if (rotation == Surface.ROTATION_90) {
- return directionNowPre + 90;
+ offset = 90;
} else if (rotation == Surface.ROTATION_180) {
- return directionNowPre + 180;
+ offset = 180;
} else if (rotation == Surface.ROTATION_270) {
- return directionNowPre + 270;
+ offset = 270;
}
} catch (final Exception e) {
// This should never happen: IllegalArgumentException, IllegalAccessException or InvocationTargetException
@@ -66,10 +66,10 @@ public final class Compatibility {
final Display display = activity.getWindowManager().getDefaultDisplay();
final int rotation = display.getOrientation();
if (rotation == Configuration.ORIENTATION_LANDSCAPE) {
- return directionNowPre + 90;
+ offset = 90;
}
}
- return directionNowPre;
+ return AngleUtils.normalize(directionNowPre + offset);
}
public static void dataChanged(final String name) {
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConstants.java b/main/src/cgeo/geocaching/connector/gc/GCConstants.java
index 72c5259..ff1b442 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConstants.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConstants.java
@@ -37,11 +37,12 @@ public final class GCConstants {
public final static Pattern PATTERN_NAME = Pattern.compile("<span id=\"ctl00_ContentBody_CacheName\">(.*?)</span>");
public final static Pattern PATTERN_DIFFICULTY = Pattern.compile("<span id=\"ctl00_ContentBody_uxLegendScale\"[^>]*>[^<]*<img src=\"[^\"]*/images/stars/stars([0-9_]+)\\.gif\"");
public final static Pattern PATTERN_TERRAIN = Pattern.compile("<span id=\"ctl00_ContentBody_Localize[\\d]+\"[^>]*>[^<]*<img src=\"[^\"]*/images/stars/stars([0-9_]+)\\.gif\"");
- public final static Pattern PATTERN_OWNERREAL = Pattern.compile("<a id=\"ctl00_ContentBody_uxFindLinksHiddenByThisUser\" href=\"[^\"]*/seek/nearest\\.aspx\\?u=(.*?)\"");
+ public final static Pattern PATTERN_OWNER_USERID = Pattern.compile("<a id=\"ctl00_ContentBody_uxFindLinksHiddenByThisUser\" href=\"[^\"]*/seek/nearest\\.aspx\\?u=(.*?)\"");
public final static Pattern PATTERN_FOUND = Pattern.compile("<a id=\"ctl00_ContentBody_hlFoundItLog\"[^<]*<img src=\".*/images/stockholm/16x16/check\\.gif\"[^>]*>[^<]*</a>[^<]*</p>");
public final static Pattern PATTERN_FOUND_ALTERNATIVE = Pattern.compile("<div class=\"StatusInformationWidget FavoriteWidget\"");
- public final static Pattern PATTERN_OWNER = Pattern.compile("<div id=\"ctl00_ContentBody_mcd1\">[^<]+<a href=\"[^\"]+\">([^<]+)</a></div>");
- public final static Pattern PATTERN_TYPE = Pattern.compile("<img src=\"[^\"]*/WptTypes/\\d+\\.gif\" alt=\"([^\"]+?)\" title=\"[^\"]+\" />");
+ public final static Pattern PATTERN_FOUND_DATE = Pattern.compile("You logged this as Found on ([^.]+?)\\.[^<]*</a>[^<]*</p>");
+ public final static Pattern PATTERN_OWNER_DISPLAYNAME = Pattern.compile("<div id=\"ctl00_ContentBody_mcd1\">[^<]+<a href=\"[^\"]+\">([^<]+)</a></div>");
+ public final static Pattern PATTERN_TYPE = Pattern.compile("<img src=\"[^\"]*/WptTypes/\\d+\\.gif\" alt=\"([^\"]+?)\"[^>]*>");
public final static Pattern PATTERN_HIDDEN = Pattern.compile("<div id=\"ctl00_ContentBody_mcd2\">\\W*Hidden[\\s:]*([^<]+?)</div>");
public final static Pattern PATTERN_HIDDENEVENT = Pattern.compile("Event\\s*Date\\s*:\\s*([^<]+)<div id=\"calLinks\">", Pattern.DOTALL);
public final static Pattern PATTERN_FAVORITE = Pattern.compile("<div id=\"pnlFavoriteCache\">"); // without 'class="hideMe"' inside the tag !
@@ -54,8 +55,7 @@ public final class GCConstants {
public final static Pattern PATTERN_ATTRIBUTES = Pattern.compile("<h3 class=\"WidgetHeader\">[^<]*<img[^>]+>\\W*Attributes[^<]*</h3>[^<]*<div class=\"WidgetBody\">((?:[^<]*<img src=\"[^\"]+\" alt=\"[^\"]+\"[^>]*>)+?)[^<]*<p");
/** Two groups ! */
public final static Pattern PATTERN_ATTRIBUTESINSIDE = Pattern.compile("[^<]*<img src=\"([^\"]+)\" alt=\"([^\"]+?)\"");
- public final static Pattern PATTERN_SPOILERS = Pattern.compile("<p class=\"NoPrint\">\\s+((?:<a href=\"http://img\\.geocaching\\.com/cache/[^.]+\\.jpg\"[^>]+><img class=\"StatusIcon\"[^>]+><span>[^<]+</span></a><br />(?:[^<]+<br /><br />)?)+)\\s+</p>");
- public final static Pattern PATTERN_SPOILERSINSIDE = Pattern.compile("<a href=\"(http://img\\.geocaching\\.com/cache/[^.]+\\.jpg)\"[^>]+><img class=\"StatusIcon\"[^>]+><span>([^<]+)</span></a><br />(?:([^<]+)<br /><br />)?");
+ public final static Pattern PATTERN_SPOILER_IMAGE = Pattern.compile("<a href=\"(http://img\\.geocaching\\.com/cache/[^.]+\\.jpg)\"[^>]+><img[^>]+><span>([^<]+)</span></a>(?:<br />([^<]+)<br /><br />)?");
public final static Pattern PATTERN_INVENTORY = Pattern.compile("<span id=\"ctl00_ContentBody_uxTravelBugList_uxInventoryLabel\">\\W*Inventory[^<]*</span>[^<]*</h3>[^<]*<div class=\"WidgetBody\">([^<]*<ul>(([^<]*<li>[^<]*<a href=\"[^\"]+\"[^>]*>[^<]*<img src=\"[^\"]+\"[^>]*>[^<]*<span>[^<]+<\\/span>[^<]*<\\/a>[^<]*<\\/li>)+)[^<]*<\\/ul>)?");
public final static Pattern PATTERN_INVENTORYINSIDE = Pattern.compile("[^<]*<li>[^<]*<a href=\"[a-z0-9\\-\\_\\.\\?\\/\\:\\@]*\\/track\\/details\\.aspx\\?guid=([0-9a-z\\-]+)[^\"]*\"[^>]*>[^<]*<img src=\"[^\"]+\"[^>]*>[^<]*<span>([^<]+)<\\/span>[^<]*<\\/a>[^<]*<\\/li>");
public final static Pattern PATTERN_WATCHLIST = Pattern.compile("icon_stop_watchlist.gif");
diff --git a/main/src/cgeo/geocaching/connector/gc/GCMap.java b/main/src/cgeo/geocaching/connector/gc/GCMap.java
index a8509b8..c71b859 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCMap.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCMap.java
@@ -10,7 +10,7 @@ import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy;
import cgeo.geocaching.enumerations.LiveMapStrategy.StrategyFlag;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.geopoint.IConversion;
+import cgeo.geocaching.geopoint.Units;
import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.ui.Formatter;
@@ -88,7 +88,7 @@ public class GCMap {
JSONObject typeObj = dataObject.getJSONObject("type");
cache.setType(CacheType.getByPattern(typeObj.getString("text"))); // Traditional Cache
JSONObject ownerObj = dataObject.getJSONObject("owner");
- cache.setOwner(ownerObj.getString("text"));
+ cache.setOwnerDisplayName(ownerObj.getString("text"));
result.addCache(cache);
@@ -243,12 +243,7 @@ public class GCMap {
SearchResult result = searchByViewport(viewport, tokens, strategy);
if (Settings.isDebug()) {
- String text = Formatter.SEPARATOR + strategy.getL10n() + Formatter.SEPARATOR;
- if (Settings.isUseMetricUnits()) {
- text += speed + " km/h";
- } else {
- text += speed / IConversion.MILES_TO_KILOMETER + " mph";
- }
+ StringBuilder text = new StringBuilder(Formatter.SEPARATOR).append(strategy.getL10n()).append(Formatter.SEPARATOR).append(Units.getSpeed(speed));
result.setUrl(result.getUrl() + text);
}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java
index 053c248..2ca505d 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCParser.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java
@@ -44,6 +44,7 @@ import android.net.Uri;
import android.text.Html;
import android.text.Spannable;
import android.text.Spanned;
+import android.text.style.ForegroundColorSpan;
import android.text.style.StrikethroughSpan;
import java.net.URLDecoder;
@@ -225,6 +226,9 @@ public abstract class GCParser {
if (cache.isDisabled() || cache.isArchived()) { // strike
cache.getNameSp().setSpan(new StrikethroughSpan(), 0, cache.getNameSp().toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
+ if (cache.isArchived()) {
+ cache.getNameSp().setSpan(new ForegroundColorSpan(cgeoapplication.getInstance().getResources().getColor(R.color.archived_cache_color)), 0, cache.getNameSp().toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
}
searchResult.addCache(cache);
@@ -378,9 +382,9 @@ public abstract class GCParser {
cache.setName(cacheName);
// owner real name
- cache.setOwnerReal(URLDecoder.decode(BaseUtils.getMatch(page, GCConstants.PATTERN_OWNERREAL, true, cache.getOwnerReal())));
+ cache.setOwnerUserId(URLDecoder.decode(BaseUtils.getMatch(page, GCConstants.PATTERN_OWNER_USERID, true, cache.getOwnerUserId())));
- cache.setOwn(StringUtils.equalsIgnoreCase(cache.getOwnerReal(), Settings.getUsername()));
+ cache.setOwn(StringUtils.equalsIgnoreCase(cache.getOwnerUserId(), Settings.getUsername()));
String tableInside = page;
@@ -406,7 +410,7 @@ public abstract class GCParser {
}
// owner
- cache.setOwner(StringEscapeUtils.unescapeHtml4(BaseUtils.getMatch(tableInside, GCConstants.PATTERN_OWNER, true, cache.getOwner())).toString());
+ cache.setOwnerDisplayName(StringEscapeUtils.unescapeHtml4(BaseUtils.getMatch(tableInside, GCConstants.PATTERN_OWNER_DISPLAYNAME, true, cache.getOwnerDisplayName())));
// hidden
try {
@@ -436,6 +440,17 @@ public abstract class GCParser {
// cache found
cache.setFound(BaseUtils.matches(page, GCConstants.PATTERN_FOUND) || BaseUtils.matches(page, GCConstants.PATTERN_FOUND_ALTERNATIVE));
+ // cache found date
+ try {
+ final String foundDateString = BaseUtils.getMatch(page, GCConstants.PATTERN_FOUND_DATE, true, null);
+ if (StringUtils.isNotBlank(foundDateString)) {
+ cache.setVisitedDate(Login.parseGcCustomDate(foundDateString).getTime());
+ }
+ } catch (ParseException e) {
+ // failed to parse cache found date
+ Log.w("GCParser.parseCache: Failed to parse cache found date");
+ }
+
// cache type
cache.setType(CacheType.getByPattern(BaseUtils.getMatch(page, GCConstants.PATTERN_TYPE, true, cache.getType().id)));
@@ -508,35 +523,32 @@ public abstract class GCParser {
// cache spoilers
try {
- final String spoilers = BaseUtils.getMatch(page, GCConstants.PATTERN_SPOILERS, false, null);
- if (null != spoilers) {
- if (CancellableHandler.isCancelled(handler)) {
- return null;
- }
- CancellableHandler.sendLoadProgressDetail(handler, R.string.cache_dialog_loading_details_status_spoilers);
+ if (CancellableHandler.isCancelled(handler)) {
+ return null;
+ }
+ CancellableHandler.sendLoadProgressDetail(handler, R.string.cache_dialog_loading_details_status_spoilers);
- final Matcher matcherSpoilersInside = GCConstants.PATTERN_SPOILERSINSIDE.matcher(spoilers);
+ final Matcher matcherSpoilersInside = GCConstants.PATTERN_SPOILER_IMAGE.matcher(page);
- while (matcherSpoilersInside.find()) {
- // the original spoiler URL (include .../display/... contains a low-resolution image
- // if we shorten the URL we get the original-resolution image
- String url = matcherSpoilersInside.group(1).replace("/display", "");
+ while (matcherSpoilersInside.find()) {
+ // the original spoiler URL (include .../display/... contains a low-resolution image
+ // if we shorten the URL we get the original-resolution image
+ String url = matcherSpoilersInside.group(1).replace("/display", "");
- String title = null;
- if (matcherSpoilersInside.group(2) != null) {
- title = matcherSpoilersInside.group(2);
- }
- String description = null;
- if (matcherSpoilersInside.group(3) != null) {
- description = matcherSpoilersInside.group(3);
- }
- final cgImage spoiler = new cgImage(url, title, description);
+ String title = null;
+ if (matcherSpoilersInside.group(2) != null) {
+ title = matcherSpoilersInside.group(2);
+ }
+ String description = null;
+ if (matcherSpoilersInside.group(3) != null) {
+ description = matcherSpoilersInside.group(3);
+ }
+ final cgImage spoiler = new cgImage(url, title, description);
- if (cache.getSpoilers() == null) {
- cache.setSpoilers(new ArrayList<cgImage>());
- }
- cache.getSpoilers().add(spoiler);
+ if (cache.getSpoilers() == null) {
+ cache.setSpoilers(new ArrayList<cgImage>());
}
+ cache.getSpoilers().add(spoiler);
}
} catch (Exception e) {
// failed to parse cache spoilers
diff --git a/main/src/cgeo/geocaching/connector/gc/Login.java b/main/src/cgeo/geocaching/connector/gc/Login.java
index 39f81f0..8c79aca 100644
--- a/main/src/cgeo/geocaching/connector/gc/Login.java
+++ b/main/src/cgeo/geocaching/connector/gc/Login.java
@@ -144,7 +144,7 @@ public abstract class Login {
return StatusCode.NO_ERROR;
}
- public static void setActualCachesFound(final int found) {
+ static void setActualCachesFound(final int found) {
actualCachesFound = found;
}
@@ -152,7 +152,7 @@ public abstract class Login {
return actualStatus;
}
- public static void setActualStatus(final String status) {
+ private static void setActualStatus(final String status) {
actualStatus = status;
}
@@ -160,7 +160,7 @@ public abstract class Login {
return actualLoginStatus;
}
- public static void setActualLoginStatus(boolean loginStatus) {
+ private static void setActualLoginStatus(boolean loginStatus) {
actualLoginStatus = loginStatus;
}
@@ -168,7 +168,7 @@ public abstract class Login {
return actualUserName;
}
- public static void setActualUserName(String userName) {
+ private static void setActualUserName(String userName) {
actualUserName = userName;
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
index 0212a64..8bdb9a4 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
@@ -133,7 +133,7 @@ final public class OkapiClient {
// not used: url
final JSONObject owner = response.getJSONObject(CACHE_OWNER);
- cache.setOwner(parseUser(owner));
+ cache.setOwnerDisplayName(parseUser(owner));
cache.getLogCounts().put(LogType.FOUND_IT, response.getInt(CACHE_FOUNDS));
cache.getLogCounts().put(LogType.DIDNT_FIND_IT, response.getInt(CACHE_NOTFOUNDS));
diff --git a/main/src/cgeo/geocaching/enumerations/CacheType.java b/main/src/cgeo/geocaching/enumerations/CacheType.java
index be66de1..730c989 100644
--- a/main/src/cgeo/geocaching/enumerations/CacheType.java
+++ b/main/src/cgeo/geocaching/enumerations/CacheType.java
@@ -31,7 +31,14 @@ public enum CacheType {
/** No real cache type -> filter */
ALL("all", "display all caches", "9a79e6ce-3344-409c-bbe9-496530baf758", R.string.all_types, R.drawable.type_unknown);
+ /**
+ * id field is used when for storing caches in the database.
+ */
public final String id;
+ /**
+ * human readable name of the cache type<br>
+ * used in web parsing as well as for gpx import/export.
+ */
public final String pattern;
public final String guid;
private final int stringId;
diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java
index ad39acd..e87555f 100644
--- a/main/src/cgeo/geocaching/export/FieldnoteExport.java
+++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java
@@ -169,7 +169,7 @@ class FieldnoteExport extends AbstractExport {
Writer fw = null;
try {
os = new FileOutputStream(exportFile);
- fw = new OutputStreamWriter(os, "ISO-8859-1"); // gc.com doesn't support neither UTF-8 nor html entities
+ fw = new OutputStreamWriter(os, "UTF-16");
fw.write(fieldNoteBuffer.toString());
} catch (IOException e) {
Log.e("FieldnoteExport.ExportTask export", e);
diff --git a/main/src/cgeo/geocaching/export/GpxExport.java b/main/src/cgeo/geocaching/export/GpxExport.java
index 156d9d4..9bc3963 100644
--- a/main/src/cgeo/geocaching/export/GpxExport.java
+++ b/main/src/cgeo/geocaching/export/GpxExport.java
@@ -2,6 +2,7 @@ package cgeo.geocaching.export;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
+import cgeo.geocaching.Settings;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeoapplication;
@@ -16,9 +17,15 @@ import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringEscapeUtils;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.ProgressDialog;
+import android.content.Intent;
+import android.net.Uri;
import android.os.AsyncTask;
import android.os.Environment;
+import android.view.View;
+import android.widget.Button;
+import android.widget.CheckBox;
import java.io.BufferedWriter;
import java.io.File;
@@ -26,6 +33,7 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -39,7 +47,48 @@ class GpxExport extends AbstractExport {
@Override
public void export(final List<cgCache> caches, final Activity activity) {
- new ExportTask(caches, activity).execute((Void) null);
+ if (null == activity) {
+ // No activity given, so no user interaction possible.
+ // Start export with default parameters.
+ new ExportTask(caches, activity).execute((Void) null);
+
+ } else {
+ // Show configuration dialog
+ new ExportOptionsDialog(caches, activity).show();
+ }
+ }
+
+ /**
+ * A dialog to allow the user to set options for the export.
+ *
+ * Currently available option is: opening of share menu after successful export
+ */
+ private class ExportOptionsDialog extends AlertDialog {
+ public ExportOptionsDialog(final List<cgCache> caches, final Activity activity) {
+ super(activity);
+
+ View layout = activity.getLayoutInflater().inflate(R.layout.gpx_export_dialog, null);
+ setView(layout);
+
+ final CheckBox shareOption = (CheckBox) layout.findViewById(R.id.share);
+
+ shareOption.setChecked(Settings.getShareAfterExport());
+
+ shareOption.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Settings.setShareAfterExport(shareOption.isChecked());
+ }
+ });
+
+ ((Button) layout.findViewById(R.id.export)).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dismiss();
+ new ExportTask(caches, activity).execute((Void) null);
+ }
+ });
+ }
}
private class ExportTask extends AsyncTask<Void, Integer, Boolean> {
@@ -88,7 +137,6 @@ class GpxExport extends AbstractExport {
gpx.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
gpx.write("<gpx version=\"1.0\" creator=\"c:geo - http://www.cgeo.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.topografix.com/GPX/1/0\" xsi:schemaLocation=\"http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.groundspeak.com/cache/1/0/1 http://www.groundspeak.com/cache/1/0/1/cache.xsd\">");
-
for (int i = 0; i < caches.size(); i++) {
// reload the cache. otherwise logs, attributes and other detailed information is not available
final cgCache cache = cgeoapplication.getInstance().loadCache(caches.get(i).getGeocode(), LoadFlags.LOAD_ALL_DB_ONLY);
@@ -113,6 +161,14 @@ class GpxExport extends AbstractExport {
gpx.write(StringEscapeUtils.escapeXml(cache.getName()));
gpx.write("</desc>");
+ gpx.write("<url>");
+ gpx.write(cache.getUrl());
+ gpx.write("</url>");
+
+ gpx.write("<urlname>");
+ gpx.write(StringEscapeUtils.escapeXml(cache.getName()));
+ gpx.write("</urlname>");
+
gpx.write("<sym>");
gpx.write(cache.isFound() ? "Geocache Found" : "Geocache");
gpx.write("</sym>");
@@ -122,7 +178,9 @@ class GpxExport extends AbstractExport {
gpx.write("</type>");
gpx.write("<groundspeak:cache ");
- gpx.write("available=\"");
+ gpx.write("id=\"");
+ gpx.write(cache.getCacheId());
+ gpx.write("\" available=\"");
gpx.write(!cache.isDisabled() ? "True" : "False");
gpx.write("\" archived=\"");
gpx.write(cache.isArchived() ? "True" : "False");
@@ -134,11 +192,11 @@ class GpxExport extends AbstractExport {
gpx.write("</groundspeak:name>");
gpx.write("<groundspeak:placed_by>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getOwner()));
+ gpx.write(StringEscapeUtils.escapeXml(cache.getOwnerDisplayName()));
gpx.write("</groundspeak:placed_by>");
gpx.write("<groundspeak:owner>");
- gpx.write(StringEscapeUtils.escapeXml(cache.getOwnerReal()));
+ gpx.write(StringEscapeUtils.escapeXml(cache.getOwnerUserId()));
gpx.write("</groundspeak:owner>");
gpx.write("<groundspeak:type>");
@@ -225,35 +283,75 @@ class GpxExport extends AbstractExport {
}
private void writeWaypoints(final cgCache cache) throws IOException {
+ List<cgWaypoint> waypoints = cache.getWaypoints();
+ List<cgWaypoint> ownWaypoints = new ArrayList<cgWaypoint>(waypoints.size());
+ List<cgWaypoint> originWaypoints = new ArrayList<cgWaypoint>(waypoints.size());
for (cgWaypoint wp : cache.getWaypoints()) {
- gpx.write("<wpt lat=\"");
- final Geopoint coords = wp.getCoords();
- gpx.write(coords != null ? Double.toString(coords.getLatitude()) : ""); // TODO: check whether is the best way to handle unknown waypoint coordinates
- gpx.write("\" lon=\"");
- gpx.write(coords != null ? Double.toString(coords.getLongitude()) : "");
- gpx.write("\">");
-
- gpx.write("<name>");
- gpx.write(StringEscapeUtils.escapeXml(wp.getPrefix()));
- gpx.write(StringEscapeUtils.escapeXml(cache.getGeocode().substring(2)));
- gpx.write("</name>");
-
- gpx.write("<cmt />");
-
- gpx.write("<desc>");
- gpx.write(StringEscapeUtils.escapeXml(wp.getNote()));
- gpx.write("</desc>");
-
- gpx.write("<sym>");
- gpx.write(StringEscapeUtils.escapeXml(wp.getWaypointType().toString())); //TODO: Correct identifier string
- gpx.write("</sym>");
-
- gpx.write("<type>Waypoint|");
- gpx.write(StringEscapeUtils.escapeXml(wp.getWaypointType().toString())); //TODO: Correct identifier string
- gpx.write("</type>");
-
- gpx.write("</wpt>");
+ if (wp.isUserDefined()) {
+ ownWaypoints.add(wp);
+ } else {
+ originWaypoints.add(wp);
+ }
+ }
+ int maxPrefix = 0;
+ for (cgWaypoint wp : originWaypoints) {
+ String prefix = wp.getPrefix();
+ try {
+ maxPrefix = Math.max(Integer.parseInt(prefix), maxPrefix);
+ } catch (NumberFormatException ex) {
+ Log.e("Unexpected origin waypoint prefix='" + prefix + "'", ex);
+ }
+ writeCacheWaypoint(wp, prefix);
}
+ for (cgWaypoint wp : ownWaypoints) {
+ maxPrefix++;
+ String prefix = String.valueOf(maxPrefix);
+ if (prefix.length() == 1) {
+ prefix = "0" + prefix;
+ }
+ writeCacheWaypoint(wp, prefix);
+ }
+ }
+
+ /**
+ * Writes one waypoint entry for cache waypoint.
+ *
+ * @param cache
+ * The
+ * @param wp
+ * @param prefix
+ * @throws IOException
+ */
+ private void writeCacheWaypoint(final cgWaypoint wp, final String prefix) throws IOException {
+ gpx.write("<wpt lat=\"");
+ final Geopoint coords = wp.getCoords();
+ gpx.write(coords != null ? Double.toString(coords.getLatitude()) : ""); // TODO: check whether is the best way to handle unknown waypoint coordinates
+ gpx.write("\" lon=\"");
+ gpx.write(coords != null ? Double.toString(coords.getLongitude()) : "");
+ gpx.write("\">");
+
+ gpx.write("<name>");
+ gpx.write(StringEscapeUtils.escapeXml(prefix));
+ gpx.write(StringEscapeUtils.escapeXml(wp.getGeocode().substring(2)));
+ gpx.write("</name>");
+
+ gpx.write("<cmt>");
+ gpx.write(StringEscapeUtils.escapeXml(wp.getNote()));
+ gpx.write("</cmt>");
+
+ gpx.write("<desc>");
+ gpx.write(StringEscapeUtils.escapeXml(wp.getName()));
+ gpx.write("</desc>");
+
+ gpx.write("<sym>");
+ gpx.write(StringEscapeUtils.escapeXml(wp.getWaypointType().toString())); //TODO: Correct identifier string
+ gpx.write("</sym>");
+
+ gpx.write("<type>Waypoint|");
+ gpx.write(StringEscapeUtils.escapeXml(wp.getWaypointType().toString())); //TODO: Correct identifier string
+ gpx.write("</type>");
+
+ gpx.write("</wpt>");
}
private void writeLogs(final cgCache cache) throws IOException {
@@ -322,6 +420,13 @@ class GpxExport extends AbstractExport {
progress.dismiss();
if (result) {
ActivityMixin.showToast(activity, getName() + ' ' + getString(R.string.export_exportedto) + ": " + exportFile.toString());
+ if (Settings.getShareAfterExport()) {
+ Intent shareIntent = new Intent();
+ shareIntent.setAction(Intent.ACTION_SEND);
+ shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(exportFile));
+ shareIntent.setType("application/xml");
+ activity.startActivity(Intent.createChooser(shareIntent, getString(R.string.export_gpx_to)));
+ }
} else {
ActivityMixin.showToast(activity, getString(R.string.export_failed));
}
diff --git a/main/src/cgeo/geocaching/files/FileList.java b/main/src/cgeo/geocaching/files/FileList.java
index 431fe3b..08c1940 100644
--- a/main/src/cgeo/geocaching/files/FileList.java
+++ b/main/src/cgeo/geocaching/files/FileList.java
@@ -19,15 +19,17 @@ import android.widget.ArrayAdapter;
import java.io.File;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractListActivity {
private static final int MSG_SEARCH_WHOLE_SD_CARD = 1;
- private List<File> files = new ArrayList<File>();
+ private final List<File> files = new ArrayList<File>();
private T adapter = null;
private ProgressDialog waitDialog = null;
- private loadFiles searchingThread = null;
+ private SearchFilesThread searchingThread = null;
private boolean endSearching = false;
private int listId = StoredList.STANDARD_LIST_ID;
final private Handler changeWaitDialogHandler = new Handler() {
@@ -114,7 +116,7 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
);
endSearching = false;
- searchingThread = new loadFiles();
+ searchingThread = new SearchFilesThread();
searchingThread.start();
}
@@ -145,14 +147,14 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
*/
protected abstract void setTitle();
- private class loadFiles extends Thread {
+ private class SearchFilesThread extends Thread {
public void notifyEnd() {
endSearching = true;
}
@Override
public void run() {
- List<File> list = new ArrayList<File>();
+ final List<File> list = new ArrayList<File>();
try {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
@@ -181,7 +183,13 @@ public abstract class FileList<T extends ArrayAdapter<File>> extends AbstractLis
changeWaitDialogHandler.sendMessage(Message.obtain(changeWaitDialogHandler, 0, "loaded directories"));
files.addAll(list);
- list.clear();
+ Collections.sort(files, new Comparator<File>() {
+
+ @Override
+ public int compare(File lhs, File rhs) {
+ return lhs.getName().compareToIgnoreCase(rhs.getName());
+ }
+ });
loadFilesHandler.sendMessage(Message.obtain(loadFilesHandler));
}
diff --git a/main/src/cgeo/geocaching/files/GPXParser.java b/main/src/cgeo/geocaching/files/GPXParser.java
index e083f58..454c494 100644
--- a/main/src/cgeo/geocaching/files/GPXParser.java
+++ b/main/src/cgeo/geocaching/files/GPXParser.java
@@ -51,6 +51,7 @@ public abstract class GPXParser extends FileParser {
*/
private static final Pattern patternGeocode = Pattern.compile("([A-Z][0-9A-Z]+)");
private static final Pattern patternGuid = Pattern.compile(".*" + Pattern.quote("guid=") + "([0-9a-z\\-]+)", Pattern.CASE_INSENSITIVE);
+ private static final Pattern patternUrlGeocode = Pattern.compile(".*" + Pattern.quote("wp=") + "([A-Z][0-9A-Z]+)", Pattern.CASE_INSENSITIVE);
/**
* supported groundspeak extensions of the GPX format
*/
@@ -228,7 +229,7 @@ public abstract class GPXParser extends FileParser {
static Date parseDate(String inputUntrimmed) throws ParseException {
String input = inputUntrimmed.trim();
- // remove milli seconds to reduce number of needed patterns
+ // remove milliseconds to reduce number of needed patterns
final Matcher matcher = PATTERN_MILLISECONDS.matcher(input);
input = matcher.replaceFirst("");
if (input.contains("Z")) {
@@ -254,8 +255,13 @@ public abstract class GPXParser extends FileParser {
public void start(Attributes attrs) {
try {
if (attrs.getIndex("lat") > -1 && attrs.getIndex("lon") > -1) {
- cache.setCoords(new Geopoint(Double.valueOf(attrs.getValue("lat")),
- Double.valueOf(attrs.getValue("lon"))));
+ final String latitude = attrs.getValue("lat");
+ final String longitude = attrs.getValue("lon");
+ // latitude and longitude are required attributes, but we export them empty for waypoints without coordinates
+ if (StringUtils.isNotBlank(latitude) && StringUtils.isNotBlank(longitude)) {
+ cache.setCoords(new Geopoint(Double.valueOf(latitude),
+ Double.valueOf(longitude)));
+ }
}
} catch (Exception e) {
Log.w("Failed to parse waypoint's latitude and/or longitude.");
@@ -299,8 +305,7 @@ public abstract class GPXParser extends FileParser {
result.put(key, cache);
showProgressMessage(progressHandler, progressStream.getProgress());
} else if (StringUtils.isNotBlank(cache.getName())
- && cache.getCoords() != null
- && StringUtils.contains(type, "waypoint")) {
+ && StringUtils.containsIgnoreCase(type, "waypoint")) {
addWaypointToCache();
}
@@ -422,6 +427,11 @@ public abstract class GPXParser extends FileParser {
cache.setGuid(guid);
}
}
+ final Matcher matcherCode = patternUrlGeocode.matcher(url);
+ if (matcherCode.matches()) {
+ String geocode = matcherCode.group(1);
+ cache.setGeocode(geocode);
+ }
}
});
@@ -485,8 +495,17 @@ public abstract class GPXParser extends FileParser {
gcCache.getChild(nsGC, "owner").setEndTextElementListener(new EndTextElementListener() {
@Override
- public void end(String cacheOwner) {
- cache.setOwner(validate(cacheOwner));
+ public void end(String ownerUserId) {
+ cache.setOwnerUserId(validate(ownerUserId));
+ }
+ });
+
+ // waypoint.cache.getOwner()
+ gcCache.getChild(nsGC, "placed_by").setEndTextElementListener(new EndTextElementListener() {
+
+ @Override
+ public void end(String ownerDisplayName) {
+ cache.setOwnerDisplayName(validate(ownerDisplayName));
}
});
@@ -775,9 +794,17 @@ public abstract class GPXParser extends FileParser {
return WaypointType.TRAILHEAD;
} else if ("final location".equalsIgnoreCase(sym)) {
return WaypointType.FINAL;
- } else {
- return WaypointType.WAYPOINT;
}
+ // this is not fully correct, but lets also look for localized waypoint types
+ for (WaypointType waypointType : WaypointType.ALL_TYPES_EXCEPT_OWN) {
+ final String localized = waypointType.getL10n();
+ if (StringUtils.isNotEmpty(localized)) {
+ if (localized.equalsIgnoreCase(sym)) {
+ return waypointType;
+ }
+ }
+ }
+ return WaypointType.WAYPOINT;
}
private void findGeoCode(final String input) {
diff --git a/main/src/cgeo/geocaching/filter/FilterUserInterface.java b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
index 002511a..230bc91 100644
--- a/main/src/cgeo/geocaching/filter/FilterUserInterface.java
+++ b/main/src/cgeo/geocaching/filter/FilterUserInterface.java
@@ -3,7 +3,6 @@ package cgeo.geocaching.filter;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
import cgeo.geocaching.cgeoapplication;
-import cgeo.geocaching.activity.IAbstractActivity;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.RunnableWithArgument;
@@ -35,11 +34,11 @@ public final class FilterUserInterface {
}
}
- private final IAbstractActivity activity;
+ private final Activity activity;
private final ArrayList<FactoryEntry> registry;
private final Resources res;
- public FilterUserInterface(final IAbstractActivity activity) {
+ public FilterUserInterface(final Activity activity) {
this.activity = activity;
this.res = cgeoapplication.getInstance().getResources();
@@ -73,10 +72,10 @@ public final class FilterUserInterface {
}
public void selectFilter(final RunnableWithArgument<IFilter> runAfterwards) {
- final AlertDialog.Builder builder = new AlertDialog.Builder((Activity) activity);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(R.string.caches_filter);
- final ArrayAdapter<FactoryEntry> adapter = new ArrayAdapter<FactoryEntry>((Activity) activity, android.R.layout.select_dialog_item, registry);
+ final ArrayAdapter<FactoryEntry> adapter = new ArrayAdapter<FactoryEntry>(activity, android.R.layout.select_dialog_item, registry);
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
@@ -107,10 +106,10 @@ public final class FilterUserInterface {
return;
}
- final AlertDialog.Builder builder = new AlertDialog.Builder((Activity) activity);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(menuTitle);
- final ArrayAdapter<IFilter> adapter = new ArrayAdapter<IFilter>((Activity) activity, android.R.layout.select_dialog_item, filters);
+ final ArrayAdapter<IFilter> adapter = new ArrayAdapter<IFilter>(activity, android.R.layout.select_dialog_item, filters);
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
diff --git a/main/src/cgeo/geocaching/geopoint/HumanDistance.java b/main/src/cgeo/geocaching/geopoint/HumanDistance.java
deleted file mode 100644
index 25d1bb7..0000000
--- a/main/src/cgeo/geocaching/geopoint/HumanDistance.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cgeo.geocaching.geopoint;
-
-import cgeo.geocaching.Settings;
-
-import org.apache.commons.lang3.tuple.ImmutablePair;
-
-public class HumanDistance {
-
- public static ImmutablePair<Double, String> scaleUnit(final double distanceKilometers) {
- double distance;
- String units;
- if (Settings.isUseMetricUnits()) {
- if (distanceKilometers >= 1) {
- distance = distanceKilometers;
- units = "km";
- } else {
- distance = distanceKilometers * 1000;
- units = "m";
- }
- } else {
- distance = distanceKilometers / IConversion.MILES_TO_KILOMETER;
- if (distance >= 0.1) {
- units = "mi";
- } else {
- distance *= 5280;
- units = "ft";
- }
- }
- return new ImmutablePair<Double, String>(distance, units);
- }
-
- public static String getHumanDistance(final Float distanceKilometers) {
- if (distanceKilometers == null) {
- return "?";
- }
-
- final ImmutablePair<Double, String> scaled = scaleUnit(distanceKilometers);
- String formatString;
- if (scaled.left >= 100) {
- formatString = "%.0f";
- } else if (scaled.left >= 10) {
- formatString = "%.1f";
- } else {
- formatString = "%.2f";
- }
-
- return String.format(formatString + " %s", scaled.left, scaled.right);
- }
-}
diff --git a/main/src/cgeo/geocaching/geopoint/Units.java b/main/src/cgeo/geocaching/geopoint/Units.java
new file mode 100644
index 0000000..3da3ad9
--- /dev/null
+++ b/main/src/cgeo/geocaching/geopoint/Units.java
@@ -0,0 +1,73 @@
+package cgeo.geocaching.geopoint;
+
+import cgeo.geocaching.Settings;
+
+import org.apache.commons.lang3.tuple.ImmutablePair;
+
+public class Units {
+
+ public static ImmutablePair<Double, String> scaleDistance(final double distanceKilometers) {
+ double distance;
+ String units;
+ if (Settings.isUseMetricUnits()) {
+ if (distanceKilometers >= 1) {
+ distance = distanceKilometers;
+ units = "km";
+ } else {
+ distance = distanceKilometers * 1000;
+ units = "m";
+ }
+ } else {
+ distance = distanceKilometers / IConversion.MILES_TO_KILOMETER;
+ if (distance >= 0.1) {
+ units = "mi";
+ } else {
+ distance *= 5280;
+ units = "ft";
+ }
+ }
+ return new ImmutablePair<Double, String>(distance, units);
+ }
+
+ public static String getDistanceFromKilometers(final Float distanceKilometers) {
+ if (distanceKilometers == null) {
+ return "?";
+ }
+
+ final ImmutablePair<Double, String> scaled = scaleDistance(distanceKilometers);
+ String formatString;
+ if (scaled.left >= 100) {
+ formatString = "%.0f";
+ } else if (scaled.left >= 10) {
+ formatString = "%.1f";
+ } else {
+ formatString = "%.2f";
+ }
+
+ return String.format(formatString + " %s", scaled.left, scaled.right);
+ }
+
+ /**
+ * Get human readable elevation, depending on settings for metric units.
+ * Result is rounded to full meters/feet, as the sensors don't have that precision anyway.
+ *
+ * @param meters
+ * @return
+ */
+ public static String getElevation(float meters) {
+ final ImmutablePair<Double, String> scaled = scaleDistance(meters / 1000f);
+ return (meters >= 0 ? "↥ " : "↧ ") + String.format("%d %s", Math.abs(Math.round(scaled.left)), scaled.right);
+ }
+
+ public static String getDistanceFromMeters(float meters) {
+ return getDistanceFromKilometers(meters / 1000f);
+ }
+
+ public static String getSpeed(float kilometersPerHour) {
+ final String speed = getDistanceFromKilometers(kilometersPerHour);
+ if (speed.endsWith("mi")) {
+ return speed.substring(0, speed.length() - 2) + "mph";
+ }
+ return speed + (Settings.isUseMetricUnits() ? "/h" : "ph");
+ }
+}
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index ce9d4e4..cf90430 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -85,6 +85,19 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
/** max. number of caches displayed in the Live Map */
public static final int MAX_CACHES = 500;
+ /**Controls the behaviour of the map*/
+ public enum MapMode {
+ /** Live Map where caches are loaded from online */
+ LIVE_ONLINE,
+ /** Live Map where caches are loaded only from database */
+ LIVE_OFFLINE,
+ /** Map around some coordinates */
+ COORDS,
+ /** Map with a single cache (no reload on move) */
+ SINGLE,
+ /** Map with a list of caches (no reload on move) */
+ LIST
+ }
/** Handler Messages */
private static final int HIDE_PROGRESS = 0;
private static final int SHOW_PROGRESS = 1;
@@ -99,6 +112,8 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
private static final String EXTRAS_WPTTYPE = "wpttype";
private static final String EXTRAS_MAPSTATE = "mapstate";
private static final String EXTRAS_SEARCH = "search";
+ private static final String EXTRAS_MAP_MODE = "map_mode";
+
private static final int MENU_SELECT_MAPVIEW = 1;
private static final int MENU_MAP_LIVE = 2;
private static final int MENU_STORE_CACHES = 3;
@@ -129,7 +144,8 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
private WaypointType waypointTypeIntent = null;
private int[] mapStateIntent = null;
// status data
- private SearchResult search = null;
+ /** Last search result used for displaying header */
+ private SearchResult lastSearchResult = null;
private String[] tokens = null;
private boolean noMapTokenShowed = false;
// map status data
@@ -160,7 +176,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
private static final int[][] INSET_USERMODIFIEDCOORDS = { { 21, 28, 0, 0 }, { 19, 25, 0, 0 } }; // bottom right, 12x12 / 26x26
private static final int[][] INSET_PERSONALNOTE = { { 0, 28, 21, 0 }, { 0, 25, 19, 0 } }; // bottom left, 12x12 / 26x26
- private static SparseArray<LayerDrawable> overlaysCache = new SparseArray<LayerDrawable>();
+ private SparseArray<LayerDrawable> overlaysCache = new SparseArray<LayerDrawable>();
private int cachesCnt = 0;
/** List of caches in the viewport */
private LeastRecentlyUsedSet<cgCache> caches = null;
@@ -173,8 +189,11 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
private long detailProgressTime = 0L;
// views
private ImageSwitcher myLocSwitch = null;
+
+ /**Controls the map behaviour*/
+ private MapMode mapMode = null;
// other things
- private boolean live = true; // live map (live, dead) or rest (displaying caches on map)
+ // private boolean live = true; // live map (live, dead) or rest (displaying caches on map)
private boolean liveChanged = false; // previous state for loadTimer
private boolean centered = false; // if map is already centered
private boolean alreadyCentered = false; // -""- for setting my location
@@ -205,7 +224,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
// set title
final StringBuilder title = new StringBuilder();
- if (live) {
+ if (mapMode == MapMode.LIVE_ONLINE) {
title.append(res.getString(R.string.map_live));
} else {
title.append(mapTitle);
@@ -220,8 +239,8 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
title.append(']');
}
- if (Settings.isDebug() && search != null && StringUtils.isNotBlank(search.getUrl())) {
- title.append('[').append(search.getUrl()).append(']');
+ if (Settings.isDebug() && lastSearchResult != null && StringUtils.isNotBlank(lastSearchResult.getUrl())) {
+ title.append('[').append(lastSearchResult.getUrl()).append(']');
}
ActivityMixin.setTitle(activity, title.toString());
@@ -363,6 +382,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
// Get parameters from the intent
final Bundle extras = activity.getIntent().getExtras();
if (extras != null) {
+ mapMode = (MapMode) extras.get(EXTRAS_MAP_MODE);
searchIntent = (SearchResult) extras.getParcelable(EXTRAS_SEARCH);
geocodeIntent = extras.getString(EXTRAS_GEOCODE);
coordsIntent = (Geopoint) extras.getParcelable(EXTRAS_COORDS);
@@ -370,6 +390,9 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
mapStateIntent = extras.getIntArray(EXTRAS_MAPSTATE);
mapTitle = extras.getString(EXTRAS_MAP_TITLE);
}
+ else {
+ mapMode = Settings.isLiveMap() ? MapMode.LIVE_ONLINE : MapMode.LIVE_OFFLINE;
+ }
if (StringUtils.isBlank(mapTitle)) {
mapTitle = res.getString(R.string.map_map);
}
@@ -429,11 +452,8 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
mapView.getMapController().setZoom(Settings.getMapZoom());
mapView.getMapController().setCenter(Settings.getMapCenter());
- // live map, if no arguments are given
- live = (searchIntent == null && geocodeIntent == null && coordsIntent == null);
-
if (null == mapStateIntent) {
- followMyLocation = live;
+ followMyLocation = mapMode == MapMode.LIVE_OFFLINE || mapMode == MapMode.LIVE_ONLINE;
} else {
followMyLocation = 1 == mapStateIntent[3];
if ((overlayCaches.getCircles() ? 1 : 0) != mapStateIntent[4]) {
@@ -523,6 +543,8 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
mapView.destroyDrawingCache();
}
+ overlaysCache.clear();
+
super.onPause();
}
@@ -579,19 +601,14 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
item = menu.findItem(MENU_MAP_LIVE); // live map
- if (live) {
- if (Settings.isLiveMap()) {
- item.setTitle(res.getString(R.string.map_live_disable));
- } else {
- item.setTitle(res.getString(R.string.map_live_enable));
- }
+ if (mapMode == MapMode.LIVE_ONLINE) {
+ item.setTitle(res.getString(R.string.map_live_disable));
} else {
- item.setEnabled(false);
item.setTitle(res.getString(R.string.map_live_enable));
}
final Set<String> geocodesInViewport = getGeocodesForCachesInViewport();
- menu.findItem(MENU_STORE_CACHES).setEnabled(live && !isLoading() && CollectionUtils.isNotEmpty(geocodesInViewport) && app.hasUnsavedCaches(new SearchResult(geocodesInViewport)));
+ menu.findItem(MENU_STORE_CACHES).setEnabled(isLiveMode() && !isLoading() && CollectionUtils.isNotEmpty(geocodesInViewport) && app.hasUnsavedCaches(new SearchResult(geocodesInViewport)));
item = menu.findItem(MENU_CIRCLE_MODE); // show circles
if (overlayCaches != null && overlayCaches.getCircles()) {
@@ -601,9 +618,9 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
item = menu.findItem(MENU_AS_LIST);
- item.setEnabled(live && !isLoading());
+ item.setEnabled(isLiveMode() && !isLoading());
- menu.findItem(SUBMENU_STRATEGY).setEnabled(live);
+ menu.findItem(SUBMENU_STRATEGY).setEnabled(isLiveMode());
} catch (Exception e) {
Log.e("cgeomap.onPrepareOptionsMenu: " + e.toString());
}
@@ -611,6 +628,10 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
return true;
}
+ private boolean isLiveMode() {
+ return mapMode == MapMode.LIVE_OFFLINE || mapMode == MapMode.LIVE_ONLINE;
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final int id = item.getItemId();
@@ -621,8 +642,9 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
return true;
case MENU_MAP_LIVE:
Settings.setLiveMap(!Settings.isLiveMap());
+ mapMode = Settings.isLiveMap() ? MapMode.LIVE_ONLINE : MapMode.LIVE_OFFLINE;
liveChanged = true;
- search = null;
+ lastSearchResult = null;
searchIntent = null;
ActivityMixin.invalidateOptionsMenu(activity);
return true;
@@ -797,6 +819,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
mapIntent.putExtra(EXTRAS_WPTTYPE, waypointTypeIntent != null ? waypointTypeIntent.id : null);
mapIntent.putExtra(EXTRAS_MAP_TITLE, mapTitle);
+ mapIntent.putExtra(EXTRAS_MAP_MODE, mapMode);
final int[] mapState = currentMapState();
if (mapState != null) {
@@ -1013,7 +1036,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
if (liveChanged) {
moved = true;
- } else if (live && Settings.isLiveMap() && !downloaded) {
+ } else if (mapMode == MapMode.LIVE_ONLINE && !downloaded) {
moved = true;
} else if (viewport == null) {
moved = true;
@@ -1124,38 +1147,31 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
@Override
public void run() {
- /**
- * True if we are currently showing the live map or a single points through coordsIntent.
- */
- final boolean isLiveMapOrCoords = searchIntent == null && geocodeIntent == null;
-
try {
showProgressHandler.sendEmptyMessage(SHOW_PROGRESS);
loadThreadRun = System.currentTimeMillis();
+ SearchResult searchResult;
// stage 1 - pull and render from the DB only for live map
- if (isLiveMapOrCoords) {
- // live map
- if (!live || !Settings.isLiveMap()) {
- search = new SearchResult(app.getStoredInViewport(viewport, Settings.getCacheType()));
- } else {
- search = new SearchResult(app.getCachedInViewport(viewport, Settings.getCacheType()));
- }
+ if (mapMode == MapMode.LIVE_ONLINE) {
+ searchResult = new SearchResult(app.getCachedInViewport(viewport, Settings.getCacheType()));
+ } else if (mapMode == MapMode.LIVE_OFFLINE) {
+ searchResult = new SearchResult(app.getStoredInViewport(viewport, Settings.getCacheType()));
} else {
// map started from another activity
- search = new SearchResult(searchIntent);
+ searchResult = new SearchResult(searchIntent);
if (geocodeIntent != null) {
- search.addGeocode(geocodeIntent);
+ searchResult.addGeocode(geocodeIntent);
}
}
- if (search != null) {
- downloaded = true;
- Set<cgCache> cachesFromSearchResult = search.getCachesFromSearchResult(LoadFlags.LOAD_WAYPOINTS);
- caches.addAll(cachesFromSearchResult);
- }
+ downloaded = true;
+ Set<cgCache> cachesFromSearchResult = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_WAYPOINTS);
+ // to update the caches they have to be removed first
+ caches.removeAll(cachesFromSearchResult);
+ caches.addAll(cachesFromSearchResult);
- if (live) {
+ if (isLiveMode()) {
final boolean excludeMine = Settings.isExcludeMyCaches();
final boolean excludeDisabled = Settings.isExcludeDisabledCaches();
@@ -1170,8 +1186,9 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
countVisibleCaches();
if (cachesCnt < Settings.getWayPointsThreshold() || geocodeIntent != null) {
waypoints.clear();
- if (isLiveMapOrCoords) {
+ if (isLiveMode() || mapMode == MapMode.COORDS) {
//All visible waypoints
+ //FIXME apply type filter
waypoints.addAll(app.getWaypointsInViewport(viewport, Settings.isExcludeMyCaches(), Settings.isExcludeDisabledCaches()));
} else {
//All waypoints from the viewed caches
@@ -1184,9 +1201,10 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
//render
displayExecutor.execute(new DisplayRunnable(viewport));
- if (live && Settings.isLiveMap()) {
+ if (mapMode == MapMode.LIVE_ONLINE) {
downloadExecutor.execute(new DownloadRunnable(viewport));
}
+ lastSearchResult = searchResult;
} finally {
showProgressHandler.sendEmptyMessage(HIDE_PROGRESS); // hide progress
}
@@ -1210,6 +1228,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
showProgressHandler.sendEmptyMessage(SHOW_PROGRESS); // show progress
int count = 0;
+ SearchResult searchResult;
do {
if (tokens == null) {
@@ -1219,10 +1238,10 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
}
- search = ConnectorFactory.searchByViewport(viewport.resize(0.8), tokens);
- if (search != null) {
+ searchResult = ConnectorFactory.searchByViewport(viewport.resize(0.8), tokens);
+ if (searchResult != null) {
downloaded = true;
- if (search.getError() == StatusCode.NOT_LOGGED_IN) {
+ if (searchResult.getError() == StatusCode.NOT_LOGGED_IN) {
Login.login();
tokens = null;
} else {
@@ -1233,11 +1252,12 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
} while (count < 2);
- if (search != null) {
- Set<cgCache> result = search.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
+ if (searchResult != null) {
+ Set<cgCache> result = searchResult.getCachesFromSearchResult(LoadFlags.LOAD_CACHE_OR_DB);
// to update the caches they have to be removed first
caches.removeAll(result);
caches.addAll(result);
+ lastSearchResult = searchResult;
}
//render
@@ -1277,7 +1297,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
if (!cachesToDisplay.isEmpty()) {
// Only show waypoints for single view or setting
// when less than showWaypointsthreshold Caches shown
- if (cachesToDisplay.size() == 1 || (cachesCnt < Settings.getWayPointsThreshold())) {
+ if (mapMode == MapMode.SINGLE || (cachesCnt < Settings.getWayPointsThreshold())) {
for (cgWaypoint waypoint : waypointsToDisplay) {
if (waypoint == null || waypoint.getCoords() == null) {
@@ -1642,6 +1662,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
public static void startActivitySearch(final Activity fromActivity, final SearchResult search, final String title) {
final Intent mapIntent = newIntent(fromActivity);
mapIntent.putExtra(EXTRAS_SEARCH, search);
+ mapIntent.putExtra(EXTRAS_MAP_MODE, MapMode.LIST);
if (StringUtils.isNotBlank(title)) {
mapIntent.putExtra(CGeoMap.EXTRAS_MAP_TITLE, title);
}
@@ -1649,11 +1670,14 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
public static void startActivityLiveMap(final Activity fromActivity) {
- fromActivity.startActivity(newIntent(fromActivity));
+ final Intent mapIntent = newIntent(fromActivity);
+ mapIntent.putExtra(EXTRAS_MAP_MODE, Settings.isLiveMap() ? MapMode.LIVE_ONLINE : MapMode.LIVE_OFFLINE);
+ fromActivity.startActivity(mapIntent);
}
public static void startActivityCoords(final Activity fromActivity, final Geopoint coords, final WaypointType type, final String title) {
final Intent mapIntent = newIntent(fromActivity);
+ mapIntent.putExtra(EXTRAS_MAP_MODE, MapMode.COORDS);
mapIntent.putExtra(EXTRAS_COORDS, coords);
if (type != null) {
mapIntent.putExtra(EXTRAS_WPTTYPE, type.id);
@@ -1666,6 +1690,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
public static void startActivityGeoCode(final Activity fromActivity, final String geocode) {
final Intent mapIntent = newIntent(fromActivity);
+ mapIntent.putExtra(EXTRAS_MAP_MODE, MapMode.SINGLE);
mapIntent.putExtra(EXTRAS_GEOCODE, geocode);
mapIntent.putExtra(EXTRAS_MAP_TITLE, geocode);
fromActivity.startActivity(mapIntent);
@@ -1705,7 +1730,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
.append(cache.getListId() > 0)
.toHashCode();
- final LayerDrawable ldFromCache = CGeoMap.overlaysCache.get(hashcode);
+ final LayerDrawable ldFromCache = overlaysCache.get(hashcode);
if (ldFromCache != null) {
item.setMarker(ldFromCache);
return item;
@@ -1763,7 +1788,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
ld.setLayerInset(index++, inset[0], inset[1], inset[2], inset[3]);
}
- CGeoMap.overlaysCache.put(hashcode, ld);
+ overlaysCache.put(hashcode, ld);
item.setMarker(ld);
return item;
diff --git a/main/src/cgeo/geocaching/maps/MapProviderFactory.java b/main/src/cgeo/geocaching/maps/MapProviderFactory.java
index 3fb6ed0..7c0c8e5 100644
--- a/main/src/cgeo/geocaching/maps/MapProviderFactory.java
+++ b/main/src/cgeo/geocaching/maps/MapProviderFactory.java
@@ -15,12 +15,10 @@ public class MapProviderFactory {
private final static int GOOGLEMAP_BASEID = 30;
private final static int MFMAP_BASEID = 40;
- private static MapProviderFactory instance = null;
+ private final static MapProvider[] mapProviders;
+ private final static SortedMap<Integer, MapSource> mapSources;
- private final MapProvider[] mapProviders;
- private SortedMap<Integer, MapSource> mapSources;
-
- private MapProviderFactory() {
+ static {
// add GoogleMapProvider only if google api is available in order to support x86 android emulator
if (isGoogleMapsInstalled()) {
mapProviders = new MapProvider[] { new GoogleMapProvider(GOOGLEMAP_BASEID), new MapsforgeMapProvider(MFMAP_BASEID) };
@@ -45,29 +43,16 @@ public class MapProviderFactory {
return googleMaps;
}
- private static synchronized void initInstance() {
- if (null == instance) {
- instance = new MapProviderFactory();
- }
- }
-
- private static MapProviderFactory getInstance() {
- if (null == instance) {
- initInstance();
- }
- return instance;
- }
-
public static SortedMap<Integer, MapSource> getMapSources() {
- return getInstance().mapSources;
+ return mapSources;
}
public static boolean isValidSourceId(int sourceId) {
- return getInstance().mapSources.containsKey(sourceId);
+ return mapSources.containsKey(sourceId);
}
public static boolean isSameActivity(int sourceId1, int sourceId2) {
- for (MapProvider mp : getInstance().mapProviders) {
+ for (MapProvider mp : mapProviders) {
if (mp.isMySource(sourceId1) && mp.isMySource(sourceId2)) {
return mp.isSameActivity(sourceId1, sourceId2);
}
@@ -76,17 +61,17 @@ public class MapProviderFactory {
}
public static MapProvider getMapProvider(int sourceId) {
- for (MapProvider mp : getInstance().mapProviders) {
+ for (MapProvider mp : mapProviders) {
if (mp.isMySource(sourceId)) {
return mp;
}
}
- return getInstance().mapProviders[0];
+ return mapProviders[0];
}
public static int getSourceOrdinalFromId(int sourceId) {
int sourceOrdinal = 0;
- for (int key : getInstance().mapSources.keySet()) {
+ for (int key : mapSources.keySet()) {
if (sourceId == key) {
return sourceOrdinal;
}
@@ -97,20 +82,18 @@ public class MapProviderFactory {
public static int getSourceIdFromOrdinal(int sourceOrdinal) {
int count = 0;
- for (int key : getInstance().mapSources.keySet()) {
+ for (int key : mapSources.keySet()) {
if (sourceOrdinal == count) {
return key;
}
count++;
}
- return getInstance().mapSources.firstKey();
+ return mapSources.firstKey();
}
public static void addMapviewMenuItems(Menu parentMenu, int groupId, int currentSource) {
- SortedMap<Integer, MapSource> mapSources = getInstance().mapSources;
-
- for (int key : mapSources.keySet()) {
- parentMenu.add(groupId, key, 0, mapSources.get(key).getName()).setCheckable(true).setChecked(key == currentSource);
+ for (Integer key : mapSources.keySet()) {
+ parentMenu.add(groupId, key, 0, mapSources.get(key).getName()).setCheckable(true).setChecked(key.intValue() == currentSource);
}
}
@@ -119,6 +102,6 @@ public class MapProviderFactory {
}
public static MapSource getMapSource(int sourceId) {
- return getInstance().mapSources.get(sourceId);
+ return mapSources.get(Integer.valueOf(sourceId));
}
}
diff --git a/main/src/cgeo/geocaching/maps/ScaleOverlay.java b/main/src/cgeo/geocaching/maps/ScaleOverlay.java
index 321624d..bee6acf 100644
--- a/main/src/cgeo/geocaching/maps/ScaleOverlay.java
+++ b/main/src/cgeo/geocaching/maps/ScaleOverlay.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.maps;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.geopoint.HumanDistance;
+import cgeo.geocaching.geopoint.Units;
import cgeo.geocaching.maps.interfaces.GeneralOverlay;
import cgeo.geocaching.maps.interfaces.GeoPointImpl;
import cgeo.geocaching.maps.interfaces.MapProjectionImpl;
@@ -62,7 +62,7 @@ public class ScaleOverlay implements GeneralOverlay {
final Geopoint leftCoords = new Geopoint(center.getLatitudeE6() / 1e6, center.getLongitudeE6() / 1e6 - span / 2);
final Geopoint rightCoords = new Geopoint(center.getLatitudeE6() / 1e6, center.getLongitudeE6() / 1e6 + span / 2);
- final ImmutablePair<Double, String> scaled = HumanDistance.scaleUnit(leftCoords.distanceTo(rightCoords) * SCALE_WIDTH_FACTOR);
+ final ImmutablePair<Double, String> scaled = Units.scaleDistance(leftCoords.distanceTo(rightCoords) * SCALE_WIDTH_FACTOR);
final double distanceRound = keepSignificantDigit(scaled.left);
final double pixels = Math.round((mapView.getWidth() * SCALE_WIDTH_FACTOR / scaled.left) * distanceRound);
diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java
index eac7063..288336d 100644
--- a/main/src/cgeo/geocaching/network/HtmlImage.java
+++ b/main/src/cgeo/geocaching/network/HtmlImage.java
@@ -9,6 +9,7 @@ import cgeo.geocaching.utils.ImageHelper;
import cgeo.geocaching.utils.Log;
import ch.boye.httpclientandroidlib.HttpResponse;
+
import org.apache.commons.lang3.StringUtils;
import android.content.Context;
@@ -37,7 +38,10 @@ public class HtmlImage implements Html.ImageGetter {
"flagcounter.com",
"compteur-blog.net",
"counter.digits.com",
- "andyhoppe"
+ "andyhoppe",
+ "besucherzaehler-homepage.de",
+ "hitwebcounter.com",
+ "kostenloser-counter.eu"
};
final private String geocode;
diff --git a/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java b/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java
new file mode 100644
index 0000000..bc63ef6
--- /dev/null
+++ b/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java
@@ -0,0 +1,118 @@
+package cgeo.geocaching.sorting;
+
+import cgeo.geocaching.R;
+import cgeo.geocaching.utils.Log;
+import cgeo.geocaching.utils.RunnableWithArgument;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.res.Resources;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+public class ComparatorUserInterface {
+ private final Activity activity;
+ private final ArrayList<ComparatorEntry> registry;
+ private final Resources res;
+
+ private static final class ComparatorEntry {
+ private final String name;
+ private final Class<? extends CacheComparator> cacheComparator;
+
+ public ComparatorEntry(final String name, final Class<? extends CacheComparator> cacheComparator) {
+ this.name = name;
+ this.cacheComparator = cacheComparator;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+ }
+
+ public ComparatorUserInterface(final Activity activity) {
+ this.activity = activity;
+ res = activity.getResources();
+
+ registry = new ArrayList<ComparatorUserInterface.ComparatorEntry>(20);
+
+ register(R.string.caches_sort_distance, null);
+ register(R.string.caches_sort_date_hidden, DateComparator.class);
+ register(R.string.caches_sort_difficulty, DifficultyComparator.class);
+ register(R.string.caches_sort_finds, FindsComparator.class);
+ register(R.string.caches_sort_gccode, GeocodeComparator.class);
+ register(R.string.caches_sort_inventory, InventoryComparator.class);
+ register(R.string.caches_sort_name, NameComparator.class);
+ register(R.string.caches_sort_favorites, PopularityComparator.class);
+ register(R.string.caches_sort_rating, RatingComparator.class);
+ register(R.string.caches_sort_size, SizeComparator.class);
+ register(R.string.caches_sort_state, StateComparator.class);
+ register(R.string.caches_sort_storage, StorageTimeComparator.class);
+ register(R.string.caches_sort_terrain, TerrainComparator.class);
+ register(R.string.caches_sort_date_logged, VisitComparator.class);
+ register(R.string.caches_sort_vote, VoteComparator.class);
+
+ // sort the menu labels alphabetically for easier reading
+ Collections.sort(registry, new Comparator<ComparatorEntry>() {
+
+ @Override
+ public int compare(ComparatorEntry lhs, ComparatorEntry rhs) {
+ return lhs.name.compareToIgnoreCase(rhs.name);
+ }
+ });
+ }
+
+ private void register(final int resourceId, Class<? extends CacheComparator> comparatorClass) {
+ registry.add(new ComparatorEntry(res.getString(resourceId), comparatorClass));
+ }
+
+ public void selectComparator(final CacheComparator current, final RunnableWithArgument<CacheComparator> runAfterwards) {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle(R.string.caches_sort_title);
+
+ // adapter doesn't work correctly here, therefore using the string array based method
+ final String[] items = new String[registry.size()];
+ for (int i = 0; i < items.length; i++) {
+ items[i] = registry.get(i).name;
+ }
+ builder.setSingleChoiceItems(items, getCurrentIndex(current), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int itemIndex) {
+ ComparatorEntry entry = registry.get(itemIndex);
+ try {
+ if (entry.cacheComparator == null) {
+ runAfterwards.run(null);
+ }
+ else {
+ CacheComparator comparator = entry.cacheComparator.newInstance();
+ runAfterwards.run(comparator);
+ }
+ } catch (Exception e) {
+ Log.e("selectComparator", e);
+ }
+ dialog.dismiss();
+ }
+ });
+
+ builder.create().show();
+ }
+
+ private int getCurrentIndex(final CacheComparator current) {
+ for (int index = 0; index < registry.size(); index++) {
+ final ComparatorEntry entry = registry.get(index);
+ if (current == null) {
+ if (entry.cacheComparator == null) {
+ return index;
+ }
+ }
+ else if (current.getClass().equals(entry.cacheComparator)) {
+ return index;
+ }
+ }
+ return -1;
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/sorting/DateComparator.java b/main/src/cgeo/geocaching/sorting/DateComparator.java
index 7129905..3136d47 100644
--- a/main/src/cgeo/geocaching/sorting/DateComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DateComparator.java
@@ -1,7 +1,9 @@
package cgeo.geocaching.sorting;
import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgeoapplication;
+import java.util.ArrayList;
import java.util.Date;
/**
@@ -16,10 +18,19 @@ public class DateComparator extends AbstractCacheComparator {
@Override
protected int compareCaches(cgCache cache1, cgCache cache2) {
- Date date1 = cache1.getHiddenDate();
- Date date2 = cache2.getHiddenDate();
+ final Date date1 = cache1.getHiddenDate();
+ final Date date2 = cache2.getHiddenDate();
if (date1 != null && date2 != null) {
- return date1.compareTo(date2);
+ final int dateDifference = date1.compareTo(date2);
+ // for equal dates, sort by distance
+ if (dateDifference == 0) {
+ final ArrayList<cgCache> list = new ArrayList<cgCache>();
+ list.add(cache1);
+ list.add(cache2);
+ final DistanceComparator distanceComparator = new DistanceComparator(cgeoapplication.getInstance().currentGeo().getCoords(), list);
+ return distanceComparator.compare(cache1, cache2);
+ }
+ return dateDifference;
}
if (date1 != null) {
return -1;
diff --git a/main/src/cgeo/geocaching/sorting/FindsComparator.java b/main/src/cgeo/geocaching/sorting/FindsComparator.java
index ad72ea3..6407b11 100644
--- a/main/src/cgeo/geocaching/sorting/FindsComparator.java
+++ b/main/src/cgeo/geocaching/sorting/FindsComparator.java
@@ -6,11 +6,7 @@ import cgeo.geocaching.enumerations.LogType;
public class FindsComparator extends AbstractCacheComparator {
- private cgeoapplication app;
-
- public FindsComparator(cgeoapplication app) {
- this.app = app;
- }
+ private final cgeoapplication app = cgeoapplication.getInstance();
@Override
protected boolean canCompare(cgCache cache1, cgCache cache2) {
@@ -25,15 +21,14 @@ public class FindsComparator extends AbstractCacheComparator {
}
private int getFindsCount(cgCache cache) {
- int finds = 0;
if (cache.getLogCounts().isEmpty()) {
cache.setLogCounts(app.loadLogCounts(cache.getGeocode()));
}
Integer logged = cache.getLogCounts().get(LogType.FOUND_IT);
if (logged != null) {
- finds = logged;
+ return logged;
}
- return finds;
+ return 0;
}
}
diff --git a/main/src/cgeo/geocaching/sorting/VisitComparator.java b/main/src/cgeo/geocaching/sorting/VisitComparator.java
index 548ec7a..46d8c58 100644
--- a/main/src/cgeo/geocaching/sorting/VisitComparator.java
+++ b/main/src/cgeo/geocaching/sorting/VisitComparator.java
@@ -10,7 +10,7 @@ public class VisitComparator extends AbstractCacheComparator {
@Override
protected boolean canCompare(final cgCache cache1, final cgCache cache2) {
- return cache1.getVisitedDate() > 0 && cache2.getVisitedDate() > 0;
+ return true;
}
@Override
diff --git a/main/src/cgeo/geocaching/ui/AbstractUIFactory.java b/main/src/cgeo/geocaching/ui/AbstractUIFactory.java
new file mode 100644
index 0000000..2351383
--- /dev/null
+++ b/main/src/cgeo/geocaching/ui/AbstractUIFactory.java
@@ -0,0 +1,9 @@
+package cgeo.geocaching.ui;
+
+import cgeo.geocaching.cgeoapplication;
+
+import android.content.res.Resources;
+
+public class AbstractUIFactory {
+ protected final static Resources res = cgeoapplication.getInstance().getResources();
+}
diff --git a/main/src/cgeo/geocaching/ui/AddressListAdapter.java b/main/src/cgeo/geocaching/ui/AddressListAdapter.java
index 17a9289..eb8b516 100644
--- a/main/src/cgeo/geocaching/ui/AddressListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/AddressListAdapter.java
@@ -4,7 +4,7 @@ import cgeo.geocaching.R;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.cgeocaches;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.geopoint.HumanDistance;
+import cgeo.geocaching.geopoint.Units;
import org.apache.commons.lang3.StringUtils;
@@ -73,7 +73,7 @@ public class AddressListAdapter extends ArrayAdapter<Address> {
private CharSequence getDistanceText(final Address address) {
if (location != null && address.hasLatitude() && address.hasLongitude()) {
- return HumanDistance.getHumanDistance(location.distanceTo(new Geopoint(address.getLatitude(), address.getLongitude())));
+ return Units.getDistanceFromKilometers(location.distanceTo(new Geopoint(address.getLatitude(), address.getLongitude())));
}
return "";
diff --git a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
index 70fc2bb..2a83ddc 100644
--- a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
+++ b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
@@ -4,7 +4,7 @@ import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.geopoint.HumanDistance;
+import cgeo.geocaching.geopoint.Units;
import org.apache.commons.lang3.StringUtils;
@@ -148,7 +148,7 @@ public final class CacheDetailsCreator {
}
String text = "--";
if (distance != null) {
- text = HumanDistance.getHumanDistance(distance);
+ text = Units.getDistanceFromKilometers(distance);
}
else if (cacheDistanceView != null) {
// if there is already a distance in cacheDistance, use it instead of resetting to default.
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index fcb4e54..65d3fbc 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -7,7 +7,6 @@ import cgeo.geocaching.Settings;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheListType;
-import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.filter.IFilter;
import cgeo.geocaching.geopoint.Geopoint;
@@ -18,7 +17,6 @@ import cgeo.geocaching.utils.AngleUtils;
import cgeo.geocaching.utils.Log;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import android.app.Activity;
@@ -29,6 +27,7 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.text.Spannable;
import android.text.Spanned;
+import android.text.style.ForegroundColorSpan;
import android.text.style.StrikethroughSpan;
import android.util.SparseArray;
import android.view.GestureDetector;
@@ -264,19 +263,15 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
notifyDataSetChanged();
}
- public void setActualCoordinates(final Geopoint coordsIn) {
- if (coordsIn == null) {
- return;
- }
-
- coords = coordsIn;
+ public void setActualCoordinates(final Geopoint coords) {
+ this.coords = coords;
updateSortByDistance();
for (final DistanceView distance : distances) {
- distance.update(coordsIn);
+ distance.update(coords);
}
for (final CompassMiniView compass : compasses) {
- compass.updateCurrentCoords(coordsIn);
+ compass.updateCurrentCoords(coords);
}
}
@@ -296,7 +291,13 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
if (coords == null) {
return;
}
+ final ArrayList<cgCache> oldList = new ArrayList<cgCache>(list);
Collections.sort(list, new DistanceComparator(coords, list));
+
+ // avoid an update if the list has not changed due to location update
+ if (list.equals(oldList)) {
+ return;
+ }
notifyDataSetChanged();
lastSort = System.currentTimeMillis();
}
@@ -311,7 +312,6 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
}
azimuth = direction;
-
for (final CompassMiniView compass : compasses) {
compass.updateAzimuth(azimuth);
}
@@ -395,6 +395,9 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
if (cache.isDisabled() || cache.isArchived()) { // strike
cache.getNameSp().setSpan(new StrikethroughSpan(), 0, cache.getNameSp().toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
+ if (cache.isArchived()) {
+ cache.getNameSp().setSpan(new ForegroundColorSpan(res.getColor(R.color.archived_cache_color)), 0, cache.getNameSp().toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
}
holder.text.setText(cache.getNameSp(), TextView.BufferType.SPANNABLE);
@@ -497,37 +500,9 @@ public class CacheListAdapter extends ArrayAdapter<cgCache> {
holder.favourite.setBackgroundResource(favoriteBack);
if (cacheListType == CacheListType.HISTORY && cache.getVisitedDate() > 0) {
- final ArrayList<String> infos = new ArrayList<String>();
- infos.add(StringUtils.upperCase(cache.getGeocode()));
- infos.add(Formatter.formatDate(cache.getVisitedDate()));
- infos.add(Formatter.formatTime(cache.getVisitedDate()));
- holder.info.setText(StringUtils.join(infos, Formatter.SEPARATOR));
+ holder.info.setText(Formatter.formatCacheInfoHistory(cache));
} else {
- final ArrayList<String> infos = new ArrayList<String>();
- if (StringUtils.isNotBlank(cache.getGeocode())) {
- infos.add(cache.getGeocode());
- }
- if (cache.hasDifficulty()) {
- infos.add("D " + String.format("%.1f", cache.getDifficulty()));
- }
- if (cache.hasTerrain()) {
- infos.add("T " + String.format("%.1f", cache.getTerrain()));
- }
-
- // don't show "not chosen" for events and virtuals, that should be the normal case
- if (cache.getSize() != CacheSize.UNKNOWN && cache.showSize()) {
- infos.add(cache.getSize().getL10n());
- } else if (cache.isEventCache() && cache.getHiddenDate() != null) {
- infos.add(Formatter.formatShortDate(cache.getHiddenDate().getTime()));
- }
-
- if (cache.isPremiumMembersOnly()) {
- infos.add(res.getString(R.string.cache_premium));
- }
- if (cacheListType != CacheListType.OFFLINE && cacheListType != CacheListType.HISTORY && cache.getListId() > 0) {
- infos.add(res.getString(R.string.cache_offline));
- }
- holder.info.setText(StringUtils.join(infos, Formatter.SEPARATOR));
+ holder.info.setText(Formatter.formatCacheInfoLong(cache, cacheListType));
}
return v;
diff --git a/main/src/cgeo/geocaching/ui/CompassView.java b/main/src/cgeo/geocaching/ui/CompassView.java
index b328527..048e280 100644
--- a/main/src/cgeo/geocaching/ui/CompassView.java
+++ b/main/src/cgeo/geocaching/ui/CompassView.java
@@ -11,6 +11,7 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.util.AttributeSet;
+import android.util.FloatMath;
import android.view.View;
public class CompassView extends View {
@@ -136,9 +137,9 @@ public class CompassView extends View {
// If the difference is smaller than 1 degree, do nothing as it
// causes the arrow to vibrate. Round away from 0.
if (diff > 1.0) {
- offset = (float) Math.ceil(diff / 10.0); // for larger angles, rotate faster
+ offset = FloatMath.ceil(diff / 10.0f); // for larger angles, rotate faster
} else if (diff < 1.0) {
- offset = (float) Math.floor(diff / 10.0);
+ offset = FloatMath.floor(diff / 10.0f);
}
return AngleUtils.normalize(actual + offset);
@@ -200,16 +201,16 @@ public class CompassView extends View {
marginLeftTemp = (getWidth() - compassRoseWidth) / 2;
marginTopTemp = (getHeight() - compassRoseHeight) / 2;
- canvas.rotate((float) -azimuthTemp, canvasCenterX, canvasCenterY);
+ canvas.rotate(-azimuthTemp, canvasCenterX, canvasCenterY);
canvas.drawBitmap(compassRose, marginLeftTemp, marginTopTemp, null);
- canvas.rotate((float) azimuthTemp, canvasCenterX, canvasCenterY);
+ canvas.rotate(azimuthTemp, canvasCenterX, canvasCenterY);
marginLeftTemp = (getWidth() - compassArrowWidth) / 2;
marginTopTemp = (getHeight() - compassArrowHeight) / 2;
- canvas.rotate((float) -azimuthRelative, canvasCenterX, canvasCenterY);
+ canvas.rotate(-azimuthRelative, canvasCenterX, canvasCenterY);
canvas.drawBitmap(compassArrow, marginLeftTemp, marginTopTemp, null);
- canvas.rotate((float) azimuthRelative, canvasCenterX, canvasCenterY);
+ canvas.rotate(azimuthRelative, canvasCenterX, canvasCenterY);
marginLeftTemp = (getWidth() - compassOverlayWidth) / 2;
marginTopTemp = (getHeight() - compassOverlayHeight) / 2;
@@ -260,4 +261,4 @@ public class CompassView extends View {
return result;
}
-} \ No newline at end of file
+}
diff --git a/main/src/cgeo/geocaching/ui/DistanceView.java b/main/src/cgeo/geocaching/ui/DistanceView.java
index 83de4aa..9611511 100644
--- a/main/src/cgeo/geocaching/ui/DistanceView.java
+++ b/main/src/cgeo/geocaching/ui/DistanceView.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.ui;
import cgeo.geocaching.geopoint.Geopoint;
-import cgeo.geocaching.geopoint.HumanDistance;
+import cgeo.geocaching.geopoint.Units;
import android.content.Context;
import android.util.AttributeSet;
@@ -30,11 +30,11 @@ public class DistanceView extends TextView {
if (cacheCoords == null || coords == null) {
return;
}
- setText(HumanDistance.getHumanDistance(coords.distanceTo(cacheCoords)));
+ setText(Units.getDistanceFromKilometers(coords.distanceTo(cacheCoords)));
}
public void setDistance(Float distance) {
- setText("~" + HumanDistance.getHumanDistance(distance));
+ setText("~" + Units.getDistanceFromKilometers(distance));
}
public void clear() {
diff --git a/main/src/cgeo/geocaching/ui/Formatter.java b/main/src/cgeo/geocaching/ui/Formatter.java
index 6ee1a65..53a7276 100644
--- a/main/src/cgeo/geocaching/ui/Formatter.java
+++ b/main/src/cgeo/geocaching/ui/Formatter.java
@@ -1,10 +1,21 @@
package cgeo.geocaching.ui;
+import cgeo.geocaching.R;
+import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.enumerations.CacheListType;
+import cgeo.geocaching.enumerations.CacheSize;
+import cgeo.geocaching.enumerations.WaypointType;
+
+import org.apache.commons.lang3.StringUtils;
import android.content.Context;
import android.text.format.DateUtils;
+import java.util.ArrayList;
+import java.util.List;
+
public abstract class Formatter {
/** Text separator used for formatting texts */
@@ -64,6 +75,26 @@ public abstract class Formatter {
}
/**
+ * Generate a numeric date string according to system-wide settings (locale, date format)
+ * such as "10/20/2010". Today and yesterday will be presented as strings "today" and "yesterday".
+ *
+ * @param date
+ * milliseconds since the epoch
+ * @return the formatted string
+ */
+ public static String formatShortDateVerbally(long date) {
+ int diff = cgeo.geocaching.utils.DateUtils.daysSince(date);
+ switch (diff) {
+ case 0:
+ return cgeoapplication.getInstance().getString(R.string.log_today);
+ case 1:
+ return cgeoapplication.getInstance().getString(R.string.log_yesterday);
+ default:
+ return formatShortDate(date);
+ }
+ }
+
+ /**
* Generate a numeric date and time string according to system-wide settings (locale,
* date format) such as "7 sept. at 12:35".
*
@@ -77,4 +108,64 @@ public abstract class Formatter {
return DateUtils.formatDateTime(context, date, DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_ABBREV_ALL);
}
+ public static String formatCacheInfoLong(cgCache cache, CacheListType cacheListType) {
+ final ArrayList<String> infos = new ArrayList<String>();
+ if (StringUtils.isNotBlank(cache.getGeocode())) {
+ infos.add(cache.getGeocode());
+ }
+
+ infos.add(Formatter.formatCacheInfoShort(cache));
+
+ if (cache.isPremiumMembersOnly()) {
+ 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));
+ }
+ return StringUtils.join(infos, Formatter.SEPARATOR);
+ }
+
+ public static String formatCacheInfoShort(cgCache cache) {
+ final ArrayList<String> infos = new ArrayList<String>();
+ if (cache.hasDifficulty()) {
+ infos.add("D " + String.format("%.1f", cache.getDifficulty()));
+ }
+ if (cache.hasTerrain()) {
+ infos.add("T " + String.format("%.1f", cache.getTerrain()));
+ }
+
+ // don't show "not chosen" for events and virtuals, that should be the normal case
+ if (cache.getSize() != CacheSize.UNKNOWN && cache.showSize()) {
+ infos.add(cache.getSize().getL10n());
+ } else if (cache.isEventCache() && cache.getHiddenDate() != null) {
+ infos.add(Formatter.formatShortDate(cache.getHiddenDate().getTime()));
+ }
+ return StringUtils.join(infos, Formatter.SEPARATOR);
+ }
+
+ public static String formatCacheInfoHistory(cgCache cache) {
+ final ArrayList<String> infos = new ArrayList<String>(3);
+ infos.add(StringUtils.upperCase(cache.getGeocode()));
+ infos.add(Formatter.formatDate(cache.getVisitedDate()));
+ infos.add(Formatter.formatTime(cache.getVisitedDate()));
+ return StringUtils.join(infos, Formatter.SEPARATOR);
+ }
+
+ public static String formatWaypointInfo(cgWaypoint waypoint) {
+ final List<String> infos = new ArrayList<String>(3);
+ if (WaypointType.ALL_TYPES_EXCEPT_OWN.contains(waypoint.getWaypointType())) {
+ infos.add(waypoint.getWaypointType().getL10n());
+ }
+ if (cgWaypoint.PREFIX_OWN.equalsIgnoreCase(waypoint.getPrefix())) {
+ infos.add(cgeoapplication.getInstance().getString(R.string.waypoint_custom));
+ } else {
+ if (StringUtils.isNotBlank(waypoint.getPrefix())) {
+ infos.add(waypoint.getPrefix());
+ }
+ if (StringUtils.isNotBlank(waypoint.getLookup())) {
+ infos.add(waypoint.getLookup());
+ }
+ }
+ return StringUtils.join(infos, Formatter.SEPARATOR);
+ }
}
diff --git a/main/src/cgeo/geocaching/ui/LoggingUI.java b/main/src/cgeo/geocaching/ui/LoggingUI.java
new file mode 100644
index 0000000..0e048c3
--- /dev/null
+++ b/main/src/cgeo/geocaching/ui/LoggingUI.java
@@ -0,0 +1,144 @@
+package cgeo.geocaching.ui;
+
+import cgeo.geocaching.LogEntry;
+import cgeo.geocaching.R;
+import cgeo.geocaching.Settings;
+import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.activity.IAbstractActivity;
+import cgeo.geocaching.enumerations.LogType;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.ArrayAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LoggingUI extends AbstractUIFactory {
+ public static class LogTypeEntry {
+ private final LogType logType;
+ private final SpecialLogType specialLogType;
+ private final boolean isActive;
+
+ public LogTypeEntry(final LogType logType, final SpecialLogType specialLogType, final boolean isActive) {
+ this.logType = logType;
+ this.specialLogType = specialLogType;
+ this.isActive = isActive;
+ }
+
+ @Override
+ public String toString() {
+ if (logType == null) {
+ return specialLogType.getL10n();
+ }
+
+ String text = logType.getL10n();
+
+ if (isActive) {
+ text += " ✔";
+ }
+
+ return text;
+ }
+ }
+
+ private enum SpecialLogType {
+ LOG_CACHE(R.string.cache_menu_visit),
+ CLEAR_LOG(R.string.log_clear);
+
+ private final int stringId;
+
+ private SpecialLogType(final int stringId) {
+ this.stringId = stringId;
+ }
+
+ public final String getL10n() {
+ return res.getString(stringId);
+ }
+ }
+
+ private static final int MENU_ICON_LOG_VISIT = R.drawable.ic_menu_edit;
+ private static final int MENU_LOG_VISIT = 100;
+ private static final int MENU_LOG_VISIT_OFFLINE = 101;
+
+ public static void addMenuItems(final Menu menu, final cgCache cache) {
+ if (cache == null) {
+ return;
+ }
+ if (!cache.supportsLogging()) {
+ return;
+ }
+ if (Settings.getLogOffline()) {
+ menu.add(0, MENU_LOG_VISIT_OFFLINE, 0, res.getString(R.string.cache_menu_visit_offline)).setIcon(MENU_ICON_LOG_VISIT);
+ }
+ else {
+ menu.add(0, MENU_LOG_VISIT, 0, res.getString(R.string.cache_menu_visit)).setIcon(MENU_ICON_LOG_VISIT);
+ }
+ }
+
+ public static boolean onMenuItemSelected(final MenuItem item, IAbstractActivity activity, cgCache cache) {
+ switch (item.getItemId()) {
+ case MENU_LOG_VISIT:
+ cache.logVisit(activity);
+ return true;
+ case MENU_LOG_VISIT_OFFLINE:
+ showOfflineMenu(cache, (Activity) activity);
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private static void showOfflineMenu(final cgCache cache, final Activity activity) {
+ final LogEntry currentLog = cgeoapplication.getInstance().loadLogOffline(cache.getGeocode());
+ final LogType currentLogType = currentLog == null ? null : currentLog.type;
+
+ final List<LogType> logTypes = cache.getPossibleLogTypes();
+ final ArrayList<LogTypeEntry> list = new ArrayList<LogTypeEntry>();
+ for (LogType logType : logTypes) {
+ list.add(new LogTypeEntry(logType, null, logType == currentLogType));
+ }
+ if (cache.isLogOffline()) {
+ list.add(new LogTypeEntry(null, SpecialLogType.CLEAR_LOG, false));
+ }
+ list.add(new LogTypeEntry(null, SpecialLogType.LOG_CACHE, false));
+
+ final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle(R.string.cache_menu_visit_offline);
+
+ final ArrayAdapter<LogTypeEntry> adapter = new ArrayAdapter<LogTypeEntry>(activity, android.R.layout.select_dialog_item, list);
+
+ builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int item) {
+ final LogTypeEntry logTypeEntry = adapter.getItem(item);
+ if (logTypeEntry.logType == null) {
+ switch (logTypeEntry.specialLogType) {
+ case LOG_CACHE:
+ cache.logVisit((IAbstractActivity) activity);
+ break;
+
+ case CLEAR_LOG:
+ cgeoapplication.getInstance().clearLogOffline(cache.getGeocode());
+ }
+ } else {
+ cache.logOffline(activity, logTypeEntry.logType);
+ }
+ }
+ });
+
+ builder.create().show();
+
+ }
+
+ public static void onPrepareOptionsMenu(Menu menu) {
+ final MenuItem item = menu.findItem(MENU_LOG_VISIT);
+ if (item != null) {
+ item.setEnabled(Settings.isLogin());
+ }
+ }
+}
diff --git a/main/src/cgeo/geocaching/utils/DateUtils.java b/main/src/cgeo/geocaching/utils/DateUtils.java
new file mode 100644
index 0000000..3004bdb
--- /dev/null
+++ b/main/src/cgeo/geocaching/utils/DateUtils.java
@@ -0,0 +1,18 @@
+package cgeo.geocaching.utils;
+
+import java.util.Calendar;
+
+public class DateUtils {
+ public static int daysSince(long date) {
+ final Calendar logDate = Calendar.getInstance();
+ logDate.setTimeInMillis(date);
+ logDate.set(Calendar.SECOND, 0);
+ logDate.set(Calendar.MINUTE, 0);
+ logDate.set(Calendar.HOUR, 0);
+ final Calendar today = Calendar.getInstance();
+ today.set(Calendar.SECOND, 0);
+ today.set(Calendar.MINUTE, 0);
+ today.set(Calendar.HOUR, 0);
+ return (int) Math.round((today.getTimeInMillis() - logDate.getTimeInMillis()) / 86400000d);
+ }
+}
diff --git a/main/src/cgeo/geocaching/utils/UnknownTagsHandler.java b/main/src/cgeo/geocaching/utils/UnknownTagsHandler.java
index 149605d..68bdb1f 100644
--- a/main/src/cgeo/geocaching/utils/UnknownTagsHandler.java
+++ b/main/src/cgeo/geocaching/utils/UnknownTagsHandler.java
@@ -12,7 +12,7 @@ public class UnknownTagsHandler implements TagHandler {
private static final int UNDEFINED_POSITION = -1;
private static int countCells = 0;
int strikePos = UNDEFINED_POSITION;
- private boolean tableDetected = false;
+ private boolean problematicDetected = false;
@Override
public void handleTag(boolean opening, String tag, Editable output,
@@ -20,11 +20,13 @@ public class UnknownTagsHandler implements TagHandler {
if (tag.equalsIgnoreCase("strike") || tag.equals("s")) {
handleStrike(opening, output);
} else if (tag.equalsIgnoreCase("table")) {
- handleTable();
+ handleProblematic();
} else if (tag.equalsIgnoreCase("td")) {
handleTd(opening, output);
} else if (tag.equalsIgnoreCase("tr")) {
handleTr(opening, output);
+ } else if (tag.equalsIgnoreCase("pre")) {
+ handleProblematic();
}
}
@@ -40,12 +42,12 @@ public class UnknownTagsHandler implements TagHandler {
}
}
- public boolean isTableDetected() {
- return tableDetected;
+ public boolean isProblematicDetected() {
+ return problematicDetected;
}
- private void handleTable() {
- tableDetected = true;
+ private void handleProblematic() {
+ problematicDetected = true;
}
private static void handleTd(boolean opening, Editable output) {
diff --git a/tests/.classpath b/tests/.classpath
index 78ba67f..9bd2efb 100644
--- a/tests/.classpath
+++ b/tests/.classpath
@@ -2,7 +2,11 @@
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gen"/>
+ <classpathentry kind="src" path="gen">
+ <attributes>
+ <attribute name="ignore_optional_problems" value="true"/>
+ </attributes>
+ </classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/cgeo"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="output" path="bin/classes"/>
diff --git a/tests/res/raw/geotoad.gpx b/tests/res/raw/geotoad.gpx
new file mode 100644
index 0000000..a83217d
--- /dev/null
+++ b/tests/res/raw/geotoad.gpx
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="utf-8"?>
+<gpx xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" creator="GeoToad" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.groundspeak.com/cache/1/0/1 http://www.groundspeak.com/cache/1/0/1/cache.xsd" xmlns="http://www.topografix.com/GPX/1/0">
+<name>20120621T221044</name>
+<desc>GeoToad: wid = GC1T3MK:GC2KN6K (22Jun12 00:33)</desc>
+<author>GeoToad 3.16.0</author>
+<email>geotoad@googlegroups.com</email>
+<time>2012-06-21T22:10:44.000Z</time>
+<keywords>cache, geocache, groundspeak, geotoad</keywords>
+<wpt lat="51.949683" lon="8.603733">
+ <time>2009-06-07T07:00:00.000Z</time>
+ <name>&quot;Wunnibert&quot;</name>
+ <desc>&quot;Wunnibert&quot; by Jo44, traditional (1/1.5)</desc>
+ <url>http://www.geocaching.com/seek/cache_details.aspx?wp=GC1T3MK</url>
+ <urlname>&quot;Wunnibert&quot;</urlname>
+ <sym>Geocache</sym>
+ <type>Geocache|Traditional Cache</type>
+ <groundspeak:cache id="1260698" available="True" archived="False" xmlns:groundspeak="http://www.groundspeak.com/cache/1/0/1">
+ <groundspeak:name>&quot;Wunnibert&quot;</groundspeak:name>
+ <groundspeak:placed_by>Jo44</groundspeak:placed_by>
+ <groundspeak:owner id="217639962">Jo44</groundspeak:owner>
+ <groundspeak:type>Traditional Cache</groundspeak:type>
+ <groundspeak:container>small</groundspeak:container>
+ <groundspeak:difficulty>1</groundspeak:difficulty>
+ <groundspeak:terrain>1.5</groundspeak:terrain>
+ <groundspeak:country>Germany</groundspeak:country>
+ <groundspeak:state>Nordrhein-Westfalen</groundspeak:state>
+ <groundspeak:attributes>
+ <groundspeak:attribute id="32" inc="1">Bikes allowed</groundspeak:attribute>
+ <groundspeak:attribute id="41" inc="1">Stroller accessible</groundspeak:attribute>
+ <groundspeak:attribute id="7" inc="1">Takes less than 1 hour</groundspeak:attribute>
+ <groundspeak:attribute id="6" inc="1">Kid friendly</groundspeak:attribute>
+ <groundspeak:attribute id="15" inc="1">Available in winter</groundspeak:attribute>
+ <groundspeak:attribute id="13" inc="1">Available 24-7</groundspeak:attribute>
+ <groundspeak:attribute id="1" inc="1">Dogs allowed</groundspeak:attribute>
+ </groundspeak:attributes>
+ <groundspeak:short_description html="True">&lt;br /&gt;[Bikes allowed, stroller accessible, takes less than 1 hour, kid friendly, available in winter, available 24-7, dogs allowed]&lt;br /&gt;Gesch&#252;tzter Tradi in einem lichten Fichtenwald.</groundspeak:short_description>
+ <groundspeak:long_description html="True">Ein neuer Stern ist am Cacherhimmel aufgegangen!&lt;br /&gt; Am 31.05.2009 ist &quot;Wunnibert&quot; geboren!&lt;br /&gt; Reichlich Cachergene hat er mitbekommen: Von Papa, Gro&#223;papa, Omi, Tante, Onkel und Cousine.&lt;br /&gt; Gebt &quot;Wunnibert&quot; doch einen guten Rat oder einen hei&#223;en Tipp mit auf seinen ( Cacher - ) Lebensweg. &lt;p&gt;Inhalt: Logbuch, Stift und Schnuller.&lt;/p&gt; &lt;p&gt;&quot;Wunnibert&quot; hat am 26.07.2010 eine Cousine bekommen: &lt;a href= &quot;http://coord.info/GC2CDA8&quot;&gt;&quot;Tummyseed&quot; (GC2CDA8)&lt;/a&gt;&lt;/p&gt;</groundspeak:long_description>
+ <groundspeak:encoded_hints>piekst</groundspeak:encoded_hints>
+ <groundspeak:logs>
+ <groundspeak:log id="976171115">
+ <groundspeak:date>2012-06-16T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="4235994636">randyandy21</groundspeak:finder>
+ <groundspeak:text encoded="False">TFTC auf netter Runde gefunden. Nun wieder auf in die Heimat.</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="2879926257">
+ <groundspeak:date>2012-06-13T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="1912797330">earlysun</groundspeak:finder>
+ <groundspeak:text encoded="False">Auf einem kurzbesuch in Bielefeld auch diesen Cache gut gefunden. TFTC!&lt;br /&gt;TB: IN</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="1225655337">
+ <groundspeak:date>2012-06-07T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="3223130690">White Werewolf</groundspeak:finder>
+ <groundspeak:text encoded="False">Mit Sali09 wurde heute einen kleine Runde gestartet und einige Ecken besichtigt die ich bisher von Sennestadt noch nicht kannte. Dieser hier geh&#xF6;rte mit dazu. Vielen Dank f&#xFC;rs Zeigen an den Owner.</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="848543352">
+ <groundspeak:date>2012-06-07T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="2299342038">SaLi09</groundspeak:finder>
+ <groundspeak:text encoded="False">Hier war die Dose schnell gefunden! DFDC SaLi09</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="121081409">
+ <groundspeak:date>2012-05-21T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="3782225719">DZElsoff</groundspeak:finder>
+ <groundspeak:text encoded="False">Schnell noch mal einen kleinen Spaziergang durch den Wald, ein wenig stechen lassen und dann war er mir.</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="1258700408">
+ <groundspeak:date>2012-05-12T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="1700209325">Columbus.</groundspeak:finder>
+ <groundspeak:text encoded="False">Nach Tummyseed mussten wir nat&#xFC;rlich auch bei Wunnibert vorbeischauen. Wir haben die Dose nach dem Loggen wieder in ihr Versteck zur&#xFC;ckgelegt.&lt;br /&gt;Danke und Gru&#xDF;.&lt;br /&gt;1195</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="2815497952">
+ <groundspeak:date>2012-05-12T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="647739319">monanam</groundspeak:finder>
+ <groundspeak:text encoded="False">gefunfen! DFDC, MONANAM</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="3699054691">
+ <groundspeak:date>2012-04-27T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="2222272664">Wurtzkoplento</groundspeak:finder>
+ <groundspeak:text encoded="False">Bingo;)</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="1967583827">
+ <groundspeak:date>2012-04-23T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="691211936">-TeamChihuahua-</groundspeak:finder>
+ <groundspeak:text encoded="False">Nach einem Pflicht besuch in diesem Wald, die dornige Dose schnell in den H&#xE4;nden gehalten und signiert. &lt;br /&gt;TFTC&lt;br /&gt;Team Chihuahua&lt;br /&gt;&lt;br /&gt;23. April 2012 &lt;br /&gt;Cache : 1512</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="328214809">
+ <groundspeak:date>2012-04-14T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="217551773">zumsel9b</groundspeak:finder>
+ <groundspeak:text encoded="False">Bei einer Testfahrt f&#xFC;r das neue Fahrrad meiner Tochter haben wir hier kurz halt gemacht.</groundspeak:text>
+ </groundspeak:log>
+ </groundspeak:logs>
+ <groundspeak:travelbugs></groundspeak:travelbugs>
+ </groundspeak:cache>
+</wpt>
+<wpt lat="51.909767" lon="8.615650">
+ <time>2010-12-26T07:00:00.000Z</time>
+ <name>Dem &quot;Dings&quot; zum Trotz 2</name>
+ <desc>Dem &quot;Dings&quot; zum Trotz 2 by Sonnentatzen, traditional (2/1.5)</desc>
+ <url>http://www.geocaching.com/seek/cache_details.aspx?wp=GC2KN6K</url>
+ <urlname>Dem &quot;Dings&quot; zum Trotz 2</urlname>
+ <sym>Geocache</sym>
+ <type>Geocache|Traditional Cache</type>
+ <groundspeak:cache id="2022337" available="True" archived="False" xmlns:groundspeak="http://www.groundspeak.com/cache/1/0/1">
+ <groundspeak:name>Dem &quot;Dings&quot; zum Trotz 2</groundspeak:name>
+ <groundspeak:placed_by>Sonnentatzen</groundspeak:placed_by>
+ <groundspeak:owner id="3494626085">Sonnentatzen</groundspeak:owner>
+ <groundspeak:type>Traditional Cache</groundspeak:type>
+ <groundspeak:container>micro</groundspeak:container>
+ <groundspeak:difficulty>2</groundspeak:difficulty>
+ <groundspeak:terrain>1.5</groundspeak:terrain>
+ <groundspeak:country>Germany</groundspeak:country>
+ <groundspeak:state>Nordrhein-Westfalen</groundspeak:state>
+ <groundspeak:attributes>
+ <groundspeak:attribute id="24" inc="0">Not wheelchair accessible</groundspeak:attribute>
+ <groundspeak:attribute id="15" inc="1">Available in winter</groundspeak:attribute>
+ <groundspeak:attribute id="13" inc="1">Available 24-7</groundspeak:attribute>
+ <groundspeak:attribute id="42" inc="1">Needs maintenance</groundspeak:attribute>
+ <groundspeak:attribute id="7" inc="1">Takes less than 1 hour</groundspeak:attribute>
+ <groundspeak:attribute id="6" inc="1">Kid friendly</groundspeak:attribute>
+ <groundspeak:attribute id="1" inc="1">Dogs allowed</groundspeak:attribute>
+ </groundspeak:attributes>
+ <groundspeak:short_description html="True">&lt;br /&gt;[Not wheelchair accessible, available in winter, available 24-7, needs maintenance, takes less than 1 hour, kid friendly, dogs allowed]&lt;br /&gt;</groundspeak:short_description>
+ <groundspeak:long_description html="True">&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span&gt;Das Dings ( &lt;span style= &quot;color: rgb(204, 0, 23);&quot;&gt;der Schnee&lt;/span&gt;) ist &#252;berall und &#228;rgert uns Cacher ein kleines Bisschen!&lt;br /&gt; &lt;br /&gt; Dies ist ein Tradi,&lt;br /&gt; der zu einer neuen Serie von Caches geh&#246;rt,&lt;br /&gt; die trotz &quot;Dings&quot; gefunden werden k&#246;nnen.&lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;color: rgb(178, 17, 98);&quot;&gt;Nachahmung erw&#252;nscht!&lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Viel Spass beim Suchen und Finden ! &lt;img align=&quot;right&quot; src= &quot;http://img525.imageshack.us/img525/4821/30679113.jpg&quot; alt=&quot;&quot; style=&quot;margin: 3px 0px 3px 10px; width: 179px; height: 128px;&quot; /&gt; &lt;img align=&quot;&quot; src=&quot;http://&quot; alt=&quot;&quot; style= &quot;margin: 3px 0px; display: block;&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;div&gt;&lt;a href=&quot;http://www.gcJoker.de&quot;&gt;&lt;img border=&quot;0&quot; src= &quot;http://www.gcJoker.de/img/banner/banner200x73.gif&quot; alt= &quot;banner&quot; /&gt;&lt;/a&gt; &lt;div&gt; &lt;/div&gt; &lt;/div&gt;</groundspeak:long_description>
+ <groundspeak:encoded_hints>Ich bin zweckentfremdet, in mir steckt mehr als im ersten Moment zu sehen ist.</groundspeak:encoded_hints>
+ <groundspeak:logs>
+ <groundspeak:log id="1612244872">
+ <groundspeak:date>2012-06-11T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Write note</groundspeak:type>
+ <groundspeak:finder id="865265718">Trouble18</groundspeak:finder>
+ <groundspeak:text encoded="False">Dies auf dem R&#xFC;ckweg gefunden. Es musste einfach noch dazu :)</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="864079327">
+ <groundspeak:date>2012-06-11T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="865265718">Trouble18</groundspeak:finder>
+ <groundspeak:text encoded="False">St&#xE4;ndig dran vorbei gefahren, aber nie Lust gehabt zwischen den B&#xE4;umen her zu gehen. Heute endlich mal aufgerafft und ihn ohne gr&#xF6;&#xDF;ere Suche gefunden. Jedoch l&#xF6;st sich das Konstrukt langsam. Eventuell bleibt es demn&#xE4;chst ja unten drin.&lt;br /&gt;Danke f&#xFC;rs zeigen dieses altbekannten Ortes. Das hat erinnerungen geweckt&lt;br /&gt;Jetzt aber schnell weg bevor es regnet und der Bass des nahestehenden Autofahrers ist auch gruselig.&lt;br /&gt;Tftc</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="2652272802">
+ <groundspeak:date>2012-06-10T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="4021816271">TomTimpani</groundspeak:finder>
+ <groundspeak:text encoded="False">Heute meine Laufrunde nach Schlo&#xDF; Holte verlagert. Oh Wunder, es lagen tats&#xE4;chlich ein paar Caches auf dem Weg. Auch diesen gerne geloggt.&lt;br /&gt;TFTC&lt;br /&gt;TomTimpani</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="2702448538">
+ <groundspeak:date>2012-06-08T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="2580462969">Kantakor</groundspeak:finder>
+ <groundspeak:text encoded="False">Auch diesen kleinen Freund auf der heutigen Abend/Nachttour schnell&lt;br /&gt;gesucht, gefunden und muggelfrei geloggt.&lt;br /&gt;&lt;br /&gt;Danke f&#xFC;rs Verstecken,&lt;br /&gt;&lt;br /&gt;Kantakor</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="2003742312">
+ <groundspeak:date>2012-06-08T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="3594345313">andimitabei</groundspeak:finder>
+ <groundspeak:text encoded="False">Hier wurde ich gestern Abend mit dresinator und DerTobi91 f&#xFC;ndig, auf unserer Tour durch Kaunitz richtung Oerlinghausen zu einem tollen Nachtcache :)</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="1388327984">
+ <groundspeak:date>2012-06-07T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="1794171066">Dresinator</groundspeak:finder>
+ <groundspeak:text encoded="False">Netter Cache, gut gefunden :)</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="1085751396">
+ <groundspeak:date>2012-06-07T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="2217329812">Dertobi91</groundspeak:finder>
+ <groundspeak:text encoded="False">Tricks&lt;br /&gt;</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="3812521635">
+ <groundspeak:date>2012-05-30T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="2730780912">worldsucks</groundspeak:finder>
+ <groundspeak:text encoded="False">Die Dose konnte sich zwar kurze Zeit vor uns verstecken, irgendwann hat mein Cacherkollege dann aber doch zugeschlagen. Vielen Dank f&#xFC;r diese sehr sch&#xF6;ne und kreativ gestaltete Dose!&lt;br /&gt;&lt;br /&gt;Viel Erfolg weiterhin im Kampf gegen das &quot;Dings&quot; :-)</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="1688400223">
+ <groundspeak:date>2012-05-30T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="1356983771">merle &amp; phoebe</groundspeak:finder>
+ <groundspeak:text encoded="False">Unser &quot;Abschlusscache&quot; der heutigen Runde in Schlo&#xDF;-Holte und Umgebung. Nach ein paar Minuten drum herum suchen, da das GPS durch die B&#xE4;ume irritiert war, konnten wir letztlich doch noch den richtigen Griff machen. Sehr sch&#xF6;n gemachter Cache und toll getarnt.&lt;br /&gt;&lt;br /&gt;Da kann der &quot;Dings&quot; sich warm anziehen.&lt;br /&gt;&lt;br /&gt;DfdC</groundspeak:text>
+ </groundspeak:log>
+ <groundspeak:log id="3560290342">
+ <groundspeak:date>2012-05-20T07:00:00.000Z</groundspeak:date>
+ <groundspeak:type>Found it</groundspeak:type>
+ <groundspeak:finder id="4235785866">knaex</groundspeak:finder>
+ <groundspeak:text encoded="False">Nach kurzer Orientierung problemlos gefunden ... TFTC</groundspeak:text>
+ </groundspeak:log>
+ </groundspeak:logs>
+ <groundspeak:travelbugs></groundspeak:travelbugs>
+ </groundspeak:cache>
+</wpt>
+</gpx>
diff --git a/tests/res/raw/own_cache.htm b/tests/res/raw/own_cache.htm
new file mode 100644
index 0000000..8152da7
--- /dev/null
+++ b/tests/res/raw/own_cache.htm
@@ -0,0 +1,2374 @@
+
+<!DOCTYPE html>
+<html lang="en" class="no-js">
+<head id="ctl00_Head1"><meta charset="utf-8" />
+ <!--[if IE]><![endif]-->
+ <title>
+ GC352Y3 Die alte Schule (Traditional Cache) in Nordrhein-Westfalen, Germany created by Lineflyer
+</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" />
+ <!--[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="../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" 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 type="text/javascript" src="/js/jquery.truncate.min.js"></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" />
+ <!--[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>
+ <script type="text/javascript" src="/js/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="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=881f33d9-9df9-4d2f-b229-35b621b044b9" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided 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 and difficulty is 2 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/2.png" property="og:image" /><meta name="og:title" content="Die alte Schule" property="og:title" /><meta name="description" content="Die alte Schule (GC352Y3) was created by Lineflyer on 03/31/2012. It&#39;s a Micro size geocache, with difficulty of 2, terrain of 1. It&#39;s located in Nordrhein-Westfalen, Germany. Ein einfacher Traditional, der ein wenig an die Vergangenheit des Ortes erinnern m&#246;chte. Wenn ihr vom Cache aus in Richtung S&#252;den schaut, seht ihr den Ort an dem einmal die st&#228;dtische Grundschule Moltkestra&#223;e stand." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=881f33d9-9df9-4d2f-b229-35b621b044b9" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
+<body >
+ <form name="aspnetForm" method="post" action="cache_details.aspx?guid=881f33d9-9df9-4d2f-b229-35b621b044b9" 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="3" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjEwMzIwMDYxOA8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzI1MTEyMjIWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYQAgUPFgIfAWRkAggPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZTNhZmRmNjQtNzE4OC00NjRlLWFjODAtODQ3NDUwMWQ5MzUyLmpwZ2RkAgMPFgIfAQVuSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIExpbmVmbHllciIgY2xhc3M9IlNpZ25lZEluUHJvZmlsZUxpbmsiPkxpbmVmbHllcjwvYT5kAgUPDxYCHgtOYXZpZ2F0ZVVybAWlAWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmZ3VpZCUzZDg4MWYzM2Q5LTlkZjktNGQyZi1iMjI5LTM1YjYyMWIwNDRiOWRkAgsPFgIfAQWrATxpbWcgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fc21pbGUucG5nIiB0aXRsZT0iQ2FjaGVzIEZvdW5kIiAvPiA1ODQmbmJzcDsmbmJzcDsmbmJzcDs8aW1nIHNyYz0iL2ltYWdlcy9jaGFsbGVuZ2VzL3R5cGVzL3NtL2NoYWxsZW5nZS5wbmciIHRpdGxlPSJDaGFsbGVuZ2VzIENvbXBsZXRlZCIgLz4gNGQCDQ8WAh8DZxYCAg0PDxYCHwUFQH4vdHJhY2svc2VhcmNoLmFzcHg/bz0xJnVpZD1kMTFhM2UzZC03ZGIwLTRkNDMtODdmMi03ODkzMjM4ODQ0YTZkZAIQDw8WAh8DZ2RkAiwPZBYCAgMPFgIfA2hkAi0PFgIeBWNsYXNzBQxzcGFuLTI0IGxhc3QWAgIBD2QWLAIBD2QWAmYPZBYCAgEPDxYCHwEFB0dDMzUyWTNkZAICDxYCHwEFvQE8YSBocmVmPSIvYWJvdXQvY2FjaGVfdHlwZXMuYXNweCIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJBYm91dCBDYWNoZSBUeXBlcyI+PGltZyBzcmM9Ii9pbWFnZXMvV3B0VHlwZXMvMi5naWYiIGFsdD0iVHJhZGl0aW9uYWwgQ2FjaGUiIHRpdGxlPSJUcmFkaXRpb25hbCBDYWNoZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiAvPjwvYT5kAgUPZBYCAgEPFgIfAQUBQWQCBg9kFgQCAQ8WAh8DZ2QCBw8WAh8DaGQCCw9kFgQCAQ8WAh8BBQExZAIDDw8WAh8FBUQvc2Vlay9jYWNoZV9mYXZvcml0ZWQuYXNweD9ndWlkPTg4MWYzM2Q5LTlkZjktNGQyZi1iMjI5LTM1YjYyMWIwNDRiOWRkAg0PDxYCHwNoZGQCEA8WAh8DaGQCEQ8WAh8DaGQCEg9kFgwCAw8WAh4Fc3R5bGUFD2Rpc3BsYXk6aW5saW5lOxYCAgEPFgIfAQUbVVRNOiAzMlUgRSAzNjM4NTQgTiA1NjkwNDMxZAINDw8WAh8FBTNjZHBmLmFzcHg/Z3VpZD04ODFmMzNkOS05ZGY5LTRkMmYtYjIyOS0zNWI2MjFiMDQ0YjlkZAIPDw8WAh8FBThjZHBmLmFzcHg/Z3VpZD04ODFmMzNkOS05ZGY5LTRkMmYtYjIyOS0zNWI2MjFiMDQ0YjkmbGM9NWRkAhEPDxYCHwUFOWNkcGYuYXNweD9ndWlkPTg4MWYzM2Q5LTlkZjktNGQyZi1iMjI5LTM1YjYyMWIwNDRiOSZsYz0xMGRkAhMPDxYEHwUFeGh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9NTEuMzQ3NTM5LDcuMDQxNzQzIChIb21lIExvY2F0aW9uKSZkYWRkcj01MS4zNDg4MzMsNy4wNDQ5ODMoRGllK2FsdGUrU2NodWxlKR4GVGFyZ2V0BQZfYmxhbmtkZAIbD2QWCAIBDw8WBB4JRm9yZUNvbG9yDB4EXyFTQgIEZGQCAw8PFgQfCQwfCgIEZGQCBQ8PFgIfA2cWAh4Hb25jbGljawU7czJncHMoJzg4MWYzM2Q5LTlkZjktNGQyZi1iMjI5LTM1YjYyMWIwNDRiOScpO3JldHVybiBmYWxzZTtkAgcPDxYCHwNnFgIfCwUgczJwaG9uZSgnR0MzNTJZMycpO3JldHVybiBmYWxzZTtkAhQPFgIfA2cWAgIDDxYCHwEFBk1laW5lcmQCFw9kFghmDxYCHwNoZAIBDw8WAh8DaGRkAgIPDxYCHwNoZGQCAw8WAh8DaGQCGA9kFgICAw8PFgIfAQUHRGVjcnlwdGRkAhkPFgIfAQUrQXZwdWcgcXZyIEZwdWVuaG9yLCBub3JlIHRuYW0gdmEgcXJlIEHDpHVyLmQCHA8WAh8DaGQCHg8WAh8DZ2QCHw8WAh8DaGQCIg9kFgICAQ9kFgQCAQ8PFgIfAQX/AzxpZnJhbWUgdHlwZT0iaWZyYW1lIiBzcmM9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUdldCZTaXRlSUQ9MSZYPScyMWViZjNhZDU5ZjM0ZGRmYmJkY2EzNjc2YTAxMWMwOCciIHdpZHRoPSIxMjAiIGhlaWdodD0iMjQwIiBNYXJnaW53aWR0aD0iMCIgTWFyZ2luaGVpZ2h0PSIwIiBIc3BhY2U9IjAiIFZzcGFjZT0iMCIgRnJhbWVib3JkZXI9IjAiIFNjcm9sbGluZz0ibm8iIHN0eWxlPSJ3aWR0aDoxMjBweDtIZWlnaHQ6MjQwcHg7Ij48YSBocmVmPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1DbGljayY7TW9kZT1IVE1MJlNpdGVJRD0xIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUdldCZNb2RlPUhUTUwmU2l0ZUlEPTEiIHdpZHRoPSIxMjAiIGhlaWdodD0iMjQwIiBib3JkZXI9IjAiIGFsdD0iIiAvPjwvYT48L2lmcmFtZT5kZAIDDxYCHglpbm5lcmh0bWwFE0FkdmVydGlzaW5nIHdpdGggVXNkAiYPZBYEAgcPDxYCHwNnZGQCCw8PFgIfBQU8fi90cmFjay9zZWFyY2guYXNweD93aWQ9ODgxZjMzZDktOWRmOS00ZDJmLWIyMjktMzViNjIxYjA0NGI5ZGQCKQ9kFhQCAw8WAh8DZxYCAgEPDxYCHwUFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD04ODFmMzNkOS05ZGY5LTRkMmYtYjIyOS0zNWI2MjFiMDQ0YjkmRFM9MWRkAgcPDxYEHgZSRFMuSUQLKXZHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNzb24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDU0MS4xNTI5MywgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAcyNTExMjIyZBYEZg8WAh4LXyFJdGVtQ291bnQCAhYEAgEPZBYOZg8VAgAFZmFsc2VkAgEPEA8WAh8DZ2RkZGQCAg8VCWI8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPjRodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wa2cuanBnDFBhcmtpbmcgQXJlYQxQYXJraW5nIEFyZWECUEsCUEsGUEFSS05HsAE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTczOGZhNjA4LWYxZjItNGEyMi05MjBhLTc4YzViMzE0N2MzNiZSZWZJRD04ODFmMzNkOS05ZGY5LTRkMmYtYjIyOS0zNWI2MjFiMDQ0YjkmUmVmRFM9MSI+R0MzNTJZMyBQYXJraW5nPC9hPiAoUGFya2luZyBBcmVhKRxOIDUxwrAgMjAuOTQxIEUgMDA3wrAgMDIuNzQyZAIFDw8WBh4HVG9vbFRpcAUERWRpdB8FBXMvaGlkZS93cHRsaXN0LmFzcHg/V0lEPTczOGZhNjA4LWYxZjItNGEyMi05MjBhLTc4YzViMzE0N2MzNiZEUz0xJlJlZldwdElEPTg4MWYzM2Q5LTlk" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="ZjktNGQyZi1iMjI5LTM1YjYyMWIwNDRiOSNlZGl0HwNnZGQCBw8PFgYfEAUDTWFwHwUFKn4vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTEuMzQ5MDImbG5nPTcuMDQ1Nx8DZ2RkAgsPDxYGHg1BbHRlcm5hdGVUZXh0BQZSZW1vdmUeD0NvbW1hbmRBcmd1bWVudAUkNzM4ZmE2MDgtZjFmMi00YTIyLTkyMGEtNzhjNWIzMTQ3YzM2HwNnFgIfCwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAgA/TmF2aWdhdGlvbnNrb29yZGluYXRlbiwgZGFtaXQgaWhyIG5pY2h0IGF1ZiBkZXIgQXV0b2JhaG4gbGFuZGV0ZAICD2QWDmYPFQIOQWx0ZXJuYXRpbmdSb3cFZmFsc2VkAgEPEA8WAh8DZ2RkZGQCAg8VCWI8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPjpodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS90cmFpbGhlYWQuanBnCVRyYWlsaGVhZAlUcmFpbGhlYWQCVEgCVEgGVFJBSUwxsAE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTZkOTUyNDEwLWYyYTktNGIwMC1iNzFjLTViZTM3NjczYzhlZiZSZWZJRD04ODFmMzNkOS05ZGY5LTRkMmYtYjIyOS0zNWI2MjFiMDQ0YjkmUmVmRFM9MSI+QWJmYWhydCB2b20gUmFkd2VnPC9hPiAoVHJhaWxoZWFkKRxOIDUxwrAgMjAuNzQxIEUgMDA3wrAgMDIuMzQyZAIFDw8WBh8QBQRFZGl0HwUFcy9oaWRlL3dwdGxpc3QuYXNweD9XSUQ9NmQ5NTI0MTAtZjJhOS00YjAwLWI3MWMtNWJlMzc2NzNjOGVmJkRTPTEmUmVmV3B0SUQ9ODgxZjMzZDktOWRmOS00ZDJmLWIyMjktMzViNjIxYjA0NGI5I2VkaXQfA2dkZAIHDw8WBh8QBQNNYXAfBQUrfi9tYXAvZGVmYXVsdC5hc3B4P2xhdD01MS4zNDU2OCZsbmc9Ny4wMzkwMx8DZ2RkAgsPDxYGHxEFBlJlbW92ZR8SBSQ2ZDk1MjQxMC1mMmE5LTRiMDAtYjcxYy01YmUzNzY3M2M4ZWYfA2cWAh8LBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUCDkFsdGVybmF0aW5nUm93OU7DpGNoc3RnZWxlZ2VuZSBBYmZhaHJ0IHZvbSBQYW5vcmFtYXJhZHdlZyBOaWVkZXJiZXJnYmFobmQCAQ8PFgIfA2dkZAIJDw8WAh8DZ2QWAgIBDw8WBB8FBSwvbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTEuMzQ4ODMzJmxuZz03LjA0NDk4Mx8DZ2RkAhEPDxYCHwUFHi9zZWVrL25lYXJlc3QuYXNweD91PUxpbmVmbHllcmRkAhUPDxYCHwUFHy9zZWVrL25lYXJlc3QuYXNweD91bD1MaW5lZmx5ZXJkZAIZD2QWCgIDDw8WAh8FBVUvc2Vlay9uZWFyZXN0LmFzcHg/dHg9MzJiYzkzMzMtNWU1Mi00OTU3LWIwZjYtNWEyYzhmYzdiMjU3JmxhdD01MS4zNDg4MzMmbG5nPTcuMDQ0OTgzZGQCBQ8PFgIfBQVZL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTMyYmM5MzMzLTVlNTItNDk1Ny1iMGY2LTVhMmM4ZmM3YjI1NyZsYXQ9NTEuMzQ4ODMzJmxuZz03LjA0NDk4MyZmPTFkZAIJDw8WAh8FBS0vc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTUxLjM0ODgzMyZsbmc9Ny4wNDQ5ODNkZAILDw8WAh8FBTEvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTUxLjM0ODgzMyZsbmc9Ny4wNDQ5ODMmZj0xZGQCDw8PFgIfBQVHaHR0cDovL3d3dy53YXltYXJraW5nLmNvbS9kaXJlY3RvcnkuYXNweD9mPTEmbGF0PTUxLjM0ODgzMyZsb249Ny4wNDQ5ODNkZAIbDxYCHwNoZAIfDw8WAh8FBSQvcmV2aWV3cy9ob3RlbHMtY29vcmRzLTUxLjM0ODgsNy4wNDVkZAIjD2QWAgIBDw8WBB8BBbsHPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTEuMzQ4ODMmbG5nPTcuMDQ0OTgiIHRhcmdldD0iX2JsYW5rIj5HZW9jYWNoaW5nLmNvbSBNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9Tis1MSVjMiViMCsyMC45MzArRSswMDclYzIlYjArMDIuNjk5KyhHQzM1MlkzKSsiIHRhcmdldD0iX2JsYW5rIj5Hb29nbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm1hcHF1ZXN0LmNvbS9tYXBzL21hcC5hZHA/c2VhcmNodHlwZT1hZGRyZXNzJmZvcm10eXBlPWxhdGxvbmcmbGF0bG9uZ3R5cGU9ZGVjaW1hbCZsYXRpdHVkZT01MS4zNDg4MyZsb25naXR1ZGU9Ny4wNDQ5OCZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NTEuMzQ4ODMmbG9uPTcuMDQ0OTgmem9vbT0xNiZxPTUxLjM0ODgzLDcuMDQ0OTgmY29uZj0xJnN0YXJ0PTEmbXZ0PW0mdHJmPTAiIHRhcmdldD0iX2JsYW5rIj5ZYWhvbyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmluZy5jb20vbWFwcy9kZWZhdWx0LmFzcHg/dj0yJmx2bD0xNCZzcD1wb2ludC41MS4zNDg4M183LjA0NDk4X0dDMzUyWTMiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD01MS4zNDg4MyZsb249Ny4wNDQ5OCIgdGFyZ2V0PSJfYmxhbmsiPk9wZW4gQ3ljbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnLz9tbGF0PTUxLjM0ODgzJm1sb249Ny4wNDQ5OCZ6b29tPTEyIiB0YXJnZXQ9Il9ibGFuayI+T3BlbiBTdHJlZXQgTWFwczwvYT48L2xpPh8DZ2RkAicPZBYGAgEPFgIfAQUQODEgTG9nZ2VkIFZpc2l0c2QCBw8PFgIfBQVDfi9zZWVrL2NhY2hlX2xvZ2Jvb2suYXNweD9ndWlkPTg4MWYzM2Q5LTlkZjktNGQyZi1iMjI5LTM1YjYyMWIwNDRiOWRkAgkPDxYEHwUFPX4vc2Vlay9nYWxsZXJ5LmFzcHg/Z3VpZD04ODFmMzNkOS05ZGY5LTRkMmYtYjIyOS0zNWI2MjFiMDQ0YjkfAQUiVmlldyB0aGUgSW1hZ2UgR2FsbGVyeSBvZiA0IGltYWdlc2RkAioPFgIfAQUFZmFsc2VkAisPFgIfAQVLbGF0PTUxLjM0ODgzMzsgbG5nPTcuMDQ0OTgzOyBndWlkPSc4ODFmMzNkOS05ZGY5LTRkMmYtYjIyOS0zNWI2MjFiMDQ0YjknOw0KZAIsDxYCHwEFcXRyeSB7IF9nYXEucHVzaChbJ190cmFja0V2ZW50JywgJ0dlb2NhY2hpbmcnLCAnQ2FjaGVEZXRhaWxzTWVtYmVyVHlwZScsICdQcmVtaXVtJywgbnVsbCwgdHJ1ZV0pOyB9IGNhdGNoKGVycikgeyB9ZAIuDxYCHwNoZAIvD2QWBAIBDxYCHwEFB0VuZ2xpc2hkAgMPFgIfDwIPFh5mD2QWAgIBDw8WCB8SBQVlbi1VUx4LQ29tbWFuZE5hbWUFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB4QQ2F1c2VzVmFsaWRhdGlvbmhkZAIBD2QWAgIBDw8WCB8SBQVkZS1ERR8TBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfFGhkZAICD2QWAgIBDw8WCB8SBQVmci1GUh8TBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8UaGRkAgMPZBYCAgEPDxYIHxIFBXB0LVBUHxMFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8UaGRkAgQPZBYCAgEPDxYIHxIFBWNzLUNaHxMFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHxRoZGQCBQ9kFgICAQ8PFggfEgUFc3YtU0UfEwUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHxRoZGQCBg9kFgICAQ8PFggfEgUFbmwtTkwfEwUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHxRoZGQCBw9kFgICAQ8PFggfEgUFY2EtRVMfEwUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHxRoZGQCCA9kFgICAQ8PFggfEgUFcGwtUEwfEwUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfFGhkZAIJD2QWAgIBDw8WCB8SBQVldC1FRR8TBQ1TZXRUZW1wTG9j" />
+<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="YWxlHwEFBUVlc3RpHxRoZGQCCg9kFgICAQ8PFggfEgUFbmItTk8fEwUNU2V0VGVtcExvY2FsZR8BBQ5Ob3JzaywgQm9rbcOlbB8UaGRkAgsPZBYCAgEPDxYIHxIFBWtvLUtSHxMFDVNldFRlbXBMb2NhbGUfAQUJ7ZWc6rWt7Ja0HxRoZGQCDA9kFgICAQ8PFggfEgUFZXMtRVMfEwUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8UaGRkAg0PZBYCAgEPDxYIHxIFBWh1LUhVHxMFDVNldFRlbXBMb2NhbGUfAQUGTWFneWFyHxRoZGQCDg9kFgICAQ8PFggfEgUFcm8tUk8fEwUNU2V0VGVtcExvY2FsZR8BBQhSb23Dom7Egx8UaGRkAgMPFgIfAQUrU2VydmVyOiBXRUIxMDsgQnVpbGQ6IFdlYi5Ib3RGaXhfMjAxMjA2MDcuMWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgQFMmN0bDAwJENvbnRlbnRCb2R5JFdheXBvaW50cyRXYXlwb2ludHMkY3RsMDEkd3B0Q2hrBTRjdGwwMCRDb250ZW50Qm9keSRXYXlwb2ludHMkV2F5cG9pbnRzJGN0bDAxJHV4UmVtb3ZlBTJjdGwwMCRDb250ZW50Qm9keSRXYXlwb2ludHMkV2F5cG9pbnRzJGN0bDAyJHdwdENoawU0Y3RsMDAkQ29udGVudEJvZHkkV2F5cG9pbnRzJFdheXBvaW50cyRjdGwwMiR1eFJlbW92Za+IC+FergF2qkLu6XjDF4+mSHE1" />
+</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="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&amp;t=634320874095713794" 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=yOeKSKX3bczfxGY_Zc5hYLvIx2CkYHjpDZQQqhhEwehCNEyuXOtKOcJlsNSlwPHggto_kJJC4Z8bsYXsxM5ZKapyuOx2JNUwx1CTWqx9WwrgE6_5khgXCZG5OH8oLpjLYybhGCZYxKcy2rp0P62xnxpNSKHr5wA-ASYmF4fl69Z99PLfAIw1ldEejzvcXzXUWSxdpecllgjTrxCgTsafLoj6Ufs1" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=oAQHQVOyhbKxjaiLTKHt87rLktn5Ltj48Jb_vvSqHKl0Q_Pm-K-JIyGx0JPdaKM2wnAa6RfuR1VnXcuck8W2l3QWL5mbrxRpK4d4qQsMwcm8jxKW1A1M4-X6Fh9umINNB1VVj-MLvNVDzQydvirf_omussmqsV_jYzWm7sOj3PO15aUiZC1hBu3QY_KfH6ZplaKNYhmiCNSOoz-L2JDhdFvHrvEVY8MHwH2a5boO_mBAL_3ngMO-6TtrpWAIwXorgBmxw6feTXHgRN8TeOOahV6UDrxsLlKCuPEqKI7ZbCKrG4GsqMEnCgmDXZpqfpRtnXSOlPPel7cOWsgT66FLSfbF0TU66Stf_hMYZTmRmm3ZmMaRyqKk1nWHUwuxqZBNSgdz0QUNosgzOJDsmRCLXex707T0FURqMBDesO9C6qALVE4RnX1GJaQRfeFVOpFaUwLBbBWmd46eKF7RZpszRsHBPCna9IxDKPaDJAI9EnwdoQFIKw1UWgxGM7Dj-gL-kKlgXe-LRNTmoC1yS74UAuJLbDnoe9lPFUJzvGVbyFA-TYsbzj6VyZxuQmLwk9LJqwThg6p11SINweGeY4rCS5y8KN0gVPEepbRTSUqNUed2egA4_uQsY2Q7c4r4CDAZG32Euo3_Isbugn-V8poEb5_k2lmLMjHf6USmghnNIeGnzoUDw_5T3TAfFT22fVtWbKmnw0Yz9oJxGgOIjEBazHmQ_xVLMZC_kxAzcj_j5Mn4gH5V0" type="text/javascript"></script>
+<script src="js/cachedetails.js" type="text/javascript"></script>
+<script src="../js/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="/images/logo_print_bw.png" alt="Geocaching.com" /></p>
+ <hr />
+
+ </div>
+
+ <header>
+
+ <div class="container">
+
+ <h1 class="Logo span-16">
+ <a href="../" 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="../my/"><img title="Your Profile" src="http://img.geocaching.com/user/avatar/e3afdf64-7188-464e-ac80-8474501d9352.jpg" alt="" style="border-width:0px;" /></a></p>
+ <p class="SignedInText">
+ <strong>
+ Hello, <a href="/my/default.aspx" title="View Profile for Lineflyer" class="SignedInProfileLink">Lineflyer</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%3d881f33d9-9df9-4d2f-b229-35b621b044b9">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" /> 584&nbsp;&nbsp;&nbsp;<img src="/images/challenges/types/sm/challenge.png" title="Challenges Completed" /> 4</strong>
+
+ </p>
+
+ </div>
+
+
+ </div>
+
+ <nav id="Navigation" class="span-24 last">
+
+ <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/#cat=cat:newbies&amp;vid=-4VFeYZTTYs">Geocaching in 2 Minutes</a></li>
+ </ul>
+ </li>
+
+ <li id="ctl00_liNavProfile">
+ <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" 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=d11a3e3d-7db0-4d43-87f2-7893238844a6">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_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>
+ </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_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>
+ <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>
+ <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/">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/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>
+ </ul>
+
+ </nav>
+
+ </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="/">Geocaching</a></span><span> &gt; </span><span><a title="Hide and Seek A Geocache" href="/seek/">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">
+
+ <p>
+ <a href="#" class="CoordInfoLink">
+ <span id="ctl00_ContentBody_CoordInfoLinkControl1_uxCoordInfoCode" class="CoordInfoCode">GC352Y3</span>
+ <span class="arrow">&#9660;</span> </a>
+ </p>
+
+</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>
+</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="/about/cache_types.aspx" target="_blank" title="About Cache Types"><img src="/images/WptTypes/2.gif" alt="Traditional Cache" title="Traditional Cache" width="32" height="32" /></a>
+ </p>
+
+ <h2 class="NoBottomSpacing">
+ <span id="ctl00_ContentBody_CacheName">Die alte Schule</span></h2>
+ <div class="minorCacheDetails Clear">
+ <div id="ctl00_ContentBody_mcd1">
+ A
+ cache
+ by <a href="http://www.geocaching.com/profile/?guid=d11a3e3d-7db0-4d43-87f2-7893238844a6&wid=881f33d9-9df9-4d2f-b229-35b621b044b9&ds=2">Lineflyer</a></div>
+ <div id="ctl00_ContentBody_mcd2">
+ Hidden
+ :
+ 31/Mar/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="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/stars1.gif" alt="1 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="/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">
+ <span class="favorite-value">
+ 1</span><br />
+ 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=881f33d9-9df9-4d2f-b229-35b621b044b9">View Who Favorited this Cache</a></dd>
+ <dt>
+ <img src="/images/silk/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">
+ <a href="#" class="edit-cache-coordinates" id="uxLatLonLink" title="Correct these coordinates">
+ <span id="uxLatLon" style="font-weight:bold;">N 51° 20.930 E 007° 02.699</span>
+ </a>
+ <br />
+ <span id="ctl00_ContentBody_LocationSubPanel" style="display:inline;"><small>
+ UTM: 32U E 363854 N 5690431</small>
+ <br />
+ </span><small>
+ <a id="ctl00_ContentBody_lnkConversions" title="Other Conversions" href="/wpt/?lat=51.348833&amp;lon=7.044983&amp;detail=1" target="_blank">Other Conversions</a>
+ </small>
+ </p>
+ </div>
+ <div class="span-7 last AlignRight">
+ <span id="ctl00_ContentBody_Location">In Nordrhein-Westfalen, Germany</span><br />
+ <span id="lblDistFromHome"><img src="/images/icons/compass/NE.gif" alt="NE" style="vertical-align:text-bottom" />&nbsp;NE 0.27km 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=881f33d9-9df9-4d2f-b229-35b621b044b9" 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=881f33d9-9df9-4d2f-b229-35b621b044b9&amp;lc=5" target="_blank">5 Logs</a>&nbsp;
+ <a id="ctl00_ContentBody_lnkPrintFriendly10Logs" href="cdpf.aspx?guid=881f33d9-9df9-4d2f-b229-35b621b044b9&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=51.347539,7.041743 (Home Location)&amp;daddr=51.348833,7.044983(Die+alte+Schule)" 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>
+ <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;881f33d9-9df9-4d2f-b229-35b621b044b9&#39;);return false;" id="ctl00_ContentBody_btnSendToGPS" />
+ |
+ <input type="submit" name="ctl00$ContentBody$btnSendToPhone" value="Send to My Phone" onclick="s2phone(&#39;GC352Y3&#39;);return false;" id="ctl00_ContentBody_btnSendToPhone" />
+ </p>
+
+ </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="/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="/images/silk/help.png" id="pcn_help" class="CacheNoteHelpImg" />
+ <p id="cache_note" class="NoBottomSpacing">
+ Meiner</p>
+ </fieldset>
+
+ <div class="UserSuppliedContent">
+
+ <span id="ctl00_ContentBody_ShortDescription">Ein einfacher Traditional, der ein wenig an die Vergangenheit des Ortes erinnern möchte.
+</span>
+
+ </div>
+
+ <br />
+ <div class="UserSuppliedContent">
+
+ <span id="ctl00_ContentBody_LongDescription">Wenn ihr vom Cache aus in Richtung Süden schaut, seht ihr den Ort an dem einmal die städtische Grundschule Moltkestraße stand.<br />
+Sie musste Ende der siebziger Jahre dem Bau der Schnellstraße B224n (inzwischen A535) weichen und wurde abgerissen.<br />
+<br />
+Leider habe ich bislang keine Infos/Fotos zur ehemaligen Schule finden können. Auch in keinem der Velberter Bildbände ist die Schule abgebildet. Quellen und Fotos zur Aufwertung dieses Listings sind daher sehr willkommen !!<br />
+<br />
+Parkkoordinaten:<br />
+Habe noch einen Wegpunkt hinzugefügt. Die meisten Navis führen euch auf die nahgelegene Autobahn. Bitte den Wegpunkt nutzen, damit ihr richtig navigiert.<br />
+<br />
+Zum Cache selber:<br />
+Es handelt sich um einen magnetischen Nano. Da ihr in einem Wohngebiet seid, nutzt ruhig die Spoiler um schnell und unauffällig zuzugreifen. Wer ihn fallen lässt, sponsort einen neuen ;-)<br />
+Rollstuhlfahrer brauchen ggf. eine Armverlängerung oder einen Mitcacher obwohl der Cache direkt am Weg liegt.<br />
+<br />
+FTF: Mullemäuse, minimull, unknown-lifeform<br />
+STF: 42549asdj, Huxis, Momostyle<br />
+TTF: DerZarte, abu03</span>
+
+ </div>
+
+ <p>
+
+
+ </p>
+ <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">
+ Avpug qvr Fpuenhor, nore tnam va qre Aäur.</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">
+ </div>
+
+ </div>
+
+
+ <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=2511222" 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=881f33d9-9df9-4d2f-b229-35b621b044b9" class="lnk"><img src="/images/stockholm/16x16/photos.gif" />&nbsp;<span>View Gallery</span></a></li>
+<li><a href="/my/watchlist.aspx?w=2511222" class="lnk"><img src="/images/stockholm/16x16/icon_watchlist.gif" />&nbsp;<span>Watch Listing</span></a></li>
+<li><a href="/hide/report.aspx?guid=881f33d9-9df9-4d2f-b229-35b621b044b9" class="lnk"><img src="/images/stockholm/16x16/page_white_edit.gif" />&nbsp;<span>Edit Listing</span></a></li>
+<li><a href="/hide/attributes.aspx?WptID=2511222" class="lnk"><img src="/images/stockholm/16x16/edit_attribute.gif" />&nbsp;<span>Edit Attributes</span></a></li>
+<li><a href="/hide/wptlist.aspx?RefWptID=881f33d9-9df9-4d2f-b229-35b621b044b9&DS=1" class="lnk"><img src="/images/stockholm/16x16/flag.gif" />&nbsp;<span>Waypoints</span></a></li>
+<li><a href="upload.aspx?id=2511222" class="lnk"><img src="/images/stockholm/16x16/add_image.gif" />&nbsp;<span>Upload Images</span></a></li>
+<li><a href="/seek/log.aspx?ID=2511222&LogType=5" class="lnk"><img src="/images/stockholm/16x16/archive.gif" />&nbsp;<span>Archive Listing</span></a></li>
+<li><a href="/seek/log.aspx?ID=2511222&LogType=22" class="lnk"><img src="/images/stockholm/16x16/icon_disabled.gif" />&nbsp;<span>Disable Listing</span></a></li>
+<li><a href="/bookmarks/ignore.aspx?guid=881f33d9-9df9-4d2f-b229-35b621b044b9&WptTypeID=2" class="lnk"><img src="/images/stockholm/16x16/cross.gif" />&nbsp;<span>Ignore Listing</span></a></li>
+<li><a href="/bookmarks/mark.aspx?guid=881f33d9-9df9-4d2f-b229-35b621b044b9&WptTypeID=2" class="lnk"><img src="/images/stockholm/16x16/book_open_mark.gif" />&nbsp;<span>Bookmark Listing</span></a></li>
+
+ </ul>
+
+ </div>
+
+
+</div>
+
+
+ <div id="ctl00_ContentBody_uxStatusInformation" class="StatusInformationWidget">
+
+
+
+ <div id="ctl00_ContentBody_pnlWatchedCount">
+
+ <p>
+ <img src="/images/icons/icon_watchlist.gif" alt="Watching" /> 2 user(s) watching this cache.</p>
+
+ </div>
+
+
+</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">
+
+ <img src="/images/icon_Boardattention.gif" height="16" width="16" alt="Info" title="Info" />
+ Attributes</h3>
+ <div class="WidgetBody">
+ <img src="/images/attributes/motorcycles-yes.gif" alt="motorcycles allowed" title="motorcycles allowed" width="30" height="30" /> <img src="/images/attributes/winter-yes.gif" alt="available in winter" title="available in winter" 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/public-yes.gif" alt="public transit available" title="public transit available" width="30" height="30" /> <img src="/images/attributes/stroller-yes.gif" alt="stroller accessible" title="stroller accessible" width="30" height="30" /> <img src="/images/attributes/wheelchair-yes.gif" alt="wheelchair accessible" title="wheelchair accessible" 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/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/dogs-yes.gif" alt="dogs allowed" title="dogs allowed" width="30" height="30" /> <p class="NoBottomSpacing"><small><a href="/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="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&SiteID=1&X='21ebf3ad59f34ddfbbdca3676a011c08'" 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>
+
+</div>
+
+
+
+ <div class="GoogleAds AlignCenter BottomSpacing">
+ </div>
+ <div class="clear">
+ </div>
+
+ <span id="ctl00_ContentBody_lnkTravelBugs"></span>
+
+
+<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">
+
+
+ <div id="ctl00_ContentBody_uxTravelBugList_uxNoTrackableItems">
+
+ <p class="NoBottomSpacing"><span id="ctl00_ContentBody_uxTravelBugList_uxNoTrackableItemsLabel">There are no Trackables in this cache.</span></p>
+
+</div>
+ <div class="TopSpacing">
+
+ <p class="NoBottomSpacing"><a id="ctl00_ContentBody_uxTravelBugList_uxTrackableItemsHistory" href="../track/search.aspx?wid=881f33d9-9df9-4d2f-b229-35b621b044b9">View past Trackables</a></p>
+ <p class="NoBottomSpacing"><a id="ctl00_ContentBody_uxTravelBugList_uxWhatAreTrackables" title="What are Trackable Items?" href="../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="/hide/wptlist.aspx?RefWptID=881f33d9-9df9-4d2f-b229-35b621b044b9&amp;DS=1">Add / Edit waypoints</a>)</span>
+ <br />
+
+
+<script type="text/javascript">
+ <!--
+ var checkflag = false;
+ function checkAll(obj) {
+ if (checkflag == false) {
+ checkflag = true;
+ } else {
+ checkflag = false;
+ }
+ var arrInput = document.getElementsByTagName("input");
+ for (i = 0; i < arrInput.length; i++) {
+ if (arrInput[i].type == 'checkbox') {
+ arrInput[i].checked = checkflag;
+ }
+ }
+ }
+
+ // End -->
+</script>
+
+ <table class="Table" id="ctl00_ContentBody_Waypoints">
+ <thead>
+ <tr>
+ <th scope="col" class="AlignCenter">
+ <a href="javascript:checkAll(this);">
+ <img id="ctl00_ContentBody_Waypoints_Waypoints_ctl00_imgCheckAll" title="Click to Check/Uncheck all Items" src="/images/silk/tick.png" style="height:16px;width:16px;border-width:0px;" /></a>
+ </th>
+ <th scope="col">
+ &nbsp;
+ </th>
+ <th scope="col">
+ &nbsp;
+ </th>
+ <th scope="col">
+ Prefix
+ </th>
+ <th scope="col">
+ Lookup
+ </th>
+ <th scope="col">
+ Name
+ </th>
+ <th scope="col">
+ Coordinate
+ </th>
+ <th scope="col">
+ &nbsp;
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+
+ <tr class="BorderBottom " ishidden="false">
+ <td class="AlignCenter">
+ <span class="Checkbox"><input id="ctl00_ContentBody_Waypoints_Waypoints_ctl01_wptChk" type="checkbox" name="ctl00$ContentBody$Waypoints$Waypoints$ctl01$wptChk" /></span>
+ </td>
+ <td>
+ <img width="16" height="16" src="/images/icons/icon_viewable.jpg" alt="Visible" title="Visible" />
+ </td>
+ <td>
+ <img src="http://www.geocaching.com/images/wpttypes/sm/pkg.jpg" width="16" height="16" alt="Parking Area" title="Parking Area" />
+ </td>
+ <td>
+ <span id="awpt_PK">
+ PK</span>
+ </td>
+ <td>
+ PARKNG
+ </td>
+ <td>
+ <a href="http://www.geocaching.com/seek/wpt.aspx?WID=738fa608-f1f2-4a22-920a-78c5b3147c36&RefID=881f33d9-9df9-4d2f-b229-35b621b044b9&RefDS=1">GC352Y3 Parking</a> (Parking Area)
+ </td>
+ <td>
+ N 51° 20.941 E 007° 02.742&nbsp;
+
+ </td>
+ <td>
+ <a id="ctl00_ContentBody_Waypoints_Waypoints_ctl01_uxEdit" title="Edit" href="/hide/wptlist.aspx?WID=738fa608-f1f2-4a22-920a-78c5b3147c36&amp;DS=1&amp;RefWptID=881f33d9-9df9-4d2f-b229-35b621b044b9#edit"><img title="Edit" src="../images/icons/icon_pencil.gif" alt="Edit" style="border-width:0px;" /></a>&nbsp;
+ <a id="ctl00_ContentBody_Waypoints_Waypoints_ctl01_uxMap" title="Map" href="../map/default.aspx?lat=51.34902&amp;lng=7.0457" target="_blank"><img title="Map" src="../images/silk/map.png" alt="Map" style="border-width:0px;" /></a>&nbsp;
+
+ <input type="image" name="ctl00$ContentBody$Waypoints$Waypoints$ctl01$uxRemove" id="ctl00_ContentBody_Waypoints_Waypoints_ctl01_uxRemove" title="Remove" class="Button" src="../images/icons/icon_trashcan.gif" alt="Remove" onclick="return confirm(&#39;Are you sure you want to remove this waypoint?&#39;);" style="border-width:0px;" />
+ </td>
+ </tr>
+ <tr class="BorderBottom ">
+ <td>
+ &nbsp;
+ </td>
+ <td>
+ Note:
+ </td>
+ <td colspan="6">
+ Navigationskoordinaten, damit ihr nicht auf der Autobahn landet
+ </td>
+ </tr>
+
+ <tr class="BorderBottom AlternatingRow" ishidden="false">
+ <td class="AlignCenter">
+ <span class="Checkbox"><input id="ctl00_ContentBody_Waypoints_Waypoints_ctl02_wptChk" type="checkbox" name="ctl00$ContentBody$Waypoints$Waypoints$ctl02$wptChk" /></span>
+ </td>
+ <td>
+ <img width="16" height="16" src="/images/icons/icon_viewable.jpg" alt="Visible" title="Visible" />
+ </td>
+ <td>
+ <img src="http://www.geocaching.com/images/wpttypes/sm/trailhead.jpg" width="16" height="16" alt="Trailhead" title="Trailhead" />
+ </td>
+ <td>
+ <span id="awpt_TH">
+ TH</span>
+ </td>
+ <td>
+ TRAIL1
+ </td>
+ <td>
+ <a href="http://www.geocaching.com/seek/wpt.aspx?WID=6d952410-f2a9-4b00-b71c-5be37673c8ef&RefID=881f33d9-9df9-4d2f-b229-35b621b044b9&RefDS=1">Abfahrt vom Radweg</a> (Trailhead)
+ </td>
+ <td>
+ N 51° 20.741 E 007° 02.342&nbsp;
+
+ </td>
+ <td>
+ <a id="ctl00_ContentBody_Waypoints_Waypoints_ctl02_uxEdit" title="Edit" href="/hide/wptlist.aspx?WID=6d952410-f2a9-4b00-b71c-5be37673c8ef&amp;DS=1&amp;RefWptID=881f33d9-9df9-4d2f-b229-35b621b044b9#edit"><img title="Edit" src="../images/icons/icon_pencil.gif" alt="Edit" style="border-width:0px;" /></a>&nbsp;
+ <a id="ctl00_ContentBody_Waypoints_Waypoints_ctl02_uxMap" title="Map" href="../map/default.aspx?lat=51.34568&amp;lng=7.03903" target="_blank"><img title="Map" src="../images/silk/map.png" alt="Map" style="border-width:0px;" /></a>&nbsp;
+
+ <input type="image" name="ctl00$ContentBody$Waypoints$Waypoints$ctl02$uxRemove" id="ctl00_ContentBody_Waypoints_Waypoints_ctl02_uxRemove" title="Remove" class="Button" src="../images/icons/icon_trashcan.gif" alt="Remove" onclick="return confirm(&#39;Are you sure you want to remove this waypoint?&#39;);" style="border-width:0px;" />
+ </td>
+ </tr>
+ <tr class="BorderBottom AlternatingRow">
+ <td>
+ &nbsp;
+ </td>
+ <td>
+ Note:
+ </td>
+ <td colspan="6">
+ Nächstgelegene Abfahrt vom Panoramaradweg Niederbergbahn
+ </td>
+ </tr>
+
+ </tbody> </table>
+
+<p>
+ <input type="submit" name="ctl00$ContentBody$Waypoints$btnDelete" value="Bulk Remove" id="ctl00_ContentBody_Waypoints_btnDelete" class="Button" />
+ <span id="ShowHideLink">|
+ <a id="ctl00_ContentBody_Waypoints_uxShowHiddenCoordinates" href="../controls/#">Show Hidden Waypoints</a>
+ <a id="ctl00_ContentBody_Waypoints_uxHideHiddenCoordinates" href="../controls/#">Hide Hidden Waypoints</a></span>
+</p>
+
+<script type="text/javascript" language="javascript">
+ var hiddenLinkCookieName = "hiddenlinks";
+
+ jQuery(function () {
+ var $ = jQuery;
+ var hiddenLinkCookie = jQuery.cookie(hiddenLinkCookieName);
+
+ $('#ctl00_ContentBody_Waypoints_uxShowHiddenCoordinates').click(function (e) {
+ setHiddenCoordState(true);
+ return false;
+ });
+
+ $('#ctl00_ContentBody_Waypoints_uxHideHiddenCoordinates').click(function (e) {
+ setHiddenCoordState(false);
+ return false;
+ });
+
+ if ($("#ctl00_ContentBody_Waypoints tbody tr[ishidden='true']").length > 0) {
+ $("#ShowHideLink").show();
+ } else {
+ $("#ShowHideLink").hide();
+ }
+
+ if (hiddenLinkCookie == null || hiddenLinkCookie == "false") {
+ setHiddenCoordState(false);
+ } else {
+ setHiddenCoordState(true);
+ }
+
+ });
+
+
+
+ function setHiddenCoordState(show) {
+ var $ = jQuery;
+ if (show) {
+ $('#ctl00_ContentBody_Waypoints tbody')
+ .find("tr.AlternatingRow")
+ .removeClass("AlternatingRow")
+ .end()
+ .find("tr")
+ .show()
+ .end()
+ .find("tr:even:visible")
+ .each(function(i) {
+ if (i % 2 == 1)
+ $(this).addClass("AlternatingRow").next().addClass("AlternatingRow");
+ })
+ .end();
+
+ $("#ctl00_ContentBody_Waypoints_uxShowHiddenCoordinates").hide();
+ $("#ctl00_ContentBody_Waypoints_uxHideHiddenCoordinates").show();
+
+ $.cookie(hiddenLinkCookieName, "true");
+
+ } else {
+ $('#ctl00_ContentBody_Waypoints tbody')
+ .find("tr.AlternatingRow")
+ .removeClass("AlternatingRow")
+ .end()
+ .find("tr[ishidden='true']").each(function() {
+ $(this).hide().next().hide();
+ })
+ .end()
+ .find("tr:even:visible")
+ .each(function(i) {
+ if (i % 2 == 1)
+ $(this).addClass("AlternatingRow").next().addClass("AlternatingRow");
+ })
+ .end();
+
+ $("#ctl00_ContentBody_Waypoints_uxShowHiddenCoordinates").show();
+ $("#ctl00_ContentBody_Waypoints_uxHideHiddenCoordinates").hide();
+
+ $.cookie(hiddenLinkCookieName, "false");
+ }
+
+ return false;
+ }
+</script>
+
+ </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" class="lnk" href="/map/default.aspx?lat=51.348833&amp;lng=7.044983" target="_blank"><img src="/images/silk/map_go.png" /> <span>View Larger Map</span></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>
+ <br />
+ <span id="ctl00_ContentBody_FindText"></span>
+ </p>
+ <ul class="NoPrint">
+ <li>
+ ...other caches&nbsp;
+ <a id="ctl00_ContentBody_uxFindLinksHiddenByThisUser" href="/seek/nearest.aspx?u=Lineflyer">hidden</a>&nbsp;
+ or&nbsp;
+ <a id="ctl00_ContentBody_uxFindLinksFoundByThisUser" href="/seek/nearest.aspx?ul=Lineflyer">found</a>&nbsp;
+ by this user
+ </li>
+
+ <li>
+ ...nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksNearbyCachesOfType" href="/seek/nearest.aspx?tx=32bc9333-5e52-4957-b0f6-5a2c8fc7b257&amp;lat=51.348833&amp;lng=7.044983">caches of this type</a>,
+ <a id="ctl00_ContentBody_uxFindLinksNearbyNotFound" href="/seek/nearest.aspx?tx=32bc9333-5e52-4957-b0f6-5a2c8fc7b257&amp;lat=51.348833&amp;lng=7.044983&amp;f=1">that I haven't found</a>
+ </li>
+ <li>
+ ...all nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksAllNearbyCaches" href="/seek/nearest.aspx?lat=51.348833&amp;lng=7.044983">caches</a>,
+ <a id="ctl00_ContentBody_uxFindLinksAllNearbyNotFound" href="/seek/nearest.aspx?lat=51.348833&amp;lng=7.044983&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=51.348833&amp;lon=7.044983">waymarks on Waymarking.com</a>
+ </li>
+
+
+ <li>
+ ...nearby&nbsp;<a id="ctl00_ContentBody_uxFindLinksHotels" href="/reviews/hotels-coords-51.3488,7.045">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=51.34883&lng=7.04498" target="_blank">Geocaching.com Map</a></li><li><a href="http://maps.google.com/maps?q=N+51%c2%b0+20.930+E+007%c2%b0+02.699+(GC352Y3)+" target="_blank">Google Maps</a></li><li><a href="http://www.mapquest.com/maps/map.adp?searchtype=address&formtype=latlong&latlongtype=decimal&latitude=51.34883&longitude=7.04498&zoom=10" target="_blank">MapQuest</a></li><li><a href="http://maps.yahoo.com/#lat=51.34883&lon=7.04498&zoom=16&q=51.34883,7.04498&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.51.34883_7.04498_GC352Y3" target="_blank">Bing Maps</a></li><li><a href="http://www.opencyclemap.org/?zoom=12&lat=51.34883&lon=7.04498" target="_blank">Open Cycle Maps</a></li><li><a href="http://www.openstreetmap.org/?mlat=51.34883&mlon=7.04498&zoom=12" target="_blank">Open Street Maps</a></li></span>
+</ul>
+
+ </span>
+ <p class="NoPrint">
+ <a href="http://img.geocaching.com/cache/large/3f9365c3-f55c-4e55-9992-ee0e5175712c.jpg" rel="lightbox" class="lnk"><img class="StatusIcon" src="/images/stockholm/16x16/images.gif" alt="Photos" title="Photos" /><span>SPOILER</span></a> <span class="minorDetails"> | <a href="image.aspx?imgid=2038846" title="Edit">Edit</a></span><br />
+ </p>
+
+ <div class="InformationWidget Clear">
+ <h3>
+ 81 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" /> 75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_disabled.gif" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_enabled.gif" alt="Enable Listing" title="Enable Listing" /> 2&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_maint.gif" alt="Owner Maintenance" title="Owner Maintenance" /> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
+ <p class="HalfLeft">
+ <a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=881f33d9-9df9-4d2f-b229-35b621b044b9">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=881f33d9-9df9-4d2f-b229-35b621b044b9">View the Image Gallery of 4 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.
+ </p>
+ </div>
+
+ <div id="cache_logs_container">
+ <table id="cache_logs_table" class="LogsTable NoBottomSpacing">
+ <tbody>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td class="AlignCenter">
+ <div id="pnlLazyLoad" style="display: none;">
+ <img src="/images/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-06-18T12:30:05Z">06/18/2012 12:30:05 Pacific Daylight Time (19:30 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-06-18T17:01:51Z">2012-06-18T17:01:51Z</time> on 06/18/2012 10:01:51 Pacific Daylight Time (17:01 GMT) <br/>Last Found: <time class="timeago" datetime="2012-06-18T12:00:00Z">2012-06-18T12:00:00Z</time> on 06/18/2012 12:00:00 Pacific Daylight Time (19:00 GMT) <br/>Published By: <a href="http://www.geocaching.com/profile/?guid=df22c6f2-6035-4201-95a7-12df242c8f5a" id="4564115">Herr Mux</a><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}}
+ <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}}
+ {{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>
+ </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}}
+ <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/silk/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 = 'false';
+
+ lat=51.348833; lng=7.044983; guid='881f33d9-9df9-4d2f-b229-35b621b044b9';
+
+
+ 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">
+
+ <strong>Choose Your Language:</strong>
+
+</div>
+<div class="LocaleList">
+
+ <div id="selected_language">
+
+ <a href="#">English&#9660;</a>
+
+ </div>
+ <ul id="locale_list">
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl00_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl00$uxLocaleItem&#39;,&#39;&#39;)">English</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl01_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl01$uxLocaleItem&#39;,&#39;&#39;)">Deutsch</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl02_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl02$uxLocaleItem&#39;,&#39;&#39;)">Français</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl03_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl03$uxLocaleItem&#39;,&#39;&#39;)">Português</a></li>
+
+ <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_ctl06_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl06$uxLocaleItem&#39;,&#39;&#39;)">Nederlands</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl07_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl07$uxLocaleItem&#39;,&#39;&#39;)">Català</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl08_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl08$uxLocaleItem&#39;,&#39;&#39;)">Polski</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl09_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl09$uxLocaleItem&#39;,&#39;&#39;)">Eesti</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl10_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl10$uxLocaleItem&#39;,&#39;&#39;)">Norsk, Bokmål</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl11_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl11$uxLocaleItem&#39;,&#39;&#39;)">한국어</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl12_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl12$uxLocaleItem&#39;,&#39;&#39;)">Español</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl13_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl13$uxLocaleItem&#39;,&#39;&#39;)">Magyar</a></li>
+
+ <li><a id="ctl00_uxLocaleList_uxLocaleList_ctl14_uxLocaleItem" href="javascript:__doPostBack(&#39;ctl00$uxLocaleList$uxLocaleList$ctl14$uxLocaleItem&#39;,&#39;&#39;)">Română</a></li>
+
+ </ul>
+
+</div>
+<script type="text/javascript">
+
+ jQuery(document).ready(function() {
+ jQuery("#selected_language a").click(function (e) {
+ e.preventDefault();
+ jQuery("#locale_list").show().position({
+ of: $("#selected_language"),
+ my: "left top",
+ at: "left bottom",
+ offset: "0 3",
+ collision: "fit fit"
+ });
+ jQuery(document).click(function () {
+ jQuery("#locale_list").fadeOut("fast");
+ });
+ 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="../about/glossary.aspx">Glossary of Terms</a></li>
+ <li>
+ <a id="ctl00_hlFooterBrochures" title="Brochures" href="../tools/#Guide">Brochures</a></li>
+ <li>
+ <a id="ctl00_hlFooterAbout" title="About Groundspeak" href="../about/groundspeak.aspx">About Groundspeak</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">
+ <strong>
+ Press</strong></p>
+ <ul class="FooterLinks">
+ <li>
+ <a id="ctl00_hlFooterNews" title="News Articles" href="../press/">News Articles</a></li>
+ <li>
+ <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>
+ </ul>
+
+ </div>
+
+ <div class="span-5">
+
+ <p class="FooterHeader">
+ <strong>
+ 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>
+ <li>
+ <a id="ctl00_hlFooterDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
+ <li>
+ <a id="ctl00_hlFooterParksPoliceLink" title="Land Management and Law Enforcement" href="../parksandpolice/">Land Management and Law&nbsp;Enforcement</a></li>
+ <li>
+ <a id="ctl00_hlFooterContactUs" title="Contact Us" href="../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="../tools/">Tools and Downloads</a></li>
+ <li>
+ <a id="ctl00_hlFooterAPIProgram" title="API Program" href="../live/">API Program</a></li>
+ <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">
+ <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/home/icon_twitter.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>
+
+ </div>
+
+ <p class="span-24 last FooterBottom">
+ Copyright
+ &copy; 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="../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>
+
+ </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 = 'zgOYSCRhuAGhLybVGX4EzY%2buPALQKItSabF8WUBLIn80Og6gfJrxN%2fvzGfQ0ezi2Gp7MJDv7ODOJ7plY8HbcWwgfyHXGNP8lEtq9yRWmvyHUj6Z5DlDbthqXmZ1258kxhwlrCGjtLTytqQs06l8idaOwY3Gd%2faqnm4wpklJqZaAek3x7STyKw2hU3bPWLjGBwBVZeU5HAVkQhhpJYyrdEitazYU8R7DAfdWYW7RqQsJKpOAcCIon69i7fDiekGPOQ6J8Cu8KPobPMn2859zIJxOWMlDITbgVhOvJme9R7cqPXc%2bKZMCUfduTOoPTvXJr%2fVkewiLAjn3dPSUhFO2IF3kHlITg%2bSvZi6bWJSJz2jmID8v5Z4YEMb7gMdSC%2bY4OPCBMdVCsaFc0cHrXIQgiTmYhjKOgcir265Uak%2f9UafE%3d';var isLoggedIn = true;
+var userDefinedCoords = {"status":"fail","data":{"isUserDefined":false,"oldLatLngDisplay":"N 51° 20.930' E 007° 02.699'"}};
+cmapAdditionalWaypoints = [{"lat":51.34902,"lng":7.0457,"type":217,"name":"GC352Y3 Parking ( Parking Area )","pf":"PK","editurl":"http://www.geocaching.com/hide/wpt.aspx?WID=738fa608-f1f2-4a22-920a-78c5b3147c36"},{"lat":51.34568,"lng":7.03903,"type":221,"name":"Abfahrt vom Radweg ( Trailhead )","pf":"TH","editurl":"http://www.geocaching.com/hide/wpt.aspx?WID=6d952410-f2a9-4b00-b71c-5be37673c8ef"}];
+mapLatLng = {"lat":51.34883,"lng":7.04498,"type":2,"name":"Die alte Schule"};
+var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"51.348833, 007.044983"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 51° 20' 55.799\" E 007° 02' 41.939\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"32U E 363854 N 5690431"}];
+userInfo = {ID: 4449246};
+userToken = '4OB3GFHLRR3CG77BJPYEHLBBAXWDBIYBMJF5WVL6CGUAUI5H6UK37QDG7CFSS6VTTA5Q3NP5TT7C4TVBB3HVM55OO3M25XJLBPGE2MYX3WEUALQSUGSKLARBF5ZR4WR73BXPJENU25FQ66XWVEHQQUMMWZFCXNGQ5HPUYPEZ5HQBZXVCFQJ6UCW4WYMJBNVJH26HGTDPNF4DRCAC7CWKDQYCCMKHBPBR7FY4Y4JXQARRBEDZH33Q';
+includeAvatars = true;
+initalLogs = {"status":"success", "data": [{"LogID":242995142,"CacheID":2511222,"LogGuid":"a71125fc-3293-4f54-a908-28956629edf7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Gut gefunden. Dose nicht gefallen. DfdC<br />Stein33 aus Langenberg","Created":"18/Jun/2012","Visited":"18/Jun/2012","UserName":"Stein33","MembershipLevel":1,"AccountID":5644115,"AccountGuid":"c93f98a7-a118-4843-b9a9-76fdb36688b6","Email":"","AvatarImage":"c9915cf2-7d80-4709-8086-69db68b1d9fb.jpg","GeocacheFindCount":37,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":242632662,"CacheID":2511222,"LogGuid":"fabd018d-e057-4b3e-996d-4583035809a9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zur Schule bin ich hier nicht gegangen, dafür war die Dose schnell entdeckt.<br /><br />DfdC, Frank / tpfkao","Created":"17/Jun/2012","Visited":"17/Jun/2012","UserName":"tpfkao","MembershipLevel":3,"AccountID":2214695,"AccountGuid":"139d3406-396b-4d55-89da-017c58bde243","Email":"","AvatarImage":"da974499-6715-40b8-97cd-b6b9e76a64c9.jpg","GeocacheFindCount":711,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":242333768,"CacheID":2511222,"LogGuid":"2f4a13da-7cf2-472a-bcb9-f8544d228700","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach einiger doch noch gefunden.<br />Gutes versteck. Danke !","Created":"16/Jun/2012","Visited":"16/Jun/2012","UserName":"pumuckl2108","MembershipLevel":1,"AccountID":5956491,"AccountGuid":"1fd5f940-ec75-4394-9549-0e0b1e194e6b","Email":"","AvatarImage":"afbefa5c-8729-43f5-bb29-e4cca95af05e.jpg","GeocacheFindCount":2,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":241965297,"CacheID":2511222,"LogGuid":"a5e1d315-14c7-4d39-90e7-e7a036e5317f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Mit gefühlten 100.000 Augen im Rücken war die Dose zwar auf den ersten Griff mir, eine längere Suchaktion hätte ich mir hier aber nicht antun wollen.<br /><br /><br />Da es für Rollstuhlfahrer ohne Begleitung kaum möglich sen wird, diese Dose zu bergen, sollte die Geländewertung entsprechend angepasst werden!","Created":"14/Jun/2012","Visited":"13/Jun/2012","UserName":"12Vicky","MembershipLevel":3,"AccountID":2691765,"AccountGuid":"a3704f7c-1b21-4137-b76e-e9acff307a08","Email":"","AvatarImage":"6b9f0011-665f-40e5-9f27-724a098c4590.jpg","GeocacheFindCount":1033,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":241592545,"CacheID":2511222,"LogGuid":"3da9fa56-e21d-4d3e-93e2-09690c4d5e55","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Während einem Wochendbesuch in Velbert habe ich auch diesen Kleinen schnell gefunden. Man kommt sich hier allerdings schon etwas beobachtet vor. <br /><br />TFTC, luxaja","Created":"12/Jun/2012","Visited":"10/Jun/2012","UserName":"luxaja","MembershipLevel":3,"AccountID":1700989,"AccountGuid":"27264c16-8c53-448e-bc9b-836c589456eb","Email":"","AvatarImage":"039db34e-159a-423c-ac9b-0b64933c598c.jpg","GeocacheFindCount":1194,"GeocacheHideCount":8,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":241014989,"CacheID":2511222,"LogGuid":"7bcc87a0-6e84-4190-89f5-a37cde8e0447","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schnell und gut gefunden.<br /><br />\t<img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />\t<img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />\t<img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />","Created":"10/Jun/2012","Visited":"10/Jun/2012","UserName":"ckadett","MembershipLevel":3,"AccountID":5182890,"AccountGuid":"e14caa82-4ddc-433f-b20c-e8d652ad7f6f","Email":"","AvatarImage":"677e5cc1-c7f6-4524-95aa-47e3fc42ce7f.jpg","GeocacheFindCount":189,"GeocacheHideCount":0,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":240798509,"CacheID":2511222,"LogGuid":"d5318116-1182-444a-ae0c-348788121547","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zusammen mit meinem Schatz dem Spatz schnell und problemlos gefunden!<br /><br />DFDC und Grüße aus Heiligenhaus","Created":"09/Jun/2012","Visited":"09/Jun/2012","UserName":"TheMoD","MembershipLevel":3,"AccountID":1095507,"AccountGuid":"66b5935b-54b8-4461-9f66-62f4200a5f4b","Email":"","AvatarImage":"012c06b8-406c-4f91-a4ca-7d7b60a0a530.jpg","GeocacheFindCount":1984,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":240797856,"CacheID":2511222,"LogGuid":"e8333293-e991-4579-a57c-6bb89c514726","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ein schneller Griff und der kleine Nano war unser. Trotz des guten Wetters muggelfrei geloggt und dabei ein wenig Autos auf der nahen Bahn beobachtet.","Created":"09/Jun/2012","Visited":"09/Jun/2012","UserName":"Spatz75","MembershipLevel":3,"AccountID":1918412,"AccountGuid":"d01af0e0-9193-4997-aeb6-dc6510d23b00","Email":"","AvatarImage":"2f989e5b-a6c3-4b31-8e4c-1a30887e59db.jpg","GeocacheFindCount":1960,"GeocacheHideCount":7,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":240526059,"CacheID":2511222,"LogGuid":"41b362f6-9e65-46f4-8027-85466e8ddfd9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Hey haben nach langer suhe doch endlich den cache gefunden! Fanden den cache ziemlich cool! Naja meine freundin die heute das erste mal gecachet hat war sehr ungeduldig und wollte mehrmals abbrechen, war aber dann als er gefunden war glücklich über den ersten cache-erfolg<br />Lg Andrelalala","Created":"08/Jun/2012","Visited":"08/Jun/2012","UserName":"Andrelalala","MembershipLevel":1,"AccountID":5942238,"AccountGuid":"cfb00faf-721b-45e0-b03c-b9a8c7e855aa","Email":"","AvatarImage":"","GeocacheFindCount":13,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":240012231,"CacheID":2511222,"LogGuid":"8e50e35b-8205-4d7f-9f4e-7335af62f522","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Enable Listing","LogTypeImage":"icon_enabled.gif","LogText":"Weiter gehts.","Created":"06/Jun/2012","Visited":"06/Jun/2012","UserName":"Lineflyer","MembershipLevel":3,"AccountID":4449246,"AccountGuid":"d11a3e3d-7db0-4d43-87f2-7893238844a6","Email":"","AvatarImage":"e3afdf64-7188-464e-ac80-8474501d9352.jpg","GeocacheFindCount":584,"GeocacheHideCount":3,"ChallengesCompleted":4,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":240012110,"CacheID":2511222,"LogGuid":"33256985-ebbb-4ff5-b116-7ff8bc6a15cb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Owner Maintenance","LogTypeImage":"icon_maint.gif","LogText":"Ist doch noch da.","Created":"06/Jun/2012","Visited":"06/Jun/2012","UserName":"Lineflyer","MembershipLevel":3,"AccountID":4449246,"AccountGuid":"d11a3e3d-7db0-4d43-87f2-7893238844a6","Email":"","AvatarImage":"e3afdf64-7188-464e-ac80-8474501d9352.jpg","GeocacheFindCount":584,"GeocacheHideCount":3,"ChallengesCompleted":4,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":240005834,"CacheID":2511222,"LogGuid":"f12cb164-7e87-4fe0-ad4b-912f35a7b45a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Temporarily Disable Listing","LogTypeImage":"icon_disabled.gif","LogText":"Kurze Wartungspause","Created":"06/Jun/2012","Visited":"06/Jun/2012","UserName":"Lineflyer","MembershipLevel":3,"AccountID":4449246,"AccountGuid":"d11a3e3d-7db0-4d43-87f2-7893238844a6","Email":"","AvatarImage":"e3afdf64-7188-464e-ac80-8474501d9352.jpg","GeocacheFindCount":584,"GeocacheHideCount":3,"ChallengesCompleted":4,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":239830280,"CacheID":2511222,"LogGuid":"ec3d781c-47ee-4cd7-be3c-7cc9fffdb9ab","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schnell und einfach gefunden. TFTC","Created":"05/Jun/2012","Visited":"05/Jun/2012","UserName":"piccohunter","MembershipLevel":3,"AccountID":3685372,"AccountGuid":"478f612c-e237-440d-966f-a24f37110fc9","Email":"","AvatarImage":"c492bf5e-0982-4267-bdd9-b63d8833c66e.jpg","GeocacheFindCount":414,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":239826269,"CacheID":2511222,"LogGuid":"e36dc793-6af0-463f-8e42-07e8e63e4e0c","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"THX den kleinen Kerl heute schnell gefunden.","Created":"05/Jun/2012","Visited":"05/Jun/2012","UserName":"Phantom1953DD","MembershipLevel":3,"AccountID":5531171,"AccountGuid":"346bd0d3-2c09-4fda-bc33-69f22f3bf592","Email":"","AvatarImage":"3f2e60ac-b455-44e2-976a-47c31551cf89.jpg","GeocacheFindCount":198,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":239330567,"CacheID":2511222,"LogGuid":"23fc9ca6-6a4c-4f2b-b6ff-3a7b01d47276","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute gut gefunden!<br /><br />TFTC AnLaLuNi","Created":"03/Jun/2012","Visited":"03/Jun/2012","UserName":"AnLaLuNi","MembershipLevel":3,"AccountID":2771581,"AccountGuid":"f265326f-bb1b-4dad-a219-3fe34a84360c","Email":"","AvatarImage":"73136e83-b909-4a08-a078-864e729951d3.jpg","GeocacheFindCount":272,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":239675303,"CacheID":2511222,"LogGuid":"a70c5716-4883-4912-a282-e3623e27e38d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ich war der Dritte im Bunde, der nach dem Stammtisch das Garmin noch etwas ausführen wollte. Vielen Dank fürs Verstecken sagt hahtho","Created":"04/Jun/2012","Visited":"02/Jun/2012","UserName":"hahtho","MembershipLevel":3,"AccountID":3672323,"AccountGuid":"e8254270-b944-46ef-93ed-fbb620fbb4f6","Email":"","AvatarImage":"05ea51b2-e935-4e0e-90e0-f93b565434a3.jpg","GeocacheFindCount":632,"GeocacheHideCount":0,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":239230897,"CacheID":2511222,"LogGuid":"b8e69b02-b964-4016-8294-c495d0dfbafa","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Wie meistens nach einem Stammtisch wurden noch so einige Caches gemacht. Einer von diesen war er hier. Zusammen mit hahtho & PG eine kleine Runde durch Velbert gemacht und dabei diesen hier schnell gefunden. Danke fürs herlocken.<br /><br />TFTC sagt TK2107 <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />","Created":"03/Jun/2012","Visited":"02/Jun/2012","UserName":"TK2107","MembershipLevel":3,"AccountID":5105481,"AccountGuid":"029e5a08-99b8-4ced-a6e3-34e07c468929","Email":"","AvatarImage":"21c19105-03ba-48e2-9c3a-8e55d4562bb4.jpg","GeocacheFindCount":449,"GeocacheHideCount":0,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":239178567,"CacheID":2511222,"LogGuid":"02dad869-9b79-4b58-80ae-f67492429190","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach dem Stammtisch wurde ganz nach alter Schule noch gecached. <br />Danke für's verstecken und LG aus Schuir vom Pudding Grabowski","Created":"02/Jun/2012","Visited":"02/Jun/2012","UserName":"Pudding Grabowski","MembershipLevel":3,"AccountID":2899510,"AccountGuid":"b9aa6e86-3f02-44b2-987e-c2149a5591c2","Email":"","AvatarImage":"d145387e-8da2-476e-960a-2504c06434fc.jpg","GeocacheFindCount":1328,"GeocacheHideCount":5,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":238839209,"CacheID":2511222,"LogGuid":"7a882a88-f0fb-49bb-bb9a-b96a30d99cdd","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Auf dem Weg gehalten und diesen Kleinen mitgenommen.","Created":"01/Jun/2012","Visited":"31/May/2012","UserName":"Kathy 411","MembershipLevel":3,"AccountID":4454525,"AccountGuid":"b782416b-35c7-4558-b112-a859cba97cd1","Email":"","AvatarImage":"","GeocacheFindCount":376,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":237958270,"CacheID":2511222,"LogGuid":"0c2da168-3e49-4526-b2a1-a9b4b477c020","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"....sondern an uns weiter gereicht... <br />Vielen Dank für das Döschen und Grüße aus Wuppertal von den Kühen.","Created":"28/May/2012","Visited":"28/May/2012","UserName":"Kühe","MembershipLevel":3,"AccountID":2747750,"AccountGuid":"fcdc1a76-8699-438a-87bb-3dd4a1fc13b5","Email":"","AvatarImage":"7710a247-34e9-4493-bf2d-1cff10909f5f.jpg","GeocacheFindCount":803,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":237765024,"CacheID":2511222,"LogGuid":"5a2140b4-e2e5-47af-9053-f0b9ce02f980","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"...haben ihn nicht fallen gelasen...<br />Grüße vom Dimo Team","Created":"28/May/2012","Visited":"28/May/2012","UserName":"Dimo Team","MembershipLevel":3,"AccountID":1341626,"AccountGuid":"46dae1a6-c320-4df9-96df-60fcd537d6c4","Email":"","AvatarImage":"63816e25-00c9-411b-af57-47a8e79dcc5a.jpg","GeocacheFindCount":1881,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":236663795,"CacheID":2511222,"LogGuid":"a082ffb7-144f-4cdc-b2bb-9664c241bf29","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Diese Dose gut gefunden.<br />Team Enibu sagt danke.","Created":"24/May/2012","Visited":"24/May/2012","UserName":"Enibu","MembershipLevel":3,"AccountID":4712670,"AccountGuid":"e6bfb62c-4af2-480e-ad12-477a98687bf9","Email":"","AvatarImage":"aa18234f-9818-4198-96dc-02ba1689646d.jpg","GeocacheFindCount":1810,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":236100547,"CacheID":2511222,"LogGuid":"cdccabc4-a6f7-4b3f-9e23-929a18bbc470","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Die Schule haben wir nicht gefunden, aber den Cache. TFTC stefperle <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />","Created":"21/May/2012","Visited":"21/May/2012","UserName":"stefperle","MembershipLevel":3,"AccountID":2344936,"AccountGuid":"8ec1499b-1089-4157-bb14-b288f012d29a","Email":"","AvatarImage":"e57cfefd-ffbc-4666-8b31-c3a5dd274f43.jpg","GeocacheFindCount":2184,"GeocacheHideCount":7,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":235101055,"CacheID":2511222,"LogGuid":"bb49c98e-5f2f-4fe9-a598-28f7fa2279ce","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"#122# 20:55<br /><br />Gut gefunden!<br />tftc","Created":"18/May/2012","Visited":"18/May/2012","UserName":"BenKath","MembershipLevel":3,"AccountID":2637170,"AccountGuid":"72e50892-d478-4723-a1c1-1a9f08748552","Email":"","AvatarImage":"","GeocacheFindCount":129,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":234171345,"CacheID":2511222,"LogGuid":"79db7fcb-c503-44b4-97df-90bc8ab3b84d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Mit. Gastcacher L N und A gut gefunden! ","Created":"14/May/2012","Visited":"14/May/2012","UserName":"halejo","MembershipLevel":1,"AccountID":5818059,"AccountGuid":"6ae4b9f1-0637-4e12-a199-e00f7e1e635d","Email":"","AvatarImage":"56cdfb70-ed51-41e8-88c8-afcc90d86685.jpg","GeocacheFindCount":5,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 81, "rows": 81 } };
+//]]>
+</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_favPointsWhatsThisDesc" type="text/html">
+ Geocaching Favorites is a simple way to track and share the caches that you enjoyed the most. For every 10 distinct caches that you have found, you will be able to Favorite 1 exceptional cache in your find history. The Favorites accumulated by a cache are displayed in search results and on the cache page so everyone can see which caches stand above the rest.
+ </script>
+ <script id="loc_favPointsWhatsThisTitle" type="text/html">
+ About Favorite Points
+ </script>
+ <script id="loc_favPointsScoreDesc" type="text/html">
+ Favorites/Premium Logs
+ </script>
+ <script type="text/javascript" language="javascript">
+ <!--
+
+ $('#uxFavPointsWhatsThis').qtip({
+ content: {
+ text: $("#loc_favPointsWhatsThisDesc").html(),
+ title: {
+ text: $("#loc_favPointsWhatsThisTitle").html(),
+ button: true
+ }
+ },
+ position: {
+ my: 'top center',
+ at: 'bottom center'
+ },
+ show: {
+ event: 'click'
+ },
+ hide: 'click unfocus',
+ style: {
+ classes: 'ui-tooltip'
+ }
+ })
+
+ 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: WEB10; Build: Web.HotFix_20120607.1 -->
+</body>
+</html>
diff --git a/tests/src/cgeo/geocaching/cgeoApplicationTest.java b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
index e34fe76..fa0a4b9 100644
--- a/tests/src/cgeo/geocaching/cgeoApplicationTest.java
+++ b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
@@ -385,7 +385,7 @@ public class cgeoApplicationTest extends CGeoTestCase {
Assert.assertEquals("California, United States", GCV2R9.getLocation());
cgCache GC1ZXEZ = cgeoApplicationTest.testSearchByGeocode("GC1ZXEZ");
- Assert.assertEquals("Ms.Marple/Mr.Stringer", GC1ZXEZ.getOwnerReal());
+ Assert.assertEquals("Ms.Marple/Mr.Stringer", GC1ZXEZ.getOwnerUserId());
}
/** Remove cache from DB and cache to ensure that the cache is not loaded from the database */
diff --git a/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java b/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java
index 7c69606..564c891 100644
--- a/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java
+++ b/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java
@@ -21,7 +21,7 @@ public class GCConstantsTest extends AndroidTestCase {
public static void testCacheCount() {
assertCacheCount(149, "<strong><img src=\"/images/icons/icon_smile.png\" title=\"Caches Found\" /> 149</strong>");
- assertCacheCount(590, MockedCache.readCachePage("GC2CJPF")); // # of caches found by blafoo at the point of time creating the mocked data
+ assertCacheCount(626, MockedCache.readCachePage("GC2CJPF")); // # of caches found by blafoo at the point of time creating the mocked data
assertCacheCount(1510, "<strong><img src=\"/images/icons/icon_smile.png\" title=\"Caches Found\" /> 1,510&nbsp;&middot;&nbsp;<img src=\"/images/challenges/types/sm/challenge.png\" title=\"Challenges Completed\" /> 2</strong>");
assertCacheCount(67, "<strong><img title=\"Caches Found\" src=\"/images/icons/icon_smile.png\"/> 67</strong>");
assertCacheCount(1067, "<strong><img title=\"Caches Found\" src=\"/images/icons/icon_smile.png\"/> 1,067</strong>");
diff --git a/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java b/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java
index 54f69ce..dd4ae9d 100644
--- a/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java
+++ b/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java
@@ -3,6 +3,7 @@ package cgeo.geocaching.connector.gc;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgImage;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.enumerations.StatusCode;
@@ -14,6 +15,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.lang3.StringUtils;
import android.test.suitebuilder.annotation.MediumTest;
@@ -29,6 +31,21 @@ public class GCParserTest extends AbstractResourceInstrumentationTestCase {
assertEquals(StatusCode.UNPUBLISHED_CACHE, result.getError());
}
+ public void testOwnCache() {
+ final String page = getFileContent(R.raw.own_cache);
+ SearchResult result = GCParser.parseCacheFromText(page, null);
+ assertNotNull(result);
+ assertFalse(result.isEmpty());
+ final cgCache cache = result.getFirstCacheFromResult(LoadFlags.LOAD_CACHE_OR_DB);
+ assertNotNull(cache);
+ assertTrue(CollectionUtils.isNotEmpty(cache.getSpoilers()));
+ assertEquals(1, cache.getSpoilers().size());
+ final cgImage spoiler = cache.getSpoilers().get(0);
+ assertEquals("http://img.geocaching.com/cache/large/3f9365c3-f55c-4e55-9992-ee0e5175712c.jpg", spoiler.getUrl());
+ assertEquals("SPOILER", spoiler.getTitle());
+ assertNull(spoiler.getDescription());
+ }
+
private static cgCache createCache(int index) {
final MockedCache mockedCache = RegExPerformanceTest.MOCKED_CACHES[index];
// to get the same results we have to use the date format used when the mocked data was created
diff --git a/tests/src/cgeo/geocaching/files/GPXParserTest.java b/tests/src/cgeo/geocaching/files/GPXParserTest.java
index 00e0447..5ba4081 100644
--- a/tests/src/cgeo/geocaching/files/GPXParserTest.java
+++ b/tests/src/cgeo/geocaching/files/GPXParserTest.java
@@ -36,7 +36,8 @@ public class GPXParserTest extends AbstractResourceInstrumentationTestCase {
assertEquals(false, cache.isArchived());
assertEquals(false, cache.isDisabled());
assertEquals("Die Schatzinsel / treasure island", cache.getName());
- assertEquals("Die unbesiegbaren Geo - Geparden", cache.getOwner());
+ assertEquals("Die unbesiegbaren Geo - Geparden", cache.getOwnerDisplayName());
+ assertEquals("Die unbesiegbaren Geo - Geparden", cache.getOwnerUserId());
assertEquals(CacheSize.MICRO, cache.getSize());
assertEquals(1.0f, cache.getDifficulty());
assertEquals(5.0f, cache.getTerrain());
@@ -60,7 +61,8 @@ public class GPXParserTest extends AbstractResourceInstrumentationTestCase {
assertEquals(false, cache.isArchived());
assertEquals(false, cache.isDisabled());
assertEquals("Die Schatzinsel / treasure island", cache.getName());
- assertEquals("Die unbesiegbaren Geo - Geparden", cache.getOwner());
+ assertEquals("Die unbesiegbaren Geo - Geparden", cache.getOwnerDisplayName());
+ assertEquals("Die unbesiegbaren Geo - Geparden", cache.getOwnerUserId());
assertEquals(CacheSize.SMALL, cache.getSize());
assertEquals(1.0f, cache.getDifficulty());
assertEquals(4.0f, cache.getTerrain());
@@ -105,6 +107,8 @@ public class GPXParserTest extends AbstractResourceInstrumentationTestCase {
assertEquals(WaypointType.TRAILHEAD, GPXParser.convertWaypointSym2Type("Trailhead"));
assertEquals(WaypointType.FINAL, GPXParser.convertWaypointSym2Type("Final location"));
assertEquals(WaypointType.WAYPOINT, GPXParser.convertWaypointSym2Type("Reference point"));
+
+ assertEquals(WaypointType.PARKING, GPXParser.convertWaypointSym2Type(WaypointType.PARKING.getL10n()));
}
private static void assertGc31j2h(final cgCache cache) {
@@ -117,7 +121,8 @@ public class GPXParserTest extends AbstractResourceInstrumentationTestCase {
assertEquals(1.0f, cache.getTerrain(), 0.01f);
final Geopoint refCoordinates = new Geopoint("N 49° 19.122", "E 008° 32.739");
assertEquals(refCoordinates, cache.getCoords());
- assertEquals("vptsz", cache.getOwner());
+ assertEquals("vptsz", cache.getOwnerDisplayName());
+ assertEquals("vptsz", cache.getOwnerUserId());
assertEquals(CacheSize.SMALL, cache.getSize());
assertEquals(CacheType.MULTI, cache.getType());
assertFalse(cache.isArchived());
@@ -228,4 +233,14 @@ public class GPXParserTest extends AbstractResourceInstrumentationTestCase {
// previously these caches overwrote each other during parsing
assertEquals(130, caches.size());
}
+
+ public void testGeoToad() throws Exception {
+ final List<cgCache> caches = readGPX10(R.raw.geotoad);
+ assertEquals(2, caches.size());
+ cgCache cache;
+ cache = caches.get(0);
+ assertEquals("GC2KN6K", cache.getGeocode());
+ cache = caches.get(1);
+ assertEquals("GC1T3MK", cache.getGeocode());
+ }
}
diff --git a/tests/src/cgeo/geocaching/geopoint/HumanDistanceTest.java b/tests/src/cgeo/geocaching/geopoint/HumanDistanceTest.java
deleted file mode 100644
index c5fce00..0000000
--- a/tests/src/cgeo/geocaching/geopoint/HumanDistanceTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package cgeo.geocaching.geopoint;
-
-import cgeo.CGeoTestCase;
-import cgeo.geocaching.Settings;
-
-import java.util.regex.Pattern;
-
-public class HumanDistanceTest extends CGeoTestCase {
-
- private static void assertMatch(final String ok, final float distance) {
- final String humanDistance = HumanDistance.getHumanDistance(distance);
- if (!Pattern.compile('^' + ok + '$').matcher(humanDistance).find()) {
- fail("getHumanDistance(" + distance +
- ") [metric: " + (Settings.isUseMetricUnits() ? "yes" : "no") +
- "] fails to match " + ok + ": " + humanDistance);
- }
- }
-
- // Make method non-static so that Settings is initialized
- @SuppressWarnings("static-method")
- public void testHumanDistance() {
- assertEquals("?", HumanDistance.getHumanDistance(null));
- final boolean savedMetrics = Settings.isUseMetricUnits();
- try {
- Settings.setUseMetricUnits(true);
- assertMatch("123 km", 122.782f);
- assertMatch("123 km", 123.456f);
- assertMatch("12.3 km", 12.3456f);
- assertMatch("1.23 km", 1.23456f);
- assertMatch("123 m", 0.123456f);
- Settings.setUseMetricUnits(false);
- assertMatch("76.7 mi", 123.456f);
- assertMatch("7.67 mi", 12.3456f);
- assertMatch("0.77 mi", 1.23456f);
- assertMatch("405 ft", 0.123456f);
- assertMatch("40.5 ft", 0.0123456f);
- } finally {
- Settings.setUseMetricUnits(savedMetrics);
- }
- }
-}
diff --git a/tests/src/cgeo/geocaching/geopoint/UnitsTest.java b/tests/src/cgeo/geocaching/geopoint/UnitsTest.java
new file mode 100644
index 0000000..10f1785
--- /dev/null
+++ b/tests/src/cgeo/geocaching/geopoint/UnitsTest.java
@@ -0,0 +1,103 @@
+package cgeo.geocaching.geopoint;
+
+import cgeo.CGeoTestCase;
+import cgeo.geocaching.Settings;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class UnitsTest extends CGeoTestCase {
+
+ private static void assertDistance(final String expected, final float distance) {
+ final String actual = Units.getDistanceFromKilometers(distance);
+ if (!StringUtils.equals(expected, actual.replace(',', '.'))) { // make 1.2 the same as 1,2
+ fail("getHumanDistance(" + distance +
+ ") [metric: " + (Settings.isUseMetricUnits() ? "yes" : "no") +
+ "] fails to match " + expected + ": " + actual);
+ }
+ }
+
+ // Make method non-static so that Settings is initialized
+ @SuppressWarnings("static-method")
+ public void testDistance() {
+ assertEquals("?", Units.getDistanceFromKilometers(null));
+ final boolean savedMetrics = Settings.isUseMetricUnits();
+ try {
+ Settings.setUseMetricUnits(true);
+ assertDistance("123 km", 122.782f);
+ assertDistance("123 km", 123.456f);
+ assertDistance("12.3 km", 12.3456f);
+ assertDistance("1.23 km", 1.23456f);
+ assertDistance("123 m", 0.123456f);
+ Settings.setUseMetricUnits(false);
+ assertDistance("76.7 mi", 123.456f);
+ assertDistance("7.67 mi", 12.3456f);
+ assertDistance("0.77 mi", 1.23456f);
+ assertDistance("405 ft", 0.123456f);
+ assertDistance("40.5 ft", 0.0123456f);
+ } finally {
+ Settings.setUseMetricUnits(savedMetrics);
+ }
+ }
+
+ // Make method non-static so that Settings is initialized
+ @SuppressWarnings("static-method")
+ public void testElevation() {
+ final boolean savedMetrics = Settings.isUseMetricUnits();
+ try {
+ Settings.setUseMetricUnits(true);
+ assertElevation("↥ 123 m", 122.782f);
+ assertElevation("↥ 123 m", 123.456f);
+ assertElevation("↥ 12 m", 12.3456f);
+ assertElevation("↥ 1 m", 1.23456f);
+ assertElevation("↥ 2 m", 1.6f);
+ assertElevation("↥ 0 m", 0.123456f);
+ assertElevation("↧ 123 m", -122.782f);
+ assertElevation("↧ 123 m", -123.456f);
+ assertElevation("↧ 12 m", -12.3456f);
+ assertElevation("↧ 1 m", -1.23456f);
+ assertElevation("↧ 2 m", -1.6f);
+ assertElevation("↧ 0 m", -0.123456f);
+ Settings.setUseMetricUnits(false);
+ assertElevation("↥ 405 ft", 123.456f);
+ assertElevation("↥ 41 ft", 12.3456f);
+ } finally {
+ Settings.setUseMetricUnits(savedMetrics);
+ }
+ }
+
+ private static void assertElevation(final String expected, final float meters) {
+ final String actual = Units.getElevation(meters);
+ if (!StringUtils.equals(expected, actual.replace(',', '.'))) {
+ fail("elevation " + actual + " does not match expected " + expected);
+ }
+ }
+
+ // Make method non-static so that Settings is initialized
+ @SuppressWarnings("static-method")
+ public void testSpeed() {
+ assertEquals("?", Units.getDistanceFromKilometers(null));
+ final boolean savedMetrics = Settings.isUseMetricUnits();
+ try {
+ Settings.setUseMetricUnits(true);
+ assertSpeed("123 km/h", 122.782f);
+ assertSpeed("123 km/h", 123.456f);
+ assertSpeed("12.3 km/h", 12.3456f);
+ assertSpeed("1.23 km/h", 1.23456f);
+ assertSpeed("123 m/h", 0.123456f);
+ Settings.setUseMetricUnits(false);
+ assertSpeed("76.7 mph", 123.456f);
+ assertSpeed("7.67 mph", 12.3456f);
+ assertSpeed("0.77 mph", 1.23456f);
+ } finally {
+ Settings.setUseMetricUnits(savedMetrics);
+ }
+ }
+
+ private static void assertSpeed(final String expected, final float kilometersPerHour) {
+ final String actual = Units.getSpeed(kilometersPerHour);
+ if (!StringUtils.equals(expected, actual.replace(',', '.'))) {
+ fail("speed " + actual + " does not match expected " + expected);
+ }
+ }
+
+}
diff --git a/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html b/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html
index e70db17..264032f 100644
--- a/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html
+++ b/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html
@@ -244,8 +244,8 @@
<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="/wEPDwUKMjEwMzIwMDYxOA8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE0MzM5MDkWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYQAgUPFgIfAWRkAggPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvNTBmODMxMjMtMjdkOC00ZGNmLTlmZGUtMmFmMDA2ZWZhZjJiLmpwZ2RkAgMPFgIfAQVoSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIGJsYWZvbyIgY2xhc3M9IlNpZ25lZEluUHJvZmlsZUxpbmsiPmJsYWZvbzwvYT5kAgUPDxYCHgtOYXZpZ2F0ZVVybAWtAWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmbG9nJTNkeSUyNndwJTNkR0MxWlhYMiUyNm51bWxvZ3MlM2QzNSUyNmRlY3J5cHQlM2R5ZGQCCw8WAh8BBasBPGltZyBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9zbWlsZS5wbmciIHRpdGxlPSJDYWNoZXMgRm91bmQiIC8+IDU5MCZuYnNwOyZuYnNwOyZuYnNwOzxpbWcgc3JjPSIvaW1hZ2VzL2NoYWxsZW5nZXMvdHlwZXMvc20vY2hhbGxlbmdlLnBuZyIgdGl0bGU9IkNoYWxsZW5nZXMgQ29tcGxldGVkIiAvPiAzZAINDxYCHwNnFgICDQ8PFgIfBQVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTA1NjRhOTQwLTgzMTEtNDBlZS04ZTc2LTdlOTFiMmNmNjI4NGRkAhAPDxYCHwNnZGQCLA9kFgICAw8WAh8DaGQCLQ8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYwAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0MxWlhYMmRkAgIPFgIfAQW9ATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy8yLmdpZiIgYWx0PSJUcmFkaXRpb25hbCBDYWNoZSIgdGl0bGU9IlRyYWRpdGlvbmFsIENhY2hlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIC8+PC9hPmQCBQ9kFgICAQ8WAh8BBQFBZAIGD2QWBAIBDxYCHwNnZAIHDxYCHwNoZAILD2QWBAIBDxYCHwEFAjQyZAIDDw8WAh8FBUQvc2Vlay9jYWNoZV9mYXZvcml0ZWQuYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OGRkAg0PDxYCHwNoZGQCDw8WBB8BBb4BPHAgY2xhc3M9Ik9sZFdhcm5pbmcgTm9Cb3R0b21TcGFjaW5nIj48c3Ryb25nPkNhY2hlIElzc3Vlczo8L3N0cm9uZz48L3A+PHVsIGNsYXNzPSJPbGRXYXJuaW5nIj48bGk+VGhpcyBjYWNoZSBoYXMgYmVlbiBhcmNoaXZlZCwgYnV0IGlzIGF2YWlsYWJsZSBmb3Igdmlld2luZyBmb3IgYXJjaGl2YWwgcHVycG9zZXMuPC9saT48L3VsPh8DZ2QCEA8WAh8DaGQCEQ8WAh8DaGQCEg9kFgwCAw8WAh4Fc3R5bGUFD2Rpc3BsYXk6aW5saW5lOxYCAgEPFgIfAQUbVVRNOiAzMlUgRSA1NDgzODkgTiA1ODAyNzg3ZAINDw8WAh8FBTNjZHBmLmFzcHg/Z3VpZD0zNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOThkZAIPDw8WAh8FBThjZHBmLmFzcHg/Z3VpZD0zNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOTgmbGM9NWRkAhEPDxYCHwUFOWNkcGYuYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OCZsYz0xMGRkAhMPDxYEHwUFggFodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/Zj1kJmhsPWVuJnNhZGRyPTUyLjQxNjIsOS41OTQxMTcgKEhvbWUgTG9jYXRpb24pJmRhZGRyPTUyLjM3MzIxNyw5LjcxMDgoSGFubm9wb2x5JTNhK0Vpc2xpc2Vuc3RyYXNzZSspHgZUYXJnZXQFBl9ibGFua2RkAhsPZBYIAgEPDxYEHglGb3JlQ29sb3IMHgRfIVNCAgRkZAIDDw8WBB8JDB8KAgRkZAIFDw8WAh8DZxYCHgdvbmNsaWNrBTtzMmdwcygnMzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4Jyk7cmV0dXJuIGZhbHNlO2QCBw8PFgIfA2cWAh8LBSBzMnBob25lKCdHQzFaWFgyJyk7cmV0dXJuIGZhbHNlO2QCFA8WAh8DZxYCAgMPFgIfAQUPVGVzdCBmw7xyIGM6Z2VvZAIXD2QWCGYPFgIfA2hkAgEPDxYCHwNoZGQCAg8PFgIfA2hkZAIDDxYCHwNoZAIYD2QWAgIDDw8WAh8BBRNObyBoaW50cyBhdmFpbGFibGUuFgIfCwUNcmV0dXJuIGZhbHNlO2QCGQ8WAh8DaGQCHA8WAh8DaGQCHg8WAh8DZ2QCHw8WAh8DaGQCIg9kFgICAQ9kFgQCAQ8PFgIfAQX/AzxpZnJhbWUgdHlwZT0iaWZyYW1lIiBzcmM9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUdldCZTaXRlSUQ9MSZYPSczN2I4NjdmZDI3NmE0YzEyYTQzMDIyODYxNzVhZjQxNiciIHdpZHRoPSIxMjAiIGhlaWdodD0iMjQwIiBNYXJnaW53aWR0aD0iMCIgTWFyZ2luaGVpZ2h0PSIwIiBIc3BhY2U9IjAiIFZzcGFjZT0iMCIgRnJhbWVib3JkZXI9IjAiIFNjcm9sbGluZz0ibm8iIHN0eWxlPSJ3aWR0aDoxMjBweDtIZWlnaHQ6MjQwcHg7Ij48YSBocmVmPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1DbGljayY7TW9kZT1IVE1MJlNpdGVJRD0xIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUdldCZNb2RlPUhUTUwmU2l0ZUlEPTEiIHdpZHRoPSIxMjAiIGhlaWdodD0iMjQwIiBib3JkZXI9IjAiIGFsdD0iIiAvPjwvYT48L2lmcmFtZT5kZAIDDxYCHglpbm5lcmh0bWwFE0FkdmVydGlzaW5nIHdpdGggVXNkAiYPZBYEAgcPDxYCHwNnZGQCCw8PFgIfBQU8fi90cmFjay9zZWFyY2guYXNweD93aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4ZGQCJw8PFgIfA2dkFgJmDxYCHgtfIUl0ZW1Db3VudAIDFgYCAQ9kFgRmDxUDAFdodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD00MWNkNTZiNi0wMGYxLTQ3MDItYjg2Ni0xYTI2OGM2NDlkMTMVQWxsZSBIYW5ub3BvbHkgQ2FjaGVzZAICDxUCTGh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD1kZjIxODRhYi1hOWVhLTRkMzAtOThlZC1lYzRlODUxYzM3MDYKR3VtbWlzZWVsZWQCAg9kFgRmDxUDDkFsdGVybmF0aW5nUm93V2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTBkY2YzZjg2LTkzNzItNDk5Yy04YjU3LWVkNDE5YmQ0OGUyMRBNZWluZSBFbXBmZWhsdW5nZAICDxUCTGh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD1jNDY1NDFmYy02YWU5LTQ0NTItODgzMy00NzBkZGZiZTljZWUGc2tyZWxsZAIDD2QWBGYPFQMAV2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTlhMjQ4ZGI5LTMwNjMtNDQ1Ny05MjA1LTg1MWZiZTA2YTAzZQlIYW5ub3BvbHlkAgIPFQJMaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNv" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="bS9wcm9maWxlLz9ndWlkPTVjNGIwOTE1LTVjZWMtNGZhMS04YWZkLTRiM2NhNjdlMDA0ZQdrYWkyNzA3ZAIpD2QWFgIBDw8WAh8DaGRkAgMPZBYCAgEPDxYCHwUFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD0zNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOTgmRFM9MWRkAgcPDxYGHgZSRFMuSUQLKXZHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNzb24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDUyNi4yMjE2NiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAcxNDMzOTA5HwNoZGQCCQ8PFgIfA2dkFgICAQ8PFgQfBQUqL21hcC9kZWZhdWx0LmFzcHg/bGF0PTUyLjM3MzIxNyZsbmc9OS43MTA4HwNnZGQCEQ8PFgIfBQUeL3NlZWsvbmVhcmVzdC5hc3B4P3U9ZGFuaWVsMzU0ZGQCFQ8PFgIfBQUfL3NlZWsvbmVhcmVzdC5hc3B4P3VsPWRhbmllbDM1NGRkAhkPZBYKAgMPDxYCHwUFVS9zZWVrL25lYXJlc3QuYXNweD90eD0zMmJjOTMzMy01ZTUyLTQ5NTctYjBmNi01YTJjOGZjN2IyNTcmbGF0PTUyLjM3MzIxNyZsbmc9OS43MTA4MDBkZAIFDw8WAh8FBVkvc2Vlay9uZWFyZXN0LmFzcHg/dHg9MzJiYzkzMzMtNWU1Mi00OTU3LWIwZjYtNWEyYzhmYzdiMjU3JmxhdD01Mi4zNzMyMTcmbG5nPTkuNzEwODAwJmY9MWRkAgkPDxYCHwUFLS9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuMzczMjE3JmxuZz05LjcxMDgwMGRkAgsPDxYCHwUFMS9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuMzczMjE3JmxuZz05LjcxMDgwMCZmPTFkZAIPDw8WAh8FBUdodHRwOi8vd3d3LndheW1hcmtpbmcuY29tL2RpcmVjdG9yeS5hc3B4P2Y9MSZsYXQ9NTIuMzczMjE3Jmxvbj05LjcxMDgwMGRkAhsPFgIfA2hkAh8PDxYCHwUFJS9yZXZpZXdzL2hvdGVscy1jb29yZHMtNTIuMzczMiw5LjcxMDhkZAIjD2QWAgIBDw8WBB8BBbQHPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTIuMzczMjImbG5nPTkuNzEwOCIgdGFyZ2V0PSJfYmxhbmsiPkdlb2NhY2hpbmcuY29tIE1hcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/cT1OKzUyJWMyJWIwKzIyLjM5MytFKzAwOSVjMiViMCs0Mi42NDgrKEdDMVpYWDIpKyIgdGFyZ2V0PSJfYmxhbmsiPkdvb2dsZSBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWFwcXVlc3QuY29tL21hcHMvbWFwLmFkcD9zZWFyY2h0eXBlPWFkZHJlc3MmZm9ybXR5cGU9bGF0bG9uZyZsYXRsb25ndHlwZT1kZWNpbWFsJmxhdGl0dWRlPTUyLjM3MzIyJmxvbmdpdHVkZT05LjcxMDgmem9vbT0xMCIgdGFyZ2V0PSJfYmxhbmsiPk1hcFF1ZXN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLnlhaG9vLmNvbS8jbGF0PTUyLjM3MzIyJmxvbj05LjcxMDgmem9vbT0xNiZxPTUyLjM3MzIyLDkuNzEwOCZjb25mPTEmc3RhcnQ9MSZtdnQ9bSZ0cmY9MCIgdGFyZ2V0PSJfYmxhbmsiPllhaG9vIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5iaW5nLmNvbS9tYXBzL2RlZmF1bHQuYXNweD92PTImbHZsPTE0JnNwPXBvaW50LjUyLjM3MzIyXzkuNzEwOF9HQzFaWFgyIiB0YXJnZXQ9Il9ibGFuayI+QmluZyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmN5Y2xlbWFwLm9yZy8/em9vbT0xMiZsYXQ9NTIuMzczMjImbG9uPTkuNzEwOCIgdGFyZ2V0PSJfYmxhbmsiPk9wZW4gQ3ljbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnLz9tbGF0PTUyLjM3MzIyJm1sb249OS43MTA4Jnpvb209MTIiIHRhcmdldD0iX2JsYW5rIj5PcGVuIFN0cmVldCBNYXBzPC9hPjwvbGk+HwNnZGQCJw9kFgYCAQ8WAh8BBRE0MDEgTG9nZ2VkIFZpc2l0c2QCBw8PFgIfBQVDfi9zZWVrL2NhY2hlX2xvZ2Jvb2suYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OGRkAgkPDxYEHwUFPX4vc2Vlay9nYWxsZXJ5LmFzcHg/Z3VpZD0zNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOTgfAQUiVmlldyB0aGUgSW1hZ2UgR2FsbGVyeSBvZiAyIGltYWdlc2RkAioPFgIfAQUEdHJ1ZWQCKw8WAh8BBUlsYXQ9NTIuMzczMjE3OyBsbmc9OS43MTA4OyBndWlkPSczNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOTgnOw0KZAIsDxYCHwEFcXRyeSB7IF9nYXEucHVzaChbJ190cmFja0V2ZW50JywgJ0dlb2NhY2hpbmcnLCAnQ2FjaGVEZXRhaWxzTWVtYmVyVHlwZScsICdQcmVtaXVtJywgbnVsbCwgdHJ1ZV0pOyB9IGNhdGNoKGVycikgeyB9ZAIuDxYCHwNoZAIvD2QWBAIBDxYCHwEFB0VuZ2xpc2hkAgMPFgIfDQIPFh5mD2QWAgIBDw8WCB4PQ29tbWFuZEFyZ3VtZW50BQVlbi1VUx4LQ29tbWFuZE5hbWUFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB4QQ2F1c2VzVmFsaWRhdGlvbmhkZAIBD2QWAgIBDw8WCB8QBQVkZS1ERR8RBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfEmhkZAICD2QWAgIBDw8WCB8QBQVmci1GUh8RBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8SaGRkAgMPZBYCAgEPDxYIHxAFBXB0LVBUHxEFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8SaGRkAgQPZBYCAgEPDxYIHxAFBWNzLUNaHxEFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHxJoZGQCBQ9kFgICAQ8PFggfEAUFc3YtU0UfEQUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHxJoZGQCBg9kFgICAQ8PFggfEAUFbmwtTkwfEQUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHxJoZGQCBw9kFgICAQ8PFggfEAUFY2EtRVMfEQUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHxJoZGQCCA9kFgICAQ8PFggfEAUFcGwtUEwfEQUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfEmhkZAIJD2QWAgIBDw8WCB8QBQVldC1FRR8RBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHxJoZGQCCg9kFgICAQ8PFggfEAUFbmItTk8fEQUNU2V0VGVtcExvY2FsZR8BBQ5Ob3JzaywgQm9rbcOlbB8SaGRkAgsPZBYCAgEPDxYIHxAFBWtvLUtSHxEFDVNldFRlbXBMb2NhbGUfAQUJ7ZWc6rWt7Ja0HxJoZGQCDA9kFgICAQ8PFggfEAUFZXMtRVMfEQUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8SaGRkAg0PZBYCAgEPDxYIHxAFBWh1LUhVHxEFDVNldFRlbXBMb2NhbGUfAQUGTWFneWFyHxJoZGQCDg9kFgICAQ8PFggfEAUFcm8tUk8fEQUNU2V0VGVtcExvY2FsZR8BBQhSb23Dom7Egx8SaGRkAgMPFgIfAQUrU2VydmVyOiBXRUIxNTsgQnVpbGQ6IFdlYi5Ib3RGaXhfMjAxMjA1MjMuMmRkUPMWVc1MxuMXLXxo0ELBGc5rjcw=" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTI5ODA0Nzc1OQ8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE0MzM5MDkWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYQAgUPFgIfAWRkAggPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvNTBmODMxMjMtMjdkOC00ZGNmLTlmZGUtMmFmMDA2ZWZhZjJiLmpwZ2RkAgMPFgIfAQVoSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIGJsYWZvbyIgY2xhc3M9IlNpZ25lZEluUHJvZmlsZUxpbmsiPmJsYWZvbzwvYT5kAgUPDxYCHgtOYXZpZ2F0ZVVybAWtAWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmbG9nJTNkeSUyNndwJTNkR0MxWlhYMiUyNm51bWxvZ3MlM2QzNSUyNmRlY3J5cHQlM2R5ZGQCCw8WAh8BBasBPGltZyBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9zbWlsZS5wbmciIHRpdGxlPSJDYWNoZXMgRm91bmQiIC8+IDYyNiZuYnNwOyZuYnNwOyZuYnNwOzxpbWcgc3JjPSIvaW1hZ2VzL2NoYWxsZW5nZXMvdHlwZXMvc20vY2hhbGxlbmdlLnBuZyIgdGl0bGU9IkNoYWxsZW5nZXMgQ29tcGxldGVkIiAvPiAzZAINDxYCHwNnFgICDQ8PFgIfBQVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTA1NjRhOTQwLTgzMTEtNDBlZS04ZTc2LTdlOTFiMmNmNjI4NGRkAhAPDxYCHwNnZGQCLA9kFgICAw8WAh8DaGQCLQ8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYuAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0MxWlhYMmRkAgIPFgIfAQWmATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy8yLmdpZiIgYWx0PSJUcmFkaXRpb25hbCBDYWNoZSIgdGl0bGU9IlRyYWRpdGlvbmFsIENhY2hlIiAvPjwvYT5kAgYPZBYEAgEPFgIfA2dkAgYPFgIfA2hkAgsPZBYEAgEPFgIfAQUCNDJkAgUPDxYCHwUFRC9zZWVrL2NhY2hlX2Zhdm9yaXRlZC5hc3B4P2d1aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4ZGQCDQ8PFgIfA2hkZAIPDxYEHwEFvgE8cCBjbGFzcz0iT2xkV2FybmluZyBOb0JvdHRvbVNwYWNpbmciPjxzdHJvbmc+Q2FjaGUgSXNzdWVzOjwvc3Ryb25nPjwvcD48dWwgY2xhc3M9Ik9sZFdhcm5pbmciPjxsaT5UaGlzIGNhY2hlIGhhcyBiZWVuIGFyY2hpdmVkLCBidXQgaXMgYXZhaWxhYmxlIGZvciB2aWV3aW5nIGZvciBhcmNoaXZhbCBwdXJwb3Nlcy48L2xpPjwvdWw+HwNnZAIQDxYCHwNoZAIRDxYCHwNoZAISD2QWDAIDDxYCHgVzdHlsZQUPZGlzcGxheTppbmxpbmU7FgICAQ8WAh8BBRtVVE06IDMyVSBFIDU0ODM4OSBOIDU4MDI3ODdkAg0PDxYCHwUFM2NkcGYuYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OGRkAg8PDxYCHwUFOGNkcGYuYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OCZsYz01ZGQCEQ8PFgIfBQU5Y2RwZi5hc3B4P2d1aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4JmxjPTEwZGQCEw8PFgQfBQWCAWh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9NTIuNDE2Miw5LjU5NDExNyAoSG9tZSBMb2NhdGlvbikmZGFkZHI9NTIuMzczMjE3LDkuNzEwOChIYW5ub3BvbHklM2ErRWlzbGlzZW5zdHJhc3NlKykeBlRhcmdldAUGX2JsYW5rZGQCGw9kFggCAQ8PFgQeCUZvcmVDb2xvcgweBF8hU0ICBGRkAgMPDxYEHwkMHwoCBGRkAgUPDxYCHwNnFgIeB29uY2xpY2sFO3MyZ3BzKCczNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOTgnKTtyZXR1cm4gZmFsc2U7ZAIHDw8WAh8DZxYCHwsFIHMycGhvbmUoJ0dDMVpYWDInKTtyZXR1cm4gZmFsc2U7ZAIUDxYCHwNnFgICAw8WAh8BBQ9UZXN0IGbDvHIgYzpnZW9kAhcPZBYIZg8WAh8DaGQCAQ8PFgIfA2hkZAICDw8WAh8DaGRkAgMPFgIfA2hkAhgPZBYCAgMPDxYCHwEFE05vIGhpbnRzIGF2YWlsYWJsZS4WAh8LBQ1yZXR1cm4gZmFsc2U7ZAIZDxYCHwNoZAIcDxYCHwNoZAIeDxYCHwNnZAIfDxYCHwNoZAIiD2QWAgIBD2QWBAIBDw8WAh8BBf8DPGlmcmFtZSB0eXBlPSJpZnJhbWUiIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0JlNpdGVJRD0xJlg9J2UwZmY5YjUyOTUyODRjMGRiMGQxNGFkZWNiMzJkZDNiJyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIE1hcmdpbndpZHRoPSIwIiBNYXJnaW5oZWlnaHQ9IjAiIEhzcGFjZT0iMCIgVnNwYWNlPSIwIiBGcmFtZWJvcmRlcj0iMCIgU2Nyb2xsaW5nPSJubyIgc3R5bGU9IndpZHRoOjEyMHB4O0hlaWdodDoyNDBweDsiPjxhIGhyZWY9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUNsaWNrJjtNb2RlPUhUTUwmU2l0ZUlEPTEiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0Jk1vZGU9SFRNTCZTaXRlSUQ9MSIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIGJvcmRlcj0iMCIgYWx0PSIiIC8+PC9hPjwvaWZyYW1lPmRkAgMPFgIeCWlubmVyaHRtbAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJg9kFgQCBw8PFgIfA2dkZAILDw8WAh8FBTx+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD0zNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOThkZAInDw8WAh8DZ2QWAmYPFgIeC18hSXRlbUNvdW50AgMWBgIBD2QWBGYPFQMAV2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTQxY2Q1NmI2LTAwZjEtNDcwMi1iODY2LTFhMjY4YzY0OWQxMxVBbGxlIEhhbm5vcG9seSBDYWNoZXNkAgIPFQJMaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPWRmMjE4NGFiLWE5ZWEtNGQzMC05OGVkLWVjNGU4NTFjMzcwNgpHdW1taXNlZWxlZAICD2QWBGYPFQMOQWx0ZXJuYXRpbmdSb3dXaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9MGRjZjNmODYtOTM3Mi00OTljLThiNTctZWQ0MTliZDQ4ZTIxEE1laW5lIEVtcGZlaGx1bmdkAgIPFQJMaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPWM0NjU0MWZjLTZhZTktNDQ1Mi04ODMzLTQ3MGRkZmJlOWNlZQZza3JlbGxkAgMPZBYEZg8VAwBXaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9OWEyNDhkYjktMzA2My00NDU3LTkyMDUtODUxZmJlMDZhMDNlCUhhbm5vcG9seWQCAg8VAkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9NWM0YjA5MTUtNWNlYy00ZmExLThhZmQt" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="NGIzY2E2N2UwMDRlB2thaTI3MDdkAikPZBYWAgEPDxYCHwNoZGQCAw9kFgICAQ8PFgIfBQVFL2hpZGUvd3B0bGlzdC5hc3B4P1JlZldwdElEPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OCZEUz0xZGQCBw8PFgYeBlJEUy5JRAspdkdyb3VuZHNwZWFrLldlYi5HUFguV3B0RGF0YVNvdXJjZXMsIFR1Y3Nvbi5Db21tb24uTGVnYWN5LCBWZXJzaW9uPTMuMC40NTYxLjI2NDE2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwBHgdSV1BULklEKCsEBzE0MzM5MDkfA2hkZAIJDw8WAh8DZ2QWAgIBDw8WBB8FBSovbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTIuMzczMjE3JmxuZz05LjcxMDgfA2dkZAIRDw8WAh8FBR4vc2Vlay9uZWFyZXN0LmFzcHg/dT1kYW5pZWwzNTRkZAIVDw8WAh8FBR8vc2Vlay9uZWFyZXN0LmFzcHg/dWw9ZGFuaWVsMzU0ZGQCGQ9kFgoCAw8PFgIfBQVVL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTMyYmM5MzMzLTVlNTItNDk1Ny1iMGY2LTVhMmM4ZmM3YjI1NyZsYXQ9NTIuMzczMjE3JmxuZz05LjcxMDgwMGRkAgUPDxYCHwUFWS9zZWVrL25lYXJlc3QuYXNweD90eD0zMmJjOTMzMy01ZTUyLTQ5NTctYjBmNi01YTJjOGZjN2IyNTcmbGF0PTUyLjM3MzIxNyZsbmc9OS43MTA4MDAmZj0xZGQCCQ8PFgIfBQUtL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi4zNzMyMTcmbG5nPTkuNzEwODAwZGQCCw8PFgIfBQUxL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi4zNzMyMTcmbG5nPTkuNzEwODAwJmY9MWRkAg8PDxYCHwUFR2h0dHA6Ly93d3cud2F5bWFya2luZy5jb20vZGlyZWN0b3J5LmFzcHg/Zj0xJmxhdD01Mi4zNzMyMTcmbG9uPTkuNzEwODAwZGQCGw8WAh8DaGQCHw8PFgIfBQUlL3Jldmlld3MvaG90ZWxzLWNvb3Jkcy01Mi4zNzMyLDkuNzEwOGRkAiMPZBYCAgEPDxYEHwEFtAc8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9tYXAvZGVmYXVsdC5hc3B4P2xhdD01Mi4zNzMyMiZsbmc9OS43MTA4IiB0YXJnZXQ9Il9ibGFuayI+R2VvY2FjaGluZy5jb20gTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPU4rNTIlYzIlYjArMjIuMzkzK0UrMDA5JWMyJWIwKzQyLjY0OCsoR0MxWlhYMikrIiB0YXJnZXQ9Il9ibGFuayI+R29vZ2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vbWFwcy9tYXAuYWRwP3NlYXJjaHR5cGU9YWRkcmVzcyZmb3JtdHlwZT1sYXRsb25nJmxhdGxvbmd0eXBlPWRlY2ltYWwmbGF0aXR1ZGU9NTIuMzczMjImbG9uZ2l0dWRlPTkuNzEwOCZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NTIuMzczMjImbG9uPTkuNzEwOCZ6b29tPTE2JnE9NTIuMzczMjIsOS43MTA4JmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuNTIuMzczMjJfOS43MTA4X0dDMVpYWDIiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD01Mi4zNzMyMiZsb249OS43MTA4IiB0YXJnZXQ9Il9ibGFuayI+T3BlbiBDeWNsZSBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvP21sYXQ9NTIuMzczMjImbWxvbj05LjcxMDgmem9vbT0xMiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW4gU3RyZWV0IE1hcHM8L2E+PC9saT4fA2dkZAInD2QWBgIBDxYCHwEFETQwMSBMb2dnZWQgVmlzaXRzZAIHDw8WAh8FBUN+L3NlZWsvY2FjaGVfbG9nYm9vay5hc3B4P2d1aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4ZGQCCQ8PFgQfBQU9fi9zZWVrL2dhbGxlcnkuYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OB8BBSJWaWV3IHRoZSBJbWFnZSBHYWxsZXJ5IG9mIDIgaW1hZ2VzZGQCKg8WAh8BBQR0cnVlZAIrDxYCHwEFSWxhdD01Mi4zNzMyMTc7IGxuZz05LjcxMDg7IGd1aWQ9JzM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OCc7DQpkAiwPFgIfAQVxdHJ5IHsgX2dhcS5wdXNoKFsnX3RyYWNrRXZlbnQnLCAnR2VvY2FjaGluZycsICdDYWNoZURldGFpbHNNZW1iZXJUeXBlJywgJ1ByZW1pdW0nLCBudWxsLCB0cnVlXSk7IH0gY2F0Y2goZXJyKSB7IH1kAi4PFgIfA2hkAi8PZBYEAgMPFgIfAQUHRW5nbGlzaGQCBQ8WAh8NAg8WHmYPZBYCAgEPDxYIHg9Db21tYW5kQXJndW1lbnQFBWVuLVVTHgtDb21tYW5kTmFtZQUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHhBDYXVzZXNWYWxpZGF0aW9uaGRkAgEPZBYCAgEPDxYIHxAFBWRlLURFHxEFDVNldFRlbXBMb2NhbGUfAQUHRGV1dHNjaB8SaGRkAgIPZBYCAgEPDxYIHxAFBWZyLUZSHxEFDVNldFRlbXBMb2NhbGUfAQUJRnJhbsOnYWlzHxJoZGQCAw9kFgICAQ8PFggfEAUFcHQtUFQfEQUNU2V0VGVtcExvY2FsZR8BBQpQb3J0dWd1w6pzHxJoZGQCBA9kFgICAQ8PFggfEAUFY3MtQ1ofEQUNU2V0VGVtcExvY2FsZR8BBQnEjGXFoXRpbmEfEmhkZAIFD2QWAgIBDw8WCB8QBQVzdi1TRR8RBQ1TZXRUZW1wTG9jYWxlHwEFB1N2ZW5za2EfEmhkZAIGD2QWAgIBDw8WCB8QBQVubC1OTB8RBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfEmhkZAIHD2QWAgIBDw8WCB8QBQVjYS1FUx8RBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfEmhkZAIID2QWAgIBDw8WCB8QBQVwbC1QTB8RBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8SaGRkAgkPZBYCAgEPDxYIHxAFBWV0LUVFHxEFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfEmhkZAIKD2QWAgIBDw8WCB8QBQVuYi1OTx8RBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHxJoZGQCCw9kFgICAQ8PFggfEAUFa28tS1IfEQUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfEmhkZAIMD2QWAgIBDw8WCB8QBQVlcy1FUx8RBQ1TZXRUZW1wTG9jYWxlHwEFCEVzcGHDsW9sHxJoZGQCDQ9kFgICAQ8PFggfEAUFaHUtSFUfEQUNU2V0VGVtcExvY2FsZR8BBQZNYWd5YXIfEmhkZAIOD2QWAgIBDw8WCB8QBQVyby1STx8RBQ1TZXRUZW1wTG9jYWxlHwEFCFJvbcOibsSDHxJoZGQCAw8WAh8BBStTZXJ2ZXI6IFdFQjIwOyBCdWlsZDogV2ViLkhvdEZpeF8yMDEyMDYyNy40ZGRrWcDlkEAGogmRKh3kjjnf9ScdwQ==" />
</div>
<script type="text/javascript">
@@ -270,8 +270,8 @@ function __doPostBack(eventTarget, eventArgument) {
<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=5b3ltJXa0TSwEsvct1wCaBdn9Bo8N7FVqBNQM2YKqXbQHZWaMP-zx0K4z61uMiKeGNyKUpZuaFTNyOsj4Crx8g0LjQOUse6i-Eqw_GJBx8YviKwr2CJgL-aqZEI9VB_ltGTTIXy1yvHcnrnzhX2JlzaDqphWnKQvx4x3txaHfBNpRY5-4XH8vm4ONKceJIHIkX17AGlkUY7g_kHGaI-HyINE7lM1" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=WVHVdtd8gYJbLaxUtYeLUMrjCX5WOnJSGG26Gaj926DbjI4M9dAJHHwgJvtDecWibtIrrCOlzx5XFuwAs4BS93kYHTXkHDTnFSnIrC-WT6_zZ9eYJQp1WOdlrWXkXO3OMRuZgqsIFxsRcAMWhIqTcySwmxW4vOKHYRgHiJL-uf5jQFtm6x1ve6DY0mMD_ESerncSaCA1Cgsolch15ihMoZqpeqMbLrohVYz9U2hp6BsgAmTNK8OpwIv8KNbNZlhev6c03M5Fq7DYbtjNfcsFkibXxv5XkgR6tWfTJ0nbUMTZRfl2rS6acFF_SE_6Xq3gNDu-hn2gVSQQR60sIXvVO__s85ChXRXLZbUsbC_Dh_E0d_kJp1MkLd_v1YGKnSz_JyIuwDe9FNHlGLCElVL9TJU2IviQPhQVG_RvU0baAFL6jcHyEBNeIOCGTth06fgRUbpTyRW_Q5F9L1AY8waKiE6KbBQwR4M7__2CKI5x5oWQGzDPCGo_Q_FaDCORWqMNns5w1x4DtsX5kYEMpB6kXD-MOtq9iDhz8_7f8XUJPY7ZnCLAr2j8KPHVhvk0sPPniI9ISg3MMf9Dut2vXQv66CC4PRYZUILFl2bI-4md6Dvp6eNMnjPVzME44o1_KuuQmZhkDFiud1uACzvuDSX2TKQOuNOLShfUtc0Br1iW_HFokkRVYXUd1zroDosI81VOASmffpscQK7vVV8dk2R3I8kvWGMcnArgh_no7Z-3xP5azRP70" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=ANTY2fFVTdCBnBHOLd74WH8qIxEoKa5loZvqSDX0qfrPYlwzG7fdazPW4XgTSdBTL0taNZNA9lJ9_LL5Y6OMxdE8wy27wNkkj9c3THw5h5yf7K2H4JI2erFcY7bYJVFEitX2P8QZVXiMM1Hu_ocOF2m19w0-qnnVbCAi4gGR76WPplCK8_LARor44gr4y0tEqfZHmaNZwvPD-GY9gWmxGcN80_g1" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=gHhV_3Nllphm9Ge7JZuvsp-6qi7uWZDHeaBOjW5jTogLAz8WEel4pM_LAbuRdVqXKAp4WqNCm49Ibv_BS54Q-zQ3SE8sm5fkWXrDLC0gOR1KOW1zzeMJPCzaIwASRPgfLsGmz-j61eN7MaGhCd_2us_YiAYGtgKKWaJScV_0Jaw-Nu-gIM_inEDfUuK73C79UMvVBjzzRe4Cxv7Fivb6uQY9WKpaYye-o1a53IrhWGJsMpnn3cnrd0sk-fl0J64H_qfFu4FItsFrchizowvtBWdwDWQIKSWkCWnZ_sxNtlv-0O_q2tAS_CfoZyXRR0SttrQtS1OsgABAuWIcHhJzJNkAdBQZc1nw4JQZtlrYeQODk1U8iY9R4mU6BsO-s-3bH5kYH7hQ3xj27xGCk6ivveHkGZy8IpeMcoYVDQLDGJ8QtzCcDWNr12uwOw-2hvggpMI-WDp1p1OA9Lyltqd6DuPChrw-6sLw85fzlcymkCCNv7F0mMhS9V89c38eNlcnvQVm17pMyzI-zoIos0jPOSuWRgvh1C8kciSthsKUMPGMceRp2qyvhmAqWvskmQu9mU9BoI_lnC1pOLqjYwAhwsZDyMCUb5GSGWrK-7TfknHUYE3Dxb5Xl-mhBk3ziUeH3cs_75_doDYG0Hsj4D1cyjtlGrj-OoxR-3VdJ3mggY5kjV5RSdXOyx9Ub3RxX9bF9dEdqRgocbfieX_o9ow9FporIdB2TRPJt5mmhgX_4K0pWLKa0" type="text/javascript"></script>
<script src="js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
<script type="text/javascript">
@@ -310,7 +310,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div class="container">
<h1 class="Logo span-16">
- <a href="../default.aspx" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
+ <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
<div class="ProfileWidget span-8 last">
@@ -318,14 +318,14 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div id="ctl00_divSignedIn">
<p class="Avatar NoBottomSpacing">
- <a id="ctl00_hlHeaderAvatar" accesskey="p" title="Your Profile" href="../my/default.aspx"><img title="Your Profile" src="http://img.geocaching.com/user/avatar/50f83123-27d8-4dcf-9fde-2af006efaf2b.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/50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg" alt="" style="border-width:0px;" /></a></p>
<p class="SignedInText">
<strong>
Hello, <a href="/my/default.aspx" title="View Profile for blafoo" class="SignedInProfileLink">blafoo</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%3flog%3dy%26wp%3dGC1ZXX2%26numlogs%3d35%26decrypt%3dy">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" /> 590&nbsp;&nbsp;&nbsp;<img src="/images/challenges/types/sm/challenge.png" title="Challenges Completed" /> 3</strong>
+ <img src="/images/icons/icon_smile.png" title="Caches Found" /> 626&nbsp;&nbsp;&nbsp;<img src="/images/challenges/types/sm/challenge.png" title="Challenges Completed" /> 3</strong>
</p>
@@ -338,20 +338,20 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<ul class="Menu">
<li>
- <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/default.aspx">Learn &#9660;</a>
+ <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/default.aspx">Geocaching 101</a></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=cat:newbies&amp;vid=-4VFeYZTTYs">Geocaching in 2 Minutes</a></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>
</li>
<li id="ctl00_liNavProfile">
- <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" title="[Your Profile ▼]" href="../my/default.aspx">Your Profile &#9660;</a>
+ <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" title="[Your Profile ▼]" href="../my/">Your Profile &#9660;</a>
<ul class="SubMenu">
<li>
- <a id="ctl00_hlSubNavQuickView" accesskey="p" title="Quick View" href="../my/default.aspx">Quick View</a></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">
@@ -361,45 +361,45 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<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=0564a940-8311-40ee-8e76-7e91b2cf6284">Yours</a>)</li>
<li>
- <a id="ctl00_hlSubNavPocketQueries" accesskey="9" title="Pocket Queries" href="../pocket/default.aspx">Pocket Queries</a></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/default.aspx">Account Details</a></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="default.aspx">Play &#9660;</a>
+ <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="default.aspx">Hide & Seek a Cache</a></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_hlSubNavChallenges" title="Find Challenges" href="../challenges/default.aspx">Find Challenges</a></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/default.aspx">Find Trackables</a></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>
</li>
<li>
- <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/default.aspx">Community &#9660;</a>
+ <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_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/default.aspx">Local Organizations</a></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/default.aspx">Discussion Forums</a></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/default.aspx">Events</a></li>
+ <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
</ul>
</li>
<li>
@@ -416,24 +416,24 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</ul>
</li>
<li>
- <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/default.aspx">Partnering &#9660;</a>
+ <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
<ul class="SubMenu">
<li>
- <a id="ctl00_hlSubNavTravel" title="Travel and Tourism" href="../travel/default.aspx">Travel and Tourism</a></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/default.aspx">Branded Promotions</a></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/default.aspx">Geocaching and Education</a></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/default.aspx">API Program</a></li>
+ <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/">API Program</a></li>
</ul>
</li>
<li>
- <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/default.aspx">Videos</a></li>
+ <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
<li>
- <a id="ctl00_hlNavFollowUs" title="Follow Us" href="../travel/default.aspx">Follow Us &#9660;</a>
+ <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>
@@ -520,19 +520,16 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div class="span-17 last BottomSpacing" id="cacheDetails">
<p class="cacheImage">
- <a href="/about/cache_types.aspx" target="_blank" title="About Cache Types"><img src="/images/WptTypes/2.gif" alt="Traditional Cache" title="Traditional Cache" width="32" height="32" /></a>
+ <a href="/about/cache_types.aspx" target="_blank" title="About Cache Types"><img src="/images/WptTypes/2.gif" alt="Traditional Cache" title="Traditional Cache" /></a>
</p>
<h2 class="NoBottomSpacing">
<span id="ctl00_ContentBody_CacheName">Hannopoly: Eislisenstrasse </span></h2>
<div class="minorCacheDetails Clear">
<div id="ctl00_ContentBody_mcd1">
- A
- cache
- by <a href="http://www.geocaching.com/profile/?guid=8186d342-6f46-4d9e-8ba3-2e7b51426798&wid=36d45871-b99d-46d6-95fc-ff86ab564c98&ds=2">Rich Uncle Pennybags </a></div>
+ A cache by <a href="http://www.geocaching.com/profile/?guid=8186d342-6f46-4d9e-8ba3-2e7b51426798&wid=36d45871-b99d-46d6-95fc-ff86ab564c98&ds=2">Rich Uncle Pennybags </a></div>
<div id="ctl00_ContentBody_mcd2">
- Hidden
- :
+ Hidden:
16/10/2009
</div>
@@ -557,7 +554,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<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>
+ 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>
@@ -840,7 +837,7 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge
<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='37b867fd276a4c12a4302286175af416'" 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>
+ <span id="ctl00_ContentBody_ADModules_09"><iframe type="iframe" src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&SiteID=1&X='e0ff9b5295284c0db0d14adecb32dd3b'" 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>
@@ -1058,7 +1055,7 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge
</div>
<p>
<small>
- Current Time: <time datetime="2012-05-24T12:06:11Z">05/24/2012 12:06:11 Pacific Daylight Time (19:06 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2011-11-05T12:28:43Z">2011-11-05T12:28:43Z</time> on 11/05/2011 05:28:43 Pacific Daylight Time (12:28 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2012-06-29T11:00:52Z">06/29/2012 11:00:52 Pacific Daylight Time (18:00 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2011-11-05T12:28:43Z">2011-11-05T12:28:43Z</time> on 11/05/2011 05:28:43 Pacific Daylight Time (12:28 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
@@ -1364,7 +1361,7 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge
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. Your local volunteer reviewer will try to begin the review process within 3 days.</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) {
@@ -1898,7 +1895,7 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge
<li>
<a id="ctl00_hlFooterGlossary" title="Glossary of Terms" href="../about/glossary.aspx">Glossary of Terms</a></li>
<li>
- <a id="ctl00_hlFooterBrochures" title="Brochures" href="../tools/default.aspx#Guide">Brochures</a></li>
+ <a id="ctl00_hlFooterBrochures" title="Brochures" href="../tools/#Guide">Brochures</a></li>
<li>
<a id="ctl00_hlFooterAbout" title="About Groundspeak" href="../about/groundspeak.aspx">About Groundspeak</a></li>
<li>
@@ -1914,7 +1911,7 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge
Press</strong></p>
<ul class="FooterLinks">
<li>
- <a id="ctl00_hlFooterNews" title="News Articles" href="../press/default.aspx">News Articles</a></li>
+ <a id="ctl00_hlFooterNews" title="News Articles" href="../press/">News Articles</a></li>
<li>
<a id="ctl00_hlFooterMediaFAQs" title="Media FAQs" rel="document" href="../articles/Brochures/footer/FAQ_Media.pdf">Media FAQs</a></li>
<li>
@@ -1932,11 +1929,11 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge
<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="../forums/default.aspx">Discussion Forums</a></li>
+ <a id="ctl00_hlFooterDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
<li>
- <a id="ctl00_hlFooterParksPoliceLink" title="Land Management and Law Enforcement" href="../parksandpolice/default.aspx">Land Management and Law&nbsp;Enforcement</a></li>
+ <a id="ctl00_hlFooterParksPoliceLink" title="Land Management and Law Enforcement" href="../parksandpolice/">Land Management and Law&nbsp;Enforcement</a></li>
<li>
- <a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/default.aspx">Contact Us</a></li>
+ <a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/">Contact Us</a></li>
</ul>
</div>
@@ -1948,11 +1945,11 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge
Resources</strong></p>
<ul class="FooterLinks">
<li>
- <a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/default.aspx">Tools and Downloads</a></li>
+ <a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/">Tools and Downloads</a></li>
<li>
- <a id="ctl00_hlFooterAPIProgram" title="API Program" href="../live/default.aspx">API Program</a></li>
+ <a id="ctl00_hlFooterAPIProgram" title="API Program" href="../live/">API Program</a></li>
<li>
- <a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/default.aspx">Find a Benchmark</a></li>
+ <a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/">Find a Benchmark</a></li>
</ul>
</div>
@@ -2000,14 +1997,14 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge
<script type="text/javascript">
//<![CDATA[
-var uvtoken = 'DbFDfIrSTaXyfNf74lbdopy%2bTw%2fC84Gn87pU%2b3r69toc4lYTKyii0cXY42BXT7amAeAEUCcV1MyzYH%2f69bWOOOvoGvXXrwwA0Zy8CpSWWK7eR9NmK5BIW9cFGyATBNp%2bWwRGLOrgERlLAwN5wx%2fYCmGh0nRp5J6%2bYgklLZgc8Kxiirz8fWzPwtaRveDVSa7YAtavxJbUvDkiFlYO%2blLbXkiNyJVYxVgZlWW5TrhwAG063xOd8zyMtSGGik6owHCbAdEGViuPPGRIEj%2fnGJxsggqfzhvt7QwjNkY2tRoqdTkyBwyMiUBcp4cMXL6YAj%2fgH2%2fahrfj8OkqNMVJfpZGB0Q4n%2fmfs%2bPJOkN63Os%2bacJ7pLq%2bRdVUMwA%2bCrXohFoigYtOUaYjJHG5sa6%2fTHNirodM%2bHu7fWBrSNuofDmyPW8%3d';var isLoggedIn = true;
+var uvtoken = 'DbFDfIrSTaXyfNf74lbdopy%2bTw%2fC84Gn87pU%2b3r69toc4lYTKyii0cXY42BXT7amAeAEUCcV1MyzYH%2f69bWOOJe2G0gUUv2U8XdwkYujXYt83pfuGL4xaqHmHNre3d8%2foyu8Y9HxIMRnASPdrNhoj38KeHjPwkBcTS6D%2buW5guWMEBpdPLz1jhseeX7piFbeDhHAYN6haSaPG%2frbtFfGZt%2baHHMwBRDgdqQMJIqb%2bPayLV%2fMeqWbczakido4rtIU4j7bQlgtYj2LFyRYCdSXbRjhb2WOJLz4VOdiUFDx7gdHlrRdfz0uqSmakQHwkppFC8hKYZBwqCm6804aUQd7vCbuzMhD2idaLH7sDhH3LAqDu%2bjZOf9IAlsafIOSRw69Z6TRN%2bNYjuG4FeE8lKapXurIE2CUbPdsfjlslexagsA%3d';var isLoggedIn = true;
var userDefinedCoords = {"status":"fail","data":{"isUserDefined":false,"oldLatLngDisplay":"N 52° 22.393' E 009° 42.648'"}};
mapLatLng = {"lat":52.37322,"lng":9.7108,"type":2,"name":"Hannopoly: Eislisenstrasse "};
var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"52.373217, 009.710800"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 52° 22' 23.581\" E 009° 42' 38.880\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"32U E 548389 N 5802787"}];
userInfo = {ID: 1912314};
-userToken = 'FOUTFKOKLELXOJAYT35WSZBNGADBNKFSYIMKJ2YI6247JORDCSRPR3LYUNKEOR2PQUOHC7OGY223V2X2ADNEDT25JD2QHOXIHYLH7J5XLOWJSK5WTLLQ5UJQMIZEGXYFSHPFRQQ5A374RP7GSKIVLW2RCI53UZFIABL6BZOBU6IDYHWJSCVNM2YEQ7AOUWCQHTAVICNX7GH7WHNMLVTP3CX7FWUWW5NZ34AKY75KZUILHQJ76LYA';
+userToken = 'FOUTFKOKLELXOJAYT35WSZBNGADBNKFSYIMKJ2YI6247JORDCSRPR3LYUNKEOR2PQUOHC7OGY223V2X2ADNEDT25JD2QHOXIHYLH7J5XLOWJSK5WTLLQ5UJQMIZEGXYFSHPFRQQ5A374RP7GSKIVLW2RCI53UZFIABL6BZOBU6IDYHWJSCVNM2YEQ7AOUWCQHTAVICNX7GH7XMB7CH7BE27ZKSJ4LXEEKOPAYEA2TORLHPHKWT5Q';
includeAvatars = true;
-initalLogs = {"status":"success", "data": [{"LogID":196904781,"CacheID":1433909,"LogGuid":"26f89faf-aa71-406e-9ea3-cdfa18a846e6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"icon_note.gif","LogText":"s. mein Log bei Seestr.","Created":"05/11/2011","Visited":"05/11/2011","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5047,"GeocacheHideCount":40,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":196899232,"CacheID":1433909,"LogGuid":"f755b34d-0cc1-4740-827a-07311fe1a3b1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"icon_note.gif","LogText":"Äh, Logbuch ist nicht mehr vor Ort - wie kann man da \"Found\" loggen ? Ansonsten würde ich auch \"Found\" loggen da ich Dienstag vor Ort war und genau weiß vor sich der Cache befand....","Created":"05/11/2011","Visited":"05/11/2011","UserName":"blafoo","MembershipLevel":3,"AccountID":1912314,"AccountGuid":"0564a940-8311-40ee-8e76-7e91b2cf6284","Email":"","AvatarImage":"50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg","GeocacheFindCount":590,"GeocacheHideCount":7,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":189731769,"CacheID":1433909,"LogGuid":"e674d2ed-7cac-4b49-96b1-3020e5c7f479","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Archive","LogTypeImage":"traffic_cone.gif","LogText":"Auch hier fehlt mir leider eine passende neue Idee. Wie alle archivierten Hannopolys wird auch diese Besitzrechtskarte ab sofort auf www.hannopoly.de zu finden sein. Danke für die sehr schönen Logs!","Created":"01/10/2011","Visited":"01/10/2011","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5047,"GeocacheHideCount":40,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":189390319,"CacheID":1433909,"LogGuid":"4510051e-2c87-4d09-b77d-d90f645bafe9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"wahrscheinlich nicht mehr so schön wie geplant, dennoch alles da, was der logger so braucht ... sogar´n herry ;-)<br /><br />dfdc","Created":"29/09/2011","Visited":"29/09/2011","UserName":"Sir5al","MembershipLevel":3,"AccountID":3229535,"AccountGuid":"66de7735-1888-479b-8dbd-ada710747374","Email":"","AvatarImage":"9da1d6ed-3a3f-47cb-aba3-f5550abe7d11.jpg","GeocacheFindCount":701,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":186118551,"CacheID":1433909,"LogGuid":"acce0114-1712-4f32-b120-4b8bd4ef7200","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Leider habe ich erst gesehen das der Cache auf Eis liegt nach dem ich ihn gefunden habe.<br /><br />Ich konnte ihn denn noch gut finden und mich im großem Logbuch eintragen!<br /><br /><br />DFDC","Created":"11/09/2011","Visited":"27/08/2011","UserName":"Smootje1","MembershipLevel":3,"AccountID":4186572,"AccountGuid":"41b96bb9-ed81-473a-9032-1096d5c94423","Email":"","AvatarImage":"6052e05a-f2ce-45f1-86c4-c56fe8da6d2b.jpg","GeocacheFindCount":2244,"GeocacheHideCount":30,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":171398380,"CacheID":1433909,"LogGuid":"845e6ead-bf44-4dd8-900e-81a78afc0887","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"icon_note.gif","LogText":"Daniel, du sprichst uns aus der Seele.. gestern Nacht dagewesen, um ihn ENDLICH zu heben, aber ohne Erfolg.. SCHNIEF","Created":"08/07/2011","Visited":"08/07/2011","UserName":"Steinbreit","MembershipLevel":3,"AccountID":4430835,"AccountGuid":"86281f53-49a2-4051-bc15-394d43724d65","Email":"","AvatarImage":"90f468a9-7059-43a7-a3c5-256879458a63.jpg","GeocacheFindCount":369,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":171063566,"CacheID":1433909,"LogGuid":"fc463b7b-ce41-4d16-a7a4-2107b8454a91","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Temporarily Disable Listing","LogTypeImage":"icon_disabled.gif","LogText":"Mist...","Created":"06/07/2011","Visited":"06/07/2011","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5047,"GeocacheHideCount":40,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":170116614,"CacheID":1433909,"LogGuid":"09c89c9c-ec9f-4387-a6ae-05fe6d11d9bf","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ging schneller als gedacht. :-)<br /><br />TFTC","Created":"02/07/2011","Visited":"01/07/2011","UserName":"urbannature","MembershipLevel":1,"AccountID":2510965,"AccountGuid":"1f223c0d-d9ee-44c4-b411-35eee724b868","Email":"","AvatarImage":"476ea58f-a917-46c4-8e5a-b99484b514f6.jpg","GeocacheFindCount":1759,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":168683009,"CacheID":1433909,"LogGuid":"53e3436d-3bbc-4b46-aa34-ca28bbd0723a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Erster Hanopoly-Cach! Nach langem suchen und richtig lesen gefunden! ;)","Created":"24/06/2011","Visited":"24/06/2011","UserName":"anady","MembershipLevel":1,"AccountID":3551788,"AccountGuid":"c6d0f76b-df41-44d0-9d1f-e60b0ffa4f0a","Email":"","AvatarImage":"","GeocacheFindCount":142,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":168640932,"CacheID":1433909,"LogGuid":"fc364b9d-8ddb-4d0e-aa42-09b4dce93c94","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zusammen mit anady hier gewesen und die bald Karte gefunden. Doch irgendwie war kein Logbuch auffindbar. Während wir noch etwas hin und her hantierten wurde es uns überraschend übergeben. Ob das so sein soll?<br /><br />Die Idee aber ist prima.<br /><br />TFTC! :-)","Created":"24/06/2011","Visited":"24/06/2011","UserName":"CriDi","MembershipLevel":3,"AccountID":3383487,"AccountGuid":"78aeaa8b-044d-40ac-8a80-656a1c7f85c1","Email":"","AvatarImage":"09f0aca7-6fcf-4d9a-bbf9-0f4b31c68f36.jpg","GeocacheFindCount":726,"GeocacheHideCount":12,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":167383966,"CacheID":1433909,"LogGuid":"6a4c21a6-c795-4d8e-8f0c-a4d7a357f837","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Interessantes Geschehen am Sonnabendvormittag; die Müllabfuhr kommt, die Post bringt Neuigkeiten ins Haus, Nachbarn treffen sich auf der Straße und klönen eine Runde, ein Auto aus SFA blockiert die Kreuzung, ein Radfahrer entsorgt den Müll aus dem Fahrradkorb direkt am Baum und unser Team vergisst fast die Suche ...<br /><br />DfdC!","Created":"18/06/2011","Visited":"18/06/2011","UserName":"2bupa","MembershipLevel":3,"AccountID":2675170,"AccountGuid":"e6a84779-ad63-4ba1-93fa-558a7190c8b4","Email":"","AvatarImage":"e30c21ec-8bce-4b90-9c6f-ee7e618da9fe.jpg","GeocacheFindCount":3510,"GeocacheHideCount":13,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":167163052,"CacheID":1433909,"LogGuid":"2d51d81f-1581-4ae6-9254-0a5ffa163585","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"War schon öfters hier, aber die Muggels saßen da nur so rum. Heute früh aufgestanden....<br /><br />DFDC grüße Putze","Created":"16/06/2011","Visited":"15/06/2011","UserName":"Weltallputze","MembershipLevel":3,"AccountID":4512106,"AccountGuid":"07449e94-85c8-4d2f-b387-cb0910b2d854","Email":"","AvatarImage":"0b9746f6-1fd4-47b9-8f07-5b2bb3b21cc0.jpg","GeocacheFindCount":224,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":166633564,"CacheID":1433909,"LogGuid":"f6c8b6f6-527b-4ea0-ba85-8637cf47bd73","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Voll geil. Juhu und danke","Created":"13/06/2011","Visited":"13/06/2011","UserName":"Lumisch","MembershipLevel":1,"AccountID":4464524,"AccountGuid":"fcc7da31-928a-418f-ae3e-9f015b41ead6","Email":"","AvatarImage":"","GeocacheFindCount":52,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":165707570,"CacheID":1433909,"LogGuid":"1adb0f76-9bfa-47a4-a7f2-4b3aab0ffcfb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"lecker eis :)","Created":"09/06/2011","Visited":"09/06/2011","UserName":"Nico Rohrssen","MembershipLevel":1,"AccountID":4523346,"AccountGuid":"3c66a437-1bbc-4cb1-bda0-8f609ac6efef","Email":"","AvatarImage":"","GeocacheFindCount":25,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":164530395,"CacheID":1433909,"LogGuid":"477f0186-9c2a-40f9-8696-98afb9868205","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach langer sorgfältiger Vorplanung (an welchem Tag lohnt sich das frühe Aufstehen?) bei Sonnenaufgang angeschlichen und... gefunden! Gotcha! DfdC!","Created":"03/06/2011","Visited":"03/06/2011","UserName":"Deistermonster","MembershipLevel":3,"AccountID":4165483,"AccountGuid":"116149cb-3e0f-4c50-b51e-95b756d64da4","Email":"","AvatarImage":"54fe057c-f79a-4d82-b587-53c5b2b9386f.jpg","GeocacheFindCount":1047,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":164413372,"CacheID":1433909,"LogGuid":"e2c9bdad-9282-49f2-aba4-7e2ac058afa5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Morgens um 6 Uhr muggelfrei geloggt.<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />Endlich! Der war schon ewig geplant, aber um unserer Idee nachzugehen, fehlte zur \"normalen\" Tageszeit der Mut. Ist schon ein lustiges Versteck... TFTC sagt Soukousa","Created":"03/06/2011","Visited":"03/06/2011","UserName":"Soukousa","MembershipLevel":3,"AccountID":4154048,"AccountGuid":"399bef0c-1cdd-4024-a00e-3199484131af","Email":"","AvatarImage":"8480d5e4-f43e-48e5-a449-c01ce424ff05.jpg","GeocacheFindCount":1047,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163515249,"CacheID":1433909,"LogGuid":"cda47e99-cd5f-4fc1-aa40-cb3bccff4f46","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Bei einem leckerem Eis das Logbuch siegniert.<br /><br />TFTC<br />Don Canallie","Created":"29/05/2011","Visited":"29/05/2011","UserName":"Don Canallie","MembershipLevel":3,"AccountID":3891097,"AccountGuid":"80970931-2e97-4291-abfd-564635f5d86f","Email":"","AvatarImage":"e6944e25-df18-45fb-acca-93ee08e923da.jpg","GeocacheFindCount":697,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163307833,"CacheID":1433909,"LogGuid":"caad1abc-eb5c-4b99-ae92-232057825f41","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Während einer schönen Li-Li-Ahlem Fahrrad Cachingtour gesucht und geborgen, danach wieder korrekt versteckt, damit es nicht zu einfach wird. dfdc <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />","Created":"29/05/2011","Visited":"28/05/2011","UserName":"rimini08","MembershipLevel":3,"AccountID":4088331,"AccountGuid":"2fe34526-d72d-478e-9b7f-9dc5c3e1d6c1","Email":"","AvatarImage":"","GeocacheFindCount":390,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163325464,"CacheID":1433909,"LogGuid":"c3475f2f-1e55-43aa-89a8-3a1ce8ddc525","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"<i>gut gefunden, danke fürs verstecken!</i> <br /><br /><b> <font color=\"red\">TFTC<br /><br /><b> <font color=\"green\">...sprechenden Cachern kann geholfen werden <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br /><img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> <b> <font size=\"3\"> <font color=\"green\">J<font color=\"black\">o<font color=\"green\">h<font color=\"black\">a<font color=\"green\">n<font color=\"black\">s<font color=\"green\">i<font color=\"black\">b<font color=\"green\">ä<font color=\"black\">r <font color=\"orange\">2011</font> <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /></font></font></font></font></font></font></font></font></font></font></font></b><font size=\"3\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"></font></font></font></font></font></font></font></font></font></font></font></font></b></font></b>","Created":"29/05/2011","Visited":"22/05/2011","UserName":"Johansibär","MembershipLevel":3,"AccountID":1858674,"AccountGuid":"05f9d911-9cdc-4224-84b3-8e4923228958","Email":"","AvatarImage":"4d235c2f-81b6-42c4-a28c-5df2182a289d.jpg","GeocacheFindCount":1172,"GeocacheHideCount":17,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":162246062,"CacheID":1433909,"LogGuid":"e9eec580-6831-40ba-8530-c9722017a142","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schon vor ein paar Tagen die Karte entdeckt aber das loggen war uns nicht so klar...nun haben wir uns heute auch im Logbuch verewigt. Nette Idee, DfdC.","Created":"22/05/2011","Visited":"22/05/2011","UserName":"Flunin","MembershipLevel":3,"AccountID":3435189,"AccountGuid":"4c851b2a-967c-427d-91eb-268b5ffb0f0a","Email":"","AvatarImage":"","GeocacheFindCount":459,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":161705502,"CacheID":1433909,"LogGuid":"0b303d23-fb26-4b29-b5d2-2bb8828682ae","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach nem kleinen Tipp dann doch noch loggen können :-)<br />DFDC","Created":"20/05/2011","Visited":"20/05/2011","UserName":"Leafhoppers","MembershipLevel":3,"AccountID":3766111,"AccountGuid":"37bd64d5-a74f-4a12-b040-460f83652198","Email":"","AvatarImage":"","GeocacheFindCount":545,"GeocacheHideCount":0,"ChallengesCompleted":7,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":161990811,"CacheID":1433909,"LogGuid":"1ac63b3e-075a-48b7-9a1f-222b19c71868","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zusammen mit i-teg um 15:25 Uhr geloggt. <br />TFTC!<br />#488","Created":"21/05/2011","Visited":"19/05/2011","UserName":"justify-jay","MembershipLevel":1,"AccountID":3936481,"AccountGuid":"af49ff9e-5331-4565-97e8-5f5bf45e33b2","Email":"","AvatarImage":"198d173a-7efa-416c-b495-b15ed30f94a1.jpg","GeocacheFindCount":1102,"GeocacheHideCount":2,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161988577,"CacheID":1433909,"LogGuid":"19a1ae8a-e3d7-492c-a866-002064968183","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Auf Spontantour zusammen mit justify-jay um 15:25 Uhr zum Logbuch durchgedrungen :-) ! <br />TFTC!<br />#488","Created":"21/05/2011","Visited":"19/05/2011","UserName":"i-teg","MembershipLevel":1,"AccountID":3936536,"AccountGuid":"a30caa8b-0ba4-4a20-875f-ac825eacbf41","Email":"","AvatarImage":"533a43c0-8416-452f-8011-f575dee42268.jpg","GeocacheFindCount":1102,"GeocacheHideCount":2,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161489085,"CacheID":1433909,"LogGuid":"0686f7dd-e12b-4b99-b7c7-24df895f48fb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schnell gefunden da unsere Vorlogger scheinbar den Cache nicht wieder ganz genau plaziert hatten. Weils so schnell ging ne leckeres Eis in der Sonne genossen.<br />Ein super Cache, vielen Dank dafür.<br />Kartoffelhunter","Created":"18/05/2011","Visited":"18/05/2011","UserName":"Kartoffelhunter","MembershipLevel":3,"AccountID":3579558,"AccountGuid":"344121a1-10f3-443a-9ff6-f90fc43ba8be","Email":"","AvatarImage":"61105259-e319-4793-9bc3-51aae0eb9e10.jpg","GeocacheFindCount":1014,"GeocacheHideCount":2,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":160254911,"CacheID":1433909,"LogGuid":"f315eb63-43e2-48ad-a3b9-fc775dfc9e27","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Unsere erste gefundene Hannopoly-Karte, bei bestem Wetter. Und zur Belohnung ein Lecker Eis für Leona, Tomke und mich.","Created":"11/05/2011","Visited":"11/05/2011","UserName":"janko74","MembershipLevel":1,"AccountID":4460156,"AccountGuid":"bc9f2cab-dad8-465f-8b73-0d7d420e043c","Email":"","AvatarImage":"","GeocacheFindCount":4,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 401, "rows": 401 } };
+initalLogs = {"status":"success", "data": [{"LogID":196904781,"CacheID":1433909,"LogGuid":"26f89faf-aa71-406e-9ea3-cdfa18a846e6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"icon_note.gif","LogText":"s. mein Log bei Seestr.","Created":"05/11/2011","Visited":"05/11/2011","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5118,"GeocacheHideCount":40,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":196899232,"CacheID":1433909,"LogGuid":"f755b34d-0cc1-4740-827a-07311fe1a3b1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"icon_note.gif","LogText":"Äh, Logbuch ist nicht mehr vor Ort - wie kann man da \"Found\" loggen ? Ansonsten würde ich auch \"Found\" loggen da ich Dienstag vor Ort war und genau weiß vor sich der Cache befand....","Created":"05/11/2011","Visited":"05/11/2011","UserName":"blafoo","MembershipLevel":3,"AccountID":1912314,"AccountGuid":"0564a940-8311-40ee-8e76-7e91b2cf6284","Email":"","AvatarImage":"50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg","GeocacheFindCount":626,"GeocacheHideCount":7,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":189731769,"CacheID":1433909,"LogGuid":"e674d2ed-7cac-4b49-96b1-3020e5c7f479","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Archive","LogTypeImage":"traffic_cone.gif","LogText":"Auch hier fehlt mir leider eine passende neue Idee. Wie alle archivierten Hannopolys wird auch diese Besitzrechtskarte ab sofort auf www.hannopoly.de zu finden sein. Danke für die sehr schönen Logs!","Created":"01/10/2011","Visited":"01/10/2011","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5118,"GeocacheHideCount":40,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":189390319,"CacheID":1433909,"LogGuid":"4510051e-2c87-4d09-b77d-d90f645bafe9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"wahrscheinlich nicht mehr so schön wie geplant, dennoch alles da, was der logger so braucht ... sogar´n herry ;-)<br /><br />dfdc","Created":"29/09/2011","Visited":"29/09/2011","UserName":"Sir5al","MembershipLevel":3,"AccountID":3229535,"AccountGuid":"66de7735-1888-479b-8dbd-ada710747374","Email":"","AvatarImage":"9da1d6ed-3a3f-47cb-aba3-f5550abe7d11.jpg","GeocacheFindCount":744,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":186118551,"CacheID":1433909,"LogGuid":"acce0114-1712-4f32-b120-4b8bd4ef7200","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Leider habe ich erst gesehen das der Cache auf Eis liegt nach dem ich ihn gefunden habe.<br /><br />Ich konnte ihn denn noch gut finden und mich im großem Logbuch eintragen!<br /><br /><br />DFDC","Created":"11/09/2011","Visited":"27/08/2011","UserName":"Smootje1","MembershipLevel":3,"AccountID":4186572,"AccountGuid":"41b96bb9-ed81-473a-9032-1096d5c94423","Email":"","AvatarImage":"6052e05a-f2ce-45f1-86c4-c56fe8da6d2b.jpg","GeocacheFindCount":2877,"GeocacheHideCount":32,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":171398380,"CacheID":1433909,"LogGuid":"845e6ead-bf44-4dd8-900e-81a78afc0887","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"icon_note.gif","LogText":"Daniel, du sprichst uns aus der Seele.. gestern Nacht dagewesen, um ihn ENDLICH zu heben, aber ohne Erfolg.. SCHNIEF","Created":"08/07/2011","Visited":"08/07/2011","UserName":"Steinbreit","MembershipLevel":3,"AccountID":4430835,"AccountGuid":"86281f53-49a2-4051-bc15-394d43724d65","Email":"","AvatarImage":"90f468a9-7059-43a7-a3c5-256879458a63.jpg","GeocacheFindCount":408,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":171063566,"CacheID":1433909,"LogGuid":"fc463b7b-ce41-4d16-a7a4-2107b8454a91","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Temporarily Disable Listing","LogTypeImage":"icon_disabled.gif","LogText":"Mist...","Created":"06/07/2011","Visited":"06/07/2011","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5118,"GeocacheHideCount":40,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":170116614,"CacheID":1433909,"LogGuid":"09c89c9c-ec9f-4387-a6ae-05fe6d11d9bf","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ging schneller als gedacht. :-)<br /><br />TFTC","Created":"02/07/2011","Visited":"01/07/2011","UserName":"urbannature","MembershipLevel":1,"AccountID":2510965,"AccountGuid":"1f223c0d-d9ee-44c4-b411-35eee724b868","Email":"","AvatarImage":"476ea58f-a917-46c4-8e5a-b99484b514f6.jpg","GeocacheFindCount":1823,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":168683009,"CacheID":1433909,"LogGuid":"53e3436d-3bbc-4b46-aa34-ca28bbd0723a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Erster Hanopoly-Cach! Nach langem suchen und richtig lesen gefunden! ;)","Created":"24/06/2011","Visited":"24/06/2011","UserName":"anady","MembershipLevel":3,"AccountID":3551788,"AccountGuid":"c6d0f76b-df41-44d0-9d1f-e60b0ffa4f0a","Email":"","AvatarImage":"","GeocacheFindCount":142,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":168640932,"CacheID":1433909,"LogGuid":"fc364b9d-8ddb-4d0e-aa42-09b4dce93c94","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zusammen mit anady hier gewesen und die bald Karte gefunden. Doch irgendwie war kein Logbuch auffindbar. Während wir noch etwas hin und her hantierten wurde es uns überraschend übergeben. Ob das so sein soll?<br /><br />Die Idee aber ist prima.<br /><br />TFTC! :-)","Created":"24/06/2011","Visited":"24/06/2011","UserName":"CriDi","MembershipLevel":3,"AccountID":3383487,"AccountGuid":"78aeaa8b-044d-40ac-8a80-656a1c7f85c1","Email":"","AvatarImage":"09f0aca7-6fcf-4d9a-bbf9-0f4b31c68f36.jpg","GeocacheFindCount":763,"GeocacheHideCount":12,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":167383966,"CacheID":1433909,"LogGuid":"6a4c21a6-c795-4d8e-8f0c-a4d7a357f837","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Interessantes Geschehen am Sonnabendvormittag; die Müllabfuhr kommt, die Post bringt Neuigkeiten ins Haus, Nachbarn treffen sich auf der Straße und klönen eine Runde, ein Auto aus SFA blockiert die Kreuzung, ein Radfahrer entsorgt den Müll aus dem Fahrradkorb direkt am Baum und unser Team vergisst fast die Suche ...<br /><br />DfdC!","Created":"18/06/2011","Visited":"18/06/2011","UserName":"2bupa","MembershipLevel":3,"AccountID":2675170,"AccountGuid":"e6a84779-ad63-4ba1-93fa-558a7190c8b4","Email":"","AvatarImage":"e30c21ec-8bce-4b90-9c6f-ee7e618da9fe.jpg","GeocacheFindCount":3928,"GeocacheHideCount":13,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":167163052,"CacheID":1433909,"LogGuid":"2d51d81f-1581-4ae6-9254-0a5ffa163585","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"War schon öfters hier, aber die Muggels saßen da nur so rum. Heute früh aufgestanden....<br /><br />DFDC grüße Putze","Created":"16/06/2011","Visited":"15/06/2011","UserName":"Weltallputze","MembershipLevel":3,"AccountID":4512106,"AccountGuid":"07449e94-85c8-4d2f-b387-cb0910b2d854","Email":"","AvatarImage":"0b9746f6-1fd4-47b9-8f07-5b2bb3b21cc0.jpg","GeocacheFindCount":224,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":166633564,"CacheID":1433909,"LogGuid":"f6c8b6f6-527b-4ea0-ba85-8637cf47bd73","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Voll geil. Juhu und danke","Created":"13/06/2011","Visited":"13/06/2011","UserName":"Lumisch","MembershipLevel":1,"AccountID":4464524,"AccountGuid":"fcc7da31-928a-418f-ae3e-9f015b41ead6","Email":"","AvatarImage":"","GeocacheFindCount":52,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":165707570,"CacheID":1433909,"LogGuid":"1adb0f76-9bfa-47a4-a7f2-4b3aab0ffcfb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"lecker eis :)","Created":"09/06/2011","Visited":"09/06/2011","UserName":"Nico Rohrssen","MembershipLevel":1,"AccountID":4523346,"AccountGuid":"3c66a437-1bbc-4cb1-bda0-8f609ac6efef","Email":"","AvatarImage":"","GeocacheFindCount":25,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":164530395,"CacheID":1433909,"LogGuid":"477f0186-9c2a-40f9-8696-98afb9868205","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach langer sorgfältiger Vorplanung (an welchem Tag lohnt sich das frühe Aufstehen?) bei Sonnenaufgang angeschlichen und... gefunden! Gotcha! DfdC!","Created":"03/06/2011","Visited":"03/06/2011","UserName":"Deistermonster","MembershipLevel":3,"AccountID":4165483,"AccountGuid":"116149cb-3e0f-4c50-b51e-95b756d64da4","Email":"","AvatarImage":"54fe057c-f79a-4d82-b587-53c5b2b9386f.jpg","GeocacheFindCount":1169,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":164413372,"CacheID":1433909,"LogGuid":"e2c9bdad-9282-49f2-aba4-7e2ac058afa5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Morgens um 6 Uhr muggelfrei geloggt.<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />Endlich! Der war schon ewig geplant, aber um unserer Idee nachzugehen, fehlte zur \"normalen\" Tageszeit der Mut. Ist schon ein lustiges Versteck... TFTC sagt Soukousa","Created":"03/06/2011","Visited":"03/06/2011","UserName":"Soukousa","MembershipLevel":3,"AccountID":4154048,"AccountGuid":"399bef0c-1cdd-4024-a00e-3199484131af","Email":"","AvatarImage":"8480d5e4-f43e-48e5-a449-c01ce424ff05.jpg","GeocacheFindCount":1169,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163515249,"CacheID":1433909,"LogGuid":"cda47e99-cd5f-4fc1-aa40-cb3bccff4f46","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Bei einem leckerem Eis das Logbuch siegniert.<br /><br />TFTC<br />Don Canallie","Created":"29/05/2011","Visited":"29/05/2011","UserName":"Don Canallie","MembershipLevel":3,"AccountID":3891097,"AccountGuid":"80970931-2e97-4291-abfd-564635f5d86f","Email":"","AvatarImage":"e6944e25-df18-45fb-acca-93ee08e923da.jpg","GeocacheFindCount":705,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163307833,"CacheID":1433909,"LogGuid":"caad1abc-eb5c-4b99-ae92-232057825f41","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Während einer schönen Li-Li-Ahlem Fahrrad Cachingtour gesucht und geborgen, danach wieder korrekt versteckt, damit es nicht zu einfach wird. dfdc <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />","Created":"29/05/2011","Visited":"28/05/2011","UserName":"rimini08","MembershipLevel":3,"AccountID":4088331,"AccountGuid":"2fe34526-d72d-478e-9b7f-9dc5c3e1d6c1","Email":"","AvatarImage":"","GeocacheFindCount":424,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163325464,"CacheID":1433909,"LogGuid":"c3475f2f-1e55-43aa-89a8-3a1ce8ddc525","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"<i>gut gefunden, danke fürs verstecken!</i> <br /><br /><b> <font color=\"red\">TFTC<br /><br /><b> <font color=\"green\">...sprechenden Cachern kann geholfen werden <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br /><img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> <b> <font size=\"3\"> <font color=\"green\">J<font color=\"black\">o<font color=\"green\">h<font color=\"black\">a<font color=\"green\">n<font color=\"black\">s<font color=\"green\">i<font color=\"black\">b<font color=\"green\">ä<font color=\"black\">r <font color=\"orange\">2011</font> <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /></font></font></font></font></font></font></font></font></font></font></font></b><font size=\"3\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"></font></font></font></font></font></font></font></font></font></font></font></font></b></font></b>","Created":"29/05/2011","Visited":"22/05/2011","UserName":"Johansibär","MembershipLevel":3,"AccountID":1858674,"AccountGuid":"05f9d911-9cdc-4224-84b3-8e4923228958","Email":"","AvatarImage":"4d235c2f-81b6-42c4-a28c-5df2182a289d.jpg","GeocacheFindCount":1178,"GeocacheHideCount":17,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":162246062,"CacheID":1433909,"LogGuid":"e9eec580-6831-40ba-8530-c9722017a142","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schon vor ein paar Tagen die Karte entdeckt aber das loggen war uns nicht so klar...nun haben wir uns heute auch im Logbuch verewigt. Nette Idee, DfdC.","Created":"22/05/2011","Visited":"22/05/2011","UserName":"Flunin","MembershipLevel":3,"AccountID":3435189,"AccountGuid":"4c851b2a-967c-427d-91eb-268b5ffb0f0a","Email":"","AvatarImage":"","GeocacheFindCount":500,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":161705502,"CacheID":1433909,"LogGuid":"0b303d23-fb26-4b29-b5d2-2bb8828682ae","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach nem kleinen Tipp dann doch noch loggen können :-)<br />DFDC","Created":"20/05/2011","Visited":"20/05/2011","UserName":"Leafhoppers","MembershipLevel":3,"AccountID":3766111,"AccountGuid":"37bd64d5-a74f-4a12-b040-460f83652198","Email":"","AvatarImage":"","GeocacheFindCount":578,"GeocacheHideCount":0,"ChallengesCompleted":7,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":161990811,"CacheID":1433909,"LogGuid":"1ac63b3e-075a-48b7-9a1f-222b19c71868","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zusammen mit i-teg um 15:25 Uhr geloggt. <br />TFTC!<br />#488","Created":"21/05/2011","Visited":"19/05/2011","UserName":"justify-jay","MembershipLevel":1,"AccountID":3936481,"AccountGuid":"af49ff9e-5331-4565-97e8-5f5bf45e33b2","Email":"","AvatarImage":"198d173a-7efa-416c-b495-b15ed30f94a1.jpg","GeocacheFindCount":1102,"GeocacheHideCount":2,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161988577,"CacheID":1433909,"LogGuid":"19a1ae8a-e3d7-492c-a866-002064968183","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Auf Spontantour zusammen mit justify-jay um 15:25 Uhr zum Logbuch durchgedrungen :-) ! <br />TFTC!<br />#488","Created":"21/05/2011","Visited":"19/05/2011","UserName":"i-teg","MembershipLevel":1,"AccountID":3936536,"AccountGuid":"a30caa8b-0ba4-4a20-875f-ac825eacbf41","Email":"","AvatarImage":"533a43c0-8416-452f-8011-f575dee42268.jpg","GeocacheFindCount":1103,"GeocacheHideCount":2,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161489085,"CacheID":1433909,"LogGuid":"0686f7dd-e12b-4b99-b7c7-24df895f48fb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schnell gefunden da unsere Vorlogger scheinbar den Cache nicht wieder ganz genau plaziert hatten. Weils so schnell ging ne leckeres Eis in der Sonne genossen.<br />Ein super Cache, vielen Dank dafür.<br />Kartoffelhunter","Created":"18/05/2011","Visited":"18/05/2011","UserName":"Kartoffelhunter","MembershipLevel":3,"AccountID":3579558,"AccountGuid":"344121a1-10f3-443a-9ff6-f90fc43ba8be","Email":"","AvatarImage":"61105259-e319-4793-9bc3-51aae0eb9e10.jpg","GeocacheFindCount":1021,"GeocacheHideCount":2,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":160254911,"CacheID":1433909,"LogGuid":"f315eb63-43e2-48ad-a3b9-fc775dfc9e27","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Unsere erste gefundene Hannopoly-Karte, bei bestem Wetter. Und zur Belohnung ein Lecker Eis für Leona, Tomke und mich.","Created":"11/05/2011","Visited":"11/05/2011","UserName":"janko74","MembershipLevel":1,"AccountID":4460156,"AccountGuid":"bc9f2cab-dad8-465f-8b73-0d7d420e043c","Email":"","AvatarImage":"","GeocacheFindCount":4,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 401, "rows": 401 } };
//]]>
</script>
</form>
@@ -2222,6 +2219,6 @@ initalLogs = {"status":"success", "data": [{"LogID":196904781,"CacheID":1433909,
</div>
<!-- End Quantcast tag -->
- <!-- Server: WEB15; Build: Web.HotFix_20120523.2 -->
+ <!-- Server: WEB20; Build: Web.HotFix_20120627.4 -->
</body>
</html>
diff --git a/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.java b/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.java
index 86075c4..ce13e4a 100644
--- a/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.java
+++ b/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.java
@@ -36,7 +36,7 @@ public class GC1ZXX2 extends MockedCache {
}
@Override
- public String getOwner() {
+ public String getOwnerDisplayName() {
return "Rich Uncle Pennybags";
}
@@ -61,7 +61,7 @@ public class GC1ZXX2 extends MockedCache {
}
@Override
- public String getOwnerReal() {
+ public String getOwnerUserId() {
return "daniel354";
}
diff --git a/tests/src/cgeo/geocaching/test/mock/GC2CJPF.html b/tests/src/cgeo/geocaching/test/mock/GC2CJPF.html
index b1cce1a..17604af 100644
--- a/tests/src/cgeo/geocaching/test/mock/GC2CJPF.html
+++ b/tests/src/cgeo/geocaching/test/mock/GC2CJPF.html
@@ -244,9 +244,9 @@
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="3" />
-<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjEwMzIwMDYxOA8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE4MTE0MDkWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYQAgUPFgIfAWRkAggPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvNTBmODMxMjMtMjdkOC00ZGNmLTlmZGUtMmFmMDA2ZWZhZjJiLmpwZ2RkAgMPFgIfAQVoSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIGJsYWZvbyIgY2xhc3M9IlNpZ25lZEluUHJvZmlsZUxpbmsiPmJsYWZvbzwvYT5kAgUPDxYCHgtOYXZpZ2F0ZVVybAWtAWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmbG9nJTNkeSUyNndwJTNkR0MyQ0pQRiUyNm51bWxvZ3MlM2QzNSUyNmRlY3J5cHQlM2R5ZGQCCw8WAh8BBasBPGltZyBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9zbWlsZS5wbmciIHRpdGxlPSJDYWNoZXMgRm91bmQiIC8+IDU5MCZuYnNwOyZuYnNwOyZuYnNwOzxpbWcgc3JjPSIvaW1hZ2VzL2NoYWxsZW5nZXMvdHlwZXMvc20vY2hhbGxlbmdlLnBuZyIgdGl0bGU9IkNoYWxsZW5nZXMgQ29tcGxldGVkIiAvPiAzZAINDxYCHwNnFgICDQ8PFgIfBQVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTA1NjRhOTQwLTgzMTEtNDBlZS04ZTc2LTdlOTFiMmNmNjI4NGRkAhAPDxYCHwNnZGQCLA9kFgICAw8WAh8DaGQCLQ8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYyAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0MyQ0pQRmRkAgIPFgIfAQWxATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy8zLmdpZiIgYWx0PSJNdWx0aS1jYWNoZSIgdGl0bGU9Ik11bHRpLWNhY2hlIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIC8+PC9hPmQCBQ9kFgICAQ8WAh8BBQFBZAIGD2QWBAIBDxYCHwNnZAIHDxYCHwNoZAILD2QWBAIBDxYCHwEFATlkAgMPDxYCHwUFRC9zZWVrL2NhY2hlX2Zhdm9yaXRlZC5hc3B4P2d1aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2ZGQCDQ8PFgIfBQUZaHR0cDovL3d3dy5raW5kZXJ3YWxkLmRlL2RkAhAPFgIfA2hkAhEPFgIfA2hkAhIPZBYMAgMPFgIeBXN0eWxlBQ9kaXNwbGF5OmlubGluZTsWAgIBDxYCHwEFG1VUTTogMzJVIEUgNTQ1MTY0IE4gNTgwODUyNGQCDQ8PFgIfBQUzY2RwZi5hc3B4P2d1aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2ZGQCDw8PFgIfBQU4Y2RwZi5hc3B4P2d1aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JmxjPTVkZAIRDw8WAh8FBTljZHBmLmFzcHg/Z3VpZD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYmbGM9MTBkZAITDw8WBB8FBXNodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/Zj1kJmhsPWVuJnNhZGRyPTUyLjQxNjIsOS41OTQxMTcgKEhvbWUgTG9jYXRpb24pJmRhZGRyPTUyLjQyNTA2Nyw5LjY2NDIoS2luZGVyd2FsZCtLaUMpHgZUYXJnZXQFBl9ibGFua2RkAhsPZBYIAgEPDxYEHglGb3JlQ29sb3IMHgRfIVNCAgRkZAIDDw8WBB8JDB8KAgRkZAIFDw8WAh8DZxYCHgdvbmNsaWNrBTtzMmdwcygnNzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2Jyk7cmV0dXJuIGZhbHNlO2QCBw8PFgIfA2cWAh8LBSBzMnBob25lKCdHQzJDSlBGJyk7cmV0dXJuIGZhbHNlO2QCFA8WAh8DZ2QCFw9kFghmDxYCHwNoZAIBDw8WAh8DaGRkAgIPDxYCHwNoZGQCAw8WAh8DaGQCGA9kFgICAw8PFgIfAQUHRW5jcnlwdGRkAhkPFgIfAQUbRGFzIEZpbmFsIGlzdCB1bnRlciBTdGVpbmVuZAIcD2QWBAIBDw8WBB4IQ3NzQ2xhc3NkHwoCAmRkAgQPFgIfAQUCMjFkAh0PZBYCAgEPFgIfA2cWAgIBDw8WAh8FBTgvc2Vlay9sb2cuYXNweD9MVUlEPTdjNmYwODkxLTcwMDMtNGFlNS05MjMxLWMyZTQxN2QxYzVlNGRkAh4PFgIfA2dkAh8PFgIfA2hkAiIPZBYCAgEPZBYEAgEPDxYCHwEF/wM8aWZyYW1lIHR5cGU9ImlmcmFtZSIgc3JjPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1HZXQmU2l0ZUlEPTEmWD0nZmZlZjVhOTkwNWE3NDc2ZGJmYjQ2YjdjNTJhY2RmOGYnIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjI0MCIgTWFyZ2lud2lkdGg9IjAiIE1hcmdpbmhlaWdodD0iMCIgSHNwYWNlPSIwIiBWc3BhY2U9IjAiIEZyYW1lYm9yZGVyPSIwIiBTY3JvbGxpbmc9Im5vIiBzdHlsZT0id2lkdGg6MTIwcHg7SGVpZ2h0OjI0MHB4OyI+PGEgaHJlZj0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9Q2xpY2smO01vZGU9SFRNTCZTaXRlSUQ9MSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1HZXQmTW9kZT1IVE1MJlNpdGVJRD0xIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjI0MCIgYm9yZGVyPSIwIiBhbHQ9IiIgLz48L2E+PC9pZnJhbWU+ZGQCAw8WAh4JaW5uZXJodG1sBRNBZHZlcnRpc2luZyB3aXRoIFVzZAImD2QWBAIHDw8WAh8DZ2RkAgsPDxYCHwUFPH4vdHJhY2svc2VhcmNoLmFzcHg/d2lkPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NmRkAicPDxYCHwNnZBYCZg8WAh4LXyFJdGVtQ291bnQCARYCAgEPZBYEZg8VAwBXaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9M2VlZWEwNTctZjYwNS00ODVhLWE0NWEtZjVmZWExNDI2NjEyEktpbmRlcmNhY2hlcyAoS2lDKWQCAg8VAkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9MDU2NGE5NDAtODMxMS00MGVlLThlNzYtN2U5MWIyY2Y2Mjg0BmJsYWZvb2QCKA8PFgIfA2dkFgJmDxYCHw4CARYCAgEPZBYEZg8VAwBXaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9M2VlZWEwNTctZjYwNS00ODVhLWE0NWEtZjVmZWExNDI2NjEyEktpbmRlcmNhY2hlcyAoS2lDKWQCAg8VAkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9MDU2NGE5NDAtODMxMS00MGVlLThlNzYtN2U5MWIyY2Y2Mjg0BmJsYWZvb2QCKQ9kFhQCAw9kFgICAQ8PFgIfBQVFL2hpZGUvd3B0bGlzdC5hc3B4P1JlZldwdElEPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZEUz0xZGQCBw8PFgQeBlJEUy5JRAspdkdyb3VuZHNwZWFrLldlYi5HUFguV3B0RGF0YVNvdXJjZXMsIFR1Y3Nvbi5Db21tb24uTGVnYWN5LCBWZXJzaW9uPTMuMC40NTI2LjIyMTY2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwBHgdSV1BULklEKCsEBzE4MTE0MDlkFgJmDxYC" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="Hw4CBBYKZg9kFgJmDw8WAh8DaGRkAgEPZBYMZg8VAgAFZmFsc2VkAgIPFQl0PGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX25vY29vcmRzLmpwZyIgYWx0PSJIaWRlIENvb3JkaW5hdGVzIiB0aXRsZT0iSGlkZSBDb29yZGluYXRlcyIgLz41aHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vZmxhZy5qcGcORmluYWwgTG9jYXRpb24ORmluYWwgTG9jYXRpb24CRk4CRk4FRklOQUywATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9MzBmMWIzN2MtZDM5NS00YzdhLTk0ZTItMGM2NDlkNWYyMzFiJlJlZklEPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZSZWZEUz0xIj5HQzJDSlBGIEZpbmFsPC9hPiAoRmluYWwgTG9jYXRpb24pAz8/P2QCBQ8PFgIeB1Rvb2xUaXAFBEVkaXRkZAIHDw8WAh8RBQNNYXBkZAILDw8WAh4NQWx0ZXJuYXRlVGV4dAUGUmVtb3ZlFgIfCwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAgAAZAICD2QWDGYPFQIOQWx0ZXJuYXRpbmdSb3cFZmFsc2VkAgIPFQliPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX3ZpZXdhYmxlLmpwZyIgYWx0PSJWaXNpYmxlIiB0aXRsZT0iVmlzaWJsZSIgLz40aHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcGtnLmpwZwxQYXJraW5nIEFyZWEMUGFya2luZyBBcmVhAlBLAlBLBlBBUktOR7ABPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD05OGNiMTM4Ny00OWNlLTRmOTQtOWIwNS01Y2IwNzlkMzMyYjEmUmVmSUQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JlJlZkRTPTEiPkdDMkNKUEYgUGFya2luZzwvYT4gKFBhcmtpbmcgQXJlYSkcTiA1MsKwIDI1LjM4NCBFIDAwOcKwIDM5LjAyM2QCBQ8PFgIfEQUERWRpdGRkAgcPDxYCHxEFA01hcGRkAgsPDxYCHxIFBlJlbW92ZRYCHwsFQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQIOQWx0ZXJuYXRpbmdSb3c3S2VpbiAib2ZmaXppZWxsZXIiIFBhcmtwbGF0eiwgUGFya2VuIHRyb3R6ZGVtIG3DtmdsaWNoLmQCAw9kFgxmDxUCAAVmYWxzZWQCAg8VCWI8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPjdodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wdXp6bGUuanBnElF1ZXN0aW9uIHRvIEFuc3dlchJRdWVzdGlvbiB0byBBbnN3ZXICU1QCU1QFU1RBUlS0ATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9MDQxMTNiYWQtNjRjYS00OTlhLTk4NDgtYjU5MzdlMTNkYTFiJlJlZklEPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZSZWZEUz0xIj5HQzJDSlBGIFN0YXJ0PC9hPiAoUXVlc3Rpb24gdG8gQW5zd2VyKRxOIDUywrAgMjUuNTA0IEUgMDA5wrAgMzkuODUyZAIFDw8WAh8RBQRFZGl0ZGQCBw8PFgIfEQUDTWFwZGQCCw8PFgIfEgUGUmVtb3ZlFgIfCwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAgAAZAIED2QWDGYPFQIOQWx0ZXJuYXRpbmdSb3cFZmFsc2VkAgIPFQliPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX3ZpZXdhYmxlLmpwZyIgYWx0PSJWaXNpYmxlIiB0aXRsZT0iVmlzaWJsZSIgLz45aHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vd2F5cG9pbnQuanBnD1JlZmVyZW5jZSBQb2ludA9SZWZlcmVuY2UgUG9pbnQCV08CV08GU0NFTklDsgE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPWIyOGM1ODc5LTMxODEtNDUxMC05NGZhLTZlYzVlMzBmZDA1NiZSZWZJRD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYmUmVmRFM9MSI+QXVzc2ljaHRzcHVua3Q8L2E+IChSZWZlcmVuY2UgUG9pbnQpHE4gNTLCsCAyNS40ODggRSAwMDnCsCAzOS40MzJkAgUPDxYCHxEFBEVkaXRkZAIHDw8WAh8RBQNNYXBkZAILDw8WAh8SBQZSZW1vdmUWAh8LBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUCDkFsdGVybmF0aW5nUm93T0VoZW1hbGlnZSBGaW5hbGxvY2F0aW9uIHdvIGVzIGdlYnJhbm50IGhhdC4gR2xlaWNoemVpdGlnIG5ldHRlciBBdXNzaWNodHNwdW5rdC5kAgkPDxYCHwNnZBYCAgEPDxYEHwUFKi9tYXAvZGVmYXVsdC5hc3B4P2xhdD01Mi40MjUwNjcmbG5nPTkuNjY0Mh8DZ2RkAhEPDxYCHwUFGi9zZWVrL25lYXJlc3QuYXNweD91PVRvbTAzZGQCFQ8PFgIfBQUbL3NlZWsvbmVhcmVzdC5hc3B4P3VsPVRvbTAzZGQCGQ9kFgoCAw8PFgIfBQVVL3NlZWsvbmVhcmVzdC5hc3B4P3R4PWE1ZjZkMGFkLWQyZjItNDAxMS04YzE0LTk0MGE5ZWJmM2M3NCZsYXQ9NTIuNDI1MDY3JmxuZz05LjY2NDIwMGRkAgUPDxYCHwUFWS9zZWVrL25lYXJlc3QuYXNweD90eD1hNWY2ZDBhZC1kMmYyLTQwMTEtOGMxNC05NDBhOWViZjNjNzQmbGF0PTUyLjQyNTA2NyZsbmc9OS42NjQyMDAmZj0xZGQCCQ8PFgIfBQUtL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi40MjUwNjcmbG5nPTkuNjY0MjAwZGQCCw8PFgIfBQUxL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi40MjUwNjcmbG5nPTkuNjY0MjAwJmY9MWRkAg8PDxYCHwUFR2h0dHA6Ly93d3cud2F5bWFya2luZy5jb20vZGlyZWN0b3J5LmFzcHg/Zj0xJmxhdD01Mi40MjUwNjcmbG9uPTkuNjY0MjAwZGQCGw8WAh8DaGQCHw8PFgIfBQUlL3Jldmlld3MvaG90ZWxzLWNvb3Jkcy01Mi40MjUxLDkuNjY0MmRkAiMPZBYCAgEPDxYEHwEFtAc8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9tYXAvZGVmYXVsdC5hc3B4P2xhdD01Mi40MjUwNyZsbmc9OS42NjQyIiB0YXJnZXQ9Il9ibGFuayI+R2VvY2FjaGluZy5jb20gTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPU4rNTIlYzIlYjArMjUuNTA0K0UrMDA5JWMyJWIwKzM5Ljg1MisoR0MyQ0pQRikrIiB0YXJnZXQ9Il9ibGFuayI+R29vZ2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vbWFwcy9tYXAuYWRwP3NlYXJjaHR5cGU9YWRkcmVzcyZmb3JtdHlwZT1sYXRsb25nJmxhdGxvbmd0eXBlPWRlY2ltYWwmbGF0aXR1ZGU9NTIuNDI1MDcmbG9uZ2l0dWRlPTkuNjY0MiZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NTIuNDI1MDcmbG9uPTkuNjY0MiZ6b29tPTE2JnE9NTIuNDI1MDcsOS42NjQyJmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuNTIuNDI1MDdfOS42NjQyX0dDMkNKUEYiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEy" />
-<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="JmxhdD01Mi40MjUwNyZsb249OS42NjQyIiB0YXJnZXQ9Il9ibGFuayI+T3BlbiBDeWNsZSBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvP21sYXQ9NTIuNDI1MDcmbWxvbj05LjY2NDImem9vbT0xMiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW4gU3RyZWV0IE1hcHM8L2E+PC9saT4fA2dkZAInD2QWBgIBDxYCHwEFETEwNyBMb2dnZWQgVmlzaXRzZAIHDw8WAh8FBUN+L3NlZWsvY2FjaGVfbG9nYm9vay5hc3B4P2d1aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2ZGQCCQ8PFgQfBQU9fi9zZWVrL2dhbGxlcnkuYXNweD9ndWlkPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3Nh8BBSNWaWV3IHRoZSBJbWFnZSBHYWxsZXJ5IG9mIDE3IGltYWdlc2RkAioPFgIfAQUEdHJ1ZWQCKw8WAh8BBUlsYXQ9NTIuNDI1MDY3OyBsbmc9OS42NjQyOyBndWlkPSc3MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYnOw0KZAIsDxYCHwEFcXRyeSB7IF9nYXEucHVzaChbJ190cmFja0V2ZW50JywgJ0dlb2NhY2hpbmcnLCAnQ2FjaGVEZXRhaWxzTWVtYmVyVHlwZScsICdQcmVtaXVtJywgbnVsbCwgdHJ1ZV0pOyB9IGNhdGNoKGVycikgeyB9ZAIuDxYCHwNoZAIvD2QWBAIBDxYCHwEFB0VuZ2xpc2hkAgMPFgIfDgIPFh5mD2QWAgIBDw8WCB4PQ29tbWFuZEFyZ3VtZW50BQVlbi1VUx4LQ29tbWFuZE5hbWUFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB4QQ2F1c2VzVmFsaWRhdGlvbmhkZAIBD2QWAgIBDw8WCB8TBQVkZS1ERR8UBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfFWhkZAICD2QWAgIBDw8WCB8TBQVmci1GUh8UBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8VaGRkAgMPZBYCAgEPDxYIHxMFBXB0LVBUHxQFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8VaGRkAgQPZBYCAgEPDxYIHxMFBWNzLUNaHxQFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHxVoZGQCBQ9kFgICAQ8PFggfEwUFc3YtU0UfFAUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHxVoZGQCBg9kFgICAQ8PFggfEwUFbmwtTkwfFAUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHxVoZGQCBw9kFgICAQ8PFggfEwUFY2EtRVMfFAUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHxVoZGQCCA9kFgICAQ8PFggfEwUFcGwtUEwfFAUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfFWhkZAIJD2QWAgIBDw8WCB8TBQVldC1FRR8UBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHxVoZGQCCg9kFgICAQ8PFggfEwUFbmItTk8fFAUNU2V0VGVtcExvY2FsZR8BBQ5Ob3JzaywgQm9rbcOlbB8VaGRkAgsPZBYCAgEPDxYIHxMFBWtvLUtSHxQFDVNldFRlbXBMb2NhbGUfAQUJ7ZWc6rWt7Ja0HxVoZGQCDA9kFgICAQ8PFggfEwUFZXMtRVMfFAUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8VaGRkAg0PZBYCAgEPDxYIHxMFBWh1LUhVHxQFDVNldFRlbXBMb2NhbGUfAQUGTWFneWFyHxVoZGQCDg9kFgICAQ8PFggfEwUFcm8tUk8fFAUNU2V0VGVtcExvY2FsZR8BBQhSb23Dom7Egx8VaGRkAgMPFgIfAQUrU2VydmVyOiBXRUIxNTsgQnVpbGQ6IFdlYi5Ib3RGaXhfMjAxMjA1MjMuMmRkjlhJ+KTEAE8rUFJJGk/2Sq+nYZw=" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTI5ODA0Nzc1OQ8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE4MTE0MDkWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYQAgUPFgIfAWRkAggPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvNTBmODMxMjMtMjdkOC00ZGNmLTlmZGUtMmFmMDA2ZWZhZjJiLmpwZ2RkAgMPFgIfAQVoSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIGJsYWZvbyIgY2xhc3M9IlNpZ25lZEluUHJvZmlsZUxpbmsiPmJsYWZvbzwvYT5kAgUPDxYCHgtOYXZpZ2F0ZVVybAWtAWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmbG9nJTNkeSUyNndwJTNkR0MyQ0pQRiUyNm51bWxvZ3MlM2QzNSUyNmRlY3J5cHQlM2R5ZGQCCw8WAh8BBasBPGltZyBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9zbWlsZS5wbmciIHRpdGxlPSJDYWNoZXMgRm91bmQiIC8+IDYyNiZuYnNwOyZuYnNwOyZuYnNwOzxpbWcgc3JjPSIvaW1hZ2VzL2NoYWxsZW5nZXMvdHlwZXMvc20vY2hhbGxlbmdlLnBuZyIgdGl0bGU9IkNoYWxsZW5nZXMgQ29tcGxldGVkIiAvPiAzZAINDxYCHwNnFgICDQ8PFgIfBQVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTA1NjRhOTQwLTgzMTEtNDBlZS04ZTc2LTdlOTFiMmNmNjI4NGRkAhAPDxYCHwNnZGQCLA9kFgICAw8WAh8DaGQCLQ8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYwAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0MyQ0pQRmRkAgIPFgIfAQWaATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy8zLmdpZiIgYWx0PSJNdWx0aS1jYWNoZSIgdGl0bGU9Ik11bHRpLWNhY2hlIiAvPjwvYT5kAgYPZBYEAgEPFgIfA2dkAgYPFgIfA2hkAgsPZBYEAgEPFgIfAQUCMTFkAgUPDxYCHwUFRC9zZWVrL2NhY2hlX2Zhdm9yaXRlZC5hc3B4P2d1aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2ZGQCDQ8PFgIfBQUZaHR0cDovL3d3dy5raW5kZXJ3YWxkLmRlL2RkAhAPFgIfA2hkAhEPFgIfA2hkAhIPZBYMAgMPFgIeBXN0eWxlBQ9kaXNwbGF5OmlubGluZTsWAgIBDxYCHwEFG1VUTTogMzJVIEUgNTQ1MTY0IE4gNTgwODUyNGQCDQ8PFgIfBQUzY2RwZi5hc3B4P2d1aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2ZGQCDw8PFgIfBQU4Y2RwZi5hc3B4P2d1aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JmxjPTVkZAIRDw8WAh8FBTljZHBmLmFzcHg/Z3VpZD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYmbGM9MTBkZAITDw8WBB8FBXNodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/Zj1kJmhsPWVuJnNhZGRyPTUyLjQxNjIsOS41OTQxMTcgKEhvbWUgTG9jYXRpb24pJmRhZGRyPTUyLjQyNTA2Nyw5LjY2NDIoS2luZGVyd2FsZCtLaUMpHgZUYXJnZXQFBl9ibGFua2RkAhsPZBYIAgEPDxYEHglGb3JlQ29sb3IMHgRfIVNCAgRkZAIDDw8WBB8JDB8KAgRkZAIFDw8WAh8DZxYCHgdvbmNsaWNrBTtzMmdwcygnNzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2Jyk7cmV0dXJuIGZhbHNlO2QCBw8PFgIfA2cWAh8LBSBzMnBob25lKCdHQzJDSlBGJyk7cmV0dXJuIGZhbHNlO2QCFA8WAh8DZ2QCFw9kFghmDxYCHwNoZAIBDw8WAh8DaGRkAgIPDxYCHwNoZGQCAw8WAh8DaGQCGA9kFgICAw8PFgIfAQUHRW5jcnlwdGRkAhkPFgIfAQUbRGFzIEZpbmFsIGlzdCB1bnRlciBTdGVpbmVuZAIcD2QWBAIBDw8WBB4IQ3NzQ2xhc3NkHwoCAmRkAgQPFgIfAQUCMjBkAh0PZBYCAgEPFgIfA2cWAgIBDw8WAh8FBTgvc2Vlay9sb2cuYXNweD9MVUlEPTdjNmYwODkxLTcwMDMtNGFlNS05MjMxLWMyZTQxN2QxYzVlNGRkAh4PFgIfA2dkAh8PFgIfA2hkAiIPZBYCAgEPZBYEAgEPDxYCHwEF/wM8aWZyYW1lIHR5cGU9ImlmcmFtZSIgc3JjPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1HZXQmU2l0ZUlEPTEmWD0nNDllYmVlYzQyMzcxNGFlZGFhOGJmZjc3YTgzOWQ4YmEnIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjI0MCIgTWFyZ2lud2lkdGg9IjAiIE1hcmdpbmhlaWdodD0iMCIgSHNwYWNlPSIwIiBWc3BhY2U9IjAiIEZyYW1lYm9yZGVyPSIwIiBTY3JvbGxpbmc9Im5vIiBzdHlsZT0id2lkdGg6MTIwcHg7SGVpZ2h0OjI0MHB4OyI+PGEgaHJlZj0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9Q2xpY2smO01vZGU9SFRNTCZTaXRlSUQ9MSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1HZXQmTW9kZT1IVE1MJlNpdGVJRD0xIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjI0MCIgYm9yZGVyPSIwIiBhbHQ9IiIgLz48L2E+PC9pZnJhbWU+ZGQCAw8WAh4JaW5uZXJodG1sBRNBZHZlcnRpc2luZyB3aXRoIFVzZAImD2QWBAIHDw8WAh8DZ2RkAgsPDxYCHwUFPH4vdHJhY2svc2VhcmNoLmFzcHg/d2lkPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NmRkAicPDxYCHwNnZBYCZg8WAh4LXyFJdGVtQ291bnQCARYCAgEPZBYEZg8VAwBXaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9M2VlZWEwNTctZjYwNS00ODVhLWE0NWEtZjVmZWExNDI2NjEyEktpbmRlcmNhY2hlcyAoS2lDKWQCAg8VAkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9MDU2NGE5NDAtODMxMS00MGVlLThlNzYtN2U5MWIyY2Y2Mjg0BmJsYWZvb2QCKA8PFgIfA2dkFgJmDxYCHw4CARYCAgEPZBYEZg8VAwBXaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9M2VlZWEwNTctZjYwNS00ODVhLWE0NWEtZjVmZWExNDI2NjEyEktpbmRlcmNhY2hlcyAoS2lDKWQCAg8VAkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9MDU2NGE5NDAtODMxMS00MGVlLThlNzYtN2U5MWIyY2Y2Mjg0BmJsYWZvb2QCKQ9kFhQCAw9kFgICAQ8PFgIfBQVFL2hpZGUvd3B0bGlzdC5hc3B4P1JlZldwdElEPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZEUz0xZGQCBw8PFgQeBlJEUy5JRAspdkdyb3VuZHNwZWFrLldlYi5HUFguV3B0RGF0YVNvdXJjZXMsIFR1Y3Nvbi5Db21tb24uTGVnYWN5LCBWZXJzaW9uPTMuMC40NTYxLjI2NDE2LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwBHgdSV1BULklEKCsEBzE4MTE0MDlkFgJmDxYCHw4CBBYKZg9kFgJmDw8WAh8DaGRkAgEPZBYOZg8VAgAFZmFsc2Vk" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="AgIPFQd0PGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX25vY29vcmRzLmpwZyIgYWx0PSJIaWRlIENvb3JkaW5hdGVzIiB0aXRsZT0iSGlkZSBDb29yZGluYXRlcyIgLz6GATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL2ZsYWcuanBnIiBhbHQ9IkZpbmFsIExvY2F0aW9uIiB0aXRsZT0iRmluYWwgTG9jYXRpb24iIC8+AkZOAkZOBUZJTkFMsAE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTMwZjFiMzdjLWQzOTUtNGM3YS05NGUyLTBjNjQ5ZDVmMjMxYiZSZWZJRD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYmUmVmRFM9MSI+R0MyQ0pQRiBGaW5hbDwvYT4gKEZpbmFsIExvY2F0aW9uKQM/Pz9kAgUPDxYCHgdUb29sVGlwBQRFZGl0ZGQCBw8PFgIfEQUDTWFwZGQCCw8PFgIeDUFsdGVybmF0ZVRleHQFBlJlbW92ZRYCHwsFQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQEAZAIODxUBAGQCAg9kFg5mDxUCDkFsdGVybmF0aW5nUm93BWZhbHNlZAICDxUHYjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl92aWV3YWJsZS5qcGciIGFsdD0iVmlzaWJsZSIgdGl0bGU9IlZpc2libGUiIC8+gQE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wa2cuanBnIiBhbHQ9IlBhcmtpbmcgQXJlYSIgdGl0bGU9IlBhcmtpbmcgQXJlYSIgLz4CUEsCUEsGUEFSS05HsAE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTk4Y2IxMzg3LTQ5Y2UtNGY5NC05YjA1LTVjYjA3OWQzMzJiMSZSZWZJRD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYmUmVmRFM9MSI+R0MyQ0pQRiBQYXJraW5nPC9hPiAoUGFya2luZyBBcmVhKRxOIDUywrAgMjUuMzg0IEUgMDA5wrAgMzkuMDIzZAIFDw8WAh8RBQRFZGl0ZGQCBw8PFgIfEQUDTWFwZGQCCw8PFgIfEgUGUmVtb3ZlFgIfCwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQ5BbHRlcm5hdGluZ1Jvd2QCDg8VATdLZWluICJvZmZpemllbGxlciIgUGFya3BsYXR6LCBQYXJrZW4gdHJvdHpkZW0gbcO2Z2xpY2guZAIDD2QWDmYPFQIABWZhbHNlZAICDxUHYjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl92aWV3YWJsZS5qcGciIGFsdD0iVmlzaWJsZSIgdGl0bGU9IlZpc2libGUiIC8+kAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9wdXp6bGUuanBnIiBhbHQ9IlF1ZXN0aW9uIHRvIEFuc3dlciIgdGl0bGU9IlF1ZXN0aW9uIHRvIEFuc3dlciIgLz4CU1QCU1QFU1RBUlS0ATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9MDQxMTNiYWQtNjRjYS00OTlhLTk4NDgtYjU5MzdlMTNkYTFiJlJlZklEPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZSZWZEUz0xIj5HQzJDSlBGIFN0YXJ0PC9hPiAoUXVlc3Rpb24gdG8gQW5zd2VyKRxOIDUywrAgMjUuNTA0IEUgMDA5wrAgMzkuODUyZAIFDw8WAh8RBQRFZGl0ZGQCBw8PFgIfEQUDTWFwZGQCCw8PFgIfEgUGUmVtb3ZlFgIfCwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQBkAg4PFQEAZAIED2QWDmYPFQIOQWx0ZXJuYXRpbmdSb3cFZmFsc2VkAgIPFQdiPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX3ZpZXdhYmxlLmpwZyIgYWx0PSJWaXNpYmxlIiB0aXRsZT0iVmlzaWJsZSIgLz6MATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL3dheXBvaW50LmpwZyIgYWx0PSJSZWZlcmVuY2UgUG9pbnQiIHRpdGxlPSJSZWZlcmVuY2UgUG9pbnQiIC8+AldPAldPBlNDRU5JQ7IBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD1iMjhjNTg3OS0zMTgxLTQ1MTAtOTRmYS02ZWM1ZTMwZmQwNTYmUmVmSUQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JlJlZkRTPTEiPkF1c3NpY2h0c3B1bmt0PC9hPiAoUmVmZXJlbmNlIFBvaW50KRxOIDUywrAgMjUuNDg4IEUgMDA5wrAgMzkuNDMyZAIFDw8WAh8RBQRFZGl0ZGQCBw8PFgIfEQUDTWFwZGQCCw8PFgIfEgUGUmVtb3ZlFgIfCwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQ5BbHRlcm5hdGluZ1Jvd2QCDg8VAU9FaGVtYWxpZ2UgRmluYWxsb2NhdGlvbiB3byBlcyBnZWJyYW5udCBoYXQuIEdsZWljaHplaXRpZyBuZXR0ZXIgQXVzc2ljaHRzcHVua3QuZAIJDw8WAh8DZ2QWAgIBDw8WBB8FBSovbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTIuNDI1MDY3JmxuZz05LjY2NDIfA2dkZAIRDw8WAh8FBRovc2Vlay9uZWFyZXN0LmFzcHg/dT1Ub20wM2RkAhUPDxYCHwUFGy9zZWVrL25lYXJlc3QuYXNweD91bD1Ub20wM2RkAhkPZBYKAgMPDxYCHwUFVS9zZWVrL25lYXJlc3QuYXNweD90eD1hNWY2ZDBhZC1kMmYyLTQwMTEtOGMxNC05NDBhOWViZjNjNzQmbGF0PTUyLjQyNTA2NyZsbmc9OS42NjQyMDBkZAIFDw8WAh8FBVkvc2Vlay9uZWFyZXN0LmFzcHg/dHg9YTVmNmQwYWQtZDJmMi00MDExLThjMTQtOTQwYTllYmYzYzc0JmxhdD01Mi40MjUwNjcmbG5nPTkuNjY0MjAwJmY9MWRkAgkPDxYCHwUFLS9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuNDI1MDY3JmxuZz05LjY2NDIwMGRkAgsPDxYCHwUFMS9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuNDI1MDY3JmxuZz05LjY2NDIwMCZmPTFkZAIPDw8WAh8FBUdodHRwOi8vd3d3LndheW1hcmtpbmcuY29tL2RpcmVjdG9yeS5hc3B4P2Y9MSZsYXQ9NTIuNDI1MDY3Jmxvbj05LjY2NDIwMGRkAhsPFgIfA2hkAh8PDxYCHwUFJS9yZXZpZXdzL2hvdGVscy1jb29yZHMtNTIuNDI1MSw5LjY2NDJkZAIjD2QWAgIBDw8WBB8BBbQHPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTIuNDI1MDcmbG5nPTkuNjY0MiIgdGFyZ2V0PSJfYmxhbmsiPkdlb2NhY2hpbmcuY29tIE1hcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/cT1OKzUyJWMyJWIwKzI1LjUwNCtFKzAwOSVjMiViMCszOS44NTIrKEdDMkNKUEYpKyIgdGFyZ2V0PSJfYmxhbmsiPkdvb2dsZSBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWFwcXVlc3QuY29tL21hcHMvbWFwLmFkcD9zZWFyY2h0eXBlPWFkZHJlc3MmZm9ybXR5cGU9bGF0bG9uZyZsYXRsb25ndHlwZT1kZWNpbWFsJmxhdGl0dWRlPTUyLjQyNTA3JmxvbmdpdHVkZT05LjY2NDImem9vbT0xMCIgdGFyZ2V0PSJfYmxhbmsiPk1hcFF1ZXN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLnlhaG9vLmNvbS8jbGF0PTUyLjQyNTA3Jmxvbj05LjY2NDImem9vbT0xNiZxPTUyLjQyNTA3LDkuNjY0MiZjb25mPTEmc3RhcnQ9MSZtdnQ9bSZ0cmY9MCIgdGFyZ2V0PSJfYmxhbmsiPllhaG9v" />
+<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="IE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5iaW5nLmNvbS9tYXBzL2RlZmF1bHQuYXNweD92PTImbHZsPTE0JnNwPXBvaW50LjUyLjQyNTA3XzkuNjY0Ml9HQzJDSlBGIiB0YXJnZXQ9Il9ibGFuayI+QmluZyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmN5Y2xlbWFwLm9yZy8/em9vbT0xMiZsYXQ9NTIuNDI1MDcmbG9uPTkuNjY0MiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW4gQ3ljbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnLz9tbGF0PTUyLjQyNTA3Jm1sb249OS42NjQyJnpvb209MTIiIHRhcmdldD0iX2JsYW5rIj5PcGVuIFN0cmVldCBNYXBzPC9hPjwvbGk+HwNnZGQCJw9kFgYCAQ8WAh8BBRExMTUgTG9nZ2VkIFZpc2l0c2QCBw8PFgIfBQVDfi9zZWVrL2NhY2hlX2xvZ2Jvb2suYXNweD9ndWlkPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NmRkAgkPDxYEHwUFPX4vc2Vlay9nYWxsZXJ5LmFzcHg/Z3VpZD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYfAQUjVmlldyB0aGUgSW1hZ2UgR2FsbGVyeSBvZiAxNyBpbWFnZXNkZAIqDxYCHwEFBHRydWVkAisPFgIfAQVJbGF0PTUyLjQyNTA2NzsgbG5nPTkuNjY0MjsgZ3VpZD0nNzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JzsNCmQCLA8WAh8BBXF0cnkgeyBfZ2FxLnB1c2goWydfdHJhY2tFdmVudCcsICdHZW9jYWNoaW5nJywgJ0NhY2hlRGV0YWlsc01lbWJlclR5cGUnLCAnUHJlbWl1bScsIG51bGwsIHRydWVdKTsgfSBjYXRjaChlcnIpIHsgfWQCLg8WAh8DaGQCLw9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHw4CDxYeZg9kFgICAQ8PFggeD0NvbW1hbmRBcmd1bWVudAUFZW4tVVMeC0NvbW1hbmROYW1lBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2geEENhdXNlc1ZhbGlkYXRpb25oZGQCAQ9kFgICAQ8PFggfEwUFZGUtREUfFAUNU2V0VGVtcExvY2FsZR8BBQdEZXV0c2NoHxVoZGQCAg9kFgICAQ8PFggfEwUFZnItRlIfFAUNU2V0VGVtcExvY2FsZR8BBQlGcmFuw6dhaXMfFWhkZAIDD2QWAgIBDw8WCB8TBQVwdC1QVB8UBQ1TZXRUZW1wTG9jYWxlHwEFClBvcnR1Z3XDqnMfFWhkZAIED2QWAgIBDw8WCB8TBQVjcy1DWh8UBQ1TZXRUZW1wTG9jYWxlHwEFCcSMZcWhdGluYR8VaGRkAgUPZBYCAgEPDxYIHxMFBXN2LVNFHxQFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8VaGRkAgYPZBYCAgEPDxYIHxMFBW5sLU5MHxQFDVNldFRlbXBMb2NhbGUfAQUKTmVkZXJsYW5kcx8VaGRkAgcPZBYCAgEPDxYIHxMFBWNhLUVTHxQFDVNldFRlbXBMb2NhbGUfAQUHQ2F0YWzDoB8VaGRkAggPZBYCAgEPDxYIHxMFBXBsLVBMHxQFDVNldFRlbXBMb2NhbGUfAQUGUG9sc2tpHxVoZGQCCQ9kFgICAQ8PFggfEwUFZXQtRUUfFAUNU2V0VGVtcExvY2FsZR8BBQVFZXN0aR8VaGRkAgoPZBYCAgEPDxYIHxMFBW5iLU5PHxQFDVNldFRlbXBMb2NhbGUfAQUOTm9yc2ssIEJva23DpWwfFWhkZAILD2QWAgIBDw8WCB8TBQVrby1LUh8UBQ1TZXRUZW1wTG9jYWxlHwEFCe2VnOq1reyWtB8VaGRkAgwPZBYCAgEPDxYIHxMFBWVzLUVTHxQFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfFWhkZAIND2QWAgIBDw8WCB8TBQVodS1IVR8UBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8VaGRkAg4PZBYCAgEPDxYIHxMFBXJvLVJPHxQFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfFWhkZAIDDxYCHwEFK1NlcnZlcjogV0VCMjA7IEJ1aWxkOiBXZWIuSG90Rml4XzIwMTIwNjI3LjRkZGmw+iL7JJJY59IFQScFZyIud9To" />
</div>
<script type="text/javascript">
@@ -271,8 +271,8 @@ function __doPostBack(eventTarget, eventArgument) {
<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=5b3ltJXa0TSwEsvct1wCaBdn9Bo8N7FVqBNQM2YKqXbQHZWaMP-zx0K4z61uMiKeGNyKUpZuaFTNyOsj4Crx8g0LjQOUse6i-Eqw_GJBx8YviKwr2CJgL-aqZEI9VB_ltGTTIXy1yvHcnrnzhX2JlzaDqphWnKQvx4x3txaHfBNpRY5-4XH8vm4ONKceJIHIkX17AGlkUY7g_kHGaI-HyINE7lM1" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=WVHVdtd8gYJbLaxUtYeLUMrjCX5WOnJSGG26Gaj926DbjI4M9dAJHHwgJvtDecWibtIrrCOlzx5XFuwAs4BS93kYHTXkHDTnFSnIrC-WT6_zZ9eYJQp1WOdlrWXkXO3OMRuZgqsIFxsRcAMWhIqTcySwmxW4vOKHYRgHiJL-uf5jQFtm6x1ve6DY0mMD_ESerncSaCA1Cgsolch15ihMoZqpeqMbLrohVYz9U2hp6BsgAmTNK8OpwIv8KNbNZlhev6c03M5Fq7DYbtjNfcsFkibXxv5XkgR6tWfTJ0nbUMTZRfl2rS6acFF_SE_6Xq3gNDu-hn2gVSQQR60sIXvVO__s85ChXRXLZbUsbC_Dh_E0d_kJp1MkLd_v1YGKnSz_JyIuwDe9FNHlGLCElVL9TJU2IviQPhQVG_RvU0baAFL6jcHyEBNeIOCGTth06fgRUbpTyRW_Q5F9L1AY8waKiE6KbBQwR4M7__2CKI5x5oWQGzDPCGo_Q_FaDCORWqMNns5w1x4DtsX5kYEMpB6kXD-MOtq9iDhz8_7f8XUJPY7ZnCLAr2j8KPHVhvk0sPPniI9ISg3MMf9Dut2vXQv66CC4PRYZUILFl2bI-4md6Dvp6eNMnjPVzME44o1_KuuQmZhkDFiud1uACzvuDSX2TKQOuNOLShfUtc0Br1iW_HFokkRVYXUd1zroDosI81VOASmffpscQK7vVV8dk2R3I8kvWGMcnArgh_no7Z-3xP5azRP70" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=ANTY2fFVTdCBnBHOLd74WH8qIxEoKa5loZvqSDX0qfrPYlwzG7fdazPW4XgTSdBTL0taNZNA9lJ9_LL5Y6OMxdE8wy27wNkkj9c3THw5h5yf7K2H4JI2erFcY7bYJVFEitX2P8QZVXiMM1Hu_ocOF2m19w0-qnnVbCAi4gGR76WPplCK8_LARor44gr4y0tEqfZHmaNZwvPD-GY9gWmxGcN80_g1" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=gHhV_3Nllphm9Ge7JZuvsp-6qi7uWZDHeaBOjW5jTogLAz8WEel4pM_LAbuRdVqXKAp4WqNCm49Ibv_BS54Q-zQ3SE8sm5fkWXrDLC0gOR1KOW1zzeMJPCzaIwASRPgfLsGmz-j61eN7MaGhCd_2us_YiAYGtgKKWaJScV_0Jaw-Nu-gIM_inEDfUuK73C79UMvVBjzzRe4Cxv7Fivb6uQY9WKpaYye-o1a53IrhWGJsMpnn3cnrd0sk-fl0J64H_qfFu4FItsFrchizowvtBWdwDWQIKSWkCWnZ_sxNtlv-0O_q2tAS_CfoZyXRR0SttrQtS1OsgABAuWIcHhJzJNkAdBQZc1nw4JQZtlrYeQODk1U8iY9R4mU6BsO-s-3bH5kYH7hQ3xj27xGCk6ivveHkGZy8IpeMcoYVDQLDGJ8QtzCcDWNr12uwOw-2hvggpMI-WDp1p1OA9Lyltqd6DuPChrw-6sLw85fzlcymkCCNv7F0mMhS9V89c38eNlcnvQVm17pMyzI-zoIos0jPOSuWRgvh1C8kciSthsKUMPGMceRp2qyvhmAqWvskmQu9mU9BoI_lnC1pOLqjYwAhwsZDyMCUb5GSGWrK-7TfknHUYE3Dxb5Xl-mhBk3ziUeH3cs_75_doDYG0Hsj4D1cyjtlGrj-OoxR-3VdJ3mggY5kjV5RSdXOyx9Ub3RxX9bF9dEdqRgocbfieX_o9ow9FporIdB2TRPJt5mmhgX_4K0pWLKa0" type="text/javascript"></script>
<script src="js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
<script type="text/javascript">
@@ -311,7 +311,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div class="container">
<h1 class="Logo span-16">
- <a href="../default.aspx" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
+ <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
<div class="ProfileWidget span-8 last">
@@ -319,14 +319,14 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div id="ctl00_divSignedIn">
<p class="Avatar NoBottomSpacing">
- <a id="ctl00_hlHeaderAvatar" accesskey="p" title="Your Profile" href="../my/default.aspx"><img title="Your Profile" src="http://img.geocaching.com/user/avatar/50f83123-27d8-4dcf-9fde-2af006efaf2b.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/50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg" alt="" style="border-width:0px;" /></a></p>
<p class="SignedInText">
<strong>
Hello, <a href="/my/default.aspx" title="View Profile for blafoo" class="SignedInProfileLink">blafoo</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%3flog%3dy%26wp%3dGC2CJPF%26numlogs%3d35%26decrypt%3dy">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" /> 590&nbsp;&nbsp;&nbsp;<img src="/images/challenges/types/sm/challenge.png" title="Challenges Completed" /> 3</strong>
+ <img src="/images/icons/icon_smile.png" title="Caches Found" /> 626&nbsp;&nbsp;&nbsp;<img src="/images/challenges/types/sm/challenge.png" title="Challenges Completed" /> 3</strong>
</p>
@@ -339,20 +339,20 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<ul class="Menu">
<li>
- <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/default.aspx">Learn &#9660;</a>
+ <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/default.aspx">Geocaching 101</a></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=cat:newbies&amp;vid=-4VFeYZTTYs">Geocaching in 2 Minutes</a></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>
</li>
<li id="ctl00_liNavProfile">
- <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" title="[Your Profile ▼]" href="../my/default.aspx">Your Profile &#9660;</a>
+ <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" title="[Your Profile ▼]" href="../my/">Your Profile &#9660;</a>
<ul class="SubMenu">
<li>
- <a id="ctl00_hlSubNavQuickView" accesskey="p" title="Quick View" href="../my/default.aspx">Quick View</a></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">
@@ -362,45 +362,45 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<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=0564a940-8311-40ee-8e76-7e91b2cf6284">Yours</a>)</li>
<li>
- <a id="ctl00_hlSubNavPocketQueries" accesskey="9" title="Pocket Queries" href="../pocket/default.aspx">Pocket Queries</a></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/default.aspx">Account Details</a></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="default.aspx">Play &#9660;</a>
+ <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="default.aspx">Hide & Seek a Cache</a></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_hlSubNavChallenges" title="Find Challenges" href="../challenges/default.aspx">Find Challenges</a></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/default.aspx">Find Trackables</a></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>
</li>
<li>
- <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/default.aspx">Community &#9660;</a>
+ <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_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/default.aspx">Local Organizations</a></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/default.aspx">Discussion Forums</a></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/default.aspx">Events</a></li>
+ <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
</ul>
</li>
<li>
@@ -417,24 +417,24 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</ul>
</li>
<li>
- <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/default.aspx">Partnering &#9660;</a>
+ <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
<ul class="SubMenu">
<li>
- <a id="ctl00_hlSubNavTravel" title="Travel and Tourism" href="../travel/default.aspx">Travel and Tourism</a></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/default.aspx">Branded Promotions</a></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/default.aspx">Geocaching and Education</a></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/default.aspx">API Program</a></li>
+ <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/">API Program</a></li>
</ul>
</li>
<li>
- <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/default.aspx">Videos</a></li>
+ <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
<li>
- <a id="ctl00_hlNavFollowUs" title="Follow Us" href="../travel/default.aspx">Follow Us &#9660;</a>
+ <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>
@@ -521,19 +521,16 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div class="span-17 last BottomSpacing" id="cacheDetails">
<p class="cacheImage">
- <a href="/about/cache_types.aspx" target="_blank" title="About Cache Types"><img src="/images/WptTypes/3.gif" alt="Multi-cache" title="Multi-cache" width="32" height="32" /></a>
+ <a href="/about/cache_types.aspx" target="_blank" title="About Cache Types"><img src="/images/WptTypes/3.gif" alt="Multi-cache" title="Multi-cache" /></a>
</p>
<h2 class="NoBottomSpacing">
<span id="ctl00_ContentBody_CacheName">Kinderwald KiC</span></h2>
<div class="minorCacheDetails Clear">
<div id="ctl00_ContentBody_mcd1">
- A
- cache
- by <a href="http://www.geocaching.com/profile/?guid=9a28b2fb-bce9-481f-87bc-7c5f4bafe723&wid=73246a5a-ebb9-4d4f-8db9-a951036f5376&ds=2">Tom03</a></div>
+ A cache by <a href="http://www.geocaching.com/profile/?guid=9a28b2fb-bce9-481f-87bc-7c5f4bafe723&wid=73246a5a-ebb9-4d4f-8db9-a951036f5376&ds=2">Tom03</a></div>
<div id="ctl00_ContentBody_mcd2">
- Hidden
- :
+ Hidden:
31/07/2010
</div>
@@ -558,7 +555,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div id="ctl00_ContentBody_size" class="CacheSize span-9">
<p style="text-align: center;">
- Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/small.gif" alt="Size: Small" title="Size: Small" />&nbsp<small>(Small)</small></span></p>
+ Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/small.gif" alt="Size: small" title="Size: small" />&nbsp<small>(small)</small></span></p>
</div>
@@ -571,7 +568,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<a id="uxFavContainerLink" href="javascript:void(0);">
<div class="favorite-container">
<span class="favorite-value">
- 9</span><br />
+ 11</span><br />
Favorites
<img id="imgFavoriteArrow" src="/images/arrow-down.png" alt="Expand" title="Expand" />
</div>
@@ -802,7 +799,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
</div>
<p>
<span class="favorite-rank Clear">
- 21
+ 20
</span>
<a id="ctl00_ContentBody_hlFavoritePointsRemaining" href="/my/favorites.aspx">Favorite points remaining</a>
</p>
@@ -819,7 +816,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<div id="ctl00_ContentBody_pnlWatchedCount">
<p>
- <img src="/images/icons/icon_watchlist.gif" alt="Watching" /> 2 user(s) watching this cache.</p>
+ <img src="/images/icons/icon_watchlist.gif" alt="Watching" /> 3 user(s) watching this cache.</p>
</div>
@@ -850,7 +847,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<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='ffef5a9905a7476dbfb46b7c52acdf8f'" 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>
+ <span id="ctl00_ContentBody_ADModules_09"><iframe type="iframe" src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&SiteID=1&X='49ebeec423714aedaa8bff77a839d8ba'" 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>
@@ -1030,7 +1027,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<img width="16" height="16" src="/images/icons/icon_nocoords.jpg" alt="Hide Coordinates" title="Hide Coordinates" />
</td>
<td>
- <img src="http://www.geocaching.com/images/wpttypes/sm/flag.jpg" width="16" height="16" alt="Final Location" title="Final Location" />
+ <img width="16" height="16" src="http://www.geocaching.com/images/wpttypes/sm/flag.jpg" alt="Final Location" title="Final Location" />
</td>
<td>
<span id="awpt_FN">
@@ -1058,7 +1055,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
&nbsp;
</td>
<td>
- Note:
+ Note:
</td>
<td colspan="6">
@@ -1073,7 +1070,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<img width="16" height="16" src="/images/icons/icon_viewable.jpg" alt="Visible" title="Visible" />
</td>
<td>
- <img src="http://www.geocaching.com/images/wpttypes/sm/pkg.jpg" width="16" height="16" alt="Parking Area" title="Parking Area" />
+ <img width="16" height="16" src="http://www.geocaching.com/images/wpttypes/sm/pkg.jpg" alt="Parking Area" title="Parking Area" />
</td>
<td>
<span id="awpt_PK">
@@ -1101,7 +1098,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
&nbsp;
</td>
<td>
- Note:
+ Note:
</td>
<td colspan="6">
Kein "offizieller" Parkplatz, Parken trotzdem möglich.
@@ -1116,7 +1113,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<img width="16" height="16" src="/images/icons/icon_viewable.jpg" alt="Visible" title="Visible" />
</td>
<td>
- <img src="http://www.geocaching.com/images/wpttypes/sm/puzzle.jpg" width="16" height="16" alt="Question to Answer" title="Question to Answer" />
+ <img width="16" height="16" src="http://www.geocaching.com/images/wpttypes/sm/puzzle.jpg" alt="Question to Answer" title="Question to Answer" />
</td>
<td>
<span id="awpt_ST">
@@ -1144,7 +1141,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
&nbsp;
</td>
<td>
- Note:
+ Note:
</td>
<td colspan="6">
@@ -1159,7 +1156,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<img width="16" height="16" src="/images/icons/icon_viewable.jpg" alt="Visible" title="Visible" />
</td>
<td>
- <img src="http://www.geocaching.com/images/wpttypes/sm/waypoint.jpg" width="16" height="16" alt="Reference Point" title="Reference Point" />
+ <img width="16" height="16" src="http://www.geocaching.com/images/wpttypes/sm/waypoint.jpg" alt="Reference Point" title="Reference Point" />
</td>
<td>
<span id="awpt_WO">
@@ -1187,7 +1184,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
&nbsp;
</td>
<td>
- Note:
+ Note:
</td>
<td colspan="6">
Ehemalige Finallocation wo es gebrannt hat. Gleichzeitig netter Aussichtspunkt.
@@ -1358,13 +1355,13 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<div class="InformationWidget Clear">
<h3>
- 107 Logged Visits</h3>
+ 115 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" /> 88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_sad.gif" alt="Didn't find it" title="Didn't find it" /> 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_note.gif" alt="Write note" title="Write note" /> 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_disabled.gif" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_enabled.gif" alt="Enable Listing" title="Enable Listing" /> 2&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" /> 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_maint.gif" alt="Owner Maintenance" title="Owner Maintenance" /> 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
+ <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/icons/icon_smile.gif" alt="Found it" title="Found it" /> 95&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_sad.gif" alt="Didn't find it" title="Didn't find it" /> 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_note.gif" alt="Write note" title="Write note" /> 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_disabled.gif" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_enabled.gif" alt="Enable Listing" title="Enable Listing" /> 2&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" /> 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_maint.gif" alt="Owner Maintenance" title="Owner Maintenance" /> 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></span>
<p class="HalfLeft">
<a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=73246a5a-ebb9-4d4f-8db9-a951036f5376">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=73246a5a-ebb9-4d4f-8db9-a951036f5376">View the Image Gallery of 17 images</a>
</p>
@@ -1395,7 +1392,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
</div>
<p>
<small>
- Current Time: <time datetime="2012-05-24T12:05:43Z">05/24/2012 12:05:43 Pacific Daylight Time (19:05 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-05-20T19:11:44Z">2012-05-20T19:11:44Z</time> on 05/20/2012 12:11:44 Pacific Daylight Time (19:11 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2012-06-29T11:00:18Z">06/29/2012 11:00:18 Pacific Daylight Time (18:00 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-06-24T09:45:09Z">2012-06-24T09:45:09Z</time> on 06/24/2012 02:45:09 Pacific Daylight Time (09:45 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
@@ -1701,7 +1698,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
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. Your local volunteer reviewer will try to begin the review process within 3 days.</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) {
@@ -2235,7 +2232,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<li>
<a id="ctl00_hlFooterGlossary" title="Glossary of Terms" href="../about/glossary.aspx">Glossary of Terms</a></li>
<li>
- <a id="ctl00_hlFooterBrochures" title="Brochures" href="../tools/default.aspx#Guide">Brochures</a></li>
+ <a id="ctl00_hlFooterBrochures" title="Brochures" href="../tools/#Guide">Brochures</a></li>
<li>
<a id="ctl00_hlFooterAbout" title="About Groundspeak" href="../about/groundspeak.aspx">About Groundspeak</a></li>
<li>
@@ -2251,7 +2248,7 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
Press</strong></p>
<ul class="FooterLinks">
<li>
- <a id="ctl00_hlFooterNews" title="News Articles" href="../press/default.aspx">News Articles</a></li>
+ <a id="ctl00_hlFooterNews" title="News Articles" href="../press/">News Articles</a></li>
<li>
<a id="ctl00_hlFooterMediaFAQs" title="Media FAQs" rel="document" href="../articles/Brochures/footer/FAQ_Media.pdf">Media FAQs</a></li>
<li>
@@ -2269,11 +2266,11 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<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="../forums/default.aspx">Discussion Forums</a></li>
+ <a id="ctl00_hlFooterDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
<li>
- <a id="ctl00_hlFooterParksPoliceLink" title="Land Management and Law Enforcement" href="../parksandpolice/default.aspx">Land Management and Law&nbsp;Enforcement</a></li>
+ <a id="ctl00_hlFooterParksPoliceLink" title="Land Management and Law Enforcement" href="../parksandpolice/">Land Management and Law&nbsp;Enforcement</a></li>
<li>
- <a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/default.aspx">Contact Us</a></li>
+ <a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/">Contact Us</a></li>
</ul>
</div>
@@ -2285,11 +2282,11 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
Resources</strong></p>
<ul class="FooterLinks">
<li>
- <a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/default.aspx">Tools and Downloads</a></li>
+ <a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/">Tools and Downloads</a></li>
<li>
- <a id="ctl00_hlFooterAPIProgram" title="API Program" href="../live/default.aspx">API Program</a></li>
+ <a id="ctl00_hlFooterAPIProgram" title="API Program" href="../live/">API Program</a></li>
<li>
- <a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/default.aspx">Find a Benchmark</a></li>
+ <a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/">Find a Benchmark</a></li>
</ul>
</div>
@@ -2337,15 +2334,15 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span>
<script type="text/javascript">
//<![CDATA[
-var uvtoken = 'DbFDfIrSTaXyfNf74lbdopy%2bTw%2fC84Gn87pU%2b3r69toc4lYTKyii0cXY42BXT7amAeAEUCcV1MyzYH%2f69bWOOOYote45zRW9EHXySr3u9cB%2fu48h%2fwbI2IEpwRNAKzap6FqNlBTxoMfUERmiHsLTJgkNUY5oxlDotUbojZVWqiKLODYVMoSY%2bmihBBspGno8x0FNlzyRYveyrDO%2byQIDH%2fQpgC1aKYfkDnlRhVeQ%2b7c%2b3U29Zhy%2b0G2V9y%2b%2b3yski65Z3FiYzGvgh5KaQW1ZazQ4a%2bmRK%2bLufSTT%2f3PKc30OTWt6Hj%2fT70YChTgtsz8zY6SIx2wfEk8yeTlcsBh9KyZCOPInA2HJMeYNR3dovdqwj5psd9YC7Yl9pvgSFmpUPyg8sAZmnUdXNwa4zd6egNUdbOGeWIhry5dtThTshn8%3d';var isLoggedIn = true;
+var uvtoken = 'DbFDfIrSTaXyfNf74lbdopy%2bTw%2fC84Gn87pU%2b3r69toc4lYTKyii0cXY42BXT7amAeAEUCcV1MyzYH%2f69bWOOCT3lVgNkqI7LX41%2f6uS%2fvHnfUIkt9YZd1uX0lnER73Y3DFaoNNWoWAJUXe09c2TB3fW2cR%2b1hclXrKYy8QA4EE6XmOqyRpcSvHGA5Bq%2bBIsrccgfliYT877AtsU%2fwjPdjII3gLavzLMjF4wl5nB9hAhyqCcA8JqRp0aP5rGD9iywJpxSmBrvSeQqOt%2bEMIm5b1Lq1aCxLxirE51I8MwyoAYwXFdbC824azii9catj6HXiMXHKTwjM2jozHPLNv1dHzIFVnVvQTqBYgNZQyDOUpRSRqkd7o4xDYZmjvWd1LVUjqhnMU%2bpDpViYfh7ZJb5x9hGtbajDakhdPEbV8BzXI%3d';var isLoggedIn = true;
var userDefinedCoords = {"status":"success","data":{"isUserDefined":false,"oldLatLngDisplay":"N 52° 25.504' E 009° 39.852'"}};
cmapAdditionalWaypoints = [{"lat":52.42307,"lng":9.65038,"type":217,"name":"GC2CJPF Parking ( Parking Area )","pf":"PK"},{"lat":52.42507,"lng":9.6642,"type":218,"name":"GC2CJPF Start ( Question to Answer )","pf":"ST"},{"lat":52.4248,"lng":9.6572,"type":452,"name":"Aussichtspunkt ( Reference Point )","pf":"WO"}];
mapLatLng = {"lat":52.42507,"lng":9.6642,"type":3,"name":"Kinderwald KiC"};
var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"52.425067, 009.664200"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 52° 25' 30.241\" E 009° 39' 51.120\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"32U E 545164 N 5808524"}];
userInfo = {ID: 1912314};
-userToken = 'FOUTFKOKLELXOJAYT35WSZBNGADBNKFSYIMKJ2YI6247JORDCSRPR3LYUNKEOR2PQUOHC7OGY223V2X2ADNEDT25JD2QHOXIHYLH7J5XLOWJSK5WTLLQ5UJQMIZEGXYFSHPFRQQ5A374RP7GSKIVLW2RCI53UZFIABL6BZOMFKJVUGRZNB2WTXZKPVBKQDJB76DIMLU2RDXSEUU3TVVZX3HI4QOTNZDH5CM7WD6H2W6VDCX4ZAIA';
+userToken = 'FOUTFKOKLELXOJAYT35WSZBNGADBNKFSYIMKJ2YI6247JORDCSRPR3LYUNKEOR2PQUOHC7OGY223V2X2ADNEDT25JD2QHOXIHYLH7J5XLOWJSK5WTLLQ5UJQMIZEGXYFSHPFRQQ5A374RP7GSKIVLW2RCI53UZFIABL6BZOMFKJVUGRZNB2WTXZKPVBKQDJB76DIMLU2RDXSE5ZYJY4U36YJHH2UPPV4ZHIHI6F3HBKIS4IO2UDA';
includeAvatars = true;
-initalLogs = {"status":"success", "data": [{"LogID":235811065,"CacheID":1811409,"LogGuid":"f2ce71da-70ff-4fe5-a21e-b62305003fd2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Na, das war ja mal ein Spaß. Meine Freundin hat mich heute begleitet und war begeistert. Danke für diese tolle Runde durch den Wald.","Created":"20/05/2012","Visited":"20/05/2012","UserName":"coffee0815","MembershipLevel":1,"AccountID":1863358,"AccountGuid":"84841360-77f2-4c52-ba49-a278b5f63542","Email":"","AvatarImage":"7df8adda-c430-463f-9a82-c4afc449308b.jpg","GeocacheFindCount":1110,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[{"ImageID":14144569,"ImageGuid":"6785afa7-c606-4a0e-9ae8-98336f01b638","Name":"Kinderwald","Descr":"","FileName":"6785afa7-c606-4a0e-9ae8-98336f01b638.jpg","Created":"20/05/2012","LogID":235811065,"CacheID":1811409,"ImageUrl":null}]},{"LogID":231530286,"CacheID":1811409,"LogGuid":"8eb0b604-5ef7-4a57-a705-8a1d4ed1b494","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach der Pflege der chaches durch den Owner nun gut gefunden.<br />Danke","Created":"04/05/2012","Visited":"28/04/2012","UserName":"Fluti","MembershipLevel":1,"AccountID":5366533,"AccountGuid":"63f7ba3b-a343-43eb-b5a7-eb022b79d5c8","Email":"","AvatarImage":"","GeocacheFindCount":131,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":229810425,"CacheID":1811409,"LogGuid":"d511c614-da66-4add-a3fb-b99e366eb6cb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute hat's endlich geklappt. Beim letzten Mal war die Villa leider zerstört. Undich muss zugeben, dass ich \"F\" ausgerechnet habe; die Fähre hat doch zu sehr gewackelt. So war zusammen mit Fluti der Final schnell gefunden. <br /><br />Out: Coin, die hier nicht geloggt war<br /><br />DFDC<br />holgi30926","Created":"28/04/2012","Visited":"28/04/2012","UserName":"holgi30926","MembershipLevel":3,"AccountID":2098710,"AccountGuid":"096bdcf2-2a4c-41f7-991c-909ac1ce6f66","Email":"","AvatarImage":"","GeocacheFindCount":1470,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":228572473,"CacheID":1811409,"LogGuid":"e58e81c4-0ad4-40de-aa22-4f03562cbb69","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute haben wir uns im Kinderwald aufgehalten und diesen nebenbei erledigt. Im Sommer ist der Staudamm sicherlich ein Highlight, ein Glück haben die Kids diesen heute übersehen - das Wetter war wirklich nicht nach Baden...<br />Danke für die Runde sagt der Dimple!","Created":"22/04/2012","Visited":"22/04/2012","UserName":"dimple_roeder","MembershipLevel":3,"AccountID":946162,"AccountGuid":"1ef681aa-3544-49ae-b46c-e8e5004f7601","Email":"","AvatarImage":"","GeocacheFindCount":473,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":228454374,"CacheID":1811409,"LogGuid":"246620dc-357e-4017-9535-c27bcb249aea","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"heute auf unserer \"Hunderunde\" bei echtem \"Mischwetter\" gefunden und geloggt!Hatten viel Spaß dabei, natürlich allem voran Sohnemann beim Zählen, Klettern, Floß fahren und Bockspringen!<br />DFDC <img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" />","Created":"22/04/2012","Visited":"22/04/2012","UserName":"Teammafia","MembershipLevel":1,"AccountID":4813789,"AccountGuid":"d783c930-1907-41e3-b5f1-21e40d117082","Email":"","AvatarImage":"527ed6ab-ac74-49e5-a4c3-16ea57bbc508.jpg","GeocacheFindCount":129,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":227775349,"CacheID":1811409,"LogGuid":"931d3d21-cc12-4270-8b8c-a8b736735d42","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Diese kleine lässt sich auch gut mit dem Kinderwagen erledigen. Wir kommen wieder, wenn unsere Kleine größer ist. TFTC","Created":"19/04/2012","Visited":"19/04/2012","UserName":"hofoen","MembershipLevel":1,"AccountID":3776133,"AccountGuid":"78a812dc-caeb-45f3-b25e-17320cfcd89c","Email":"","AvatarImage":"","GeocacheFindCount":356,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":226738109,"CacheID":1811409,"LogGuid":"24224b6f-ab25-45d4-9c79-03bcdca82f08","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"sehr schöne stationen - hat uns sehr viel spaß gemacht.<br />katha und dirk sagen danke!<br />dfdc heidefink","Created":"15/04/2012","Visited":"15/04/2012","UserName":"Heidefink","MembershipLevel":1,"AccountID":5606942,"AccountGuid":"ef10618f-03ed-4ba9-b012-980ade021ebd","Email":"","AvatarImage":"","GeocacheFindCount":34,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":226471149,"CacheID":1811409,"LogGuid":"04787cef-535c-42ef-8481-66bc4656dbe5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Kindergeburtstag ab in den Wald.<br /><br />Schönes fleckchen. Der Cache hat Spaß gemacht!<br /><br />Vielen Dank,<br /><br />Fxboarder","Created":"14/04/2012","Visited":"13/04/2012","UserName":"Fxboarder","MembershipLevel":1,"AccountID":2240431,"AccountGuid":"963fb506-4f05-425d-9334-c3a9aa75ae6d","Email":"","AvatarImage":"8cefae8a-191b-4ae8-a467-007404fa245b.jpg","GeocacheFindCount":85,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":231872584,"CacheID":1811409,"LogGuid":"9b6b5c72-9b7c-4a0c-8dac-55f03635f2aa","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"zusammen mit tigerente83 auf runde gegangen.dfdc","Created":"05/05/2012","Visited":"11/04/2012","UserName":"dieStahmi`s","MembershipLevel":1,"AccountID":5709955,"AccountGuid":"90be5fae-f5c5-4811-949d-b7752b46d972","Email":"","AvatarImage":"","GeocacheFindCount":22,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":225919337,"CacheID":1811409,"LogGuid":"c8905510-727a-4cbc-b7d5-fe3961cb5ccb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"die stahmis waren in hannover zu besuch. da musste natürlich ein cache her. einer der kindgerecht ist, das passt super. also sind wir gemeinsam mit den stahmis losgezogen. geparkt hatten wir am anderen ende des waldes, aber das laufen bei so schönem wetter machte uns ja nichts aus. dann ging es los. auch wir erwachsenen fühlten uns hier im kinderwald pudelwohl. leider mussten wir feststellen, dass die seilfähre keine erwachsenen personen aushält..... :))) es hat riesig spaß gemacht einen so tollen ort kennengelernt zu haben. dfdc","Created":"12/04/2012","Visited":"11/04/2012","UserName":"tigerente83","MembershipLevel":3,"AccountID":2311284,"AccountGuid":"15a4b180-780b-4cd9-91e0-f84416b80092","Email":"","AvatarImage":"ba1922cb-5dad-4ecc-8927-ac97e5c98628.jpg","GeocacheFindCount":317,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225305148,"CacheID":1811409,"LogGuid":"22096f48-a969-4eaa-b2db-21d759cf21b2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Jau gut gefunden bei schönem norddeutschem Schietwetter. Danke für den Cache. Hat Spaß gemacht.","Created":"09/04/2012","Visited":"09/04/2012","UserName":"Nite74","MembershipLevel":3,"AccountID":3835615,"AccountGuid":"e5e42073-2ce3-4370-8d8e-97623bf1b24a","Email":"","AvatarImage":"66bdf1e5-671e-4faa-a2f2-1796b54d9e30.jpg","GeocacheFindCount":1396,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225559034,"CacheID":1811409,"LogGuid":"860ee9e1-f481-4ceb-ba4e-c6437b3afd25","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"DFDC","Created":"10/04/2012","Visited":"06/04/2012","UserName":"Papa Bär","MembershipLevel":1,"AccountID":5688435,"AccountGuid":"67bd1445-f51d-499d-9a23-a4826a10d833","Email":"","AvatarImage":"","GeocacheFindCount":13,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":223893771,"CacheID":1811409,"LogGuid":"2bfe7d4d-f3fe-4fd9-abca-c78ee68bcea1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Fahrradtour mit der Familie. <br />Schöner Cache. Danke ;)","Created":"06/04/2012","Visited":"06/04/2012","UserName":"Mr. Smile","MembershipLevel":1,"AccountID":5610631,"AccountGuid":"4f858b39-b923-4013-9359-49c0e546a6ca","Email":"","AvatarImage":"","GeocacheFindCount":66,"GeocacheHideCount":0,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":220995647,"CacheID":1811409,"LogGuid":"9868a139-cdd8-48a7-8bc2-5daabe0b6b49","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"ein schöner nachmittagsspaziergang , gekrönt durch den cache für papa ;)<br />die stationen sind gut gewählt, hat spass gemacht tftc","Created":"25/03/2012","Visited":"25/03/2012","UserName":"nick3r","MembershipLevel":1,"AccountID":5123678,"AccountGuid":"290f218f-2139-4ab1-9777-d57014c3e763","Email":"","AvatarImage":"","GeocacheFindCount":125,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":218288422,"CacheID":1811409,"LogGuid":"c52facc4-1cda-4644-8ca3-3ea7b6633ce6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute mit Sohnemann diesen schönen Cache gesucht<br />und nach etwas Hilfe von Robotec (der auch mit Nachwuchs unterwegs war) geloggt.<br />Vielen Dank für das nette Gespräch.<br /><br />DFDC.","Created":"13/03/2012","Visited":"11/03/2012","UserName":"birdiegolfer23","MembershipLevel":3,"AccountID":5467285,"AccountGuid":"c42188ca-89f1-4855-98d4-e647b6b16094","Email":"","AvatarImage":"","GeocacheFindCount":62,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":217800041,"CacheID":1811409,"LogGuid":"c7a637a2-e5bf-48ad-84e7-343c98757fbd","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Diesen super tollen Cache hab ich heute mit meinem CoCacher gefunden.....<br />und dabei noch die \"Birdiegolfer23\" getroffen. <br />Cachergrüße und happy Caching........<br /><br />Robotec","Created":"11/03/2012","Visited":"11/03/2012","UserName":"Robotec","MembershipLevel":1,"AccountID":126000,"AccountGuid":"3e192c0b-5f73-4ed7-bd81-6c1880240fc2","Email":"","AvatarImage":"","GeocacheFindCount":1266,"GeocacheHideCount":14,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":221032149,"CacheID":1811409,"LogGuid":"f2691dfc-8803-47c7-b1b2-9a58755bbd85","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Auf dem Rückweg vom eigentlichen Nachtcache, haben wir uns dann auch gern noch dem Kinderwald gewidmet. Leider war keine Seilfähre da, so dass uns DIESER Spaß versagt bliebt. Hat dennoch Spaß gemacht, dfdC.","Created":"25/03/2012","Visited":"09/03/2012","UserName":"HaSeesel","MembershipLevel":3,"AccountID":2708159,"AccountGuid":"c13d03e5-9ecf-41ed-a908-02c25efcaa7f","Email":"","AvatarImage":"6c542347-f20a-42d1-8ebb-cf02796ebdd4.jpg","GeocacheFindCount":1259,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":217367331,"CacheID":1811409,"LogGuid":"e701e9a2-a93b-4e8f-a8ab-1eb482ca1775","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Als kleines Add-on mitgenommen, nachdem wir den in der näheliegenden NC gemacht hatten.","Created":"10/03/2012","Visited":"09/03/2012","UserName":"Schakedimes","MembershipLevel":3,"AccountID":2382924,"AccountGuid":"28ad4c8c-761b-4f0d-9599-defe47f35a13","Email":"","AvatarImage":"ea77e92b-b00f-4790-8fd1-e6be5e1e13db.jpg","GeocacheFindCount":1104,"GeocacheHideCount":0,"ChallengesCompleted":22,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":217315187,"CacheID":1811409,"LogGuid":"1383a593-c477-41ac-b701-13c0691a87a9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Den haben wir (Rasenhasen,HaSeesel,Schakedimes et moi) fix noch als Nachtcache auf dem Rückweg gemacht. Alles gut und schnell gefunden, dfdC!","Created":"09/03/2012","Visited":"09/03/2012","UserName":"eiendjee","MembershipLevel":3,"AccountID":3414541,"AccountGuid":"6106d2d5-ef32-4427-a651-4bfdcb20934c","Email":"","AvatarImage":"b7da7cde-60f4-443b-9b59-a15dee0301a1.jpg","GeocacheFindCount":1703,"GeocacheHideCount":8,"ChallengesCompleted":16,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":217308134,"CacheID":1811409,"LogGuid":"80172472-0b5f-4925-8276-32747e9d3497","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"auf nächtlicher Runde haben wir diesen noch mitgenommen. Danke dafür.","Created":"09/03/2012","Visited":"09/03/2012","UserName":"RasenHasen","MembershipLevel":3,"AccountID":3517737,"AccountGuid":"d3db6f42-0766-4edb-bd2a-5ce5f9012b38","Email":"","AvatarImage":"b9f820e1-3e03-4d45-bf41-91e09da94cf8.jpg","GeocacheFindCount":805,"GeocacheHideCount":0,"ChallengesCompleted":17,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":214911725,"CacheID":1811409,"LogGuid":"e7dec4b1-cbfc-4e0e-94ab-3308871fa7ac","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"zusammen mit PoLiDiS gesucht und gefunden...","Created":"26/02/2012","Visited":"26/02/2012","UserName":"LeonBer","MembershipLevel":1,"AccountID":1307086,"AccountGuid":"52a3156d-a119-43ab-9bbe-cde0ddb38dbc","Email":"","AvatarImage":"","GeocacheFindCount":325,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[{"ImageID":13242991,"ImageGuid":"918f931a-c491-4222-b55f-5895fe038269","Name":"WP_000223","Descr":"","FileName":"918f931a-c491-4222-b55f-5895fe038269.jpg","Created":"26/02/2012","LogID":214911725,"CacheID":1811409,"ImageUrl":null}]},{"LogID":214874459,"CacheID":1811409,"LogGuid":"130942e4-5b09-4cba-9c1c-9a7c82171f8f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"sehr viel Interessantes gelernt. Das Wetter hat auch mit gespielt...<br /><br />DFDC","Created":"26/02/2012","Visited":"26/02/2012","UserName":"PoliDis","MembershipLevel":1,"AccountID":3934256,"AccountGuid":"6738c0fc-b042-4312-8c75-04016efee18a","Email":"","AvatarImage":"5adae921-fb15-4ab3-9710-e5101650bbe0.jpg","GeocacheFindCount":41,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[{"ImageID":13241492,"ImageGuid":"e4de21cb-6437-4ed0-a04a-37dc62abe6a1","Name":"Kinderwald","Descr":"","FileName":"e4de21cb-6437-4ed0-a04a-37dc62abe6a1.jpg","Created":"26/02/2012","LogID":214874459,"CacheID":1811409,"ImageUrl":null}]},{"LogID":213437802,"CacheID":1811409,"LogGuid":"00aa71e9-ab74-47b3-a786-b65a1261f44c","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute bei leichtem Regen diesen tollen Cache gut gefunden.Alle Stationen sind gut zu finden.Ja da möchte man nochmal Kind sein toller Platz für die Großen und kleinen Kinder.<br /><br />Danke für den Cache.<br /><br />Bis denne Norbi.","Created":"19/02/2012","Visited":"19/02/2012","UserName":"Norbi","MembershipLevel":3,"AccountID":554812,"AccountGuid":"22c6850b-44ef-4837-9966-6c15a2ed9ccc","Email":"","AvatarImage":"09d2770a-b562-4191-ab8e-8bc8a10d2a76.jpg","GeocacheFindCount":1246,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210544989,"CacheID":1811409,"LogGuid":"c3e61373-8bfd-486a-bd29-756ea2525645","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"-4°C. Aber ein sehr schöner Spaziergang und unsere kleinen hatten bei der klirrenden Kälte auch ohne Seilfähre ihren Spaß.<br />Eine sehr aufwendige Arbeit, die von jedem geschätzt werden sollte. <br />DFDC<br />A.Meise<br /><br />TB-Drop","Created":"29/01/2012","Visited":"29/01/2012","UserName":"a.meise","MembershipLevel":3,"AccountID":1405245,"AccountGuid":"df13f5d1-0d3a-49eb-a41d-725bb1664a88","Email":"","AvatarImage":"2ad84894-cb7c-4595-ac1e-1711873d0ca2.jpg","GeocacheFindCount":177,"GeocacheHideCount":6,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":208289692,"CacheID":1811409,"LogGuid":"4bbce528-844a-41c8-a881-160f9d5abeb2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Hallo :-)<br />Danke für diesen schönen Cache !!!<br />War ja auch eine kleine Zeitreise in meine Kindheit obwohl es ja damals den Kinderwald noch nicht gab.<br />Es gab trotzdem viele \"Abenteuer\" im Forst ;-)<br />Jendopa","Created":"15/01/2012","Visited":"14/01/2012","UserName":"Jendopa","MembershipLevel":1,"AccountID":4179363,"AccountGuid":"16f7dc47-cdb7-464d-b8fe-85e4f979ac5a","Email":"","AvatarImage":"","GeocacheFindCount":45,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 107, "rows": 107 } };
+initalLogs = {"status":"success", "data": [{"LogID":244104601,"CacheID":1811409,"LogGuid":"a3ac5579-94f0-413f-bb43-24a687a594e8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Lustig gewesen :)","Created":"24/06/2012","Visited":"23/06/2012","UserName":"submersus","MembershipLevel":1,"AccountID":5865540,"AccountGuid":"f3dcd7f1-0645-4322-a1db-e5c1d3629cac","Email":"","AvatarImage":"","GeocacheFindCount":1,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":243027211,"CacheID":1811409,"LogGuid":"02c6075a-c79f-4a24-b32b-0d00994e3852","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute bei sonnigem Wetter zusammen mit Flitze71 und Pammi72<br />den Kinderwald unsicher gemacht. :-)<br />Lustiger Multi der richtig Spaß gemacht hat.<br />DFDC","Created":"18/06/2012","Visited":"18/06/2012","UserName":"Schnuffi06","MembershipLevel":1,"AccountID":3710551,"AccountGuid":"fabfb0e6-28be-4e2f-9742-cfaf4e2eac72","Email":"","AvatarImage":"","GeocacheFindCount":130,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":243023271,"CacheID":1811409,"LogGuid":"bf235b98-43a8-4e6a-84ef-2c30708b5733","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Zusammen mit Schnuffi06 und Flitze71 einen schönen Tag im Kinderwald verbracht.<br />Diesen schönen Multi genutzt um den Park kennenzulernen.<br />DFDC","Created":"18/06/2012","Visited":"18/06/2012","UserName":"Pammi72","MembershipLevel":1,"AccountID":3710542,"AccountGuid":"d711eeaf-0238-4b2a-9497-c43fb07a1ed4","Email":"","AvatarImage":"","GeocacheFindCount":124,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":243021332,"CacheID":1811409,"LogGuid":"bc1335ba-0f67-47e1-ac5b-1b2ecec324a1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute zusammen mit Pammi72 und Schnuffi06 bei sommerlichem Wetter<br />den Kinderwald besucht. Der Cache eignet sich klasse um sich die Gegend<br />wirklich genau anzusehen. Wir hatten unseren Spaß im Kinderwald und mit diesem Cache.<br />DFDC<br /><br />out: Coin<br />in: Fav.Point","Created":"18/06/2012","Visited":"18/06/2012","UserName":"Flitze71","MembershipLevel":3,"AccountID":3694466,"AccountGuid":"36a6599b-b866-4841-8ce1-d8ce9cd5d88b","Email":"","AvatarImage":"2d9fc76f-1e7c-4714-9b50-24a333e050cb.jpg","GeocacheFindCount":1019,"GeocacheHideCount":0,"ChallengesCompleted":4,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":242750801,"CacheID":1811409,"LogGuid":"79807be9-0f96-414b-9a27-e3fd3938f549","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Das war richtig lustig, als Gast hatten wir Opa mit, nachdem unser Sohn noch zweifelte wie man dort wohl trocken rüber kommt, stieg Opa schon auf und ziemlich schnell auch wieder ab, von wegen nasse Füsse, das war weit mehr. Zum Glück war es warm und Opa hielt auch mit nasser Jeans bis zum Schluss durch. Mit triefenden Schuhen gings dann aber mit dem Fahrrad zurück, na ja fast, noch ein kurzer Zwischenstop an der Torwand, man trifft übrigens auch mit nassen Schuhen.<br />Schön gemachter Cache, hier waren wir in Kindergartenzeiten und auch mit der Grundschule das lezte mal. Von uns gibt es einen Favouritenpunkt.","Created":"17/06/2012","Visited":"17/06/2012","UserName":"flecki1","MembershipLevel":3,"AccountID":4110776,"AccountGuid":"31d92d97-022d-4238-8c2a-3c4fcf28d128","Email":"","AvatarImage":"480cfb25-3f69-494b-86b5-0212cb6e2b33.jpg","GeocacheFindCount":384,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":242142641,"CacheID":1811409,"LogGuid":"1aabd37f-8f66-466d-96e7-4dd20fc33170","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"icon_note.gif","LogText":"ich habe noch was abgelegt","Created":"15/06/2012","Visited":"02/06/2012","UserName":"A Backenhörnchen","MembershipLevel":3,"AccountID":3092779,"AccountGuid":"6fa924e7-e655-40d3-81b0-152dd5620f49","Email":"","AvatarImage":"904d24a2-343d-4204-8f92-40ad1bd90871.jpg","GeocacheFindCount":1836,"GeocacheHideCount":19,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":242142405,"CacheID":1811409,"LogGuid":"f527d546-7ae5-4274-9dd1-f020e26e7da2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Musikkatze sucht einen \"Kindercache\" und das Backenhörnchen war dabei :-)","Created":"15/06/2012","Visited":"02/06/2012","UserName":"A Backenhörnchen","MembershipLevel":3,"AccountID":3092779,"AccountGuid":"6fa924e7-e655-40d3-81b0-152dd5620f49","Email":"","AvatarImage":"904d24a2-343d-4204-8f92-40ad1bd90871.jpg","GeocacheFindCount":1836,"GeocacheHideCount":19,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":239255282,"CacheID":1811409,"LogGuid":"16e51eac-036f-4046-93ba-8afdb0268981","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"An einem Tag, der etwas schöner ist kann man sich schon mal nasse Füsse holen. <img src=\"/images/icons/icon_smile_blackeye.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" /><br /><br />Mit dem Backenhörnchen eine schöne kleine Runde durch den Kinderwald gemacht und viel gelacht. Erst recht als ich mit Schuhen und Hose bis zu den Unterschenkeln im Wasser stand. Es watschte dann die restliche Runde so schön in den Schuhen. <br /><br />musikkatze sagt TFTC","Created":"03/06/2012","Visited":"02/06/2012","UserName":"musikkatze","MembershipLevel":3,"AccountID":2740299,"AccountGuid":"8374f1fd-89b5-4882-8c85-38b671734aa6","Email":"","AvatarImage":"512d00ee-6505-4918-b409-5dfd2c5e41e2.jpg","GeocacheFindCount":1775,"GeocacheHideCount":3,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":235811065,"CacheID":1811409,"LogGuid":"f2ce71da-70ff-4fe5-a21e-b62305003fd2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Na, das war ja mal ein Spaß. Meine Freundin hat mich heute begleitet und war begeistert. Danke für diese tolle Runde durch den Wald.","Created":"20/05/2012","Visited":"20/05/2012","UserName":"coffee0815","MembershipLevel":1,"AccountID":1863358,"AccountGuid":"84841360-77f2-4c52-ba49-a278b5f63542","Email":"","AvatarImage":"7df8adda-c430-463f-9a82-c4afc449308b.jpg","GeocacheFindCount":1175,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[{"ImageID":14144569,"ImageGuid":"6785afa7-c606-4a0e-9ae8-98336f01b638","Name":"Kinderwald","Descr":"","FileName":"6785afa7-c606-4a0e-9ae8-98336f01b638.jpg","Created":"20/05/2012","LogID":235811065,"CacheID":1811409,"ImageUrl":null}]},{"LogID":231530286,"CacheID":1811409,"LogGuid":"8eb0b604-5ef7-4a57-a705-8a1d4ed1b494","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach der Pflege der chaches durch den Owner nun gut gefunden.<br />Danke","Created":"04/05/2012","Visited":"28/04/2012","UserName":"Fluti","MembershipLevel":1,"AccountID":5366533,"AccountGuid":"63f7ba3b-a343-43eb-b5a7-eb022b79d5c8","Email":"","AvatarImage":"","GeocacheFindCount":176,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":229810425,"CacheID":1811409,"LogGuid":"d511c614-da66-4add-a3fb-b99e366eb6cb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute hat's endlich geklappt. Beim letzten Mal war die Villa leider zerstört. Undich muss zugeben, dass ich \"F\" ausgerechnet habe; die Fähre hat doch zu sehr gewackelt. So war zusammen mit Fluti der Final schnell gefunden. <br /><br />Out: Coin, die hier nicht geloggt war<br /><br />DFDC<br />holgi30926","Created":"28/04/2012","Visited":"28/04/2012","UserName":"holgi30926","MembershipLevel":3,"AccountID":2098710,"AccountGuid":"096bdcf2-2a4c-41f7-991c-909ac1ce6f66","Email":"","AvatarImage":"","GeocacheFindCount":1549,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":228572473,"CacheID":1811409,"LogGuid":"e58e81c4-0ad4-40de-aa22-4f03562cbb69","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute haben wir uns im Kinderwald aufgehalten und diesen nebenbei erledigt. Im Sommer ist der Staudamm sicherlich ein Highlight, ein Glück haben die Kids diesen heute übersehen - das Wetter war wirklich nicht nach Baden...<br />Danke für die Runde sagt der Dimple!","Created":"22/04/2012","Visited":"22/04/2012","UserName":"dimple_roeder","MembershipLevel":3,"AccountID":946162,"AccountGuid":"1ef681aa-3544-49ae-b46c-e8e5004f7601","Email":"","AvatarImage":"","GeocacheFindCount":491,"GeocacheHideCount":9,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":228454374,"CacheID":1811409,"LogGuid":"246620dc-357e-4017-9535-c27bcb249aea","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"heute auf unserer \"Hunderunde\" bei echtem \"Mischwetter\" gefunden und geloggt!Hatten viel Spaß dabei, natürlich allem voran Sohnemann beim Zählen, Klettern, Floß fahren und Bockspringen!<br />DFDC <img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" />","Created":"22/04/2012","Visited":"22/04/2012","UserName":"Teammafia","MembershipLevel":3,"AccountID":4813789,"AccountGuid":"d783c930-1907-41e3-b5f1-21e40d117082","Email":"","AvatarImage":"527ed6ab-ac74-49e5-a4c3-16ea57bbc508.jpg","GeocacheFindCount":138,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":227775349,"CacheID":1811409,"LogGuid":"931d3d21-cc12-4270-8b8c-a8b736735d42","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Diese kleine lässt sich auch gut mit dem Kinderwagen erledigen. Wir kommen wieder, wenn unsere Kleine größer ist. TFTC","Created":"19/04/2012","Visited":"19/04/2012","UserName":"hofoen","MembershipLevel":1,"AccountID":3776133,"AccountGuid":"78a812dc-caeb-45f3-b25e-17320cfcd89c","Email":"","AvatarImage":"","GeocacheFindCount":414,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":226738109,"CacheID":1811409,"LogGuid":"24224b6f-ab25-45d4-9c79-03bcdca82f08","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"sehr schöne stationen - hat uns sehr viel spaß gemacht.<br />katha und dirk sagen danke!<br />dfdc heidefink","Created":"15/04/2012","Visited":"15/04/2012","UserName":"Heidefink","MembershipLevel":1,"AccountID":5606942,"AccountGuid":"ef10618f-03ed-4ba9-b012-980ade021ebd","Email":"","AvatarImage":"","GeocacheFindCount":35,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":226471149,"CacheID":1811409,"LogGuid":"04787cef-535c-42ef-8481-66bc4656dbe5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Kindergeburtstag ab in den Wald.<br /><br />Schönes fleckchen. Der Cache hat Spaß gemacht!<br /><br />Vielen Dank,<br /><br />Fxboarder","Created":"14/04/2012","Visited":"13/04/2012","UserName":"Fxboarder","MembershipLevel":1,"AccountID":2240431,"AccountGuid":"963fb506-4f05-425d-9334-c3a9aa75ae6d","Email":"","AvatarImage":"8cefae8a-191b-4ae8-a467-007404fa245b.jpg","GeocacheFindCount":85,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":231872584,"CacheID":1811409,"LogGuid":"9b6b5c72-9b7c-4a0c-8dac-55f03635f2aa","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"zusammen mit tigerente83 auf runde gegangen.dfdc","Created":"05/05/2012","Visited":"11/04/2012","UserName":"dieStahmi`s","MembershipLevel":1,"AccountID":5709955,"AccountGuid":"90be5fae-f5c5-4811-949d-b7752b46d972","Email":"","AvatarImage":"","GeocacheFindCount":22,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":225919337,"CacheID":1811409,"LogGuid":"c8905510-727a-4cbc-b7d5-fe3961cb5ccb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"die stahmis waren in hannover zu besuch. da musste natürlich ein cache her. einer der kindgerecht ist, das passt super. also sind wir gemeinsam mit den stahmis losgezogen. geparkt hatten wir am anderen ende des waldes, aber das laufen bei so schönem wetter machte uns ja nichts aus. dann ging es los. auch wir erwachsenen fühlten uns hier im kinderwald pudelwohl. leider mussten wir feststellen, dass die seilfähre keine erwachsenen personen aushält..... :))) es hat riesig spaß gemacht einen so tollen ort kennengelernt zu haben. dfdc","Created":"12/04/2012","Visited":"11/04/2012","UserName":"tigerente83","MembershipLevel":3,"AccountID":2311284,"AccountGuid":"15a4b180-780b-4cd9-91e0-f84416b80092","Email":"","AvatarImage":"ba1922cb-5dad-4ecc-8927-ac97e5c98628.jpg","GeocacheFindCount":357,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225305148,"CacheID":1811409,"LogGuid":"22096f48-a969-4eaa-b2db-21d759cf21b2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Jau gut gefunden bei schönem norddeutschem Schietwetter. Danke für den Cache. Hat Spaß gemacht.","Created":"09/04/2012","Visited":"09/04/2012","UserName":"Nite74","MembershipLevel":3,"AccountID":3835615,"AccountGuid":"e5e42073-2ce3-4370-8d8e-97623bf1b24a","Email":"","AvatarImage":"66bdf1e5-671e-4faa-a2f2-1796b54d9e30.jpg","GeocacheFindCount":1416,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225559034,"CacheID":1811409,"LogGuid":"860ee9e1-f481-4ceb-ba4e-c6437b3afd25","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"DFDC","Created":"10/04/2012","Visited":"06/04/2012","UserName":"Papa Bär","MembershipLevel":1,"AccountID":5688435,"AccountGuid":"67bd1445-f51d-499d-9a23-a4826a10d833","Email":"","AvatarImage":"","GeocacheFindCount":13,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":223893771,"CacheID":1811409,"LogGuid":"2bfe7d4d-f3fe-4fd9-abca-c78ee68bcea1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Fahrradtour mit der Familie. <br />Schöner Cache. Danke ;)","Created":"06/04/2012","Visited":"06/04/2012","UserName":"Mr. Smile","MembershipLevel":1,"AccountID":5610631,"AccountGuid":"4f858b39-b923-4013-9359-49c0e546a6ca","Email":"","AvatarImage":"","GeocacheFindCount":67,"GeocacheHideCount":0,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":220995647,"CacheID":1811409,"LogGuid":"9868a139-cdd8-48a7-8bc2-5daabe0b6b49","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"ein schöner nachmittagsspaziergang , gekrönt durch den cache für papa ;)<br />die stationen sind gut gewählt, hat spass gemacht tftc","Created":"25/03/2012","Visited":"25/03/2012","UserName":"nick3r","MembershipLevel":1,"AccountID":5123678,"AccountGuid":"290f218f-2139-4ab1-9777-d57014c3e763","Email":"","AvatarImage":"","GeocacheFindCount":126,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":218288422,"CacheID":1811409,"LogGuid":"c52facc4-1cda-4644-8ca3-3ea7b6633ce6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute mit Sohnemann diesen schönen Cache gesucht<br />und nach etwas Hilfe von Robotec (der auch mit Nachwuchs unterwegs war) geloggt.<br />Vielen Dank für das nette Gespräch.<br /><br />DFDC.","Created":"13/03/2012","Visited":"11/03/2012","UserName":"birdiegolfer23","MembershipLevel":3,"AccountID":5467285,"AccountGuid":"c42188ca-89f1-4855-98d4-e647b6b16094","Email":"","AvatarImage":"","GeocacheFindCount":64,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":217800041,"CacheID":1811409,"LogGuid":"c7a637a2-e5bf-48ad-84e7-343c98757fbd","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Diesen super tollen Cache hab ich heute mit meinem CoCacher gefunden.....<br />und dabei noch die \"Birdiegolfer23\" getroffen. <br />Cachergrüße und happy Caching........<br /><br />Robotec","Created":"11/03/2012","Visited":"11/03/2012","UserName":"Robotec","MembershipLevel":1,"AccountID":126000,"AccountGuid":"3e192c0b-5f73-4ed7-bd81-6c1880240fc2","Email":"","AvatarImage":"","GeocacheFindCount":1266,"GeocacheHideCount":14,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":221032149,"CacheID":1811409,"LogGuid":"f2691dfc-8803-47c7-b1b2-9a58755bbd85","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Auf dem Rückweg vom eigentlichen Nachtcache, haben wir uns dann auch gern noch dem Kinderwald gewidmet. Leider war keine Seilfähre da, so dass uns DIESER Spaß versagt bliebt. Hat dennoch Spaß gemacht, dfdC.","Created":"25/03/2012","Visited":"09/03/2012","UserName":"HaSeesel","MembershipLevel":3,"AccountID":2708159,"AccountGuid":"c13d03e5-9ecf-41ed-a908-02c25efcaa7f","Email":"","AvatarImage":"6c542347-f20a-42d1-8ebb-cf02796ebdd4.jpg","GeocacheFindCount":1313,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 115, "rows": 115 } };
//]]>
</script>
</form>
@@ -2560,6 +2557,6 @@ initalLogs = {"status":"success", "data": [{"LogID":235811065,"CacheID":1811409,
</div>
<!-- End Quantcast tag -->
- <!-- Server: WEB15; Build: Web.HotFix_20120523.2 -->
+ <!-- Server: WEB20; Build: Web.HotFix_20120627.4 -->
</body>
</html>
diff --git a/tests/src/cgeo/geocaching/test/mock/GC2CJPF.java b/tests/src/cgeo/geocaching/test/mock/GC2CJPF.java
index 1ea749a..40bc0da 100644
--- a/tests/src/cgeo/geocaching/test/mock/GC2CJPF.java
+++ b/tests/src/cgeo/geocaching/test/mock/GC2CJPF.java
@@ -37,12 +37,12 @@ public class GC2CJPF extends MockedCache {
}
@Override
- public String getOwner() {
+ public String getOwnerDisplayName() {
return "Tom03";
}
@Override
- public String getOwnerReal() {
- return getOwner();
+ public String getOwnerUserId() {
+ return getOwnerDisplayName();
}
@Override
diff --git a/tests/src/cgeo/geocaching/test/mock/GC2JVEH.html b/tests/src/cgeo/geocaching/test/mock/GC2JVEH.html
index b85436a..ebf846c 100644
--- a/tests/src/cgeo/geocaching/test/mock/GC2JVEH.html
+++ b/tests/src/cgeo/geocaching/test/mock/GC2JVEH.html
@@ -244,8 +244,8 @@
<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="/wEPDwUKMjEwMzIwMDYxOA8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE5OTc1OTcWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYQAgUPFgIfAWRkAggPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvNTBmODMxMjMtMjdkOC00ZGNmLTlmZGUtMmFmMDA2ZWZhZjJiLmpwZ2RkAgMPFgIfAQVoSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIGJsYWZvbyIgY2xhc3M9IlNpZ25lZEluUHJvZmlsZUxpbmsiPmJsYWZvbzwvYT5kAgUPDxYCHgtOYXZpZ2F0ZVVybAWtAWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmbG9nJTNkeSUyNndwJTNkR0MySlZFSCUyNm51bWxvZ3MlM2QzNSUyNmRlY3J5cHQlM2R5ZGQCCw8WAh8BBasBPGltZyBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9zbWlsZS5wbmciIHRpdGxlPSJDYWNoZXMgRm91bmQiIC8+IDU5MCZuYnNwOyZuYnNwOyZuYnNwOzxpbWcgc3JjPSIvaW1hZ2VzL2NoYWxsZW5nZXMvdHlwZXMvc20vY2hhbGxlbmdlLnBuZyIgdGl0bGU9IkNoYWxsZW5nZXMgQ29tcGxldGVkIiAvPiAzZAINDxYCHwNnFgICDQ8PFgIfBQVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTA1NjRhOTQwLTgzMTEtNDBlZS04ZTc2LTdlOTFiMmNmNjI4NGRkAhAPDxYCHwNnZGQCLA9kFgICAw8WAh8DaGQCLQ8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYyAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0MySlZFSGRkAgIPFgIfAQW1ATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy84LmdpZiIgYWx0PSJVbmtub3duIENhY2hlIiB0aXRsZT0iVW5rbm93biBDYWNoZSIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiAvPjwvYT5kAgUPZBYCAgEPFgIfAQUBQWQCBg9kFgQCAQ8WAh8DZ2QCBw8WAh8DaGQCCw9kFgQCAQ8WAh8BBQIzOWQCAw8PFgIfBQVEL3NlZWsvY2FjaGVfZmF2b3JpdGVkLmFzcHg/Z3VpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjVkZAINDw8WAh8DaGRkAg4PFgQfAQVLPHAgY2xhc3M9Ildhcm5pbmcgTm9Cb3R0b21TcGFjaW5nIj5UaGlzIGlzIGEgUHJlbWl1bSBNZW1iZXIgT25seSBjYWNoZS48L3A+HwNnZAIQDxYCHwNoZAIRDxYCHwNoZAISD2QWDAIDDxYCHgVzdHlsZQUPZGlzcGxheTppbmxpbmU7FgICAQ8WAh8BBRtVVE06IDMyVSBFIDU1MDA2MyBOIDU4MDI2OTZkAg0PDxYCHwUFM2NkcGYuYXNweD9ndWlkPTA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNWRkAg8PDxYCHwUFOGNkcGYuYXNweD9ndWlkPTA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNSZsYz01ZGQCEQ8PFgIfBQU5Y2RwZi5hc3B4P2d1aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1JmxjPTEwZGQCEw8PFgQfBQWOAWh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9NTIuNDE2Miw5LjU5NDExNyAoSG9tZSBMb2NhdGlvbikmZGFkZHI9NTIuMzcyMjUsOS43MzUzNjcoQXVmK2RlbitTcHVyZW4rZGVzK0luZGlhbmVyK0pvbmVzK1RlaWwrMSkeBlRhcmdldAUGX2JsYW5rZGQCGw9kFggCAQ8PFgQeCUZvcmVDb2xvcgweBF8hU0ICBGRkAgMPDxYEHwkMHwoCBGRkAgUPDxYCHwNnFgIeB29uY2xpY2sFO3MyZ3BzKCcwNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjUnKTtyZXR1cm4gZmFsc2U7ZAIHDw8WAh8DZxYCHwsFIHMycGhvbmUoJ0dDMkpWRUgnKTtyZXR1cm4gZmFsc2U7ZAIUDxYCHwNnFgICAw8WAh8BBVRTZWVsaWcgc2luZCBkaWUgQmFybWhlcnppZ2VuLCBkZW5uIHNpZSB3ZXJkZW4gQmFybWhlcnppZ2tlaXQgZXJsYW5nZW4gR2FydGVuZnJpZWRob2ZkAhcPZBYIZg8WAh8DaGQCAQ8PFgIfA2hkZAICDw8WAh8DaGRkAgMPFgIfA2hkAhgPZBYCAgMPDxYCHwEFE05vIGhpbnRzIGF2YWlsYWJsZS4WAh8LBQ1yZXR1cm4gZmFsc2U7ZAIZDxYCHwNoZAIcDxYCHwNoZAIeDxYCHwNnZAIfDxYCHwNoZAIiD2QWAgIBD2QWBAIBDw8WAh8BBf8DPGlmcmFtZSB0eXBlPSJpZnJhbWUiIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0JlNpdGVJRD0xJlg9J2MyMTRlYjg4OGZmMTRmNDU5ZWFhYWU5NTNhMGM0NWMzJyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIE1hcmdpbndpZHRoPSIwIiBNYXJnaW5oZWlnaHQ9IjAiIEhzcGFjZT0iMCIgVnNwYWNlPSIwIiBGcmFtZWJvcmRlcj0iMCIgU2Nyb2xsaW5nPSJubyIgc3R5bGU9IndpZHRoOjEyMHB4O0hlaWdodDoyNDBweDsiPjxhIGhyZWY9Imh0dHA6Ly9hZHMuZ3JvdW5kc3BlYWsuY29tL2EuYXNweD9ab25lSUQ9OSZUYXNrPUNsaWNrJjtNb2RlPUhUTUwmU2l0ZUlEPTEiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9R2V0Jk1vZGU9SFRNTCZTaXRlSUQ9MSIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyNDAiIGJvcmRlcj0iMCIgYWx0PSIiIC8+PC9hPjwvaWZyYW1lPmRkAgMPFgIeCWlubmVyaHRtbAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJg9kFgYCBQ8WAh4LXyFJdGVtQ291bnQCARYCAgEPZBYCZg8VA1ZodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3RyYWNrL2RldGFpbHMuYXNweD9ndWlkPWUzMjkxOWQzLWViOTUtNGQwMy1hNmM0LWQwYWRmZmY5Nzg2NTNodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS8yMS5naWYVSWNodGh5b3NhdXJ1cyBIdW1lcnVzZAIJDw8WAh8DZ2QWAgIBDw8WBB8BBRNWaWV3IGFsbCBUcmFja2FibGVzHwUFSX4vdHJhY2svc2VhcmNoLmFzcHg/d2lkPTA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNSZjY2lkPTE5OTc1OTdkZAILDw8WAh8FBTx+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjVkZAInDw8WAh8DZ2QWAmYPFgIfDQIDFgYCAQ9kFgRmDxUDAFdodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD03NjBlYjMxNC04MzhkLTRhZmMtYWE1Yi00NWIyMjEyZWU0OWMNVDUgYWJzb2x2aWVydGQCAg8VAkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9NWM0YjA5MTUtNWNlYy00ZmExLThhZmQtNGIzY2E2N2UwMDRlB2thaTI3MDdkAgIPZBYEZg8VAw5BbHRlcm5hdGluZ1Jvd1dodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD0wYTJlNGIzMi0xMWNkLTRlNDYtYjUyYi1hZmE2YmZjODRkZDIEVG9Eb2QCAg8V" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="AkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9ODIyYzBmZWItNGRkMC00MzE4LTliZGYtZWExOTc2NDE5M2E4BkguV2FpaWQCAw9kFgRmDxUDAFdodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD04MzAxNjJjMi03MmRlLTQ4NzYtYmYyMi0yNDRkNTlmOGJhMjcbRGllc2Ugc2luZCBub2NoIGYmIzIyODtsbGlnZAICDxUCTGh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD1mM2I5ZTYwOS02MzNiLTQzYWYtOWUzNC0xZjhmNTRiODZhOWUGY2Vld2VlZAIoDw8WAh8DZ2QWAmYPFgIfDQIBFgICAQ9kFgRmDxUDAFdodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD04YTNmMjE0OC0zNWVjLTQzYjYtOGU2NS0wNzc2MGU5YTZlZDIKVG9EbyYjMzk7c2QCAg8VAkxodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9MDU2NGE5NDAtODMxMS00MGVlLThlNzYtN2U5MWIyY2Y2Mjg0BmJsYWZvb2QCKQ9kFhYCAQ8PFgIfA2hkZAIDD2QWAgIBDw8WAh8FBUUvaGlkZS93cHRsaXN0LmFzcHg/UmVmV3B0SUQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1JkRTPTFkZAIHDw8WBh4GUkRTLklECyl2R3JvdW5kc3BlYWsuV2ViLkdQWC5XcHREYXRhU291cmNlcywgVHVjc29uLkNvbW1vbi5MZWdhY3ksIFZlcnNpb249My4wLjQ1MjYuMjIxNjYsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAEeB1JXUFQuSUQoKwQHMTk5NzU5Nx8DaGRkAgkPDxYCHwNnZBYCAgEPDxYEHwUFKy9tYXAvZGVmYXVsdC5hc3B4P2xhdD01Mi4zNzIyNSZsbmc9OS43MzUzNjcfA2dkZAIRDw8WAh8FBSIvc2Vlay9uZWFyZXN0LmFzcHg/dT1pbmRpYW5lcmpvbmVzZGQCFQ8PFgIfBQUjL3NlZWsvbmVhcmVzdC5hc3B4P3VsPWluZGlhbmVyam9uZXNkZAIZD2QWCgIDDw8WAh8FBVUvc2Vlay9uZWFyZXN0LmFzcHg/dHg9NDA4NjE4MjEtMTgzNS00ZTExLWI2NjYtOGQ0MTA2NGQwM2ZlJmxhdD01Mi4zNzIyNTAmbG5nPTkuNzM1MzY3ZGQCBQ8PFgIfBQVZL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTQwODYxODIxLTE4MzUtNGUxMS1iNjY2LThkNDEwNjRkMDNmZSZsYXQ9NTIuMzcyMjUwJmxuZz05LjczNTM2NyZmPTFkZAIJDw8WAh8FBS0vc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTUyLjM3MjI1MCZsbmc9OS43MzUzNjdkZAILDw8WAh8FBTEvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTUyLjM3MjI1MCZsbmc9OS43MzUzNjcmZj0xZGQCDw8PFgIfBQVHaHR0cDovL3d3dy53YXltYXJraW5nLmNvbS9kaXJlY3RvcnkuYXNweD9mPTEmbGF0PTUyLjM3MjI1MCZsb249OS43MzUzNjdkZAIbDxYCHwNoZAIfDw8WAh8FBSUvcmV2aWV3cy9ob3RlbHMtY29vcmRzLTUyLjM3MjMsOS43MzU0ZGQCIw9kFgICAQ8PFgQfAQW7BzxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL21hcC9kZWZhdWx0LmFzcHg/bGF0PTUyLjM3MjI1JmxuZz05LjczNTM3IiB0YXJnZXQ9Il9ibGFuayI+R2VvY2FjaGluZy5jb20gTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPU4rNTIlYzIlYjArMjIuMzM1K0UrMDA5JWMyJWIwKzQ0LjEyMisoR0MySlZFSCkrIiB0YXJnZXQ9Il9ibGFuayI+R29vZ2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vbWFwcy9tYXAuYWRwP3NlYXJjaHR5cGU9YWRkcmVzcyZmb3JtdHlwZT1sYXRsb25nJmxhdGxvbmd0eXBlPWRlY2ltYWwmbGF0aXR1ZGU9NTIuMzcyMjUmbG9uZ2l0dWRlPTkuNzM1Mzcmem9vbT0xMCIgdGFyZ2V0PSJfYmxhbmsiPk1hcFF1ZXN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLnlhaG9vLmNvbS8jbGF0PTUyLjM3MjI1Jmxvbj05LjczNTM3Jnpvb209MTYmcT01Mi4zNzIyNSw5LjczNTM3JmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuNTIuMzcyMjVfOS43MzUzN19HQzJKVkVIIiB0YXJnZXQ9Il9ibGFuayI+QmluZyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmN5Y2xlbWFwLm9yZy8/em9vbT0xMiZsYXQ9NTIuMzcyMjUmbG9uPTkuNzM1MzciIHRhcmdldD0iX2JsYW5rIj5PcGVuIEN5Y2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8/bWxhdD01Mi4zNzIyNSZtbG9uPTkuNzM1Mzcmem9vbT0xMiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW4gU3RyZWV0IE1hcHM8L2E+PC9saT4fA2dkZAInD2QWBgIBDxYCHwEFEDk1IExvZ2dlZCBWaXNpdHNkAgcPDxYCHwUFQ34vc2Vlay9jYWNoZV9sb2dib29rLmFzcHg/Z3VpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjVkZAIJDw8WBB8FBT1+L3NlZWsvZ2FsbGVyeS5hc3B4P2d1aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1HwEFIlZpZXcgdGhlIEltYWdlIEdhbGxlcnkgb2YgMyBpbWFnZXNkZAIqDxYCHwEFBHRydWVkAisPFgIfAQVKbGF0PTUyLjM3MjI1OyBsbmc9OS43MzUzNjc7IGd1aWQ9JzA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNSc7DQpkAiwPFgIfAQVxdHJ5IHsgX2dhcS5wdXNoKFsnX3RyYWNrRXZlbnQnLCAnR2VvY2FjaGluZycsICdDYWNoZURldGFpbHNNZW1iZXJUeXBlJywgJ1ByZW1pdW0nLCBudWxsLCB0cnVlXSk7IH0gY2F0Y2goZXJyKSB7IH1kAi4PFgIfA2hkAi8PZBYEAgEPFgIfAQUHRW5nbGlzaGQCAw8WAh8NAg8WHmYPZBYCAgEPDxYIHg9Db21tYW5kQXJndW1lbnQFBWVuLVVTHgtDb21tYW5kTmFtZQUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHhBDYXVzZXNWYWxpZGF0aW9uaGRkAgEPZBYCAgEPDxYIHxAFBWRlLURFHxEFDVNldFRlbXBMb2NhbGUfAQUHRGV1dHNjaB8SaGRkAgIPZBYCAgEPDxYIHxAFBWZyLUZSHxEFDVNldFRlbXBMb2NhbGUfAQUJRnJhbsOnYWlzHxJoZGQCAw9kFgICAQ8PFggfEAUFcHQtUFQfEQUNU2V0VGVtcExvY2FsZR8BBQpQb3J0dWd1w6pzHxJoZGQCBA9kFgICAQ8PFggfEAUFY3MtQ1ofEQUNU2V0VGVtcExvY2FsZR8BBQnEjGXFoXRpbmEfEmhkZAIFD2QWAgIBDw8WCB8QBQVzdi1TRR8RBQ1TZXRUZW1wTG9jYWxlHwEFB1N2ZW5za2EfEmhkZAIGD2QWAgIBDw8WCB8QBQVubC1OTB8RBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfEmhkZAIHD2QWAgIBDw8WCB8QBQVjYS1FUx8RBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfEmhkZAIID2QWAgIBDw8WCB8QBQVwbC1QTB8RBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8SaGRkAgkPZBYCAgEPDxYIHxAFBWV0LUVFHxEFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfEmhkZAIKD2QWAgIBDw8WCB8QBQVuYi1OTx8RBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHxJoZGQCCw9kFgICAQ8PFggfEAUFa28tS1IfEQUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfEmhkZAIMD2QWAgIBDw8WCB8QBQVlcy1FUx8RBQ1TZXRUZW1wTG9jYWxlHwEFCEVzcGHDsW9sHxJoZGQCDQ9kFgICAQ8PFggfEAUFaHUtSFUfEQUNU2V0VGVtcExvY2FsZR8BBQZNYWd5YXIfEmhkZAIOD2QWAgIBDw8WCB8QBQVyby1STx8RBQ1TZXRUZW1wTG9jYWxlHwEFCFJvbcOibsSDHxJoZGQCAw8WAh8BBStTZXJ2ZXI6IFdFQjE1OyBCdWlsZDogV2ViLkhvdEZpeF8yMDEyMDUyMy4yZGTOcyneXKyMbBOvW6h5LmlRV5cIBw==" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTI5ODA0Nzc1OQ8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE5OTc1OTcWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMiBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhoPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIbDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCIA8WAh4HVmlzaWJsZWhkAgEPZBYQAgUPFgIfAWRkAggPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvNTBmODMxMjMtMjdkOC00ZGNmLTlmZGUtMmFmMDA2ZWZhZjJiLmpwZ2RkAgMPFgIfAQVoSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIGJsYWZvbyIgY2xhc3M9IlNpZ25lZEluUHJvZmlsZUxpbmsiPmJsYWZvbzwvYT5kAgUPDxYCHgtOYXZpZ2F0ZVVybAWtAWh0dHBzOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2xvZ2luL2RlZmF1bHQuYXNweD9SRVNFVD1ZJnJlZGlyPWh0dHAlM2ElMmYlMmZ3d3cuZ2VvY2FjaGluZy5jb20lMmZzZWVrJTJmY2FjaGVfZGV0YWlscy5hc3B4JTNmbG9nJTNkeSUyNndwJTNkR0MySlZFSCUyNm51bWxvZ3MlM2QzNSUyNmRlY3J5cHQlM2R5ZGQCCw8WAh8BBasBPGltZyBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9zbWlsZS5wbmciIHRpdGxlPSJDYWNoZXMgRm91bmQiIC8+IDYyNiZuYnNwOyZuYnNwOyZuYnNwOzxpbWcgc3JjPSIvaW1hZ2VzL2NoYWxsZW5nZXMvdHlwZXMvc20vY2hhbGxlbmdlLnBuZyIgdGl0bGU9IkNoYWxsZW5nZXMgQ29tcGxldGVkIiAvPiAzZAINDxYCHwNnFgICDQ8PFgIfBQVAfi90cmFjay9zZWFyY2guYXNweD9vPTEmdWlkPTA1NjRhOTQwLTgzMTEtNDBlZS04ZTc2LTdlOTFiMmNmNjI4NGRkAhAPDxYCHwNnZGQCLA9kFgICAw8WAh8DaGQCLQ8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYwAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0MySlZFSGRkAgIPFgIfAQWeATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy84LmdpZiIgYWx0PSJVbmtub3duIENhY2hlIiB0aXRsZT0iVW5rbm93biBDYWNoZSIgLz48L2E+ZAIGD2QWBAIBDxYCHwNnZAIGDxYCHwNoZAILD2QWBAIBDxYCHwEFAjQ0ZAIFDw8WAh8FBUQvc2Vlay9jYWNoZV9mYXZvcml0ZWQuYXNweD9ndWlkPTA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNWRkAg0PDxYCHwNoZGQCDg8WBB8BBUs8cCBjbGFzcz0iV2FybmluZyBOb0JvdHRvbVNwYWNpbmciPlRoaXMgaXMgYSBQcmVtaXVtIE1lbWJlciBPbmx5IGNhY2hlLjwvcD4fA2dkAhAPFgIfA2hkAhEPFgIfA2hkAhIPZBYMAgMPFgIeBXN0eWxlBQ9kaXNwbGF5OmlubGluZTsWAgIBDxYCHwEFG1VUTTogMzJVIEUgNTUwMDYzIE4gNTgwMjY5NmQCDQ8PFgIfBQUzY2RwZi5hc3B4P2d1aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1ZGQCDw8PFgIfBQU4Y2RwZi5hc3B4P2d1aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1JmxjPTVkZAIRDw8WAh8FBTljZHBmLmFzcHg/Z3VpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjUmbGM9MTBkZAITDw8WBB8FBY4BaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP2Y9ZCZobD1lbiZzYWRkcj01Mi40MTYyLDkuNTk0MTE3IChIb21lIExvY2F0aW9uKSZkYWRkcj01Mi4zNzIyNSw5LjczNTM2NyhBdWYrZGVuK1NwdXJlbitkZXMrSW5kaWFuZXIrSm9uZXMrVGVpbCsxKR4GVGFyZ2V0BQZfYmxhbmtkZAIbD2QWCAIBDw8WBB4JRm9yZUNvbG9yDB4EXyFTQgIEZGQCAw8PFgQfCQwfCgIEZGQCBQ8PFgIfA2cWAh4Hb25jbGljawU7czJncHMoJzA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNScpO3JldHVybiBmYWxzZTtkAgcPDxYCHwNnFgIfCwUgczJwaG9uZSgnR0MySlZFSCcpO3JldHVybiBmYWxzZTtkAhQPFgIfA2cWAgIDDxYCHwEFVFNlZWxpZyBzaW5kIGRpZSBCYXJtaGVyemlnZW4sIGRlbm4gc2llIHdlcmRlbiBCYXJtaGVyemlna2VpdCBlcmxhbmdlbiBHYXJ0ZW5mcmllZGhvZmQCFw9kFghmDxYCHwNoZAIBDw8WAh8DaGRkAgIPDxYCHwNoZGQCAw8WAh8DaGQCGA9kFgICAw8PFgIfAQUTTm8gaGludHMgYXZhaWxhYmxlLhYCHwsFDXJldHVybiBmYWxzZTtkAhkPFgIfA2hkAhwPFgIfA2hkAh4PFgIfA2dkAh8PFgIfA2hkAiIPZBYCAgEPZBYEAgEPDxYCHwEF/wM8aWZyYW1lIHR5cGU9ImlmcmFtZSIgc3JjPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1HZXQmU2l0ZUlEPTEmWD0nOTIxYTcyZjg0NTA1NGUzNGJmNGE1ZjMwNmZmNjU1MmInIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjI0MCIgTWFyZ2lud2lkdGg9IjAiIE1hcmdpbmhlaWdodD0iMCIgSHNwYWNlPSIwIiBWc3BhY2U9IjAiIEZyYW1lYm9yZGVyPSIwIiBTY3JvbGxpbmc9Im5vIiBzdHlsZT0id2lkdGg6MTIwcHg7SGVpZ2h0OjI0MHB4OyI+PGEgaHJlZj0iaHR0cDovL2Fkcy5ncm91bmRzcGVhay5jb20vYS5hc3B4P1pvbmVJRD05JlRhc2s9Q2xpY2smO01vZGU9SFRNTCZTaXRlSUQ9MSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwOi8vYWRzLmdyb3VuZHNwZWFrLmNvbS9hLmFzcHg/Wm9uZUlEPTkmVGFzaz1HZXQmTW9kZT1IVE1MJlNpdGVJRD0xIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjI0MCIgYm9yZGVyPSIwIiBhbHQ9IiIgLz48L2E+PC9pZnJhbWU+ZGQCAw8WAh4JaW5uZXJodG1sBRNBZHZlcnRpc2luZyB3aXRoIFVzZAImD2QWBgIFDxYCHgtfIUl0ZW1Db3VudAIBFgICAQ9kFgJmDxUDVmh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vdHJhY2svZGV0YWlscy5hc3B4P2d1aWQ9ZTMyOTE5ZDMtZWI5NS00ZDAzLWE2YzQtZDBhZGZmZjk3ODY1M2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtLzIxLmdpZhVJY2h0aHlvc2F1cnVzIEh1bWVydXNkAgkPDxYCHwNnZBYCAgEPDxYEHwEFE1ZpZXcgYWxsIFRyYWNrYWJsZXMfBQVJfi90cmFjay9zZWFyY2guYXNweD93aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1JmNjaWQ9MTk5NzU5N2RkAgsPDxYCHwUFPH4vdHJhY2svc2VhcmNoLmFzcHg/d2lkPTA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNWRkAicPDxYCHwNnZBYCZg8WAh8NAgMWBgIBD2QWBGYPFQMAV2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTc2MGViMzE0LTgzOGQtNGFmYy1hYTViLTQ1YjIyMTJlZTQ5Yw1UNSBhYnNvbHZpZXJ0ZAICDxUCTGh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD01YzRiMDkxNS01Y2VjLTRmYTEtOGFmZC00YjNjYTY3ZTAwNGUHa2FpMjcwN2QCAg9kFgRmDxUDDkFsdGVybmF0aW5nUm93V2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTBhMmU0YjMyLTExY2QtNGU0Ni1iNTJiLWFmYTZiZmM4NGRkMgRUb0RvZAICDxUCTGh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3Vp" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="ZD04MjJjMGZlYi00ZGQwLTQzMTgtOWJkZi1lYTE5NzY0MTkzYTgGSC5XYWlpZAIDD2QWBGYPFQMAV2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTgzMDE2MmMyLTcyZGUtNDg3Ni1iZjIyLTI0NGQ1OWY4YmEyNxtEaWVzZSBzaW5kIG5vY2ggZiYjMjI4O2xsaWdkAgIPFQJMaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPWYzYjllNjA5LTYzM2ItNDNhZi05ZTM0LTFmOGY1NGI4NmE5ZQZjZWV3ZWVkAigPDxYCHwNnZBYCZg8WAh8NAgEWAgIBD2QWBGYPFQMAV2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPThhM2YyMTQ4LTM1ZWMtNDNiNi04ZTY1LTA3NzYwZTlhNmVkMgpUb0RvJiMzOTtzZAICDxUCTGh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD0wNTY0YTk0MC04MzExLTQwZWUtOGU3Ni03ZTkxYjJjZjYyODQGYmxhZm9vZAIpD2QWFgIBDw8WAh8DaGRkAgMPZBYCAgEPDxYCHwUFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjUmRFM9MWRkAgcPDxYGHgZSRFMuSUQLKXZHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNzb24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDU2MS4yNjQxNiwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAcxOTk3NTk3HwNoZGQCCQ8PFgIfA2dkFgICAQ8PFgQfBQUrL21hcC9kZWZhdWx0LmFzcHg/bGF0PTUyLjM3MjI1JmxuZz05LjczNTM2Nx8DZ2RkAhEPDxYCHwUFIi9zZWVrL25lYXJlc3QuYXNweD91PWluZGlhbmVyam9uZXNkZAIVDw8WAh8FBSMvc2Vlay9uZWFyZXN0LmFzcHg/dWw9aW5kaWFuZXJqb25lc2RkAhkPZBYKAgMPDxYCHwUFVS9zZWVrL25lYXJlc3QuYXNweD90eD00MDg2MTgyMS0xODM1LTRlMTEtYjY2Ni04ZDQxMDY0ZDAzZmUmbGF0PTUyLjM3MjI1MCZsbmc9OS43MzUzNjdkZAIFDw8WAh8FBVkvc2Vlay9uZWFyZXN0LmFzcHg/dHg9NDA4NjE4MjEtMTgzNS00ZTExLWI2NjYtOGQ0MTA2NGQwM2ZlJmxhdD01Mi4zNzIyNTAmbG5nPTkuNzM1MzY3JmY9MWRkAgkPDxYCHwUFLS9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuMzcyMjUwJmxuZz05LjczNTM2N2RkAgsPDxYCHwUFMS9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuMzcyMjUwJmxuZz05LjczNTM2NyZmPTFkZAIPDw8WAh8FBUdodHRwOi8vd3d3LndheW1hcmtpbmcuY29tL2RpcmVjdG9yeS5hc3B4P2Y9MSZsYXQ9NTIuMzcyMjUwJmxvbj05LjczNTM2N2RkAhsPFgIfA2hkAh8PDxYCHwUFJS9yZXZpZXdzL2hvdGVscy1jb29yZHMtNTIuMzcyMyw5LjczNTRkZAIjD2QWAgIBDw8WBB8BBbsHPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTIuMzcyMjUmbG5nPTkuNzM1MzciIHRhcmdldD0iX2JsYW5rIj5HZW9jYWNoaW5nLmNvbSBNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9Tis1MiVjMiViMCsyMi4zMzUrRSswMDklYzIlYjArNDQuMTIyKyhHQzJKVkVIKSsiIHRhcmdldD0iX2JsYW5rIj5Hb29nbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm1hcHF1ZXN0LmNvbS9tYXBzL21hcC5hZHA/c2VhcmNodHlwZT1hZGRyZXNzJmZvcm10eXBlPWxhdGxvbmcmbGF0bG9uZ3R5cGU9ZGVjaW1hbCZsYXRpdHVkZT01Mi4zNzIyNSZsb25naXR1ZGU9OS43MzUzNyZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NTIuMzcyMjUmbG9uPTkuNzM1Mzcmem9vbT0xNiZxPTUyLjM3MjI1LDkuNzM1MzcmY29uZj0xJnN0YXJ0PTEmbXZ0PW0mdHJmPTAiIHRhcmdldD0iX2JsYW5rIj5ZYWhvbyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmluZy5jb20vbWFwcy9kZWZhdWx0LmFzcHg/dj0yJmx2bD0xNCZzcD1wb2ludC41Mi4zNzIyNV85LjczNTM3X0dDMkpWRUgiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD01Mi4zNzIyNSZsb249OS43MzUzNyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW4gQ3ljbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnLz9tbGF0PTUyLjM3MjI1Jm1sb249OS43MzUzNyZ6b29tPTEyIiB0YXJnZXQ9Il9ibGFuayI+T3BlbiBTdHJlZXQgTWFwczwvYT48L2xpPh8DZ2RkAicPZBYGAgEPFgIfAQURMTAxIExvZ2dlZCBWaXNpdHNkAgcPDxYCHwUFQ34vc2Vlay9jYWNoZV9sb2dib29rLmFzcHg/Z3VpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjVkZAIJDw8WBB8FBT1+L3NlZWsvZ2FsbGVyeS5hc3B4P2d1aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1HwEFIlZpZXcgdGhlIEltYWdlIEdhbGxlcnkgb2YgNCBpbWFnZXNkZAIqDxYCHwEFBHRydWVkAisPFgIfAQVKbGF0PTUyLjM3MjI1OyBsbmc9OS43MzUzNjc7IGd1aWQ9JzA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNSc7DQpkAiwPFgIfAQVxdHJ5IHsgX2dhcS5wdXNoKFsnX3RyYWNrRXZlbnQnLCAnR2VvY2FjaGluZycsICdDYWNoZURldGFpbHNNZW1iZXJUeXBlJywgJ1ByZW1pdW0nLCBudWxsLCB0cnVlXSk7IH0gY2F0Y2goZXJyKSB7IH1kAi4PFgIfA2hkAi8PZBYEAgMPFgIfAQUHRW5nbGlzaGQCBQ8WAh8NAg8WHmYPZBYCAgEPDxYIHg9Db21tYW5kQXJndW1lbnQFBWVuLVVTHgtDb21tYW5kTmFtZQUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHhBDYXVzZXNWYWxpZGF0aW9uaGRkAgEPZBYCAgEPDxYIHxAFBWRlLURFHxEFDVNldFRlbXBMb2NhbGUfAQUHRGV1dHNjaB8SaGRkAgIPZBYCAgEPDxYIHxAFBWZyLUZSHxEFDVNldFRlbXBMb2NhbGUfAQUJRnJhbsOnYWlzHxJoZGQCAw9kFgICAQ8PFggfEAUFcHQtUFQfEQUNU2V0VGVtcExvY2FsZR8BBQpQb3J0dWd1w6pzHxJoZGQCBA9kFgICAQ8PFggfEAUFY3MtQ1ofEQUNU2V0VGVtcExvY2FsZR8BBQnEjGXFoXRpbmEfEmhkZAIFD2QWAgIBDw8WCB8QBQVzdi1TRR8RBQ1TZXRUZW1wTG9jYWxlHwEFB1N2ZW5za2EfEmhkZAIGD2QWAgIBDw8WCB8QBQVubC1OTB8RBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfEmhkZAIHD2QWAgIBDw8WCB8QBQVjYS1FUx8RBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfEmhkZAIID2QWAgIBDw8WCB8QBQVwbC1QTB8RBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8SaGRkAgkPZBYCAgEPDxYIHxAFBWV0LUVFHxEFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfEmhkZAIKD2QWAgIBDw8WCB8QBQVuYi1OTx8RBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHxJoZGQCCw9kFgICAQ8PFggfEAUFa28tS1IfEQUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfEmhkZAIMD2QWAgIBDw8WCB8QBQVlcy1FUx8RBQ1TZXRUZW1wTG9jYWxlHwEFCEVzcGHDsW9sHxJoZGQCDQ9kFgICAQ8PFggfEAUFaHUtSFUfEQUNU2V0VGVtcExvY2FsZR8BBQZNYWd5YXIfEmhkZAIOD2QWAgIBDw8WCB8QBQVyby1STx8RBQ1TZXRUZW1wTG9jYWxlHwEFCFJvbcOibsSDHxJoZGQCAw8WAh8BBStTZXJ2ZXI6IFdFQjIwOyBCdWlsZDogV2ViLkhvdEZpeF8yMDEyMDYyNy40ZGTlq0+o86XFT0Q0iRWFMl2X+tXVTA==" />
</div>
<script type="text/javascript">
@@ -270,8 +270,8 @@ function __doPostBack(eventTarget, eventArgument) {
<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=5b3ltJXa0TSwEsvct1wCaBdn9Bo8N7FVqBNQM2YKqXbQHZWaMP-zx0K4z61uMiKeGNyKUpZuaFTNyOsj4Crx8g0LjQOUse6i-Eqw_GJBx8YviKwr2CJgL-aqZEI9VB_ltGTTIXy1yvHcnrnzhX2JlzaDqphWnKQvx4x3txaHfBNpRY5-4XH8vm4ONKceJIHIkX17AGlkUY7g_kHGaI-HyINE7lM1" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=WVHVdtd8gYJbLaxUtYeLUMrjCX5WOnJSGG26Gaj926DbjI4M9dAJHHwgJvtDecWibtIrrCOlzx5XFuwAs4BS93kYHTXkHDTnFSnIrC-WT6_zZ9eYJQp1WOdlrWXkXO3OMRuZgqsIFxsRcAMWhIqTcySwmxW4vOKHYRgHiJL-uf5jQFtm6x1ve6DY0mMD_ESerncSaCA1Cgsolch15ihMoZqpeqMbLrohVYz9U2hp6BsgAmTNK8OpwIv8KNbNZlhev6c03M5Fq7DYbtjNfcsFkibXxv5XkgR6tWfTJ0nbUMTZRfl2rS6acFF_SE_6Xq3gNDu-hn2gVSQQR60sIXvVO__s85ChXRXLZbUsbC_Dh_E0d_kJp1MkLd_v1YGKnSz_JyIuwDe9FNHlGLCElVL9TJU2IviQPhQVG_RvU0baAFL6jcHyEBNeIOCGTth06fgRUbpTyRW_Q5F9L1AY8waKiE6KbBQwR4M7__2CKI5x5oWQGzDPCGo_Q_FaDCORWqMNns5w1x4DtsX5kYEMpB6kXD-MOtq9iDhz8_7f8XUJPY7ZnCLAr2j8KPHVhvk0sPPniI9ISg3MMf9Dut2vXQv66CC4PRYZUILFl2bI-4md6Dvp6eNMnjPVzME44o1_KuuQmZhkDFiud1uACzvuDSX2TKQOuNOLShfUtc0Br1iW_HFokkRVYXUd1zroDosI81VOASmffpscQK7vVV8dk2R3I8kvWGMcnArgh_no7Z-3xP5azRP70" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=ANTY2fFVTdCBnBHOLd74WH8qIxEoKa5loZvqSDX0qfrPYlwzG7fdazPW4XgTSdBTL0taNZNA9lJ9_LL5Y6OMxdE8wy27wNkkj9c3THw5h5yf7K2H4JI2erFcY7bYJVFEitX2P8QZVXiMM1Hu_ocOF2m19w0-qnnVbCAi4gGR76WPplCK8_LARor44gr4y0tEqfZHmaNZwvPD-GY9gWmxGcN80_g1" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=gHhV_3Nllphm9Ge7JZuvsp-6qi7uWZDHeaBOjW5jTogLAz8WEel4pM_LAbuRdVqXKAp4WqNCm49Ibv_BS54Q-zQ3SE8sm5fkWXrDLC0gOR1KOW1zzeMJPCzaIwASRPgfLsGmz-j61eN7MaGhCd_2us_YiAYGtgKKWaJScV_0Jaw-Nu-gIM_inEDfUuK73C79UMvVBjzzRe4Cxv7Fivb6uQY9WKpaYye-o1a53IrhWGJsMpnn3cnrd0sk-fl0J64H_qfFu4FItsFrchizowvtBWdwDWQIKSWkCWnZ_sxNtlv-0O_q2tAS_CfoZyXRR0SttrQtS1OsgABAuWIcHhJzJNkAdBQZc1nw4JQZtlrYeQODk1U8iY9R4mU6BsO-s-3bH5kYH7hQ3xj27xGCk6ivveHkGZy8IpeMcoYVDQLDGJ8QtzCcDWNr12uwOw-2hvggpMI-WDp1p1OA9Lyltqd6DuPChrw-6sLw85fzlcymkCCNv7F0mMhS9V89c38eNlcnvQVm17pMyzI-zoIos0jPOSuWRgvh1C8kciSthsKUMPGMceRp2qyvhmAqWvskmQu9mU9BoI_lnC1pOLqjYwAhwsZDyMCUb5GSGWrK-7TfknHUYE3Dxb5Xl-mhBk3ziUeH3cs_75_doDYG0Hsj4D1cyjtlGrj-OoxR-3VdJ3mggY5kjV5RSdXOyx9Ub3RxX9bF9dEdqRgocbfieX_o9ow9FporIdB2TRPJt5mmhgX_4K0pWLKa0" type="text/javascript"></script>
<script src="js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
<script type="text/javascript">
@@ -310,7 +310,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div class="container">
<h1 class="Logo span-16">
- <a href="../default.aspx" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
+ <a href="../" id="ctl00_HDHomeLink" title="Geocaching" accesskey="h">Geocaching</a></h1>
<div class="ProfileWidget span-8 last">
@@ -318,14 +318,14 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div id="ctl00_divSignedIn">
<p class="Avatar NoBottomSpacing">
- <a id="ctl00_hlHeaderAvatar" accesskey="p" title="Your Profile" href="../my/default.aspx"><img title="Your Profile" src="http://img.geocaching.com/user/avatar/50f83123-27d8-4dcf-9fde-2af006efaf2b.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/50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg" alt="" style="border-width:0px;" /></a></p>
<p class="SignedInText">
<strong>
Hello, <a href="/my/default.aspx" title="View Profile for blafoo" class="SignedInProfileLink">blafoo</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%3flog%3dy%26wp%3dGC2JVEH%26numlogs%3d35%26decrypt%3dy">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" /> 590&nbsp;&nbsp;&nbsp;<img src="/images/challenges/types/sm/challenge.png" title="Challenges Completed" /> 3</strong>
+ <img src="/images/icons/icon_smile.png" title="Caches Found" /> 626&nbsp;&nbsp;&nbsp;<img src="/images/challenges/types/sm/challenge.png" title="Challenges Completed" /> 3</strong>
</p>
@@ -338,20 +338,20 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<ul class="Menu">
<li>
- <a id="ctl00_hlNavLearn" accesskey="1" title="Learn" href="../guide/default.aspx">Learn &#9660;</a>
+ <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/default.aspx">Geocaching 101</a></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=cat:newbies&amp;vid=-4VFeYZTTYs">Geocaching in 2 Minutes</a></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>
</li>
<li id="ctl00_liNavProfile">
- <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" title="[Your Profile ▼]" href="../my/default.aspx">Your Profile &#9660;</a>
+ <a id="ctl00_hlNavProfile" accesskey="2" title="Your Profile" title="[Your Profile ▼]" href="../my/">Your Profile &#9660;</a>
<ul class="SubMenu">
<li>
- <a id="ctl00_hlSubNavQuickView" accesskey="p" title="Quick View" href="../my/default.aspx">Quick View</a></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">
@@ -361,45 +361,45 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<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=0564a940-8311-40ee-8e76-7e91b2cf6284">Yours</a>)</li>
<li>
- <a id="ctl00_hlSubNavPocketQueries" accesskey="9" title="Pocket Queries" href="../pocket/default.aspx">Pocket Queries</a></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/default.aspx">Account Details</a></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="default.aspx">Play &#9660;</a>
+ <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="default.aspx">Hide & Seek a Cache</a></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_hlSubNavChallenges" title="Find Challenges" href="../challenges/default.aspx">Find Challenges</a></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/default.aspx">Find Trackables</a></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>
</li>
<li>
- <a id="ctl00_hlNavCommunity" accesskey="6" title="Community" href="../forums/default.aspx">Community &#9660;</a>
+ <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_hlSubNavLocal" accesskey="z" title="Local Organizations" href="../organizations/default.aspx">Local Organizations</a></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/default.aspx">Discussion Forums</a></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/default.aspx">Events</a></li>
+ <a id="ctl00_hlSubNavEvents" accesskey="v" title="Events" href="../calendar/">Events</a></li>
</ul>
</li>
<li>
@@ -416,24 +416,24 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</ul>
</li>
<li>
- <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/default.aspx">Partnering &#9660;</a>
+ <a id="ctl00_hlNavPartnering" accesskey="5" title="Partnering" href="../travel/">Partnering &#9660;</a>
<ul class="SubMenu">
<li>
- <a id="ctl00_hlSubNavTravel" title="Travel and Tourism" href="../travel/default.aspx">Travel and Tourism</a></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/default.aspx">Branded Promotions</a></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/default.aspx">Geocaching and Education</a></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/default.aspx">API Program</a></li>
+ <a id="ctl00_hlSubNavAPIProgram" title="API Program" href="../live/">API Program</a></li>
</ul>
</li>
<li>
- <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/default.aspx">Videos</a></li>
+ <a id="ctl00_hlNavVideos" accesskey="7" title="Videos" href="../videos/">Videos</a></li>
<li>
- <a id="ctl00_hlNavFollowUs" title="Follow Us" href="../travel/default.aspx">Follow Us &#9660;</a>
+ <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>
@@ -520,19 +520,16 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div class="span-17 last BottomSpacing" id="cacheDetails">
<p class="cacheImage">
- <a href="/about/cache_types.aspx" target="_blank" title="About Cache Types"><img src="/images/WptTypes/8.gif" alt="Unknown Cache" title="Unknown Cache" width="32" height="32" /></a>
+ <a href="/about/cache_types.aspx" target="_blank" title="About Cache Types"><img src="/images/WptTypes/8.gif" alt="Unknown Cache" title="Unknown Cache" /></a>
</p>
<h2 class="NoBottomSpacing">
<span id="ctl00_ContentBody_CacheName">Auf den Spuren des Indianer Jones Teil 1</span></h2>
<div class="minorCacheDetails Clear">
<div id="ctl00_ContentBody_mcd1">
- A
- cache
- by <a href="http://www.geocaching.com/profile/?guid=af08f081-faf4-4992-8268-1e16ab4677a9&wid=07270e8c-72ec-4821-8cb7-b01483f94cb5&ds=2">indianerjones, der merlyn,reflektordetektor</a></div>
+ A cache by <a href="http://www.geocaching.com/profile/?guid=af08f081-faf4-4992-8268-1e16ab4677a9&wid=07270e8c-72ec-4821-8cb7-b01483f94cb5&ds=2">indianerjones, der merlyn,reflektordetektor</a></div>
<div id="ctl00_ContentBody_mcd2">
- Hidden
- :
+ Hidden:
28/11/2010
</div>
@@ -557,7 +554,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div id="ctl00_ContentBody_size" class="CacheSize span-9">
<p style="text-align: center;">
- Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/small.gif" alt="Size: Small" title="Size: Small" />&nbsp<small>(Small)</small></span></p>
+ Size:&nbsp;<span class="minorCacheDetails"><img src="/images/icons/container/small.gif" alt="Size: small" title="Size: small" />&nbsp<small>(small)</small></span></p>
</div>
@@ -570,7 +567,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<a id="uxFavContainerLink" href="javascript:void(0);">
<div class="favorite-container">
<span class="favorite-value">
- 39</span><br />
+ 44</span><br />
Favorites
<img id="imgFavoriteArrow" src="/images/arrow-down.png" alt="Expand" title="Expand" />
</div>
@@ -755,7 +752,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div id="ctl00_ContentBody_pnlWatchedCount">
<p>
- <img src="/images/icons/icon_watchlist.gif" alt="Watching" /> You are 1 of 15 users watching this.</p>
+ <img src="/images/icons/icon_watchlist.gif" alt="Watching" /> You are 1 of 13 users watching this.</p>
</div>
@@ -786,7 +783,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<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='c214eb888ff14f459eaaae953a0c45c3'" 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>
+ <span id="ctl00_ContentBody_ADModules_09"><iframe type="iframe" src="http://ads.groundspeak.com/a.aspx?ZoneID=9&Task=Get&SiteID=1&X='921a72f845054e34bf4a5f306ff6552b'" 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>
@@ -880,7 +877,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</ul>
<p class="NoBottomSpacing">
- <a href="/bookmarks/default.aspx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5&WptTypeID=8" title="View all 5 bookmark lists...">View all 5 bookmark lists...</a>
+ <a href="/bookmarks/default.aspx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5&WptTypeID=8" title="View all 6 bookmark lists...">View all 6 bookmark lists...</a>
</p>
</div>
@@ -1007,15 +1004,15 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<div class="InformationWidget Clear">
<h3>
- 95 Logged Visits</h3>
+ 101 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" /> 85&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_note.gif" alt="Write note" title="Write note" /> 7&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;</p></span>
+ <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/icons/icon_smile.gif" alt="Found it" title="Found it" /> 91&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="/images/icons/icon_note.gif" alt="Write note" title="Write note" /> 7&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;</p></span>
<p class="HalfLeft">
- <a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5">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=07270e8c-72ec-4821-8cb7-b01483f94cb5">View the Image Gallery of 3 images</a>
+ <a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5">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=07270e8c-72ec-4821-8cb7-b01483f94cb5">View the Image Gallery of 4 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.
@@ -1044,7 +1041,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
</div>
<p>
<small>
- Current Time: <time datetime="2012-05-24T12:04:58Z">05/24/2012 12:04:58 Pacific Daylight Time (19:04 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-04-23T17:16:00Z">2012-04-23T17:16:00Z</time> on 04/23/2012 10:16:00 Pacific Daylight Time (17:16 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2012-06-29T10:59:18Z">06/29/2012 10:59:18 Pacific Daylight Time (17:59 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-06-10T21:19:40Z">2012-06-10T21:19:40Z</time> on 06/10/2012 14:19:40 Pacific Daylight Time (21:19 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
@@ -1350,7 +1347,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
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. Your local volunteer reviewer will try to begin the review process within 3 days.</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) {
@@ -1884,7 +1881,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<li>
<a id="ctl00_hlFooterGlossary" title="Glossary of Terms" href="../about/glossary.aspx">Glossary of Terms</a></li>
<li>
- <a id="ctl00_hlFooterBrochures" title="Brochures" href="../tools/default.aspx#Guide">Brochures</a></li>
+ <a id="ctl00_hlFooterBrochures" title="Brochures" href="../tools/#Guide">Brochures</a></li>
<li>
<a id="ctl00_hlFooterAbout" title="About Groundspeak" href="../about/groundspeak.aspx">About Groundspeak</a></li>
<li>
@@ -1900,7 +1897,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
Press</strong></p>
<ul class="FooterLinks">
<li>
- <a id="ctl00_hlFooterNews" title="News Articles" href="../press/default.aspx">News Articles</a></li>
+ <a id="ctl00_hlFooterNews" title="News Articles" href="../press/">News Articles</a></li>
<li>
<a id="ctl00_hlFooterMediaFAQs" title="Media FAQs" rel="document" href="../articles/Brochures/footer/FAQ_Media.pdf">Media FAQs</a></li>
<li>
@@ -1918,11 +1915,11 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<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="../forums/default.aspx">Discussion Forums</a></li>
+ <a id="ctl00_hlFooterDiscussionForums" accesskey="f" title="Discussion Forums" href="../forums/">Discussion Forums</a></li>
<li>
- <a id="ctl00_hlFooterParksPoliceLink" title="Land Management and Law Enforcement" href="../parksandpolice/default.aspx">Land Management and Law&nbsp;Enforcement</a></li>
+ <a id="ctl00_hlFooterParksPoliceLink" title="Land Management and Law Enforcement" href="../parksandpolice/">Land Management and Law&nbsp;Enforcement</a></li>
<li>
- <a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/default.aspx">Contact Us</a></li>
+ <a id="ctl00_hlFooterContactUs" title="Contact Us" href="../contact/">Contact Us</a></li>
</ul>
</div>
@@ -1934,11 +1931,11 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
Resources</strong></p>
<ul class="FooterLinks">
<li>
- <a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/default.aspx">Tools and Downloads</a></li>
+ <a id="ctl00_hlFooterTools" accesskey="o" title="Tools and Downloads" href="../tools/">Tools and Downloads</a></li>
<li>
- <a id="ctl00_hlFooterAPIProgram" title="API Program" href="../live/default.aspx">API Program</a></li>
+ <a id="ctl00_hlFooterAPIProgram" title="API Program" href="../live/">API Program</a></li>
<li>
- <a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/default.aspx">Find a Benchmark</a></li>
+ <a id="ctl00_hlFooterBenchmarks" title="Find a Benchmark" href="../mark/">Find a Benchmark</a></li>
</ul>
</div>
@@ -1986,14 +1983,14 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet
<script type="text/javascript">
//<![CDATA[
-var uvtoken = 'DbFDfIrSTaXyfNf74lbdopy%2bTw%2fC84Gn87pU%2b3r69toc4lYTKyii0cXY42BXT7amAeAEUCcV1MyzYH%2f69bWOOO9eACoXQV4zwB0MbqnfJSpXP3KZVquNTNpwjm%2bZM1cy7MknU7iS2ssR2b3Ei4ACs3M7%2fSYcISvIojWptDFjzDifWdk3I3OcEOmMQyv8wcBukxKw3lsRUJS%2byTe%2fDwvQ6rOB%2fFKJGMyPSBWqjtMqtgpm30KTdLWZUFYdPMj%2fV3abrhcGIrrRtWKFaPLx9MF5ZuEbruoi%2fqrMdSgL4BNHppC1tCkcwYdmAharhgIOB%2b48Ad8Ijuewb8ylIRAFYA2dZLrXMmCNyVQrNLmIb2IWk%2fYaB2pQ205kzvBlsQVNsdG4FVu6XsAsx2LMmNTMKWy9Jx2sxo70F5i96iNTny9FwVk%3d';var isLoggedIn = true;
+var uvtoken = 'DbFDfIrSTaXyfNf74lbdopy%2bTw%2fC84Gn87pU%2b3r69toc4lYTKyii0cXY42BXT7amAeAEUCcV1MyzYH%2f69bWOOLFvNknWhEHrLLORDZDnnKKrbwGqMAY1Y%2fdEV1UVr72aJ2GkZ4EpV5EGXgivJfPqrB3akvCNL5JJ%2fGcwXzqwhtO7AAROZyoUR2Q61%2fhsTMxI5C%2bmXNz4nIOHQSJ7IhztwWHMDNpvJJ%2bb7pknyOo1%2bAT1NL1OWbB0gIOfCCLeW9Xur%2fl4mmRmsOIQ8Vf9BPg94vvFpkL7MiX23SuM%2b8TR%2fUA288KSkPjacSjZrw0nV8yqD1NzidVVsJmQW93yTUQmcpVTVGCv04dibVpQ6RkZNPg%2feCGq8BqEjbUhDZzF4koUqoDLR90fxjFGfvF1TxheB4Pu2V1Sk5D%2bgBhhCAt%2baqg%3d';var isLoggedIn = true;
var userDefinedCoords = {"status":"success","data":{"isUserDefined":false,"oldLatLngDisplay":"N 52° 22.335' E 009° 44.122'"}};
mapLatLng = {"lat":52.37225,"lng":9.73537,"type":8,"name":"Auf den Spuren des Indianer Jones Teil 1"};
var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"52.372250, 009.735367"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 52° 22' 20.100\" E 009° 44' 07.321\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"32U E 550063 N 5802696"}];
userInfo = {ID: 1912314};
-userToken = 'FOUTFKOKLELXOJAYT35WSZBNGADBNKFSYIMKJ2YI6247JORDCSRPR3LYUNKEOR2PQUOHC7OGY223V2X2ADNEDT25JD2QHOXIHYLH7J5XLOWJSK5WTLLQ5UJQMIZEGXYFSHPFRQQ5A374RP7GSKIVLW2RCI53UZFIABL6BZONCN4XB6QIBKAEXW2B3SU6EYDNCNSS4QUTB5T2F47KLYDI3JPJ2XVCFNU64F5PQYSGP75OOMPXWZEQ';
+userToken = 'FOUTFKOKLELXOJAYT35WSZBNGADBNKFSYIMKJ2YI6247JORDCSRPR3LYUNKEOR2PQUOHC7OGY223V2X2ADNEDT25JD2QHOXIHYLH7J5XLOWJSK5WTLLQ5UJQMIZEGXYFSHPFRQQ5A374RP7GSKIVLW2RCI53UZFIABL6BZONCN4XB6QIBKAEXW2B3SU6EYDNCNSS4QUTB5T2FA7TM433HFDPNMOBYYMEVIQTZ4POMDMFRZU2QJPA';
includeAvatars = true;
-initalLogs = {"status":"success", "data": [{"LogID":228379603,"CacheID":1997597,"LogGuid":"c7d5b309-1c52-4d53-8d86-25884fecee7d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nachdem ich mich letzte Woche bei einem wunderschönen NC mit Rei von den Reimeyers über diese schöne Serie unterhalten habe, hat es auch nicht lange gedauert und ich bekam eine Email von den Reimeyers, mit einer Idee, wo sich der Start dieses schönen Caches befinden könnte und es wurde auch schon ein möglicher Termin ins Auge gefasst, diesen Gedankengängen mal nachzugehen. Heute war dann der Tag und siehe da, Reimeyers hatten ins Goldene getroffen <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />.<br />Und von da ab lief es wie am Schnürchen, Puzzleteil für Puzzleteil fügte sich aneinander und das Bild erschien immer deutlicher. HAMMER, es war ein reiner Genuss den Gedankengängen des Owners auf die Spur zu kommen. Besonders die Station zwei war für mich ein absolutes Highlight.<br />Und so konnten wir uns nach einigen Stunden perfekter Teamarbeit mit einem fetten Grinsen im Logbuch verewigen.<br />Auch bei diesem Cache kann ich nur den Hut ziehen und sagen: perfekte Arbeit, so wie ich das vom Owner kenne und er hat von mir auf jeden Fall ein Fav. verdient.<br />Ich freue mich schon auf den Bonus.<br />Herzlichen Dank und Gruß vom Rattenmann <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />","Created":"22/04/2012","Visited":"21/04/2012","UserName":"Rattenmann","MembershipLevel":3,"AccountID":4316747,"AccountGuid":"372fe2f7-553e-456f-838b-baa8e43111f4","Email":"","AvatarImage":"cd44c372-779a-45e2-a329-f69e467729c1.jpg","GeocacheFindCount":631,"GeocacheHideCount":5,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":228157160,"CacheID":1997597,"LogGuid":"c9ee50f6-8431-4857-b5a2-f52f1d307325","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"sofort gewusst wo das final ist und muggelfrei geloggt.<br />DFDC<br /><br /><br /><br /><br /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br /><br /><br /><br /><br /><br />und nun mal scherz beiseite. als Herr Rei verkündete, glauben zu wissen wo der start ist war die freude erstmal groß. jetzt bloss noch eine passende gelegenheit finden und nichts wie hin. <br /><br />da man indianer jones ja nicht unterschätzen soll, noch tatkräftige unterstützung durch den Rattenmann erbeten. der ließ sich dann auch nicht lange bitten und schon an der ersten station war seine blendende vorarbeit gold wert (ok, dafür ging das frühstück drauf, aber was soll´s <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />).<br /><br />im kleinen rudel wandelten wir dann weiter auf den spuren und nach und nach setzte sich das bild zusammen. um nicht zu spoilern, fassen wir uns jetzt mal kurz:<br /><br />die spuren waren gut getarnt, das wetter nicht ganz einladend, das kleine rudel toll und jeder sollte sich mal auf indi´s spuren begeben, es lohnt sich! <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> <br /><br />wir sagen danke und packen das auto für den bonus <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br /><br />viele grüße,<br />die Reimeyers<br /><br />ps.: FAV.PUNKT IN","Created":"21/04/2012","Visited":"21/04/2012","UserName":"Reimeyers","MembershipLevel":3,"AccountID":4808031,"AccountGuid":"b20a5415-05c2-4789-9ce7-6e9d106beb6f","Email":"","AvatarImage":"f9539da1-2c9e-4e49-81ae-57565521b81e.jpg","GeocacheFindCount":582,"GeocacheHideCount":1,"ChallengesCompleted":23,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":227521067,"CacheID":1997597,"LogGuid":"496f563e-04af-47cf-bb6a-43536f3e98ab","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Indiana Jones?!? Wer ist das? Zwar schon mal gehört, aber das war es auch! Aber auch ohne Kenntnisse ist dieses ? lösbar, es dauer nur länger, oder man hat jemanden der sich auskennt. So war es uns dann doch möglich die schönen Stationen zu besichtigen und auch als Hannoveraner unbekannte Stellen zu erkunden. Danke für die tollen Ideen, das ist einen FAV wert!","Created":"18/04/2012","Visited":"16/04/2012","UserName":"Kummer und Elend","MembershipLevel":3,"AccountID":3842885,"AccountGuid":"407157b8-7113-405b-a09a-bbb724d0564d","Email":"","AvatarImage":"03d750e5-4dd1-4e9a-a6f7-b1fb56acbfe5.jpg","GeocacheFindCount":910,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":227330805,"CacheID":1997597,"LogGuid":"f754fc8b-5a7a-498e-a297-3b0db4338f88","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Wer die Filme von Indiana Jones kennt weiss was ihn erwartet. Viel Abenteuer und ganz schwierige Rätsel. Ohne technische Hilfsmittel und Insiderwissen der Hannoveraner hätte ich das Final nie gefunden. Danke für den spannenden Cache, wenn du diesen machst brauchst du keinen Fernseher mehr. Favi obligatorisch.","Created":"16/04/2012","Visited":"16/04/2012","UserName":"Tialys","MembershipLevel":3,"AccountID":2091449,"AccountGuid":"4ed54215-9b99-4de0-b334-c27a99ee3149","Email":"","AvatarImage":"073b0c05-e36f-4cb0-9435-81b1ca80324c.jpg","GeocacheFindCount":1012,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":227239669,"CacheID":1997597,"LogGuid":"650462d5-cedf-4f6c-95b7-605e91c4ef2b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Hut ab!<br />Geniale Idee und klasse Umsetzung! Irre was es so zu entdecken gibt!<br /><br />TFTC<br />Witchy70","Created":"16/04/2012","Visited":"16/04/2012","UserName":"witchy70","MembershipLevel":3,"AccountID":1406174,"AccountGuid":"439a004f-25b4-4381-9edd-69f41fbde9cf","Email":"","AvatarImage":"e316a5e6-134a-4364-a311-aee2fbee3f8f.jpg","GeocacheFindCount":916,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":226076070,"CacheID":1997597,"LogGuid":"161e24c9-4a29-4b64-8734-9ecc5ad32f45","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Der Hammer! Ich bin restlos begeistert und freue mich auf die nächsten Teile. Wirklich eine super Idee und tolle Locations \t<img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" />.<br />Alles andere haben meine drei Mitstreiter ja schon gesagt und ich schließe mich da voll und ganz an.<br /><br />Vielen Dank dafür!","Created":"13/04/2012","Visited":"11/04/2012","UserName":"moosrose0815","MembershipLevel":3,"AccountID":2169157,"AccountGuid":"af88d3d2-4d7a-40c7-926c-eff39aaff531","Email":"","AvatarImage":"f9f27159-8351-4f9a-a43b-dae2faab5a98.jpg","GeocacheFindCount":824,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225983123,"CacheID":1997597,"LogGuid":"c1947936-ff3c-477d-802f-1e0ddc21df40","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ich kann mich meiner Vorrednerin nur anschließen: Das war echt 'ne geile Nummer! <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /><br /><br />Besonders interessant fand ich, was man so quasi nebenbei über die unmittelbare Umgebung von ST1 und Final gelernt hat. Hundertmal dran vorbeigefahren und nie wirklich beachtet! <img src=\"/images/icons/icon_smile_blush.gif\" border=\"0\" align=\"middle\" /><br /><br />Über den Rest hat Holly ja ausführlich berichtet, daher bleibt mir nur Danke zu sagen für diese Exkursion in die Lokalhistorie und natürlich für die Dose! <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br /> In: Fav-Punkt<br />Out: Nix<br /><br />#934","Created":"12/04/2012","Visited":"11/04/2012","UserName":"Maxx Volume","MembershipLevel":3,"AccountID":1583481,"AccountGuid":"a1482ae1-352c-4ef4-98cd-fc979bf114e8","Email":"","AvatarImage":"e09b3bae-dc52-4dd7-80b4-2d70276aa043.jpg","GeocacheFindCount":975,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225802294,"CacheID":1997597,"LogGuid":"5e301b26-a0ca-4165-87d3-8de3507a0e43","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heiliger Mist....war das ein Erlebniss!<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Aber mal von vorne:<br /><br />Bereits letztes Jahr hatte uns Maxx Volume auf diesen Cache gestossen und auch den vermeintlichen Startpunkt hatte er schon verifiziert. Leider liessen Bauzäune keine weiteren Untersuchungen zu und so gelangte dieses Vorhaben leider erstmal in Vergessenheit.<br /><br />Vor 2 Wochen kam dann Solit spontan die Idee, doch mal einfach vorbei zu schauen wie es da heute aussieht und siehe da: Keine Zäune mehr :-)<br />Prima, dann konnte es ja endlich losgehen.<br /><br />Ostermontag dann mal das mistige Wetter zum urbanen Besuch genutzt und schwupps: Schlapphut auf und mit der richtigen Melodie gings auf die Spuren von Indianer Jones <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /><br />Die erste Station war ja schon irgendwie der Knaller und flux die Koordinaten eingetippt. Irritationen gab es dabei ausnahmsweise, aufgrund der Vorlogger, nicht. Was ein grandioses Zwischenziel!!<br />Zu meiner Schande muss ich gestehen, dass ich hier noch nie in meinen doch jetzt fast 40 Jahren war. Ich hab da defintiv was verpasst und sage hier schon mal Danke für`s herführen.<br /><br />Das führte auch dazu, dass wir uns hier bestimmt 2 Std aufgehalten hatten, obwohl wir die Botschaft in Form des nächsten Rätsels bereits in der Tasche hatten. Der Lösungsweg war zwar aufgrund des Hinweises schnell klar, aber vor Ort hatten wir da keine Chance, schon gar nicht an einem Feiertag. Na gut...Abbruch und dafür noch ein wenig die Lokation genossen <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br /><br />Aus dem Kopf habe ich es aber nicht bekommen. Am nächsten Tag auf der Arbeit dann ein wenig Internetrecherche, Telefon in die Hand und kackfrech mal unter einem unaufälligem Vorwand nachgeforscht. Fazit: Okay, nur der halbe Lösungsweg, aber die Erkenntis: Auch Beamte können durchaus freundlich und hilfbereit sein, auch wenn man mit einer noch so dämlichen Begründung kommt, warum man jene oder welche Information braucht <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br />Netterweise habe ich aber die benötigten Informationen dann doch per Mail bekommen und konnte mir einen kleinen Weg sparen. Also Rundmail an die Mitcacher und noch am selben Abend hatten wir des Rätsels Lösung :-)<br />Heute gings dann auf die entscheidene Expedition. Nachdem unser, durchaus mit blindem Vertrauen ausgestattteten, Kletteraffe das erste mal den Kopf schüttelte, kam auch noch eine interessierte Muggelfrau angetrabt, die uns begeistert empfangen hat, weil wir uns für diese tolle Örtlichkeit in Hannover interessieren.<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /> Gott sei Dank hatten wir aber alle ja schon den ganzen Tag das Internet durchforstet, weil dieser schöne Ort eine Menge Interesse geweckt hatte. So konnten wir völlig überzeugend behaupten, dass wir uns hier alleine für die Historie an diesem Ort interessieren. Wir alle glänzten wohl so mit Wissen über diesen leider schon fast vergessenen Ort, dass sie befriedigt wieder abdampfte, natürlich nicht ohne uns noch für die nächste Veranstalltung hier einzuladen <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /><br /><br />Vorsichtshalber sind wir aber erstmal abgedampft, riskieren wollten wir dann doch lieber nix.<br /><br />Blöd, dass 30 Minuten später sich aber jemand auf der Bank in der Nähe niedergelassen hat...also wieder Abruch und unsere Vermutung lieber nochmal durch einen TJ bestätigen lassen.<br /><br />1 Std später dann der 3. Versuch und siehe da: Maxx hatte endlich den richtigen Griff und über das blinde Vertrauen zu Solit diskutieren wir dann nochmal <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Das hätte schneller gehen können an dem Abend <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br />Zielgebiet für den Bonus ist auch schon ausgemacht, hoffe wir kriegen das jetzt Zeitnah hin.<br /><br />Mein lieber Scholli! Ich habs ja nicht so mit dem urbanen, aber dieser Cache hat`s echt rausgehauen. Tolle Story und super schöne Lokations. Alles Stimmig, aber trotzdem gibts nur 4,5 * bei GCvote! Warum? Der war eindeutig zu kurz <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Begeistert hat mich vorallendingen die Phantasie des Owners und die schönen Orte die er dabei zeigt.<br /><br />Ich freu mich auf den 2. Teil!!<br /><br />P.S.: Natürlich gibts nen Schleifchen <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />","Created":"11/04/2012","Visited":"11/04/2012","UserName":"Holly72","MembershipLevel":3,"AccountID":1629836,"AccountGuid":"ba5ae6a6-6772-43ef-94a0-2acbe791eab6","Email":"","AvatarImage":"262cea30-8b5c-4100-b587-279f4030e256.jpg","GeocacheFindCount":1181,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225792839,"CacheID":1997597,"LogGuid":"39317443-7fc7-4694-9000-e483b451a976","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schön vor längerer Zeit viel uns dieser Cache mit dem verheißungsvollen Listing auf. Beim ersten Versuch hielt uns noch der Bauzaun auf und da urbanes Cachen sonst nicht sonst unser ist, war erst einmal Pause. Trotzdem hielt mich der Cache weiter in seinem Bann und tief in meinem Gedächtnis wurde ich auf geheimnisvolle Weise immer wieder erinnert. <br />Am Osterwochenende war es dann soweit. Der Bauzaun ist weg, die erste Station wurde gefunden und auch die zweite konnte sich nicht lange verbergen. Leider war Ostermontag und das folgende Rätsel konnte erstmal nicht gelöst werden. Also abwarten bis Dienstag, die Fährte wurde durch die Rätselabteilung wieder aufgenommen und am heutigen Mittwoche folgte dann der finale Akt. <br />Zuerst war ich mit Blindheit geschlagen und konnte leider nichts finden. Als dann noch einige Muggels auftauchten kam der vorläufige Abbruch. <br />Etwas später am Abend und nach kurzer Rückversicherung durch einen geheimen Informanten dann der zweite und glücklichere Versuch. Ein Griff von Maxx Volume und der Schatz war unser.<br /><br />Vielen Dank für den schönen und stimmigen Cache. Ich freue mich schon jetzt auf die kommenden Aufgaben.<br /><br />Trade: out nix, in Coin und Fav P<br /><br />PS: Der TB befindet sich nicht mehr in der Dose","Created":"11/04/2012","Visited":"11/04/2012","UserName":"SoliT","MembershipLevel":3,"AccountID":1585608,"AccountGuid":"eaa49324-c13c-4731-bf47-2215d490ae36","Email":"","AvatarImage":"50178e07-8418-4fa1-8383-0d239f80ff58.jpg","GeocacheFindCount":1251,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":218682490,"CacheID":1997597,"LogGuid":"c33663a4-35d1-4754-85c4-91217bbd6a6f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Was soll ich sagen, einfach klasse! <br />Auf den Cache kam ich durch Erzählungen von MASET. Der Herr berichtete mir ausführlich von den Stationen und von allem anderen auch und auch von dem Bonus.<br />Total gespannt schnappte ich mir Jango192002 und die Tour ging los.<br />Am Start angekommen wurde versucht und versucht und keine Idee. Die Zeit verstrich. Bis dann die Idee von Jango kam. Guck mal hier hieß es und es ging dann zügig los.<br />Die nächste Station wurde schnell gefunden und auf zur nächsten Station.<br />Da saßen wir nun. Mit wirren Sachen auf dem Zettel und irgendwie nur was halbsinnvollem. Also Internet raus, Tante Google wusste Rat. Auf zur nächsten Station und suchen.<br />Die Sucherei dauerte doch länger als geplant, bis dann beim zweiten Mal gucken alles gesehen wurde.<br /><br />Der Cache war eine tolle Herausforderung und hat richtig Spaß gemacht.","Created":"15/03/2012","Visited":"14/03/2012","UserName":"Trangfoedsel","MembershipLevel":3,"AccountID":3341409,"AccountGuid":"564f0139-4b21-4790-aa52-ac56c8588a67","Email":"","AvatarImage":"049bf355-9e39-44e5-8ecb-cff24fa74d00.jpg","GeocacheFindCount":832,"GeocacheHideCount":6,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":218518534,"CacheID":1997597,"LogGuid":"0631a4c1-2735-4139-96ff-4c620addd7ce","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute mit Trangfoedsel gemacht. Schöne Idee!! Hat Spaß gemacht.","Created":"14/03/2012","Visited":"14/03/2012","UserName":"Jango192002","MembershipLevel":3,"AccountID":5239707,"AccountGuid":"2100d9e8-3203-41a4-9c2a-28fa37532690","Email":"","AvatarImage":"161fd5b3-c6ae-4753-9180-ab527695f163.jpg","GeocacheFindCount":73,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":211725037,"CacheID":1997597,"LogGuid":"b31a412e-f909-43b8-85a8-33602c8b97ce","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Eher zufällig auf diese Serie gestossen, durch den Bonus Teil1..... Nun war ich neugierig wie die anderen Teile wohl sind!!!! Teil1 hat mich mit den schönen Rätseln an schöne alte Orte geführt. Alle Stationen gut gefunden und schließlich heute das Final geborgen, fast wäre ich allerdings im Teil1 schon 70 km in eine richtung gefahren.....aber nur fast.<br />dfdc <br />Das gibt einen FP","Created":"06/02/2012","Visited":"06/02/2012","UserName":"MASET","MembershipLevel":3,"AccountID":3865632,"AccountGuid":"58ba30fc-8b7d-4aae-ac18-351c98e61778","Email":"","AvatarImage":"82759d73-7a17-41e2-9751-3e17a7818122.jpg","GeocacheFindCount":818,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210952986,"CacheID":1997597,"LogGuid":"b81ee763-4937-47d8-b5e2-5aadbb4ac483","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach einiger Vorarbeit heute diesen endlich zum Abschluss gebracht.<br /><br />Klasse gemacht, vielen Dank dafür und die besten Grüße aus dem Külftal.","Created":"01/02/2012","Visited":"01/02/2012","UserName":"Külftaler","MembershipLevel":3,"AccountID":310197,"AccountGuid":"658690e8-6aa8-4a83-8847-cf1d9f1b9154","Email":"","AvatarImage":"fe570bab-99a2-4cf7-a4b6-0410776c23b2.jpg","GeocacheFindCount":1167,"GeocacheHideCount":32,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210952289,"CacheID":1997597,"LogGuid":"4347b8b4-c6f3-4d98-a586-e4fc513ce09e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach langer Spurensuche und viel Hirnschmalz konnten wir uns hier heute auch verewigen.<br />Nun geht es zusammen mit dem Külftaler die Tage zum Bonus.<br /><br />DFDC<br />TLH","Created":"01/02/2012","Visited":"01/02/2012","UserName":"TeamLittleHummer","MembershipLevel":3,"AccountID":2828843,"AccountGuid":"332a0eaf-9151-4d94-b9c5-72a33edcd404","Email":"","AvatarImage":"b819d5ef-b899-4a2f-b15e-558af443525d.jpg","GeocacheFindCount":2726,"GeocacheHideCount":20,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210897409,"CacheID":1997597,"LogGuid":"4e3a9514-ebc6-4621-aa80-74fb93639e9d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Etwas frei formuliert, ein Zitat:<br /><br />\"Geocaching ist nicht das, was sie glauben. Noch nie hat ein X irgendwo, irgendwann einen bedeutenden Punkt markiert.\"<br /><br />Der Start war schwieriger als gedacht. Selbst als der Zugang da war, wollte sich die Lösung erst nicht zeigen. Dann endlich. <br />Heute wollten der HoshiClan und PapaFünfling eigentlich nur kurz mal die erste Station anschauen. <br />Schließlich ist es kalt. <br />Also nur kurz vor Ort und dann ins Warme.<br />Vor Ort aber dann die falsche Seite gewählt und dadurch einen kleineren eisigen Umweg in Kauf genommen. Ah - da - der nächste Hinweis - das klingt spannend - mmm.... - ich hab ne Idee - und ich weiß wo es warm ist zum genaueren studieren.<br /><br />Aber nur Kurz.<br /><br />Nach dem ersten Kauderwelsch dann etwas mehr Logik angewendet und eine Lösung erarbeitet.<br />schön....<br />kann also demnächst mal weitergehen.....<br /><br />raus in die Kälte, warmen Kakao in der Hand<br /><br />also praktisch gesehen könnten wir......<br />ist aber schon dunkel.....<br />egal.... <br />nur mal kurz gucken.....<br /><br />vor Ort: uff... könnte doch überall sein<br />doch diesmal hatte der Hoshiclan die richtige Eingebung! Nur noch dort kurz gucken.<br /><br />Und siehe da? Die Finaldose! <br /><br />Schade :o))<br /><br />Danke für die klasse Ausarbeitung - wir freuen uns auf den nächsten!","Created":"31/01/2012","Visited":"31/01/2012","UserName":"DieFünflinge","MembershipLevel":3,"AccountID":2744448,"AccountGuid":"34e5f40c-faea-4c08-9717-64c4af34091c","Email":"","AvatarImage":"718b144f-bd35-4e6d-98ac-3d4aaa8e3385.jpg","GeocacheFindCount":607,"GeocacheHideCount":1,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210888476,"CacheID":1997597,"LogGuid":"db941fba-0140-4f83-ba11-c606de402306","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schon 1982 faszinierte mich Raiders of the Lost Ark, selbst spielen durfte <br />ich es da aber noch nicht, 1989 fesselte mich dann auf dem AMIGA <br />Indiana Jones and the Last Crusade, richtig spannend wurde es aber erst 1992 auf der PC version<br /> Indiana Jones and the Fate of Atlantis...<br /><br />und heute in real ;-)<br /><br />der start war recht schnell gefunden wenn gewisse ortskentnisse vorhanden sind,<br />am start ging es aber nicht so weiter wie gewünscht, bauarbeiter und geschlossene türen,<br /> erst ein besuch im januar<br />brachte den näheren zugang zum gewünschten bereich.<br /><br />tada syndrom , so musste die cam herhalten und zu hause die dinge in ruhe betrachtet werden.<br /><br />so wurde das eine mit dem anderen zusammen gebracht und siehe da, KO´s.<br /><br />heute dann ein zeitfenster mit den fünflingen gefunden um die ZS mal unter die lupe zu nehmen,<br />diesen ort kannte ich noch nicht, er hat mich doch sehr fasziniert.<br /><br />die nächste aufgabe wurde dann in erwährmter umgebung vollzogen.<br /><br />die dunkelheit war schon eingebrochen die nächste station nicht weit weg, und so beschlossen wir<br />der nächsten ZS noch einen besuch abzustatten.<br /><br />und dann war es geschehen, mit der richtigen intuition hielten wir das relikt der begirde <br />mit grinsenden und halb eingefrorenen gesichtern in den händen.<br /><br /><br />sehr schön und stimmiger cache.<br /><br />*applaus*<br /><br />danke<br />hoshiclan","Created":"31/01/2012","Visited":"31/01/2012","UserName":"hoshiclan","MembershipLevel":3,"AccountID":4117915,"AccountGuid":"6ad1fccc-1b4c-4cd3-a41d-8cac36fb6dcc","Email":"","AvatarImage":"f4be057e-cfaf-471a-bdd6-100e9a8d5b96.jpg","GeocacheFindCount":200,"GeocacheHideCount":2,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":211205274,"CacheID":1997597,"LogGuid":"de959140-55fd-4e7b-aa87-907417e0f4a0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Da kann ich mich den Ausführungen von slennart nur anschließen. Großartige Rätselei.<br />Danke dafür, ich bin gespannt wie es weiter gehen wird.<br /><br />Grüße,<br />Graph Zahl - #650<br /><br />1,2,3,4 Eckstein - ...<br /><br />This entry was edited by Graph Zahl on Tuesday, 07 February 2012 at 14:26:06 UTC.","Created":"03/02/2012","Visited":"30/01/2012","UserName":"Graph Zahl","MembershipLevel":3,"AccountID":2863358,"AccountGuid":"b5a05931-f073-4987-a297-3fd653cd3fc6","Email":"","AvatarImage":"3149dcc0-d63b-4441-8dd1-8caa210c7cbf.jpg","GeocacheFindCount":667,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210950021,"CacheID":1997597,"LogGuid":"32f521d5-63cb-46b9-893e-99a74d97cc54","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Diesen Cache haben Graph Zahl, Löwenfrosch und ich häppchenweise absolviert. <br />Der Start war uns bereits durch einen anderen - mittlerweile archivierten - Cache wohl bekannt, sodass das Suchen entfiel, auch das Rätseln war schnell erledigt, wunderbare Idee!<br />Die erste ZS war bei winterlichem Wetter gut zu finden und wir haben das Rätsel erstmal mit nach Hause genommen, um dort schnell festzustellen, wo's weitergeht. Dort auch schnell fündig geworden und zum Rätseln in's Café zurückgezogen. Erste Besichtungung der nächsten Station ergab: keine Chance, Muggel-Versammlung. Seitdem waren wir mehrfach vor Ort und konnte heute dann endlich zugreifen - und siehe da, das Final!<br />Schön gemachter Cache, tolle Rätsel, mal sehen, wie es weiter geht...<br /><br />Vielen Dank für den Cache,<br /><br />slennart - #658<br />1,2,3,4 Eckstein - ...","Created":"01/02/2012","Visited":"30/01/2012","UserName":"slennart","MembershipLevel":3,"AccountID":2656914,"AccountGuid":"bece5233-2fac-4680-88f0-f9bea016db8b","Email":"","AvatarImage":"1443e97d-b1c7-46c2-bd41-5bf038f8572c.jpg","GeocacheFindCount":698,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":204914506,"CacheID":1997597,"LogGuid":"42078c29-5ae2-44a5-b793-3d62586a9906","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Endlich hatte ich Zeit, die restlichen Stationen und das Final zu finden. Toller Cache, unbedingt mehr davon!<br /><br />TFTC","Created":"28/12/2011","Visited":"28/12/2011","UserName":"VisualTwo","MembershipLevel":3,"AccountID":2582118,"AccountGuid":"a58c7c9f-a944-4803-8902-b7e826659982","Email":"","AvatarImage":"a18b542b-92d0-4de1-8ead-d0927448ee32.jpg","GeocacheFindCount":1725,"GeocacheHideCount":6,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":203026947,"CacheID":1997597,"LogGuid":"0f917b05-1fd9-405a-9f5a-59abfa4bd04f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nicht erst seit ich den Bonus als Vorweg-Schmankerl besuchen durfte (lieben Gruß an den, mit dem ich die Erinnerung an diese laue Sommernacht teilen darf! <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />), stand dieses Abenteuer auf der Liste. Gleich zu Beginn fühlten Abenteurer fabrice und ich uns wie beim Besuch eines verlassenen Tempels – klasse! <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Genau wie der wahre Mr. Jones das immer macht, haben wir hier quasi intuitiv die richtigen Hebel bedient und die nächsten Herausforderungen entdeckt. Die waren sowohl von der Locationwahl als auch von der Rätselart allesamt stimmig und haben total Spaß gemacht! <img src=\"/images/icons/icon_smile_approve.gif\" border=\"0\" align=\"middle\" /> fabrice schrieb es schon: Wir fanden’s richtig schade, als wir die finale Schatulle in den Händen hielten! Aber zum Glück heißt nach dem Indi auch vor dem Indi, denn nun freue ich mich auf die nächste Fortsetzung… Meinen herzlichen Dank für diese wunderbare FP-würdige Reise auf Indis Spuren an diesem sonnigen Adventssamstag!","Created":"12/12/2011","Visited":"10/12/2011","UserName":"Lillhaga","MembershipLevel":3,"AccountID":2248564,"AccountGuid":"6910255b-6310-4708-82c2-540f42a0c586","Email":"","AvatarImage":"025033f3-4a4a-4144-84eb-8bdbe68d38ec.jpg","GeocacheFindCount":937,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":202936665,"CacheID":1997597,"LogGuid":"cce0c277-a889-40e0-8895-5775c6d43bb4","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Hut auf, Lasso einstecken und los gings!<br /><br />Wo die Spur vom I.J. beginnt, hatten wir fix ermittelt und dieser Ort stellte sich als absolut korrekt heraus. Was dann kam, waren tolle und hochkarätig umgesetzte Rätsel und Stationen. Als wir das Final in den Händen hielten waren wir fast schon enttäuscht, dass es nicht noch vieeel weiter ging. Aber es gibt ja noch mehr I.J.-Teile. <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br /><br />Glücklicherweise hatten wir die Zahlenpause schon einige Tage vorher ausgedruckt, die ist im Moment nur mit Lupe erkennbar, das dürfte entweder an meinem Browser oder an GC.com liegen. Außerdem lag Station 1 einfach so rum, wir haben sie dann mal wieder am vermeintlichen Versteck besser getarnt. <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br />Herzlichen Dank für dieses Abenteuer<br /><br />fabrice","Created":"12/12/2011","Visited":"10/12/2011","UserName":"fabrice84","MembershipLevel":3,"AccountID":1867963,"AccountGuid":"b5b6b6b6-d2ee-48c7-a3b1-684e13167c9c","Email":"","AvatarImage":"e9372afe-c2da-44b5-8603-84b53d30ab30.jpg","GeocacheFindCount":1749,"GeocacheHideCount":7,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":202216711,"CacheID":1997597,"LogGuid":"e577a3ec-8ff8-434a-9175-5b268656ab18","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Halb verzweifelt versucht der Schattenlinie zu folgen und nach Ewigkeiten ist es nun geschafft. Für Teil 2 lass ich mir noch etwas Zeit. TFTC<br /><br />PS. Zettel sind noch genügend drin, allerdings fehlt der gelistete TB.","Created":"06/12/2011","Visited":"05/12/2011","UserName":"ChristophineKolumbus","MembershipLevel":3,"AccountID":4270203,"AccountGuid":"018eaf3d-d333-4d89-91d7-89c158c2db4a","Email":"","AvatarImage":"d173264a-49a8-4296-9977-338fd79776eb.jpg","GeocacheFindCount":788,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":199920577,"CacheID":1997597,"LogGuid":"2622bad0-4e7f-43be-b988-5fcd5bb60b97","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Die anderen stationen schon vor längerer zeit angegangen.Heute in der nähe gewesen. So konnten Teampartner F und ich uns heute ins logbuch eintragen!<br />Danke für das klasse rätsel!<br /><br /><br /><br />TFTC OKF04","Created":"20/11/2011","Visited":"20/11/2011","UserName":"OKF04","MembershipLevel":3,"AccountID":2859755,"AccountGuid":"e923c66c-ad0e-480c-bf7e-7086bf27bd3f","Email":"","AvatarImage":"9738eda3-3ce2-4a9d-a176-e8e667038c63.jpg","GeocacheFindCount":1636,"GeocacheHideCount":2,"ChallengesCompleted":9,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":201948881,"CacheID":1997597,"LogGuid":"620aafd2-3892-4d73-a4e4-add93024f466","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Die Stationen schon vor einiger Zeit entdeckt und nun auch das Final endlich gefunden.<br />THX4$<br />Flying-Henk","Created":"04/12/2011","Visited":"18/11/2011","UserName":"Flying-Henk","MembershipLevel":3,"AccountID":1637570,"AccountGuid":"0e2f7edf-67c5-42af-908b-98e615efbae8","Email":"","AvatarImage":"1a37a969-5d3e-46ac-8cd7-74b985bcde5f.jpg","GeocacheFindCount":1117,"GeocacheHideCount":11,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":199217339,"CacheID":1997597,"LogGuid":"a64786ce-21cb-4b16-87c7-344c7a479d05","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Hier konnte ich dem \"Ingenious OSN\" bestenfalls assistieren. Wie \"Short Round\" in Teil 2 konnte ich den Fluchtwagen fahren und gelegentlich den Ausführungen lauschen wie der Verlauf der Rätsellösung fortschritt. Das Finale garantierte dann ganz großes Kino ...<br /><br />Brillant! Auf zum Bonus ...<br />Danke und Gruß, Rex Kramer","Created":"16/11/2011","Visited":"15/11/2011","UserName":"RexKramer","MembershipLevel":3,"AccountID":564630,"AccountGuid":"e6fbc104-aefc-43a0-8f09-15b6a2fc6b34","Email":"","AvatarImage":"19b09c6d-6b80-49a4-ab61-8561532a2ed0.jpg","GeocacheFindCount":3653,"GeocacheHideCount":17,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 95, "rows": 95 } };
+initalLogs = {"status":"success", "data": [{"LogID":241251492,"CacheID":1997597,"LogGuid":"87247535-a79a-468e-985e-5d99abd07729","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","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\" /> Nr. 2.000 <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 />Schon vor einiger Zeit haben wir überlegt, was wohl ein würdiger Cache für unser Jubiläum sein könnte. Schnell einigten wir uns darauf, dafür den Spuren des Indianer Jones zu folgen.<br />Also den Schlapphut aufgesetzt und die Peitsche aus der SM-Schublade geschnappt und los ging's! Von Station zu Station hangelten wir uns Prof-Jones-like vorwärts und wurden heute mit dem Fund der Dose punktgenau nach dem 1999. gestern belohnt! <br />Die Wahl war die richtige: Ein ganz toller Cache, der uns sehr viel Spaß gemacht hat und an den wir uns jetzt immer, wenn wir unsere Statistik ansehen, erinnern können. Natürlich gibt's dafür einen Favoritenpunkt von uns. Dann noch ein herzliches Dankeschön und viele Grüße an Indi, den Merlyn und Reflektordetektor!<br /><br />P.S. Wir freuen uns schon auf Teil 2. Hoffen aber, dass wir ihn vor dem 3000. finden werden!<br />P.P.S. Vielen Dank an die Baumfee und den Schnatzfänger für die Begleitung, die Glückwünsche und das Erinnerungsfoto!","Created":"10/06/2012","Visited":"10/06/2012","UserName":"4Engel","MembershipLevel":3,"AccountID":2473723,"AccountGuid":"e5356bcb-f3b4-4b90-89a7-e01fb70d5ebb","Email":"","AvatarImage":"1eafbd7c-d6e2-4f57-86bf-05f316ec9026.jpg","GeocacheFindCount":2016,"GeocacheHideCount":20,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":241063085,"CacheID":1997597,"LogGuid":"0b32b7a8-2a91-465a-8917-00f15371cbc7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"# 1691 - als uns die 4Engel vor einigen Tagen ansprachen, ob wir gemeinsam diesen Indiana Jones Cache angehen wollen, war ich sofort \"Feuer und Flamme\". Schließlich hat man diese Filme schon mehrfach im Kino bzw. im Fernsehen mit Begeisterung angeschaut.<br />In mehreren Etappen haben wir uns dem Final genähert. Bei der Sucherei und Recherche konnte man<br />gut in die Rolle des Dr. Jones schlüpfen. Besonders gut gefallen hat mir dabei die Station 1.<br />Für diesen etwas anderen Cache bedanke ich mich beim Owner und natürlich bei dem Team - Schnatzfänger<br /><br />Werden weitere Abenteuer folgen??? Auf jeden Fall erst einmal einen Fav.-Punkt.<br />Die 4Engel hatten heute ein weiteren Grund zum Feiern - dieser besondere Cache war die Nr. 2000","Created":"10/06/2012","Visited":"10/06/2012","UserName":"Schnatzfänger","MembershipLevel":3,"AccountID":3963266,"AccountGuid":"deef3a33-242e-44a3-9520-30105d838d7b","Email":"","AvatarImage":"bc17b3a6-29ee-427d-b819-755b1e6986e3.jpg","GeocacheFindCount":1715,"GeocacheHideCount":3,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[{"ImageID":14387354,"ImageGuid":"7f0e3db3-8969-4c35-a14d-f0af69f0b652","Name":"die glücklichen 4Engel","Descr":"Glückwunsch zum 2000. Cache am 10.06.2012","FileName":"7f0e3db3-8969-4c35-a14d-f0af69f0b652.jpg","Created":"10/06/2012","LogID":241063085,"CacheID":1997597,"ImageUrl":null}]},{"LogID":240175314,"CacheID":1997597,"LogGuid":"5021a2d1-63be-4e67-ab1b-4c45ecf2e3eb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Das ist doch mal ein schönes Beispiel eines urbanen Caches, der intelligent gemacht ist. <br /><br />Schöne Tour, die viel Spass gemacht hat. Leider ist das Gebiet rund ums Final ziemlich verdreckt und teilweise echt mit Vorsicht zu geniessen. Trotzdem: Fav-Punkt von mir...<br /><br />Gruß<br />Alex","Created":"07/06/2012","Visited":"07/06/2012","UserName":"GrafEssinghausen","MembershipLevel":3,"AccountID":1724814,"AccountGuid":"637708df-0b93-4ff8-a20b-48ed5d1ab2eb","Email":"","AvatarImage":"691d0302-1e78-4fa5-9570-1b5aaf899f5c.jpg","GeocacheFindCount":641,"GeocacheHideCount":10,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":239040984,"CacheID":1997597,"LogGuid":"a2f40089-7656-4a37-82c7-a6157730d5cb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ja, der ist mal richtig geil... Diesen hier zu machen hat uns so viel Spaß gebracht, dass wir uns erstmal ganz lieb beim Owner bedanken möchten.<br /><br />Alles top ausgearbeitet, logische Rätsel etc. nur am Start taten wir uns etwas schwer, weil wir hier viel zu kompliziert gedacht haben.<br />Aber dann machte sich ein grinsen in unseren Gesichtern breit <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> und wir summten die Indi Melody.<br /><br />Freuen uns schon riesig, wie die Serie weiter geht, einziges Problem ist nur das wir keine T5 Ausrüstung besitzen... schluchz... aber vielleicht lernen wir ja noch das Fliegen. <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Der bekommt natürlich auch einen FAVpoint.<br /><br />Danke für diesen schönen Cache !!!<br /><br />Haben keinen TB gesichtet und Zettel zum mitnehmen sind keine mehr da (haben den letzten drin gelassen).","Created":"02/06/2012","Visited":"02/06/2012","UserName":"dghobbit","MembershipLevel":3,"AccountID":4213957,"AccountGuid":"41d21c3a-5131-475d-aa27-e60b24fb5049","Email":"","AvatarImage":"f6341881-f5ca-4a2c-9af3-c6402a8aa27e.jpg","GeocacheFindCount":597,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":238434288,"CacheID":1997597,"LogGuid":"29d3f400-9e8f-44e3-b6bf-0671ef3583f0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Uahhhuahhh!! Krass!!! <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_approve.gif\" border=\"0\" align=\"middle\" /><br /><br />WOW!! Keine Ahnung.... eigentlich kann ich hier nix schreiben... jedenfalls nichts Vernünftiges. Es ist schon ziemlich fett.<br /><br />Mit Indianer Jones 2 fing es eigentlich bei uns an, gefolgt von einigen Pigmentoseschwaden und danach war es für mich erledigt! DAS WILL ICH JETZT AUCH!!<br /><br />Aber, ... <img src=\"/images/icons/icon_smile_question.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_question.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_question.gif\" border=\"0\" align=\"middle\" /> ... okay..... vielleicht doch nicht ... DOCH!!!! <br /><br />Also blieb nichts, als Gehirnschmalz zu mischen und irgendwie, weiss nicht... einfach mal los!<br /><br />Raus aus der Sicherheit des Heimatdorfes und hinein in das Ungewisse. <img src=\"/images/icons/icon_smile_question.gif\" border=\"0\" align=\"middle\" /> Jaaaa.... da wurden mir schon einige Steine in den Weg gelegt, die den Weg zum Ziel schon sehr verlängerten..... <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <br /><br />Aber einmal festgebissen ist festgebissen.<br /><br /><br />COOL , COOL, COOL!!! FP ist klar!<br /><br />Danke für dieses Riesenabenteuer sagt Aufm","Created":"30/05/2012","Visited":"30/05/2012","UserName":"Aufm","MembershipLevel":3,"AccountID":4579634,"AccountGuid":"82f457a9-b981-47e9-a9d4-bae00100dd52","Email":"","AvatarImage":"352ea3ae-0f0b-40dd-9885-ee187bb1ad18.jpg","GeocacheFindCount":815,"GeocacheHideCount":14,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":236934812,"CacheID":1997597,"LogGuid":"a1a214fa-6e56-429d-808a-59fae88a4f12","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"<b>WOW!!!</b><br /><br />Der hier hat richtig Spaß gemacht!!! Der Name des Caches verspricht nicht zu viel und auch als zugereister Hannoveraner mit mehreren Jahren Stadtkenntnis durfte ich noch einige neue interessante Orte kennen lernen. Aber von Vorne:<br /><br />Bereits am Tage der Veröffentlichung hatte ich den Cache auf meine Watchlist gesetzt. Das Listing versprach viel Spaß und Spannung, nur keine Schokolade (was ich aber billigend in Kauf nehmen wollte!). Da ich seit geraumer Zeit nicht mehr in der Stadt sondern im Umfeld Hannovers wohne, hat sich immer kein richtiger Anlass ergeben, diesen Cache mal anzugehen. Anfang April sollte es dann endlich so weit sein: Insgesamt vier Wochen, jeweils im Abstand von mehreren Wochen, Seminar stand an. Und so ergaben sich dann nach anstrengenden Tag die gerechten Möglichkeiten zum entspannten Ausgleich!<br /><br />Also ging es dann Anfang April an den Start, den ich natürlich bereits lange vorher ausfindig gemacht hatte. Dummerweise hatte ich seit dem Erscheinen des Caches das Listing nicht mehr durchgelesen, wodurch ich unverrichteter Dinge wieder verschwinden musste, da ich logischerweise auch nicht das Hilfsmittel dabei hatte... <br /><br />Zwei Tage später ging es dann aber noch einmal mit der richtigen Ausrüstung hierher und es blitzte das erste Mal die Qualität und der Ideenreichtum dieses Caches auf. Die Folgekoordinaten waren schnell ermittelt. Da ich mich bereits auf dem Weg zu einer Verabredung war, beschloss ich am kommenden Tag, die nächste Station nach dem Seminar anzugehen.<br /><br />Gesagt getan! Doch leider machten mir \"bestimmte Randbedingungen\" einen Strich durch meine Rechnung, so dass ich unverrichteter Dinge wieder verschwinden musste. Da der Seminar-Samstag nicht so lang war wie die anderen Tage, konnte ich am Ende der ersten Seminarwoche dann hier auch endlich fündig werden. Wie am Start auch, war ich vom gewählten Ort fasziniert und genoss nach dem Finden noch ein wenig die tolle Atmosphäre des Ortes, von dessen Existenz ich zwar wusste, aber nie geahnt hätte, welche Schönheit und Faszination sich dahinter verbirgt.<br /><br />Der nächste Anlauf auf diesen Cache sollte dann in der nächsten Seminarwoche - Anfang Mai - vollzogen werden.<br /><br />Wieder mit einem schönen und dem Cachenamen angemessenen Rätsel ging es dann an einen öffentlichen Ort, an dem ich in Indi-Manier die nächsten Puzzleteile zusammensetzte. Grandios!<br /><br />Am Ende der zweiten Seminarwoche sollte es dann an den ermittelten Zielkoordinaten weiter gehen. Dort musste ich zwar ein wenig suchen, doch als ich dann fündig wurde, vereitelte mir eine Hochzeitsgesellschaft den Zugriff. Außerdem ist der gewählte Ort nicht besonders dazu geeignet, ohne Stealth-Modus nach der Dose zu suchen. So beschloss ich, mir meine Ideen für diese Station per Mail bestätigen zu lassen und dann - nicht nur um die Stimmung dieses Ortes zu steigern - bei Dunkelheit wieder zu kommen. <br /><br />Die Antwort auf meine Petition ließ nicht lange auf sich warten (nochmals herzlichen Dank dafür!) und so ging es dann gestern Abend wieder an den Ort des Geschehens. Entsetzt musste ich feststellen, dass ein Muggelpaar die nahestehende Parkbank besetzt hatte. Da ich aber nicht noch einen weiteren Anlauf nehmen wollte und die Möglichkeit der ungesehenen Annäherung bestand, konnte ich doch letztendlich gut zugreifen und musste ... \"Öh?!? Das ist ja das Final!\"... schon fast ein wenig enttäuscht feststellen, dass dieser ausgezeichnete Cache für mich beendet war.<br /><br />Wirklich ein kleiner Leckerbissen in der Cacheszene Hannover! Wer den noch nicht hat (und wie ich an den Logs sehe: Das sind viele!): MACHEN!<br /><br />Vielen Dank für diesen schönen Cache, für den ich gerne 4.5 Sterne bei <a href=\"http://www.gcvote.com\" target=\"_blank\" rel=\"nofollow\">GCVote</a> (einen halben Stern Abzug gibt es, weil einige Stationen doch etwas grenzwertig liegen) und einen Fav-Point gebe, sagt<br /><br />DJ_JAS (#1.045)<br /><br />in: Schleifchen!<br />out: Ganz viel Spaß und Spannung!","Created":"25/05/2012","Visited":"25/05/2012","UserName":"dj_jas","MembershipLevel":3,"AccountID":1708158,"AccountGuid":"a6a5c07c-3fc0-4237-a71d-6588cb2c5940","Email":"","AvatarImage":"19b59a16-c74e-4a73-bc8a-569885d80fff.jpg","GeocacheFindCount":1059,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":228379603,"CacheID":1997597,"LogGuid":"c7d5b309-1c52-4d53-8d86-25884fecee7d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nachdem ich mich letzte Woche bei einem wunderschönen NC mit Rei von den Reimeyers über diese schöne Serie unterhalten habe, hat es auch nicht lange gedauert und ich bekam eine Email von den Reimeyers, mit einer Idee, wo sich der Start dieses schönen Caches befinden könnte und es wurde auch schon ein möglicher Termin ins Auge gefasst, diesen Gedankengängen mal nachzugehen. Heute war dann der Tag und siehe da, Reimeyers hatten ins Goldene getroffen <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />.<br />Und von da ab lief es wie am Schnürchen, Puzzleteil für Puzzleteil fügte sich aneinander und das Bild erschien immer deutlicher. HAMMER, es war ein reiner Genuss den Gedankengängen des Owners auf die Spur zu kommen. Besonders die Station zwei war für mich ein absolutes Highlight.<br />Und so konnten wir uns nach einigen Stunden perfekter Teamarbeit mit einem fetten Grinsen im Logbuch verewigen.<br />Auch bei diesem Cache kann ich nur den Hut ziehen und sagen: perfekte Arbeit, so wie ich das vom Owner kenne und er hat von mir auf jeden Fall ein Fav. verdient.<br />Ich freue mich schon auf den Bonus.<br />Herzlichen Dank und Gruß vom Rattenmann <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />","Created":"22/04/2012","Visited":"21/04/2012","UserName":"Rattenmann","MembershipLevel":3,"AccountID":4316747,"AccountGuid":"372fe2f7-553e-456f-838b-baa8e43111f4","Email":"","AvatarImage":"cd44c372-779a-45e2-a329-f69e467729c1.jpg","GeocacheFindCount":657,"GeocacheHideCount":6,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":228157160,"CacheID":1997597,"LogGuid":"c9ee50f6-8431-4857-b5a2-f52f1d307325","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"sofort gewusst wo das final ist und muggelfrei geloggt.<br />DFDC<br /><br /><br /><br /><br /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /> <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br /><br /><br /><br /><br /><br />und nun mal scherz beiseite. als Herr Rei verkündete, glauben zu wissen wo der start ist war die freude erstmal groß. jetzt bloss noch eine passende gelegenheit finden und nichts wie hin. <br /><br />da man indianer jones ja nicht unterschätzen soll, noch tatkräftige unterstützung durch den Rattenmann erbeten. der ließ sich dann auch nicht lange bitten und schon an der ersten station war seine blendende vorarbeit gold wert (ok, dafür ging das frühstück drauf, aber was soll´s <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />).<br /><br />im kleinen rudel wandelten wir dann weiter auf den spuren und nach und nach setzte sich das bild zusammen. um nicht zu spoilern, fassen wir uns jetzt mal kurz:<br /><br />die spuren waren gut getarnt, das wetter nicht ganz einladend, das kleine rudel toll und jeder sollte sich mal auf indi´s spuren begeben, es lohnt sich! <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> <br /><br />wir sagen danke und packen das auto für den bonus <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br /><br />viele grüße,<br />die Reimeyers<br /><br />ps.: FAV.PUNKT IN","Created":"21/04/2012","Visited":"21/04/2012","UserName":"Reimeyers","MembershipLevel":3,"AccountID":4808031,"AccountGuid":"b20a5415-05c2-4789-9ce7-6e9d106beb6f","Email":"","AvatarImage":"f9539da1-2c9e-4e49-81ae-57565521b81e.jpg","GeocacheFindCount":676,"GeocacheHideCount":1,"ChallengesCompleted":32,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":227521067,"CacheID":1997597,"LogGuid":"496f563e-04af-47cf-bb6a-43536f3e98ab","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Indiana Jones?!? Wer ist das? Zwar schon mal gehört, aber das war es auch! Aber auch ohne Kenntnisse ist dieses ? lösbar, es dauer nur länger, oder man hat jemanden der sich auskennt. So war es uns dann doch möglich die schönen Stationen zu besichtigen und auch als Hannoveraner unbekannte Stellen zu erkunden. Danke für die tollen Ideen, das ist einen FAV wert!","Created":"18/04/2012","Visited":"16/04/2012","UserName":"Kummer und Elend","MembershipLevel":3,"AccountID":3842885,"AccountGuid":"407157b8-7113-405b-a09a-bbb724d0564d","Email":"","AvatarImage":"03d750e5-4dd1-4e9a-a6f7-b1fb56acbfe5.jpg","GeocacheFindCount":918,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":227330805,"CacheID":1997597,"LogGuid":"f754fc8b-5a7a-498e-a297-3b0db4338f88","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Wer die Filme von Indiana Jones kennt weiss was ihn erwartet. Viel Abenteuer und ganz schwierige Rätsel. Ohne technische Hilfsmittel und Insiderwissen der Hannoveraner hätte ich das Final nie gefunden. Danke für den spannenden Cache, wenn du diesen machst brauchst du keinen Fernseher mehr. Favi obligatorisch.","Created":"16/04/2012","Visited":"16/04/2012","UserName":"Tialys","MembershipLevel":3,"AccountID":2091449,"AccountGuid":"4ed54215-9b99-4de0-b334-c27a99ee3149","Email":"","AvatarImage":"073b0c05-e36f-4cb0-9435-81b1ca80324c.jpg","GeocacheFindCount":1098,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":227239669,"CacheID":1997597,"LogGuid":"650462d5-cedf-4f6c-95b7-605e91c4ef2b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Hut ab!<br />Geniale Idee und klasse Umsetzung! Irre was es so zu entdecken gibt!<br /><br />TFTC<br />Witchy70","Created":"16/04/2012","Visited":"16/04/2012","UserName":"witchy70","MembershipLevel":3,"AccountID":1406174,"AccountGuid":"439a004f-25b4-4381-9edd-69f41fbde9cf","Email":"","AvatarImage":"e316a5e6-134a-4364-a311-aee2fbee3f8f.jpg","GeocacheFindCount":921,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":226076070,"CacheID":1997597,"LogGuid":"161e24c9-4a29-4b64-8734-9ecc5ad32f45","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Der Hammer! Ich bin restlos begeistert und freue mich auf die nächsten Teile. Wirklich eine super Idee und tolle Locations \t<img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" />.<br />Alles andere haben meine drei Mitstreiter ja schon gesagt und ich schließe mich da voll und ganz an.<br /><br />Vielen Dank dafür!","Created":"13/04/2012","Visited":"11/04/2012","UserName":"moosrose0815","MembershipLevel":3,"AccountID":2169157,"AccountGuid":"af88d3d2-4d7a-40c7-926c-eff39aaff531","Email":"","AvatarImage":"f9f27159-8351-4f9a-a43b-dae2faab5a98.jpg","GeocacheFindCount":846,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225983123,"CacheID":1997597,"LogGuid":"c1947936-ff3c-477d-802f-1e0ddc21df40","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Ich kann mich meiner Vorrednerin nur anschließen: Das war echt 'ne geile Nummer! <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /><br /><br />Besonders interessant fand ich, was man so quasi nebenbei über die unmittelbare Umgebung von ST1 und Final gelernt hat. Hundertmal dran vorbeigefahren und nie wirklich beachtet! <img src=\"/images/icons/icon_smile_blush.gif\" border=\"0\" align=\"middle\" /><br /><br />Über den Rest hat Holly ja ausführlich berichtet, daher bleibt mir nur Danke zu sagen für diese Exkursion in die Lokalhistorie und natürlich für die Dose! <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br /> In: Fav-Punkt<br />Out: Nix<br /><br />#934","Created":"12/04/2012","Visited":"11/04/2012","UserName":"Maxx Volume","MembershipLevel":3,"AccountID":1583481,"AccountGuid":"a1482ae1-352c-4ef4-98cd-fc979bf114e8","Email":"","AvatarImage":"e09b3bae-dc52-4dd7-80b4-2d70276aa043.jpg","GeocacheFindCount":998,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225802294,"CacheID":1997597,"LogGuid":"5e301b26-a0ca-4165-87d3-8de3507a0e43","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heiliger Mist....war das ein Erlebniss!<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Aber mal von vorne:<br /><br />Bereits letztes Jahr hatte uns Maxx Volume auf diesen Cache gestossen und auch den vermeintlichen Startpunkt hatte er schon verifiziert. Leider liessen Bauzäune keine weiteren Untersuchungen zu und so gelangte dieses Vorhaben leider erstmal in Vergessenheit.<br /><br />Vor 2 Wochen kam dann Solit spontan die Idee, doch mal einfach vorbei zu schauen wie es da heute aussieht und siehe da: Keine Zäune mehr :-)<br />Prima, dann konnte es ja endlich losgehen.<br /><br />Ostermontag dann mal das mistige Wetter zum urbanen Besuch genutzt und schwupps: Schlapphut auf und mit der richtigen Melodie gings auf die Spuren von Indianer Jones <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /><br />Die erste Station war ja schon irgendwie der Knaller und flux die Koordinaten eingetippt. Irritationen gab es dabei ausnahmsweise, aufgrund der Vorlogger, nicht. Was ein grandioses Zwischenziel!!<br />Zu meiner Schande muss ich gestehen, dass ich hier noch nie in meinen doch jetzt fast 40 Jahren war. Ich hab da defintiv was verpasst und sage hier schon mal Danke für`s herführen.<br /><br />Das führte auch dazu, dass wir uns hier bestimmt 2 Std aufgehalten hatten, obwohl wir die Botschaft in Form des nächsten Rätsels bereits in der Tasche hatten. Der Lösungsweg war zwar aufgrund des Hinweises schnell klar, aber vor Ort hatten wir da keine Chance, schon gar nicht an einem Feiertag. Na gut...Abbruch und dafür noch ein wenig die Lokation genossen <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br /><br />Aus dem Kopf habe ich es aber nicht bekommen. Am nächsten Tag auf der Arbeit dann ein wenig Internetrecherche, Telefon in die Hand und kackfrech mal unter einem unaufälligem Vorwand nachgeforscht. Fazit: Okay, nur der halbe Lösungsweg, aber die Erkenntis: Auch Beamte können durchaus freundlich und hilfbereit sein, auch wenn man mit einer noch so dämlichen Begründung kommt, warum man jene oder welche Information braucht <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br />Netterweise habe ich aber die benötigten Informationen dann doch per Mail bekommen und konnte mir einen kleinen Weg sparen. Also Rundmail an die Mitcacher und noch am selben Abend hatten wir des Rätsels Lösung :-)<br />Heute gings dann auf die entscheidene Expedition. Nachdem unser, durchaus mit blindem Vertrauen ausgestattteten, Kletteraffe das erste mal den Kopf schüttelte, kam auch noch eine interessierte Muggelfrau angetrabt, die uns begeistert empfangen hat, weil wir uns für diese tolle Örtlichkeit in Hannover interessieren.<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /> Gott sei Dank hatten wir aber alle ja schon den ganzen Tag das Internet durchforstet, weil dieser schöne Ort eine Menge Interesse geweckt hatte. So konnten wir völlig überzeugend behaupten, dass wir uns hier alleine für die Historie an diesem Ort interessieren. Wir alle glänzten wohl so mit Wissen über diesen leider schon fast vergessenen Ort, dass sie befriedigt wieder abdampfte, natürlich nicht ohne uns noch für die nächste Veranstalltung hier einzuladen <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /><br /><br />Vorsichtshalber sind wir aber erstmal abgedampft, riskieren wollten wir dann doch lieber nix.<br /><br />Blöd, dass 30 Minuten später sich aber jemand auf der Bank in der Nähe niedergelassen hat...also wieder Abruch und unsere Vermutung lieber nochmal durch einen TJ bestätigen lassen.<br /><br />1 Std später dann der 3. Versuch und siehe da: Maxx hatte endlich den richtigen Griff und über das blinde Vertrauen zu Solit diskutieren wir dann nochmal <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Das hätte schneller gehen können an dem Abend <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br />Zielgebiet für den Bonus ist auch schon ausgemacht, hoffe wir kriegen das jetzt Zeitnah hin.<br /><br />Mein lieber Scholli! Ich habs ja nicht so mit dem urbanen, aber dieser Cache hat`s echt rausgehauen. Tolle Story und super schöne Lokations. Alles Stimmig, aber trotzdem gibts nur 4,5 * bei GCvote! Warum? Der war eindeutig zu kurz <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Begeistert hat mich vorallendingen die Phantasie des Owners und die schönen Orte die er dabei zeigt.<br /><br />Ich freu mich auf den 2. Teil!!<br /><br />P.S.: Natürlich gibts nen Schleifchen <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />","Created":"11/04/2012","Visited":"11/04/2012","UserName":"Holly72","MembershipLevel":3,"AccountID":1629836,"AccountGuid":"ba5ae6a6-6772-43ef-94a0-2acbe791eab6","Email":"","AvatarImage":"262cea30-8b5c-4100-b587-279f4030e256.jpg","GeocacheFindCount":1220,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":225792839,"CacheID":1997597,"LogGuid":"39317443-7fc7-4694-9000-e483b451a976","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schön vor längerer Zeit viel uns dieser Cache mit dem verheißungsvollen Listing auf. Beim ersten Versuch hielt uns noch der Bauzaun auf und da urbanes Cachen sonst nicht sonst unser ist, war erst einmal Pause. Trotzdem hielt mich der Cache weiter in seinem Bann und tief in meinem Gedächtnis wurde ich auf geheimnisvolle Weise immer wieder erinnert. <br />Am Osterwochenende war es dann soweit. Der Bauzaun ist weg, die erste Station wurde gefunden und auch die zweite konnte sich nicht lange verbergen. Leider war Ostermontag und das folgende Rätsel konnte erstmal nicht gelöst werden. Also abwarten bis Dienstag, die Fährte wurde durch die Rätselabteilung wieder aufgenommen und am heutigen Mittwoche folgte dann der finale Akt. <br />Zuerst war ich mit Blindheit geschlagen und konnte leider nichts finden. Als dann noch einige Muggels auftauchten kam der vorläufige Abbruch. <br />Etwas später am Abend und nach kurzer Rückversicherung durch einen geheimen Informanten dann der zweite und glücklichere Versuch. Ein Griff von Maxx Volume und der Schatz war unser.<br /><br />Vielen Dank für den schönen und stimmigen Cache. Ich freue mich schon jetzt auf die kommenden Aufgaben.<br /><br />Trade: out nix, in Coin und Fav P<br /><br />PS: Der TB befindet sich nicht mehr in der Dose","Created":"11/04/2012","Visited":"11/04/2012","UserName":"SoliT","MembershipLevel":3,"AccountID":1585608,"AccountGuid":"eaa49324-c13c-4731-bf47-2215d490ae36","Email":"","AvatarImage":"b869a475-59fe-46e2-ba08-993365f3fbea.jpg","GeocacheFindCount":1288,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":218682490,"CacheID":1997597,"LogGuid":"c33663a4-35d1-4754-85c4-91217bbd6a6f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Was soll ich sagen, einfach klasse! <br />Auf den Cache kam ich durch Erzählungen von MASET. Der Herr berichtete mir ausführlich von den Stationen und von allem anderen auch und auch von dem Bonus.<br />Total gespannt schnappte ich mir Jango192002 und die Tour ging los.<br />Am Start angekommen wurde versucht und versucht und keine Idee. Die Zeit verstrich. Bis dann die Idee von Jango kam. Guck mal hier hieß es und es ging dann zügig los.<br />Die nächste Station wurde schnell gefunden und auf zur nächsten Station.<br />Da saßen wir nun. Mit wirren Sachen auf dem Zettel und irgendwie nur was halbsinnvollem. Also Internet raus, Tante Google wusste Rat. Auf zur nächsten Station und suchen.<br />Die Sucherei dauerte doch länger als geplant, bis dann beim zweiten Mal gucken alles gesehen wurde.<br /><br />Der Cache war eine tolle Herausforderung und hat richtig Spaß gemacht.","Created":"15/03/2012","Visited":"14/03/2012","UserName":"Trangfoedsel","MembershipLevel":3,"AccountID":3341409,"AccountGuid":"564f0139-4b21-4790-aa52-ac56c8588a67","Email":"","AvatarImage":"049bf355-9e39-44e5-8ecb-cff24fa74d00.jpg","GeocacheFindCount":883,"GeocacheHideCount":7,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":218518534,"CacheID":1997597,"LogGuid":"0631a4c1-2735-4139-96ff-4c620addd7ce","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Heute mit Trangfoedsel gemacht. Schöne Idee!! Hat Spaß gemacht.","Created":"14/03/2012","Visited":"14/03/2012","UserName":"Jango192002","MembershipLevel":3,"AccountID":5239707,"AccountGuid":"2100d9e8-3203-41a4-9c2a-28fa37532690","Email":"","AvatarImage":"161fd5b3-c6ae-4753-9180-ab527695f163.jpg","GeocacheFindCount":73,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":211725037,"CacheID":1997597,"LogGuid":"b31a412e-f909-43b8-85a8-33602c8b97ce","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Eher zufällig auf diese Serie gestossen, durch den Bonus Teil1..... Nun war ich neugierig wie die anderen Teile wohl sind!!!! Teil1 hat mich mit den schönen Rätseln an schöne alte Orte geführt. Alle Stationen gut gefunden und schließlich heute das Final geborgen, fast wäre ich allerdings im Teil1 schon 70 km in eine richtung gefahren.....aber nur fast.<br />dfdc <br />Das gibt einen FP","Created":"06/02/2012","Visited":"06/02/2012","UserName":"MASET","MembershipLevel":3,"AccountID":3865632,"AccountGuid":"58ba30fc-8b7d-4aae-ac18-351c98e61778","Email":"","AvatarImage":"82759d73-7a17-41e2-9751-3e17a7818122.jpg","GeocacheFindCount":875,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210952986,"CacheID":1997597,"LogGuid":"b81ee763-4937-47d8-b5e2-5aadbb4ac483","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach einiger Vorarbeit heute diesen endlich zum Abschluss gebracht.<br /><br />Klasse gemacht, vielen Dank dafür und die besten Grüße aus dem Külftal.","Created":"01/02/2012","Visited":"01/02/2012","UserName":"Külftaler","MembershipLevel":3,"AccountID":310197,"AccountGuid":"658690e8-6aa8-4a83-8847-cf1d9f1b9154","Email":"","AvatarImage":"fe570bab-99a2-4cf7-a4b6-0410776c23b2.jpg","GeocacheFindCount":1193,"GeocacheHideCount":32,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210952289,"CacheID":1997597,"LogGuid":"4347b8b4-c6f3-4d98-a586-e4fc513ce09e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Nach langer Spurensuche und viel Hirnschmalz konnten wir uns hier heute auch verewigen.<br />Nun geht es zusammen mit dem Külftaler die Tage zum Bonus.<br /><br />DFDC<br />TLH","Created":"01/02/2012","Visited":"01/02/2012","UserName":"TeamLittleHummer","MembershipLevel":3,"AccountID":2828843,"AccountGuid":"332a0eaf-9151-4d94-b9c5-72a33edcd404","Email":"","AvatarImage":"b819d5ef-b899-4a2f-b15e-558af443525d.jpg","GeocacheFindCount":2816,"GeocacheHideCount":20,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210897409,"CacheID":1997597,"LogGuid":"4e3a9514-ebc6-4621-aa80-74fb93639e9d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Etwas frei formuliert, ein Zitat:<br /><br />\"Geocaching ist nicht das, was sie glauben. Noch nie hat ein X irgendwo, irgendwann einen bedeutenden Punkt markiert.\"<br /><br />Der Start war schwieriger als gedacht. Selbst als der Zugang da war, wollte sich die Lösung erst nicht zeigen. Dann endlich. <br />Heute wollten der HoshiClan und PapaFünfling eigentlich nur kurz mal die erste Station anschauen. <br />Schließlich ist es kalt. <br />Also nur kurz vor Ort und dann ins Warme.<br />Vor Ort aber dann die falsche Seite gewählt und dadurch einen kleineren eisigen Umweg in Kauf genommen. Ah - da - der nächste Hinweis - das klingt spannend - mmm.... - ich hab ne Idee - und ich weiß wo es warm ist zum genaueren studieren.<br /><br />Aber nur Kurz.<br /><br />Nach dem ersten Kauderwelsch dann etwas mehr Logik angewendet und eine Lösung erarbeitet.<br />schön....<br />kann also demnächst mal weitergehen.....<br /><br />raus in die Kälte, warmen Kakao in der Hand<br /><br />also praktisch gesehen könnten wir......<br />ist aber schon dunkel.....<br />egal.... <br />nur mal kurz gucken.....<br /><br />vor Ort: uff... könnte doch überall sein<br />doch diesmal hatte der Hoshiclan die richtige Eingebung! Nur noch dort kurz gucken.<br /><br />Und siehe da? Die Finaldose! <br /><br />Schade :o))<br /><br />Danke für die klasse Ausarbeitung - wir freuen uns auf den nächsten!","Created":"31/01/2012","Visited":"31/01/2012","UserName":"DieFünflinge","MembershipLevel":3,"AccountID":2744448,"AccountGuid":"34e5f40c-faea-4c08-9717-64c4af34091c","Email":"","AvatarImage":"718b144f-bd35-4e6d-98ac-3d4aaa8e3385.jpg","GeocacheFindCount":621,"GeocacheHideCount":1,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210888476,"CacheID":1997597,"LogGuid":"db941fba-0140-4f83-ba11-c606de402306","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Schon 1982 faszinierte mich Raiders of the Lost Ark, selbst spielen durfte <br />ich es da aber noch nicht, 1989 fesselte mich dann auf dem AMIGA <br />Indiana Jones and the Last Crusade, richtig spannend wurde es aber erst 1992 auf der PC version<br /> Indiana Jones and the Fate of Atlantis...<br /><br />und heute in real ;-)<br /><br />der start war recht schnell gefunden wenn gewisse ortskentnisse vorhanden sind,<br />am start ging es aber nicht so weiter wie gewünscht, bauarbeiter und geschlossene türen,<br /> erst ein besuch im januar<br />brachte den näheren zugang zum gewünschten bereich.<br /><br />tada syndrom , so musste die cam herhalten und zu hause die dinge in ruhe betrachtet werden.<br /><br />so wurde das eine mit dem anderen zusammen gebracht und siehe da, KO´s.<br /><br />heute dann ein zeitfenster mit den fünflingen gefunden um die ZS mal unter die lupe zu nehmen,<br />diesen ort kannte ich noch nicht, er hat mich doch sehr fasziniert.<br /><br />die nächste aufgabe wurde dann in erwährmter umgebung vollzogen.<br /><br />die dunkelheit war schon eingebrochen die nächste station nicht weit weg, und so beschlossen wir<br />der nächsten ZS noch einen besuch abzustatten.<br /><br />und dann war es geschehen, mit der richtigen intuition hielten wir das relikt der begirde <br />mit grinsenden und halb eingefrorenen gesichtern in den händen.<br /><br /><br />sehr schön und stimmiger cache.<br /><br />*applaus*<br /><br />danke<br />hoshiclan","Created":"31/01/2012","Visited":"31/01/2012","UserName":"hoshiclan","MembershipLevel":3,"AccountID":4117915,"AccountGuid":"6ad1fccc-1b4c-4cd3-a41d-8cac36fb6dcc","Email":"","AvatarImage":"f4be057e-cfaf-471a-bdd6-100e9a8d5b96.jpg","GeocacheFindCount":202,"GeocacheHideCount":2,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":211205274,"CacheID":1997597,"LogGuid":"de959140-55fd-4e7b-aa87-907417e0f4a0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Da kann ich mich den Ausführungen von slennart nur anschließen. Großartige Rätselei.<br />Danke dafür, ich bin gespannt wie es weiter gehen wird.<br /><br />Grüße,<br />Graph Zahl - #650<br /><br />1,2,3,4 Eckstein - ...<br /><br />This entry was edited by Graph Zahl on Tuesday, 07 February 2012 at 14:26:06 UTC.","Created":"03/02/2012","Visited":"30/01/2012","UserName":"Graph Zahl","MembershipLevel":3,"AccountID":2863358,"AccountGuid":"b5a05931-f073-4987-a297-3fd653cd3fc6","Email":"","AvatarImage":"3149dcc0-d63b-4441-8dd1-8caa210c7cbf.jpg","GeocacheFindCount":692,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":210950021,"CacheID":1997597,"LogGuid":"32f521d5-63cb-46b9-893e-99a74d97cc54","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Diesen Cache haben Graph Zahl, Löwenfrosch und ich häppchenweise absolviert. <br />Der Start war uns bereits durch einen anderen - mittlerweile archivierten - Cache wohl bekannt, sodass das Suchen entfiel, auch das Rätseln war schnell erledigt, wunderbare Idee!<br />Die erste ZS war bei winterlichem Wetter gut zu finden und wir haben das Rätsel erstmal mit nach Hause genommen, um dort schnell festzustellen, wo's weitergeht. Dort auch schnell fündig geworden und zum Rätseln in's Café zurückgezogen. Erste Besichtungung der nächsten Station ergab: keine Chance, Muggel-Versammlung. Seitdem waren wir mehrfach vor Ort und konnte heute dann endlich zugreifen - und siehe da, das Final!<br />Schön gemachter Cache, tolle Rätsel, mal sehen, wie es weiter geht...<br /><br />Vielen Dank für den Cache,<br /><br />slennart - #658<br />1,2,3,4 Eckstein - ...","Created":"01/02/2012","Visited":"30/01/2012","UserName":"slennart","MembershipLevel":3,"AccountID":2656914,"AccountGuid":"bece5233-2fac-4680-88f0-f9bea016db8b","Email":"","AvatarImage":"1443e97d-b1c7-46c2-bd41-5bf038f8572c.jpg","GeocacheFindCount":701,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":204914506,"CacheID":1997597,"LogGuid":"42078c29-5ae2-44a5-b793-3d62586a9906","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"icon_smile.gif","LogText":"Endlich hatte ich Zeit, die restlichen Stationen und das Final zu finden. Toller Cache, unbedingt mehr davon!<br /><br />TFTC","Created":"28/12/2011","Visited":"28/12/2011","UserName":"VisualTwo","MembershipLevel":3,"AccountID":2582118,"AccountGuid":"a58c7c9f-a944-4803-8902-b7e826659982","Email":"","AvatarImage":"a18b542b-92d0-4de1-8ead-d0927448ee32.jpg","GeocacheFindCount":2025,"GeocacheHideCount":6,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 101, "rows": 101 } };
//]]>
</script>
</form>
@@ -2208,6 +2205,6 @@ initalLogs = {"status":"success", "data": [{"LogID":228379603,"CacheID":1997597,
</div>
<!-- End Quantcast tag -->
- <!-- Server: WEB15; Build: Web.HotFix_20120523.2 -->
+ <!-- Server: WEB20; Build: Web.HotFix_20120627.4 -->
</body>
</html>
diff --git a/tests/src/cgeo/geocaching/test/mock/GC2JVEH.java b/tests/src/cgeo/geocaching/test/mock/GC2JVEH.java
index d81d27a..ba64c60 100644
--- a/tests/src/cgeo/geocaching/test/mock/GC2JVEH.java
+++ b/tests/src/cgeo/geocaching/test/mock/GC2JVEH.java
@@ -53,12 +53,12 @@ public class GC2JVEH extends MockedCache {
}
@Override
- public String getOwner() {
+ public String getOwnerDisplayName() {
return "indianerjones, der merlyn,reflektordetektor";
}
@Override
- public String getOwnerReal() {
+ public String getOwnerUserId() {
return "indianerjones";
}
diff --git a/tests/src/cgeo/geocaching/test/mock/MockedCache.java b/tests/src/cgeo/geocaching/test/mock/MockedCache.java
index 21f67e6..352c34d 100644
--- a/tests/src/cgeo/geocaching/test/mock/MockedCache.java
+++ b/tests/src/cgeo/geocaching/test/mock/MockedCache.java
@@ -8,6 +8,7 @@ import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.utils.BaseUtils;
import org.apache.commons.lang3.StringUtils;
+import org.mapsforge.core.IOUtils;
import java.io.BufferedReader;
import java.io.IOException;
@@ -54,9 +55,11 @@ public abstract class MockedCache implements ICache {
}
public static String readCachePage(final String geocode) {
+ InputStream is = null;
+ BufferedReader br = null;
try {
- final InputStream is = MockedCache.class.getResourceAsStream("/cgeo/geocaching/test/mock/" + geocode + ".html");
- final BufferedReader br = new BufferedReader(new InputStreamReader(is), 150000);
+ is = MockedCache.class.getResourceAsStream("/cgeo/geocaching/test/mock/" + geocode + ".html");
+ br = new BufferedReader(new InputStreamReader(is), 150000);
final StringBuilder buffer = new StringBuilder();
String line;
@@ -65,10 +68,12 @@ public abstract class MockedCache implements ICache {
buffer.append(line).append('\n');
}
- br.close();
return BaseUtils.replaceWhitespace(buffer.toString());
} catch (IOException e) {
e.printStackTrace();
+ } finally {
+ IOUtils.closeQuietly(is);
+ IOUtils.closeQuietly(br);
}
return null;
}
diff --git a/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java b/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java
index 30e4f60..7b30180 100644
--- a/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java
+++ b/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java
@@ -19,7 +19,8 @@ public class MemorySubjectTest extends AndroidTestCase {
private MemorySubject<Integer> memorySubject;
@Override
- public void setUp() {
+ public void setUp() throws Exception {
+ super.setUp();
observer = new Observer();
memorySubject = new MemorySubject<Integer>();
}
diff --git a/tests/src/cgeo/test/Compare.java b/tests/src/cgeo/test/Compare.java
index 817addc..4d0e08e 100644
--- a/tests/src/cgeo/test/Compare.java
+++ b/tests/src/cgeo/test/Compare.java
@@ -12,7 +12,7 @@ public abstract class Compare {
public static void assertCompareCaches(ICache expected, cgCache actual, boolean all) {
assertEquals(expected.getGeocode(), actual.getGeocode());
assertTrue(expected.getType() == actual.getType());
- assertEquals(expected.getOwner(), actual.getOwner());
+ assertEquals(expected.getOwnerDisplayName(), actual.getOwnerDisplayName());
assertEquals(expected.getDifficulty(), actual.getDifficulty());
assertEquals(expected.getTerrain(), actual.getTerrain());
assertEquals(expected.isDisabled(), actual.isDisabled());
@@ -28,7 +28,7 @@ public abstract class Compare {
assertEquals(expected.getCoords(), actual.getCoords());
assertTrue(actual.isReliableLatLon());
assertEquals(expected.isOwn(), actual.isOwn());
- assertEquals(expected.getOwnerReal(), actual.getOwnerReal());
+ assertEquals(expected.getOwnerUserId(), actual.getOwnerUserId());
assertEquals(expected.getHint(), actual.getHint());
assertTrue(actual.getDescription().startsWith(expected.getDescription()));
assertEquals(expected.getShortDescription(), actual.getShortDescription());