// ==UserScript== // @name GCComment // @namespace https://geoclub.de/forum/viewtopic.php?f=117&t=44631 // @description Add comments to your geocaches on geocaching.com. // @include /^https?://.*geocaching\.com/.*$/ // @include /^https?://lukeiam.github.io/gcc/.*$/ // @include /^https://api.dropbox.com/.*$/ // @include /^https://gist.github.com/.*$/ // @include /^https://api.github.com/.*$/ // @require https://cdnjs.cloudflare.com/ajax/libs/dropbox.js/2.5.13/Dropbox-sdk.min.js // @require https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js // @require https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js // @require https://raw.githubusercontent.com/lukeIam/GCComment/GistImportExport/src/jquery.qrcode.min.js // @require https://raw.githubusercontent.com/lukeIam/GCComment/GistImportExport/src/jquery.nyroModal.custom.min.js // @resource nyroModalCss https://raw.githubusercontent.com/lukeIam/GCComment/GistImportExport/src/nyroModal.css // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_xmlhttpRequest // @grant GM_listValues // @grant GM_registerMenuCommand // @grant GM_log // @grant GM.log // @grant GM_info // @grant GM.info // @icon https://raw.githubusercontent.com/ramirezhr/GCComment/master/resources/icon.png // @version 102 // @author Birnbaum2001, lukeIam, ramirez // ==/UserScript== // version information var version = GM_info.script.version; var updatechangesurl = 'https://raw.githubusercontent.com/Birnbaum2001/GCComment/master/src/version.json'; var updateurl = 'https://raw.githubusercontent.com/Birnbaum2001/GCComment/master/src/gccomment.user.js'; var browser = "unknown"; if (typeof (chrome) !== "undefined") { // Chrome detected browser = "Chrome"; } else { browser = "FireFox"; } var mainCode = function(){ if (typeof $ === "undefined") { $ = $ || unsafeWindow.$ || window.$ || null; } if (typeof jQuery === "undefined") { jQuery = jQuery || unsafeWindow.jQuery || window.jQuery || null; } if(typeof(GM_log) === "undefined" && typeof(console) !== "undefined" && typeof(console.log) !== "undefined"){ GM_log = function(message){ return console.log(message); }; } if(typeof(unsafeWindow) === "undefined"){ unsafeWindow = window; } // thanks to Geggi // Check for Scriptish bug in Fennec browser GM_setValue("browser", "firefox"); var test_browser = GM_getValue("browser"); if (!test_browser) { console.log("Scriptish GM_getValue bug detected"); var FENNEC_PREFIX = "scriptvals.GCComment@httpwww.birnbaum2001.comgccomment."; // GM_getValue Funktion überschreiben var GM_getValue_Orig = GM_getValue; GM_getValue = function(key, def) { return GM_getValue_Orig(FENNEC_PREFIX + key, def); }; // GM_listValues überschreiben: FENNEC_PREFIX wird von den Keys gelöscht var GM_listValues_Orig = GM_listValues; GM_listValues = function() { var keys = GM_listValues_Orig(); for (var i = 0; i < keys.length; i++) { if (keys[i].indexOf(FENNEC_PREFIX) >= 0) { // we got a comment keys[i] = keys[i].split(FENNEC_PREFIX)[1]; } } return keys; }; } // end thanks ;) // UI Elements - Profile page var configDiv; var commentTable; var exportDiv; var importDiv; var deleteAllDiv; var patchDiv; var importText; var importresult; var deleteAllResult; var gccRoot; var displayFilters; var waitingTag; var filter; var archivedFilter; var serverImportLink; var serverExportLink; var listener; // UI Elements - Detail page var detailCommentDiv; var detailCommentTextArea; var detailCommentTextPane; var detailCommentInputLatLng; var detailCommentLastSaveTime; var detailCommentCacheState; var detailFinalInputLatLng; var detailFinalCacheState; // Map var markers = new Array(); // Buttons var AddComment; var SaveComment; var EditComment; var DeleteComment; var CopyComment; var EditCancelComment; var SaveFinalCoords; var DeleteFinalCoords; // Detail page comment details var currentComment = null; var currentCacheGUID; var currentCacheCode; var currentCacheName; // general script variables var DELIM = "#gccom#"; var COMPREFIX = "gccomment"; var COMGCPREFIX = "gccode-"; var DEG = String.fromCharCode(176); var DEFAULTCOORDS = ""; var stateOptions = new Array("-", "not solved", "solved", "found"); var LAST_IMPORT = "lastimport"; var LAST_EXPORT = "lastexport"; var ARCHIVED = "archive"; var browser = "unknown"; var xmlversion = "\n"; var homelat, homelng; // preferences var AUTOMOVEMYSTERIESBETA = "autoMoveMysteriesbeta"; var AUTOMOVEMYSTERIESBETAFOUND = "autoMoveMysteriesbetafound"; var AUTOMOVEMYSTERIESBETASOLVED = "autoMoveMysteriesbetasolved"; var AUTOMOVEMYSTERIESBETAHOME = "autoMoveMysteriesbetahome"; var AUTOMOVEMYSTERIESBETAAREA = "autoMoveMysteriesbetaarea"; var AUTOMOVEMYSTERIESBETAUNSOLVED = "autoMoveMysteriesbetaunsolved"; var AUTOMOVEMYSTERIESBETAINCLUDEWPT = "autoMoveMysteriesbetaIncludeWaypoints"; var ADDCOMMENTSETTING = "addCommentSetting"; var CHANGEORIGINALSETTING = "changeOriginalSetting"; var ADDWAYPOINTSETTING = "addWaypointSetting"; var PATCHGPX_CHANGEORIGINAL = "patchGPXChangeOriginal"; var PATCHGPX_ADDFINALWPT = "patchGPXAddFinalWpt"; var ENABLE_EXPORT = "enableExport"; var PATCHGPX_REMOVE_DEFAULTTYPE = "PATCHGPX_REMOVE_DEFAULTTYPE"; var PATCHGPX_REMOVE_SOLVED = "PATCHGPX_REMOVE_SOLVED"; var PATCHGPX_REMOVE_UNSOLVED = "PATCHGPX_REMOVE_UNSOLVED"; var PATCHGPX_REMOVE_FOUND = "PATCHGPX_REMOVE_FOUND"; var PATCHGPX_REMOVE_OTHERS = "PATCHGPX_REMOVE_OTHERS"; var PATCHGPX_STRIP_EMOJIS = "PATCHGPX_STRIP_EMOJIS"; var PATCHGPX_STRIP_HTML_TAGS = "PATCHGPX_STRIP_HTML_TAGS"; var EXPORT_FILTER_ALL = "EXPORT_FILTER_ALL"; var EXPORT_FILTER_UNTYPED = "EXPORT_FILTER_UNTYPED"; var EXPORT_FILTER_UNSOLVED = "EXPORT_FILTER_UNSOLVED"; var EXPORT_FILTER_SOLVED = "EXPORT_FILTER_SOLVED"; var EXPORT_FILTER_FOUND = "EXPORT_FILTER_FOUND"; var EXPORT_FILTER_ARCHIVE = "EXPORT_FILTER_ARCHIVE"; var EXPORT_FILTER_ARCHIVE_BOTH = "EXPORT_FILTER_ARCHIVE_BOTH"; var EXPORT_FILTER_ARCHIVE_ARCHIVED = "EXPORT_FILTER_ARCHIVE_ARCHIVED"; var EXPORT_FILTER_ARCHIVE_NOT_ARCHIVED = "EXPORT_FILTER_ARCHIVE_NOT_ARCHIVED"; var DELETEALL_FILTER_ALL = "DELETEALL_FILTER_ALL"; var DELETEALL_FILTER_UNTYPED = "DELETEALL_FILTER_UNTYPED"; var DELETEALL_FILTER_UNSOLVED = "DELETEALL_FILTER_UNSOLVED"; var DELETEALL_FILTER_SOLVED = "DELETEALL_FILTER_SOLVED"; var DELETEALL_FILTER_FOUND = "DELETEALL_FILTER_FOUND"; var DELETEALL_FILTER_ARCHIVED = "DELETEALL_FILTER_ARCHIVED"; var DELETEALL_FILTER_ARCHIVED_BOTH = "DELETEALL_FILTER_ARCHIVED_BOTH"; var DELETEALL_FILTER_ARCHIVED_ARCHIVED = "DELETEALL_FILTER_ARCHIVED_ARCHIVED"; var DELETEALL_FILTER_ARCHIVED_NOT_ARCHIVED = "DELETEALL_FILTER_ARCHIVED_NOT_ARCHIVED"; var LAZY_TABLE_REFRESH = "lazytablerefresh"; var AUTO_UPDATE_GS_FINAL = "autoupdategsfinal"; var AUTO_UPLOAD_CACHE_NOTES = "autoupdatecachenotes"; var AUTOMARKFOUND = "automarkfound"; var AUTOMARKARCHIVE = "automarkarchive"; var SETTINGS_LANGUAGE = "settings language"; var SETTINGS_LANGUAGE_EN = "English"; var SETTINGS_LANGUAGE_DE = "Deutsch"; var SETTINGS_LANGUAGE_AUTO = "Auto"; var SETTING_ARCHIVE_FILTER = "SETTING_ARCHIVE_FILTER"; var ARCHIVE_FILTER_NO_ARCHIVED = "ARCHIVE_FILTER_NO_ARCHIVED"; var ARCHIVE_FILTER_INCLUDE_ARCHIVED = "ARCHIVE_FILTER_INCLUDE_ARCHIVED"; var ARCHIVE_FILTER_ONLY_ARCHIVED = "ARCHIVE_FILTER_ONLY_ARCHIVED"; // icons var gccIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAwUExURdPer+b9v0mis4rElNjQMVyuXfvzR+O+c0BOO+egPfT93X2FbL/Z3qaxkODo4J2EMhLWxjYAAAB9SURBVHjaVMwJDkMhCATQQawgLtz/tl/kt0mHjMtLFK22Wmuz/blhNHfXP2iqZ7Gl+gVXIyJbQxOqwt4gAUZnXjkQtzVgWOcERrwPMYz7FWYARjQAKBzbypIISgiQlR5QGHTD0hOK6gDEvQdwyrTeE0pm/2BmtmHH7EeAAQAb9gXg4KzWZAAAAABJRU5ErkJggg=='; var commentIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAARFJREFUeNqkU03OREAQbXwRseAYnMy3sJO4BJYsuJQlFm4h/unp10kLZiY6mUqeblX9XlWXolBKyS/2JzZZluVs8SAoRM+rgK7rhe/7/4cCnGma0rquqYzhHM4fidhLLksWVlUVRHIIqOzhOY4jdV8QhmEgruuSrus8+FTZJq7rSvq+5wIfm3jPtG3bhTzPM8eyLFeBewX7vpNpmjhJiGEPInD2v1WA4DiOh4DoNPYAqjIM44jxHmiaVjRNw4m4I8AadAF8iJumSWzbJm3bEsuyisc5KMvycQ4UUQomkZXuiesEQcDXOI55XwQBmd8m8Y4kSXi2KIrop/gZ6rfPiMxhGCpP8/FVQIYMU379nV8CDADQEaUK/jLo9wAAAABJRU5ErkJggg=='; var commentIconEdit = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYJJREFUeNqUU89LAlEQnn27BMKyNzsmnvYP6FJ3b0XgPei2Ed4M6yheJFaDiPWgB5GIrkHU/9Cha+YmQkpQ2SVEZV3E15uBt2j+SAeGj5l533zzfimcc1jC1oXvCt+w9vfSmChd32UEtBTZoFAoFAVYGMscYigUgmg0CrquQ9nJwnncp9rx7Ro1oQaCzGOxGJimOXcEoRyQnz8ZVD8YPL4xUMPhcFGQN1cho313FXj/UYCJCaxVyVIdt8AWHeIi8sHRKYYttoicsXegux2fpQydTgdT91MTjEYjGA6HQexWv8AztwKy7VxRvl6vI7QnJkBiv9+HwWBAcfrkgfD1pU3ks8sKXS2u6/V6VNNUVS25rmtFIhHwfR88zyOUdlN5IsxelIExBpqmQaPRAMMwSsFjcRyH12o1/teazeZUDtfhevngJl6iGN2SyslkkjCXy9G5SAIqJxKJw2BEWRj3fD5ParZt81n1cZ95jVhA5VQqpfz3y+Y2WIaMpiz5nefarwADACQFMs6fhMd+AAAAAElFTkSuQmCC'; var commentIconDelete = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXpJREFUeNqUUr9Lw1AQvpd2qFFaRBwFHaQ46x8g0jooQqGjexy6BfpPtB3TweziYkX8tQiOrhkcTIbi4CgilKRJIc3z3YN7pLU19eC4e/fuu/vu3mOcc8iSj9M6+EHIV5aXGMXonKdAt9s9F8bAglSUbDUIFei5emwfPD0Yn1EEQjnDJAHmlUoFyuXyXBZvtSPlIxhla22Vadg5C4yyc/Oo/PVCAV5P6jb6mmBgZIGJAXVGwTGowL/Am5c9Ncb71zfXZgGwaBzHUsfjMWxf3cr43vU9hGGoxpE7mGaQJAlEojomogZBIO1u7w6GwyEMBgOZ97J/CBsXPcinwdgRwaPRSPr0pGk2BbFAupM7yOVytud5EogdUH3fn1CM4b2u61AqlaDf70OxWLTVvJZlcdd1+bQ4jvMrhnmYT+wYUcH/IKgbNI5pmtK22225FwJg50ajcTax8WntdDqyW6vV4rPu0zr3GbFzs9lkWX9kboFFwChskZ/4l/wIMADyMlZUy0YWOAAAAABJRU5ErkJggg=='; var commentIconDeleteAll = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYUExURe6trfLy8tHR0Y+Pj7GxsQAAAIjuhv///20imzoAAAAIdFJOU/////////8A3oO9WQAAAGtJREFUeNpcjwEKwDAIA9Xo/P+Pl9iugwaq5KpgrC9ZV+KoS6CCekZFkDlke7QhQmT5ZwGR5QcYVeWu5x8goY/4AUl4zESeCfogaOx/7UCXNlBlroo5vXkrDNMXYAcmmIhNxY6qLHf8V4ABAESSBHQ3l0TpAAAAAElFTkSuQmCC'; var commentIconSave = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZBJREFUeNqckz1LxEAQhmeTNGIjWliJIKKltWCjWAgWWihW1hYHgthb2Fmo1aE2dld5wtlZCFoINv4C/8EVnk0u2a8k7jvJHmejOQeGbDLvM7s7MxFFUdD5Taegf9jxwbYQZ812sbyyTr3PLm2tLtQCH54/aHJqmt5enyjIsoyMsWSNqQVDDy0YrKPMWveinZs/QWi0LrVgwEbIhI/wYcvznIW8oxPCsYZ7PdgImZSCK0JBEcC63MUwiGRwb4iDARtBxB8cmCQJpWlKUkpO5HdFYlgQBBSGIWv9JpHmBJKUg65bL7VbCEZzApdNSkVj4xMjzQAYsJHR5Qm8fbl5+M3iuM/Pmdk5Ajs4AcO9LjX210gIwQ7D/X0NUMgrd81+HA9OEKCSWit2FAZ2enlHt/fvg+rDfft8B6Avu+Aq7UFdtbIUKQbxbnnYypbqKsZdwCDZaro4gXsC8oNiq+R+oIaHiOPoQqd1ITb3Dov5xSVuC6CTo10Wx3xX+WMWdDVg7E4rfGBjpzHyL/3YbopvAQYALTKvvIqUmbwAAAAASUVORK5CYII='; var commentIconAdd = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXxJREFUeNqMU7uKwlAQnRgLsYitsB+QZn/BQggo+RC3CKQQUqW1UhuDIvohmr+w2cIUlrtNEE0UH/gY78x6ZeP7wDDDZE5mTmYCiAivrFQqsa/Vaj8iRvIyr1BA6HQ6PeEqkkQgr2kaRFHEse/7oHufENjfFCtUkz6T0TAM0HUd7sHzPBgOh4lcuVzGQqHwq7Tb7Z4gVx6Rz8Xc+Ro0SVqM9pRMME0TBvaAYymBQBOkpN5nsG37RkKxWATXdT9S9wj00v1+f7HNZgO73Y6lUHeaSEqDVquF/3E4HHC1WmEcx2xiAzidTjEMQ1wsFrher7mu2+2S+9uChOy23W45liuVk8znc8hkMpDP52E2mzEnpapqPwgCJorObMvlMmGUo+fZbBZyuRxMJhO6j/5Fr1gljsdjvMZoNLrJUR3Vy+kSlyhGr0g51WqVfaPRgOPxeJFDnS3L+kp88WtrNpvcrV6v46v/5OEaqbPjOMqrG3n4gnfIBOWdS3yGkwADADDQiUjr02VlAAAAAElFTkSuQmCC'; var commentIconCopy = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUJJREFUeNqckj2Kg1AQxyebrQNWHsBSLCQgiJaiZzEH8A56gBXvYCtoLfZ2KUwsPEM+/HYzj/h2JWogAw/GefN+/5lxNrZtmxzH/cCKnc/ng2VZ7uyl7/vDO3vmwNz5XlI9nU7Uv16vi9VRQJIkNMiyLKRpCnme05jjOMPMe3exAnz86HttNAg1v+BDw/4nLSiKQi+PxyP1oyiivmEY9FtV1dcZILXrOmAYZlFZ13W43+9wu92mAFmWoa5rqKoKsixbLDsIAiKy3+//ABiI4xjatiX+breblD3a5XIBSZKoEAWUZQmCIJAgXhZF8TIDhDdNQwT6vif5BIBrGobhZJX/L46mabRnjKMIQhBIAM8dd2f+8YBJDzhJHg+qo/E8Px3inKGiKIpEHavAVhGw3W4paA3gep5nvtkndzNu1Kf2K8AAAxf9KklDG6EAAAAASUVORK5CYII='; var commentIconEditCancel = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAx9JREFUeJxVk09om3UYxz/v722ydEmb2HYiS50dWDdT5sS1uoOitTo7LSMFFRHRwnbaSUFBpzgsDHGX1YvgofUg7CIutd2GTIR2A1vcULN2rTYwti7tivRP0vRPkvf9PY+HFmm/1+9feHgcVWUrbr76+BNOMPgFxm1W49aLWKRcykq5dEPLpdMtQ/dubtU7WwPGO59MYdxk8f40Xn4Ja+0GYVzccAQnWgO+3394aLpzW8D02Q9DhevDGW9pvn41e4fA7gZqXkoS3n8QVWFl8i8Wfh3Am72LidXCjlB2ra6+8ciF0SKqyljyYOrPtga9tg+d/LhLvfySirUqXlltqah2fVXX57I6O3heR57fo0OHYjr8TF1KVXHGX29uUZHf87f+oLazi/1ffoeKMNZ7juzoMOXlHAfePUlD61FUhL+//4b7X3+GidXiqD5dIaXimdL8HE5VjEc/OYeK8MNrTzE/kabSQLg6Smz3w6gIiGVvx5vcPv8tVfl/kUDwjHFClQkvv8Su5Hu4kWrG+nqYn0gTdSFSHeXFvktEGxMsTqb57atPQZQHnj1C2SvjqZMwIhq31rIj/giI5faVn6g0EKyK0tp3iVhjgoXJNAPHk+SmxgnsDFPTmGDFKr5I3IhsnkpkY6Yqkert5sHjSfyVPGGj/+uKAiqWCvH9GYwbL87cAbE0tHVQ1fn2hnkizeCJJH4hT8SF+HOvoGJZmLq10WntjHO9be8VL7/4si9Ky+UJAuEIKsLiRJqBExvNEQN1jzXR2nsRbznHha4OQguzhF3zi1E3cMqJ1qAry2TOfoRaAWtZnpnmwX1NJFrbaX7/NK29F0GEkZ5u1uZmqDAGK3LKUVVGX9iT8tfXkn5ugZ3tb9H0QTfBzSWIRUXwlnOM9HST+TlFXcAh5NB/LCOdjqpy9Z22kJn+J2PXVuu1kKMQqibW/gbhh+KgSmH2HpnLP+KvFqgJOAQdsrNlbTx5V4vbnunq4V0pTzRp1lawXpm8VcqbtOs4BFyDK9J/LCPbn2krhg9FD/hKty/a7InWq1iwNuuIveGqfH50Ssa26v8D7vnE690mEL0AAAAASUVORK5CYII='; var waitingGif = 'data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQACgABACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkEAAoAAgAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkEAAoAAwAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkEAAoABAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQACgAFACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQACgAGACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAAKAAcALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA=='; var errorIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtZJREFUeNpUU7tLI2EQn3y72TWJutnERCRHtBEL8URIUCy0sTsQ7a6xsbG8IsWBl0qut4hgd839Baaw0ubA4k7kCtEQuEAS0DMPjXnt43a/zc3sZcX7YPgeM/Ob3zw+n2ma4K1fx8fzlmlmdV1f+2OacdMwRFEQbL8s11G+iaL4eSGTufHsJUkCnwdQzOU+af3+B2l0NKaEwxBkDPz4bg4G0LMseGo0wOh2uwFFOVrKZPb/A3CdNe1jZGpqTNV1sB8fYYA7t20AQQAIBEBQVWjiuV6t2koy+fXt3t4uAQjvo9H5bqdzHE0k1PDTE1j398A1DRzOQd3Zgd7VFTgE2ulAQBQBolHWLJcXOGN3sdnZnwwZZIl2GJ2seh0cjOogPWVrC0JLS6BubwPHNIiNiXrVcUCUZbFVKBxUKpUYMzRtjXLmGJ2MyNhBGQwLRTvdPRAL7SKTk9CqVBKc802m9/vxABbMJtpDxwEZ452W3e8DfwVk4XtoZAQ6lCrnG8zUNFFCAEIfDKNTNKvd/geAOzl7zDh2RPL7QcOaOI6TxjYLtsG5OMAKk9KL1Lq4cIXOzpAV6XxopxsG+JEFMphmgiTVuzQL+OBFd4u4ugpzuZy7O8PoJD5sabvXg+DEBAFUmIQT1nx4ABaJgIPoHgM2Pu6mICjKizOxFNHuoVwGZXaWUrgUBRzPdqv1rqEoY2o8Dkat5raydnoKWrUK7etr15kGSkZ9DYuqdbvwZnmZGJyxdDZ7E1LVo9+lkt3E4kjJJAjYVh9OWfv2FkCWwY/3wMwMNHEG7opFmFpfB6YoJ8gg//IXvh8efmmWSjtyMChOJBIwirnSqBqo72DEGtLWMHdyVlKpH1jU/VQqde57/Ruv8/nd52Lx4BmHhPqso6MUDEIoFgN1bg7UlRWqyQk65xYXF8/dz0Tteb0KhUIMqW2ibKAujfs0SgXPlyhnKPl0Ot3w7P8KMAB6SM2aovTkagAAAABJRU5ErkJggg=='; var successIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAmFJREFUeJyNk89L1FEUxT/vfcfRkdG0yRZqIYiCgmVorloUhCAkKLQxguwvSKiVUJYgFLSwZW3Kje7S3AgRiNQiTDQVhyhE0RkzTPwx4zjfmXnvtpgaZyCss3vvnXPPvedxlYiQjbql6+e8Ku+RI7rZQVcaa3BtIuTa5IxrE33rTRML2XyVXaAxeGPUUbpjzd1kx0QwGAAcNH58BKSYpE2NrbVMdOYUuBcaLJiKzH77mdqtXE1scBwCpgif8YYqDk7WfLw6EtcA7/anR/5HDLDtRIiqw8rlgs0RANUcvHnRItOzsS//FHcH2llJhJmKzHLqwI+1tkXHbWJgzd08Vni5qImVhnEEYerHJ3AtUW+cpDID2qfy63dMJEOu8pbTWFibOQ+euctk7XMGw8MMLb1OX+ZrXI9BJaVei0jFn7QBXlb10V3aTon4Ga1+yp3TXYxtTfJsYQj8DhQ6AIgSrLEV6sJCl8wlvgLQWFjLXN0wADupfUo9xeymIlS9bWXPE4NAXs5ovi2NTlkTdtAA3ApcyzyWeooB6Fl4wp6JQmmuWAkYa8I6amNBPz4AHm684NX38QxpNbbB0PobKPHw2+OoQByMxwZ1nnV6A5J22zNRbof66V66z24yQs/iY/CozNzZ0BGDTZpeJSKcnW4bjRHv2HaOfuO8qmY+HEy37su11/sWiZsx2zbfqQFq3PIun/GGSpKFGdK8LEOZ9+/imAnJymFXOousZSr7cGUUKx1RbxzXYxAlmcBUPN22wY7ZtvncZcrGifeXGjDSL0aaJWUrjVgMJmSUnbFKHtjWz4vZ/F9iIi867oQHZwAAAABJRU5ErkJggg=='; var state_default = commentIcon; var state_unsolved = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAEoSURBVDhPrVPHSgNRFM3XJ8P0RpJJ75AGKT/hTlFRUWyoCwu6EHV5nHPHZ2KiJAwOnN1p9747mcx/fWEYRjEQBAF83xd4nidwXReO48C2bZC3lknhXqGAj/l8I8gj/9uEjtuKVcBuPr9owsrbJJPzPpvheTQSvqZpSQvOuo3B62SCp+EQd73eZgMmUaDwMh7jvt/HTaeDi2bzpwG3vNzgbTqVmg+xgKCQqVetFs7qdRxXKsLP5XLJCMsGTHwcDHDb7YrgMgYTT2s1HJXLOIgiMSEvm80mBuoVVM3rdhsn1SoOSyUR7BeL8sTc/HmjIa2+nnJxD3/dwc7KeKy+dgfqINjEsiwoqL3oui5PxplZ+9dLXD1N0zRlURSn+lUMw0gvZmLq5DR1PwE9E+oxQiT4SQAAAABJRU5ErkJggg=='; var state_solved = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAEqSURBVDhPrVPJToRAEJ0fNmZkERgIiEIj+3bxezypUaNG4+7BJXow6heUXdX2zCiaIUSSd3tbdRWj0X99bdtucUDTNFDXNaGqKkJZllAUBeR5DsjrZKJQ3VuB+IMtBPKQPzVBx75iGaDujmdNsHKfZORsvocQPPvEj6JItMBZ+xiw1w1Yf1oD785ZbIBJKJAIXnzw711wb2ywL8zvBvjK8w2it4Bq+g+eABdiqnNlgXVmgHGsEZ8xJkaYN6Cajx64tzYJ7EsOnmidroJxpIF+oJAJ8sIwFAZyC7Kmcz0B80QH/VAlgbav0IqVnTFMzk1q9bXK2T38dQfL20udB+7cgTwIbJJlGUhM3yWOaWU4M9b+9RJ/nmaapiKZiwf9KkmSDBdj4uDkIXU/Ae1xwo0cXQQMAAAAAElFTkSuQmCC'; var state_found = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAESSURBVDhPrVNJaoRQEO3TqzhPmxzAjYrihAMqqCiIeqZKV9k/3YkJLRLh7d5Uv8rb7b8+27Y/7gDLssA0TYJhGARd10HTNFBVFZB3yESh7/uwbdtbIA/5XyboeFbMAjzPezbBymeSkbOuK4zjSHxBEPYWOOsZg3meYRgGaNv2vQEmoYBhmiboug7quoaiKL4b4Cu/NliWhWr2fU9AIaaWZQlZlkEcx8TneX4f4dWA1WyahgQITEzTFKIogjAMyQR5HMftBmwLrGZVVZAkCZERQRDQil3XhTzPqdVjlc97+OsOHMc5PPDhDthBYBNFUYCBvYsoirQynBlr/3qJP09TlmVKRvGlX0WSpOtiTLycfKXuJ+0c7jtCU1KuAAAAAElFTkSuQmCC'; var state_clear = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuNUmK/OAAAAFkSURBVDhPrZNLa8JQFIT9yy1uC30mNr4fIBXcKC6UCD7+RYvYRQlBwbRaY2pIbSxtKC6mOcdGY7RQQi/M4obMN3PPTSKR/1qFQuHGFfL5PHK5HCubzbIymQzS6TRSqRTcdxZ7mWSUZRm9Xm9Hki0iqOjdMUGwgVDyITPBDgHoWfT2aNuEKgeTvX0QcP0m4Mo4Z3AsFlu3oLP+BSBal7jQz3CqnewDnG4Xfn12OnhvtbBarViO48C2bZimCV3XQWvTgKbsN3+023h1Bzqv17FcLtloWRYMw8BkMoGmaQwQRXF9BD+AUs1GA8+1Gh4rFcxmM04cj8cYjUYYDocMoVaCIKwB7i0o98UiFs0mXtzUp2oVarmMh1KJDYPBAKqqQlEUTKdTbkV71/flv0oQJDiLfr/Pdf3rx7z9DjwKNUkmk/BEMFqSJPHA6MxUeyf5t98gkUhwGzKH+lXi8Xh4MyWGTg5T9xt4yvfg78PulQAAAABJRU5ErkJggg=='; var moveMysteriesIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAC4SURBVHjaYvz//z8DDDAyMiI4SACohpEBB2BB1nzh+hesikByMEPQLQHJgAVVbKbjsoRhzexYBgNNHqwuAQmgaL5zJBPORhbHZQgLMgekGVkBLpchewPFAFAYIPsXF0CRh8YCyCYwhgihigENhoujYwQDyCSkGaYGBWM1FWoAPpsxXECOZhBmwRVQyFGGL4UyIidldMWEYgMEmEhJ97jilGAYYA19qBwLkZbgdBVGGCCHAzHeAQgwAAYJB8lhWYArAAAAAElFTkSuQmCC'; var deleteMysteryIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAp9JREFUeJxVk8tr1FcUxz/3/n55VFMT8gCtQ6uLUBqqCCbiSgqFgpa2mVIEQUo2QnFZioj0QQVduOhf0FXBnTQDpVJ3RkTETqXkYTudjRknhj6m6TiTYfL73XNOF7+ZMHM253Lvh/M9j3ucmdFry2feOOoGB7/GR7Pmo5yqoMlOVZOdoiU7X83dfbbcy7veAKv5Y4v4aL69WSGtbyEi2YOPiPaO4EbHIYTCybuVfF+Ayo3Phhs/L5XTrX9y29WniMHUhwtMX/4GQylf/5Q/C98RAX5sAoaGq63J3PQ73z9sOzNjNX9sMTTq883qU4JBMHjrUY2fzhyhFuDs7cfcOrGfAzHEDtzLY7g4Lpx6+HferX40O2eqj+prj0kNpvILzFz/FtTAFFMFU1Bl5YtP+OuHmww4kNEJnNkJrzvta+3NCtJRPnzxcxDFVDAR6HhT5bULl9hMM863mlhIr8Vu+KWZtL6FAAK8WPqRRhRlHeo2uOM1BJqacT4kpPHQjFe1gyKCkWUdHXqdqfwCmDH5wcdMvncegIl3z5G+cpghl3GYEVQPetVsVN1h1n/7tVO3ZWWo7J5rv6/gHLu8qeA1hA18ROee1sY6dOcvWQDDQJXGxjqDXRCHimx4bTWfRHtHcIB30Cgt96miCgYmQq20RuwyLjhHrPLEWzRwxY2OEwER0Cqt9KmaSJawCrXyGkMu49rmENUrfu5OqUgIBT82QeyA7Rf8W7zPyJtzu2McPPAqz395QNJssMdD4jxOtfB+WYvOzLh3/u1hXymVpbWds8Z/BIPNAA3p2zP2RTA+4EnUqs8Tm764bu2+Zbp3cmoxVZvPPkmS9aHTsOAcbXNd5f5l6rWl46NHgnE1qM2majlTAZGqUylGpl+e/kNXevn/AT0JpV86x3yxAAAAAElFTkSuQmCC'; var finalIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAILSURBVHjanFVBSONAFP0bJaIggbU3FcSDeKkXl4LSXrwGhF5786SHgguCdG+CRVlBKFiiFy305nEXT4UUhNKDWoRAURZaFva4Zrd1QWgp/P0zNmPaJk3ig9c/zUze/Hkz+QOICBYJEWKOaBDRJ6vEPHGlR6srOELMhMNhzOVyaBgG+kW1WsV8Po+RSIQJnRAVu7CWTCax1Wrhe9HpdDCVSjExrasJajQaFQO+6be4vX/OI8fFQaAJVFVlqokP9HNFoP8qn+V78Q6KZYO3j/7tgHz2AhbaWxM8you74hlsfAE7SqUSxGKxkkTtZQK4wRLjgt1J2o9HnPB5jxwdo+0+hKd6nfeR1zww4XGCeHl17iMEBk0Qur58nVyWQVEUWeofE5qfF+3dyeMBDbs1Pavqs0RySmBmdtpXosLzr38H+hyFF2anXH3uyZ428en+wbFv1Onh+toncTLc8LxZ4baFXPoltxctO/p9Zhmypdv3IpBwvx2Q2eOiXoJDrbCOXbHsb9mBMrZnVv75J/DRloZ1rq0u8ei1kW7CbYLnQOuT9TzbpNVsNttM+IYAbscuqB2VSoUHJnxKAK9j9+OX6Us4m82ycCoKfTqddqyvv2s1XptFfR4CTdPeCn1XmKWlxeNxLBQKaJqm78LeaDRQ13VMJBJclBgWwrbLNE4sEM0Al2mDqLNbw671X4ABANNJB/Q2gPgTAAAAAElFTkSuQmCC'; var finalIconLink = 'http://gccomment.svn.sourceforge.net/svnroot/gccomment/trunk/gccomment/res/finalcoord.png'; var addIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJvSURBVDjLpZPrS5NhGIf9W7YvBYOkhlkoqCklWChv2WyKik7blnNris72bi6dus0DLZ0TDxW1odtopDs4D8MDZuLU0kXq61CijSIIasOvv94VTUfLiB74fXngup7nvrnvJABJ/5PfLnTTdcwOj4RsdYmo5glBWP6iOtzwvIKSWstI0Wgx80SBblpKtE9KQs/We7EaWoT/8wbWP61gMmCH0lMDvokT4j25TiQU/ITFkek9Ow6+7WH2gwsmahCPdwyw75uw9HEO2gUZSkfyI9zBPCJOoJ2SMmg46N61YO/rNoa39Xi41oFuXysMfh36/Fp0b7bAfWAH6RGi0HglWNCbzYgJaFjRv6zGuy+b9It96N3SQvNKiV9HvSaDfFEIxXItnPs23BzJQd6DDEVM0OKsoVwBG/1VMzpXVWhbkUM2K4oJBDYuGmbKIJ0qxsAbHfRLzbjcnUbFBIpx/qH3vQv9b3U03IQ/HfFkERTzfFj8w8jSpR7GBE123uFEYAzaDRIqX/2JAtJbDat/COkd7CNBva2cMvq0MGxp0PRSCPF8BXjWG3FgNHc9XPT71Ojy3sMFdfJRCeKxEsVtKwFHwALZfCUk3tIfNR8XiJwc1LmL4dg141JPKtj3WUdNFJqLGFVPC4OkR4BxajTWsChY64wmCnMxsWPCHcutKBxMVp5mxA1S+aMComToaqTRUQknLTH62kHOVEE+VQnjahscNCy0cMBWsSI0TCQcZc5ALkEYckL5A5noWSBhfm2AecMAjbcRWV0pUTh0HE64TNf0mczcnnQyu/MilaFJCae1nw2fbz1DnVOxyGTlKeZft/Ff8x1BRssfACjTwQAAAABJRU5ErkJggg=="; var editIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFUSURBVDjLrZM/SAJxGIZdWwuDlnCplkAEm1zkaIiGFFpyMIwGK5KGoK2lphDKkMDg3LLUSIJsSKhIi+684CokOtTiMizCGuzEU5K3vOEgKvtBDe/2Pc8H3x8NAM1fQlx4H9M3pcOWp6TXWmM8A7j0629v1nraiAVC0IrrwATKIgs5xyG5QiE+Z4iQdoeU2oAsnqCSO1NSTu+D9VhqRLD8nIB8F0Q2MgmJDyipCzjvYJkIfpN2UBLG8MpP4dxvQ3ZzGuyyBQ2H+AnOOCBd9aL6soh81A5hyYSGWyCFvxUcerqI4S+CvYVOFPMHxLAq8I3qdHVY5LbBhJzEsCrwutpRFBlUHy6wO2tEYtWAzLELPN2P03kjfj3luqDycV2F8AgefWbEnVqEHa2IznSD6BdsVDNStB0lfh0FPoQjdx8RrAqGzC0YprSgxzsUMOY2bf37N/6Ud1Vc9yYcH50CAAAAAElFTkSuQmCC"; var removeIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg=="; var waypointIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIxSURBVDjLpdNdSFNhGAfww0Cri+gyKLowpMC+LsooEy+SgqJuKqRIiIQKkryoi4zaUmbWSHKdPkYz05xdnKNobmwW6Vi6tbk2TDYl82PTTSr3PXe2s2T+O+dgYwV54S7+vBcvz4/neXleAgCRTf570UXdLda9ORUytW1LDbbkp1TK8h8PLu1rvn92C7houBxfEbA/E+Hn4C6wAQMYTxO8vbkwvMjBYiKED3X7BUQAaFqao6XLgxZyDaxyAp9JArYnBCLjd5CM2bDIupCI6MEEtRjQtWK2rx7t13fzQMUfYHNfx7H4wtQ9xFwPEZuuR+I7jWSgH9H5FrBRI4KeGgTcN6CoKoT3YyMaL+TxwCYBoOi6M5+6i37xgM9YICQ8elnAmKCai4YDJHCPnEDnrUJMdFfxxUg/Ik2JlSPq7anYtAw+0x74zXs54AqYGRLxMN9FK/yem5hySpcMDYfh6hX/DXRR15yhcclS2FEBv+Ugl0OIjFWCmVUgGR9FzE8h6mvGF7MMY21lMJNHecCZBrRUWXhhcrn9ga0IOy4Kxey8BoGZWnwbKsCkbSOGX+cJwFtJEQ9I04C+o5SNTojBuOXc3I8Qn1Nh7v062BUiWHXnWLtD+1TVTxt7anPhfHUayqs7eKAkDajbz3tN5HpYH4swJBfBQq7Fu6aSROZOcAWlLyt3Ch1kzr/iIv0DyHpqirMCvloVJ7MChGJ9w5H0Cq8K6Lx9gAeqVwM8X/6F/Lkh8+43zznRPkqpYfEAAAAASUVORK5CYII="; var origfound = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACaSURBVHja7JXLCoAgEEWdiGjpB4WL6KsjAsWvimhKYdAMgny0iO5qBOfMYzEXEJGRlFLuESEhBFAMBuwD12ph9dacPt3J5FKOX6AOgX03QEyXYQGQUmI4Ropo+oq6zS0L9veTFZxTtNLs4GId/+Af/AXwO0eoyCrstT+u26wnTIVNesSLgxi4b1FPrInihrWMc+48r4SZ7gIMANPlS6BG6nS1AAAAAElFTkSuQmCC'; var origsolved = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAC7SURBVHja7JVLDsIwDETtNkDPwT6rIsQZuCQHghUcgivwS4Y6yCUIKVKp2fVJaaZSPflUGjMAUlbE75cfOBBYNYtxbji7NXSfXz4+KiG1WpMv0BsPNSwtkIzX0SHGQPs6Mhmgp68CP8iFBVlRw6W5kkd+P2ORjfbGlug/MjdWJuPJeDIuhZBmsHkIqbBCIjghQd+CsLk2ED1mbM9LtEniuzXJCST6hrQmqZGddoJ2pyN571+t6R/N9CnAAC9tlQThla5PAAAAAElFTkSuQmCC'; var origunsolved = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACvSURBVHjaYvz//z8DHDAyInGIA39ZEGzm3/8Z4UaBDUYyEKSQ+Q+Q8R+hCK/BrIz/Qep/cSDE2L7/Z2RCtxlsK5GGoqtn+4HkeaBTIa4lwTB84Bcn43+QBUzo4UQpgLkabDA4TKkMmKhuIjRIqW8wzVw8avCowcPBYGgRTPVCiA5BASw0wKUbGdUSOnioyY4o20FVE6iwx8AgcWIwmr6rR4+C9TJSWpliKzJBACDAAOfWdEr4Mcv8AAAAAElFTkSuQmCC'; var finaliconfound = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFRSURBVHjaYvz//z8DDBw6dAjBIQPY2dkxwtiMIIOxGQhURJRhQL1YLWAh10B09RgWHDx48D8Iw8DGvaf/5zfPBdNgMK/tPykAZh4LLpfsO3aJwWOnKwPbjG8MDAUNYLFfGVxgmk2jDKEwsRKrfiZCXoUZBjYQZAlI7EYXGIMt5GdnYJjfzvDm3j38BlspCJGeHIAWiBxciRLmGAaLKCnB2WW8vRhmwFyN4Su0IMEaFDKy0kQ5FB7mne+JC2M1WWGc4YziemAkvjl/Hasc1lTh52QCThX4wKf0s+BgE8EhjzNVwIIDPZxBLgR5HTkuSDIYPTgYJjSADSVkIN6ggCW7fceI8zZJLkZ22bEH70hO2nhznpOVHjx7U9VglEhDy7KEilG8BoOSHbnBQdDFsGR36/FbkgxGqUGwFfKgIIC5FtkH+IIBVIPQrGpipFVlChBgAFhG0uUgufqcAAAAAElFTkSuQmCC'; var finaliconsolved = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJtSURBVHjanFU7axRRFP7uncc+shtfK1toQFKI22hjlTKgWR8ICv4AK+1MFbALCIqCkDKNWttEUiUWBmy2EREsjAgbBK2S9ZHd2ZnZ2Zl7nLnrzL5m9uEHw1zuOfe753733HMYESFE2WImU5ARJgQJcCSA/fvLlRxCyYKTB2s7Q9nIJyC+4rCGaCHFPa7NUhF25hCb6SYmwU17Brozi7qyDyFEm+twtlKUk8RLDebk2yc1L2fhtd7A/+CWkwevZ2Gk9tvbedJx3WDW1QOVQmy+fU/3Hz6Xf4kXj2galA9VKjdhqa5G6WNucSiCnconlN9cgr5uAsurcs6515FQP7fSdbzzoG9dTtNhKG5aXpCZ/pN4xJBMEgabBHNfnspPbngkBbx8jNrenrR5CodnoHPznHWJFs4cn15gf4PCu1dyuBHcEWPDKVWYn4/GK/lnQxxh1EOn6pGEa9QhpgHH03OnJgo00vzJ77550fYjZmx4wdm5E4k690XvX2Lt426sTe19SSFuLF6UWTEK9bsfpGyFGJuUgih+YSjHoM5BhMHRe+9iECSlSDAOyoG1VUk6ihA9NURNMgZpt1MZf+wkcIrJisG0q3z7NXVq81HGxYXz0fOeBiwipvHO4ZMdW0b9KhdUTJnHGftorFOQdtPKoQoBJedHrDrMtmw70TFMu6/ff05EbJsu4MKWYS/V4dyuFWPr60G1KmtzVJ9HYLl6jS77XAFnpzW1mEEOdE6qllV1v4kxbKSMCTtHDtwjtCwXjua013583i2VShdYXzM1mcVVpN0miPmbMi0sKjFNtJsCpM74AfrH38pSJpz+K8AAGeJxOI+fpJMAAAAASUVORK5CYII='; var finaliconunsolved = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIVSURBVHjaYvz//z8DHDAy/v/PBKT+MRAN3kgyMHwTYGBg/s3wX/o2SDcEsICI/8yM/2GGfeNlYuD+COR8/UqUweyyPAwi1/8zvJJlYAQ5DCz4/z/Iif/BLv3JycjA/h3IfvCAgUFUFKKLi4tol38WATr2PyMD77t/YIOZQIZ+AJrD/uoTUPYzw/aL9xgK+lYwbDpxDaJjfjtRBvO++cfA+/gzPEjBQfHAkIPBgIcHLPabhxdM7zt2icFjpysD24xvDAwFDWCxXxkQH7BplCFMTKxEseAv0ETmPwwM4MDWOfADp0tghoENBFkCErvRBcZgC/nZwb56c+8eOOiYoHHFhG6QlYIQA8kAaIHIwZWQUPj8FbvBIkpKcHYZby+GGTBXY/gKLUiYsDlARlaaKIfCw7zzPYYcVoPVZIVxhjOK64GR+Ob8daxyLNgE/ZxMwKkCH/iUfhYcbCI45JlwaYQFB3o4g1wI8jpyXJBkMHpwMExoABtKyEC8QQFLdvuOEedtklyM7LJjD96RnLSZ8Ek6WenBszdVDUaJNFCWJQL84+Nm+McMNfiKAwcDrmRHanCADf0LNfjvX9xVBizZ3Xr8liiD/7DAUgWwUDYGlp/f+ZgYOJ98QFXFx8eQYKsKdK0wjlzyCYV7OUSdQfcbUg2CXDXBwcePxAU+Pz8K9+6OHdeV3d21GCmtTMFVHEwP0KUwMYAAAwD3trv/JouOHAAAAABJRU5ErkJggg=='; var archive = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALnSURBVDjLfZNLaFx1HIW/e2fuzJ00w0ymkpQpiUKfMT7SblzU4kayELEptRChUEFEqKALUaRUV2YhlCLYjYq4FBeuiqZgC6FIQzBpEGpDkzHNs5PMTJtmHnfu6//7uSh2IYNnffg23zmWqtIpd395YwiRL1Q0qyIfD56cmOvUs/4LWJg40auiH6jI+7v3ncybdo2Hy9ebKvqNGrn03Nj1+x0Bi1dHHVV9W0U+ye4d2d83+Ca2GJrlGZx0gkppkkfrsysqclFFvh8++3v7CWDh6ugIohfSPcPH+w6fwu05ABoSby9yb3Kc/mePYXc9TdCqslWapVGdn1Zjxo++O33Fujtx4gdEzj61f8xyC8/jN2rsVOcxYZOoVSZtBewZOAT+NonuAWw3S728wFZpFm975cekGjlz8NXLVtSo0SxPImGdtFfFq5epr21wdOxrnMwuaC2jrRJWfYHdxRfIFeDWr0unkyrSUqxcyk2TLQzQrt6hqydPvidDBg/8VTAp8DegvYa3OU1z+SbuM6dQI62kioAAVgondwAnncWvzCDNCk4CLO9vsJVw8xqN+iPiTB5SaTSKURGSaoTHHgxoAMlduL1HiFMZXP8BsvkbO1GD2O3GpLOIF0KsSBijxmCrMY+FqgGJQDzQgGT3XrJ7DuI5EKZd4iDG+CHG84m8AIki1Ai2imRsx4FEBtQHCUB8MG1wi8QKGhjEC4mbAVHTx8kNYSuoiGurkRtLN76ivb0K6SIkusCEoBEgaCQYPyT2QhKpAXKHTiMmQ2lmChWZTrw32v9TsLOyVlu8Nhi2G4Vs32HsTC9IA2KPRuU2Erp097+O5RRYvz3H1r3JldivfY7IR0+mfOu7l3pV5EM1cq744mi+OPwaRD71tSk0Vsp3/uLB6s2minyrIpeOf7a00fFMf1w+MqRGzqvIW/teecdqV5a5P/8ncXv9ZxUdf/lCae5/3/hvpi4OjajIp4ikVOTLY+cXr3Tq/QPcssKNXib9yAAAAABJRU5ErkJggg=='; var archiveAdd = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMVSURBVDjLdZNLaFx1GEfPnZk7cyfNkElS0jTVKKRpE2PSpAhKHyqo2QhtShUiCPWBLhTdFKUUlxYUqggGxYqIbsSNFKQmVqMhTVujSQuhtnmMaR5NJs0kncz7ztz5f5+LgguNv/WPszkcS1XZbFPnDrUh8q6KRlTkrdYj/Vc3+1n/Bkz3H65T0TdV5PXapiNRU1jjztxgVkU/UyMfPtg7uLwpYGagx1bVF1Tk7ciO7p3bWp/BJ4ZsfAw75Gc1NsTGrfF5FTmtIl90Hhsp/AOYHujpRvSdUHXnwW0tR3Gqm0FLlJMz3Bw6xb0P7MdXcR/FXILbsXEyiRujasypva+Mfm9N9R/+EpFjW3f2Wk5NO25mjVTiBqaUxcvFCVlF6ht3g5vEX9mIz4mQjk9zOzZOPjn/TUCNPL/ryT7Ly6yRjQ8hpTShfIJ8Ok56cYm9vR9jh7dAbg7NxbDS09Q2dFBVA1d+mH02oCI5xaoKOiEiNY0UEtepqI4SrQ4TJg/uApgguEtQWCS/Mkp27hLO/UdRI7mAioAAVhC7qhk7FMFdHUOyq9h+sPJ/gU8prfxMJr1BORyFYAj1yqgIATXCXQ8GtAiBLTh1XZSDYRx3HVn5iZSXoexUYkIRJF+CsiKlMmoMATXmrlA1IB5IHrRIoHIHkfpdpO6M4fkcLiyFuLwWJu26lNwUB5MTtBghoCJhn20DYSivgxRBXDBFcBooK/yyEGTKruXxRx/inppmfv3zLOevXWByw630qZHh2eGPKCQXINQA/gowJVAPENQTflzw6GzZg/EZ9mx/CmN5PNK+j4s5z/KJMU9nFkdenRw4GZv//WsMQYjsBjsMCqbokcisY1uVHGp9A4DjT5yhqa4Do/j8n343b+o7X7oSHzvzbT4x48UnzrVj+Z1I48NY9lZEwnw1OkT1dpvh2bMcaOrhvfMvkimsc21yyv1PTH/0dbWpkZMq8lzTYy9bhdU5Pr84yPVomX0dB2iu72Jm5SqXJka4dTP1gfV/OV8+3datIicQCarI+8eXc/uB14AIkAE++a1v+cTfDyOvKVPjhy0AAAAASUVORK5CYII='; var archiveRemove = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMNSURBVDjLdZNLaFx1GMV/d+bO3DtJxkwSSWNq05YkrTVa04qIiOiiRIxgE2ohhUIKRQQFBcGiIiJiFaGIYEFERFy5dCE1pQ8JIbSEJhG66GM6idOk6Uwyec7zztz7/z4XlSw0nvXhx4FzjqWqbKXb517rQeRzFY2ryPv7Bkf+3Mpn/RuQHDncqqLvqMjbLZ2DCVNZZjV9uaii36uRr58Yunx/S8Cd8wMRVT2hIqfi2/u6tu17nZAYiplJIk6YpdQo6/em7qrIGRX5sXd4vLIJSJ4f6EP0Y6ep94Vtjx3BbeoGrRGs3eGv0dPsePx5QnU7qZZyLKamKORuTqgxpw++MfGbdXvk8E+IDD/cNWS5zU/iFZbZyN3E1Ir4pQyOVaWtYy94a4QbOgi5cfKZJIupKcprd3+x1cjxPYfOWn5hmWJmFKnlcco5yvkM+fkFDg59SyRWD6U0Wkph5ZO0tO+nsRmmf589aqtISbEao65DvLmDSu4GdU0JEk0xYpTBmwMTBW8BKvOUsxMU01dwdx1BjZRsFQEBrCiRxm4iThxvaRIpLhEJg1WegZBSy16ikF8niCUg6qB+gIpgqxEe9GBAq2DX47YeIIjGcL0VJHuRDb9A4DZgnDhSrkGgSC1AjcFWYx4UqgbEBymDVrEbthNv28PG6iR+yGVlIsfKtTm8xXVCD0VpfY5/EojEQpEIEINgBaQK4oGpgttOoLA6sUIt6/L08Q9xdvdQuX6BG+OX8IP1+pAaGZsd+4bK2hw47RCuA1MD9QFBfSFzJUn3S0dxZ0axfj5G3eyv7Opopja3HthizKuF+fHhW+mxU82dh7oe3d9POL4XyinwSpiqj1mr4bbthv73Nidsf/oIIU+czSlP//Bsq4q8q0bean9qINHe2w++R37+KtOffckzrwxSP3eOaiVLGSjkw9yaYeE/Z7p29kCPGvlIRY51vnjSqiylmb/4B3be0x0tgWWH7lHIBaQXw8b39BPr/+589UxPn4p8gEhURb7ierWntHr/zbCxdpqwLih89/KF4Iu/AXSvuZLBEiNYAAAAAElFTkSuQmCC'; var commentIconShare = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACNElEQVQ4T32TTYtSURjH/8e3MvVqQ5PjFJNvODJiJojgB3DRSnBnX8GFG1tJCxlx4cKNhBsLFxIuBEGEdm3cubJBpIF8SWocNSfHqaYCPXEOKN65MA883MM99/k9L//7kHq9TrFlq9UKlFKsn+FwmGzf3zwTBjCbzZv3LHBt/X4foVCIA14cv6fvXj2XwDYAlpX52mQyGUajEYLBIGHBBw+1GE5+4iaE1Go1UQWEEMjlcu4qlQqJ0ic8MWqxK6gwXfzDl7EYQqrVKrXZbOj1emDBSqUSOp0OVqsVL9+ewLynw67hLnpnc1j3DZjO/2BwfrWphFQqFWq328FKZs6yarVaxN98hMUkwHhfjf7octOaxaTH+Mc1+qMFh5ByuUwdDgeGwyEP1uv1eP1hAeu+HqYdDQbnC4kI5j0Bo4tf6J1dgpRKJep0OvkAWd9qtRrHlYEoSHfvDnYENS4W17j6/Vd0R4rFInW5XFx3NgOFQoHpdAqLxYLZbIZAIMBVsD1+gO7X71IVCoUCdbvdHLAtIYN1u11EIhEOODQbcToYSwH5fJ56PB4+uG1j2TudDqLRKAcc2R+h8/mbFJDL5ajX64UgCCIAa6PdbiMWi3HA08MDnJwOpYBsNkt9Ph8MBoMIMJlM0Gq1EI/HOeDZkRWtTk8KyGQy1O/3Yz6fiwAajQbNZhOJRIID1peSXzmdTtNAILDZvvU+sKE2Gg2kUqnbtzGZTFL28XK55JDtdWZKZDKZWwH/ARw1EUZjI/GaAAAAAElFTkSuQmCC'; var linkIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABSlBMVEX////////9/f3+/v77+/v8/Pz////4+Pj09PTu7u7r6+vs7Ozp6enn5+fk5OTh4eHi4uLZ2dnX19fW1tbT09PS0tLPz8/Nzc3Ozs7Ly8vHx8fIyMjGxsbDw8PExMTBwcHAwMC9vb2+vr67u7u8vLy5ubm6urq3t7e4uLizs7OwsLCtra2srKypqamnp6empqajo6OdnZ2bm5ucnJyZmZmampqYmJiVlZWWlpaPj4+QkJCOjo6Li4uJiYmKioqFhYWDg4OBgYF+fn54eHh3d3d0dHRzc3NwcHBxcXFubm5tbW1qampra2toaGhpaWlnZ2dkZGRlZWViYmJjY2NgYGBfX19cXFxYWFhSUlJTU1NISEhDQ0NAQEA8PDwpKSkmJiYiIiIfHx8ZGRkUFBQSEhIQEBAODg4ICAgHBwcAAAABAQECAgIDAwMEBAQMpqGoAAAAaXRSTlMABAYGCAgIDBAWGBgaHCAiIiosLjAyNDY2ODw8PkBAQkRGRkhISkpMTFBUVlhaXF5gZmhoampsbm50dHZ4enp+gYOFi42PkZOTlZeZmZubnZ+foaGjpaersbG7wcPH293h5evv8fP1+/2IDLwBAAACG0lEQVR4Aa2WZ1NVMRRFs0AfdiyKBTsoWETEAhYsWMQiFsWOiopyFP//V7kT792EGULOG9cXMm9Ye5+bB8kNLlg/cv/pxCCEtmDrrEUeQzv+mIlO/P64LaWDNn1/gnx3Qt5Xgs+/O5rupNc/Bh1pgs8fJATWKAG/vwhrreYlfj9NwOtH9BSn3H6k2clJny8Yjp++WcW/pu8v8QNX48ev8n7fiv52i4znA9L5BTvsH9tCjivy4fBeWN5v8+R8Pss/Xv3cgPojvSEH8k/EFcv8SUoCZhrfjmh+/SGvGnCm8e20+gv8wLwtcrbV+MbS/heE1Zg2syH5doGi+cWmtP8yZfMLPlxM/cL5oROIS38/3Phqi7zvQb6jnwGr+ZL4rYNvi/zr1nAu8fdZ0fw6P9L9b/Wa+sv8odZ/7KfPGp6X+cOJHz5azUiRf5LUD3S/q5ZztynyByHxK4AO2R6/dXRWnsvX/u/33t/9y77/GVx+IOmvwHd/9cg/EBddLj901z78iauNef9S6gd+1P6uopeAzYlf0fnTzM7r/Fgg5/Mp9SvY2Q86Px5mA7oy92fREwxl7u/IWD5goj7yV/KfEbLcib+2LgjH/aV3gNcE4bq/dltkCle/wJQgX/2Of8QpPPMLvinBM7/gV208wtEvYKF2phnw9Cvhtwm3nyT459dTtN+vGfz9Ar7Lv+fwBbcsMrfH5Qs4dPPJg9EtPv0vbCAQGW6wa0oAAAAASUVORK5CYII='; var linkIconSmall = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAABO0lEQVR42pWUz2rCQBDGQ4wevHkUIpicerc9Su8K7Ts1iGf/HNqrr+AD2IvSUrWnngX7Am0FifXQfls+4SskWXfgB5nszmTm29l4nps1wQocwQFMQNUxh+eDBPyAHdjz+RmUXRKNGPgNYnBF3/BwToIADBiwAaGsXUplVrvjxndqpBaBr3MS1aX8BngBU66FbNOs9W2JzBdTcA1mDFqysg39HqjkJbigoMY6YM6gR1a2pT8GpTxhT5qkTLKmvwBtaXVY1MpANt5KJa9MmtJP+NHMYRvJ6TREE1NJl/tMu62isU9kTpo8nZMmN6wktp3MUib2b9iCIJjyfSittmyJjrw7UUalW9HEauYWf4KavAtlToZ5wv5X2fcnDHhjskgmduxyq83/5ImBH3J3ejxNJyujsnsRtl809ln2C3fcZBrgCT7NAAAAAElFTkSuQmCC'; var languages = []; languages[SETTINGS_LANGUAGE_EN] = { mycomments : "My comments", mycomment : "My comment", myfinalcoords : "My final coordinates", and : "and", both : "both", nothing : "nothing", archived : "archived", not_archived : "not archived", never : "never", download : "Download", finale : "Final", final_coordinate : "Final coordinate", final_location : "Final location", final_location_byGCC : "Final location by GCC", menu_options : 'Show options', menu_showmycomments : "Show my comments", menu_export : "Export", menu_import : "Import", menu_delete : "Delete", menu_patchgpx : "Patch GPX", type_untyped : "untyped", type_unsolved : "unsolved", type_solved : "solved", type_found : "found", type_archived : "archived", ov_totalamount : "Total amount", ov_amountarchive : "Amount of them in archive", ov_lastex : "Last export", ov_lastim : "Last import", ov_lastup : "Last check for updates", settings_intro : "Thanks for using GCComment. Visit github.com for general information and documentation or geoclub.de for discussions & feedback. If you have direct feedback or questions, contact us at ramirez_@online.de or birnbaum2001@gmx.de.", settings_feelfree : "Feel free to show your appreciation :)", settings_enterUUID : "UUID for server synchronisation", settings_enterServer : "Server for server synchronisation", settings_allowExport : "Allow export of comment data to other scripts (e.g., GC Tour)", settings_lazyTable : "Lazy table refresh (no update on state change or delete from overview)", settings_syncWithGS : "When saving the final coordindates, also correct coordinates at Groundspeak", settings_saveCacheNotes : "When saving comments, also upload them as Groundspeak cache notes", settings_saveprefs : "Save preferences", settings_language : "Language", thank_you : "Thank you", table_comments : "My comment & final coordinates", table_lastsave : "Last save", table_actions : "Actions", table_ihaveit : 'I have the final coordinates :)', table_isarchived : "This cache is archived", table_fromhome : "from home", table_markcacheas : "Mark cache as", table_editondetail : "Edit on Detail page", table_removefromarchive : "Remove from archive", table_addtoarchive : "Add to archive", table_finalat : "Final at ", table_filter_all : 'Show all', table_filter_untyped : "Show all untyped", table_filter_unsolved : "Show all unsolved", table_filter_solved : "Show all solved", table_filter_found : "Show all found", table_filter_archived : "Show all archived", table_filtered_by : "Filtered by", export_step1 : "1. Choose which type of comments to export.", export_step2 : "2. Choose whether to include archived caches.", export_step3 : "3. Choose the target format:", export_explain : "By pressing the 'Perform filtered Export' button, your caches will be filtered and the output will be generated. You will be asked to save a cryptically named file. Just store it where you like and rename it appropriately, e.g., 'myfinds2012.html'.\n\nYou can also export to Dropbox. You will be asked for a file name that will be created in your Dropbox folder.", export_perform : "Perform filtered export", export_toServer : "Export all to server", export_toDropbox : "Export all to Dropbox", export_toDropboxEnterFileName : "Please enter the file name", export_toDropboxPerformFilteredExport : "Perform filtered export to Dropbox", export_toGistPerformFilteredExport : "Perform filtered export as shareable link", export_toServer_result : "The server said", import_explain : "You can import backups that were previously exported using GCComment. The only file formatted supported right now is GCC, i.e., GCComments own file format. After pressing the 'Execute Import' button, the import will be parsed. Comments will be imported, unless there is already a comment with a newer time stamp. So more recent comments cannot be overwritten by older backups.", import_choose : "Choose GCC file to import from (*.gcc):", import_fromServer : "Load from server", import_fromDropbox : "Load from Dropbox", import_fromGist : "Load from link", import_fromDropboxCheckForFiles : "Check on Dropbox", import_perform : "Execute import", import_close : "Close import window", import_resultimported : "Imported comments", import_resultnotimported : "Already existing", delete_select : "Select the types you want to delete:", all : "all", delete_perform : "Perform delete all", delete_result : "Removed caches", delete_confirmation : "Do you really want to delete comments according to your filters?\n\nIf you press ok, all comments according to the selected filters will be removed! Make sure to have a backup! All removed comments will be written to the error console.", delete_confirmation_overview : "Do you really want to delete this comment?", patchgpx_explain : "You can open an existing GPX file and patch it according to the options selected below. By pressing 'Patch and Download', the GPX file will be loaded and you will be asked to save a file with a strange filename. Save it and rename the file to something useful, e.g., 'onlysolved.gpx'.", patchgpx_remove : "Remove caches from GPX that ...", patchgpx_filter_nogcc : "have no GCC entry", patchgpx_filter_markeddefaulttype : "you marked with default state", patchgpx_filter_markednotsolved : "you marked as not solved", patchgpx_filter_markedsolved : "you marked as solved", patchgpx_filter_markfound : "you marked as found", patchgpx_changeorig : "Change the original waypoint's coordinates to your final coordinates", patchgpx_addwptforfinal : "Add additional waypoints for final coordinates", patchgpx_stripemojis : "Remove emojis if present (warning: beta state. if your emoji was not removed, please send the GPX to ramirez_@online.de)", patchgpx_striphtmltags : "Remove HTML tags from descriptions", patchgpx_perform : "Patch and download", detail_final : "Final coordinate", detail_finalsave : "Save final coordinate", detail_finaldelete : "Delete final coordinate", detail_lastsaved : "last saved", detail_edit : "Edit comment", detail_share : "Share comment", detail_delete : "Delete comment", detail_thestate : "State", detail_save : "Save comment", detail_cancel : "Cancel editing", detail_add : "Add comment", detail_finaldeleteconfirmation : "Do you really want to delete the final coordinates?", detail_deleteconfirmation : 'Do you really want to delete this comment?', detail_inclfinal : "incl. final", detail_jumptocomment : "Jump to Comment", map_enablemm : "Enable mystery mover and show ...", map_area : "161m area", map_home : "link to original", map_notusingleaflet : "GCComment mystery mover only works on the standard (leaflet-based) map of Geocaching.com!", map_includewpt : "Include waypoints", log_markfound : "Mark as found in GCC", log_movearchive : "Move to archive in GCC", alert_couldnotparse : 'Coordinates could not be parsed. Please correct them before saving.\nError Message:', alert_coordsnotvalid : "Coordinates do not match DegMin, Dec, or Plain", gpxexporttitle : "Waypoint listing with final coordinates of geocaches", gpxexportdesc : "This is an export of ", gpxexportwpttitle : 'GCComment Final and Comment', kmlexporttitle : "Waypoint listing with final coordinates of geocaches", actionfailed : "Action failed", savegpx_explain : 'Use GCComment information to configure your GPX ', savegpx_addgcc : 'Add your GCComment', savegpx_changeorig : 'Change the original coordinates to your final coordinates', savegpx_addfinal : 'Add final coordinates as separate waypoint', update_changes : 'Changes in version ', update_clickToUpdate : "Click here to update!", tmpl_commentremoved : "Removed comment.", tmpl_patchresult : "Patching removed {{countWPTRemoved}} waypoints.
Patching added {{countWPTAdded}} waypoints.
Patching changed Coords of {{countCoordChanged}} waypoints.
The GPX now contains {{total}} waypoints.", tmpl_import_replace : "Replacing the old comment with a new comment.", tmpl_import_save : "Saving new comment.", tmpl_update : "Hooray, a GCComment update is available. The new version is {{serverVersion}} while your installed version is {{version}}.", editWaypoint : "Edit waypoint", removeWaypoint : "Remove waypoint", addWaypoint : "Add waypoint", waypoints : "Waypoints", archived_filter_no_archived : "no archived", archived_filter_include_archived : "include archived", archived_filter_only_archived : "only archived", shareImportNew : "A site wants to import a new comment:\n%name%\nAllow?", shareImportOverride : "A site wants to override one of your comments:\n%name%\nAllow?", gistNotice : "If you share comments as links GCComment will uploaded them as secret anonymous gists (they are not public, but also not deleteable)", gistNoticeMoreInfo : "[More info]", gistNoticeHide : "[Do not show again]", gistNoticeLink : "https://github.com/lukeIam/gcc/wiki/ShareLinksGerman#mehr-informationen-zum-teilen-von-kommentaren-als-links" }; languages[SETTINGS_LANGUAGE_DE] = { mycomments : "Meine Kommentare", mycomment : "Mein Kommentar", myfinalcoords : "Meine Finalkoordinaten", and : "und", both : "beide", nothing : "nichts", archived : "archiviert", not_archived : "nicht archiviert", never : "niemals", download : "Download", finale : "Finale", final_coordinate : "Finalkoordinate", final_location : "Finalort", final_location_byGCC : "Finalort von GCC", menu_options : 'Optionen anzeigen', menu_showmycomments : "Zeige meine Kommentare", menu_export : "Export", menu_import : "Import", menu_delete : "Löschen", menu_patchgpx : "GPX patchen", type_untyped : "ungetypt", type_unsolved : "ungelöst", type_solved : "gelöst", type_found : "gefunden", type_archived : "archiviert", ov_totalamount : "Gesamtanzahl", ov_amountarchive : "Anzahl derer im Archiv", ov_lastex : "Letzter Export", ov_lastim : "Letzter Import", ov_lastup : "Letzte Prüfung auf Aktualisierung", settings_intro : "Vielen Dank für die Verwendung von GCComment. Besuche github.com für allgemeine Informationen und Dokumentation oder geoclub.de für Diskussionen und Rückmeldungen. Wenn du direkte Rückmeldungen oder Fragen hast, dann kannst du uns über ramirez_@online.de oder birnbaum2001@gmx.de kontaktieren.", settings_feelfree : "Zögere nicht, deiner Wertschätzung Ausdruck zu verleihen :)", settings_enterUUID : "UUID zur Serversynchronisierung", settings_enterServer : "Server zur Serversynchronisierung", settings_allowExport : "Erlaube den Export der Kommentare an andere Skripte (z.B. GC Tour)", settings_lazyTable : "Träge Tabellenaktualisierung (Keine Aktualisierung der Übersichtstabelle nach Statusänderung oder Löschen)", settings_syncWithGS : "Korrigiere die Finalkoordinaten bei Groundspeak beim Speichern", settings_saveCacheNotes : "Lade alle Kommentare beim Speichern als Cache Note hoch", settings_saveprefs : "Einstellungen speichern", settings_language : "Language / Sprache", thank_you : "Danke", table_comments : "Mein Kommentare & Finalkoordinaten", table_lastsave : "Letztes Speichern", table_actions : "Aktionen", table_ihaveit : 'Ich habe die Finalkoordinate :)', table_isarchived : "Dieser Cache ist archiviert", table_fromhome : "von zuhause", table_markcacheas : "Markiere Cache als", table_editondetail : "Auf Detailseite editieren", table_removefromarchive : "Aus dem Archiv entfernen", table_addtoarchive : "In das Archiv einfügen", table_finalat : "Finale bei ", table_filter_all : 'Zeige alle', table_filter_untyped : "Zeige alle ungetypten", table_filter_unsolved : "Zeige alle ungelösten", table_filter_solved : "Zeige alle gelösten", table_filter_found : "Zeige alle gefundenen", table_filter_archived : "Zeige alle archivierten", table_filtered_by : "Gefiltert nach", export_step1 : "1. Wähle den Typ der zu exportierenden Kommentare.", export_step2 : "2. Wähle den gewünschten Archivstatus.", export_step3 : "3. Wähle das Zielformat:", export_explain : "Durch drücken des 'Gefilterten Export durchführen'-Knopf werden die Kommentare gemäß der Einstellungen gefiltert und das gewählte Ausgabeformat erzeugt. Es wird eine Datei mit einem kryptischen Namen gespeichert. Diese einfach irgendwo ablegen und entsprechend umbenennen z.B. 'MeineFunde_2012.html'.\n\nBeim Export zur Dropbox wird nach einem Dateinamen gefragt, welche in der Dropbox erstellt werden soll.", export_perform : "Gefilterten Export durchführen", export_toServer : "Alle zum Server exportieren", export_toDropbox : "Alle zur Dropbox exportieren", export_toDropboxEnterFileName : "Bitte Dateinamen eingeben", export_toDropboxPerformFilteredExport : "Gefilterten Export zu Dropbox durchführen", export_toGistPerformFilteredExport : "Gefilterter Export als teilbarer Link", export_toServer_result : "Der Server sagte", import_explain : "Es können Sicherungskopien importiert werden, die zuvor von GCComment exportiert wurden. Es wird nur das GCComment-eigene Dateiformat unterstützt (*.gcc). Nach dem Drücken des 'Import durchführen'-Knopf wird der Import geprüft. Die Kommentare werden importiert solange nicht schon ein Kommentar mit einem neueren Zeitstempel vorhanden ist. Daher können aktuellere Kommentare nicht durch ältere überschrieben werden.", import_choose : "Wähle GCC-Datei zum Importieren (*.gcc):", import_fromServer : "Lade vom Server", import_fromDropbox : "Lade von Dropbox", import_fromGist : "Lade von Link", import_fromDropboxCheckForFiles : "Prüfe in Dropbox", import_perform : "Import durchführen", import_close : "Importfenster schließen", import_resultimported : "Importierte Kommentare", import_resultnotimported : "Bereits existierende Kommentare", delete_select : "Wähle die zu löschenden Kommentartypen:", all : "alle", delete_perform : "Alle löschen", delete_result : "Gelöschte Kommentare", delete_confirmation : "Möchtest du wirklich die Kommentare gemäß der Filtereinstellungen löschen?\n\nWenn du Ok drückst, werden diese gelöscht! Stelle sicher, dass du ein Backup hast. Zur Sicherheit werden alle gelöschten Kommentare auf die Fehlerkonsole (CTRL-Shift-J) geschrieben.", delete_confirmation_overview : "Möchtest du diesen Kommentar wirklich löschen?", patchgpx_explain : "Du kannst eine existierende GPX-Datei öffnen und entsprechend der folgenden Optionen patchen. Durch klicken von 'Patch und Download' wird die GPX-Datei geladen und du wirst gebeten, eine Datei mit seltsamem Dateinamen abzuspeichern. Tu dies und benenne die Datei in etwas Sinnvolles um, z.B. 'nur_gelöste.gpx'.", patchgpx_remove : "Entferne Caches aus dem GPX, die ...", patchgpx_filter_nogcc : "keinen GCComment-Eintrag haben", patchgpx_filter_markeddefaulttype : "als default markiert sind", patchgpx_filter_markednotsolved : "als ungelöst markiert sind", patchgpx_filter_markedsolved : "als gelöst markiert sind", patchgpx_filter_markfound : "als gefunden markiert sind", patchgpx_changeorig : "Ändere die Koordinaten des Original-Wegpunktes auf deine Finalkoordinaten", patchgpx_addwptforfinal : "Füge einen zusätzlichen Wegpunkt für deine Finalkoordinaten ein", patchgpx_stripemojis : "Entferne Emojis falls vorhanden (Warning: Betastatus. Wenn ein Emoji nicht entfernt wurde, bitte das GPX an birnbaum2001@gmx.de senden)", patchgpx_striphtmltags : "Entferne HTML tags aus den Beschreibungen", patchgpx_perform : "Patchen und herunterladen", detail_final : "Finalkoordinate", detail_finalsave : "Finalkoordinate speichern", detail_finaldelete : "Finalkoordinate löschen", detail_lastsaved : "zuletzt gespeichert", detail_edit : "Kommentar editieren", detail_share : "Kommentar teilen", detail_delete : "Kommentar löschen", detail_thestate : "Kommentarstatus", detail_save : "Kommentar speichern", detail_cancel : "Editieren abbrechen", detail_add : "Kommentar hinzufügen", detail_finaldeleteconfirmation : "Möchtest du wirklich die Finalkoordinate löschen?", detail_deleteconfirmation : 'Möchtest du wirklich diesen Kommentar löschen?', detail_inclfinal : "inkl. Finale", detail_jumptocomment : "springe zum Kommentar", map_enablemm : "Aktiviere den Mystery-Verschieber und zeige ...", map_area : "161m-Radius", map_home : "Verbindung zum Original", map_notusingleaflet : "Der GCComment Mystery-Verschieber funktioniert nur auf der Standardkarte (leaflet) von Geocaching.com!", map_includewpt : "Wegpunkte einbeziehen", log_markfound : "In GCC als gefunden markieren", log_movearchive : "In GCC ins Archiv bewegen", alert_couldnotparse : 'Koordinaten konnten nicht geparst werden. Bitte vor dem Speichern korrigieren:\nFehlermeldung:', alert_coordsnotvalid : "Koordinaten sind nicht DegMin, Dec, or Plain", gpxexporttitle : "Wegpunkte mit Finalkoordinaten von Geocaches", gpxexportdesc : "Das ist ein Export von ", gpxexportwpttitle : 'GCComment Finale und Kommentar', kmlexporttitle : "Wegpunkte mit Finalkoordinaten von Geocaches", actionfailed : "Aktion fehlgeschlagen", savegpx_explain : 'Benutze GCComment-Information, um das GPX zu konfigurieren ', savegpx_addgcc : 'Füge deinen Kommentar hinzu', savegpx_changeorig : 'Ändere die Originalkoordinate auf deine Finalkoordinate', savegpx_addfinal : 'Füge die Finalkoordinate als zusätzlichen Wegpunkt hinzu', update_changes : 'Änderungen in Version ', update_clickToUpdate : "Hier klicken, um das Update einzuspielen!", tmpl_commentremoved : "Kommentar gelöscht.", tmpl_patchresult : "Patching hat {{countWPTRemoved}} Wegpunkte entfernt.
Patching hat {{countWPTAdded}} Wegpunkte hinzugefügt.
Patching hat {{countCoordChanged}} Koordinaten von Wegpunkten geändert.
Die GPX-Datei enthält nun {{total}} Wegpunkte.", tmpl_import_replace : "Der alte Kommentar wurde durch den neuen Kommentar ersetzt.", tmpl_import_save : "Ein neuer Kommentar wurde gespeichert.", tmpl_update : "Hooray, eine Aktualisierung für GCComment ist verfügbar. Die neue Version ist {{serverVersion}}, während die installierte Version {{version}} ist.", editWaypoint : "Wegpunkt bearbeiten", removeWaypoint : "Wegpunkt entfernen", addWaypoint : "Wegpunkt hinzufügen", waypoints : "Wegpunkte", archived_filter_no_archived : "keine archivierten", archived_filter_include_archived : "archivierte einschließen", archived_filter_only_archived : "nur archivierte", shareImportNew : "Eine Seite möchte einen neuen Kommentar importieren:\n%name%\nErlauben?", shareImportOverride : "Eine Seite möchte einen deiner Kommentare überschreiben:\n%name%\nErlauben?", gistNotice : "Wenn Kommentare als Link geteilt werden, läd GCComment diese als geheime und anonyme Gists hoch (diese sind nicht öffentlich, können aber auch nicht gelöscht werden)", gistNoticeMoreInfo : "[Mehr Informationen]", gistNoticeHide : "[Zeige diesen Hinweis nicht mehr]", gistNoticeLink : "https://github.com/lukeIam/gcc/wiki/ShareLinksGerman#mehr-informationen-zum-teilen-von-kommentaren-als-links" }; var langsetting = GM_getValue(SETTINGS_LANGUAGE); var lang = languages[SETTINGS_LANGUAGE_EN]; function main() { if (!$) { log('error', 'No jQuery found. Stopping GCComment: ' + $); return; } if (langsetting === SETTINGS_LANGUAGE_AUTO) { if ($('.selected-language > a:first')) { var gslang = $('.selected-language > a:first').text(); if (gslang.indexOf("English") > -1) lang = languages[SETTINGS_LANGUAGE_EN]; else if (gslang.indexOf("Deutsch") > -1) lang = languages[SETTINGS_LANGUAGE_DE]; } } else { lang = languages[langsetting]; } if (!lang) { lang = languages[SETTINGS_LANGUAGE_EN]; } doMaintenance(); if (GM_getValue(ENABLE_EXPORT)) { log('info', 'Enabling export to other scripts'); var getGCommentFunction = function(guid) { return doLoadCommentFromGUID(guid); }; if(browser === "FireFox" && window.wrappedJSObject){ exportFunction(getGCommentFunction, unsafeWindow, { defineAs : "getGCComment" }); } else{ unsafeWindow.getGCComment = getGCommentFunction; } } // register own CSS styles appendCSS("text", "a.gccselect {padding-bottom:5px;background-color:#EBECED;outline:1px solid #D7D7D7}", null); if(typeof(nyroModalCss) !== "undefined"){ appendCSS("text", nyroModalCss); } homelat = GM_getValue('HOMELAT'); homelng = GM_getValue('HOMELNG'); //add gist banner if(! GM_getValue("gistNoticeHidden", false)){ $('#Navigation').after('
'+lang.gistNotice+'
'+lang.gistNoticeMoreInfo+'
'+lang.gistNoticeHide+'
'); $('#gistNoticeHide').click(function(){ GM_setValue("gistNoticeHidden", true); $('#gistNotice').slideUp("fast"); }); } // starting the GCC log('debug', 'found URL: ' + document.URL); if ((document.URL.search("cache_details\.aspx") >= 0) || (document.URL.search("\/geocache\/GC") >= 0)) { log('debug', 'matched gccommentOnDetailpage'); gccommentOnDetailpage(); } else if ((document.URL.search("\/my\/logs\.aspx") >= 0) || (document.URL.search("\/seek\/nearest\.aspx") >= 0) || (document.URL.search("\/watchlist\.aspx") >= 0) || (document.URL.search("\/my\/recentlyviewedcaches\.aspx") >= 0) || (document.URL.search("\/bookmarks\/view\.aspx") >= 0)) { log('debug', 'matched addCommentBubblesToPage'); addCommentBubblesToPage(); } else if (document.URL.search("cdpf\.aspx") >= 0) { log('debug', 'matched gccommentOnPrintPage'); gccommentOnPrintPage(); } else if ((document.URL.search("\/my\/default\.aspx") >= 0) || (document.URL.search("\/my\/$") >= 0) || (document.URL.search("\/my\/\#") >= 0) || (document.URL.search("\/my\/\\?.*=.*") >= 0)) { log('debug', 'matched gccommentOnProfilePage'); gccommentOnProfilePage(); } else if ((document.URL.search("\/account\/dashboard") >= 0) || (document.URL.search("\/dashboard\/$") >= 0) || (document.URL.search("\/dashboard\/\#") >= 0) || (document.URL.search("\/dashboard\/\\?.*=.*") >= 0)) { log('debug', 'matched gccommentOnNewProfilePage'); gccommentOnNewProfilePage(); } else if (document.URL.search("www.geocaching.com\/map") >= 0) { log('debug', 'matched mysteryMoverOnMapPage'); mysteryMoverOnMapPage(); } else if (document.URL.search("\/sendtogps\.aspx") >= 0) { log('debug', 'matched sendToGPS'); sendToGPS(); } else if (document.URL.search("www.geocaching.com\/account\/settings\/homelocation") >= 0) { log('debug', 'matched gccommentOnManageLocations'); gccommentOnManageLocations(); } else if (document.URL.search("\/seek\/log\.aspx") >= 0) { log('debug', 'matched gccommentOnLogPage'); gccommentOnLogPage(); } else if (document.URL.search("\/play\/geocache\/") >= 0) { log('debug', 'matched gccommentOnNewLogPage'); gccommentOnNewLogPage(); } else if (document.URL.search("lukeiam\.github\.io\/gcc") >= 0) { log('debug', 'matched gccommentOnSharingPage'); gccommentOnSharingPage(); } else { log('debug', 'nothing matched'); } } function doMaintenance() { var INDEXBUILT = "indexbuilt"; var INDEXREPAIRED = "indexRepaired"; // first check whether the index has been created at all. this was introduced // in version 46. // index means gccode - guid mapping. // if the variable is not "done", this index is created. if (GM_getValue(INDEXBUILT) != 'done') { log('info', 'Building index for GCCode-GUID assignment. This is done only once after update on version 46'); var keys = GM_listValues(); for (var i = 0; i < keys.length; i++) { if (keys[i].indexOf(COMPREFIX) >= 0) { // we got a comment var guid = keys[i].split(COMPREFIX)[1]; var comment = doLoadCommentFromGUID(guid); if (!comment) continue; var indexKey = COMGCPREFIX + comment.gccode; GM_setValue(indexKey, guid); log("info", indexKey + "=" + guid); } } log('info', 'Finished building index.'); GM_setValue(INDEXBUILT, 'done'); } var indexRepaired = GM_getValue(INDEXREPAIRED); if (!indexRepaired) { indexRepaired = 0; } // repair needed because until 76, only the guid (the actual comment) was // deleted, but not the gccode-guid mapping if (indexRepaired < 77) { log('info', 'Performing maintenance of version 77. Removing dangling gccode-guid mappings from the GreaseMonkey storage'); var oComments = {}; var aGCCodes = []; var allkeys = GM_listValues(); for (var i = 0; i < allkeys.length; i++) { if (allkeys[i].indexOf(COMPREFIX) >= 0) { // we got a comment var guid = allkeys[i].split(COMPREFIX)[1]; var comment = doLoadCommentFromGUID(guid); if (comment) { oComments[comment.gccode] = comment; } else { log('debug', 'tried to load from GUID ' + guid + ', but nothing was returned.'); } } else if (allkeys[i].indexOf(COMGCPREFIX) >= 0) { var gccode = allkeys[i].split(COMGCPREFIX)[1]; aGCCodes.push(gccode); } } var removeCounter = 0; for (i = 0; i < aGCCodes.length; i++) { var gccode = aGCCodes[i]; var comment = oComments[gccode]; if (!comment) { // GCCode without comment ==> delete it GM_deleteValue(COMGCPREFIX + gccode); log('info', 'Deleted GCCode ' + gccode + ' because it has no corresponding comment stored'); removeCounter++; } } log('debug', 'Maintenance 77 complete. Dangling indexes removed: ' + removeCounter); indexRepaired = 77; } if (indexRepaired < 77) { indexRepaired = 77; } log('debug', 'Setting indexRepaired to new value: ' + indexRepaired); GM_setValue(INDEXREPAIRED, indexRepaired); } // GCComment auf der Profilseite function gccommentOnProfilePage() { // Datatables CSS anhaengen $('head').append(''); appendCSS('text', '.odd{background-color:#ffffff} .even{background-color:#E8E8E8}' + '.ui-icon{display:inline-block;}' + ' .tableStateIcon{width: 11px;margin-right:3px}' + '.haveFinalIcon{margin-left:3px;width:14px}'); // styling the table's content appendCSS('text','.tableFinal, .tableComment, .tableWaypoints{margin: 0px;} .tableComment{font-family:monospace;font-size:small} .tableWaypoints{width: 100%}'); appendCSS('text','.tableGCComment {text-transform:none; font-size:small;} label{font-size: small; font-weight:400;text-transform:none;display:initial;margin-bottom:4px;max-width:100%} select{display:initial;font-size: small; background: none; width:auto;padding:initial;-moz-appearance:listbox;-webkit-appearance:listbox;}'); // load settings archivedFilter = GM_getValue(SETTING_ARCHIVE_FILTER); if (!archivedFilter) { archivedFilter = ARCHIVE_FILTER_NO_ARCHIVED; GM_setValue(SETTING_ARCHIVE_FILTER, ARCHIVE_FILTER_NO_ARCHIVED); } // add links to each entry on that page addCommentBubblesToPage(); // add overview of all comments on top of page var h2list = document.getElementsByTagName('h2'); if (h2list.length > 0) { var root = h2list[0]; gccRoot = document.createElement('div'); gccRoot.id = "gccRoot"; gccRoot.setAttribute('style', 'outline:1px solid #D7D7D7;margin-bottom:10px;padding:3px;'); gccRoot.setAttribute('class', 'tableGCComment'); root.parentNode.insertBefore(gccRoot, root.nextSibling); // gccRoot.setAttribute('style', 'outline:1px solid #D7D7D7;margin-bottom:-10px;padding:2px;min-width:1000px;max-width:1300px;margin:auto;'); var gcclink = document.createElement('a'); gcclink.setAttribute('style', 'cursor:pointer;padding-left:5px;padding-right:5px;margin-left:5px'); gcclink.setAttribute('id', 'configDivButton'); gcclink.setAttribute('title', lang.menu_options); var icon = document.createElement('img'); icon.setAttribute('src', gccIcon); icon.setAttribute('style', 'vertical-align:middle;'); gcclink.appendChild(icon); gccRoot.appendChild(gcclink); gcclink.addEventListener('mouseover', function(evt) { var stats = "GCComment v" + version + "
" + lang.ov_totalamount + " " + getNumberOfComments() + " (" + GM_getValue('countWhite') + " " + lang.type_untyped + ", " + GM_getValue('countRed') + " " + lang.type_unsolved + ", " + GM_getValue('countGreen') + " " + lang.type_solved + ", " + lang.and + " " + GM_getValue('countGray') + " " + lang.type_found + ")
" + lang.ov_amountarchive + " " + GM_getValue('countArchive'); stats = stats + "
" + lang.ov_lastim + ": "; var lastim = GM_getValue(LAST_IMPORT); if (lastim) stats = stats + createTimeString(lastim); else stats = stats + " " + lang.never; stats = stats + "
" + lang.ov_lastex + ": "; var lastex = GM_getValue(LAST_EXPORT); if (lastex) stats = stats + createTimeString(lastex); else stats = stats + " " + lang.never; stats = stats + "
" + lang.ov_lastup + ": "; stats = stats + createTimeString(parseInt(GM_getValue('updateDate'))); unsafeWindow.tooltip.show(stats, 500); }, false); gcclink.addEventListener('mouseup', function(evt) { toggleTabOnProfile('configDiv'); }, false); gcclink.setAttribute('onmouseout', 'tooltip.hide();'); $('#configDivButton').click(function(e) { if (e.shiftKey) { var gistIdLog = JSON.parse(GM_getValue("GistIdLog", "[]")).reverse(); var message = ""; for(i=0;i < gistIdLog.length;i++){ message += (i+1)+": http://gcc.lukeIam.de#gcc"+gistIdLog[i]+"\n"; } console.log(message); alert(message); } }); gccRoot.appendChild(document.createTextNode(' | ')); var showCommentsLink = document.createElement('a'); showCommentsLink.setAttribute('id', 'gccommenttabledivButton'); showCommentsLink.appendChild(document.createTextNode(lang.menu_showmycomments)); showCommentsLink.addEventListener('mouseup', function() { toggleTabOnProfile('gccommenttablediv'); }, false); showCommentsLink.setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); gccRoot.appendChild(showCommentsLink); // ----- displayFilters = document.createElement("div"); displayFilters.style.display = "none"; displayFilters.setAttribute('id', 'displayFilters'); var filterclear = document.createElement('img'); filterclear.setAttribute('src', state_clear); filterclear.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filterclear.setAttribute('title', lang.table_filter_all); filterclear.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filterclear).css('opacity', '1'); filter = null; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filterclear); var filterall = document.createElement('img'); filterall.setAttribute('src', state_default); filterall.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filterall.setAttribute('title', lang.table_filter_untyped); filterall.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filterall).css('opacity', '1'); filter = stateOptions[0]; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filterall); var filterunsolved = document.createElement('img'); filterunsolved.setAttribute('src', state_unsolved); filterunsolved.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filterunsolved.setAttribute('title', lang.table_filter_unsolved); filterunsolved.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filterunsolved).css('opacity', '1'); filter = stateOptions[1]; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filterunsolved); var filtersolved = document.createElement('img'); filtersolved.setAttribute('src', state_solved); filtersolved.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filtersolved.setAttribute('title', lang.table_filter_solved); filtersolved.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filtersolved).css('opacity', '1'); filter = stateOptions[2]; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filtersolved); var filterFound = document.createElement('img'); filterFound.setAttribute('src', state_found); filterFound.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filterFound.setAttribute('title', lang.table_filter_found); filterFound.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filterFound).css('opacity', '1'); filter = stateOptions[3]; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filterFound); var archivedSelector = document.createElement("select"); archivedSelector.setAttribute("id", "archivedSelector"); archivedSelector.setAttribute("style", "margin-left:5px"); archivedSelector.addEventListener('change', function() { var indexSelected = $('#archivedSelector option:selected').index(); if (indexSelected === 0) { archivedFilter = ARCHIVE_FILTER_NO_ARCHIVED; } else if (indexSelected === 1) { archivedFilter = ARCHIVE_FILTER_INCLUDE_ARCHIVED; } else if (indexSelected === 2) { archivedFilter = ARCHIVE_FILTER_ONLY_ARCHIVED; } else { log("error", "unknown archive filter selector: " + indexSelected); } GM_setValue(SETTING_ARCHIVE_FILTER, archivedFilter); refreshTable(true); }); displayFilters.appendChild(archivedSelector); var optionNoArchived = document.createElement("option"); optionNoArchived.appendChild(document.createTextNode(lang.archived_filter_no_archived)); archivedSelector.appendChild(optionNoArchived); var optionIncludeArchived = document.createElement("option"); optionIncludeArchived.appendChild(document.createTextNode(lang.archived_filter_include_archived)); archivedSelector.appendChild(optionIncludeArchived); var optionOnlyArchived = document.createElement("option"); optionOnlyArchived.appendChild(document.createTextNode(lang.archived_filter_only_archived)); archivedSelector.appendChild(optionOnlyArchived); // pre-set from settings if (archivedFilter === ARCHIVE_FILTER_INCLUDE_ARCHIVED) { optionIncludeArchived.setAttribute("selected", "true"); } else if (archivedFilter === ARCHIVE_FILTER_ONLY_ARCHIVED) { optionOnlyArchived.setAttribute("selected", "true"); } gccRoot.appendChild(displayFilters); $('#displayFilters > img').css('opacity', '0.3'); $(filterclear).css('opacity', '1'); // ------ gccRoot.appendChild(document.createTextNode(' | ')); var exportToggleButton = document.createElement('a'); exportToggleButton.setAttribute('id', 'exportDivButton'); exportToggleButton.appendChild(document.createTextNode(lang.menu_export)); exportToggleButton.setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); exportToggleButton.addEventListener('mouseup', function() { toggleTabOnProfile('exportDiv'); }, false); gccRoot.appendChild(exportToggleButton); gccRoot.appendChild(document.createTextNode(' ')); gccRoot.appendChild(document.createTextNode(' | ')); var importLink = document.createElement('a'); importLink.setAttribute('id', 'importDivButton'); importLink.appendChild(document.createTextNode(lang.menu_import)); importLink.addEventListener('mouseup', function() { toggleTabOnProfile('importDiv'); }, false); importLink .setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); gccRoot.appendChild(importLink); gccRoot.appendChild(document.createTextNode(' | ')); var deleteAllLink = document.createElement('a'); deleteAllLink.setAttribute('id', 'deleteAllDivButton'); deleteAllLink.appendChild(document.createTextNode(lang.menu_delete)); deleteAllLink.addEventListener('mouseup', function() { toggleTabOnProfile('deleteAllDiv'); }, false); deleteAllLink.setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); gccRoot.appendChild(deleteAllLink); // // PATCH DIV // if (unsafeWindow.File && unsafeWindow.FileReader && unsafeWindow.FileList && unsafeWindow.Blob) { gccRoot.appendChild(document.createTextNode(' | ')); var patchGPXLink = document.createElement('a'); patchGPXLink.setAttribute('id', 'patchDivButton'); patchGPXLink.appendChild(document.createTextNode(lang.menu_patchgpx)); patchGPXLink.addEventListener('mouseup', function() { toggleTabOnProfile('patchDiv'); }, false); patchGPXLink.setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); gccRoot.appendChild(patchGPXLink); patchDiv = document.createElement('div'); patchDiv.setAttribute('id', 'patchDiv'); patchDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); patchDiv.style.display = 'none'; gccRoot.appendChild(patchDiv); var patchDivExplanation = document.createElement('p'); patchDivExplanation.appendChild(document.createTextNode(lang.patchgpx_explain)); patchDiv.appendChild(patchDivExplanation); var removeUnusedDiv = document.createElement('div'); removeUnusedDiv.setAttribute('id', 'removeUnusedDiv'); removeUnusedDiv.setAttribute('style', 'margin-left:20px'); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_OTHERS, lang.patchgpx_filter_nogcc); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_DEFAULTTYPE, lang.patchgpx_filter_markeddefaulttype); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_UNSOLVED, lang.patchgpx_filter_markednotsolved); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_SOLVED, lang.patchgpx_filter_markedsolved); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_FOUND, lang.patchgpx_filter_markfound); var removeUnused = document.createElement('p'); removeUnused.appendChild(document.createTextNode(lang.patchgpx_remove)); removeUnused.appendChild(removeUnusedDiv); patchDiv.appendChild(removeUnused); appendCheckBox(removeUnused, PATCHGPX_CHANGEORIGINAL, lang.patchgpx_changeorig); appendCheckBox(removeUnused, PATCHGPX_ADDFINALWPT, lang.patchgpx_addwptforfinal); appendCheckBox(removeUnused, PATCHGPX_STRIP_EMOJIS, lang.patchgpx_stripemojis); // appendCheckBox(removeUnused, PATCHGPX_STRIP_HTML_TAGS, // lang.patchgpx_striphtmltags); var input = document.createElement('input'); input.setAttribute('id', 'patchgpxinput'); input.setAttribute('name', 'files[]'); input.setAttribute('type', 'file'); input.setAttribute('style', 'margin:3px'); input.addEventListener('change', function(evt) { var files = evt.target.files; var file = files[0]; var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { handleGPXFileSelected(file.name, e.target.result); }; })(file); if (file.name.indexOf('.gpx') > 0) { reader.readAsText(file); } }, false); patchDiv.appendChild(input); download = document.createElement('input'); download.setAttribute('type', 'button'); download.setAttribute('id', 'patchndownload'); download.setAttribute('style', 'margin:3px'); download.setAttribute('value', lang.patchgpx_perform); download.setAttribute('disabled', ''); patchDiv.appendChild(download); var patchResultDiv = document.createElement('div'); patchResultDiv.setAttribute('id', 'patchResultDiv'); patchDiv.appendChild(patchResultDiv); } // // CONFIG DIV // configDiv = document.createElement('div'); configDiv.setAttribute('id', 'configDiv'); configDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); configDiv.style.display = 'none'; var gccintro = document.createElement('p'); gccintro.setAttribute('style', 'width:600px'); gccintro.innerHTML = lang.settings_intro; configDiv.appendChild(gccintro); var paypallink = document.createElement('a'); paypallink.setAttribute('style', 'position:absolute;left:650px;top:10px;text-align:center;text-decoration:none;'); paypallink.setAttribute('href', 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8FK6XVH5SULGL'); paypallink.setAttribute('target', 'blank'); paypallink.appendChild(document.createTextNode(lang.settings_feelfree)); paypallink.appendChild(document.createElement('br')); var paypalImg = document.createElement('img'); paypalImg.setAttribute('src', 'https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif'); paypallink.appendChild(paypalImg); paypallink.appendChild(document.createElement('br')); paypallink.appendChild(document.createTextNode(lang.thank_you)); configDiv.appendChild(paypallink); appendCheckBox(configDiv, ENABLE_EXPORT, lang.settings_allowExport); appendCheckBox(configDiv, LAZY_TABLE_REFRESH, lang.settings_lazyTable); appendCheckBox(configDiv, AUTO_UPDATE_GS_FINAL, lang.settings_syncWithGS); appendCheckBox(configDiv, AUTO_UPLOAD_CACHE_NOTES, lang.settings_saveCacheNotes); var IdResoverContent = ""; function updateIdResoverContent(){ var IdResoverContentActive = IdResoverContent ='
Use a static ID for exports (uploads the the IDs to IDResolver).
You are using the IDReclover autoupload with
static-ID: '+ GM_getValue("idResolverId", "") +'
secret: '+ GM_getValue("idResolverSecret", "") +'
Permanet link:

Remove
'; var IdResoverContentInactive = '
Use a static ID for exports (uploads the the IDs to IDResolver).
To activate enter your id and secret or create a new id:
Ok | Create
'; if(GM_getValue("idResolverId", "") !== "" && GM_getValue("idResolverSecret", "") !== ""){ IdResoverContent = IdResoverContentActive; } else{ IdResoverContent = IdResoverContentInactive; } } updateIdResoverContent(); $(configDiv).append("
").append(IdResoverContent).append("
"); configDiv.appendChild(document.createTextNode(lang.settings_language + ":")); var languageSelector = document.createElement('select'); languageSelector.setAttribute("name", "languageSelector"); languageSelector.setAttribute("id", "languageSelector"); languageSelector.setAttribute('size', 1); languageSelector.setAttribute('style', "margin-left:5px;"); languageSelector.addEventListener('change', function() { GM_setValue(SETTINGS_LANGUAGE, $('#languageSelector option:selected').text()); // showSuccessIcon(languageSelector); }); var option0 = document.createElement('option'); option0.appendChild(document.createTextNode(SETTINGS_LANGUAGE_AUTO)); var option1 = document.createElement('option'); option1.appendChild(document.createTextNode(SETTINGS_LANGUAGE_EN)); var option2 = document.createElement('option'); option2.appendChild(document.createTextNode(SETTINGS_LANGUAGE_DE)); languageSelector.appendChild(option0); languageSelector.appendChild(option1); languageSelector.appendChild(option2); var langsetting = GM_getValue(SETTINGS_LANGUAGE); if (langsetting === SETTINGS_LANGUAGE_EN) option1.setAttribute('selected', 'true'); else if (langsetting === SETTINGS_LANGUAGE_DE) option2.setAttribute('selected', 'true'); else option0.setAttribute('selected', 'true'); configDiv.appendChild(languageSelector); gccRoot.appendChild(configDiv); setTimeout(function(){ $('#shareLinkPermQR').qrcode({ width: $('#shareLinkPermQR').width(), height: $('#shareLinkPermQR').height(), text: "http://gccs.lukeIam.de#"+GM_getValue("idResolverId", "") }).parent().nyroModal(); $('#shareLinkPermQRBig').qrcode({ width: $('#shareLinkPermQRBig').width(), height: $('#shareLinkPermQRBig').height(), text: "http://gccs.lukeIam.de#"+GM_getValue("idResolverId", "") }); },1000); function divIdResoverSettingsSetupClickHandler(){ $('#divIdResoverSettingsRemove').unbind("click").click(function(){ GM_setValue("idResolverId", ""); GM_setValue("idResolverSecret", ""); updateIdResoverContent(); $('#divIdResoverSettings').replaceWith(IdResoverContent); divIdResoverSettingsSetupClickHandler(); }); $('#divIdResoverSettingsLogin').unbind("click").click(function(){ GM_xmlhttpRequest({ url: "https://idresolver.azurewebsites.net/check", onload: function(e){ GM_setValue("idResolverId", document.getElementById("divIdResoverSettingsId").value.trim()); GM_setValue("idResolverSecret", document.getElementById("divIdResoverSettingsSecret").value.trim()); updateIdResoverContent(); $('#divIdResoverSettings').replaceWith(IdResoverContent); divIdResoverSettingsSetupClickHandler(); $('#shareLinkPermQR').qrcode({ width: $('#shareLinkPermQR').width(), height: $('#shareLinkPermQR').height(), text: "http://gccs.lukeIam.de#"+document.getElementById("divIdResoverSettingsId").value.trim() }).parent().nyroModal(); $('#shareLinkPermQRBig').qrcode({ width: $('#shareLinkPermQRBig').width(), height: $('#shareLinkPermQRBig').height(), text: "http://gccs.lukeIam.de#"+document.getElementById("divIdResoverSettingsId").value.trim() }); }, onerror: function(e){ document.getElementById("divIdResoverSettingsId").value = ""; document.getElementById("divIdResoverSettingsSecret").value = ""; alert("Failed"); console.log(e.statusText); }, headers:{ "Content-Type": "application/json" }, data: JSON.stringify( { Id: document.getElementById("divIdResoverSettingsId").value.trim(), SecretToken: document.getElementById("divIdResoverSettingsSecret").value.trim(), TargetId: "" }), method: "POST" }); }); $('#divIdResoverSettingsCreate').unbind("click").click(function(){ GM_xmlhttpRequest({ url: "https://idresolver.azurewebsites.net/register", onload: function(e){ var data = JSON.parse(e.responseText); GM_setValue("idResolverId", data.Id); GM_setValue("idResolverSecret", data.SecretToken); updateIdResoverContent(); $('#divIdResoverSettings').replaceWith(IdResoverContent); divIdResoverSettingsSetupClickHandler(); }, onerror: function(e){ alert("Failed"); console.log(e.statusText); }, method: "GET" }); }); } divIdResoverSettingsSetupClickHandler(); // // gccommenttablediv // var tableDiv = document.createElement('div'); tableDiv.setAttribute('id', 'gccommenttablediv'); tableDiv .setAttribute( 'style', 'margin: 5px; padding: 4px; outline: 1px solid rgb(215, 215, 215); position: relative; background-color: rgb(235, 236, 237);display:none'); gccRoot.appendChild(tableDiv); // // EXPORT DIV // exportDiv = document.createElement('div'); exportDiv.setAttribute('id', 'exportDiv'); exportDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); exportDiv.style.display = 'none'; exportDiv.appendChild(document.createTextNode(lang.export_step1)); var exportFilterDiv = document.createElement('div'); appendCheckBox(exportFilterDiv, EXPORT_FILTER_ALL, lang.all, toggleExportFilterOptions); appendCheckBox(exportFilterDiv, EXPORT_FILTER_UNTYPED, lang.type_untyped); appendCheckBox(exportFilterDiv, EXPORT_FILTER_UNSOLVED, lang.type_unsolved); appendCheckBox(exportFilterDiv, EXPORT_FILTER_SOLVED, lang.type_solved); appendCheckBox(exportFilterDiv, EXPORT_FILTER_FOUND, lang.type_found); exportFilterDiv.appendChild(document.createElement('br')); exportFilterDiv.appendChild(document.createTextNode(lang.export_step2)); exportFilterDiv.appendChild(document.createElement('br')); appendRadioGroup(exportFilterDiv, EXPORT_FILTER_ARCHIVE, [ { label : lang.both, attr : EXPORT_FILTER_ARCHIVE_BOTH }, { label : lang.not_archived, attr : EXPORT_FILTER_ARCHIVE_NOT_ARCHIVED }, { label : lang.archived, attr : EXPORT_FILTER_ARCHIVE_ARCHIVED } ], GM_getValue(EXPORT_FILTER_ARCHIVE, EXPORT_FILTER_ARCHIVE_BOTH)); exportDiv.appendChild(exportFilterDiv); exportFilterDiv.appendChild(document.createElement('br')); var exportTypeDiv = document.createElement('div'); exportTypeDiv.appendChild(document.createTextNode(lang.export_step3)); var exportTypeSelector = document.createElement('select'); exportTypeSelector.setAttribute("name", "exportTypeSelector"); exportTypeSelector.setAttribute("id", "exportTypeSelector"); exportTypeSelector.setAttribute('size', 1); var option0 = document.createElement('option'); option0.appendChild(document.createTextNode("GCC")); var option1 = document.createElement('option'); option1.appendChild(document.createTextNode("GPX")); var option2 = document.createElement('option'); option2.appendChild(document.createTextNode("CSV")); var option3 = document.createElement('option'); option3.appendChild(document.createTextNode("HTML")); var option4 = document.createElement('option'); option4.appendChild(document.createTextNode("KML")); var option5 = document.createElement('option'); option5.appendChild(document.createTextNode("JSON")); exportTypeSelector.appendChild(option0); exportTypeSelector.appendChild(option1); exportTypeSelector.appendChild(option2); exportTypeSelector.appendChild(option3); exportTypeSelector.appendChild(option4); exportTypeSelector.appendChild(option5); exportTypeDiv.appendChild(exportTypeSelector); exportDiv.appendChild(exportTypeDiv); var explainP = document.createElement('p'); explainP.setAttribute('style', 'margin-top:1.5em'); explainP.appendChild(document.createTextNode(lang.export_explain)); exportDiv.appendChild(explainP); var exportButton = document.createElement('input'); exportButton.setAttribute('type', 'button'); exportButton.setAttribute('value', lang.export_perform); exportButton.addEventListener('click', performFilteredExport, false); exportButton.setAttribute('style', 'margin:5px'); exportDiv.appendChild(exportButton); exportDropboxButton = document.createElement('input'); exportDropboxButton.setAttribute('type', 'button'); exportDropboxButton.setAttribute('value', lang.export_toDropboxPerformFilteredExport); exportDropboxButton.addEventListener('click', performFilteredDropboxExport, false); exportDropboxButton.setAttribute('style', 'margin:5px'); exportDiv.appendChild(exportDropboxButton); exportGistButton = document.createElement('input'); exportGistButton.setAttribute('type', 'button'); exportGistButton.setAttribute('value', lang.export_toGistPerformFilteredExport); exportGistButton.addEventListener('click', performFilteredGistExport, false); exportGistButton.setAttribute('style', 'margin:5px'); exportDiv.appendChild(exportGistButton); dropboxExportLink = document.createElement('input'); dropboxExportLink.setAttribute('type', 'button'); dropboxExportLink.setAttribute('style', 'margin:5px'); dropboxExportLink.setAttribute('value', lang.export_toDropbox); dropboxExportLink.addEventListener('mouseup', storeToDropbox, false); exportDiv.appendChild(dropboxExportLink); // Dropbox Auth Link var dropboxAuthLinkExport = document.createElement('a'); dropboxAuthLinkExport.setAttribute('href','https://www.dropbox.com/'); dropboxAuthLinkExport.setAttribute('style','display: none'); dropboxAuthLinkExport.setAttribute('id','dropboxAuthLinkExport'); dropboxAuthLinkExport.appendChild(document.createTextNode('Auth with DropBox')); exportDiv.appendChild(dropboxAuthLinkExport); gccRoot.appendChild(exportDiv); // // IMPORT DIV // importDiv = document.createElement('div'); importDiv.setAttribute('id', 'importDiv'); importDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); importDiv.style.display = 'none'; gccRoot.appendChild(importDiv); var importDivExplanation = document.createElement('p'); importDivExplanation.appendChild(document.createTextNode(lang.import_explain)); importDiv.appendChild(importDivExplanation); if (unsafeWindow.File && unsafeWindow.FileReader && unsafeWindow.FileList && unsafeWindow.Blob) { var input = document.createElement('input'); input.setAttribute('id', 'fileinput'); input.setAttribute('name', 'files[]'); input.setAttribute('type', 'file'); importDiv.appendChild(document.createTextNode(lang.import_choose)); importDiv.appendChild(input); document.getElementById('fileinput').addEventListener('change', function(evt) { var files = evt.target.files; var file = files[0]; var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { importText.value = e.target.result; }; })(file); if (file.name.indexOf('.gcc') > 0) reader.readAsText(file); }, false); } importDiv.appendChild(document.createElement('br')); dropboxCheck = document.createElement('input'); dropboxCheck.setAttribute('id', 'dropboxCheck'); dropboxCheck.setAttribute('type', 'button'); dropboxCheck.setAttribute('value', lang.import_fromDropboxCheckForFiles); dropboxCheck.addEventListener('mouseup', checkDropbox, false); importDiv.appendChild(dropboxCheck); dropboxSelect = document.createElement('select'); dropboxSelect.setAttribute('id', 'dropboxSelect'); importDiv.appendChild(dropboxSelect); dropboxImportLink = document.createElement('input'); dropboxImportLink.setAttribute('id', 'dropboxImportLink'); dropboxImportLink.setAttribute('disabled', 'disabled'); dropboxImportLink.setAttribute('type', 'button'); dropboxImportLink.setAttribute('value', lang.import_fromDropbox); dropboxImportLink.addEventListener('mouseup', loadFromDropbox, false); importDiv.appendChild(dropboxImportLink); // Dropbox Auth Link var dropboxAuthLink = document.createElement('a'); dropboxAuthLink.setAttribute('href','https://www.dropbox.com/'); dropboxAuthLink.setAttribute('style','display: none'); dropboxAuthLink.setAttribute('id','dropboxAuthLinkImport'); dropboxAuthLink.appendChild(document.createTextNode('Auth with DropBox')); importDiv.appendChild(dropboxAuthLink); importDiv.appendChild(document.createElement('br')); gistImportLink = document.createElement('input'); gistImportLink.setAttribute('id', 'gistImportLink'); gistImportLink.setAttribute('type', ''); if(GM_getValue("idResolverId", "") !== ""){ gistImportLink.setAttribute('value', "http://gccs.lukeIam.de#" + GM_getValue("idResolverId", "").trim()); } else{ gistImportLink.setAttribute('value', "http://gcc.lukeIam.de#gccc"); } gistImportLink.setAttribute('style', "margin-right: 0.5em; width: 25em; color: darkgray;"); importDiv.appendChild(gistImportLink); $('#gistImportLink').before(''); gistImportLinkButton = document.createElement('input'); gistImportLinkButton.setAttribute('id', 'gistImportLinkButton'); gistImportLinkButton.setAttribute('type', 'button'); gistImportLinkButton.setAttribute('value', lang.import_fromGist); gistImportLinkButton.addEventListener('mouseup', loadFromGist, false); importDiv.appendChild(gistImportLinkButton); importDiv.appendChild(document.createElement('br')); importText = document.createElement('textarea'); importText.setAttribute('id', 'gccommentimporttextarea'); importText.setAttribute('style', 'margin-top: 0.5em;'); importText.cols = 100; importText.rows = 10; importDiv.appendChild(importText); var submitImport = document.createElement('input'); submitImport.setAttribute('type', 'button'); submitImport.setAttribute('value', lang.import_perform); submitImport.setAttribute('style', 'margin:5px'); submitImport.addEventListener('mouseup', performImport, false); importDiv.appendChild(document.createElement('br')); importDiv.appendChild(submitImport); var cancelImport = document.createElement('input'); cancelImport.setAttribute('type', 'button'); cancelImport.setAttribute('value', lang.import_close); cancelImport.addEventListener('mouseup', function() { importresult.innerHTML = ""; toggleTabOnProfile('importDiv'); }, false); cancelImport.setAttribute('style', 'margin:5px'); importDiv.appendChild(document.createTextNode('\t')); importDiv.appendChild(cancelImport); importresult = document.createElement('p'); submitImport.parentNode.appendChild(importresult); // // DELETE DIV // deleteAllDiv = document.createElement('div'); deleteAllDiv.setAttribute('id', 'deleteAllDiv'); deleteAllDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); deleteAllDiv.style.display = 'none'; deleteAllDiv.appendChild(document.createTextNode(lang.delete_select)); deleteAllDiv.appendChild(document.createElement('br')); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_ALL, lang.all, toggleDeleteAllFilterOptions); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_UNTYPED, lang.type_untyped); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_UNSOLVED, lang.type_unsolved); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_SOLVED, lang.type_solved); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_FOUND, lang.type_found); // appendCheckBox(deleteAllDiv, DELETEALL_FILTER_ARCHIVED, // lang.type_archived); appendRadioGroup(deleteAllDiv, DELETEALL_FILTER_ARCHIVED, [ { label : lang.both, attr : DELETEALL_FILTER_ARCHIVED_BOTH }, { label : lang.not_archived, attr : DELETEALL_FILTER_ARCHIVED_NOT_ARCHIVED }, { label : lang.archived, attr : DELETEALL_FILTER_ARCHIVED_ARCHIVED } ], GM_getValue(DELETEALL_FILTER_ARCHIVED, DELETEALL_FILTER_ARCHIVED_BOTH)); var deleteAllButton = document.createElement('input'); deleteAllButton.setAttribute('type', 'button'); deleteAllButton.setAttribute('value', lang.delete_perform); deleteAllButton.addEventListener('click', performFilteredDeleteAll, false); deleteAllDiv.appendChild(deleteAllButton); deleteAllResult = document.createElement('div'); deleteAllDiv.appendChild(deleteAllResult); gccRoot.appendChild(deleteAllDiv); waitingTag = document.createElement('img'); waitingTag.setAttribute('src', waitingGif); waitingTag.setAttribute('id', 'waiting'); waitingTag.setAttribute('style', 'padding-right:5px'); if (GM_getValue(EXPORT_FILTER_ALL)) toggleExportFilterOptions(); if (GM_getValue(DELETEALL_FILTER_ALL)) toggleDeleteAllFilterOptions(); } } function gccommentOnNewProfilePage() { // Datatables CSS anhaengen $('head').append(''); appendCSS('text', '.odd{background-color:#ffffff} .even{background-color:#E8E8E8}' + '.ui-icon{display:inline-block;}' + ' .tableStateIcon{width: 11px;margin-right:3px}' + '.haveFinalIcon{margin-left:3px;width:14px}'); // styling the table's content appendCSS('text','.tableFinal, .tableComment, .tableWaypoints{margin: 0px;} .tableComment{font-family:monospace;font-size:small} .tableWaypoints{width: 100%}'); appendCSS('text','.tableGCComment {text-transform:none; font-size:small;} label{font-size: small; font-weight:400;text-transform:none;display:initial;margin-bottom:4px;max-width:100%} select{display:initial;font-size: small; background: none; width:auto;padding:initial;-moz-appearance:listbox;-webkit-appearance:listbox;}'); // load settings archivedFilter = GM_getValue(SETTING_ARCHIVE_FILTER); if (!archivedFilter) { archivedFilter = ARCHIVE_FILTER_NO_ARCHIVED; GM_setValue(SETTING_ARCHIVE_FILTER, ARCHIVE_FILTER_NO_ARCHIVED); } // add links to each entry on that page addCommentBubblesToPage(); // add overview of all comments on top of page var layouttag = document.getElementsByClassName('alert'); log('debug',layouttag[0]); if (layouttag) { var root = layouttag[0]; gccRoot = document.createElement('div'); gccRoot.id = "gccRoot"; gccRoot.setAttribute('style', 'outline:1px solid #D7D7D7;margin-bottom:-10px;padding:2px;min-width:1000px;max-width:1300px;margin:auto;'); gccRoot.setAttribute('class', 'tableGCComment'); root.parentNode.insertBefore(gccRoot, root.nextSibling); var gcclink = document.createElement('a'); gcclink.setAttribute('style', 'cursor:pointer;padding-left:5px;padding-right:5px;margin-left:5px'); gcclink.setAttribute('id', 'configDivButton'); gcclink.setAttribute('title', lang.menu_options); var icon = document.createElement('img'); icon.setAttribute('src', gccIcon); icon.setAttribute('style', 'vertical-align:middle;'); gcclink.appendChild(icon); gccRoot.appendChild(gcclink); gcclink.addEventListener('mouseover', function(evt) { var stats = "GCComment v" + version + "
" + lang.ov_totalamount + " " + getNumberOfComments() + " (" + GM_getValue('countWhite') + " " + lang.type_untyped + ", " + GM_getValue('countRed') + " " + lang.type_unsolved + ", " + GM_getValue('countGreen') + " " + lang.type_solved + ", " + lang.and + " " + GM_getValue('countGray') + " " + lang.type_found + ")
" + lang.ov_amountarchive + " " + GM_getValue('countArchive'); stats = stats + "
" + lang.ov_lastim + ": "; var lastim = GM_getValue(LAST_IMPORT); if (lastim) stats = stats + createTimeString(lastim); else stats = stats + " " + lang.never; stats = stats + "
" + lang.ov_lastex + ": "; var lastex = GM_getValue(LAST_EXPORT); if (lastex) stats = stats + createTimeString(lastex); else stats = stats + " " + lang.never; stats = stats + "
" + lang.ov_lastup + ": "; stats = stats + createTimeString(parseInt(GM_getValue('updateDate'))); stats = stats + "
"; unsafeWindow.tooltip.show(stats, 500); }, false); gcclink.addEventListener('mouseup', function(evt) { toggleTabOnProfile('configDiv'); }, false); gcclink.setAttribute('onmouseout', 'tooltip.hide();'); $('#configDivButton').click(function(e) { if (e.shiftKey) { var gistIdLog = JSON.parse(GM_getValue("GistIdLog", "[]")).reverse(); var message = ""; for(i=0;i < gistIdLog.length;i++){ message += (i+1)+": http://gcc.lukeIam.de#gcc"+gistIdLog[i]+"\n"; } console.log(message); alert(message); } }); gccRoot.appendChild(document.createTextNode(' | ')); var showCommentsLink = document.createElement('a'); showCommentsLink.setAttribute('id', 'gccommenttabledivButton'); showCommentsLink.appendChild(document.createTextNode(lang.menu_showmycomments)); showCommentsLink.addEventListener('mouseup', function() { toggleTabOnProfile('gccommenttablediv'); }, false); showCommentsLink.setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); gccRoot.appendChild(showCommentsLink); // ----- displayFilters = document.createElement("div"); displayFilters.style.display = "none"; displayFilters.setAttribute('id', 'displayFilters'); var filterclear = document.createElement('img'); filterclear.setAttribute('src', state_clear); filterclear.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filterclear.setAttribute('title', lang.table_filter_all); filterclear.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filterclear).css('opacity', '1'); filter = null; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filterclear); var filterall = document.createElement('img'); filterall.setAttribute('src', state_default); filterall.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filterall.setAttribute('title', lang.table_filter_untyped); filterall.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filterall).css('opacity', '1'); filter = stateOptions[0]; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filterall); var filterunsolved = document.createElement('img'); filterunsolved.setAttribute('src', state_unsolved); filterunsolved.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filterunsolved.setAttribute('title', lang.table_filter_unsolved); filterunsolved.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filterunsolved).css('opacity', '1'); filter = stateOptions[1]; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filterunsolved); var filtersolved = document.createElement('img'); filtersolved.setAttribute('src', state_solved); filtersolved.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filtersolved.setAttribute('title', lang.table_filter_solved); filtersolved.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filtersolved).css('opacity', '1'); filter = stateOptions[2]; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filtersolved); var filterFound = document.createElement('img'); filterFound.setAttribute('src', state_found); filterFound.setAttribute('style', 'cursor:pointer;vertical-align:bottom'); filterFound.setAttribute('title', lang.table_filter_found); filterFound.addEventListener('mouseup', function() { $('#displayFilters > img').css('opacity', '0.3'); $(filterFound).css('opacity', '1'); filter = stateOptions[3]; refreshTable(true); }, false); displayFilters.appendChild(document.createTextNode(' ')); displayFilters.appendChild(filterFound); var archivedSelector = document.createElement("select"); archivedSelector.setAttribute("id", "archivedSelector"); archivedSelector.setAttribute("style", "margin-left:5px"); archivedSelector.addEventListener('change', function() { var indexSelected = $('#archivedSelector option:selected').index(); if (indexSelected === 0) { archivedFilter = ARCHIVE_FILTER_NO_ARCHIVED; } else if (indexSelected === 1) { archivedFilter = ARCHIVE_FILTER_INCLUDE_ARCHIVED; } else if (indexSelected === 2) { archivedFilter = ARCHIVE_FILTER_ONLY_ARCHIVED; } else { log("error", "unknown archive filter selector: " + indexSelected); } GM_setValue(SETTING_ARCHIVE_FILTER, archivedFilter); refreshTable(true); }); displayFilters.appendChild(archivedSelector); var optionNoArchived = document.createElement("option"); optionNoArchived.appendChild(document.createTextNode(lang.archived_filter_no_archived)); archivedSelector.appendChild(optionNoArchived); var optionIncludeArchived = document.createElement("option"); optionIncludeArchived.appendChild(document.createTextNode(lang.archived_filter_include_archived)); archivedSelector.appendChild(optionIncludeArchived); var optionOnlyArchived = document.createElement("option"); optionOnlyArchived.appendChild(document.createTextNode(lang.archived_filter_only_archived)); archivedSelector.appendChild(optionOnlyArchived); // pre-set from settings if (archivedFilter === ARCHIVE_FILTER_INCLUDE_ARCHIVED) { optionIncludeArchived.setAttribute("selected", "true"); } else if (archivedFilter === ARCHIVE_FILTER_ONLY_ARCHIVED) { optionOnlyArchived.setAttribute("selected", "true"); } gccRoot.appendChild(displayFilters); $('#displayFilters > img').css('opacity', '0.3'); $(filterclear).css('opacity', '1'); // ------ gccRoot.appendChild(document.createTextNode(' | ')); var exportToggleButton = document.createElement('a'); exportToggleButton.setAttribute('id', 'exportDivButton'); exportToggleButton.appendChild(document.createTextNode(lang.menu_export)); exportToggleButton.setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); exportToggleButton.addEventListener('mouseup', function() { toggleTabOnProfile('exportDiv'); }, false); gccRoot.appendChild(exportToggleButton); gccRoot.appendChild(document.createTextNode(' ')); gccRoot.appendChild(document.createTextNode(' | ')); var importLink = document.createElement('a'); importLink.setAttribute('id', 'importDivButton'); importLink.appendChild(document.createTextNode(lang.menu_import)); importLink.addEventListener('mouseup', function() { toggleTabOnProfile('importDiv'); }, false); importLink .setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); gccRoot.appendChild(importLink); gccRoot.appendChild(document.createTextNode(' | ')); var deleteAllLink = document.createElement('a'); deleteAllLink.setAttribute('id', 'deleteAllDivButton'); deleteAllLink.appendChild(document.createTextNode(lang.menu_delete)); deleteAllLink.addEventListener('mouseup', function() { toggleTabOnProfile('deleteAllDiv'); }, false); deleteAllLink.setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); gccRoot.appendChild(deleteAllLink); // // PATCH DIV // if (unsafeWindow.File && unsafeWindow.FileReader && unsafeWindow.FileList && unsafeWindow.Blob) { gccRoot.appendChild(document.createTextNode(' | ')); var patchGPXLink = document.createElement('a'); patchGPXLink.setAttribute('id', 'patchDivButton'); patchGPXLink.appendChild(document.createTextNode(lang.menu_patchgpx)); patchGPXLink.addEventListener('mouseup', function() { toggleTabOnProfile('patchDiv'); }, false); patchGPXLink.setAttribute('style', 'cursor:pointer;text-decoration:none;padding-left:5px;padding-right:5px'); gccRoot.appendChild(patchGPXLink); patchDiv = document.createElement('div'); patchDiv.setAttribute('id', 'patchDiv'); patchDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); patchDiv.style.display = 'none'; gccRoot.appendChild(patchDiv); var patchDivExplanation = document.createElement('p'); patchDivExplanation.appendChild(document.createTextNode(lang.patchgpx_explain)); patchDiv.appendChild(patchDivExplanation); var removeUnusedDiv = document.createElement('div'); removeUnusedDiv.setAttribute('id', 'removeUnusedDiv'); removeUnusedDiv.setAttribute('style', 'margin-left:20px'); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_OTHERS, lang.patchgpx_filter_nogcc); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_DEFAULTTYPE, lang.patchgpx_filter_markeddefaulttype); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_UNSOLVED, lang.patchgpx_filter_markednotsolved); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_SOLVED, lang.patchgpx_filter_markedsolved); appendCheckBox(removeUnusedDiv, PATCHGPX_REMOVE_FOUND, lang.patchgpx_filter_markfound); var removeUnused = document.createElement('p'); removeUnused.appendChild(document.createTextNode(lang.patchgpx_remove)); removeUnused.appendChild(removeUnusedDiv); patchDiv.appendChild(removeUnused); appendCheckBox(removeUnused, PATCHGPX_CHANGEORIGINAL, lang.patchgpx_changeorig); appendCheckBox(removeUnused, PATCHGPX_ADDFINALWPT, lang.patchgpx_addwptforfinal); appendCheckBox(removeUnused, PATCHGPX_STRIP_EMOJIS, lang.patchgpx_stripemojis); // appendCheckBox(removeUnused, PATCHGPX_STRIP_HTML_TAGS, // lang.patchgpx_striphtmltags); var input = document.createElement('input'); input.setAttribute('id', 'patchgpxinput'); input.setAttribute('name', 'files[]'); input.setAttribute('type', 'file'); input.setAttribute('style', 'margin:3px'); input.addEventListener('change', function(evt) { var files = evt.target.files; var file = files[0]; var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { handleGPXFileSelected(file.name, e.target.result); }; })(file); if (file.name.indexOf('.gpx') > 0) { reader.readAsText(file); } }, false); patchDiv.appendChild(input); download = document.createElement('input'); download.setAttribute('type', 'button'); download.setAttribute('id', 'patchndownload'); download.setAttribute('style', 'margin:3px'); download.setAttribute('value', lang.patchgpx_perform); download.setAttribute('disabled', ''); patchDiv.appendChild(download); var patchResultDiv = document.createElement('div'); patchResultDiv.setAttribute('id', 'patchResultDiv'); patchDiv.appendChild(patchResultDiv); } // // CONFIG DIV // configDiv = document.createElement('div'); configDiv.setAttribute('id', 'configDiv'); configDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); configDiv.style.display = 'none'; var gccintro = document.createElement('p'); gccintro.setAttribute('style', 'width:600px'); gccintro.innerHTML = lang.settings_intro; configDiv.appendChild(gccintro); var paypallink = document.createElement('a'); paypallink.setAttribute('style', 'position:absolute;left:650px;top:10px;text-align:center;text-decoration:none;'); paypallink.setAttribute('href', 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8FK6XVH5SULGL'); paypallink.setAttribute('target', 'blank'); paypallink.appendChild(document.createTextNode(lang.settings_feelfree)); paypallink.appendChild(document.createElement('br')); var paypalImg = document.createElement('img'); paypalImg.setAttribute('src', 'https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif'); paypallink.appendChild(paypalImg); paypallink.appendChild(document.createElement('br')); paypallink.appendChild(document.createTextNode(lang.thank_you)); configDiv.appendChild(paypallink); appendCheckBox(configDiv, ENABLE_EXPORT, lang.settings_allowExport); appendCheckBox(configDiv, LAZY_TABLE_REFRESH, lang.settings_lazyTable); appendCheckBox(configDiv, AUTO_UPDATE_GS_FINAL, lang.settings_syncWithGS); appendCheckBox(configDiv, AUTO_UPLOAD_CACHE_NOTES, lang.settings_saveCacheNotes); var IdResoverContent = ""; function updateIdResoverContent(){ var IdResoverContentActive = IdResoverContent ='
Use a static ID for exports (uploads the the IDs to IDResolver).
You are using the IDReclover autoupload with
static-ID: '+ GM_getValue("idResolverId", "") +'
secret: '+ GM_getValue("idResolverSecret", "") +'
Permanet link:

Remove
'; var IdResoverContentInactive = '
Use a static ID for exports (uploads the the IDs to IDResolver).
To activate enter your id and secret or create a new id:
Ok | Create
'; if(GM_getValue("idResolverId", "") !== "" && GM_getValue("idResolverSecret", "") !== ""){ IdResoverContent = IdResoverContentActive; } else{ IdResoverContent = IdResoverContentInactive; } } updateIdResoverContent(); $(configDiv).append("
").append(IdResoverContent).append("
"); configDiv.appendChild(document.createTextNode(lang.settings_language + ":")); var languageSelector = document.createElement('select'); languageSelector.setAttribute("name", "languageSelector"); languageSelector.setAttribute("id", "languageSelector"); languageSelector.setAttribute('size', 1); languageSelector.setAttribute('style', "margin-left:5px;"); languageSelector.addEventListener('change', function() { GM_setValue(SETTINGS_LANGUAGE, $('#languageSelector option:selected').text()); // showSuccessIcon(languageSelector); }); var option0 = document.createElement('option'); option0.appendChild(document.createTextNode(SETTINGS_LANGUAGE_AUTO)); var option1 = document.createElement('option'); option1.appendChild(document.createTextNode(SETTINGS_LANGUAGE_EN)); var option2 = document.createElement('option'); option2.appendChild(document.createTextNode(SETTINGS_LANGUAGE_DE)); languageSelector.appendChild(option0); languageSelector.appendChild(option1); languageSelector.appendChild(option2); var langsetting = GM_getValue(SETTINGS_LANGUAGE); if (langsetting === SETTINGS_LANGUAGE_EN) option1.setAttribute('selected', 'true'); else if (langsetting === SETTINGS_LANGUAGE_DE) option2.setAttribute('selected', 'true'); else option0.setAttribute('selected', 'true'); configDiv.appendChild(languageSelector); gccRoot.appendChild(configDiv); setTimeout(function(){ $('#shareLinkPermQR').qrcode({ width: $('#shareLinkPermQR').width(), height: $('#shareLinkPermQR').height(), text: "http://gccs.lukeIam.de#"+GM_getValue("idResolverId", "") }).parent().nyroModal(); $('#shareLinkPermQRBig').qrcode({ width: $('#shareLinkPermQRBig').width(), height: $('#shareLinkPermQRBig').height(), text: "http://gccs.lukeIam.de#"+GM_getValue("idResolverId", "") }); },1000); function divIdResoverSettingsSetupClickHandler(){ $('#divIdResoverSettingsRemove').unbind("click").click(function(){ GM_setValue("idResolverId", ""); GM_setValue("idResolverSecret", ""); updateIdResoverContent(); $('#divIdResoverSettings').replaceWith(IdResoverContent); divIdResoverSettingsSetupClickHandler(); }); $('#divIdResoverSettingsLogin').unbind("click").click(function(){ GM_xmlhttpRequest({ url: "https://idresolver.azurewebsites.net/check", onload: function(e){ GM_setValue("idResolverId", document.getElementById("divIdResoverSettingsId").value.trim()); GM_setValue("idResolverSecret", document.getElementById("divIdResoverSettingsSecret").value.trim()); updateIdResoverContent(); $('#divIdResoverSettings').replaceWith(IdResoverContent); divIdResoverSettingsSetupClickHandler(); $('#shareLinkPermQR').qrcode({ width: $('#shareLinkPermQR').width(), height: $('#shareLinkPermQR').height(), text: "http://gccs.lukeIam.de#"+document.getElementById("divIdResoverSettingsId").value.trim() }).parent().nyroModal(); $('#shareLinkPermQRBig').qrcode({ width: $('#shareLinkPermQRBig').width(), height: $('#shareLinkPermQRBig').height(), text: "http://gccs.lukeIam.de#"+document.getElementById("divIdResoverSettingsId").value.trim() }); }, onerror: function(e){ document.getElementById("divIdResoverSettingsId").value = ""; document.getElementById("divIdResoverSettingsSecret").value = ""; alert("Failed"); console.log(e.statusText); }, headers:{ "Content-Type": "application/json" }, data: JSON.stringify( { Id: document.getElementById("divIdResoverSettingsId").value.trim(), SecretToken: document.getElementById("divIdResoverSettingsSecret").value.trim(), TargetId: "" }), method: "POST" }); }); $('#divIdResoverSettingsCreate').unbind("click").click(function(){ GM_xmlhttpRequest({ url: "https://idresolver.azurewebsites.net/register", onload: function(e){ var data = JSON.parse(e.responseText); GM_setValue("idResolverId", data.Id); GM_setValue("idResolverSecret", data.SecretToken); updateIdResoverContent(); $('#divIdResoverSettings').replaceWith(IdResoverContent); divIdResoverSettingsSetupClickHandler(); }, onerror: function(e){ alert("Failed"); console.log(e.statusText); }, method: "GET" }); }); } divIdResoverSettingsSetupClickHandler(); // // gccommenttablediv // var tableDiv = document.createElement('div'); tableDiv.setAttribute('id', 'gccommenttablediv'); tableDiv .setAttribute( 'style', 'margin: 5px; padding: 4px; outline: 1px solid rgb(215, 215, 215); position: relative; background-color: rgb(235, 236, 237);display:none'); gccRoot.appendChild(tableDiv); // // EXPORT DIV // exportDiv = document.createElement('div'); exportDiv.setAttribute('id', 'exportDiv'); exportDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); exportDiv.style.display = 'none'; exportDiv.appendChild(document.createTextNode(lang.export_step1)); var exportFilterDiv = document.createElement('div'); appendCheckBox(exportFilterDiv, EXPORT_FILTER_ALL, lang.all, toggleExportFilterOptions); appendCheckBox(exportFilterDiv, EXPORT_FILTER_UNTYPED, lang.type_untyped); appendCheckBox(exportFilterDiv, EXPORT_FILTER_UNSOLVED, lang.type_unsolved); appendCheckBox(exportFilterDiv, EXPORT_FILTER_SOLVED, lang.type_solved); appendCheckBox(exportFilterDiv, EXPORT_FILTER_FOUND, lang.type_found); exportFilterDiv.appendChild(document.createElement('br')); exportFilterDiv.appendChild(document.createTextNode(lang.export_step2)); exportFilterDiv.appendChild(document.createElement('br')); appendRadioGroup(exportFilterDiv, EXPORT_FILTER_ARCHIVE, [ { label : lang.both, attr : EXPORT_FILTER_ARCHIVE_BOTH }, { label : lang.not_archived, attr : EXPORT_FILTER_ARCHIVE_NOT_ARCHIVED }, { label : lang.archived, attr : EXPORT_FILTER_ARCHIVE_ARCHIVED } ], GM_getValue(EXPORT_FILTER_ARCHIVE, EXPORT_FILTER_ARCHIVE_BOTH)); exportDiv.appendChild(exportFilterDiv); exportFilterDiv.appendChild(document.createElement('br')); var exportTypeDiv = document.createElement('div'); exportTypeDiv.appendChild(document.createTextNode(lang.export_step3)); var exportTypeSelector = document.createElement('select'); exportTypeSelector.setAttribute("name", "exportTypeSelector"); exportTypeSelector.setAttribute("id", "exportTypeSelector"); exportTypeSelector.setAttribute('size', 1); var option0 = document.createElement('option'); option0.appendChild(document.createTextNode("GCC")); var option1 = document.createElement('option'); option1.appendChild(document.createTextNode("GPX")); var option2 = document.createElement('option'); option2.appendChild(document.createTextNode("CSV")); var option3 = document.createElement('option'); option3.appendChild(document.createTextNode("HTML")); var option4 = document.createElement('option'); option4.appendChild(document.createTextNode("KML")); var option5 = document.createElement('option'); option5.appendChild(document.createTextNode("JSON")); exportTypeSelector.appendChild(option0); exportTypeSelector.appendChild(option1); exportTypeSelector.appendChild(option2); exportTypeSelector.appendChild(option3); exportTypeSelector.appendChild(option4); exportTypeSelector.appendChild(option5); exportTypeDiv.appendChild(exportTypeSelector); exportDiv.appendChild(exportTypeDiv); var explainP = document.createElement('p'); explainP.setAttribute('style', 'margin-top:1.5em'); explainP.appendChild(document.createTextNode(lang.export_explain)); exportDiv.appendChild(explainP); var exportButton = document.createElement('input'); exportButton.setAttribute('type', 'button'); exportButton.setAttribute('value', lang.export_perform); exportButton.addEventListener('click', performFilteredExport, false); exportButton.setAttribute('style', 'margin:5px'); exportDiv.appendChild(exportButton); exportDropboxButton = document.createElement('input'); exportDropboxButton.setAttribute('type', 'button'); exportDropboxButton.setAttribute('value', lang.export_toDropboxPerformFilteredExport); exportDropboxButton.addEventListener('click', performFilteredDropboxExport, false); exportDropboxButton.setAttribute('style', 'margin:5px'); exportDiv.appendChild(exportDropboxButton); exportGistButton = document.createElement('input'); exportGistButton.setAttribute('type', 'button'); exportGistButton.setAttribute('value', lang.export_toGistPerformFilteredExport); exportGistButton.addEventListener('click', performFilteredGistExport, false); exportGistButton.setAttribute('style', 'margin:5px'); exportDiv.appendChild(exportGistButton); dropboxExportLink = document.createElement('input'); dropboxExportLink.setAttribute('type', 'button'); dropboxExportLink.setAttribute('style', 'margin:5px'); dropboxExportLink.setAttribute('value', lang.export_toDropbox); dropboxExportLink.addEventListener('mouseup', storeToDropbox, false); exportDiv.appendChild(dropboxExportLink); // Dropbox Auth Link var dropboxAuthLinkExport = document.createElement('a'); dropboxAuthLinkExport.setAttribute('href','https://www.dropbox.com/'); dropboxAuthLinkExport.setAttribute('style','display: none'); dropboxAuthLinkExport.setAttribute('id','dropboxAuthLinkExport'); dropboxAuthLinkExport.appendChild(document.createTextNode('Auth with DropBox')); exportDiv.appendChild(dropboxAuthLinkExport); gccRoot.appendChild(exportDiv); // // IMPORT DIV // importDiv = document.createElement('div'); importDiv.setAttribute('id', 'importDiv'); importDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); importDiv.style.display = 'none'; gccRoot.appendChild(importDiv); var importDivExplanation = document.createElement('p'); importDivExplanation.appendChild(document.createTextNode(lang.import_explain)); importDiv.appendChild(importDivExplanation); if (unsafeWindow.File && unsafeWindow.FileReader && unsafeWindow.FileList && unsafeWindow.Blob) { var input = document.createElement('input'); input.setAttribute('id', 'fileinput'); input.setAttribute('name', 'files[]'); input.setAttribute('type', 'file'); importDiv.appendChild(document.createTextNode(lang.import_choose)); importDiv.appendChild(input); document.getElementById('fileinput').addEventListener('change', function(evt) { var files = evt.target.files; var file = files[0]; var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { importText.value = e.target.result; }; })(file); if (file.name.indexOf('.gcc') > 0) reader.readAsText(file); }, false); } importDiv.appendChild(document.createElement('br')); dropboxCheck = document.createElement('input'); dropboxCheck.setAttribute('id', 'dropboxCheck'); dropboxCheck.setAttribute('type', 'button'); dropboxCheck.setAttribute('value', lang.import_fromDropboxCheckForFiles); dropboxCheck.addEventListener('mouseup', checkDropbox, false); importDiv.appendChild(dropboxCheck); dropboxSelect = document.createElement('select'); dropboxSelect.setAttribute('id', 'dropboxSelect'); importDiv.appendChild(dropboxSelect); dropboxImportLink = document.createElement('input'); dropboxImportLink.setAttribute('id', 'dropboxImportLink'); dropboxImportLink.setAttribute('disabled', 'disabled'); dropboxImportLink.setAttribute('type', 'button'); dropboxImportLink.setAttribute('value', lang.import_fromDropbox); dropboxImportLink.addEventListener('mouseup', loadFromDropbox, false); importDiv.appendChild(dropboxImportLink); // Dropbox Auth Link var dropboxAuthLink = document.createElement('a'); dropboxAuthLink.setAttribute('href','https://www.dropbox.com/'); dropboxAuthLink.setAttribute('style','display: none'); dropboxAuthLink.setAttribute('id','dropboxAuthLinkImport'); dropboxAuthLink.appendChild(document.createTextNode('Auth with DropBox')); importDiv.appendChild(dropboxAuthLink); importDiv.appendChild(document.createElement('br')); gistImportLink = document.createElement('input'); gistImportLink.setAttribute('id', 'gistImportLink'); gistImportLink.setAttribute('type', ''); if(GM_getValue("idResolverId", "") !== ""){ gistImportLink.setAttribute('value', "http://gccs.lukeIam.de#" + GM_getValue("idResolverId", "").trim()); } else{ gistImportLink.setAttribute('value', "http://gcc.lukeIam.de#gccc"); } gistImportLink.setAttribute('style', "margin-right: 0.5em; width: 25em; color: darkgray;"); importDiv.appendChild(gistImportLink); $('#gistImportLink').before(''); gistImportLinkButton = document.createElement('input'); gistImportLinkButton.setAttribute('id', 'gistImportLinkButton'); gistImportLinkButton.setAttribute('type', 'button'); gistImportLinkButton.setAttribute('value', lang.import_fromGist); gistImportLinkButton.addEventListener('mouseup', loadFromGist, false); importDiv.appendChild(gistImportLinkButton); importDiv.appendChild(document.createElement('br')); importText = document.createElement('textarea'); importText.setAttribute('id', 'gccommentimporttextarea'); importText.setAttribute('style', 'margin-top: 0.5em;'); importText.cols = 100; importText.rows = 10; importDiv.appendChild(importText); var submitImport = document.createElement('input'); submitImport.setAttribute('type', 'button'); submitImport.setAttribute('value', lang.import_perform); submitImport.setAttribute('style', 'margin:5px'); submitImport.addEventListener('mouseup', performImport, false); importDiv.appendChild(document.createElement('br')); importDiv.appendChild(submitImport); var cancelImport = document.createElement('input'); cancelImport.setAttribute('type', 'button'); cancelImport.setAttribute('value', lang.import_close); cancelImport.addEventListener('mouseup', function() { importresult.innerHTML = ""; toggleTabOnProfile('importDiv'); }, false); cancelImport.setAttribute('style', 'margin:5px'); importDiv.appendChild(document.createTextNode('\t')); importDiv.appendChild(cancelImport); importresult = document.createElement('p'); submitImport.parentNode.appendChild(importresult); // // DELETE DIV // deleteAllDiv = document.createElement('div'); deleteAllDiv.setAttribute('id', 'deleteAllDiv'); deleteAllDiv.setAttribute('style', 'margin:5px;padding:10px;outline:1px solid #D7D7D7;position:relative;background-color:#EBECED'); deleteAllDiv.style.display = 'none'; deleteAllDiv.appendChild(document.createTextNode(lang.delete_select)); deleteAllDiv.appendChild(document.createElement('br')); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_ALL, lang.all, toggleDeleteAllFilterOptions); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_UNTYPED, lang.type_untyped); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_UNSOLVED, lang.type_unsolved); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_SOLVED, lang.type_solved); appendCheckBox(deleteAllDiv, DELETEALL_FILTER_FOUND, lang.type_found); // appendCheckBox(deleteAllDiv, DELETEALL_FILTER_ARCHIVED, // lang.type_archived); appendRadioGroup(deleteAllDiv, DELETEALL_FILTER_ARCHIVED, [ { label : lang.both, attr : DELETEALL_FILTER_ARCHIVED_BOTH }, { label : lang.not_archived, attr : DELETEALL_FILTER_ARCHIVED_NOT_ARCHIVED }, { label : lang.archived, attr : DELETEALL_FILTER_ARCHIVED_ARCHIVED } ], GM_getValue(DELETEALL_FILTER_ARCHIVED, DELETEALL_FILTER_ARCHIVED_BOTH)); var deleteAllButton = document.createElement('input'); deleteAllButton.setAttribute('type', 'button'); deleteAllButton.setAttribute('value', lang.delete_perform); deleteAllButton.addEventListener('click', performFilteredDeleteAll, false); deleteAllDiv.appendChild(deleteAllButton); deleteAllResult = document.createElement('div'); deleteAllDiv.appendChild(deleteAllResult); gccRoot.appendChild(deleteAllDiv); waitingTag = document.createElement('img'); waitingTag.setAttribute('src', waitingGif); waitingTag.setAttribute('id', 'waiting'); waitingTag.setAttribute('style', 'padding-right:5px'); if (GM_getValue(EXPORT_FILTER_ALL)) toggleExportFilterOptions(); if (GM_getValue(DELETEALL_FILTER_ALL)) toggleDeleteAllFilterOptions(); } } var dropbox_client = null; // Dropbox Access Token Hilfsfunktion. (function(window){ window.utils = { parseQueryString: function(str) { var ret = Object.create(null); if (typeof str !== 'string') return ret; str = str.trim().replace(/^(\?|#|&)/, ''); if (!str) return ret; str.split('&').forEach(function(param) { var parts = param.replace(/\+/g, ' ').split('='); // Firefox (pre 40) decodes `%3D` to `=` (https://github.com/sindresorhus/query-string/pull/37) var key = parts.shift(); var val = parts.length > 0 ? parts.join('=') : undefined; key = decodeURIComponent(key); // missing `=` should be `null`: (http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters) val = val === undefined ? null : decodeURIComponent(val); if (ret[key] === undefined) ret[key] = val; else if (Array.isArray(ret[key])) ret[key].push(val); else ret[key] = [ret[key], val]; }); return ret; } }; })(window); // Checken ob ein Access Token übergeben wurde und dies auch für GCC ist. log("debug", "Dropbox Access Token suchen"); var Db_Access_Token = utils.parseQueryString(window.location.hash).access_token; var AppId = utils.parseQueryString(window.location.search).AppId; if (AppId && AppId == 'GCComment') { if (Db_Access_Token) { // zurück von DB mit Access Token, speichern und weiter GM_setValue('Db_Access_Token', Db_Access_Token); } else { // Maybe the user denies Access (this is mostly an unwanted click), so show him, that he // has refused to give us access to his dropbox and that he can re-auth if he want to. error = utils.parseQueryString(window.location.hash).error_description; if (error) alert('We received the following error from dropbox: "' + error + '" If you think this is a mistake, you can try to re-authenticate in the sync menue of GClh.'); } } function checkDropbox() { doDropboxAction() .done(function(){ dropboxExportLink.parentNode.insertBefore(waitingTag, dropboxExportLink); waitingTag.setAttribute('style', 'display:inline'); waitingTag.setAttribute('src', waitingGif); dropbox_client.filesListFolder({path: ''}) .then(function(response) { directoryEntries = response.entries; waitingTag.setAttribute("src", successIcon); setTimeout(function() { $("#waiting").fadeOut('slow', function() { }); }, 5000); $('#dropboxSelect').empty(); if (directoryEntries.length > 0) $('#dropboxImportLink').removeAttr('disabled'); var filteredDirectoryEntries = new Array(); for (var index = 0; index < directoryEntries.length; index++) { var gccMatch = directoryEntries[index].name.match(/\.gcc$/); if (gccMatch) filteredDirectoryEntries.push(directoryEntries[index].name); } filteredDirectoryEntries.sort().reverse(); for (var count = 0; count < filteredDirectoryEntries.length; count++) { $('#dropboxSelect').append(''); } log("debug", "reading dir entries on dropbox successful"); }) .catch(function(error) { waitingTag.setAttribute("src", errorIcon); log("debug", error); // Something went wrong. }); }) .fail(function(){ // kein Dropbox Token oder nicht authentifiziert, also zeige den Auth Link. DropboxShowAuthLink(); }); } function storeToDropbox() { doDropboxAction() .done(function(){ dropboxExportLink.parentNode.insertBefore(waitingTag, dropboxExportLink); waitingTag.setAttribute('style', 'display:inline'); waitingTag.setAttribute('src', waitingGif); dropbox_client.filesUpload({ path: '/' + createTimeString(new Date(), true) + '_backup-all.gcc', contents: xmlversion + buildGCCExportString(false), mode: 'overwrite', autorename: false, mute: false }) .then(function(response) { waitingTag.setAttribute("src", successIcon); setTimeout(function() { window.$("#waiting").fadeOut('slow', function() { }); }, 5000); log("debug", "Export to dropbox successful"); }) .catch(function(error) { waitingTag.setAttribute("src", errorIcon); log("debug", error); // Something went wrong. }); }) .fail(function(){ // kein Dropbox Token oder nicht authentifiziert, also zeige den Auth Link. DropboxShowAuthLink(); }); } function loadFromDropbox() { doDropboxAction() .done(function(){ dropboxImportLink.parentNode.insertBefore(waitingTag, dropboxImportLink); waitingTag.setAttribute('style', 'display:inline'); waitingTag.setAttribute('src', waitingGif); var select = document.getElementById('dropboxSelect'); var fileName = select.options[select.selectedIndex].text; dropbox_client.filesDownload({path: '/' + fileName}) .then(function(response) { reader = new FileReader(); reader.addEventListener("loadend", function(){ importText.value = reader.result; }); reader.readAsText(response.fileBlob); waitingTag.setAttribute("src", successIcon); setTimeout(function() { $("#waiting").fadeOut('slow', function() { }); }, 5000); }) .catch(function(error) { waitingTag.setAttribute("src", errorIcon); log("debug", error); // Something went wrong. }); }) .fail(function(){ // kein Dropbox Token oder nicht authentifiziert, also zeige den Auth Link. DropboxShowAuthLink(); }); } function loadFromGist() { gistImportLinkButton.parentNode.insertBefore(waitingTag, gistImportLinkButton); waitingTag.setAttribute('style', 'display:inline'); waitingTag.setAttribute('src', waitingGif); var loadCommentFunction = function(id){ if(id === "" || id.indexOf("gccc") != 0 || id==="gccc"){ $('#gistImportLink')[0].value = "http://gcc.lukeIam.de#gccc"; waitingTag.setAttribute('style', 'display:none'); return; } id = id.substr(4); gistShare.getComment(id).done(function (files) { if(files.length > 0){ waitingTag.setAttribute("src", successIcon); setTimeout(function() { $("#waiting").fadeOut('slow', function() { }); }, 5000); importText.value = files[0].content; } else{ waitingTag.setAttribute("src", errorIcon); log("debug", "No data"); // Something went wrong. return; } }).fail(function(error){ waitingTag.setAttribute("src", errorIcon); log("debug", error); // Something went wrong. return; }); }; var possibleId = $('#gistImportLink')[0].value.trim().replace("http://","").replace("gcc.lukeIam.de","").replace("gccs.lukeIam.de","").replace(/\//g,"").replace(/#/g,"").toLowerCase(); if(possibleId.indexOf("-") !== -1){ GM_xmlhttpRequest({ url: "https://idresolver.azurewebsites.net/"+possibleId, onload: function(e){ log("debug", "IDResolver ID found"); loadCommentFunction(e.responseText.replace(/"/g, "").trim()); }, onerror: function(e){ log("debug", "IDResolver ID not found"); waitingTag.setAttribute("src", errorIcon); }, method: "GET" }); } else{ loadCommentFunction(possibleId); } } function DropboxShowAuthLink() { var APP_Key = 'w23bgpsespnddow'; dropbox_auth_link = new Dropbox({clientId: APP_Key}); if ((document.URL.search("\/my\/default\.aspx") >= 0) || (document.URL.search("\/my\/$") >= 0) || (document.URL.search("\/my\/\#") >= 0) || (document.URL.search("\/my\/\\?.*=.*") >= 0)) { log('debug', 'matched gccommentOnProfilePage'); Db_AuthLinkImport = document.getElementById('dropboxAuthLinkImport'); Db_AuthLinkImport.href = dropbox_auth_link.getAuthenticationUrl('https://www.geocaching.com/my/default.aspx?AppId=GCComment'); Db_AuthLinkExport = document.getElementById('dropboxAuthLinkExport'); Db_AuthLinkExport.href = dropbox_auth_link.getAuthenticationUrl('https://www.geocaching.com/my/default.aspx?AppId=GCComment'); } else if ((document.URL.search("\/account\/dashboard") >= 0) || (document.URL.search("\/dashboard\/$") >= 0) || (document.URL.search("\/dashboard\/\#") >= 0) || (document.URL.search("\/dashboard\/\\?.*=.*") >= 0)) { log('debug', 'matched gccommentOnNewProfilePage'); Db_AuthLinkImport = document.getElementById('dropboxAuthLinkImport'); Db_AuthLinkImport.href = dropbox_auth_link.getAuthenticationUrl('https://www.geocaching.com/account/dashboard?AppId=GCComment'); Db_AuthLinkExport = document.getElementById('dropboxAuthLinkExport'); Db_AuthLinkExport.href = dropbox_auth_link.getAuthenticationUrl('https://www.geocaching.com/account/dashboard?AppId=GCComment'); } // Import Seite $(Db_AuthLinkImport).show(); dropboxImportLink.setAttribute('disabled', 'disabled'); dropboxCheck.setAttribute('disabled', 'disabled'); dropboxSelect.setAttribute('disabled', 'disabled'); // Export Seite $(Db_AuthLinkExport).show(); dropboxExportLink.setAttribute('disabled', 'disabled'); exportDropboxButton.setAttribute('disabled', 'disabled'); } function doDropboxAction() { var deferred = $.Deferred(); Db_Access_Token = GM_getValue('Db_Access_Token'); if (Db_Access_Token) { dropbox_client = new Dropbox({accessToken: Db_Access_Token}); dropbox_client.usersGetCurrentAccount() .then(function(response) { deferred.resolve(); }) .catch(function(error) { log("debug", error); deferred.reject(); }); } else { dropbox_client = null; deferred.reject(); } return deferred.promise(); } function toggleExportFilterOptions() { if (GM_getValue(EXPORT_FILTER_ALL)) { $('#EXPORT_FILTER_UNTYPED').attr('disabled', 'disabled'); $('#EXPORT_FILTER_UNSOLVED').attr('disabled', 'disabled'); $('#EXPORT_FILTER_SOLVED').attr('disabled', 'disabled'); $('#EXPORT_FILTER_FOUND').attr('disabled', 'disabled'); } else { $('#EXPORT_FILTER_UNTYPED').removeAttr('disabled'); $('#EXPORT_FILTER_UNSOLVED').removeAttr('disabled'); $('#EXPORT_FILTER_SOLVED').removeAttr('disabled'); $('#EXPORT_FILTER_FOUND').removeAttr('disabled'); } } function toggleDeleteAllFilterOptions() { if (GM_getValue(DELETEALL_FILTER_ALL)) { $('#DELETEALL_FILTER_UNTYPED').attr('disabled', 'disabled'); $('#DELETEALL_FILTER_UNSOLVED').attr('disabled', 'disabled'); $('#DELETEALL_FILTER_SOLVED').attr('disabled', 'disabled'); $('#DELETEALL_FILTER_FOUND').attr('disabled', 'disabled'); } else { $('#DELETEALL_FILTER_UNTYPED').removeAttr('disabled'); $('#DELETEALL_FILTER_UNSOLVED').removeAttr('disabled'); $('#DELETEALL_FILTER_SOLVED').removeAttr('disabled'); $('#DELETEALL_FILTER_FOUND').removeAttr('disabled'); } } function performFilteredDeleteAll() { var check = confirm(lang.delete_confirmation); if (check) { var keys = GM_listValues(); // log("info", "all keys: " + keys); var resultRemoved = "