// ==UserScript==
// @name WME UR-MP tracking
// @version 3.9.0
// @description Track UR and MP in the Waze Map Editor
// @namespace https://greasyfork.org/fr/scripts/368141-wme-ur-mp-tracking
// @include https://www.waze.com/editor*
// @include https://www.waze.com/*/editor*
// @include https://beta.waze.com/editor*
// @include https://beta.waze.com/*/editor*
// @exclude https://www.waze.com/user/*
// @exclude https://www.waze.com/*/user/*
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94DDwolKCvyQLIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAGcElEQVRYw82Xf1BU1xXHv/e9t7DsLiy6uwYEZBVYNGi7gwnYNpk6kx9TrcZJGe0v/cOONkPTJuMYJk5NGxUcp9ohOqZDU5wxk+CMQrEZneIv0Pwgmk6LElJKRECJbBaVZdld2F/33Xv6h0JqY/ghGSdn5s67950z53zeOWfuvQ+YhvT399/1/EZIVVXVlOzZZA07OjqwYMGCsfWKFSsKvF7vHCmlQVEU3eFw/PvkyZOfjepramqwdu3ar+erjh49OjZft25dmsvl+lOey3Uj1zV/OCd//kiOK38kNy/v8/z8/LqlS5cWjtpu2rTp68sAACxZsqTE5/O9ZdRU05wkBQ8nq7AlKBTUCe1Bwa6FBcJCxpItlt0bN24sLy0t5bW1tVizZs30AOrq6lhFefnPQpHoG3kWzfzTzEQqmqHBqDIm6bYTnYDWgE6H+2KsLaBzi8n40vPP/2r/9u07yOPxfKVvdTIAfX193/KHRt6Ya1Yf2ppvooctCuOxGOO6hFQ0xONxCB7HbHMCW5yq0fWIVK+GYoU93d0ftLe3exoaGnDo0KGpA1y8eBE9PT0JwyMjv4tFo0+9Ot+MLJPCyGxF2s83Q5s5C+ErbUhd8hTsqzZguONfSJAc6YkKuxjQLcFIPOvmzRs1LpfrK2Mo4wEUFhbC7XY7wrH4skdmGJBlUkgSwTAzDcmLv4+MDa9g9i9+i4zSCsx4/IdQLakAgeVYNMy3aIjz+BO7du3KHi+GMlH6A4FAciQay15k1aAxMIAh2nsZA8ffhIxHYXv6x2Cqhv7D+8EH+kGMIUkBnCaVVAatpaXl2WkBhMNhIiKYVQZltGUZA8VjANGdF/RFS9+ZmlUGBQyBQIBNC8DhcJBB06QnIqHfcW6ckwfHsxuhJCZhsLEOJHSk/eQ3SLClASAQAG9MMJ0ITqezf1oAnZ2dfcYEw4kPBzkicQJJID5wA6GPP0Tfn7fDU12B669vhf/9v4MH/IAEbkUlXRkWAGPe6urqvwEAjWVrCgDd3d0oKCiIWkxJZzxRIc/74oAuER0cxNV9W3Hz1F8hYMBg82n07NmMWCAEziV9MsTZtbCAyWTaxRiL3q4amzpATk4Odu/eLU0m07FEVf24tp9jKKaTlAQyGCFVDboQEIoGSkyCLiXCXODULY6IoE8cdvsRAGhtbb3/EgDA2bNnrzLIPwzEZfjIDc5UIaHr9KUhBeGfQ5xdCukwJxn/smjhwlsA4Ha77x/g4MGDAIBPOz49ojK0vTsk0RYURLqAzr8YggsEozod8AokGbTWWQ5HQ+Vrr9FE/icEWL9+PUZrmO10vhoXMlTrE8wflaRzCc4ldC4R45Kq+gWLEIWtKSl7m5qaeiaT3QkBfD4f9uzZAwA4ferUaavVWnk5LNAUEIwLASEEpBA4MyTxnwjBwNjbFy5cqJnsCTshgM1mQ1lZ2dj6xRdfOJCSktJ5IgR0hwmSS3SFJZpGiEkiWVFR8RZjTIzat7S03N99oL6+HiUlJaivr1cqKyuX+gf9z2mqmkKAFo1G3JIpdpuB4YUUicPDDB2cQcbiItVqfVfXdZ3r+vn02el7z507F7xzoiIzM3NyAI1NjXjyiScBAO5vuwu8Xm9TmnPuQ9YZqSACNIMGHgmTt8/D7BowoBPSMzNJMyYxoQsQEXo7L0NyXr169eqyvfv2BkbLabPZxgc4fvw4Vq5ceXsfmJeTPTAwcMj9ne9+b/3LLyPZaiWAGJiC4cAQDpSXw9N7DelZWVi7+SXMmp0BgMAUhdrOn2dVO3YARLWlvy59btvvtw1N6R5YXFScbU2xXlq18hnyDQ5STBcyyjmNDi4ldXZ2UnFxMZ1pbCQuJd2lF0L+46OPaJ5zXtxus5cT0fj91tvbOzYverTIaZtpa3Y/8ij13BqQfYEAfeb3f2l4gkG6dKWLPIHgPfWfB0N04v0PKCMjU8x1zt1W8qMSAwCsembV3SXo6upCbm4uAGDZD5altrS0HDGazU9v2PoKrA4HhJC411ZOBKiqAinlPT+KCFAU0HvvvMPeO3ZsKDEx8Zfefm8dACxfvhwNDQ1390BxUfGC9vb2PyqKstxsscBosYAkYTrCGCClRNDvh9D1GBGVhYZD+0f12v8aP/b4Y4sXLlrYBWDfeEfo/YEwAGCapjnsdnvWzp07r48pm5ubH/gv3JYtW/6/XvTAgj/IWN98+S9tiGRBMpU45gAAAABJRU5ErkJggg==
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @copyright 2017, dummyd2, seb-d59
// @author dummyd2, seb-d59
// @connect seb.d59.waze.free.fr
// ==/UserScript==
/*******
*
* You are free to:
* Share, copy, and redistribute the script in any medium or format
* under the following terms:
* Attribution - You must give appropriate credit. You may do so in any
* reasonable manner, but not in any way that suggests the licensor
* endorses you or your use.
*
* NonCommercial - You may not use the script for commercial purposes.
*
* NoModifications - You may NOT MODIFY the script.
*
* You are invited to contact the author: dummyd2 on waze forum for more details.
*
********/
function downloadHelperInjected() {
window.downloadHelper = {jobs:[], _waitForData:function(id) {
if (this.jobs.length <= id) {
this.jobs[id].callback({url:null, data:null, callback:this.jobs[id].callback, status:"error", error:"Request not found"});
} else {
if (this.jobs[id].status == "success" || this.jobs[id].status == "error") {
this.jobs[id].callback(this.jobs[id]);
} else {
if (this.jobs[id].status == "downloading" && this.jobs[id].progressCallback) {
this.jobs[id].progressCallback(this.jobs[id]);
}
var _this = this;
window.setTimeout(function() {
_this._waitForData(id);
}, 500);
}
}
}, add:function(url, callback, progressCallback) {
this.jobs.push({url:url, data:null, callback:callback, progressCallback:progressCallback, status:"added", progression:0, error:""});
var _this = this;
window.setTimeout(function() {
_this._waitForData(_this.jobs.length - 1);
}, 500);
}};
}
var downloadHelperInjectedScript = document.createElement("script");
downloadHelperInjectedScript.textContent = "" + downloadHelperInjected.toString() + " \n" + "downloadHelperInjected();";
downloadHelperInjectedScript.setAttribute("type", "application/javascript");
document.body.appendChild(downloadHelperInjectedScript);
if (typeof unsafeWindow === "undefined") {
unsafeWindow = function() {
var dummyElem = document.createElement("p");
dummyElem.setAttribute("onclick", "return window;");
return dummyElem.onclick();
}();
}
function lookFordownloadHelperJob() {
for (var i = 0; i < unsafeWindow.downloadHelper.jobs.length; i++) {
if (unsafeWindow.downloadHelper.jobs[i].status == "added") {
unsafeWindow.downloadHelper.jobs[i].status = cloneInto("downloading", unsafeWindow.downloadHelper.jobs[i]);
var f = function() {
var job = i;
GM_xmlhttpRequest({method:"GET", headers:{"User-Agent":"Mozilla/5.0", "Accept":"text/plain"}, synchronous:false, timeout:10000, url:unsafeWindow.downloadHelper.jobs[job].url, onerror:function(r) {
unsafeWindow.downloadHelper.jobs[job].status = cloneInto("error", unsafeWindow.downloadHelper.jobs[job]);
}, ontimeout:function(r) {
console.debug("TOTO Timeout while getting area from server: ", r);
unsafeWindow.downloadHelper.jobs[job].status = cloneInto("error", unsafeWindow.downloadHelper.jobs[job]);
}, onload:function(r) {
unsafeWindow.downloadHelper.jobs[job].status = cloneInto("success", unsafeWindow.downloadHelper.jobs[job]);
unsafeWindow.downloadHelper.jobs[job].data = cloneInto(r.responseText, unsafeWindow.downloadHelper.jobs[job]);
}, onprogress:function(r) {
unsafeWindow.downloadHelper.jobs[job].progression = cloneInto(r.total == 0 ? 0 : r.loaded / r.total, unsafeWindow.downloadHelper.jobs[job]);
}});
}();
}
}
window.setTimeout(lookFordownloadHelperJob, 2000);
}
window.setTimeout(lookFordownloadHelperJob);
function GMStorageHelperInjected() {
window.GMStorageHelper = {jobs:[], _waitForData:function(id) {
if (this.jobs.length <= id) {
if (this.jobs[id].callback) {
this.jobs[id].callback({entry:null, data:null, callback:this.jobs[id].callback, status:"error", error:"Request not found"});
}
} else {
if (this.jobs[id].status == "done") {
if (this.jobs[id].callback) {
this.jobs[id].callback(this.jobs[id]);
}
} else {
var _this = this;
window.setTimeout(function() {
_this._waitForData(id);
}, 500);
}
}
}, load:function(entry, callback) {
this.jobs.push({task:"load", entry:entry, data:null, callback:callback, status:"added", error:""});
var _this = this;
var jobId = this.jobs.length - 1;
window.setTimeout(function() {
_this._waitForData(jobId);
}, 500);
}, save:function(entry, data, callback) {
this.jobs.push({task:"save", entry:entry, data:data, callback:callback, status:"added", error:""});
var _this = this;
var jobId = this.jobs.length - 1;
window.setTimeout(function() {
_this._waitForData(jobId);
}, 500);
}};
}
var GMStorageHelperInjectedScript = document.createElement("script");
GMStorageHelperInjectedScript.textContent = "" + GMStorageHelperInjected.toString() + " \n" + "GMStorageHelperInjected();";
GMStorageHelperInjectedScript.setAttribute("type", "application/javascript");
document.body.appendChild(GMStorageHelperInjectedScript);
if (typeof unsafeWindow === "undefined") {
unsafeWindow = function() {
var dummyElem = document.createElement("p");
dummyElem.setAttribute("onclick", "return window;");
return dummyElem.onclick();
}();
}
function lookForGMStorageHelperJob() {
for (var i = 0; i < unsafeWindow.GMStorageHelper.jobs.length; i++) {
if (unsafeWindow.GMStorageHelper.jobs[i].status == "added") {
if (unsafeWindow.GMStorageHelper.jobs[i].task == "load") {
unsafeWindow.GMStorageHelper.jobs[i].data = cloneInto(GM_getValue(unsafeWindow.GMStorageHelper.jobs[i].entry, null), unsafeWindow.GMStorageHelper.jobs[i]);
}
if (unsafeWindow.GMStorageHelper.jobs[i].task == "save") {
GM_setValue(unsafeWindow.GMStorageHelper.jobs[i].entry, unsafeWindow.GMStorageHelper.jobs[i].data);
unsafeWindow.GMStorageHelper.jobs[i].data = cloneInto(null, unsafeWindow.GMStorageHelper.jobs[i]);
}
unsafeWindow.GMStorageHelper.jobs[i].status = cloneInto("done", unsafeWindow.GMStorageHelper.jobs[i]);
}
}
window.setTimeout(lookForGMStorageHelperJob, 2000);
}
window.setTimeout(lookForGMStorageHelperJob);
function WMEURMPT_Injected() {
var WMEURMPT = {};
WMEURMPT.isDebug = false;
WMEURMPT.urmpt_version = "3.9.0";
WMEURMPT.URList = [];
WMEURMPT.URMap = {};
WMEURMPT.MPList = [];
WMEURMPT.MPMap = {};
WMEURMPT.MCList = [];
WMEURMPT.MCMap = {};
WMEURMPT.PURList = [];
WMEURMPT.PURMap = {};
WMEURMPT.stackedURList = [];
WMEURMPT.stackedUR = {id:0, oriX:0, oriY:0};
WMEURMPT.dom = {};
WMEURMPT.driveArea = [];
WMEURMPT.managedAreas = [];
WMEURMPT.sortModeListUR = {ageASC:1, ageDSC:-1, typeASC:2, typeDSC:-2, commentCountASC:3, commentCountDSC:-3, distanceASC:4, distanceDSC:-4, lastCommentASC:5, lastCommentDSC:-5};
WMEURMPT.sortModeListMP = {priorityASC:1, priorityDSC:-1, typeASC:2, typeDSC:-2, distanceASC:3, distanceDSC:-3};
WMEURMPT.sortModeListMC = {distanceASC:1, distanceDSC:-1, commentCountASC:2, commentCountDSC:-2, ageASC:3, ageDSC:-3};
WMEURMPT.sortModeListPUR = {ageASC:1, ageDSC:-1, categoriesASC:2, categoriesDSC:-2, distanceASC:3, distanceDSC:-3, nameASC:4, nameDSC:-4, nbpurASC:5, nbpurDSC:-5};
WMEURMPT.URFilterList = {hideClosed:1, hideWithoutCommentFromMe:2, hideWithCommentCount:4, hideOutOfMyManagedArea:8, hideVisited:16, hideBlacklisted:32, hideWhitelisted:64, hideGE:128, hideNotKW:256, hideLimitTo:512, hideType:1024, hideArea:2048, hideLastCommentFromEditor:4096, hideTagged:8192, hideNoNewComment:16384, hideOutOfMyDriveArea:32768};
WMEURMPT.MPFilterList = {hideClosed:1, hideOutOfMyManagedArea:2, hideVisited:4, hideBlacklisted:8, hideWhitelisted:16, hideLimitTo:32, hideType:64, hideArea:128, hideOutOfMyDriveArea:256};
WMEURMPT.MCFilterList = {hideOutOfMyManagedArea:1, hideVisited:2, hideBlacklisted:4, hideWhitelisted:8, hideLimitTo:16, hideArea:32, hideNotKW:64, hideOutOfMyDriveArea:128};
WMEURMPT.PURFilterList = {hideOutOfMyManagedArea:1, hideVisited:2, hideBlacklisted:4, hideWhitelisted:8, hideLimitTo:16, hideArea:32, hideNotKW:64, hideCategorie:128, hideOutOfMyDriveArea:256};
WMEURMPT.taggedURList = ["[NOTE]", "[CONSTRUCTION]", "[ROADWORKS]", "[CLOSURE]", "[EVENT]", "[WSLM]"];
WMEURMPT.URAgeColIsLastComment = false;
WMEURMPT.currentSortModeUR = WMEURMPT.sortModeListUR.ageDSC;
WMEURMPT.currentSortModeMP = WMEURMPT.sortModeListMP.priorityDSC;
WMEURMPT.currentSortModeMC = WMEURMPT.sortModeListMC.distanceASC;
WMEURMPT.currentSortModePUR = WMEURMPT.sortModeListPUR.distanceASC;
WMEURMPT.sortHistoryUR = [WMEURMPT.currentSortModeUR];
WMEURMPT.sortHistoryMP = [WMEURMPT.currentSortModeMP];
WMEURMPT.sortHistoryMC = [WMEURMPT.currentSortModeMC];
WMEURMPT.sortHistoryPUR = [WMEURMPT.currentSortModePUR];
WMEURMPT.currentURFilter = WMEURMPT.URFilterList.hideClosed + WMEURMPT.URFilterList.hideBlacklisted + WMEURMPT.URFilterList.hideLimitTo;
WMEURMPT.currentMPFilter = WMEURMPT.MPFilterList.hideClosed + WMEURMPT.MPFilterList.hideBlacklisted + WMEURMPT.MPFilterList.hideLimitTo;
WMEURMPT.currentMCFilter = WMEURMPT.MCFilterList.hideBlacklisted + WMEURMPT.MCFilterList.hideLimitTo;
WMEURMPT.currentPURFilter = WMEURMPT.PURFilterList.hideBlacklisted + WMEURMPT.PURFilterList.hideLimitTo;
WMEURMPT.currentURID = null;
WMEURMPT.currentMPID = null;
WMEURMPT.currentMCID = null;
WMEURMPT.currentPURID = null;
WMEURMPT.selectedURID = null;
WMEURMPT.selectedMPID = null;
WMEURMPT.selectedMCID = null;
WMEURMPT.selectedPURID = null;
WMEURMPT.displayLegend = true;
WMEURMPT.isEnabled = true;
WMEURMPT.isComputeDistances = true;
WMEURMPT.isAutoScan = true;
WMEURMPT.isScanningWME = false;
WMEURMPT.currentURKeyWord = "";
WMEURMPT.currentMCKeyWord = "";
WMEURMPT.currentPURKeyWord = "";
WMEURMPT.currentURLimitTo = 100;
WMEURMPT.currentMPLimitTo = 100;
WMEURMPT.currentMCLimitTo = 100;
WMEURMPT.currentPURLimitTo = 100;
WMEURMPT.currentUROnlyType = 6;
WMEURMPT.currentMPOnlyType = 106;
WMEURMPT.currentUROnlyArea = "";
WMEURMPT.currentMPOnlyArea = "";
WMEURMPT.currentPUROnlyArea = "";
WMEURMPT.currentURCommentsCount = 0;
WMEURMPT.wazeServerWaitingTimeToRetry = 1;
WMEURMPT.mapCenterLonLat = null;
WMEURMPT.scanAreaBoundsList = [];
WMEURMPT.scanAreaBoundsCount = 0;
WMEURMPT.scanUR = true;
WMEURMPT.scanMP = true;
WMEURMPT.scanMC = true;
WMEURMPT.scanPUR = true;
WMEURMPT.flashOdd = true;
WMEURMPT.URDescriptionMaxLength = 18;
WMEURMPT.MPDescriptionMaxLength = 27;
WMEURMPT.MCSubjectMaxLength = 9;
WMEURMPT.MCBodyMaxLength = 20;
WMEURMPT.PURCategoriesMaxLength = 10;
WMEURMPT.PURNameMaxLength = 15;
WMEURMPT.visitedURBeforeActionsSaved = [];
WMEURMPT.visitedMPBeforeActionsSaved = [];
WMEURMPT.visitedTPBeforeActionsSaved = [];
WMEURMPT.lastUploadedWKT = null;
WMEURMPT.securityOn_visitedURBeforeActionsSaved_set = false;
WMEURMPT.servers = [{name:"seb-d59", url:"http://seb.d59.waze.free.fr/"}];
WMEURMPT.customAreaList = [];
WMEURMPT.areaList = {custom:[], country:[]};
WMEURMPT.statsCSV = "";
WMEURMPT.icon_comments = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94DDg83H1XMMOAAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAEQ0lEQVRYw+2XTUhcVxTHf0+dwcxUHawuxImtH0hbBEebGLCFutGFgSaBriImoXRRBLciqYuKza4bN21dVFcJgouE2IKolIJYP0BmFCwKoyJxksyMTGZ0Zvpax3u6eW+YD40abTftH+7mvnfv/3/OPfecc+G/Du0ca2sBJ5Bv7BMDXgDr/6Tgz4CfgAAQAaIGcQzYB8KAH/gZuHVRpAXAbeAlIIDk5uaKzWZTRUVFUlxcLMXFxVJUVCQ2m03y8vLE/A/wAV8Aljc9gk+AB8BHABUVFTQ0NHDt2jWuXLlCbW0tZWVlKKXw+/14vV4WFxdZWFhgaWlJdnZ2zP0XgF7g17NY/qXhUrHb7aq/v195PB45DZRSsrKyIgMDA2K1Wk1vhAxvnAq3AR2QiooKtba2JkqpNILTIJFIyMbGhqqvr1eGiEOg6yTyauBPQOrq6lQikTgTaaYnRET8fr80NzcLoAzDPn6dgBlA6uvrVTgcfmPyTBHb29tSU1NjHscvgP0o8k8BcTgcanp6+tzkmSJmZ2dNAQcGVxZ+A+TmzZvnZz0GHR0dZjwMAdZU8hLgldVqVUNDQxdmfSZmZmZML2wAhZl3fr+goEBWV1ezXHiUmNMIzLw94XBY7Ha7KaIkJ0XAW0COxWKhqqoqPVtpGpqmMTw8zN27d3ny5Ely/uHDh9y5c4epqSmUUiilePz4Mffu3WNychJN0xCRtH2MYMxKhNeBmMPhkN3d3SxLxsfHpbCwUABxOp3i8Xhkfn4+mXbz8/MlEAiI1+tNzmmaJj6fL22fcDgsNTU1ZhyUpnrgBXB4cHAgq6urAEnlAJubm8TjcQACgQCRSIS1tbXkd13XCYVCbG1tJedEhPX19OKo6zper1cD/jISU1pdeJ6TkyN9fX1ZHvD5fNLa2ipOp1M6OzslGAxKNBqVlpYWKS8vl46ODonH4xKNRqW9vV2cTqfcuHEjKxZGRkZM62ePygXDgDQ1NalgMJi1OBQKidvtlkgkkvy2v78vHo9HYrFYcm5vb0+Wl5dF1/WsQKyurjYF3AdyMgWUmOc3ODiYFv2ZEX/czTjqFpj/9fT0pJbpD49LxQ9MEXNzc+oiMqCIyNjYmFgsFmXUg+9eVwvyzXrQ1NR0IeSPHj0Sh8Nhun4JePukingLEJfLda6sFwwGpaurS9nt9lTyd0/TD1w/j4BQKCS9vb1SWloqmqaZ5z4JlGYS5R1BbgM+B7h8+bLouq6Nj48zOjoqT58+1RKJBC6Xi7a2NmlsbNQqKys5PDzk2bNneDweJiYmcLvd5l7K6Kq+B74GEqex/r7ZvXR3d6urV6+qlCZTjA5YThgxwA18C7x/lnfBV8A3Keo1Y0SM8jkLxI2u6YNj3gW/G2+DdeD5WZrQFoMo05ofgXeOSBoWg/ySMfJf134fh9QYuAT8YVjzEvgBGAFeHbP2wBgXivcAF//jX8TfP8rg1M0AqeYAAAAASUVORK5CYII=";
WMEURMPT.icon_distance = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94DDhYIKkhWRgAAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAACXUlEQVRYw+3Uv2sTYRgH8Cd3Zzyvh8nlEpPGJRSalpOWBpq2QTEx3KExiwgR7FK7OLiJZBD8sejSgnRxFpf+BUWHHjSTLQULdqh0rimUbHfvvffzvcdB/QO61OU++8MDz/d5HoBEIpFIJBKJxP82MTHR1jRtaBjGs3OWcnNzc98bjcYPACico45vNpuvpqamftXr9RtCJpPJrq6ulk9OTnLb29uXdV0XT09P3SAIUpVKRTRN09E0jSuXy1dM07SWlpbEfD6f2trautTtdkvT09PZ3d3dfK/XI8fHx9zh4aGzsLBwleO4cG9vL9B1XQ7D0CeEMEVRJNM0vfn5eUVV1es7OzuyAAAQRRGIomjNzMy8mJycbAHAF57ns+Pj43c0TftUrVYLlNLHpVLpLsdxG4qicADwhjEWh2EYAcA1SZJej42NZQHgviRJZiaTGRSLxa+qqr4PguCb67o/VVV9IsvyS0EQ3CiK/owRAIDjONjf3783HA6fr62tGaPR6KnneY/6/f7t0Wj0luf5XqfTqRUKhQ+O4xi6rjeLxeIGIUSklAq5XO5du91uptPpxXq9/rHVatUkSeoCwPrKykojnU53z87O+svLy7dkWV4/Ojq6yfP8n0BqtdrDwWCAYRi6lmW5iIiO43iUUh8R0bIs6nmeH8cxUkqJ4zghIjLbtkkQBIwxhpZlEURkrutGlFLCGEPf9wPbtgkioud5gW3bLiKibduEMeZvbm7GhmEspqrV6oPZ2dnPlUrFjuM4dRGLLwgCHBwciISQzr+G8t848IKOLwUADACc5A8lEr8BN7wbxzXrd3cAAAAASUVORK5CYII=";
WMEURMPT.icon_age = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94DDhYcMwKTOZUAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAFF0lEQVRYw+2XTWgUZxjHf+/sZnd2EpPsBhWaoB4MVczBbZo05FAPNuApEdSLRAWbguKxtFAoLRLJxQZyaQk9FkR7kKQHQyUXsSlBUGLoITbihlhDNMmucTeZnf2Y9+nB2bJZ893QU/8wMLzzvs/zf77fgf+xM/D9l8qCwKfAL8AMsOw9SeAP4Afg2E4rNYD3gR8BKTzBYFADGpBAIOD6/X4p+j4LdAE1/9Z1EeAL4CegxbKsfFNTU669vT135cqV3JMnT17btq2uXbu21NbWpsLhsHZd143H49VAO9AGvAT+3I7lB4F7xVbfuHHjRSKRyIqIKyISi8WSIyMjtohk5S1yk5OTTjQafVV0Lg1c36oHDgJDwAfhcDjX3t6+UFVV9aK3t7fWsqyAiKCUUqZp2nNzc9m6urqAJ8+oqanxRSKR16lU6vXhw4fzk5OTlcBHwF7gV4/Uhm6/B0g4HHYmJiZSshJaRCSZTM5XVFQkAX3u3LmXRV5YsbenpydR5I1LgNoo4b4FJBKJ5ArKtda6VPLdu3cXTNN0AWlubk47jrOCqH4LERHp7u5e9AgsAUeKlZWiHvgS4MyZM68OHTpUISKilHqHtWEY/5z3+XzvyFNvgYhw+fLlMuANUA70rUfgc8ACmJqacgqCNpm0q8ZWKUU6ndZevwD4pNArjFWazGeWZeX6+vpeDA4OvrdTjaS2trbcdd2KU6dOLXlLX69GoBPg6NGj+sKFC3tDoVBIRGQLetb0lFJKGYZR2dnZqSzL0sDHQFUpgXaAaDSqq6urfVtxv2EYBAKBd/aWGnDixAmjvLxcPLLH/SX7PwwGg9LU1CSAsVbyrYZ4PK6HhoZSpmk6IoJpmm5jY2MwFArtKsgRETFNM3TgwIGl+fn5UHE1FLBsGIZ78eLFOdu2bdkAw8PDiUIZKqW0aZp50zRd0zTdQCDgnjx5Mp5MJtPFZ27duvWXZVnLgAv0G6VdUWtt3L5923r8+LHeyGrLsrRSSnuuVo7j+BzHMRzHMbLZrDExMRGIx+Mrwjw6OmrZth3wQmAWh8AFXJ/Pp7u6utLNzc27NiLQ2tpqnT9/PjE+Pl65SqT02bNnM/v27TOLF/v6+oL3799fGhsbqwQWS3NgWinVUFtbW+7z+YLr5YD3LdTf3+/PZDKZoooSQPl8PvH7/VWAv0ROMJVKlXljPFZK4Ld8Pt/w4MEDA8grpfzrlZUnuCwYDJat2ZlKjJiamsomEgkTyAOPSsvwZ4Dx8XGePn3qbjS1NlMhhT2FchwYGJBUKoXXFX9f7cwsIB0dHbM3b978S3YItm3nrl69GguHw0nPsO/WIt1VGJ1Kqem1JuFWoLXWCwsLucrKyllPdg7Ys9YwGgDGAFpaWkKFpNruDCjkgOu6rlKqwlv+Bphb71yHd42Snp6ehGfFliwuWcpGo9GUZ8woEN4M+etepkp3d/diMpnMTk9PL+ZyufxqyoqVaq214zjZ58+fv5mZmbGLlM94V7NN4/tCPkQikQVg8eHDh9NFigqv6VIv3blzZxZY8LK9oLxjO/8Dl7xrlADS2tqaGBwcXEqn07aIyMjIyOzp06dTz549i4tIPhaLLff29i41NDQsF90DR7dqeemMPwIMFwRalpXfvXt3vrGxMVVXV5cC9P79+xfr6+szkUjELSsrc4uy/avNxnwzOOYRyQBZL0dcr626nsIMkPDqfM+2bzAboAo47nmmFjCBRSAGPFqrw62GvwHMAdeNGK2SbwAAAABJRU5ErkJggg==";
WMEURMPT.icon_type = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94DDwolKCvyQLIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAGcElEQVRYw82Xf1BU1xXHv/e9t7DsLiy6uwYEZBVYNGi7gwnYNpk6kx9TrcZJGe0v/cOONkPTJuMYJk5NGxUcp9ohOqZDU5wxk+CMQrEZneIv0Pwgmk6LElJKRECJbBaVZdld2F/33Xv6h0JqY/ghGSdn5s67950z53zeOWfuvQ+YhvT399/1/EZIVVXVlOzZZA07OjqwYMGCsfWKFSsKvF7vHCmlQVEU3eFw/PvkyZOfjepramqwdu3ar+erjh49OjZft25dmsvl+lOey3Uj1zV/OCd//kiOK38kNy/v8/z8/LqlS5cWjtpu2rTp68sAACxZsqTE5/O9ZdRU05wkBQ8nq7AlKBTUCe1Bwa6FBcJCxpItlt0bN24sLy0t5bW1tVizZs30AOrq6lhFefnPQpHoG3kWzfzTzEQqmqHBqDIm6bYTnYDWgE6H+2KsLaBzi8n40vPP/2r/9u07yOPxfKVvdTIAfX193/KHRt6Ya1Yf2ppvooctCuOxGOO6hFQ0xONxCB7HbHMCW5yq0fWIVK+GYoU93d0ftLe3exoaGnDo0KGpA1y8eBE9PT0JwyMjv4tFo0+9Ot+MLJPCyGxF2s83Q5s5C+ErbUhd8hTsqzZguONfSJAc6YkKuxjQLcFIPOvmzRs1LpfrK2Mo4wEUFhbC7XY7wrH4skdmGJBlUkgSwTAzDcmLv4+MDa9g9i9+i4zSCsx4/IdQLakAgeVYNMy3aIjz+BO7du3KHi+GMlH6A4FAciQay15k1aAxMIAh2nsZA8ffhIxHYXv6x2Cqhv7D+8EH+kGMIUkBnCaVVAatpaXl2WkBhMNhIiKYVQZltGUZA8VjANGdF/RFS9+ZmlUGBQyBQIBNC8DhcJBB06QnIqHfcW6ckwfHsxuhJCZhsLEOJHSk/eQ3SLClASAQAG9MMJ0ITqezf1oAnZ2dfcYEw4kPBzkicQJJID5wA6GPP0Tfn7fDU12B669vhf/9v4MH/IAEbkUlXRkWAGPe6urqvwEAjWVrCgDd3d0oKCiIWkxJZzxRIc/74oAuER0cxNV9W3Hz1F8hYMBg82n07NmMWCAEziV9MsTZtbCAyWTaxRiL3q4amzpATk4Odu/eLU0m07FEVf24tp9jKKaTlAQyGCFVDboQEIoGSkyCLiXCXODULY6IoE8cdvsRAGhtbb3/EgDA2bNnrzLIPwzEZfjIDc5UIaHr9KUhBeGfQ5xdCukwJxn/smjhwlsA4Ha77x/g4MGDAIBPOz49ojK0vTsk0RYURLqAzr8YggsEozod8AokGbTWWQ5HQ+Vrr9FE/icEWL9+PUZrmO10vhoXMlTrE8wflaRzCc4ldC4R45Kq+gWLEIWtKSl7m5qaeiaT3QkBfD4f9uzZAwA4ferUaavVWnk5LNAUEIwLASEEpBA4MyTxnwjBwNjbFy5cqJnsCTshgM1mQ1lZ2dj6xRdfOJCSktJ5IgR0hwmSS3SFJZpGiEkiWVFR8RZjTIzat7S03N99oL6+HiUlJaivr1cqKyuX+gf9z2mqmkKAFo1G3JIpdpuB4YUUicPDDB2cQcbiItVqfVfXdZ3r+vn02el7z507F7xzoiIzM3NyAI1NjXjyiScBAO5vuwu8Xm9TmnPuQ9YZqSACNIMGHgmTt8/D7BowoBPSMzNJMyYxoQsQEXo7L0NyXr169eqyvfv2BkbLabPZxgc4fvw4Vq5ceXsfmJeTPTAwcMj9ne9+b/3LLyPZaiWAGJiC4cAQDpSXw9N7DelZWVi7+SXMmp0BgMAUhdrOn2dVO3YARLWlvy59btvvtw1N6R5YXFScbU2xXlq18hnyDQ5STBcyyjmNDi4ldXZ2UnFxMZ1pbCQuJd2lF0L+46OPaJ5zXtxus5cT0fj91tvbOzYverTIaZtpa3Y/8ij13BqQfYEAfeb3f2l4gkG6dKWLPIHgPfWfB0N04v0PKCMjU8x1zt1W8qMSAwCsembV3SXo6upCbm4uAGDZD5altrS0HDGazU9v2PoKrA4HhJC411ZOBKiqAinlPT+KCFAU0HvvvMPeO3ZsKDEx8Zfefm8dACxfvhwNDQ1390BxUfGC9vb2PyqKstxsscBosYAkYTrCGCClRNDvh9D1GBGVhYZD+0f12v8aP/b4Y4sXLlrYBWDfeEfo/YEwAGCapjnsdnvWzp07r48pm5ubH/gv3JYtW/6/XvTAgj/IWN98+S9tiGRBMpU45gAAAABJRU5ErkJggg==";
WMEURMPT.icon_blacklist = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94DFxYbAagU5scAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAADGElEQVRYw+1Wz2tcZRQ959xvfmRmXqaZvDppaFeVwCwaCC4aEbswEA2oq1BdiP+CoFshUNRS3ApdiAih4M7NrIpkkY3ZCC4VAoVUE2USCAnOkDrJXBdv3us4tNTaNCjMhW9xv3t553zn/uABIxvZyP7H9r6k7/P5/FfFYnH8rMHfJPnALHihUPBSqfTt+fNTOivwCQA/SvJ8Pt8rlcY8iqIH1Wr1nbMi8AVJD7lcr1gc83K53KtWq16r1e7VJmsTzxv8dQBukkdR1FtfX/ednR1fWlryOI69Xp+68zzBKwB+I+m5XM5nZmbc3b3X6/nKyorX6/Xe9PQFv3Tx4ttP89GnaZzPQdQlc0koFApZwMxAkpJBsi8vv3h5+rQJLAB4TxQlUhIODw6zYKfTgckgyWV6geDNRqNhp0WgCOAWgIokmBkkotv9EwBAEu12GxQhiUlc7wJ447QIfATgJZOcEkhCMoBEq9XC8fFxokACDJFuZnkzuzk7OzvxrATmAXxCEpRoUio13B27u7tot9uJAiQkgTJKcklXQrCPn4XAOICvAUCSpy/sSw1R2N7eRqfTQafTgUzJfT+e5NuH8/NX3/q3BG4AmJHkopi+MCXicLRaLXS7XfzRbkPUQJyk6JJA2O1rr7z62FI8rlOvAfgUQFkSLRhCCJAMZg9PCAGHBwfY2NjAyclJRsAswCxQJjezSKZ4a2ur+SggPuJuDEATwIIktxAYzBAswILBQkAYIJDdp34IfyMYgsEsHEq6vra2dveflOADAAtEMlbqS5/VOPVlqFQqmIwnM1/ZlAjWzyflksbN7LPFxcXyk0pwDsB3A43HEELS+absVTJDHE9idXUVy8vL2Nvbwy/37w/Ek2kZ8GlmF0IIv25ubv4wCBiGCEwlywUwM2Zz3wdPfZMQQsDc3BwAII5jyB4qkIJLBEmmPslLwwoME/gZwF1Jr4kMNiS9KR01YX9/H41GA1EU4ejoKJuONCddWJJBlJP8neQ3TyIASddJvUwpBxJMj4RBP11Gg1uQQ/EsX3QA95rN5k+jP9mR/efsL/+DvMiiIfU+AAAAAElFTkSuQmCC";
WMEURMPT.icon_delete = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAIFElEQVRYhY2WXWwc1RXHf/fe2bHXWdY2dry249hmY9cmKnaSEqClReqH8lQnAtpKoRKV+GjFW1UUlUqlrUpT9QNeEEh9qYCH8kSCVJSkzYcigVpKA0F2nMRxkOO4tolDEvDa8e583dOHndmsvxBHGu3M7Nz7/51zzzn3Kqpst+vyZFcXodb33NbS8h0Jwxk3lXrtxrVrPHTuHMIXtxc6Orgvn6dYKn0vVVfX99nc3H8dY479+/Jl9i8sVL5Tyc0jtbX8qLubouP8qWvbtn3zs7PUpNNsaGiYXZyd7QkLheI3P/iA6AuI/zWfZ3s+j9648UN/aWnb0vw89R0dzJw7d9AJgoc/nJriF/PztwC+77o8ls+zpPULLfn8zy6cOIHruhhAiXDX7t1Xbs7M5KPFxeIDp059LsSr+TyDW7bg5HLDF44eHfB8HwF8z6Prvvsozs+/qYLgoZEYQjUBf+vrY8Fxns91dz89dvIkNXV1OCIorTGA+D5f3r37ys3p6QpEuIb4a1u2MJjP4+Zyw2PHjw+EQYA1BhEhFMEvFuncuZNiofCmG4YP/fH8efSg63Izih5o6e5+evTkSdx0GmUtVikUIEphUinO/f3vrZmOjgknk0m/s3Mnzhri2/J5Urnc8IXjxweiKEIZU54rDnWqpoaJU6eoq69/sBiGjw1mMmitNelsdujs229TU1uLQGWAAGItaI2uqeHcW2+1Zjo6JkwMoWPxV2Jxp7V1+OKxY2XxZHw8l43vndpaLr7/Ptp1v2uUQhvg6tTUjHYcRKnV4koRAVYE5bqcrYL4x44dvLh5M9vzeZxcbvji0aMDkbUorSviohRi7TIY4zhcm5qaIYpQ/cbwbEODXhC5bkQatNYowBFBa41WCp3ci4BSiO+zdWjoymeXL+cdY4obNm0avpiEXWustURKgbVYEcIYwsYOWmtJKZU7VCxeVQDPZbNsdpxGT2TSaJ3VcfY7WkMsbuJfJQIi2CBg69DQJQVXLxw9eq8VqeRMBGVxpYhElolH1opRql/B+OM3btzqA89ls3SugFjmeQyh4ghhLQCO6xL4PjoJe+J9WQyUwiYwIAb6gfGfXL+OT1UjAvhdfT2dxjR6Sk0ayAIVzxHBxOIKEBG0UkgMZa1FKYVUCS+LBIiGfgPjT8birARIIDY7TqMPyyCULue8EUGg4rGuqhprLRJ7nyReIu5Av4bxx69fJ6jSWwUA8PsYogSTCrJJR1RQLsmqgdVlpqqEk1yQzxFfFyCB6HCcxlIUTRpjsknoE5DE+8QqAPEyCGBFRCvV76wj/rkAAM9kMvTV1jZ4QTDmOE6usv6xePXuWN1sFBCGYTHluoM3Pe/iTwuFdfePlR11mdXW19PS2fmZaH156syZnDEGRXn9wxURiLi1BIG1tPf1XRVrp2p8n2hkZF0Nvd4ff+jo4P7eXpq6u4enL1y4R5QiuUKRygYTWrvs2SoFWvO/8+e72vr6Jhuy2fTBwcF1hdZcgv3t7ezo7aW+vX34/SNHBogijOPcCn9SCQBal0stnizZxKwIvufx1T17rlybns6XCoXiD0ZGVh1qVgH8tq2Nu3t7yba3D59aTzyuhLVyINlJBSCG+NqDD175ZGoqXywUio+cObNqXMV+09bG3T091Le3D7935MiARBE6Flci5fKL+8F6VQBxKcatV0QIPI/7E4j5+eIPz55dDfBsaytf6e2lsb19+D+HDw9IleeqqgVXC1c8EUHFDahSCVX9wMYQX48hlhYWio+OjkIy189bWtjR00N9W9vwvw4dGgjDEIzBilT6uI2TTJYnXlGsnROlyu+sRZJvlCqPi0FwXU4ePNja3Nk5UZPJpF/ZurUM0A7cs3kz6ebmD98+dGggCENslXgYZ30Y72phEl5rRawdUEp9KYyiQqVCrC2LJlUSvwMwrsuJAwdamzdtmkin02ZXXR36jlQKz9pHR959d1sURYgxZeFYPPFIkucykCil+j346FIYFlJKdYcihVCk/H/ieTI22RFF0KkU7xw+3Kpc99ddjoMjwNzMzOBioYAxprykcRarmFxBOfNFCOPeDoz/anGRENiXTn+aM6bbh8kIsgqI4kNIpUPGOaJjmEtjYwOBtWgRobi4+F4inghWDhexR3H4RYn0K5HxZ2JxgD8Xi8xa+6kj0i3WFkJrK4eQKI5aMieUO2ngeadsEJSP5c9mMsyLHAe+zVpWXgJRUdQfRtH4c3FkVtqPgY5UqtEaM4nW2aQy1rCxNNz5pueVob4B7AICrU9o1/2WqoqGWIstlcRpauq7rbf34gebNjEfRaRWTG4BH9i1sMDC6GhDcPXqpHbd+qRvJHOJ74/pKLrzEvAqoFKpFM+/9BK3A/OnT3PjwIF/hteu7VKuW26xYRjknnpqR2ZwcDS1cWMqZa1WUMPqLiqA52tto8XFaGl0tOXjF188SxjejjFIGKLS6TNNQ0MDme3bKW3cyC/37UN1dnby8ssvM7+wsEM5zl2kUk3X33jjyaWRkTtSTU1e8969p52mpiXxPAcRobyDNq4D8CkQohTKda0tFtUnr79+rz89vaG2p+fj5r17/6KMmZUgGM2k06f3799f3o5FRGNtk/h+F77f3rRnz0jzww9/JCJ14nmNUio1xiIbKHu/nrUAPiKL4nmijJHcE08MK61vShTdFM/LSxDUAB8Tn+ac6elpJiYmbEtLyzFr7TEA8X0tvq9jb90qgdoVz2tZAJQAQQQplQIpv7PxhVKKubk5xsfH+T+H8K+bjXuKEwAAAABJRU5ErkJggg==";
WMEURMPT.icon_priority = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8AogAA6dv1/QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94EHQghL5pOh38AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAADiklEQVRYw+2XT2xUVRTGf+e9N/PaqUw7rdOKItLYmnRIrTqhBklcTMLKhStcdAGGRjYluOgKFoQEF6QxbokmJg4sZOsGdyxM/BtRokgjJDYhVWkIf1pDoR3ePSzev3lvZuhQQTe9yc28+9695/vu951z3xvYaP9zk/Uu1JO4QAULsDgn77GynjjWusA/YpxV5jCcRTkLzOmnjP8nCugMeYRzOJRxUBzARrA5j1CR/Sw9WQVqTGMoY1AMEnRFKSNMP1EF9BglHH7DARwUG4muHQQbsNgu73Kp3ZjOI9E1nMEAHvzl9cmXS6/TkevgrYEfpcdcDfU8A7z82C3Qw0xjKGHQmmdx+KcyH37xBx98fomP/3yb+3YvgS0l/ax9K9oioNMMY5jCYGOQG9rPtVtx1V25epOau5UgH2xgSqsMPxYC+j4OhoN4DGIAAzlWcDN2NKfQ3YV9fxkMoIAyCBzUU2tbvLYCHmMYDgWBQSHv3SKfy0RTBjf3kLm7QEgQD4BDwNi/IqD7cfA4HQTWCMDAyOZOP4BlMdhrIauLMQEN5iqntfpwFaw16M2gjEQ1rxEAO3r/AaC3UGBr5m/qyUVnA4wgzKyLgO5jF4bJOl99aQOQHe7vvv893Ty/ejH2v56Ib8WkVtn1SAT0HVwMRzHk63aUACjcm6fYV6C/+DT5m+fr5Y9V8InnEY5qFbd9BWz2YKikZG3Y5c7SFl56dlNy517TNRWEPW0R0Am6geMYnHTipftoX40tnfeSxDTV/VxwgONapbsdBU4gbPPZJBMvoYJCuec2o4XllgQDNUL7tiGceOjLSCfYCXwTQEjE3X/lNl5nHTQrCLX4WXpufE8RBHhD9vJtAwGdIAdcAIYTBKxU4Iz/eweL75cKZLIwXryNm/Vag4cELAThCvCK7GU5bcERYCgCj5g1T8Bjc6NMfVfkwFdFqotvYjyal2K8VoIjaijAinNAJxgAdgfAkjCoSYYveHkuLG2Kpv2w+AwrT73YkCNNiEhgw249xUC9ArmgtziVkrvr7xCGXnguevzq2HbcTDZJtJUiIZ76eCGBeeByCjL9MRJ1WV7kZMVl9pefmb34K1Ov2VjXZ5uXYnwuaDRWLiPMp5OwBHwCTY7NMCvSCdaVRztzyN1rrSugcfw1Dgdkn//Zli7DLmAA6EuoEBKwmgTPNCnR+nvxWLC5QYYFmeTOxl+yjRa2B+5IidtmKn3pAAAAAElFTkSuQmCC";
WMEURMPT.icon_checked = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94FGw0UDITYgDwAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAC3UlEQVRYw8WXS0gVURjHf2fu9VXakAsXWmRFWFKbcFFIhQhREzKlBC4K2rUIIYKEoE0PCCIiaZctKrIiKJmCSRdtEoMeWiCIFr0QwQcZU5aPe+eeNufGcF/O9T46cBbnzDfz/f/f+f7fNwf+8xC5/LhumwVAEzDhGNbLRDZajgneAB4BF3TbLM4rAN02rwFH1fKrY1jzeQOg22YrcAIIALNAV95yQLfNGuAFUKG2+hzD2p3MPhcRuKWcS7U+mcpYyzL788AOT3SfO4Y1mOqdYMy6HtgJuOk6L9hdVSXdSJsIaDJ6tL/PvRoEmoHHfgH0AivTph7UKGhYgwhoSCkRQhDqGyc8MHkaiADbgOGlABQA80Ah0A189HtEhfvWbQjWVbQAQSEE0pVueHimh7BsBEJAiZ8IRJMmBNwFniaIUNxYcaauOFhfeUdo4p+tCIj+yPhsO9CvpOg7B6IjmgPhJc9+V1U1cMhDIgTcC7+dcvxELxsquOxxLoAvwE2/L2sZym4LsD9m+5JjWG5eAABnY9hPO4Z1Oy0BxSFaW6qVduzpFMXBSuAX8Bp4AHQ7hvXdw74cOOBxDnAxXQZxESg5tb1QOQcoAxqBTuCNbpuHPaatMfL6o9STGQBRFKcaqeZ6oEu3zStqf6+qGdHxUHW+zADMdbxflK6cT9AxpSpWbbptdgO1Mc97HcNazBiAO/oj8rPpSYtjWAKoVjkg1JSK9UFgk6d4fQaGlpPFKVXgGNY31aCeJfl/iK5HgNGsA1AgwsDxFAwjwJCyyz4ABWIMaFfNSsY8XgDeLbeQ+C5EjmH1AJYnF/A0r5GcA1CjTTn0KsMFxvICwDGsaeB6TPuOOIY1k00Acok2fFUVnKg0O5PYhdK9mgWBCWAVYCttJ4xQoLZ8dVHzxq3uJ2dq4f6H0SQkyoAjwCLQAAz4ATTpKb3ZmnPAZr/d8BhQk0BqmVx+J9X/pe+bUbZvSynJ/AUWE+o2p0KuHwAAAABJRU5ErkJggg==";
WMEURMPT.icon_unchecked = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94FGw0UMdywzC0AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAy0lEQVRYw+3WMWoCQRTG8Z9BhRR6BUuDbargBWy8g0WqHE4PZJFaEISQoLjK2qywCMrorkTw/eHBzMCb+d6bgfkIguDZaZzMh/jAvqb9X/CNaWrCL/KaY4/BuQObpXELG7Qxw7yo4BZydPGJDK8pSU0s8Ydxae2WaKCHFX7wntKBMsc3sKtw/7vUR/KvhIAQEAJCQAgIAQ8pIK/4DR/JUk3IKW18YVTREXUKJ7S9JnFxB0+4xltqByboF4l1ue5F4S+TbPm5tSpcLOYAHptFzbynhPsAAAAASUVORK5CYII=";
WMEURMPT.icon_ge = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94HFgoXEUEWIh4AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAJNElEQVRIx4WWaXDV5RXGn/N//+vdcm/2/Q5JzEIICASERnEBHGilY0dGg9hRqaV2iq2tVWudlnE6Mk7VDqPWGZUySl0KBavV1mVwSQUpBBoJCVkEzEq2m4R7c+/97+/bD06rXdTz8Xw485vnzDnPQysX78VUADhz+AY0rvgjWcKhs0c3cwA4+OY5ZXw2XZKY5TWpObvEdiwxmTClscm52c6u4Y+HTj09AvRmAUAIQUXxn9Lk0KMcAOrqfoC+vt/iq0quXB7Akac2IK92N3Ud2SiISABA5aIXl2/f+dHG5kWx1fPrQ+W1VSE5GIpxiTyyTEcMjxYljn9U+cGhE+P7O/92/wdEZAIQlY0/k4a6H+KrrlkGm+7CQO+jXwpAAADjNwTzJ+LT1r0Fwcr6Lfm52lZZZlWaypAbZSguUFFYoKKyVEFtdQgVJTpUFejuS8wcfOfc3t2/63gM/uO9ABAu2kZzE0+Ihqa70XPq4a8C+DmEeJCISBhFT85rXl76YCxqbMqPGfB9wuiYieFRS8ykbOiah1CAI2g4aF4UoY1fj6M6HsInQ0m89c6Zo7t/337v1PDOtk9HXw9gH4or7sT48M4vBGC7XtrJljaVcuCB/B/eufzhG79Vc+Pm6y7CN9fFsX51sVhzeQHmxUNkuQxT05wyGYFk0qbu3mlxsmsCBfkqNS8qQGGeXp4T0RYe6yk+7mePjwHdANYjnXr+SxVgfz7wtACA79/1ix/fdlPdj1a1VCAv10DAkIWhM8SiMubXGtRYG4RtSjQ46kKWiVRF0PBoEj0fT6KyzMDShQWk61JJ0GCx9qOJ94HRbNWCVTQ72YHiys1IJ0/9fwAAWLfx5ZYtm2sfbqzLDZuWj6mEKSzbIcCH4B4ATqWFGqriGiXTPnrPZUnAR0AjOj82S5lMFgvq86iyLISsaTc6Imf0bP/7R2cnOwD9JrhMh5/p+CKAtYFbb1t/f8283FVvt83gqedHxeHjGYxMcmKShGiYwMDJsjzEcoiqKxUk53zqO5OG8FyoqofB4SkEDQkXLyikgC5heiaVf+RDqQ34eHply3oaOP34F65A2nb3HcVZ01/9zAvn8MyLQzjdb2J0wqe+T1y8d8LH+ycI56cAwX3YtoeSQobvtBbg2qsLIDEJHpfgcaJX/tqLt97tRzikoKw4tOyKNfMXA8BTD1+NHb/ei8HBQQBAZ2cnRkZGPvsDp3tn15BkFg6eB4hFRGWFhryYAl1jMC3CqbMCYxM+FszzUBfn0AM+KooZttxQAkWxceD1NByLYXR8hp59qV3Mzk7T+YkZjE8mFgPagYXLV3uPP7Fb6e7uFm1tbcK2bV5WViYAoL29HXIy49yTTNoaSWEEDQm+58OxfXgOh2fbyLg+psY99PZZaKzmWLEYKC+UUFmq4ZaNFQhpDva/msHAMMfp/nGMnR8FkQ3T8moAWweQvmPbFvfzsh88eJANDg768Xgcspm1qgEGJnHh+y6ZpiMyaQeyLMF1fciyBNvxMZu0cLrfQnuHj3WXa1jaGEBpoYpbNs5DbpjjD6+Y6Oy6QCMj05AVjnBYi3/71l9etmf3A6cOHf57oLgoP1lTUzNDRO6aNWv8rVu34uzZs6DaJY8IDg1MjnCmhCRVDYpgwKBgSIOuK4IxBo9zylqOmE5YNJfMiryYRVeu0LH20hjq5gUAAEf/MYx9Lx/Dh8d6MD2TgqJI7rbbVyeuumK+nUrZvqoqA6qqnggGgwebmpoORyKRLABQ44pHsqYNTZbDkqKFwVhAMKaSLGtQFEVIEsEXnGzHF55jk2WaIp1OkyzNoSZOWNOSh5VL8hCNykimTHScHBBth3vFqdMj0vqrG7C8eR7SGQeMSVBVFeFw+EI0Gt1dVlb2UENDwxQrqbiy1DSdhabpydmsL0zHhRAgiQDX9WE5DmzLJtexwD2TCCYUZpNlZTAyNo2TXSPo7BpFMpVEMMRQXBhCYX6IJhNpMgwJsZiGdDoLx7Fh2zZc19WFECuFEH3PPfdch3xhOvECJ/26vBxVLyzSyHIYpmczmJnOQlVVaIYMRgB8D5zb4J4D37egqjYIPlKpNI6fHEdPbx/ycxmqq/IoFDCgKAx5uUEILiBJBCKC53k8nU5LsiwjEoksEUI8Lw/1H+hpWra58+ZNF629oqUK0zO2eO/QGB1qT2AikULqgg/BAVkBFMYhkQsIB+BZSDARDgg4jof0XBqJaQv95yahqQxrr6pFSXEOXI+DiABAEJFgjEGWZTDGJgG4MjAwW1mqvtrUEFsbLw+itEBFaZGCy1bk4Uj7JI59NI3RiTRMy4WVdeDYJnzfghAWuG/B87LwnTRIuAiHdbgeRyQko6IsAl1jyGR9AcAXQpAkScwwDITD4Xej0eg+IuIMAGyzbLC8vGChYag1miKTIoMX5WvUVB+lry3Nx/zqIEUjAprikSTZUCSTVNmDxlxoiotIkCFeHkFNdQFUWcb8ukI0LSgWAvB9X3AiKIwxSdd1RCKRfWVlZfe0tLT0AIAMAENDL0y+uDf8kK6iYdmSeGU0x5AyGZtz4UuKTLSgLoy6KgMZpwKptIPZmRQuJOdgmzZ87kFmABEXvf2TggTnDQ2FXDdU2TRdWZIIjDFomjYSDoefra2tfeySSy6ZAoD9+/cTa73pV1JX53ticvz4gO2Vj2q6dFk0Rw+Zpo09e9u919/uwVRiDh53QfCFLHEoCoSmCqEbjJMk+FQi5Z/qHudjE3Osob6QxeNR5rqciIgrijJsGMbeWCx2/+bNm/fs2rUrCwB79uyhTZs2CQKAv7zyOn3j2msEADTM33TztRuWPBkIqoG9f+pA/5kpRCI6AgEZAU1C0FChqAoAH1nTwdycBe5xFBSEsay5Ag31+T4XIul74rSqqm8EAoG3WltbO4PB4L/f8WuvvYYNGzZ8LhMCaHvzDbp83XoBgC6++Pp7AuHQdxMz2fyxsVnJdrni+xyAAJMkSBIDQfi+L1xZIq+hvsBZdWlVtqYm/6wssw+zpnvE0ANdt9/+vbHPe8B9992HHTt2/Osq/hMAqAfQ+1lQ0FsaK8pzW8ys1+JzquWQJAH4nAuQ4IoEPpETMQbqakvOrL6qurd5afFIJKKPLG3eeOG/Pb+1tRXbt29HQ0PD/+SBfwLs6UJD9IUzMgAAAABJRU5ErkJggg==";
WMEURMPT.icon_export = "iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wgBFAggT+iJkgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAADUklEQVR42u2dTWsTURSGn5lOrEoJVYsff0AqUhHEreBW40IR/FiJKze6cV2NuhFdiFgQXLgQf0ARXIk7t3UhLYp/QBTFEksbmibjYk4kxHSMucn96JwXhtAmTU6fOfecc++cuYmwoxIQ459aQMPkDSILRk4CN4EZDwEuAQ+BZTxVCbgH/ACaHh4/gUdykr3UODAvxqaeHkYQY1STwBXg9iAQEwcG14AFYMXBZ1c2ifttiAB3/icmugC4AFwWI1OLoeRlF7waUDaF6ALgihhXd1CydOo5cNUUoqsYmDr63E6I0wKxZhITi5xEGsB9U4hFz8LLMlQHhqhljCFEBWgIUQEaQlSAhhAVoCHEpMCgJoBdspjQrTUpccgptleBapEBHpPpXd6cvJQzYzkMxEUGWAZO9vG6U3klYJEBDpIDWt1/U5Qk0iJbvq8N+42L4oENsmsfMNi1mRjYAM4UFWC7PKkOOOrGgRdF9sBOT3QaRFUKUAEqQAWoUoAKUAH2rW3ADux0km05gBGwBzgnj5ECHGwadR64AUz5BjEEgBGwl2xR87pvEENJIjFwwEeIIWVhLyGOejVmA7jI8DqxOiECPAG+465ZaeQA273Io/JE5xCTnMA9JsZGjkfIPmB7DsQImAO+uYDYC+AYWe9cBTgC7HQIMQH2AwdzPPGaQL4FfLUNMenhedPAXeAE2fVP14km/sdzU8AF+XnWticmPbyvIvCmAsrQZeCseOBjiYlOzm4sw2UiwHn9buAScBqL13q6AbaAz7i5BcFU68Ai8H4Emb9vgE3gNfBOhsFGIPDqwBuJ3R9dxsBUDJjtysKuEsmYZNhDYkcevCrwwfZJTzYpfpeAT/IPuJ4pzQBPgaO+wcsrpFMxxvUQXpfMWvcRXmiLCd7BswGw1+2ur+T3wcML0QO9gmdjNWaYWgXe+gQvJIBrHXWeN/BCAdiUwn7eN3ghAEzJGiOfAV9sTtG2kgf+kiP10bgQAKY+G6e9MQpQASpABahSgApQASpAlQJUgApQAaoUoAIMSC7WA/M2vPFVk2zSseYCYD8b3vimCeB4rxHrAmC/G94EEe4Sn4zRJPK3RrbhjWPVyJo5W6P2QNMNb3zVIvAAaNi6faHE1iqZ/nyNxm/UEhZ+/DhJcwAAAABJRU5ErkJggg==";
WMEURMPT.icon_pur = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gYGDREP9s0XhwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAWzSURBVFjDzVd9TFNXFP/d19cBpVihrciHUgSKiG4NCihqRqJuE0Ezif6x4BKTOVMxMWY6TbZsKjNmuKBGjXMsMZv4hyLOqMNPwA/8WLIqujEUQa1SX41ALcVS2vfe2R+MRjY+xRlvcnPvu7/zzvm9c8499z5gGM1ut/cY34i2Z8+eIcmzwQrW1dUhKSnJ/5ydnZ0sCMJYWZaVHMeJer3+z1OnTj3sxktKSpCXl/dqvurIkSP++ZIlS0YbjcbdCUbjk3jj+Pa4xPHP44yJz+MTEh4nJiaWZmZmpnTLrl69+tV5AACmTp2a29LS8nMgr1CNDeIgh72P6wHzuzD7SjxwS3BLcmeIWl24bNmyArPZ7Dt06BAWL148PAKlpaXsm4KCj1wdnr0Jaj64JnK3H4vkWhCpaMXvvgQAQMaTlbjlFH1qVeCa/PwVOzdu3EQ2m61P3YrBEGhqanrb4Xq+NzZYEX4rqst4BGtGCHNDIB2ICCHMjXao8EidhenyKcV9V2fKvcbGS7W1tbby8nIcOHCgV91cf4avX7+OOXPmvOX1+cyM5HFS9Co/VrEKEEgHoGus/DwIEQoHAKBKvwu6AC7c4Xi2kYiQlZXVp41+CaSkpMBkMundnd65U0KVMChb/VjI5HdhP5EJAHh8ZBpCZ86DIIX68fFqHl6fd9aWLVti+rPBDeR+p9MZ0uHpjKnS78JJ71T/+pgltZC9HthPZIIpeIzOPt/jvdPanVAw8BaL5cNhEXC73UREvYP+depDOYPT6WTDIqDX60nJ8/LH7at6rD/6KQlcQBBGZ58HSaI/HC82kQgGg8E+LAL19fVNgW8pT15u9XXlBX8XAOC6ednv9siF1+C4+GsPfIqQDzAmFBcX/9LlLBo6gcbGRiQnJ3vUqqCzNo8kA4AghQEAJhSF9ZBNKgzu2jliVz144JagUqm2MMY8AMAYGzqBuLg4FBYWyiqV6liAQnEz1roCAmkHrBsZQj46JPpDr9MdBICampqXDwEAVFZW3meQv232yu7ByN9wiQgOCvxh0sSJTwHAZDK9PIF9+/YBAG7X3T6oYLilv2fuP2kbzQhS8jWj9Pryom3baCD9AxJYunQpumMYYzB87ZVk15Sm3klMt5nRQeTWjBixvaKi4t5gvDUggZaWFmzduhUAcOb06TMajabojlvqVfavDoKSsf1Xr14t+d9uPCUl+6NTJk++k5SYSOHzqvw9dUIiGY1G6fDhwxkvylsslpe7D5SVlSE3NxdlZWVcUVFRpqPVsZxXKEYQwHs8HSaZcTqtksEa+z1SrctR52OQO73SSI3mvCiKok8Ur0RERmyvqqpq++dERXR09OAInKs4h9mzZgMATO+YkgVBqBhtiA3XhI4EEcArefg63CQ02ZiOB5pFQkR0NPGBQUwSJRARrPV3IPt8xYsWLVq7fcd2Z3c4tVpt/wSOHz+OnJycrjowLi6mubn5gGlaxvSl69YhRKMhgBgYh3bnM/xYUACb9QEixoxB3mdrMCoyCgCBcRzdunKF7dm0CSA6ZF5pXr7hqw3PhhTr9LT0GM0IzY0FOfOppbWVOkVJ9vh81N19skz19fWUnp5OZ8+dI58sUw9ckuTfrl2jcYZxXp1WV0BE/Se81Wr1z9NS0wzaMG21aUoq3XvaLDc5nfTQ4fhPt7W10Y27DWRztvWKP25z0cmLlygqKlqKNcRuyF2YqwSABfMX9AxBQ0MD4uPjAQBzP5g70mKxHAwMDn7vky++hEavhyTJ6K2UEwEKBQdZlvs8rTkOdOHoUXbh2LFnAQEBnwp2oRQAsrKyUF5e3jMH0tPSk2pra7/jOC4rWK1GoFoNkmlY25YxQJZltDkckESxk4jWutpdO7tx/kXhGTNnTJ44aWIDgB39HaEvR4QBAON5Xq/T6cZs3rz5kR+srq5+7b9w69ev/3e86LUZf5223vz2N1n2qCrgsdjvAAAAAElFTkSuQmCC";
WMEURMPT.shuffleArray = function(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
};
WMEURMPT.getElementsByClassName = function(classname, node) {
if (!node) {
node = document.getElementsByTagName("body")[0];
}
var a = [];
var re = new RegExp("\\b" + classname + "\\b");
var els = node.getElementsByTagName("*");
for (var i = 0, j = els.length; i < j; i++) {
if (re.test(els[i].className)) {
a.push(els[i]);
}
}
return a;
};
WMEURMPT.getElementByDataID = function(dID, node) {
if (!node) {
node = document.getElementsByTagName("body")[0];
}
var a = [];
var re = new RegExp("\\b" + dID + "\\b");
var els = node.getElementsByTagName("*");
for (var i = 0, j = els.length; i < j; i++) {
if (re.test(els[i].getAttribute("data-id"))) {
a.push(els[i]);
}
}
return a;
};
WMEURMPT.removeChildElements = function(node) {
if (node.id != "") {
delete WMEURMPT.dom[node.id];
}
while (node.firstChild) {
WMEURMPT.removeChildElements(node.firstChild);
node.removeChild(node.firstChild);
}
};
WMEURMPT.createElement = function(type, id) {
var el = document.createElement(type);
if (typeof id !== "undefined" && id != null) {
el.id = id;
WMEURMPT.dom[id] = el;
}
return el;
};
WMEURMPT.getId = function(node) {
if (WMEURMPT.dom.hasOwnProperty(node) == true && WMEURMPT.dom[node] != null) {
return WMEURMPT.dom[node];
}
var el = document.getElementById(node);
if (el != null) {
WMEURMPT.dom[node] = el;
}
return el;
};
WMEURMPT.logDebug = function(msg, obj) {
if (WMEURMPT.isDebug) {
WMEURMPT.log("UR-MP Tracking - DEBUG - " + msg, obj);
}
};
WMEURMPT.log = function(msg, obj) {
if (obj == null) {
console.log("UR-MP Tracking v" + WMEURMPT.urmpt_version + " - " + msg);
} else {
console.debug("UR-MP Tracking v" + WMEURMPT.urmpt_version + " - " + msg + " ", obj);
}
};
WMEURMPT.setTimeoutArgs = function(func, args, delay) {
window.setTimeout(function() {
var json_args = JSON.stringify(args);
return function() {
var args = JSON.parse(json_args);
func.apply(this, args);
};
}(), delay);
};
WMEURMPT.getFunctionWithArgs = function(func, args) {
return function() {
var json_args = JSON.stringify(args);
return function() {
var args = JSON.parse(json_args);
func.apply(this, args);
};
}();
};
WMEURMPT.invertObject = function(obj) {
var new_obj = {};
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
new_obj[obj[prop]] = prop;
}
}
return new_obj;
};
WMEURMPT.listToObject = function(arr) {
var o = {};
for (var i = 0; i < arr.length; ++i) {
o[arr[i].id] = i;
}
return o;
};
WMEURMPT.objectToList = function(arr) {
var l = [];
for (var i in arr) {
l.push(arr[i]);
}
l.sort();
return l;
};
WMEURMPT.getDuration = function(ts) {
var aDate = new Date;
var now = aDate.getTime();
var duration = now - ts;
aDate.setHours(0);
aDate.setMinutes(0);
aDate.setSeconds(0);
aDate.setMilliseconds(0);
var startOfDay = aDate.getTime();
if (duration < now - startOfDay) {
return 0;
}
return Math.ceil((duration - (now - startOfDay)) / 86400000);
};
WMEURMPT.escapeHtml = function(text) {
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
};
WMEURMPT.decimalToHex = function(d, padding) {
var hex = Number(d).toString(16);
padding = typeof padding === "undefined" || padding === null ? padding = 2 : padding;
while (hex.length < padding) {
hex = "0" + hex;
}
return hex;
};
WMEURMPT.isDescendant = function(parent, child) {
var node = child.parentNode;
while (node != null) {
if (node == parent) {
return true;
}
node = node.parentNode;
}
return false;
};
WMEURMPT.restackUR = function() {
WMEURMPT.logDebug("restackUR - stackedURList", WMEURMPT.stackedURList);
if (WMEURMPT.stackedURList.length === 0) {
return;
}
for (var i = 0; i < WMEURMPT.stackedURList.length; i++) {
var id = parseInt(WMEURMPT.stackedURList[i].id);
var URAtt = WMEURMPT.wazeModel.mapUpdateRequests.objects[id].attributes;
URAtt.geometry.x = WMEURMPT.stackedURList[i].oriX;
URAtt.geometry.y = WMEURMPT.stackedURList[i].oriY;
if (URAtt.geometry.oriX !== undefined) {
delete URAtt.geometry.oriX;
}
if (URAtt.geometry.oriY !== undefined) {
delete URAtt.geometry.oriY;
}
}
WMEURMPT.stackedURList = [];
};
WMEURMPT.bootstrapURT = function() {
window.setTimeout(WMEURMPT.initialize, 500);
};
WMEURMPT.initialize = function() {
WMEURMPT.log("init");
WMEURMPT.initializeWazeObjects();
WMEURMPT.log("init done");
};
WMEURMPT.initializeElements = function() {
var userInfo = WMEURMPT.getId("user-info");
if (userInfo == null) {
window.setTimeout(WMEURMPT.initializeElements, 500);
return;
}
var navTabs = userInfo.getElementsByTagName("ul");
if (navTabs.length == 0) {
window.setTimeout(WMEURMPT.initializeElements, 500);
return;
}
if (typeof navTabs[0] === "undefined") {
window.setTimeout(WMEURMPT.initializeElements, 500);
return;
}
var tabContents = userInfo.getElementsByTagName("div");
if (tabContents.length == 0) {
window.setTimeout(WMEURMPT.initializeElements, 500);
return;
}
if (typeof tabContents[0] === "undefined") {
window.setTimeout(WMEURMPT.initializeElements, 500);
return;
}
WMEURMPT.load();
W.app.modeController.model.bind("change:mode", function() {
if (W.app.modeController.getState() !== undefined) {
WMEURMPT.unregisterEvents();
}
if (W.app.modeController.getState() === undefined) {
}
});
W.prefs.on("change:isImperial", function() {
WMEURMPT.unregisterEvents();
});
};
WMEURMPT.waitForObject = function(varName, shortcutName) {
var obj = null;
obj = eval("typeof(" + varName + ")");
if (obj === "undefined") {
WMEURMPT.log(varName + " KO");
window.setTimeout(WMEURMPT.waitForObject.caller, 1000);
return false;
}
WMEURMPT.logDebug(varName + " OK");
if (shortcutName != null) {
eval("WMEURMPT." + shortcutName + "=" + varName);
}
return true;
};
WMEURMPT.initializeWazeObjects = function() {
var objectToCheck = [{o:"W.map", s:"wazeMap"}, {o:"W.model", s:"wazeModel"}, {o:"W.loginManager", s:"loginManager"}, {o:"W.controller", s:"wazeController"}, {o:"W.Config.api_base", s:"wazeConfigApiBase"}, {o:"W.Config.paths.features", s:"wazeConfigApiFeatures"}, {o:"W.Config.paths.updateRequestSessions", s:"wazeConfigApiUpdateRequestSessions"}, {o:"OL", s:"OpenLayers"}, {o:"W.loginManager.user", s:"me"}, {o:"W.loginManager.user.rank", s:"ul"}, {o:"W.loginManager.user.isAreaManager", s:"uam"}];
for (var i = 0; i < objectToCheck.length; i++) {
var path = objectToCheck[i].o.split(".");
var object = window;
for (var j = 0; j < path.length; j++) {
object = object[path[j]];
if (typeof object == "undefined" || object == null) {
window.setTimeout(WMEURMPT.initializeWazeObjects, 1000);
return;
} else {
WMEURMPT[objectToCheck[i].s] = object;
}
}
}
WMEURMPT.ul = (WMEURMPT.ul + 1) * 2;
WMEURMPT.initializeElements();
};
WMEURMPT.registerEvents = function() {
WMEURMPT.wazeMap.olMap.events.register("moveend", null, WMEURMPT.mapMoveEnd);
WMEURMPT.wazeMap.olMap.events.register("zoomend", null, WMEURMPT.mapZoomEnd);
WMEURMPT.wazeModel.events.register("mergeend", null, WMEURMPT.setupListener);
WMEURMPT.wazeController.events.register("savestart", null, WMEURMPT.saveStarted);
WMEURMPT.wazeController.events.register("saveend", null, WMEURMPT.saveEnded);
WMEURMPT.wazeModel.mapUpdateRequests.on("objectschanged", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapUpdateRequests.on("objectsadded", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapUpdateRequests.on("objectsremoved", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.problems.on("objectschanged", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.problems.on("objectsadded", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.problems.on("objectsremoved", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapComments.on("objectschanged", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapComments.on("objectsadded", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapComments.on("objectsremoved", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.venues.on("objectschanged", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.venues.on("objectsadded", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.venues.on("objectsremoved", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.actionManager.events.register("afteraction", null, WMEURMPT.newActionAdded);
WMEURMPT.wazeModel.actionManager.events.register("afterundoaction", null, WMEURMPT.newActionAdded);
WMEURMPT.wazeModel.actionManager.events.register("afterclearaction", null, WMEURMPT.newActionAdded);
window.setTimeout(WMEURMPT.setupListener, 500);
};
WMEURMPT.unregisterEvents = function() {
WMEURMPT.wazeMap.olMap.events.unregister("moveend", null, WMEURMPT.mapMoveEnd);
WMEURMPT.wazeMap.olMap.events.unregister("zoomend", null, WMEURMPT.mapZoomEnd);
WMEURMPT.wazeModel.events.unregister("mergeend", null, WMEURMPT.setupListener);
WMEURMPT.wazeController.events.unregister("savestart", null, WMEURMPT.saveStarted);
WMEURMPT.wazeController.events.unregister("saveend", null, WMEURMPT.saveEnded);
WMEURMPT.wazeModel.mapUpdateRequests.off("objectschanged", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapUpdateRequests.off("objectsadded", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapUpdateRequests.off("objectsremoved", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.problems.off("objectschanged", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.problems.off("objectsadded", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.problems.off("objectsremoved", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapComments.off("objectschanged", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapComments.off("objectsadded", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.mapComments.off("objectsremoved", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.venues.off("objectschanged", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.venues.off("objectsadded", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.venues.off("objectsremoved", WMEURMPT.newDataAvailableStarts);
WMEURMPT.wazeModel.actionManager.events.unregister("afteraction", null, WMEURMPT.newActionAdded);
WMEURMPT.wazeModel.actionManager.events.unregister("afterundoaction", null, WMEURMPT.newActionAdded);
WMEURMPT.wazeModel.actionManager.events.unregister("afterclearaction", null, WMEURMPT.newActionAdded);
};
WMEURMPT.initManagedArea = function() {
for (var a = 0; a < WMEURMPT.loginManager.user.areas.length; a++) {
if (WMEURMPT.loginManager.user.areas[a].type == "drive") {
for (var c = 0; c < WMEURMPT.loginManager.user.areas[a].geometry.components.length; c++) {
WMEURMPT.loginManager.user.areas[a].geometry.components[c].calculateBounds();
WMEURMPT.driveArea.push(WMEURMPT.loginManager.user.areas[a].geometry.components[c]);
}
}
if (WMEURMPT.loginManager.user.areas[a].type == "managed") {
for (var c = 0; c < WMEURMPT.loginManager.user.areas[a].geometry.components.length; c++) {
WMEURMPT.loginManager.user.areas[a].geometry.components[c].calculateBounds();
WMEURMPT.managedAreas.push(WMEURMPT.loginManager.user.areas[a].geometry.components[c]);
}
}
}
WMEURMPT.logDebug("WMEURMPT.driveArea", WMEURMPT.driveArea);
WMEURMPT.logDebug("WMEURMPT.managedAreas", WMEURMPT.managedAreas);
};
WMEURMPT.initCountryList = function() {
var countryList = new WMEURMPT.URT_AREA;
countryList.category = "country";
countryList.getCategoryElementsFromServer(WMEURMPT.newCountryListAvailable);
};
WMEURMPT.newCountryListAvailable = function(countryList) {
var countryListSelect = WMEURMPT.getId("urmpt-countryList");
var optionList = "";
for (var c = 0; c < countryList.length; c++) {
optionList += '<option value="' + countryList[c].name.replace(/ /g, "_") + '">' + countryList[c].name + "</option>";
optionList += WMEURMPT.rescurseSubset(countryList[c], "");
}
countryListSelect.innerHTML += optionList;
};
WMEURMPT.rescurseSubset = function(subset, parentPath) {
var optionList = "";
if (typeof subset.set !== "undefined") {
for (var i = 0; i < subset.set.length; i++) {
var fullPath = parentPath + subset.name + "->" + subset.set[i].name;
optionList += '<option value="' + fullPath.replace(/ /g, "_") + '">' + fullPath + "</option>";
optionList += WMEURMPT.rescurseSubset(subset.set[i], (parentPath == "" ? "" : parentPath + "->") + subset.name + "->");
}
} else {
for (var i = 0; i < subset.subset.length; i++) {
optionList += WMEURMPT.rescurseSubset(subset.subset[i], (parentPath == "" ? "" : parentPath + "->") + subset.name + "->");
}
}
return optionList;
};
WMEURMPT.errorOnCountryServer = function() {
var countryListSelect = WMEURMPT.getId("urmpt-countryList");
var errorMessage = WMEURMPT.createElement("span");
errorMessage.style.color = "#FF0000";
errorMessage.innerHTML = "Error while getting list of countries<br/>You can try later by reloading WME<br/>Sorry for the inconvenience.";
countryListSelect.parentNode.parentNode.replaceChild(errorMessage, countryListSelect.parentNode);
};
WMEURMPT.wazeMapAreaToOLPolygons = function(geometry) {
var polygons = [];
if (geometry.type == "Polygon") {
polygons.push(WMEURMPT.lonlatArrayToxyOpenLayersPolygons(geometry.coordinates));
polygons[polygons.length - 1].calculateBounds();
}
if (geometry.type == "MultiPolygon") {
for (var p = 0; p < geometry.coordinates.length; p++) {
polygons.push(WMEURMPT.lonlatArrayToxyOpenLayersPolygons(geometry.coordinates[p]));
polygons[polygons.length - 1].calculateBounds();
}
}
return polygons;
};
WMEURMPT.bintreeGeometry = function(poly) {
var pointList = null;
if (poly.CLASS_NAME == "OpenLayers.Geometry.LinearRing") {
pointList = poly.components;
} else {
pointList = poly.components[0].components;
}
if (pointList.length <= 15) {
return;
}
var split = "x";
var notSplit = "y";
var splitValue = (poly.bounds.right + poly.bounds.left) / 2.0;
if (poly.bounds.right - poly.bounds.left < poly.bounds.top - poly.bounds.bottom) {
split = "y";
var notSplit = "x";
var splitValue = (poly.bounds.top + poly.bounds.bottom) / 2.0;
}
var intersection = [];
for (var p = 0; p < pointList.length - 1; p++) {
var point = pointList[p];
var next = pointList[p + 1];
if (point[split] <= splitValue && next[split] > splitValue || point[split] > splitValue && next[split] <= splitValue) {
intersection.push(p);
}
}
for (var j = 0; j < intersection.length; j++) {
var olPoint = new OpenLayers.Geometry.Point(0, 0);
var p1 = pointList[intersection[j]];
var p2 = pointList[intersection[j] + 1];
olPoint[split] = splitValue;
if (p2[split] - p1[split] == 0) {
olPoint[notSplit] = p1[notSplit];
} else {
var ratio = (splitValue - p1[split]) / (p2[split] - p1[split]);
olPoint[notSplit] = ratio * (p2[notSplit] - p1[notSplit]) + p1[notSplit];
}
intersection[j] = {index:intersection[j], point:olPoint};
}
intersection.sort(function(a, b) {
return a.point[notSplit] > b.point[notSplit];
});
var bintree = [[], []];
var currentL = -1;
var currentR = -1;
var intersectionIndices = intersection.map(function(e) {
return e.index;
});
for (var p = 0; p < pointList.length - 1; p++) {
var i = (p + intersection[0].index) % (pointList.length - 1);
if (pointList[i][split] <= splitValue) {
if (currentL == -1) {
bintree[0].push({i:[], c:false});
currentL = 0;
}
bintree[0][currentL].i.push(i);
var intersectionIndex = intersectionIndices.indexOf(i);
if (intersectionIndex != -1) {
bintree[0][currentL].i.push(intersectionIndex * -1 - 1);
var found = false;
for (b = 0; b < bintree[1].length; b++) {
if (intersectionIndex % 2 == 0 && (bintree[1][b].i[bintree[1][b].i.length - 1] + 1) * -1 == intersectionIndex + 1 || intersectionIndex % 2 == 1 && (bintree[1][b].i[bintree[1][b].i.length - 1] + 1) * -1 == intersectionIndex - 1) {
found = true;
currentR = b;
break;
}
}
if (!found) {
bintree[1].push({i:[], c:false});
currentR = bintree[1].length - 1;
}
bintree[1][currentR].i.push(intersectionIndex * -1 - 1);
}
} else {
if (currentR == -1) {
bintree[1].push({i:[], c:false});
currentR = 0;
}
bintree[1][currentR].i.push(i);
var intersectionIndex = intersectionIndices.indexOf(i);
if (intersectionIndex != -1) {
bintree[1][currentR].i.push(intersectionIndex * -1 - 1);
var found = false;
for (b = 0; b < bintree[0].length; b++) {
if (intersectionIndex % 2 == 0 && (bintree[0][b].i[bintree[0][b].i.length - 1] + 1) * -1 == intersectionIndex + 1 || intersectionIndex % 2 == 1 && (bintree[0][b].i[bintree[0][b].i.length - 1] + 1) * -1 == intersectionIndex - 1) {
found = true;
currentL = b;
break;
}
}
if (!found) {
bintree[0].push({i:[], c:false});
currentL = bintree[0].length - 1;
}
bintree[0][currentL].i.push(intersectionIndex * -1 - 1);
}
}
}
var bintree2 = [[], []];
poly.bintree = {left:null, right:null};
for (var t = 0; t < 2; t++) {
var olPolyList = [];
for (var i = 0; i < bintree[t].length; i++) {
bintree2[t].push([]);
for (var j = 0; j < bintree[t][i].i.length; j++) {
if (bintree[t][i].i[j] < 0) {
var intersectionIndex = (bintree[t][i].i[j] + 1) * -1;
var olPoint = intersection[intersectionIndex].point;
bintree2[t][i].push(olPoint);
} else {
bintree2[t][i].push(pointList[bintree[t][i].i[j]]);
}
}
bintree2[t][i].push(bintree2[t][i][0]);
olPolyList.push(new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(bintree2[t][i])));
olPolyList[olPolyList.length - 1].calculateBounds();
WMEURMPT.bintreeGeometry(olPolyList[olPolyList.length - 1]);
}
if (t == 0) {
poly.bintree.left = new OpenLayers.Geometry.MultiPolygon(olPolyList);
} else {
poly.bintree.right = new OpenLayers.Geometry.MultiPolygon(olPolyList);
}
}
poly.bintreeContainsPoint = function(point) {
if (point.x < this.bounds.left || point.x > this.bounds.right || point.y < this.bounds.bottom || point.y > this.bounds.top) {
return false;
}
if (this.hasOwnProperty("bintree") == true) {
for (var i = 0; i < this.bintree.left.components.length; i++) {
if (this.bintree.left.components[i].hasOwnProperty("bintree") == true) {
if (this.bintree.left.components[i].bintreeContainsPoint(point) == true) {
return true;
}
} else {
if (this.bintree.left.components[i].containsPoint(point) == true) {
return true;
}
}
}
for (var i = 0; i < this.bintree.right.components.length; i++) {
if (this.bintree.right.components[i].hasOwnProperty("bintree") == true) {
if (this.bintree.right.components[i].bintreeContainsPoint(point) == true) {
return true;
}
} else {
if (this.bintree.right.components[i].containsPoint(point) == true) {
return true;
}
}
}
return false;
}
return this.containsPoint(point);
};
};
WMEURMPT.lonlatArrayToxyOpenLayersPolygons = function(lontalArray) {
var ol_polygons = [];
for (var p = 0; p < lontalArray.length; p++) {
var ol_points = [];
for (var pt = 0; pt < lontalArray[p].length - 1; pt++) {
var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(lontalArray[p][pt][0], lontalArray[p][pt][1]);
ol_points.push(new OpenLayers.Geometry.Point(xy.lon, xy.lat));
}
ol_polygons.push(new OpenLayers.Geometry.LinearRing(ol_points));
}
if (ol_polygons.length >= 1) {
var ol_linearRing = ol_polygons[0];
return new OpenLayers.Geometry.Polygon([ol_linearRing]);
}
return null;
};
WMEURMPT.isInAreas = function(lonlat) {
for (var c = 0; c < WMEURMPT.areaList.country.length; c++) {
if (WMEURMPT.areaList.country[c].isInside(lonlat)) {
return true;
}
}
for (var c = 0; c < WMEURMPT.areaList.custom.length; c++) {
if (WMEURMPT.areaList.custom[c].isInside(lonlat)) {
return true;
}
}
return false;
};
WMEURMPT.inScreenUpdatableArea = function(xy) {
if (WMEURMPT.wazeModel.userAreas.objects.hasOwnProperty("managed")) {
if (WMEURMPT.wazeModel.userAreas.objects.managed.geometry.containsPoint(xy)) {
return true;
}
}
if (WMEURMPT.wazeModel.userAreas.objects.hasOwnProperty("drives")) {
if (WMEURMPT.wazeModel.userAreas.objects.drives.geometry.containsPoint(xy)) {
return true;
}
}
return false;
};
WMEURMPT.isInsideDriveArea = function(lon, lat) {
var lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(lon, lat);
var xy = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
var inside = false;
{
for (var a = 0; a < WMEURMPT.driveArea.length; a++) {
if (xy.x >= WMEURMPT.driveArea[a].bounds.left && xy.x <= WMEURMPT.driveArea[a].bounds.right && xy.y >= WMEURMPT.driveArea[a].bounds.bottom && xy.y <= WMEURMPT.driveArea[a].bounds.top && WMEURMPT.driveArea[a].containsPoint(xy)) {
return true;
}
}
}
return false;
};
WMEURMPT.isInsideManagedArea = function(lon, lat) {
var lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(lon, lat);
var xy = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
var inside = false;
{
for (var a = 0; a < WMEURMPT.managedAreas.length; a++) {
if (xy.x >= WMEURMPT.managedAreas[a].bounds.left && xy.x <= WMEURMPT.managedAreas[a].bounds.right && xy.y >= WMEURMPT.managedAreas[a].bounds.bottom && xy.y <= WMEURMPT.managedAreas[a].bounds.top && WMEURMPT.managedAreas[a].containsPoint(xy)) {
return true;
}
}
}
return false;
};
WMEURMPT.getSelectedProblem = function() {
try {
for (var m in WMEURMPT.wazeMap.problemLayer.featureMarkers) {
if (WMEURMPT.wazeMap.problemLayer.featureMarkers.hasOwnProperty(m)) {
if (WMEURMPT.wazeMap.problemLayer.featureMarkers[m].marker.icon.imageDiv.className.indexOf("selected") != -1) {
return m;
}
}
}
} catch (e) {
WMEURMPT.log("error while getting selected problem: ", e);
}
return null;
};
WMEURMPT.getSelectedUR = function() {
try {
for (var m in WMEURMPT.wazeMap.updateRequestLayer.featureMarkers) {
if (WMEURMPT.wazeMap.updateRequestLayer.featureMarkers.hasOwnProperty(m)) {
if (WMEURMPT.wazeMap.updateRequestLayer.featureMarkers[m].marker.icon.imageDiv.className.indexOf("selected") != -1) {
return m;
}
}
}
} catch (e) {
WMEURMPT.log("error while getting selected UR: ", e);
}
return null;
};
WMEURMPT.getSelectedMC = function() {
if (W.selectionManager.getSelectedFeatures().length == 1 && W.selectionManager.getSelectedFeatures()[0].model.type == "mapComment") {
return W.selectionManager.getSelectedFeatures()[0].model.attributes.id;
}
return null;
};
WMEURMPT.getSelectedPUR = function() {
try {
for (var m in W.map.placeUpdatesLayer.markers) {
if (WMEURMPT.wazeMap.placeUpdatesLayer.markers.hasOwnProperty(m)) {
if (WMEURMPT.wazeMap.placeUpdatesLayer.markers[m].model.selected === true) {
return m;
}
}
}
for (var m in WMEURMPT.wazeMap.parkingPlaceUpdatesLayer.markers) {
if (WMEURMPT.wazeMap.parkingPlaceUpdatesLayer.markers.hasOwnProperty(m)) {
if (WMEURMPT.wazeMap.parkingPlaceUpdatesLayer.markers[m].model.selected === true) {
return m;
}
}
}
for (var m in WMEURMPT.wazeMap.residentialPlaceUpdatesLayer.markers) {
if (WMEURMPT.wazeMap.residentialPlaceUpdatesLayer.markers.hasOwnProperty(m)) {
if (WMEURMPT.wazeMap.residentialPlaceUpdatesLayer.markers[m].model.selected === true) {
return m;
}
}
}
} catch (e) {
WMEURMPT.log("error while getting selected PUR: ", e);
}
return null;
};
WMEURMPT.updateRequestSessions = function() {
var ids = [];
for (var i in WMEURMPT.wazeModel.mapUpdateRequests.objects) {
if (WMEURMPT.wazeModel.updateRequestSessions.objects[i] == null) {
ids.push(i);
}
}
if (ids.length != 0) {
url = "https://" + document.location.host + WMEURMPT.wazeConfigApiUpdateRequestSessions + "?ids=" + ids.join(",");
if (XMLHttpRequest) {
xhr3_object = new XMLHttpRequest;
} else {
if (ActiveXObject) {
xhr3_object = new ActiveXObject("Microsoft.XMLHTTP");
}
}
var URcomments = null;
xhr3_object.open("GET", url, false);
xhr3_object.ontimeout = function() {
URcomments = null;
};
xhr3_object.onerror = function() {
URcomments = null;
};
xhr3_object.onreadystatechange = function() {
if (xhr3_object.readyState == 4) {
var r = xhr3_object.responseText;
try {
URcomments = JSON.parse(r);
} catch (e) {
WMEURMPT.log("Error: can't read server response: ", e);
WMEURMPT.log("Response from server: ", r);
WMEURMPT.log("Query: ", url);
URcomments = null;
}
} else {
URcomments = null;
}
};
xhr3_object.send(null);
WMEURMPT.logDebug("UR comments: ", URcomments);
if (URcomments != null) {
for (var j = 0; j < URcomments.updateRequestSessions.objects.length; j++) {
var urId = URcomments.updateRequestSessions.objects[j].id;
var ur = WMEURMPT.getURFromId(urId);
if (ur != null) {
ur.data.session = URcomments.updateRequestSessions.objects[j];
ur.data.session.users = URcomments.users;
for (var c = 0; c < ur.data.session.comments.length; c++) {
var userID = ur.data.session.comments[c].userID;
var userName = "Unknown";
if (userID == WMEURMPT.me.id) {
userName = WMEURMPT.me.userName;
if (c == ur.data.session.comments.length - 1) {
ur.lastVisitCommentsCount = ur.data.session.comments.length;
}
}
if (userID == -1) {
userName = "Reporter";
} else {
for (var u = 0; u < ur.data.session.users.objects.length; u++) {
if (ur.data.session.users.objects[u].id == userID) {
userName = ur.data.session.users.objects[u].userName;
break;
}
}
}
ur.data.session.comments[c].userName = userName;
}
}
}
}
}
};
WMEURMPT.settingsSetURDescriptionWidth = function() {
WMEURMPT.URDescriptionMaxLength = this.value;
WMEURMPT.saveOptions();
};
WMEURMPT.settingsSetMPDescriptionWidth = function() {
WMEURMPT.MPDescriptionMaxLength = this.value;
WMEURMPT.saveOptions();
};
WMEURMPT.settingsSetMCSubjectWidth = function() {
WMEURMPT.MCSubjectMaxLength = this.value;
WMEURMPT.saveOptions();
};
WMEURMPT.settingsSetMCBodyWidth = function() {
WMEURMPT.MCBodyMaxLength = this.value;
WMEURMPT.saveOptions();
};
WMEURMPT.settingsSetURTagList = function() {
WMEURMPT.taggedURList = this.value.split(";");
WMEURMPT.saveOptions();
};
WMEURMPT.settingsSetPURCategoriesWidth = function() {
WMEURMPT.PURCategoriesMaxLength = this.value;
WMEURMPT.saveOptions();
};
WMEURMPT.settingsSetPURNameWidth = function() {
WMEURMPT.PURNameMaxLength = this.value;
WMEURMPT.saveOptions();
};
WMEURMPT.isURFiltered = function(ur) {
var invert = function(a) {
return a;
};
if (WMEURMPT.getId("urt-checkbox-filterInvert").checked == true) {
invert = function(a) {
return !a;
};
}
return invert(WMEURMPT.isURFiltered2(ur));
};
WMEURMPT.isURFiltered2 = function(ur) {
var userId = WMEURMPT.loginManager.user.id;
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideClosed && ur.data.open == false) {
return true;
}
if (ur.data.open == false && WMEURMPT.ul < WMEURMPT.rl4cp) {
return true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideLastCommentFromEditor) {
if (ur.data.session.comments.length == 0 || ur.data.session.comments[ur.data.session.comments.length - 1].userID != -1) {
return true;
}
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideNoNewComment) {
if (ur.data.session.comments.length <= ur.lastVisitCommentsCount) {
return true;
}
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideWithCommentCount && ur.data.session.comments.length > WMEURMPT.currentURCommentsCount) {
return true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideOutOfMyDriveArea) {
if (!WMEURMPT.isInsideDriveArea(ur.lonlat.lon, ur.lonlat.lat)) {
return true;
}
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideOutOfMyManagedArea && WMEURMPT.uam) {
if (!WMEURMPT.isInsideManagedArea(ur.lonlat.lon, ur.lonlat.lat)) {
return true;
}
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideVisited && ur.alreadyVisited) {
return true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideBlacklisted && ur.blackListed) {
return true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideWhitelisted && !ur.blackListed) {
return true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideGE && ur.data.type == 10) {
return true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideType && ur.data.type != WMEURMPT.currentUROnlyType) {
return true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideTagged) {
if (ur.data.description != null) {
for (var i = 0; i < WMEURMPT.taggedURList.length; i++) {
if (ur.data.description.toLowerCase().indexOf(WMEURMPT.taggedURList[i].toLowerCase()) != -1) {
return true;
}
}
}
for (var c = 0; c < ur.data.session.comments.length; c++) {
for (var i = 0; i < WMEURMPT.taggedURList.length; i++) {
if (ur.data.session.comments[c].text.toLowerCase().indexOf(WMEURMPT.taggedURList[i].toLowerCase()) != -1) {
return true;
}
}
}
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideWithoutCommentFromMe) {
var found = false;
for (var c = 0; c < ur.data.session.comments.length; c++) {
if (ur.data.session.comments[c].userID == userId) {
found = true;
break;
}
}
if (!found) {
return true;
}
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideNotKW) {
var found = false;
if (ur.data.description != null && ur.data.description.toLowerCase().indexOf(WMEURMPT.currentURKeyWord.toLowerCase()) != -1) {
found = true;
}
if (!found && ur.data.open == false && ur.data.hasOwnProperty("resolvedByName") && ur.data.resolvedByName.toLowerCase() == WMEURMPT.currentURKeyWord.toLowerCase()) {
found = true;
}
if (!found && ur.data.session.comments.length > 0) {
for (var i = 0; i < ur.data.session.comments.length; i++) {
if (ur.data.session.comments[i].hasOwnProperty("userName") == false) {
continue;
}
if (typeof ur.data.session.comments[i].userName != "string") {
continue;
}
if (ur.data.session.comments[i].userName.toLowerCase() == WMEURMPT.currentURKeyWord.toLowerCase()) {
found = true;
break;
} else {
if (ur.data.session.comments[i].text.toLowerCase().indexOf(WMEURMPT.currentURKeyWord.toLowerCase()) != -1) {
found = true;
break;
}
}
}
}
if (!found) {
return true;
}
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideArea) {
var xy = new OpenLayers.Geometry.Point(ur.lonlat.lon, ur.lonlat.lat);
for (var i = 0; i < WMEURMPT.areaList.custom.length; i++) {
if (WMEURMPT.areaList.custom[i].name == WMEURMPT.currentUROnlyArea) {
var inside = false;
var filterArea = WMEURMPT.areaList.custom[i].geometryOL.geometry.components;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (inside == false) {
return true;
}
}
}
for (var i = 0; i < WMEURMPT.areaList.country.length; i++) {
if (WMEURMPT.areaList.country[i].name == WMEURMPT.currentUROnlyArea) {
var inside = false;
var filterArea = WMEURMPT.areaList.country[i].geometryOL.geometry.components;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (inside == false) {
return true;
}
}
}
}
return false;
};
WMEURMPT.isMPFiltered = function(mp) {
var userId = WMEURMPT.loginManager.user.id;
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideClosed && mp.data.open == false) {
return true;
}
if (mp.data.open == false && WMEURMPT.ul < WMEURMPT.rl4cp) {
return true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideOutOfMyDriveArea) {
if (!WMEURMPT.isInsideDriveArea(mp.lonlat.lon, mp.lonlat.lat)) {
return true;
}
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideOutOfMyManagedArea && WMEURMPT.uam) {
if (!WMEURMPT.isInsideManagedArea(mp.lonlat.lon, mp.lonlat.lat)) {
return true;
}
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideVisited && mp.alreadyVisited) {
return true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideBlacklisted && mp.blackListed) {
return true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideWhitelisted && !mp.blackListed) {
return true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideType) {
if (WMEURMPT.currentMPOnlyType == 0 && mp.type != "turnProblem") {
return true;
}
if (WMEURMPT.currentMPOnlyType != 0 && mp.data.subType != WMEURMPT.currentMPOnlyType) {
return true;
}
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideArea) {
var xy = new OpenLayers.Geometry.Point(mp.lonlat.lon, mp.lonlat.lat);
for (var i = 0; i < WMEURMPT.areaList.custom.length; i++) {
if (WMEURMPT.areaList.custom[i].name == WMEURMPT.currentMPOnlyArea) {
var inside = false;
var filterArea = WMEURMPT.areaList.custom[i].geometryOL.geometry.components;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (inside == false) {
return true;
}
}
}
for (var i = 0; i < WMEURMPT.areaList.country.length; i++) {
if (WMEURMPT.areaList.country[i].name == WMEURMPT.currentMPOnlyArea) {
var inside = false;
var filterArea = WMEURMPT.areaList.country[i].geometryOL.geometry.components;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (inside == false) {
return true;
}
}
}
}
return false;
};
WMEURMPT.isMCFiltered = function(mc) {
var userId = WMEURMPT.loginManager.user.id;
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideOutOfMyDriveArea) {
if (!WMEURMPT.isInsideDriveArea(mc.lonlat.lon, mc.lonlat.lat)) {
return true;
}
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideOutOfMyManagedArea && WMEURMPT.uam) {
if (!WMEURMPT.isInsideManagedArea(mc.lonlat.lon, mc.lonlat.lat)) {
return true;
}
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideVisited && mc.alreadyVisited) {
return true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideBlacklisted && mc.blackListed) {
return true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideWhitelisted && !mc.blackListed) {
return true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideNotKW && (mc.data.subject != null && mc.data.subject.toLowerCase().indexOf(WMEURMPT.currentMCKeyWord.toLowerCase()) == -1) && (mc.data.body != null && mc.data.body.toLowerCase().indexOf(WMEURMPT.currentMCKeyWord.toLowerCase()) == -1)) {
return true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideArea) {
var xy = new OpenLayers.Geometry.Point(mc.lonlat.lon, mc.lonlat.lat);
for (var i = 0; i < WMEURMPT.areaList.custom.length; i++) {
if (WMEURMPT.areaList.custom[i].name == WMEURMPT.currentMCOnlyArea) {
var inside = false;
var filterArea = WMEURMPT.areaList.custom[i].geometryOL.geometry.components;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (inside == false) {
return true;
}
}
}
for (var i = 0; i < WMEURMPT.areaList.country.length; i++) {
if (WMEURMPT.areaList.country[i].name == WMEURMPT.currentMCOnlyArea) {
var inside = false;
var filterArea = WMEURMPT.areaList.country[i].geometryOL.geometry.components;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (inside == false) {
return true;
}
}
}
}
return false;
};
WMEURMPT.isPURFiltered = function(pur) {
var userId = WMEURMPT.loginManager.user.id;
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideOutOfMyDriveArea) {
if (!WMEURMPT.isInsideDriveArea(pur.lonlat.lon, pur.lonlat.lat)) {
return true;
}
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideOutOfMyManagedArea && WMEURMPT.uam) {
if (!WMEURMPT.isInsideManagedArea(pur.lonlat.lon, pur.lonlat.lat)) {
return true;
}
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideVisited && pur.alreadyVisited) {
return true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideBlacklisted && pur.blackListed) {
return true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideWhitelisted && !pur.blackListed) {
return true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideNotKW && (pur.data.name != null && pur.data.name.toLowerCase().indexOf(WMEURMPT.currentPURKeyWord.toLowerCase()) == -1)) {
return true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideCategorie && WMEURMPT.getPURCategoriesFromCategories(pur.data.categories) != WMEURMPT.currentPUROnlyCategorie) {
return true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideArea) {
var xy = new OpenLayers.Geometry.Point(pur.lonlat.lon, pur.lonlat.lat);
for (var i = 0; i < WMEURMPT.areaList.custom.length; i++) {
if (WMEURMPT.areaList.custom[i].name == WMEURMPT.currentPUROnlyArea) {
var inside = false;
var filterArea = WMEURMPT.areaList.custom[i].geometryOL.geometry.components;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (inside == false) {
return true;
}
}
}
for (var i = 0; i < WMEURMPT.areaList.country.length; i++) {
if (WMEURMPT.areaList.country[i].name == WMEURMPT.currentPUROnlyArea) {
var inside = false;
var filterArea = WMEURMPT.areaList.country[i].geometryOL.geometry.components;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (inside == false) {
return true;
}
}
}
}
return false;
};
WMEURMPT.toggleURFilter = function(chkboxId, filter) {
var chkbox = WMEURMPT.getId(chkboxId);
if (chkbox == null) {
return;
}
if (chkbox.checked) {
WMEURMPT.currentURFilter = WMEURMPT.currentURFilter | filter;
} else {
WMEURMPT.currentURFilter = WMEURMPT.currentURFilter & ~filter;
}
WMEURMPT.logDebug("current UR filter: " + WMEURMPT.currentURFilter);
WMEURMPT.saveOptions();
WMEURMPT.updateIHMFromURList();
};
WMEURMPT.toggleURFilterHideClosed = function() {
WMEURMPT.log('Switch UR filter "hide closed"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideClosed", WMEURMPT.URFilterList.hideClosed);
};
WMEURMPT.toggleURFilterHideWithoutCommentFromMe = function() {
WMEURMPT.log('Switch UR filter "hide without comments from me"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideWithoutCommentFromMe", WMEURMPT.URFilterList.hideWithoutCommentFromMe);
};
WMEURMPT.toggleURFilterHideWithCommentCount = function() {
WMEURMPT.log('Switch UR filter "hide more than ' + WMEURMPT.currentURCommentsCount + ' comments"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideWithCommentCount", WMEURMPT.URFilterList.hideWithCommentCount);
};
WMEURMPT.toggleURFilterHideNoNewComment = function() {
WMEURMPT.log('Switch UR filter "hide no new comment"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideNoNewComment", WMEURMPT.URFilterList.hideNoNewComment);
};
WMEURMPT.toggleURFilterHideOutOfMyDriveArea = function() {
WMEURMPT.log('Switch UR filter "hide out of my drive area"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideOutOfMyDriveArea", WMEURMPT.URFilterList.hideOutOfMyDriveArea);
};
WMEURMPT.toggleURFilterHideOutOfMyManagedArea = function() {
WMEURMPT.log('Switch UR filter "hide out of my managed area"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideOutOfMyManagedArea", WMEURMPT.URFilterList.hideOutOfMyManagedArea);
};
WMEURMPT.toggleURFilterHideVisited = function() {
WMEURMPT.log('Switch UR filter "hide visited"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideVisited", WMEURMPT.URFilterList.hideVisited);
};
WMEURMPT.toggleURFilterHideBlacklisted = function() {
WMEURMPT.log('Switch UR filter "hide blacklisted"');
if (WMEURMPT.getId("urt-checkbox-filterHideBlacklisted").checked) {
WMEURMPT.getId("urt-checkbox-filterHideWhitelisted").checked = false;
WMEURMPT.toggleURFilterHideWhitelisted();
}
WMEURMPT.toggleURFilter("urt-checkbox-filterHideBlacklisted", WMEURMPT.URFilterList.hideBlacklisted);
};
WMEURMPT.toggleURFilterHideWhitelisted = function() {
WMEURMPT.log('Switch UR filter "hide white listed"');
if (WMEURMPT.getId("urt-checkbox-filterHideWhitelisted").checked) {
WMEURMPT.getId("urt-checkbox-filterHideBlacklisted").checked = false;
WMEURMPT.toggleURFilterHideBlacklisted();
}
WMEURMPT.toggleURFilter("urt-checkbox-filterHideWhitelisted", WMEURMPT.URFilterList.hideWhitelisted);
};
WMEURMPT.toggleURFilterHideGE = function() {
WMEURMPT.log('Switch UR filter "hide General Error"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideGE", WMEURMPT.URFilterList.hideGE);
};
WMEURMPT.toggleURFilterHideNotKW = function() {
WMEURMPT.log('Switch UR filter "hide not matching keyword": ' + WMEURMPT.currentURKeyWord);
WMEURMPT.toggleURFilter("urt-checkbox-filterHideNotKW", WMEURMPT.URFilterList.hideNotKW);
};
WMEURMPT.toggleURFilterHideLimitTo = function() {
WMEURMPT.log('Switch UR filter "hide over limit: "' + WMEURMPT.currentURLimitTo);
WMEURMPT.toggleURFilter("urt-checkbox-filterHideLimitTo", WMEURMPT.URFilterList.hideLimitTo);
};
WMEURMPT.toggleURFilterHideOnlyType = function() {
WMEURMPT.log('Switch UR filter "hide all but type: "' + WMEURMPT.currentUROnlyType);
WMEURMPT.toggleURFilter("urt-checkbox-filterHideOnlyType", WMEURMPT.URFilterList.hideType);
};
WMEURMPT.toggleURFilterHideOnlyArea = function() {
WMEURMPT.log('Switch UR filter "hide all but area: "' + WMEURMPT.currentUROnlyArea);
WMEURMPT.toggleURFilter("urt-checkbox-filterHideOnlyArea", WMEURMPT.URFilterList.hideArea);
};
WMEURMPT.toggleURFilterHideLastCommentFromEditor = function() {
WMEURMPT.log('Switch UR filter "hide last comment from editor"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideLastCommentFromEditor", WMEURMPT.URFilterList.hideLastCommentFromEditor);
};
WMEURMPT.toggleURFilterHideTagged = function() {
WMEURMPT.log('Switch UR filter "hide tagged"');
WMEURMPT.toggleURFilter("urt-checkbox-filterHideTagged", WMEURMPT.URFilterList.hideTagged);
};
WMEURMPT.toggleMPFilter = function(chkboxId, filter) {
var chkbox = WMEURMPT.getId(chkboxId);
if (chkbox == null) {
return;
}
if (chkbox.checked) {
WMEURMPT.currentMPFilter = WMEURMPT.currentMPFilter | filter;
} else {
WMEURMPT.currentMPFilter = WMEURMPT.currentMPFilter & ~filter;
}
WMEURMPT.log("current MP filter: " + WMEURMPT.currentMPFilter);
WMEURMPT.updateIHMFromMPList();
};
WMEURMPT.toggleMPFilterHideClosed = function() {
WMEURMPT.log('Switch MP filter "hide closed"');
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideClosed", WMEURMPT.MPFilterList.hideClosed);
};
WMEURMPT.toggleMPFilterHideOutOfMyDriveArea = function() {
WMEURMPT.log('Switch MP filter "hide out of my drive area"');
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideOutOfMyDriveArea", WMEURMPT.MPFilterList.hideOutOfMyDriveArea);
};
WMEURMPT.toggleMPFilterHideOutOfMyManagedArea = function() {
WMEURMPT.log('Switch MP filter "hide out of my managed area"');
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideOutOfMyManagedArea", WMEURMPT.MPFilterList.hideOutOfMyManagedArea);
};
WMEURMPT.toggleMPFilterHideVisited = function() {
WMEURMPT.log('Switch MP filter "hide visited"');
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideVisited", WMEURMPT.MPFilterList.hideVisited);
};
WMEURMPT.toggleMPFilterHideBlacklisted = function() {
WMEURMPT.log('Switch MP filter "hide blacklisted"');
if (WMEURMPT.getId("mpt-checkbox-filterHideBlacklisted").checked) {
WMEURMPT.getId("mpt-checkbox-filterHideWhitelisted").checked = false;
WMEURMPT.toggleMPFilterHideWhitelisted();
}
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideBlacklisted", WMEURMPT.MPFilterList.hideBlacklisted);
};
WMEURMPT.toggleMPFilterHideWhitelisted = function() {
WMEURMPT.log('Switch MP filter "hide whitelisted"');
if (WMEURMPT.getId("mpt-checkbox-filterHideWhitelisted").checked) {
WMEURMPT.getId("mpt-checkbox-filterHideBlacklisted").checked = false;
WMEURMPT.toggleMPFilterHideBlacklisted();
}
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideWhitelisted", WMEURMPT.MPFilterList.hideWhitelisted);
};
WMEURMPT.toggleMPFilterHideLimitTo = function() {
WMEURMPT.log('Switch MP filter "hide over limit: "' + WMEURMPT.currentMPLimitTo);
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideLimitTo", WMEURMPT.MPFilterList.hideLimitTo);
};
WMEURMPT.toggleMPFilterHideOnlyType = function() {
WMEURMPT.log('Switch MP filter "hide all but type: "' + WMEURMPT.currentMPOnlyType);
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideOnlyType", WMEURMPT.MPFilterList.hideType);
};
WMEURMPT.toggleMPFilterHideOnlyArea = function() {
WMEURMPT.log('Switch MP filter "hide all but area: "' + WMEURMPT.currentMPOnlyArea);
WMEURMPT.toggleMPFilter("mpt-checkbox-filterHideOnlyArea", WMEURMPT.MPFilterList.hideArea);
};
WMEURMPT.toggleMCFilter = function(chkboxId, filter) {
var chkbox = WMEURMPT.getId(chkboxId);
if (chkbox == null) {
return;
}
if (chkbox.checked) {
WMEURMPT.currentMCFilter = WMEURMPT.currentMCFilter | filter;
} else {
WMEURMPT.currentMCFilter = WMEURMPT.currentMCFilter & ~filter;
}
WMEURMPT.log("current MC filter: " + WMEURMPT.currentMCFilter);
WMEURMPT.updateIHMFromMCList();
};
WMEURMPT.toggleMCFilterHideOutOfMyDriveArea = function() {
WMEURMPT.log('Switch MC filter "hide out of my drive area"');
WMEURMPT.toggleMCFilter("mct-checkbox-filterHideOutOfMyDriveArea", WMEURMPT.MCFilterList.hideOutOfMyDriveArea);
};
WMEURMPT.toggleMCFilterHideOutOfMyManagedArea = function() {
WMEURMPT.log('Switch MC filter "hide out of my managed area"');
WMEURMPT.toggleMCFilter("mct-checkbox-filterHideOutOfMyManagedArea", WMEURMPT.MCFilterList.hideOutOfMyManagedArea);
};
WMEURMPT.toggleMCFilterHideVisited = function() {
WMEURMPT.log('Switch MC filter "hide visited"');
WMEURMPT.toggleMCFilter("mct-checkbox-filterHideVisited", WMEURMPT.MCFilterList.hideVisited);
};
WMEURMPT.toggleMCFilterHideBlacklisted = function() {
WMEURMPT.log('Switch MC filter "hide blacklisted"');
if (WMEURMPT.getId("mct-checkbox-filterHideBlacklisted").checked) {
WMEURMPT.getId("mct-checkbox-filterHideWhitelisted").checked = false;
WMEURMPT.toggleMCFilterHideWhitelisted();
}
WMEURMPT.toggleMCFilter("mct-checkbox-filterHideBlacklisted", WMEURMPT.MCFilterList.hideBlacklisted);
};
WMEURMPT.toggleMCFilterHideWhitelisted = function() {
WMEURMPT.log('Switch MC filter "hide whitelisted"');
if (WMEURMPT.getId("mct-checkbox-filterHideWhitelisted").checked) {
WMEURMPT.getId("mct-checkbox-filterHideBlacklisted").checked = false;
WMEURMPT.toggleMCFilterHideBlacklisted();
}
WMEURMPT.toggleMCFilter("mct-checkbox-filterHideWhitelisted", WMEURMPT.MCFilterList.hideWhitelisted);
};
WMEURMPT.toggleMCFilterHideNotKW = function() {
WMEURMPT.log('Switch MC filter "hide not matching keyword": ' + WMEURMPT.currentMCKeyWord);
WMEURMPT.toggleMCFilter("mct-checkbox-filterHideNotKW", WMEURMPT.MCFilterList.hideNotKW);
};
WMEURMPT.toggleMCFilterHideLimitTo = function() {
WMEURMPT.log('Switch MC filter "hide over limit: "' + WMEURMPT.currentMCLimitTo);
WMEURMPT.toggleMCFilter("mct-checkbox-filterHideLimitTo", WMEURMPT.MCFilterList.hideLimitTo);
};
WMEURMPT.toggleMCFilterHideOnlyArea = function() {
WMEURMPT.log('Switch MC filter "hide all but area: "' + WMEURMPT.currentMCOnlyArea);
WMEURMPT.toggleMCFilter("mct-checkbox-filterHideOnlyArea", WMEURMPT.MCFilterList.hideArea);
};
WMEURMPT.togglePURFilter = function(chkboxId, filter) {
var chkbox = WMEURMPT.getId(chkboxId);
if (chkbox == null) {
return;
}
if (chkbox.checked) {
WMEURMPT.currentPURFilter = WMEURMPT.currentPURFilter | filter;
} else {
WMEURMPT.currentPURFilter = WMEURMPT.currentPURFilter & ~filter;
}
WMEURMPT.log("current PUR filter: " + WMEURMPT.currentPURFilter);
WMEURMPT.updateIHMFromPURList();
};
WMEURMPT.togglePURFilterHideOutOfMyDriveArea = function() {
WMEURMPT.log('Switch PUR filter "hide out of my drive area"');
WMEURMPT.togglePURFilter("purt-checkbox-filterHideOutOfMyDriveArea", WMEURMPT.PURFilterList.hideOutOfMyDriveArea);
};
WMEURMPT.togglePURFilterHideOutOfMyManagedArea = function() {
WMEURMPT.log('Switch PUR filter "hide out of my managed area"');
WMEURMPT.togglePURFilter("purt-checkbox-filterHideOutOfMyManagedArea", WMEURMPT.PURFilterList.hideOutOfMyManagedArea);
};
WMEURMPT.togglePURFilterHideVisited = function() {
WMEURMPT.log('Switch PUR filter "hide visited"');
WMEURMPT.togglePURFilter("purt-checkbox-filterHideVisited", WMEURMPT.PURFilterList.hideVisited);
};
WMEURMPT.togglePURFilterHideBlacklisted = function() {
WMEURMPT.log('Switch PUR filter "hide blacklisted"');
if (WMEURMPT.getId("purt-checkbox-filterHideBlacklisted").checked) {
WMEURMPT.getId("purt-checkbox-filterHideWhitelisted").checked = false;
WMEURMPT.togglePURFilterHideWhitelisted();
}
WMEURMPT.togglePURFilter("purt-checkbox-filterHideBlacklisted", WMEURMPT.PURFilterList.hideBlacklisted);
};
WMEURMPT.togglePURFilterHideWhitelisted = function() {
WMEURMPT.log('Switch PUR filter "hide whitelisted"');
if (WMEURMPT.getId("purt-checkbox-filterHideWhitelisted").checked) {
WMEURMPT.getId("purt-checkbox-filterHideBlacklisted").checked = false;
WMEURMPT.togglePURFilterHideBlacklisted();
}
WMEURMPT.togglePURFilter("purt-checkbox-filterHideWhitelisted", WMEURMPT.PURFilterList.hideWhitelisted);
};
WMEURMPT.togglePURFilterHideNotKW = function() {
WMEURMPT.log('Switch PUR filter "hide not matching keyword": ' + WMEURMPT.currentPURKeyWord);
WMEURMPT.togglePURFilter("purt-checkbox-filterHideNotKW", WMEURMPT.PURFilterList.hideNotKW);
};
WMEURMPT.togglePURFilterHideOnlyCategorie = function() {
WMEURMPT.log('Switch PUR filter "hide only categorie: "' + WMEURMPT.currentPUROnlyCategorie);
WMEURMPT.togglePURFilter("purt-checkbox-filterHideOnlyCategorie", WMEURMPT.PURFilterList.hideCategorie);
};
WMEURMPT.togglePURFilterHideLimitTo = function() {
WMEURMPT.log('Switch PUR filter "hide over limit: "' + WMEURMPT.currentPURLimitTo);
WMEURMPT.togglePURFilter("purt-checkbox-filterHideLimitTo", WMEURMPT.PURFilterList.hideLimitTo);
};
WMEURMPT.togglePURFilterHideOnlyArea = function() {
WMEURMPT.log('Switch PUR filter "hide all but area: "' + WMEURMPT.currentPUROnlyArea);
WMEURMPT.togglePURFilter("purt-checkbox-filterHideOnlyArea", WMEURMPT.PURFilterList.hideArea);
};
WMEURMPT.URCommentsCountChanged = function() {
WMEURMPT.currentURCommentsCount = this.value;
if (WMEURMPT.getId("urt-checkbox-filterHideWithCommentCount").checked) {
WMEURMPT.log("Hide UR comments greater than: " + WMEURMPT.currentURCommentsCount);
WMEURMPT.updateIHMFromURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.URKeywordChanged = function() {
WMEURMPT.currentURKeyWord = this.value;
if (WMEURMPT.getId("urt-checkbox-filterHideNotKW").checked) {
WMEURMPT.updateIHMFromURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.MCKeywordChanged = function() {
WMEURMPT.currentMCKeyWord = this.value;
if (WMEURMPT.getId("mct-checkbox-filterHideNotKW").checked) {
WMEURMPT.updateIHMFromMCList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.PURKeywordChanged = function() {
WMEURMPT.currentPURKeyWord = this.value;
if (WMEURMPT.getId("purt-checkbox-filterHideNotKW").checked) {
WMEURMPT.updateIHMFromPURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.URLimitToChanged = function() {
WMEURMPT.currentURLimitTo = parseInt(this.value);
if (isNaN(WMEURMPT.currentURLimitTo)) {
WMEURMPT.currentURLimitTo = 100;
}
if (WMEURMPT.getId("urt-checkbox-filterHideLimitTo").checked) {
WMEURMPT.log("Limit UR list to: " + WMEURMPT.currentURLimitTo);
WMEURMPT.updateIHMFromURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.MPLimitToChanged = function() {
WMEURMPT.currentMPLimitTo = parseInt(this.value);
if (isNaN(WMEURMPT.currentMPLimitTo)) {
WMEURMPT.currentMPLimitTo = 100;
}
if (WMEURMPT.getId("mpt-checkbox-filterHideLimitTo").checked) {
WMEURMPT.log("Limit MP list to: " + WMEURMPT.currentMPLimitTo);
WMEURMPT.updateIHMFromMPList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.MCLimitToChanged = function() {
WMEURMPT.currentMCLimitTo = parseInt(this.value);
if (isNaN(WMEURMPT.currentMCLimitTo)) {
WMEURMPT.currentMCLimitTo = 100;
}
if (WMEURMPT.getId("mct-checkbox-filterHideLimitTo").checked) {
WMEURMPT.log("Limit MC list to: " + WMEURMPT.currentMCLimitTo);
WMEURMPT.updateIHMFromMCList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.PURLimitToChanged = function() {
WMEURMPT.currentPURLimitTo = parseInt(this.value);
if (isNaN(WMEURMPT.currentPURLimitTo)) {
WMEURMPT.currentPURLimitTo = 100;
}
if (WMEURMPT.getId("purt-checkbox-filterHideLimitTo").checked) {
WMEURMPT.log("Limit PUR list to: " + WMEURMPT.currentPURLimitTo);
WMEURMPT.updateIHMFromPURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.UROnlyTypeChanged = function() {
WMEURMPT.currentUROnlyType = parseInt(this.value);
if (WMEURMPT.getId("urt-checkbox-filterHideOnlyType").checked) {
WMEURMPT.log("Hide all UR but type: " + WMEURMPT.currentUROnlyType);
WMEURMPT.updateIHMFromURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.MPOnlyTypeChanged = function() {
WMEURMPT.currentMPOnlyType = parseInt(this.value);
if (WMEURMPT.getId("mpt-checkbox-filterHideOnlyType").checked) {
WMEURMPT.log("Hide all MP but type: " + WMEURMPT.currentMPOnlyType);
WMEURMPT.updateIHMFromMPList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.PUROnlyCategorieChanged = function() {
WMEURMPT.currentPUROnlyCategorie = this.value;
if (WMEURMPT.getId("purt-checkbox-filterHideOnlyCategorie").checked) {
WMEURMPT.log("Hide all PUR but type: " + WMEURMPT.currentPUROnlyCategorie);
WMEURMPT.updateIHMFromPURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.UROnlyAreaChanged = function() {
WMEURMPT.currentUROnlyArea = this.value;
if (WMEURMPT.getId("urt-checkbox-filterHideOnlyArea").checked) {
WMEURMPT.log("Hide all UR but area: " + WMEURMPT.currentUROnlyArea);
WMEURMPT.updateIHMFromURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.MPOnlyAreaChanged = function() {
WMEURMPT.currentMPOnlyArea = this.value;
if (WMEURMPT.getId("mpt-checkbox-filterHideOnlyArea").checked) {
WMEURMPT.log("Hide all MP but area: " + WMEURMPT.currentMPOnlyArea);
WMEURMPT.updateIHMFromMPList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.MCOnlyAreaChanged = function() {
WMEURMPT.currentMCOnlyArea = this.value;
if (WMEURMPT.getId("mct-checkbox-filterHideOnlyArea").checked) {
WMEURMPT.log("Hide all MC but area: " + WMEURMPT.currentMCOnlyArea);
WMEURMPT.updateIHMFromMCList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.PUROnlyAreaChanged = function() {
WMEURMPT.currentPUROnlyArea = this.value;
if (WMEURMPT.getId("purt-checkbox-filterHideOnlyArea").checked) {
WMEURMPT.log("Hide all PUR but area: " + WMEURMPT.currentPUROnlyArea);
WMEURMPT.updateIHMFromPURList();
}
WMEURMPT.saveOptions();
};
WMEURMPT.refreshAreasCombolist = function(selectEl, defaultSelected) {
if (selectEl == null) {
WMEURMPT.log("Error no filter area");
return;
}
var content = "";
for (var i = 0; i < WMEURMPT.areaList.country.length; i++) {
content += '<option value="' + WMEURMPT.areaList.country[i].name + '"' + (defaultSelected == WMEURMPT.areaList.country[i].name ? " selected" : "") + ">" + WMEURMPT.areaList.country[i].name + "</option>";
}
for (var i = 0; i < WMEURMPT.areaList.custom.length; i++) {
content += '<option value="' + WMEURMPT.areaList.custom[i].name + '"' + (defaultSelected == WMEURMPT.areaList.custom[i].name ? " selected" : "") + ">" + WMEURMPT.areaList.custom[i].name + "</option>";
}
if (content == "") {
selectEl.parentNode.style.display = "none";
} else {
selectEl.parentNode.style.display = "block";
WMEURMPT.removeChildElements(selectEl);
selectEl.innerHTML = content;
}
};
WMEURMPT.addCountryToAreaList = function() {
var country = WMEURMPT.getId("urmpt-countryList").value;
WMEURMPT.log("Add country to filter list: " + country);
var area = new WMEURMPT.URT_AREA;
area.category = "country";
var areaPath = country.split("->");
if (areaPath.length > 1) {
area.subset = true;
area.name = areaPath[areaPath.length - 1];
area.parent = areaPath[0];
for (var i = 1; i < areaPath.length - 1; i++) {
if (i % 2 == 1) {
area.parent += ".";
} else {
area.parent += "/";
}
area.parent += areaPath[i];
}
} else {
area.name = country;
}
area.getGeometryFromServer(WMEURMPT.newCountryGeometryAvailable);
};
WMEURMPT.newCountryGeometryAvailable = function(area) {
if (area == null) {
alert("Error while getting area from server.\nPlease, retry later.");
return;
}
WMEURMPT.removeCountryFromAreaList(area);
WMEURMPT.areaList.country.push(area);
WMEURMPT.updateScanGroup();
};
WMEURMPT.removeCountryFromAreaList = function(country) {
WMEURMPT.log("remove country: " + country);
for (var i = 0; i < WMEURMPT.areaList.country.length; i++) {
if (WMEURMPT.areaList.country[i].name == country.name && WMEURMPT.areaList.country[i].subset == country.subset && WMEURMPT.areaList.country[i].parent == country.parent) {
WMEURMPT.areaList.country.splice(i, 1);
break;
}
}
WMEURMPT.updateScanGroup();
};
WMEURMPT.removeCountryIDFromAreaList = function(id) {
WMEURMPT.areaList.country.splice(id, 1);
WMEURMPT.updateScanGroup();
};
WMEURMPT.addCustomAreaFromWKTToFilterList = function() {
var elName = WMEURMPT.getId("urmpt-areas-wktfile-name");
if (elName.value == "") {
alert("The name of your custom area is empty.\nPlease, fill it.");
return;
}
if (WMEURMPT.lastUploadedWKT === null) {
alert("Please, choose a file before.");
return;
}
var ca = new WMEURMPT.URT_AREA;
ca.category = "custom";
ca.name = elName.value;
WMEURMPT.log("Add CA to scan list: " + ca.name);
ca.geometryWKT = WMEURMPT.lastUploadedWKT;
WMEURMPT.removeCustomNameFromAreaList(ca.name);
WMEURMPT.areaList.custom.push(ca);
elName.value = "";
WMEURMPT.lastUploadedWKT = null;
WMEURMPT.updateScanGroup();
};
WMEURMPT.handleFileSelectAddFromJSON = function(evt) {
var files = evt.target.files;
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader;
reader.onload = function(theFile) {
return function(e) {
WMEURMPT.lastUploadedJSON = e.target.result;
WMEURMPT.log("import JSON file read");
};
}(f);
reader.readAsText(f);
}
};
WMEURMPT.addCustomAreaFromJSONToFilterList = function() {
if (WMEURMPT.lastUploadedJSON === null) {
alert("Please, choose a file before.");
return;
}
var customAreas = JSON.parse(WMEURMPT.lastUploadedJSON);
customAreas.forEach(function(a) {
var ca = new WMEURMPT.URT_AREA;
ca.category = "custom";
ca.name = a.name;
WMEURMPT.log("Add CA to scan list: " + ca.name);
ca.geometryWKT = a.geometryWKT;
WMEURMPT.removeCustomNameFromAreaList(ca.name);
WMEURMPT.areaList.custom.push(ca);
});
WMEURMPT.lastUploadedJSON = null;
WMEURMPT.updateScanGroup();
};
WMEURMPT.addCustomAreaFromPOIToFilterList = function() {
var elName = WMEURMPT.getId("urmpt-areas-frompoi-name");
if (elName.value == "") {
alert("The name of your custom area is empty.\nPlease, fill it.");
return;
}
var theVenue = null;
var count = 0;
for (var v in WMEURMPT.wazeModel.venues.objects) {
if (WMEURMPT.wazeModel.venues.objects.hasOwnProperty(v) == false) {
continue;
}
var venue = WMEURMPT.wazeModel.venues.objects[v];
if (venue.isPoint() == true) {
continue;
}
if (venue.attributes.id <= 0) {
theVenue = venue;
count++;
}
}
if (count > 1) {
alert("There must be only one unsaved venue.\n" + count + " detected.\nDraw only one venue to convert it in a custom area.");
return;
}
if (count == 0) {
alert("You must draw an area venue and not save it. Then you can add it as a custom area.");
return;
}
var ca = new WMEURMPT.URT_AREA;
ca.category = "custom";
ca.name = elName.value;
WMEURMPT.log("Add CA to scan list: " + ca.name);
if (theVenue.geometry.components.length != 1) {
alert("Can't parse the geometry");
return;
}
ca.geometryWKT = "POLYGON ((";
var lonlats = [];
for (var i = 0; i < theVenue.geometry.components[0].components.length; i++) {
var lonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(theVenue.geometry.components[0].components[i].x, theVenue.geometry.components[0].components[i].y);
lonlats.push(lonlat.lon + " " + lonlat.lat);
}
ca.geometryWKT += lonlats.join(",");
ca.geometryWKT += "))";
WMEURMPT.removeCustomNameFromAreaList(ca.name);
WMEURMPT.areaList.custom.push(ca);
elName.value = "";
if (confirm("Undo all edits?")) {
while (WMEURMPT.wazeModel.actionManager.undo()) {
}
}
WMEURMPT.updateScanGroup();
};
WMEURMPT.addCustomAreaToFilterList = function() {
var elName = WMEURMPT.getId("urmpt-areas-name");
var elTLlon = WMEURMPT.getId("urmpt-areas-tl-lon");
var elBRlon = WMEURMPT.getId("urmpt-areas-br-lon");
var elTLlat = WMEURMPT.getId("urmpt-areas-tl-lat");
var elBRlat = WMEURMPT.getId("urmpt-areas-br-lat");
if (elName.value == "") {
alert("The name of your custom area is empty.\nPlease, fill it.");
return;
}
if (elTLlon.value == "" || elBRlon.value == "" || elTLlat.value == "" || elBRlat.value == "") {
alert("The lon/lat coords are not filled correctly.");
return;
}
var ca = new WMEURMPT.URT_AREA;
ca.category = "custom";
ca.name = elName.value;
WMEURMPT.log("Add CA to scan list: " + ca.name);
var lonMin = elTLlon.value;
var lonMax = elBRlon.value;
var latMin = elTLlat.value;
var latMax = elBRlat.value;
ca.geometryWKT = "POLYGON ((" + lonMin + " " + latMin + "," + lonMax + " " + latMin + "," + lonMax + " " + latMax + "," + lonMin + " " + latMax + "," + lonMin + " " + latMin + "))";
WMEURMPT.removeCustomNameFromAreaList(ca.name);
WMEURMPT.areaList.custom.push(ca);
elName.value = "";
elTLlon.value = "";
elBRlon.value = "";
elTLlat.value = "";
elBRlat.value = "";
WMEURMPT.updateScanGroup();
};
WMEURMPT.removeCustomNameFromAreaList = function(areaName) {
for (var c = 0; c < WMEURMPT.areaList.custom.length; c++) {
if (WMEURMPT.areaList.custom[c].name == areaName) {
WMEURMPT.areaList.custom.splice(c, 1);
WMEURMPT.log("removed CA: " + areaName);
break;
}
}
WMEURMPT.updateScanGroup();
};
WMEURMPT.editCustomArea = function(areaName) {
for (var c = 0; c < WMEURMPT.areaList.custom.length; c++) {
WMEURMPT.getId("urmpt-area-custom-edit-" + WMEURMPT.areaList.custom[c].name).style.display = "none";
if (WMEURMPT.areaList.custom[c].name == areaName) {
WMEURMPT.getId("urmpt-area-custom-save-" + WMEURMPT.areaList.custom[c].name).style.display = "inline";
var area = WMEURMPT.areaList.custom[c];
var featureLandmark = require("Waze/Feature/Vector/Landmark");
var landmark = new featureLandmark;
var center = area.geometryOL.geometry.getCentroid();
var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(center.x, center.y);
WMEURMPT.wazeMap.setCenter(xy);
var geo = [];
area.geometryOL.geometry.components[0].components.forEach(function(c) {
var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(c.x, c.y);
geo.push(new OpenLayers.Geometry.Point(xy.lon, xy.lat));
});
landmark.geometry = new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(geo)]);
landmark.attributes.categories = ["OTHER"];
var AddLandmark = require("Waze/Action/AddLandmark");
W.model.actionManager.add(new AddLandmark(landmark), _.defer(function() {
W.selectionManager.setSelectedModels([landmark]);
}));
}
}
};
WMEURMPT.saveEditedCustomArea = function(areaName) {
var theVenue = null;
var count = 0;
for (var v in WMEURMPT.wazeModel.venues.objects) {
if (WMEURMPT.wazeModel.venues.objects.hasOwnProperty(v) == false) {
continue;
}
var venue = WMEURMPT.wazeModel.venues.objects[v];
if (venue.isPoint() == true) {
continue;
}
if (venue.attributes.id <= 0) {
theVenue = venue;
count++;
}
}
if (count > 1) {
alert("There must be only one unsaved venue.\n" + count + " detected.\nDraw only one venue to convert it in a custom area.");
WMEURMPT.updateScanGroup();
return;
}
if (count == 0) {
alert("You must draw an area venue and not save it. Then you can add it as a custom area.");
WMEURMPT.updateScanGroup();
return;
}
if (theVenue.geometry.components.length != 1) {
alert("Can't parse the geometry");
WMEURMPT.updateScanGroup();
return;
}
WMEURMPT.removeCustomNameFromAreaList(areaName);
var ca = new WMEURMPT.URT_AREA;
ca.category = "custom";
ca.name = areaName;
ca.geometryWKT = "POLYGON ((";
var lonlats = [];
for (var i = 0; i < theVenue.geometry.components[0].components.length; i++) {
var lonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(theVenue.geometry.components[0].components[i].x, theVenue.geometry.components[0].components[i].y);
lonlats.push(lonlat.lon + " " + lonlat.lat);
}
ca.geometryWKT += lonlats.join(",");
ca.geometryWKT += "))";
WMEURMPT.areaList.custom.push(ca);
if (confirm("Undo all edits?")) {
while (WMEURMPT.wazeModel.actionManager.undo()) {
}
}
WMEURMPT.updateScanGroup();
};
WMEURMPT.exportAllCAToJSON = function() {
this.setAttribute("download", "URMPT_CustomAreas_" + WMEURMPT.me.userName + ".json");
this.href = "data:application/octet-stream;charset=utf-8;base64," + btoa(JSON.stringify(WMEURMPT.areaList.custom.map(function(e) {
return {name:e.name, geometryWKT:e.geometryWKT};
})));
};
WMEURMPT.updateScanGroup = function() {
var scanGroup = WMEURMPT.getId("urt-a-scanGroup");
var countryScanList = WMEURMPT.getId("urmpt-countryscanlist");
var customAreaScanList = WMEURMPT.getId("urmpt-custom-scan-list");
WMEURMPT.removeChildElements(scanGroup);
scanGroup.innerHTML = "SCAN: ";
if (countryScanList != null) {
WMEURMPT.removeChildElements(countryScanList);
countryScanList.innerHTML = "";
}
WMEURMPT.removeChildElements(customAreaScanList);
customAreaScanList.innerHTML = "";
var elt = document.createElement("a", "urt-a-DriveArea");
elt.innerHTML = "Drive area";
elt.href = "#";
elt.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScan, [{type:"driveArea"}]);
scanGroup.appendChild(elt);
if (WMEURMPT.uam) {
elt = document.createElement("span");
elt.innerHTML = " | ";
scanGroup.appendChild(elt);
var elt = document.createElement("a", "urt-a-ManagedArea");
elt.innerHTML = "Managed area";
elt.href = "#";
elt.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScan, [{type:"managedArea"}]);
scanGroup.appendChild(elt);
}
if (WMEURMPT.areaList.country.length == 0 && (WMEURMPT.ul >= 8 || WMEURMPT.me.isCountryManager())) {
scanGroup.insertAdjacentHTML("beforeend", '<br/><font color="#C00000">You are a rank 4+ editor. In the areas tab, you can select a country or a subset for state managers in the list and add it to your scan list!');
}
for (var c = 0; c < WMEURMPT.areaList.country.length; c++) {
if (WMEURMPT.areaList.country[c].geometryOL == null) {
WMEURMPT.areaList.country[c].geometryOL = (new OpenLayers.Format.WKT).read(WMEURMPT.areaList.country[c].geometryWKT);
if (WMEURMPT.areaList.country[c].geometryOL == null || WMEURMPT.areaList.country[c].geometryOL.hasOwnProperty("geometry") == false) {
WMEURMPT.log("Error on area " + WMEURMPT.areaList.country[c].name + ". Removing it... :(");
WMEURMPT.areaList.country.splice(c, 1);
c--;
continue;
}
for (var j = 0; j < WMEURMPT.areaList.country[c].geometryOL.geometry.components.length; j++) {
WMEURMPT.areaList.country[c].geometryOL.geometry.components[j].calculateBounds();
WMEURMPT.bintreeGeometry(WMEURMPT.areaList.country[c].geometryOL.geometry.components[j]);
}
}
elt = WMEURMPT.createElement("span");
elt.innerHTML = " | ";
scanGroup.appendChild(elt);
elt = WMEURMPT.createElement("a", "urt-a-scan" + WMEURMPT.areaList.country[c].name);
elt.innerHTML = WMEURMPT.areaList.country[c].name.replace(/_/g, " ");
elt.href = "#";
elt.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScan, [{type:"country", name:WMEURMPT.areaList.country[c].name}]);
scanGroup.appendChild(elt);
if (countryScanList != null) {
var elt = WMEURMPT.createElement("div");
elt.innerHTML = WMEURMPT.areaList.country[c].name.replace(/_/g, " ") + " ";
var GELink = WMEURMPT.createElement("a");
GELink.href = "#";
GELink.innerHTML = '<img style="height: 15px;" src="data:image/png;base64,' + WMEURMPT.icon_ge + '" />';
GELink.title = "Show in google earth";
GELink.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.showAreaInGoogleEarth, [{type:"country", name:WMEURMPT.areaList.country[c].name}]);
elt.appendChild(GELink);
var WKTLink = WMEURMPT.createElement("a");
WKTLink.href = "#";
WKTLink.innerHTML = "WKT";
WKTLink.title = "Export to WKT";
WKTLink.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.showAreaInWKT, [{type:"country", name:WMEURMPT.areaList.country[c].name}]);
elt.appendChild(WKTLink);
elt.insertAdjacentHTML("beforeend", " (");
var removeLink = WMEURMPT.createElement("a");
removeLink.innerHTML = "remove";
removeLink.href = "#";
removeLink.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.removeCountryIDFromAreaList, [c]);
elt.appendChild(removeLink);
elt.insertAdjacentHTML("beforeend", ")");
countryScanList.appendChild(elt);
}
}
for (var c = 0; c < WMEURMPT.areaList.custom.length; c++) {
if (WMEURMPT.areaList.custom[c].geometryOL == null) {
WMEURMPT.areaList.custom[c].geometryOL = (new OpenLayers.Format.WKT).read(WMEURMPT.areaList.custom[c].geometryWKT);
if (WMEURMPT.areaList.custom[c].geometryOL == null || WMEURMPT.areaList.custom[c].geometryOL.hasOwnProperty("geometry") == false) {
WMEURMPT.log("Error on area " + WMEURMPT.areaList.custom[c].name + ". Removing it... :(");
WMEURMPT.areaList.custom.splice(c, 1);
c--;
continue;
}
for (var j = 0; j < WMEURMPT.areaList.custom[c].geometryOL.geometry.components.length; j++) {
WMEURMPT.areaList.custom[c].geometryOL.geometry.components[j].calculateBounds();
WMEURMPT.bintreeGeometry(WMEURMPT.areaList.custom[c].geometryOL.geometry.components[j]);
}
}
elt = WMEURMPT.createElement("span");
elt.innerHTML = " | ";
scanGroup.appendChild(elt);
elt = WMEURMPT.createElement("a", "urt-a-scan" + WMEURMPT.areaList.custom[c].name);
elt.innerHTML = WMEURMPT.areaList.custom[c].name.replace(/_/g, " ");
elt.href = "#";
elt.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScan, [{type:"custom", name:WMEURMPT.areaList.custom[c].name}]);
scanGroup.appendChild(elt);
if (customAreaScanList != null) {
var elt = WMEURMPT.createElement("div");
elt.innerHTML = WMEURMPT.areaList.custom[c].name.replace(/_/g, " ") + " ";
var GELink = WMEURMPT.createElement("a");
GELink.href = "#";
GELink.innerHTML = '<img style="height: 15px;" src="data:image/png;base64,' + WMEURMPT.icon_ge + '" />';
GELink.title = "Show in google earth";
GELink.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.showAreaInGoogleEarth, [{type:"custom", name:WMEURMPT.areaList.custom[c].name}]);
elt.appendChild(GELink);
var WKTLink = WMEURMPT.createElement("a");
WKTLink.href = "#";
WKTLink.innerHTML = "WKT";
WKTLink.title = "Export to WKT";
WKTLink.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.showAreaInWKT, [{type:"custom", name:WMEURMPT.areaList.custom[c].name}]);
elt.appendChild(WKTLink);
elt.insertAdjacentHTML("beforeend", " ");
var editLink = WMEURMPT.createElement("a");
editLink.href = "#";
editLink.id = "urmpt-area-custom-edit-" + WMEURMPT.areaList.custom[c].name;
editLink.innerHTML = "Edit";
editLink.title = "Edit as unsaved landmark";
editLink.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.editCustomArea, [WMEURMPT.areaList.custom[c].name]);
elt.appendChild(editLink);
elt.insertAdjacentHTML("beforeend", " ");
var saveLink = WMEURMPT.createElement("a");
saveLink.href = "#";
saveLink.id = "urmpt-area-custom-save-" + WMEURMPT.areaList.custom[c].name;
saveLink.style.display = "none";
saveLink.innerHTML = "Save";
saveLink.title = "Save landmark";
saveLink.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.saveEditedCustomArea, [WMEURMPT.areaList.custom[c].name]);
elt.appendChild(saveLink);
elt.insertAdjacentHTML("beforeend", " (");
var removeLink = WMEURMPT.createElement("a");
removeLink.innerHTML = "remove";
removeLink.href = "#";
removeLink.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.removeCustomNameFromAreaList, [WMEURMPT.areaList.custom[c].name]);
elt.appendChild(removeLink);
elt.insertAdjacentHTML("beforeend", ")");
customAreaScanList.appendChild(elt);
}
}
var ael = WMEURMPT.createElement("a");
ael.href = "#";
ael.innerHTML = "Export to JSON";
ael.onclick = WMEURMPT.exportAllCAToJSON;
customAreaScanList.appendChild(ael);
WMEURMPT.refreshAreasCombolist(WMEURMPT.getId("urt-filterOnlyArea"), WMEURMPT.currentUROnlyArea);
WMEURMPT.refreshAreasCombolist(WMEURMPT.getId("mpt-filterOnlyArea"), WMEURMPT.currentMPOnlyArea);
WMEURMPT.refreshAreasCombolist(WMEURMPT.getId("mct-filterOnlyArea"), WMEURMPT.currentMCOnlyArea);
WMEURMPT.refreshAreasCombolist(WMEURMPT.getId("purt-filterOnlyArea"), WMEURMPT.currentPUROnlyArea);
WMEURMPT.currentUROnlyArea = WMEURMPT.getId("urt-filterOnlyArea").value;
WMEURMPT.currentMPOnlyArea = WMEURMPT.getId("mpt-filterOnlyArea").value;
WMEURMPT.currentMCOnlyArea = WMEURMPT.getId("mct-filterOnlyArea").value;
WMEURMPT.currentPUROnlyArea = WMEURMPT.getId("purt-filterOnlyArea").value;
WMEURMPT.saveAreas();
};
WMEURMPT.showAreaInGoogleEarth = function(area) {
var template = '<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"><Document> <name>#AREANAME#</name> <Style id="hl"> <IconStyle> <scale>1.2</scale> </IconStyle> <LineStyle> <color>ff000000</color> <width>2</width> </LineStyle> <PolyStyle> <color>7f0000ff</color> </PolyStyle> </Style> <Style id="default"> <LineStyle> <color>ff000000</color> <width>2</width> </LineStyle> <PolyStyle> <color>7f0000ff</color> </PolyStyle> </Style> <StyleMap id="default0"> <Pair> <key>normal</key> <styleUrl>#default</styleUrl> </Pair> <Pair> <key>highlight</key> <styleUrl>#hl</styleUrl> </Pair> </StyleMap> <Placemark> <name>#AREANAME#</name> <styleUrl>#default0</styleUrl>#GEOMETRY#</Placemark></Document></kml>';
var kmlGeometry = "";
var geometry = null;
function geomToKML(geom) {
var output = "";
for (var i = 0; i < geom.length; i++) {
output += "<Polygon><outerBoundaryIs><LinearRing><coordinates>";
for (var p = 0; p < geom[i].components.length; p++) {
output += geom[i].components[p].x + "," + geom[i].components[p].y + " ";
}
output += "</coordinates></LinearRing></outerBoundaryIs></Polygon>";
}
return output;
}
for (var i = 0; i < WMEURMPT.areaList[area.type].length; i++) {
if (WMEURMPT.areaList[area.type][i].name == area.name) {
geometry = WMEURMPT.areaList[area.type][i].geometryOL.geometry;
break;
}
}
if (geometry) {
if (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPolygon") {
kmlGeometry += "<MultiGeometry>";
for (var p = 0; p < geometry.components.length; p++) {
kmlGeometry += geomToKML(geometry.components[p].components);
}
kmlGeometry += "</MultiGeometry>";
} else {
kmlGeometry += geomToKML(geometry.components);
}
template = template.replace(/#AREANAME#/g, area.name);
template = template.replace("#GEOMETRY#", kmlGeometry);
this.setAttribute("download", area.name + ".kml");
this.href = "data:application/octet-stream;charset=utf-8;base64," + btoa(template);
}
return false;
};
WMEURMPT.computeStats = function(fromURList, fromMPList, fromDate, toDate) {
var out = "";
out += "URs: " + fromURList.length + "<br/>";
out += "MPs: " + fromMPList.length + "<br/>";
var closedUR = fromURList.filter(function(value) {
return value.data.open === false;
}).length;
var closedMP = fromMPList.filter(function(value) {
return value.data.open === false;
}).length;
var niUR = fromURList.filter(function(value) {
return value.data.open === false && value.data.resolution == 1;
}).length;
var soUR = closedUR - niUR;
var niMP = fromMPList.filter(function(value) {
return value.data.open === false && value.data.resolution == 1;
}).length;
var soMP = closedMP - niMP;
out += "URs closed: " + closedUR + " (" + Math.round(closedUR * 100 / fromURList.length) + "%) " + (fromURList.length - closedUR) + " remaining<br/>";
out += " Not identified: " + niUR + " (" + Math.round(niUR * 100 / closedUR) + "%)<br/>";
out += " Solved: " + soUR + " (" + Math.round(soUR * 100 / closedUR) + "%)<br/>";
out += "MPs closed: " + closedMP + " (" + Math.round(closedMP * 100 / fromMPList.length) + "%) " + (fromMPList.length - closedMP) + " remaining<br/>";
out += " Not identified: " + niMP + " (" + Math.round(niMP * 100 / closedMP) + "%)<br/>";
out += " Solved: " + soMP + " (" + Math.round(soMP * 100 / closedMP) + "%)<br/>";
var urWithComment = fromURList.filter(function(value) {
return value.data.hasComments === true;
}).length;
var urWithCommentFromReporter = fromURList.filter(function(value) {
return value.data.hasComments === true && value.data.session.comments.filter(function(c) {
return c.userName == "Reporter";
}).length != 0;
}).length;
out += "URs with reporter comment: " + urWithCommentFromReporter + " (" + Math.round(urWithCommentFromReporter * 100 / urWithComment) + "% of commented URs)<br/>";
WMEURMPT.statsCSV += "UR;Count;Percent\n";
WMEURMPT.statsCSV += "Count;" + fromURList.length + "\n";
WMEURMPT.statsCSV += "Closed;" + closedUR + ";" + closedUR * 100 / fromURList.length + "\n";
WMEURMPT.statsCSV += "Not identified;" + niUR + ";" + niUR * 100 / closedUR + "\n";
WMEURMPT.statsCSV += "Solved;" + soUR + ";" + soUR * 100 / closedUR + "\n";
WMEURMPT.statsCSV += "With comment;" + urWithComment + ";" + urWithComment * 100 / fromURList.length + "\n";
WMEURMPT.statsCSV += "With reporter comment;" + urWithCommentFromReporter + ";" + urWithCommentFromReporter * 100 / urWithComment + "\n";
WMEURMPT.statsCSV += "MP;Count;Percent\n";
WMEURMPT.statsCSV += "Count;" + fromMPList.length + "\n";
WMEURMPT.statsCSV += "Closed;" + closedMP + ";" + closedMP * 100 / fromMPList.length + "\n";
WMEURMPT.statsCSV += "Not identified;" + niMP + ";" + niMP * 100 / closedMP + "\n";
WMEURMPT.statsCSV += "Solved;" + soMP + ";" + soMP * 100 / closedMP + "\n";
var bestPipeletteList = [];
var bestURCloserList = [];
var bestMPCloserList = [];
for (var i = 0; i < fromURList.length; i++) {
var ur = fromURList[i];
if (ur.data.hasComments == true) {
for (var c = 0; c < ur.data.session.comments.length; c++) {
var userName = ur.data.session.comments[c].userName;
if (userName == "Reporter" || userName == "Unknown") {
continue;
}
if (bestPipeletteList.hasOwnProperty(userName)) {
bestPipeletteList[userName]++;
} else {
bestPipeletteList[userName] = 1;
}
}
}
if (!ur.data.open) {
if (bestURCloserList.hasOwnProperty(ur.data.resolvedByName)) {
bestURCloserList[ur.data.resolvedByName].total++;
} else {
bestURCloserList[ur.data.resolvedByName] = {total:1, solved:0};
}
if (ur.data.resolution != 1) {
bestURCloserList[ur.data.resolvedByName].solved++;
}
}
}
for (var i = 0; i < fromMPList.length; i++) {
var mp = fromMPList[i];
if (!mp.data.open) {
if (bestMPCloserList.hasOwnProperty(mp.data.resolvedByName)) {
bestMPCloserList[mp.data.resolvedByName].total++;
} else {
bestMPCloserList[mp.data.resolvedByName] = {total:1, solved:0};
}
if (mp.data.resolution != 1) {
bestMPCloserList[mp.data.resolvedByName].solved++;
}
}
}
var sortablePipelettes = [];
for (var p in bestPipeletteList) {
if (bestPipeletteList.hasOwnProperty(p)) {
sortablePipelettes.push([p, bestPipeletteList[p]]);
}
}
var sortableURClosers = [];
for (var c in bestURCloserList) {
if (bestURCloserList.hasOwnProperty(c)) {
sortableURClosers.push([c, bestURCloserList[c]]);
}
}
var sortableMPClosers = [];
for (var c in bestMPCloserList) {
if (bestMPCloserList.hasOwnProperty(c)) {
sortableMPClosers.push([c, bestMPCloserList[c]]);
}
}
sortablePipelettes.sort(function(a, b) {
return b[1] - a[1];
});
sortableURClosers.sort(function(a, b) {
return b[1].total - a[1].total;
});
sortableMPClosers.sort(function(a, b) {
return b[1].total - a[1].total;
});
WMEURMPT.statsCSV += "Bests\n";
out += "Best UR closer:<ol>";
WMEURMPT.statsCSV += "UR Closer;count;solved;not identified\n";
for (var i = 0; i < 3 && i < sortableURClosers.length; i++) {
out += "<li>" + sortableURClosers[i][0] + " (" + sortableURClosers[i][1].total + " URs closed, " + sortableURClosers[i][1].solved + " solved and " + (sortableURClosers[i][1].total - sortableURClosers[i][1].solved) + " not identified)</li>";
WMEURMPT.statsCSV += sortableURClosers[i][0] + ";" + sortableURClosers[i][1].total + ";" + sortableURClosers[i][1].solved + ";" + (sortableURClosers[i][1].total - sortableURClosers[i][1].solved) + "\n";
}
out += "</ol>";
out += "Best MP closer:<ol>";
WMEURMPT.statsCSV += "MP Closer;count;solved;not identified\n";
for (var i = 0; i < 3 && i < sortableMPClosers.length; i++) {
out += "<li>" + sortableMPClosers[i][0] + " (" + sortableMPClosers[i][1].total + " MPs closed, " + sortableMPClosers[i][1].solved + " solved and " + (sortableMPClosers[i][1].total - sortableMPClosers[i][1].solved) + " not identified)</li>";
WMEURMPT.statsCSV += sortableMPClosers[i][0] + ";" + sortableMPClosers[i][1].total + ";" + sortableMPClosers[i][1].solved + ";" + (sortableMPClosers[i][1].total - sortableMPClosers[i][1].solved) + "\n";
}
out += "</ol>";
out += "Best pipelette:<ol>";
WMEURMPT.statsCSV += "Pipelette;Message count\n";
for (var i = 0; i < 3 && i < sortablePipelettes.length; i++) {
out += "<li>" + sortablePipelettes[i][0] + " (" + sortablePipelettes[i][1] + " comments)</li>";
WMEURMPT.statsCSV += sortablePipelettes[i][0] + ";" + sortablePipelettes[i][1] + "\n";
}
out += "</ol>";
return out;
};
WMEURMPT.refreshStats = function(fromDate, toDate) {
WMEURMPT.log("refreshStats from: ", fromDate);
WMEURMPT.log("refreshStats to: ", toDate);
var pb = new WMEURMPT.ProgressBar(WMEURMPT.getId("urt-progressBar"));
if (pb.isShown() == false) {
pb.update(-1);
pb.show();
WMEURMPT.showPBInfo(true);
WMEURMPT.info("Refreshing stats, please wait...");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.refreshStats, [fromDate, toDate]));
return;
}
WMEURMPT.statsCSV = "";
var div = WMEURMPT.getId("urmpt-stats");
WMEURMPT.removeChildElements(div);
div.innerHTML = '<font style="font-size: larger; font-weight: bold;">Statistics</font><hr/>';
div.innerHTML += '<div style="display: flex;"><span style="margin: 5px; display: table;" >From: </span><input value="' + fromDate + '" type="text" id="urmpt-stat-from" size="9"/><span style="margin: 5px; display: table;" > to </span><input value="' + toDate + '" type="text" id="urmpt-stat-to" size="9"/><button id="urmpt-stat-refresh" style="display: table; width: 40px; padding: 0px;">OK</button></div><hr/>';
div.innerHTML += '<a id="urmpt-stat-export_csv" href="#">Export to CSV</a><hr/>';
var dateFilteredURList = WMEURMPT.URList;
var dateFilteredMPList = WMEURMPT.MPList;
if (fromDate != "" && toDate != "") {
var df = (new Date(fromDate)).getTime();
var dt = (new Date(toDate)).getTime();
dateFilteredURList = WMEURMPT.URList.filter(function(value) {
return value.data.resolvedOn != null && value.data.resolvedOn >= df && value.data.resolvedOn <= dt || value.data.updatedOn != null && value.data.updatedOn >= df && value.data.updatedOn <= dt || value.data.driveDate != null && value.data.driveDate >= df && value.data.driveDate <= dt;
});
dateFilteredMPList = WMEURMPT.MPList.filter(function(value) {
return value.data.resolvedOn != null && value.data.resolvedOn >= df && value.data.resolvedOn <= dt;
});
}
div.innerHTML += "General:<br/><br/>";
WMEURMPT.statsCSV += "General\n";
div.innerHTML += WMEURMPT.computeStats(dateFilteredURList, dateFilteredMPList, fromDate, toDate);
div.innerHTML += "<hr/>";
div.innerHTML += "You:<br/><br/>";
var closedURbyMe = dateFilteredURList.filter(function(value) {
return value.data.resolvedBy === WMEURMPT.me.id;
}).length;
var closedMPbyMe = dateFilteredMPList.filter(function(value) {
return value.data.resolvedBy === WMEURMPT.me.id;
}).length;
var niURbyMe = dateFilteredURList.filter(function(value) {
return value.data.resolvedBy === WMEURMPT.me.id && value.data.open === false && value.data.resolution == 1;
}).length;
var soURbyMe = closedURbyMe - niURbyMe;
var niMPbyMe = dateFilteredMPList.filter(function(value) {
return value.data.resolvedBy === WMEURMPT.me.id && value.data.open === false && value.data.resolution == 1;
}).length;
var soMPbyMe = closedMPbyMe - niMPbyMe;
div.innerHTML += "URs closed: " + closedURbyMe + " (" + Math.round(closedURbyMe * 100 / dateFilteredURList.length) + "%)<br/>";
div.innerHTML += " Not identified: " + niURbyMe + " (" + Math.round(niURbyMe * 100 / closedURbyMe) + "%)<br/>";
div.innerHTML += " Solved: " + soURbyMe + " (" + Math.round(soURbyMe * 100 / closedURbyMe) + "%)<br/>";
div.innerHTML += "MPs closed: " + closedMPbyMe + " (" + Math.round(closedMPbyMe * 100 / dateFilteredMPList.length) + "%)<br/>";
div.innerHTML += " Not identified: " + niMPbyMe + " (" + Math.round(niMPbyMe * 100 / closedMPbyMe) + "%)<br/>";
div.innerHTML += " Solved: " + soMPbyMe + " (" + Math.round(soMPbyMe * 100 / closedMPbyMe) + "%)<br/>";
div.innerHTML += "<hr/>";
div.innerHTML += "Per area:<br/><br/>";
div.innerHTML += "<ul>";
WMEURMPT.statsCSV += "You\n";
WMEURMPT.statsCSV += "UR;Count;Percent\n";
WMEURMPT.statsCSV += "Closed;" + closedURbyMe + ";" + closedURbyMe * 100 / dateFilteredURList.length + "\n";
WMEURMPT.statsCSV += "Not identified;" + niURbyMe + ";" + niURbyMe * 100 / closedURbyMe + "\n";
WMEURMPT.statsCSV += "Solved;" + soURbyMe + ";" + soURbyMe * 100 / closedURbyMe + "\n";
WMEURMPT.statsCSV += "MP;Count;Percent\n";
WMEURMPT.statsCSV += "Closed;" + closedMPbyMe + ";" + closedMPbyMe * 100 / dateFilteredMPList.length + "\n";
WMEURMPT.statsCSV += "Not identified;" + niMPbyMe + ";" + niMPbyMe * 100 / closedMPbyMe + "\n";
WMEURMPT.statsCSV += "Solved;" + soMPbyMe + ";" + soMPbyMe * 100 / closedMPbyMe + "\n";
WMEURMPT.statsCSV += "Your drive area\n";
var fromURList = dateFilteredURList.filter(function(value) {
return WMEURMPT.isInsideDriveArea(value.lonlat.lon, value.lonlat.lat);
});
var fromMPList = dateFilteredMPList.filter(function(value) {
return WMEURMPT.isInsideDriveArea(value.lonlat.lon, value.lonlat.lat);
});
div.innerHTML += "<li>Your drive area<br/>" + WMEURMPT.computeStats(fromURList, fromMPList, fromDate, toDate) + "</li>";
if (WMEURMPT.uam) {
WMEURMPT.statsCSV += "Your managed area\n";
var fromURList = dateFilteredURList.filter(function(value) {
return WMEURMPT.isInsideManagedArea(value.lonlat.lon, value.lonlat.lat);
});
var fromMPList = dateFilteredMPList.filter(function(value) {
return WMEURMPT.isInsideManagedArea(value.lonlat.lon, value.lonlat.lat);
});
div.innerHTML += "<li>Your managed area<br/>" + WMEURMPT.computeStats(fromURList, fromMPList, fromDate, toDate) + "</li>";
}
for (var a = 0; a < WMEURMPT.areaList.country.length; a++) {
WMEURMPT.statsCSV += WMEURMPT.areaList.country[a].name + "\n";
var fromURList = dateFilteredURList.filter(function(value) {
return WMEURMPT.areaList.country[a].isInside(value.lonlat);
});
var fromMPList = dateFilteredMPList.filter(function(value) {
return WMEURMPT.areaList.country[a].isInside(value.lonlat);
});
div.innerHTML += "<li>" + WMEURMPT.areaList.country[a].name + "<br/>" + WMEURMPT.computeStats(fromURList, fromMPList, fromDate, toDate) + "</li>";
}
for (var a = 0; a < WMEURMPT.areaList.custom.length; a++) {
WMEURMPT.statsCSV += WMEURMPT.areaList.custom[a].name + "\n";
var fromURList = dateFilteredURList.filter(function(value) {
return WMEURMPT.areaList.custom[a].isInside(value.lonlat);
});
var fromMPList = dateFilteredMPList.filter(function(value) {
return WMEURMPT.areaList.custom[a].isInside(value.lonlat);
});
div.innerHTML += "<li>" + WMEURMPT.areaList.custom[a].name + "<br/>" + WMEURMPT.computeStats(fromURList, fromMPList, fromDate, toDate) + "</li>";
}
div.innerHTML += "</ul>";
WMEURMPT.showPBInfo(false);
pb.hide();
pb.update(0);
WMEURMPT.info();
window.setTimeout(WMEURMPT.setupStatHandlers);
};
WMEURMPT.setupStatHandlers = function() {
if (typeof $.fn.datepicker !== "undefined") {
$("#urmpt-stat-from,#urmpt-stat-to").datepicker();
} else {
if (typeof $.fn.daterangepicker !== "undefined") {
$("#urmpt-stat-from,#urmpt-stat-to").daterangepicker({singleDatePicker:!0, locale:{format:"YYYY-MM-DD"}});
}
}
WMEURMPT.getId("urmpt-stat-refresh").onclick = function() {
var dateFrom = WMEURMPT.getId("urmpt-stat-from").value;
var dateTo = WMEURMPT.getId("urmpt-stat-to").value;
WMEURMPT.refreshStats(dateFrom, dateTo);
};
WMEURMPT.getId("urmpt-stat-export_csv").onclick = WMEURMPT.exportStatsToCSV;
};
WMEURMPT.exportStatsToCSV = function() {
this.setAttribute("download", "URMPT_Stats_" + (new Date).toISOString().substr(0, 10) + "_" + WMEURMPT.me.userName + ".csv");
this.href = "data:application/octet-stream;charset=utf-8;base64," + btoa(WMEURMPT.statsCSV);
};
WMEURMPT.connectStatHandler = function() {
WMEURMPT.getId("urmp-tabstitle-stat").onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.refreshStats, ["", ""]);
};
WMEURMPT.exportURMPs = function(t, button) {
button.setAttribute("download", t + "s.bbcode.txt");
var data = "";
var displayedCount = 0;
var src = WMEURMPT.URList;
var filterFunc = WMEURMPT.isURFiltered;
var limit = WMEURMPT.currentURLimitTo;
var typeFunc = WMEURMPT.getFullURTypeFromType;
if (t == "MP") {
src = WMEURMPT.MPList;
filterFunc = WMEURMPT.isMPFiltered;
limit = WMEURMPT.currentMPLimitTo;
typeFunc = WMEURMPT.getFullMPTypeFromType;
}
for (var i = 0; i < src.length; i++) {
if (WMEURMPT.getId(t.toLowerCase() + "t-checkbox-filterHideLimitTo").checked) {
if (displayedCount >= limit) {
break;
}
}
if (filterFunc(src[i])) {
continue;
}
displayedCount++;
var number = t == "UR" ? WMEURMPT.getDuration(src[i].data.driveDate) : src[i].data.weight;
var type = typeFunc(t == "UR" ? src[i].data.type : src[i].data.subType);
var url = location.protocol + "//" + location.host + location.pathname + "?lon=" + src[i].lonlat.lon + "&lat=" + src[i].lonlat.lat + "&zoom=5" + (t == "UR" ? "&mapUpdateRequest=" : "&mapProblem=") + src[i].id;
data += "[url=" + url + "]" + (t == "MP" ? "Severity: " : "") + number + (t == "UR" ? " days" : "") + " " + " | " + type + (t == "UR" ? src[i].data.hasOwnProperty("description") && src[i].data.description ? " | " + src[i].data.description : " | N/A" : "") + "[/url]\n";
}
button.href = "data:text/plain;base64," + btoa(unescape(encodeURIComponent(data)));
};
WMEURMPT.exportKML_URMPs = function(t, button, start) {
var kml = "";
var src = WMEURMPT.URList;
var filterFunc = WMEURMPT.isURFiltered;
var typeFunc = WMEURMPT.getFullURTypeFromType;
if (t == "MP") {
src = WMEURMPT.MPList;
filterFunc = WMEURMPT.isMPFiltered;
typeFunc = WMEURMPT.getFullMPTypeFromType;
}
var finished = true;
var displayedCount = 0;
var data = {};
for (var i = start; i < src.length; i++) {
if (displayedCount == 2500) {
start = i;
finished = false;
break;
}
if (filterFunc(src[i])) {
continue;
}
displayedCount++;
var number = t == "UR" ? WMEURMPT.getDuration(src[i].data.driveDate) : src[i].data.weight;
var type = typeFunc(t == "UR" ? src[i].data.type : src[i].data.subType);
var color = "green";
if (src[i].data.open) {
if (t == "UR") {
if (number < 15) {
color = "yellow";
} else {
if (number < 30) {
color = "orange";
} else {
color = "red";
}
}
} else {
if (number < 51) {
color = "yellow";
} else {
if (number < 100) {
color = "orange";
} else {
color = "red";
}
}
}
}
if (data.hasOwnProperty(type) == false) {
data[type] = [];
}
data[type].push({lonlat:src[i].lonlat, color:color});
}
kml = '<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"><Document><name>' + t + 's</name><Style id="sn_red"><IconStyle><color>7f0000ff</color><scale>0.5</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href></Icon></IconStyle><LabelStyle><scale>0</scale></LabelStyle><ListStyle></ListStyle></Style><Style id="sh_red"><IconStyle><color>7f0000ff</color><scale>0.6</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href></Icon></IconStyle><LabelStyle><scale>0</scale></LabelStyle><ListStyle></ListStyle></Style><StyleMap id="msn_red"><Pair><key>normal</key><styleUrl>#sn_red</styleUrl></Pair><Pair><key>highlight</key><styleUrl>#sh_red</styleUrl></Pair></StyleMap><Style id="sn_orange"><IconStyle><color>7f0080ff</color><scale>0.5</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href></Icon></IconStyle><LabelStyle><scale>0</scale></LabelStyle><ListStyle></ListStyle></Style><Style id="sh_orange"><IconStyle><color>7f0080ff</color><scale>0.6</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href></Icon></IconStyle><LabelStyle><scale>0</scale></LabelStyle><ListStyle></ListStyle></Style><StyleMap id="msn_orange"><Pair><key>normal</key><styleUrl>#sn_orange</styleUrl></Pair><Pair><key>highlight</key><styleUrl>#sh_orange</styleUrl></Pair></StyleMap><Style id="sn_yellow"><IconStyle><color>7f00ffff</color><scale>0.5</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href></Icon></IconStyle><LabelStyle><scale>0</scale></LabelStyle><ListStyle></ListStyle></Style><Style id="sh_yellow"><IconStyle><color>7f00ffff</color><scale>0.6</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href></Icon></IconStyle><LabelStyle><scale>0</scale></LabelStyle><ListStyle></ListStyle></Style><StyleMap id="msn_yellow"><Pair><key>normal</key><styleUrl>#sn_yellow</styleUrl></Pair><Pair><key>highlight</key><styleUrl>#sh_yellow</styleUrl></Pair></StyleMap><Style id="sn_green"><IconStyle><color>7f00ff00</color><scale>0.5</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href></Icon></IconStyle><LabelStyle><scale>0</scale></LabelStyle><ListStyle></ListStyle></Style><Style id="sh_green"><IconStyle><color>7f00ff00</color><scale>0.6</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href></Icon></IconStyle><LabelStyle><scale>0</scale></LabelStyle><ListStyle></ListStyle></Style><StyleMap id="msn_green"><Pair><key>normal</key><styleUrl>#sn_green</styleUrl></Pair><Pair><key>highlight</key><styleUrl>#sh_green</styleUrl></Pair></StyleMap>';
for (var type in data) {
kml += "<Folder><name>";
kml += type;
kml += "</name><open>0</open>";
data[type].forEach(function(r) {
kml += "<Placemark><name></name><description></description><LookAt><longitude>" + r.lonlat.lon + "</longitude><latitude>" + r.lonlat.lat + "</latitude><altitude>0</altitude><heading>0</heading><tilt>0</tilt><range>1000.000000</range><gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode></LookAt><styleUrl>#msn_" + r.color + "</styleUrl><Point><gx:drawOrder>1</gx:drawOrder><coordinates>" + r.lonlat.lon + "," + r.lonlat.lat + ",0</coordinates></Point></Placemark>";
});
kml += "</Folder>";
}
kml += "</Document></kml>";
var element = document.createElement("a");
element.style.display = "none";
element.setAttribute("href", encodeURI("data:text/plain," + kml));
element.setAttribute("download", t + "s_" + start + ".kml");
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
if (finished == false) {
window.setTimeout(function() {
WMEURMPT.exportKML_URMPs(t, button, start);
});
}
};
WMEURMPT.initialiseURT = function() {
WMEURMPT.initManagedArea();
var addon = WMEURMPT.createElement("section", "urt-addon");
var divpbi = WMEURMPT.createElement("div", "urt-progressBarInfo");
divpbi.className = "urt-progressBarInfo";
var elt = WMEURMPT.createElement("div", "urt-progressBar");
elt.style.width = "100%";
elt.style.display = "none";
elt.innerHTML = '<div class="urt-progressBarBG"></div><span class="urt-progressBarFG">100%</span>';
divpbi.appendChild(elt);
elt = WMEURMPT.createElement("div", "urt-info");
divpbi.appendChild(elt);
addon.appendChild(divpbi);
var section = WMEURMPT.createElement("p", "urt-main-title");
section.style.paddingTop = "0px";
section.style.marginTop = "-15px";
section.style.textIndent = "8px";
var title = '<b><a target="_blank" href="https://greasyfork.org/fr/scripts/368141-wme-ur-mp-tracking"><u>UR-MP Tracking</u></a> <a target="_blank" href="https://www.waze.com/forum/viewtopic.php?f=68&t=91786">Fr</a> <a target="_blank" href="https://www.waze.com/forum/viewtopic.php?f=819&t=125216">En</a> </b> v' + WMEURMPT.urmpt_version + '<span style="padding-left: 20px;"><a href="#" id="urmpt-onoff"><img class="urt-chkbox" src="data:image/png;base64,' + (WMEURMPT.isEnabled ? WMEURMPT.icon_checked :
WMEURMPT.icon_unchecked) + '" /></a></span>';
section.innerHTML = title;
if (WMEURMPT.displayLegend) {
section.innerHTML += '<img id="urt-close-legend" style="display: block; position: relative; left: 5px; top: 10px; float: right; z-index: 99; width: 16px; height: 16px;" src="data:image/png;base64,' + WMEURMPT.icon_delete + '" /><div id="urt-legend" ><table class="urt-table"><tr><td class="urt-bg-selected">Last visited</td><td>Visited</td></tr><tr><td class="urt-bg-ifollow">I follow</td><td class="urt-bg-highlighted">Never visited</td></tr></table></div>';
}
addon.appendChild(section);
var quickOptions = WMEURMPT.createElement("span", "urmpt-qoptions");
var qohtml = "";
qohtml = '<font style="font-size: smaller; font-weight: 600;">Quick options:</font><hr style="margin: 0px;" />';
qohtml += '<table style="border: 0px; width: 100%;"><tr>';
qohtml += '<td style="width: 50%;">';
qohtml += '<a href="#" id="urmpt-donoff"><img class="urt-chkbox" src="data:image/png;base64,' + (WMEURMPT.isComputeDistances ? WMEURMPT.icon_checked : WMEURMPT.icon_unchecked) + '" /></a>Distances<br/>';
qohtml += '<a href="#" id="urmpt-asonoff"><img class="urt-chkbox" src="data:image/png;base64,' + (WMEURMPT.isAutoScan ? WMEURMPT.icon_checked : WMEURMPT.icon_unchecked) + '" /></a>Auto scan';
qohtml += "</td><td>";
qohtml += '<a href="#" id="urmpt-suronoff"><img class="urt-chkbox" src="data:image/png;base64,' + (WMEURMPT.scanUR ? WMEURMPT.icon_checked : WMEURMPT.icon_unchecked) + '" /></a>Scan UR<br/>';
qohtml += '<a href="#" id="urmpt-smponoff"><img class="urt-chkbox" src="data:image/png;base64,' + (WMEURMPT.scanMP ? WMEURMPT.icon_checked : WMEURMPT.icon_unchecked) + '" /></a>Scan MP<br/>';
qohtml += '<a href="#" id="urmpt-smconoff"><img class="urt-chkbox" src="data:image/png;base64,' + (WMEURMPT.scanMC ? WMEURMPT.icon_checked : WMEURMPT.icon_unchecked) + '" /></a>Scan MC<br/>';
qohtml += '<a href="#" id="urmpt-spuronoff"><img class="urt-chkbox" src="data:image/png;base64,' + (WMEURMPT.scanPUR ? WMEURMPT.icon_checked : WMEURMPT.icon_unchecked) + '" /></a>Scan PUR';
qohtml += "</td>";
qohtml += "</tr></table>";
quickOptions.innerHTML = qohtml;
addon.appendChild(quickOptions);
var generalMenu = WMEURMPT.createElement("center");
generalMenu.style.marginBottom = "10px";
addon.appendChild(generalMenu);
var elt;
var scanGroup = WMEURMPT.createElement("div", "urt-a-scanGroup");
generalMenu.appendChild(scanGroup);
var urmpTabs = WMEURMPT.createElement("ul", "urmp-tabs");
addon.appendChild(urmpTabs);
urmpTabs.className = "nav nav-tabs";
urmpTabs.innerHTML = '<li class="active" style="width: 13.75%; text-align: center; height: 30px;"><a id="urmp-tabstitle-ur" style="height: 30px;" href="#urmp-tabs-ur" data-toggle="tab">UR</a></li>';
urmpTabs.innerHTML += '<li class="" style="width: 13.75%; text-align: center; height: 30px;"><a id="urmp-tabstitle-mp" style="height: 30px;" href="#urmp-tabs-mp" data-toggle="tab">MP</a></li>';
urmpTabs.innerHTML += '<li class="" style="width: 13.75%; text-align: center; height: 30px;"><a id="urmp-tabstitle-mc" style="height: 30px;" href="#urmp-tabs-mc" data-toggle="tab">MC</a></li>';
urmpTabs.innerHTML += '<li class="" style="width: 13.75%; text-align: center; height: 30px;"><a id="urmp-tabstitle-pur" style="height: 30px;" href="#urmp-tabs-pur" data-toggle="tab">PUR</a></li>';
urmpTabs.innerHTML += '<li class="" style="width: 13.75%; text-align: center; height: 30px;"><a class="fa fa-bar-chart icon-bar-chart" id="urmp-tabstitle-stat" style="height: 30px;" href="#urmp-tabs-os" data-toggle="tab"></a></li>';
urmpTabs.innerHTML += '<li class="" style="width: 13.75%; text-align: center; height: 30px;"><a class="fa fa-pencil-square-o" style="height: 30px;" href="#urmp-tabs-areas" data-toggle="tab"></a></li>';
urmpTabs.innerHTML += '<li class="" style="width: 13.75%; text-align: center; height: 30px;"><a class="fa fa-gear" style="height: 30px;" href="#urmp-tabs-settings" data-toggle="tab"></a></li>';
window.setTimeout(WMEURMPT.connectStatHandler);
window.setTimeout(WMEURMPT.connectURTabHandler);
window.setTimeout(WMEURMPT.connectMPTabHandler);
window.setTimeout(WMEURMPT.connectMCTabHandler);
window.setTimeout(WMEURMPT.connectPURTabHandler);
var urmp_tab_content = WMEURMPT.createElement("div", "urmpt-tab-content");
urmp_tab_content.className = "tab-content";
urmp_tab_content.style.paddingBottom = "10px";
urmp_tab_content.style.paddingTop = "10px";
urmp_tab_content.style.paddingLeft = "5px";
urmp_tab_content.style.paddingRight = "5px";
addon.appendChild(urmp_tab_content);
var ur_tab_pane = WMEURMPT.createElement("section", "urmp-tabs-ur");
ur_tab_pane.className = "tab-pane active";
ur_tab_pane.style.paddingLeft = "0px";
ur_tab_pane.style.paddingRight = "0px";
urmp_tab_content.appendChild(ur_tab_pane);
var urMenu = WMEURMPT.createElement("center");
ur_tab_pane.appendChild(urMenu);
elt = WMEURMPT.createElement("a", "urt-a-markallvisited");
elt.innerHTML = "Mark all as visited";
elt.href = "#";
elt.onclick = WMEURMPT.markAllURAsVisited;
urMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
urMenu.appendChild(elt);
elt = WMEURMPT.createElement("a", "urt-a-clearAll");
elt.innerHTML = "Clear all";
elt.href = "#";
elt.onclick = WMEURMPT.clearAllUR;
urMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
urMenu.appendChild(elt);
elt = WMEURMPT.createElement("a", "urt-a-export");
elt.href = "#";
elt.innerHTML = '<img src="data:image/png;base64,' + WMEURMPT.icon_export + '" width="14px" height="14px" />';
elt.onclick = function() {
var that = this;
WMEURMPT.exportURMPs("UR", that);
};
urMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
urMenu.appendChild(elt);
elt = WMEURMPT.createElement("a", "urt-a-export-kml");
elt.href = "#";
elt.innerHTML = '<img src="data:image/png;base64,' + WMEURMPT.icon_ge + '" height="14px" />';
elt.onclick = function() {
var that = this;
WMEURMPT.exportKML_URMPs("UR", that, 0);
return false;
};
urMenu.appendChild(elt);
elt = WMEURMPT.createElement("div");
var content = '<ul class="urt-filter-list">';
content += '<li><input type="checkbox" id="urt-checkbox-filterInvert"><b>Invert filters</b></li>';
content += '<li title="Show URs I have already commented"><input type="checkbox" id="urt-checkbox-filterHideWithoutCommentFromMe"> Hide without comment from me</li>';
content += '<li title="Show URs with last comment from Reporter"><input type="checkbox" id="urt-checkbox-filterHideLastCommentFromEditor"> Hide last comment from an editor</li>';
content += '<li title="Show only URs from 0 to n comments"><input type="checkbox" id="urt-checkbox-filterHideWithCommentCount"> Hide with more than <input size="2" maxlength="2" type="text" id="urt-filterHideWithCommentCount" value="' + WMEURMPT.currentURCommentsCount + '"></input> comment(s)</li>';
content += '<li title="Show URs with unread comment(s)"><input type="checkbox" id="urt-checkbox-filterHideNoNewComment"> Hide no new comment</li>';
content += '<li title="Show URs in my drive areas"><input type="checkbox" id="urt-checkbox-filterHideOutOfMyDriveArea"> Hide out of my drive area</li>';
if (WMEURMPT.uam) {
content += '<li title="Show URs in my managed areas"><input type="checkbox" id="urt-checkbox-filterHideOutOfMyManagedArea"> Hide out of my managed area</li>';
}
content += '<li title="Show URs I have never seen"><input type="checkbox" id="urt-checkbox-filterHideVisited"> Hide visited</li>';
if (WMEURMPT.ul >= WMEURMPT.rl4cp) {
content += '<li title="Show only pendings URs"><input type="checkbox" id="urt-checkbox-filterHideClosed"> Hide closed</li>';
}
content += '<li title="Show white listed URs"><input type="checkbox" id="urt-checkbox-filterHideBlacklisted"> Hide black listed</li>';
content += '<li title="Show black listed URs"><input type="checkbox" id="urt-checkbox-filterHideWhitelisted"> Hide white listed</li>';
content += '<li title="Show all but General Error"><input type="checkbox" id="urt-checkbox-filterHideGE"> Hide General Error</li>';
content += '<li title="Show UR if description contains keyword"><input type="checkbox" id="urt-checkbox-filterHideNotKW"> Description keyword: <input type="text" id="urt-filterKW" value="' + WMEURMPT.currentURKeyWord + '"></input></li>';
content += '<li title="Show only nth first URs"><input type="checkbox" id="urt-checkbox-filterHideLimitTo"> Limit to: <input type="text" id="urt-filterLimitTo" value="' + WMEURMPT.currentURLimitTo + '"></input></li>';
content += '<li title="Show tagged URs"><input type="checkbox" id="urt-checkbox-filterHideTagged"> Hide tagged</li>';
content += '<li title="Show only one type"><input type="checkbox" id="urt-checkbox-filterHideOnlyType"> Hide all but: <select style="height: 25px" id="urt-filterOnlyType">';
var URTypes = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 22, 23];
for (var i = 0; i < URTypes.length; i++) {
content += '<option value="' + URTypes[i] + '"' + (WMEURMPT.currentUROnlyType == URTypes[i] ? " selected" : "") + ">" + WMEURMPT.getFullURTypeFromType(URTypes[i]) + "</option>";
}
content += "</select></li>";
content += '<li title="Show only inside area"><input type="checkbox" id="urt-checkbox-filterHideOnlyArea"> Hide all but: <select style="height: 25px" id="urt-filterOnlyArea">';
content += "</select></li>";
content += "</ul>";
ur_tab_pane.appendChild(elt);
var pannel = new WMEURMPT.PopupPannel("FilterUR", "100%", "100%", "#93c4d3");
pannel.setTriggerInnerHTML("Filters");
pannel.setContentsInnerHTML(content);
pannel.installInside(elt);
elt = WMEURMPT.createElement("div", "urt-list");
ur_tab_pane.appendChild(elt);
var mp_tab_pane = WMEURMPT.createElement("section", "urmp-tabs-mp");
mp_tab_pane.className = "tab-pane";
mp_tab_pane.style.paddingLeft = "0px";
mp_tab_pane.style.paddingRight = "0px";
urmp_tab_content.appendChild(mp_tab_pane);
var mpMenu = WMEURMPT.createElement("center");
mp_tab_pane.appendChild(mpMenu);
elt = WMEURMPT.createElement("a", "mpt-a-markallvisited");
elt.innerHTML = "Mark all as visited";
elt.href = "#";
elt.onclick = WMEURMPT.markAllMPAsVisited;
mpMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
mpMenu.appendChild(elt);
elt = WMEURMPT.createElement("a", "mpt-a-clearAll");
elt.innerHTML = "Clear all";
elt.href = "#";
elt.onclick = WMEURMPT.clearAllMP;
mpMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
mpMenu.appendChild(elt);
elt = WMEURMPT.createElement("a", "mpt-a-export");
elt.href = "#";
elt.innerHTML = '<img src="data:image/png;base64,' + WMEURMPT.icon_export + '" width="14px" height="14px" />';
elt.onclick = function() {
var that = this;
WMEURMPT.exportURMPs("MP", that);
};
mpMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
mpMenu.appendChild(elt);
elt = WMEURMPT.createElement("a", "mpt-a-export-kml");
elt.href = "#";
elt.innerHTML = '<img src="data:image/png;base64,' + WMEURMPT.icon_ge + '" height="14px" />';
elt.onclick = function() {
var that = this;
WMEURMPT.exportKML_URMPs("MP", that, 0);
return false;
};
mpMenu.appendChild(elt);
elt = WMEURMPT.createElement("div");
content = '<ul class="urt-filter-list">';
content += '<li title="Show MPs in my drive areas"><input type="checkbox" id="mpt-checkbox-filterHideOutOfMyDriveArea"> Hide out of my drive area</li>';
if (WMEURMPT.uam) {
content += '<li title="Show MPs in my managed areas"><input type="checkbox" id="mpt-checkbox-filterHideOutOfMyManagedArea"> Hide out of my managed area</li>';
}
content += '<li title="Show MPs I have never seen"><input type="checkbox" id="mpt-checkbox-filterHideVisited"> Hide visited</li>';
if (WMEURMPT.ul >= WMEURMPT.rl4cp) {
content += '<li title="Show only pendings MPs"><input type="checkbox" id="mpt-checkbox-filterHideClosed"> Hide closed</li>';
}
content += '<li title="Show white listed MPs"><input type="checkbox" id="mpt-checkbox-filterHideBlacklisted"> Hide black listed</li>';
content += '<li title="Show black listed MPs"><input type="checkbox" id="mpt-checkbox-filterHideWhitelisted"> Hide white listed</li>';
content += '<li title="Show only nth first MPs"><input type="checkbox" id="mpt-checkbox-filterHideLimitTo"> Limit to: <input type="text" id="mpt-filterLimitTo" value="' + WMEURMPT.currentMPLimitTo + '"></input></li>';
content += '<li title="Show only one type"><input type="checkbox" id="mpt-checkbox-filterHideOnlyType"> Hide all but: <select style="height: 25px" id="mpt-filterOnlyType">';
var MPTypes = [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 50, 51, 52, 53, 70, 71, 101, 102, 103, 104, 105, 106, 200, 300];
for (var i = 0; i < MPTypes.length; i++) {
content += '<option value="' + MPTypes[i] + '"' + (WMEURMPT.currentMPOnlyType == MPTypes[i] ? " selected" : "") + ">" + WMEURMPT.getFullMPTypeFromType(MPTypes[i]) + "</option>";
}
content += "</select></li>";
content += '<li title="Show only one area"><input type="checkbox" id="mpt-checkbox-filterHideOnlyArea"> Hide all but: <select style="height: 25px" id="mpt-filterOnlyArea">';
content += "</select></li>";
content += "</ul>";
mp_tab_pane.appendChild(elt);
var pannelMP = new WMEURMPT.PopupPannel("FilterMP", "100%", "100%", "#93c4d3");
pannelMP.setTriggerInnerHTML("Filters");
pannelMP.setContentsInnerHTML(content);
pannelMP.installInside(elt);
elt = WMEURMPT.createElement("div", "mpt-list");
mp_tab_pane.appendChild(elt);
var mc_tab_pane = WMEURMPT.createElement("section", "urmp-tabs-mc");
mc_tab_pane.className = "tab-pane";
mc_tab_pane.style.paddingLeft = "0px";
mc_tab_pane.style.paddingRight = "0px";
urmp_tab_content.appendChild(mc_tab_pane);
var mcMenu = WMEURMPT.createElement("center");
mc_tab_pane.appendChild(mcMenu);
elt = WMEURMPT.createElement("a", "mct-a-markallvisited");
elt.innerHTML = "Mark all as visited";
elt.href = "#";
elt.onclick = WMEURMPT.markAllMCAsVisited;
mcMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
mcMenu.appendChild(elt);
elt = WMEURMPT.createElement("a", "mct-a-clearAll");
elt.innerHTML = "Clear all";
elt.href = "#";
elt.onclick = WMEURMPT.clearAllMC;
mcMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
mcMenu.appendChild(elt);
elt = WMEURMPT.createElement("div");
var content = '<ul class="urt-filter-list">';
content += '<li title="Show MCs in my drive areas"><input type="checkbox" id="mct-checkbox-filterHideOutOfMyDriveArea"> Hide out of my drive area</li>';
if (WMEURMPT.uam) {
content += '<li title="Show MCs in my managed areas"><input type="checkbox" id="mct-checkbox-filterHideOutOfMyManagedArea"> Hide out of my managed area</li>';
}
content += '<li title="Show MCs I have never seen"><input type="checkbox" id="mct-checkbox-filterHideVisited"> Hide visited</li>';
content += '<li title="Show white listed MCs"><input type="checkbox" id="mct-checkbox-filterHideBlacklisted"> Hide black listed</li>';
content += '<li title="Show black listed MCs"><input type="checkbox" id="mct-checkbox-filterHideWhitelisted"> Hide white listed</li>';
content += '<li title="Show only nth first MCs"><input type="checkbox" id="mct-checkbox-filterHideLimitTo"> Limit to: <input type="text" id="mct-filterLimitTo" value="' + WMEURMPT.currentMCLimitTo + '"></input></li>';
content += '<li title="Show MC if subject or body contains keyword"><input type="checkbox" id="mct-checkbox-filterHideNotKW"> Subject/Body keyword: <input type="text" id="mct-filterKW" value="' + WMEURMPT.currentMCKeyWord + '"></input></li>';
content += '<li title="Show only inside area"><input type="checkbox" id="mct-checkbox-filterHideOnlyArea"> Hide all but: <select style="height: 25px" id="mct-filterOnlyArea">';
content += "</select></li>";
content += "</ul>";
mc_tab_pane.appendChild(elt);
var pannel = new WMEURMPT.PopupPannel("FilterMC", "100%", "100%", "#93c4d3");
pannel.setTriggerInnerHTML("Filters");
pannel.setContentsInnerHTML(content);
pannel.installInside(elt);
elt = WMEURMPT.createElement("div", "mct-list");
mc_tab_pane.appendChild(elt);
var pur_tab_pane = WMEURMPT.createElement("section", "urmp-tabs-pur");
pur_tab_pane.className = "tab-pane";
pur_tab_pane.style.paddingLeft = "0px";
pur_tab_pane.style.paddingRight = "0px";
urmp_tab_content.appendChild(pur_tab_pane);
var purMenu = WMEURMPT.createElement("center");
pur_tab_pane.appendChild(purMenu);
elt = WMEURMPT.createElement("a", "purt-a-markallvisited");
elt.innerHTML = "Mark all as visited";
elt.href = "#";
elt.onclick = WMEURMPT.markAllPURAsVisited;
purMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
purMenu.appendChild(elt);
elt = WMEURMPT.createElement("a", "purt-a-clearAll");
elt.innerHTML = "Clear all";
elt.href = "#";
elt.onclick = WMEURMPT.clearAllPUR;
purMenu.appendChild(elt);
elt = WMEURMPT.createElement("span");
elt.innerHTML = "|";
purMenu.appendChild(elt);
elt = WMEURMPT.createElement("div");
var content = '<ul class="urt-filter-list">';
content += '<li title="Show PURs in my drive areas"><input type="checkbox" id="purt-checkbox-filterHideOutOfMyDriveArea"> Hide out of my drive area</li>';
if (WMEURMPT.uam) {
content += '<li title="Show PURs in my managed areas"><input type="checkbox" id="purt-checkbox-filterHideOutOfMyManagedArea"> Hide out of my managed area</li>';
}
content += '<li title="Show PURs I have never seen"><input type="checkbox" id="purt-checkbox-filterHideVisited"> Hide visited</li>';
content += '<li title="Show white listed PURs"><input type="checkbox" id="purt-checkbox-filterHideBlacklisted"> Hide black listed</li>';
content += '<li title="Show black listed PURs"><input type="checkbox" id="purt-checkbox-filterHideWhitelisted"> Hide white listed</li>';
content += '<li title="Show only nth first PURs"><input type="checkbox" id="purt-checkbox-filterHideLimitTo"> Limit to: <input type="text" id="purt-filterLimitTo" value="' + WMEURMPT.currentPURLimitTo + '"></input></li>';
content += '<li title="Show PUR if subject or body contains keyword"><input type="checkbox" id="purt-checkbox-filterHideNotKW"> Subject/Body keyword: <input type="text" id="purt-filterKW" value="' + WMEURMPT.currentPURKeyWord + '"></input></li>';
content += '<li title="Show only one categorie"><input type="checkbox" id="purt-checkbox-filterHideOnlyCategorie"> Hide all but: <select style="height: 25px" id="purt-filterOnlyCategorie">';
var PURCategories = WMEURMPT.objectToList(WMEURMPT.getFullPURCategoriesFromCategories());
for (var i = 0; i < PURCategories.length; i++) {
content += '<option value="' + PURCategories[i] + '"' + (WMEURMPT.currentPUROnlyCategorie == PURCategories[i] ? " selected" : "") + ">" + PURCategories[i] + "</option>";
}
content += "</select></li>";
content += '<li title="Show only inside area"><input type="checkbox" id="purt-checkbox-filterHideOnlyArea"> Hide all but: <select style="height: 25px" id="purt-filterOnlyArea">';
content += "</select></li>";
content += "</ul>";
pur_tab_pane.appendChild(elt);
var pannel = new WMEURMPT.PopupPannel("FilterPUR", "100%", "100%", "#93c4d3");
pannel.setTriggerInnerHTML("Filters");
pannel.setContentsInnerHTML(content);
pannel.installInside(elt);
elt = WMEURMPT.createElement("div", "purt-list");
pur_tab_pane.appendChild(elt);
var os_tab_pane = WMEURMPT.createElement("section", "urmp-tabs-os");
os_tab_pane.className = "tab-pane";
os_tab_pane.style.paddingLeft = "0px";
os_tab_pane.style.paddingRight = "0px";
urmp_tab_content.appendChild(os_tab_pane);
var divStats = WMEURMPT.createElement("div", "urmpt-stats");
os_tab_pane.appendChild(divStats);
var areas_tab_pane = WMEURMPT.createElement("section", "urmp-tabs-areas");
areas_tab_pane.className = "tab-pane";
areas_tab_pane.style.paddingLeft = "0px";
areas_tab_pane.style.paddingRight = "0px";
urmp_tab_content.appendChild(areas_tab_pane);
if (WMEURMPT.ul >= 8 || WMEURMPT.me.isCountryManager()) {
var divCM = WMEURMPT.createElement("div");
divCM.innerHTML = "Add country(ies) or subset(s) to scan list.<br/>";
var divInput = WMEURMPT.createElement("div");
divInput.style.whiteSpace = "nowrap";
var countryList = WMEURMPT.createElement("select", "urmpt-countryList");
countryList.style.width = "calc(100% - 45px)";
divInput.appendChild(countryList);
window.setTimeout(WMEURMPT.initCountryList);
var addButton = WMEURMPT.createElement("button");
addButton.innerHTML = "Add";
addButton.onclick = WMEURMPT.addCountryToAreaList;
divInput.appendChild(addButton);
divCM.appendChild(divInput);
divCM.insertAdjacentHTML("beforeend", "<br/>Your country scan list:<br/>");
var divCountryScanList = WMEURMPT.createElement("div", "urmpt-countryscanlist");
divCM.appendChild(divCountryScanList);
areas_tab_pane.appendChild(divCM);
areas_tab_pane.appendChild(WMEURMPT.createElement("hr"));
}
var divCA = WMEURMPT.createElement("div");
var divAddCA = WMEURMPT.createElement("div");
divAddCA.style.display = "none";
divAddCA.style.paddingLeft = "10px";
var elAddCAmenu = WMEURMPT.createElement("a");
elAddCAmenu.innerHTML = "\u25b6 Add custom area";
elAddCAmenu.href = "#";
elAddCAmenu.onclick = function() {
if (divAddCA.style.display == "none") {
divAddCA.style.display = "block";
this.innerHTML = "\u25bc Add custom area";
} else {
divAddCA.style.display = "none";
this.innerHTML = "\u25b6 Add custom area";
}
};
var inputFromPOI = WMEURMPT.createElement("div");
inputFromPOI.innerHTML = "FROM AN UNSAVED POI AREA";
var inputFromPOI_name = WMEURMPT.createElement("div");
inputFromPOI_name.innerHTML = 'Give a name to your area:<input type="text" id="urmpt-areas-frompoi-name" />';
var inputFromPOI_button = WMEURMPT.createElement("div");
inputFromPOI_button.innerHTML = 'Then, <a href="#" id="urmpt-areas-frompoi-add"/>add</a>';
inputFromPOI.appendChild(inputFromPOI_name);
inputFromPOI.appendChild(inputFromPOI_button);
divAddCA.appendChild(inputFromPOI);
divAddCA.appendChild(WMEURMPT.createElement("hr"));
var inputFromLL = WMEURMPT.createElement("div");
inputFromLL.innerHTML = "FROM LON/LAT BOUNDING BOX";
var input1 = WMEURMPT.createElement("div");
input1.innerHTML = 'Fill lon/lat top left corner<br/>or <a href="#" id="urmpt-areas-fill-tl">get it from your top left screen</a><br/>lon:<input type="text" size="10" maxlentgh="10" id="urmpt-areas-tl-lon" />lat:<input type="text" size="10" maxlentgh="10" id="urmpt-areas-tl-lat" />';
var input2 = WMEURMPT.createElement("div");
input2.innerHTML = 'Fill lon/lat bottom right corner<br/>or <a href="#" id="urmpt-areas-fill-br">get it from your bottom right screen</a><br/>lon:<input type="text" size="10" maxlentgh="10" id="urmpt-areas-br-lon" />lat:<input type="text" size="10" maxlentgh="10" id="urmpt-areas-br-lat" />';
var input3 = WMEURMPT.createElement("div");
input3.innerHTML = 'Give a name to your area:<input type="text" id="urmpt-areas-name" />';
var input4 = WMEURMPT.createElement("div");
input4.innerHTML = 'Then, <a href="#" id="urmpt-areas-name-add"/>add</a>';
inputFromLL.appendChild(input1);
inputFromLL.appendChild(input2);
inputFromLL.appendChild(input3);
inputFromLL.appendChild(input4);
divAddCA.appendChild(inputFromLL);
divAddCA.appendChild(WMEURMPT.createElement("hr"));
var inputFromWKT = WMEURMPT.createElement("div");
inputFromWKT.innerHTML = "FROM WKT";
var inputFromWKTFile = WMEURMPT.createElement("div");
inputFromWKTFile.innerHTML = '<input type="file" id="urmpt-areas-wktfile" name="files[]" />';
var inputFromWKTName = WMEURMPT.createElement("div");
inputFromWKTName.innerHTML = 'Give a name to your area:<input type="text" id="urmpt-areas-wktfile-name" />';
var inputFromWKTAdd = WMEURMPT.createElement("div");
inputFromWKTAdd.innerHTML = 'Then, <a href="#" id="urmpt-areas-wktfile-add"/>add</a>';
inputFromWKT.appendChild(inputFromWKTName);
inputFromWKT.appendChild(inputFromWKTFile);
inputFromWKT.appendChild(inputFromWKTAdd);
divAddCA.appendChild(inputFromWKT);
divAddCA.appendChild(WMEURMPT.createElement("hr"));
var inputFromJSON = WMEURMPT.createElement("div");
inputFromJSON.innerHTML = "FROM JSON";
var inputFromJSONFile = WMEURMPT.createElement("div");
inputFromJSONFile.innerHTML = '<input type="file" id="urmpt-areas-jsonfile" name="files[]" />';
var inputFromJSONAdd = WMEURMPT.createElement("div");
inputFromJSONAdd.innerHTML = 'Then, <a href="#" id="urmpt-areas-jsonfile-add"/>add</a>';
inputFromJSON.appendChild(inputFromJSONFile);
inputFromJSON.appendChild(inputFromJSONAdd);
divAddCA.appendChild(inputFromJSON);
divCA.appendChild(elAddCAmenu);
divCA.appendChild(divAddCA);
divCA.insertAdjacentHTML("beforeend", "<br/>Your custom area scan list:<br/>");
var divCustomAreaScanList = WMEURMPT.createElement("div", "urmpt-custom-scan-list");
divCA.appendChild(divCustomAreaScanList);
areas_tab_pane.appendChild(divCA);
var settings_tab_pane = WMEURMPT.createElement("section", "urmp-tabs-settings");
settings_tab_pane.className = "tab-pane";
urmp_tab_content.appendChild(settings_tab_pane);
var ur_description_column_width = WMEURMPT.createElement("span");
ur_description_column_width.innerHTML = 'UR description column width: <input style="height:20px" type="text" size="3" id="urmpt-setting-urdescriptionwidth" value="' + WMEURMPT.URDescriptionMaxLength + '"/><br>';
settings_tab_pane.appendChild(ur_description_column_width);
var mp_description_column_width = WMEURMPT.createElement("span");
mp_description_column_width.innerHTML = 'MP description column width: <input style="height:20px" type="text" size="3" id="urmpt-setting-mpdescriptionwidth" value="' + WMEURMPT.MPDescriptionMaxLength + '"/><br>';
settings_tab_pane.appendChild(mp_description_column_width);
var mc_subject_column_width = WMEURMPT.createElement("span");
mc_subject_column_width.innerHTML = 'MC subject column width: <input style="height:20px" type="text" size="3" id="urmpt-setting-mcsubjectwidth" value="' + WMEURMPT.MCSubjectMaxLength + '"/><br>';
settings_tab_pane.appendChild(mc_subject_column_width);
var mc_body_column_width = WMEURMPT.createElement("span");
mc_body_column_width.innerHTML = 'MC body column width: <input style="height:20px" type="text" size="3" id="urmpt-setting-mcbodywidth" value="' + WMEURMPT.MCBodyMaxLength + '"/><br>';
settings_tab_pane.appendChild(mc_body_column_width);
var pur_categories_column_width = WMEURMPT.createElement("span");
pur_categories_column_width.innerHTML = 'PUR categories column width: <input style="height:20px" type="text" size="3" id="urmpt-setting-purcategorieswidth" value="' + WMEURMPT.PURCategoriesMaxLength + '"/><br>';
settings_tab_pane.appendChild(pur_categories_column_width);
var pur_name_column_width = WMEURMPT.createElement("span");
pur_name_column_width.innerHTML = 'PUR name column width: <input style="height:20px" type="text" size="3" id="urmpt-setting-purnamewidth" value="' + WMEURMPT.PURNameMaxLength + '"/><br>';
settings_tab_pane.appendChild(pur_name_column_width);
var ur_tagged_list_span = WMEURMPT.createElement("span");
ur_tagged_list_span.innerHTML = 'UR Tag keywords: <input style="height:20px;width:100%;" type="text" id="urmpt-setting-urtaglist" value="' + WMEURMPT.taggedURList.join(";") + '"/>';
settings_tab_pane.appendChild(ur_tagged_list_span);
var ur_ageColumn_span = WMEURMPT.createElement("span");
ur_ageColumn_span.innerHTML = '<input type="checkbox" id="urmpt-setting-uragecolislastcomment" ' + (WMEURMPT.URAgeColIsLastComment ? "checked " : "") + "/> UR age column is last comment age";
settings_tab_pane.appendChild(ur_ageColumn_span);
window.setTimeout(WMEURMPT.setupCAEvents);
window.setTimeout(WMEURMPT.updateScanGroup);
var userTabs = WMEURMPT.getId("user-tabs");
var userInfo = WMEURMPT.getId("user-info");
var sidePanelPrefs = WMEURMPT.getId("sidepanel-prefs");
var navTabs = WMEURMPT.getElementsByClassName("nav-tabs", userTabs)[0];
var tabContent = sidePanelPrefs.parentNode;
newtab = WMEURMPT.createElement("li");
newtab.innerHTML = '<a title="UR-MP Tracking" href="#sidepanel-urt" data-toggle="tab"><span class="fa fa-map-marker icon-map-marker" style="color: red;"></span></a>';
navTabs.appendChild(newtab);
addon.id = "sidepanel-urt";
addon.className = "tab-pane";
addon.style.marginLeft = "-10px";
tabContent.appendChild(addon);
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideClosed && WMEURMPT.ul >= WMEURMPT.rl4cp) {
WMEURMPT.getId("urt-checkbox-filterHideClosed").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideWithoutCommentFromMe) {
WMEURMPT.getId("urt-checkbox-filterHideWithoutCommentFromMe").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideWithCommentCount) {
WMEURMPT.getId("urt-checkbox-filterHideWithCommentCount").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideNoNewComment) {
WMEURMPT.getId("urt-checkbox-filterHideNoNewComment").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideOutOfMyDriveArea) {
WMEURMPT.getId("urt-checkbox-filterHideOutOfMyDriveArea").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideOutOfMyManagedArea && WMEURMPT.uam) {
WMEURMPT.getId("urt-checkbox-filterHideOutOfMyManagedArea").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideVisited) {
WMEURMPT.getId("urt-checkbox-filterHideVisited").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideBlacklisted) {
WMEURMPT.getId("urt-checkbox-filterHideBlacklisted").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideWhitelisted) {
WMEURMPT.getId("urt-checkbox-filterHideWhitelisted").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideGE) {
WMEURMPT.getId("urt-checkbox-filterHideGE").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideNotKW) {
WMEURMPT.getId("urt-checkbox-filterHideNotKW").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideLimitTo) {
WMEURMPT.getId("urt-checkbox-filterHideLimitTo").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideType) {
WMEURMPT.getId("urt-checkbox-filterHideOnlyType").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideArea) {
WMEURMPT.getId("urt-checkbox-filterHideOnlyArea").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideLastCommentFromEditor) {
WMEURMPT.getId("urt-checkbox-filterHideLastCommentFromEditor").checked = true;
}
if (WMEURMPT.currentURFilter & WMEURMPT.URFilterList.hideTagged) {
WMEURMPT.getId("urt-checkbox-filterHideTagged").checked = true;
}
WMEURMPT.getId("urt-checkbox-filterInvert").onclick = WMEURMPT.updateIHMFromURList;
if (WMEURMPT.ul >= WMEURMPT.rl4cp) {
WMEURMPT.getId("urt-checkbox-filterHideClosed").onclick = WMEURMPT.toggleURFilterHideClosed;
}
WMEURMPT.getId("urt-checkbox-filterHideWithoutCommentFromMe").onclick = WMEURMPT.toggleURFilterHideWithoutCommentFromMe;
WMEURMPT.getId("urt-checkbox-filterHideWithCommentCount").onclick = WMEURMPT.toggleURFilterHideWithCommentCount;
WMEURMPT.getId("urt-checkbox-filterHideNoNewComment").onclick = WMEURMPT.toggleURFilterHideNoNewComment;
WMEURMPT.getId("urt-checkbox-filterHideOutOfMyDriveArea").onclick = WMEURMPT.toggleURFilterHideOutOfMyDriveArea;
if (WMEURMPT.uam) {
WMEURMPT.getId("urt-checkbox-filterHideOutOfMyManagedArea").onclick = WMEURMPT.toggleURFilterHideOutOfMyManagedArea;
}
WMEURMPT.getId("urt-checkbox-filterHideVisited").onclick = WMEURMPT.toggleURFilterHideVisited;
WMEURMPT.getId("urt-checkbox-filterHideBlacklisted").onclick = WMEURMPT.toggleURFilterHideBlacklisted;
WMEURMPT.getId("urt-checkbox-filterHideWhitelisted").onclick = WMEURMPT.toggleURFilterHideWhitelisted;
WMEURMPT.getId("urt-checkbox-filterHideGE").onclick = WMEURMPT.toggleURFilterHideGE;
WMEURMPT.getId("urt-checkbox-filterHideNotKW").onclick = WMEURMPT.toggleURFilterHideNotKW;
WMEURMPT.getId("urt-checkbox-filterHideLimitTo").onclick = WMEURMPT.toggleURFilterHideLimitTo;
WMEURMPT.getId("urt-checkbox-filterHideOnlyType").onclick = WMEURMPT.toggleURFilterHideOnlyType;
WMEURMPT.getId("urt-checkbox-filterHideOnlyArea").onclick = WMEURMPT.toggleURFilterHideOnlyArea;
WMEURMPT.getId("urt-filterHideWithCommentCount").onkeypress = WMEURMPT.URCommentsCountChanged;
WMEURMPT.getId("urt-filterHideWithCommentCount").onpaste = WMEURMPT.URCommentsCountChanged;
WMEURMPT.getId("urt-filterHideWithCommentCount").oninput = WMEURMPT.URCommentsCountChanged;
WMEURMPT.getId("urt-filterKW").onkeypress = WMEURMPT.URKeywordChanged;
WMEURMPT.getId("urt-filterKW").onpaste = WMEURMPT.URKeywordChanged;
WMEURMPT.getId("urt-filterKW").oninput = WMEURMPT.URKeywordChanged;
WMEURMPT.getId("urt-filterLimitTo").onkeypress = WMEURMPT.URLimitToChanged;
WMEURMPT.getId("urt-filterLimitTo").onpaste = WMEURMPT.URLimitToChanged;
WMEURMPT.getId("urt-filterLimitTo").oninput = WMEURMPT.URLimitToChanged;
WMEURMPT.getId("urt-filterOnlyType").onchange = WMEURMPT.UROnlyTypeChanged;
WMEURMPT.getId("urt-filterOnlyArea").onchange = WMEURMPT.UROnlyAreaChanged;
WMEURMPT.getId("urt-checkbox-filterHideLastCommentFromEditor").onclick = WMEURMPT.toggleURFilterHideLastCommentFromEditor;
WMEURMPT.getId("urt-checkbox-filterHideTagged").onclick = WMEURMPT.toggleURFilterHideTagged;
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideClosed && WMEURMPT.ul >= WMEURMPT.rl4cp) {
WMEURMPT.getId("mpt-checkbox-filterHideClosed").checked = true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideOutOfMyDriveArea) {
WMEURMPT.getId("mpt-checkbox-filterHideOutOfMyDriveArea").checked = true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideOutOfMyManagedArea && WMEURMPT.uam) {
WMEURMPT.getId("mpt-checkbox-filterHideOutOfMyManagedArea").checked = true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideVisited) {
WMEURMPT.getId("mpt-checkbox-filterHideVisited").checked = true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideBlacklisted) {
WMEURMPT.getId("mpt-checkbox-filterHideBlacklisted").checked = true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideWhitelisted) {
WMEURMPT.getId("mpt-checkbox-filterHideWhitelisted").checked = true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideLimitTo) {
WMEURMPT.getId("mpt-checkbox-filterHideLimitTo").checked = true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideType) {
WMEURMPT.getId("mpt-checkbox-filterHideOnlyType").checked = true;
}
if (WMEURMPT.currentMPFilter & WMEURMPT.MPFilterList.hideArea) {
WMEURMPT.getId("mpt-checkbox-filterHideOnlyArea").checked = true;
}
if (WMEURMPT.ul >= WMEURMPT.rl4cp) {
WMEURMPT.getId("mpt-checkbox-filterHideClosed").onclick = WMEURMPT.toggleMPFilterHideClosed;
}
WMEURMPT.getId("mpt-checkbox-filterHideOutOfMyDriveArea").onclick = WMEURMPT.toggleMPFilterHideOutOfMyDriveArea;
if (WMEURMPT.uam) {
WMEURMPT.getId("mpt-checkbox-filterHideOutOfMyManagedArea").onclick = WMEURMPT.toggleMPFilterHideOutOfMyManagedArea;
}
WMEURMPT.getId("mpt-checkbox-filterHideVisited").onclick = WMEURMPT.toggleMPFilterHideVisited;
WMEURMPT.getId("mpt-checkbox-filterHideBlacklisted").onclick = WMEURMPT.toggleMPFilterHideBlacklisted;
WMEURMPT.getId("mpt-checkbox-filterHideWhitelisted").onclick = WMEURMPT.toggleMPFilterHideWhitelisted;
WMEURMPT.getId("mpt-checkbox-filterHideLimitTo").onclick = WMEURMPT.toggleMPFilterHideLimitTo;
WMEURMPT.getId("mpt-checkbox-filterHideOnlyType").onclick = WMEURMPT.toggleMPFilterHideOnlyType;
WMEURMPT.getId("mpt-checkbox-filterHideOnlyArea").onclick = WMEURMPT.toggleMPFilterHideOnlyArea;
WMEURMPT.getId("mpt-filterLimitTo").onkeypress = WMEURMPT.MPLimitToChanged;
WMEURMPT.getId("mpt-filterLimitTo").onpaste = WMEURMPT.MPLimitToChanged;
WMEURMPT.getId("mpt-filterLimitTo").oninput = WMEURMPT.MPLimitToChanged;
WMEURMPT.getId("mpt-filterOnlyType").onchange = WMEURMPT.MPOnlyTypeChanged;
WMEURMPT.getId("mpt-filterOnlyArea").onchange = WMEURMPT.MPOnlyAreaChanged;
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideOutOfMyDriveArea) {
WMEURMPT.getId("mct-checkbox-filterHideOutOfMyDriveArea").checked = true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideOutOfMyManagedArea && WMEURMPT.uam) {
WMEURMPT.getId("mct-checkbox-filterHideOutOfMyManagedArea").checked = true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideVisited) {
WMEURMPT.getId("mct-checkbox-filterHideVisited").checked = true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideBlacklisted) {
WMEURMPT.getId("mct-checkbox-filterHideBlacklisted").checked = true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideWhitelisted) {
WMEURMPT.getId("mct-checkbox-filterHideWhitelisted").checked = true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideNotKW) {
WMEURMPT.getId("mct-checkbox-filterHideNotKW").checked = true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideLimitTo) {
WMEURMPT.getId("mct-checkbox-filterHideLimitTo").checked = true;
}
if (WMEURMPT.currentMCFilter & WMEURMPT.MCFilterList.hideArea) {
WMEURMPT.getId("mct-checkbox-filterHideOnlyArea").checked = true;
}
WMEURMPT.getId("mct-checkbox-filterHideOutOfMyDriveArea").onclick = WMEURMPT.toggleMCFilterHideOutOfMyDriveArea;
if (WMEURMPT.uam) {
WMEURMPT.getId("mct-checkbox-filterHideOutOfMyManagedArea").onclick = WMEURMPT.toggleMCFilterHideOutOfMyManagedArea;
}
WMEURMPT.getId("mct-checkbox-filterHideVisited").onclick = WMEURMPT.toggleMCFilterHideVisited;
WMEURMPT.getId("mct-checkbox-filterHideBlacklisted").onclick = WMEURMPT.toggleMCFilterHideBlacklisted;
WMEURMPT.getId("mct-checkbox-filterHideWhitelisted").onclick = WMEURMPT.toggleMCFilterHideWhitelisted;
WMEURMPT.getId("mct-checkbox-filterHideLimitTo").onclick = WMEURMPT.toggleMCFilterHideLimitTo;
WMEURMPT.getId("mct-checkbox-filterHideNotKW").onclick = WMEURMPT.toggleMCFilterHideNotKW;
WMEURMPT.getId("mct-checkbox-filterHideOnlyArea").onclick = WMEURMPT.toggleMCFilterHideOnlyArea;
WMEURMPT.getId("mct-filterKW").onkeypress = WMEURMPT.MCKeywordChanged;
WMEURMPT.getId("mct-filterKW").onpaste = WMEURMPT.MCKeywordChanged;
WMEURMPT.getId("mct-filterKW").oninput = WMEURMPT.MCKeywordChanged;
WMEURMPT.getId("mct-filterLimitTo").onkeypress = WMEURMPT.MCLimitToChanged;
WMEURMPT.getId("mct-filterLimitTo").onpaste = WMEURMPT.MCLimitToChanged;
WMEURMPT.getId("mct-filterLimitTo").oninput = WMEURMPT.MCLimitToChanged;
WMEURMPT.getId("mct-filterOnlyArea").onchange = WMEURMPT.MCOnlyAreaChanged;
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideOutOfMyDriveArea) {
WMEURMPT.getId("purt-checkbox-filterHideOutOfMyDriveArea").checked = true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideOutOfMyManagedArea && WMEURMPT.uam) {
WMEURMPT.getId("purt-checkbox-filterHideOutOfMyManagedArea").checked = true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideVisited) {
WMEURMPT.getId("purt-checkbox-filterHideVisited").checked = true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideBlacklisted) {
WMEURMPT.getId("purt-checkbox-filterHideBlacklisted").checked = true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideWhitelisted) {
WMEURMPT.getId("purt-checkbox-filterHideWhitelisted").checked = true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideCategorie) {
WMEURMPT.getId("purt-checkbox-filterHideOnlyCategorie").checked = true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideNotKW) {
WMEURMPT.getId("purt-checkbox-filterHideNotKW").checked = true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideLimitTo) {
WMEURMPT.getId("purt-checkbox-filterHideLimitTo").checked = true;
}
if (WMEURMPT.currentPURFilter & WMEURMPT.PURFilterList.hideArea) {
WMEURMPT.getId("purt-checkbox-filterHideOnlyArea").checked = true;
}
WMEURMPT.getId("purt-checkbox-filterHideOutOfMyDriveArea").onclick = WMEURMPT.togglePURFilterHideOutOfMyDriveArea;
if (WMEURMPT.uam) {
WMEURMPT.getId("purt-checkbox-filterHideOutOfMyManagedArea").onclick = WMEURMPT.togglePURFilterHideOutOfMyManagedArea;
}
WMEURMPT.getId("purt-checkbox-filterHideVisited").onclick = WMEURMPT.togglePURFilterHideVisited;
WMEURMPT.getId("purt-checkbox-filterHideBlacklisted").onclick = WMEURMPT.togglePURFilterHideBlacklisted;
WMEURMPT.getId("purt-checkbox-filterHideWhitelisted").onclick = WMEURMPT.togglePURFilterHideWhitelisted;
WMEURMPT.getId("purt-checkbox-filterHideOnlyCategorie").onclick = WMEURMPT.togglePURFilterHideOnlyCategorie;
WMEURMPT.getId("purt-checkbox-filterHideLimitTo").onclick = WMEURMPT.togglePURFilterHideLimitTo;
WMEURMPT.getId("purt-checkbox-filterHideNotKW").onclick = WMEURMPT.togglePURFilterHideNotKW;
WMEURMPT.getId("purt-checkbox-filterHideOnlyArea").onclick = WMEURMPT.togglePURFilterHideOnlyArea;
WMEURMPT.getId("purt-filterKW").onkeypress = WMEURMPT.PURKeywordChanged;
WMEURMPT.getId("purt-filterKW").onpaste = WMEURMPT.PURKeywordChanged;
WMEURMPT.getId("purt-filterKW").oninput = WMEURMPT.PURKeywordChanged;
WMEURMPT.getId("purt-filterLimitTo").onkeypress = WMEURMPT.PURLimitToChanged;
WMEURMPT.getId("purt-filterLimitTo").onpaste = WMEURMPT.PURLimitToChanged;
WMEURMPT.getId("purt-filterLimitTo").oninput = WMEURMPT.PURLimitToChanged;
WMEURMPT.getId("purt-filterOnlyCategorie").onchange = WMEURMPT.PUROnlyCategorieChanged;
WMEURMPT.getId("purt-filterOnlyArea").onchange = WMEURMPT.PUROnlyAreaChanged;
if (WMEURMPT.displayLegend) {
WMEURMPT.getId("urt-close-legend").onclick = WMEURMPT.closeLegend;
}
WMEURMPT.getId("urmpt-onoff").onclick = WMEURMPT.enableOrDisable;
WMEURMPT.getId("urmpt-donoff").onclick = WMEURMPT.enableOrDisableDistance;
WMEURMPT.getId("urmpt-asonoff").onclick = WMEURMPT.enableOrDisableAutoScan;
WMEURMPT.getId("urmpt-suronoff").onclick = WMEURMPT.enableOrDisableScanUR;
WMEURMPT.getId("urmpt-smponoff").onclick = WMEURMPT.enableOrDisableScanMP;
WMEURMPT.getId("urmpt-smconoff").onclick = WMEURMPT.enableOrDisableScanMC;
WMEURMPT.getId("urmpt-spuronoff").onclick = WMEURMPT.enableOrDisableScanPUR;
WMEURMPT.getId("urmpt-setting-urdescriptionwidth").onkeypress = WMEURMPT.settingsSetURDescriptionWidth;
WMEURMPT.getId("urmpt-setting-urdescriptionwidth").onpaste = WMEURMPT.settingsSetURDescriptionWidth;
WMEURMPT.getId("urmpt-setting-urdescriptionwidth").oninput = WMEURMPT.settingsSetURDescriptionWidth;
WMEURMPT.getId("urmpt-setting-mpdescriptionwidth").onkeypress = WMEURMPT.settingsSetMPDescriptionWidth;
WMEURMPT.getId("urmpt-setting-mpdescriptionwidth").onpaste = WMEURMPT.settingsSetMPDescriptionWidth;
WMEURMPT.getId("urmpt-setting-mpdescriptionwidth").oninput = WMEURMPT.settingsSetMPDescriptionWidth;
WMEURMPT.getId("urmpt-setting-mcsubjectwidth").onkeypress = WMEURMPT.settingsSetMCSubjectWidth;
WMEURMPT.getId("urmpt-setting-mcsubjectwidth").onpaste = WMEURMPT.settingsSetMCSubjectWidth;
WMEURMPT.getId("urmpt-setting-mcsubjectwidth").oninput = WMEURMPT.settingsSetMCSubjectWidth;
WMEURMPT.getId("urmpt-setting-mcbodywidth").onkeypress = WMEURMPT.settingsSetMCBodyWidth;
WMEURMPT.getId("urmpt-setting-mcbodywidth").onpaste = WMEURMPT.settingsSetMCBodyWidth;
WMEURMPT.getId("urmpt-setting-mcbodywidth").oninput = WMEURMPT.settingsSetMCBodyWidth;
WMEURMPT.getId("urmpt-setting-purcategorieswidth").onkeypress = WMEURMPT.settingsSetPURCategoriesWidth;
WMEURMPT.getId("urmpt-setting-purcategorieswidth").onpaste = WMEURMPT.settingsSetPURCategoriesWidth;
WMEURMPT.getId("urmpt-setting-purcategorieswidth").oninput = WMEURMPT.settingsSetPURCategoriesWidth;
WMEURMPT.getId("urmpt-setting-purnamewidth").onkeypress = WMEURMPT.settingsSetPURNameWidth;
WMEURMPT.getId("urmpt-setting-purnamewidth").onpaste = WMEURMPT.settingsSetPURNameWidth;
WMEURMPT.getId("urmpt-setting-purnamewidth").oninput = WMEURMPT.settingsSetPURNameWidth;
WMEURMPT.getId("urmpt-setting-urtaglist").onkeypress = WMEURMPT.settingsSetURTagList;
WMEURMPT.getId("urmpt-setting-urtaglist").onpaste = WMEURMPT.settingsSetURTagList;
WMEURMPT.getId("urmpt-setting-urtaglist").oninput = WMEURMPT.settingsSetURTagList;
WMEURMPT.getId("urmpt-setting-uragecolislastcomment").addEventListener("change", function(e) {
WMEURMPT.URAgeColIsLastComment = e.target.checked;
WMEURMPT.saveOptions();
});
WMEURMPT.updateLongTextCrop();
var cssElt = WMEURMPT.createElement("style");
cssElt.type = "text/css";
var css = "";
css += ".urt-table { border: 2px solid #3d3d3d; width: 100%; }";
css += ".urt-table tr { border: 1px solid #3d3d3d; }";
css += ".urt-table tr td { border: 1px solid #3d3d3d; font-size: smaller; }";
css += ".urt-table thead { border: 2px solid #3d3d3d; font-size: bigger; text-align: center; background-color: #93c4d3;}";
css += ".urt-table-head-icon { height: 32px; vertical-align: middle; display: table-cell; }";
css += ".urt-bg-pair { background-color: #93c4d3; }";
css += ".urt-bg-highlighted { background-color: #c9e1e9; }";
css += ".urt-bg-selected { background-color: #42FF9c; }";
css += ".urt-bg-ifollow { background-color: #e0e0e0; }";
css += ".urt-bg-odd { }";
css += ".urt-bg-newcomments { background-color: #FFc90E; }";
css += ".urt-filter-list { list-style-type: none; padding-left: 2px; overflow: hidden;}";
css += "#urt-filterHideWithCommentCount { display: inline; height: 20px; font-size: smaller; }";
css += "#urt-filterKW { display: inline; width: 30%; height: 20px; font-size: smaller; }";
css += "#mct-filterKW { display: inline; width: 30%; height: 20px; font-size: smaller; }";
css += "#purt-filterKW { display: inline; width: 30%; height: 20px; font-size: smaller; }";
css += "#urt-filterLimitTo { display: inline; width: 30%; height: 20px; font-size: smaller; }";
css += "#mpt-filterLimitTo { display: inline; width: 30%; height: 20px; font-size: smaller; }";
css += "#mct-filterLimitTo { display: inline; width: 30%; height: 20px; font-size: smaller; }";
css += "#purt-filterLimitTo { display: inline; width: 30%; height: 20px; font-size: smaller; }";
css += "#urt-progressBarInfo { display: none; width: 90%; float: left; position: absolute; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; margin-bottom: -100%; background-color: #c9e1e9; z-index: 999; margin: 5px; margin-right: 20px; }";
css += ".urt-progressBarBG { margin-top: 2px; margin-bottom: 2px; margin-left: 2px; margin-right: 2px; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; padding-right: 0px; width: 33%; background-color: #93c4d3; border: 3px rgb(147, 196, 211); border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; height: 22px;}";
css += ".urt-progressBarFG { float: left; position: relative; bottom: 22px; height: 0px; text-align: center; width: 100% }";
css += "#urt-info { margin: 5px; }";
css += ".urt-blacklist { background: transparent url(data:image/png;base64," + WMEURMPT.icon_blacklist + ") center top; background-size: 16px 16px; background-repeat: no-repeat; } ";
css += "#urmpt-qoptions { display: block; width: 100%; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; border: 1px solid #dddddd; }";
css += ".urt-chkbox { width: 16px; height: 16px; margin-top: -5px; }";
cssElt.innerHTML = css;
document.body.appendChild(cssElt);
WMEURMPT.updateScanGroup();
window.setInterval(WMEURMPT.save, 120000);
if (WMEURMPT.isEnabled) {
WMEURMPT.registerEvents();
WMEURMPT.updateIHMFromURList();
WMEURMPT.updateIHMFromMPList();
WMEURMPT.updateIHMFromMCList();
WMEURMPT.updateIHMFromPURList();
}
if (!WMEURMPT.isEnabled) {
WMEURMPT.disable();
}
};
WMEURMPT.setupCAEvents = function() {
var tl = WMEURMPT.getId("urmpt-areas-fill-tl");
var br = WMEURMPT.getId("urmpt-areas-fill-br");
var add = WMEURMPT.getId("urmpt-areas-name-add");
tl.onclick = WMEURMPT.getTLArea;
br.onclick = WMEURMPT.getBRArea;
add.onclick = WMEURMPT.addCustomAreaToFilterList;
var addFromPOI = WMEURMPT.getId("urmpt-areas-frompoi-add");
addFromPOI.onclick = WMEURMPT.addCustomAreaFromPOIToFilterList;
var addFromWKT = WMEURMPT.getId("urmpt-areas-wktfile");
addFromWKT.addEventListener("change", WMEURMPT.handleFileSelectAddFromWKT, false);
var addFromWKTAdd = WMEURMPT.getId("urmpt-areas-wktfile-add");
addFromWKTAdd.onclick = WMEURMPT.addCustomAreaFromWKTToFilterList;
var addFromJSON = WMEURMPT.getId("urmpt-areas-jsonfile");
addFromJSON.addEventListener("change", WMEURMPT.handleFileSelectAddFromJSON, false);
var addFromJSONAdd = WMEURMPT.getId("urmpt-areas-jsonfile-add");
addFromJSONAdd.onclick = WMEURMPT.addCustomAreaFromJSONToFilterList;
};
WMEURMPT.getTLArea = function() {
var xy = WMEURMPT.wazeMap.getLonLatFromPixel({x:0, y:0});
var lonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(xy.lon, xy.lat);
WMEURMPT.getId("urmpt-areas-tl-lon").value = lonlat.lon;
WMEURMPT.getId("urmpt-areas-tl-lat").value = lonlat.lat;
};
WMEURMPT.getBRArea = function() {
var xy = WMEURMPT.wazeMap.getLonLatFromPixel({x:WMEURMPT.wazeMap.olMap.size.w, y:WMEURMPT.wazeMap.olMap.size.h});
var lonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(xy.lon, xy.lat);
WMEURMPT.log("get BR", lonlat);
WMEURMPT.getId("urmpt-areas-br-lon").value = lonlat.lon;
WMEURMPT.getId("urmpt-areas-br-lat").value = lonlat.lat;
};
WMEURMPT.closeLegend = function() {
if (confirm("This legend will never be displayed anymore.\nAre you sure you want to do that?")) {
WMEURMPT.getId("urt-legend").style.display = "none";
WMEURMPT.getId("urt-close-legend").style.display = "none";
WMEURMPT.displayLegend = false;
WMEURMPT.log("Legend closed");
WMEURMPT.saveOptions();
}
};
WMEURMPT.connectURTabHandler = function() {
WMEURMPT.getId("urmp-tabstitle-ur").onclick = WMEURMPT.updateIHMFromURList;
};
WMEURMPT.connectMPTabHandler = function() {
WMEURMPT.getId("urmp-tabstitle-mp").onclick = WMEURMPT.updateIHMFromMPList;
};
WMEURMPT.connectMCTabHandler = function() {
WMEURMPT.getId("urmp-tabstitle-mc").onclick = WMEURMPT.updateIHMFromMCList;
};
WMEURMPT.connectPURTabHandler = function() {
WMEURMPT.getId("urmp-tabstitle-pur").onclick = WMEURMPT.updateIHMFromPURList;
};
WMEURMPT.enableOrDisable = function() {
if (WMEURMPT.isEnabled) {
WMEURMPT.getId("urmpt-onoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_unchecked + '" />';
WMEURMPT.disable();
} else {
WMEURMPT.getId("urmpt-onoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_checked + '" />';
WMEURMPT.enable();
}
WMEURMPT.isEnabled = !WMEURMPT.isEnabled;
};
WMEURMPT.enable = function() {
WMEURMPT.registerEvents();
WMEURMPT.getId("urt-a-scanGroup").style.display = "inline";
WMEURMPT.getId("urmp-tabs").style.display = "block";
WMEURMPT.getId("urmpt-tab-content").style.display = "block";
WMEURMPT.getId("urmpt-qoptions").style.display = "block";
WMEURMPT.updateIHMFromURList();
WMEURMPT.updateIHMFromMPList();
WMEURMPT.updateIHMFromMCList();
WMEURMPT.updateIHMFromPURList();
};
WMEURMPT.disable = function() {
WMEURMPT.unregisterEvents();
WMEURMPT.getId("urt-a-scanGroup").style.display = "none";
WMEURMPT.getId("urmp-tabs").style.display = "none";
WMEURMPT.getId("urmpt-tab-content").style.display = "none";
WMEURMPT.getId("urmpt-qoptions").style.display = "none";
};
WMEURMPT.enableOrDisableDistance = function() {
if (WMEURMPT.isComputeDistances) {
WMEURMPT.getId("urmpt-donoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_unchecked + '" />';
} else {
WMEURMPT.getId("urmpt-donoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_checked + '" />';
}
WMEURMPT.isComputeDistances = !WMEURMPT.isComputeDistances;
WMEURMPT.saveOptions();
if (WMEURMPT.isComputeDistances) {
WMEURMPT.mapMoveEnd();
}
};
WMEURMPT.enableOrDisableAutoScan = function() {
if (WMEURMPT.isAutoScan) {
WMEURMPT.getId("urmpt-asonoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_unchecked + '" />';
} else {
WMEURMPT.getId("urmpt-asonoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_checked + '" />';
}
WMEURMPT.isAutoScan = !WMEURMPT.isAutoScan;
WMEURMPT.saveOptions();
};
WMEURMPT.enableOrDisableScanUR = function() {
if (WMEURMPT.scanUR) {
WMEURMPT.getId("urmpt-suronoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_unchecked + '" />';
} else {
WMEURMPT.getId("urmpt-suronoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_checked + '" />';
}
WMEURMPT.scanUR = !WMEURMPT.scanUR;
WMEURMPT.saveOptions();
};
WMEURMPT.enableOrDisableScanMP = function() {
if (WMEURMPT.scanMP) {
WMEURMPT.getId("urmpt-smponoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_unchecked + '" />';
} else {
WMEURMPT.getId("urmpt-smponoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_checked + '" />';
}
WMEURMPT.scanMP = !WMEURMPT.scanMP;
WMEURMPT.saveOptions();
};
WMEURMPT.enableOrDisableScanMC = function() {
if (WMEURMPT.scanMC) {
WMEURMPT.getId("urmpt-smconoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_unchecked + '" />';
} else {
WMEURMPT.getId("urmpt-smconoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_checked + '" />';
}
WMEURMPT.scanMC = !WMEURMPT.scanMC;
WMEURMPT.saveOptions();
};
WMEURMPT.enableOrDisableScanPUR = function() {
if (WMEURMPT.scanPUR) {
WMEURMPT.getId("urmpt-spuronoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_unchecked + '" />';
} else {
WMEURMPT.getId("urmpt-spuronoff").innerHTML = '<img class="urt-chkbox" src="data:image/png;base64,' + WMEURMPT.icon_checked + '" />';
}
WMEURMPT.scanPUR = !WMEURMPT.scanPUR;
WMEURMPT.saveOptions();
};
WMEURMPT.handleFileSelectAddFromWKT = function(evt) {
var files = evt.target.files;
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader;
reader.onload = function(theFile) {
return function(e) {
WMEURMPT.lastUploadedWKT = e.target.result;
WMEURMPT.log("import WKT file read");
};
}(f);
reader.readAsText(f);
}
};
WMEURMPT.showAreaInWKT = function(area) {
var geometry = null;
for (var i = 0; i < WMEURMPT.areaList[area.type].length; i++) {
if (WMEURMPT.areaList[area.type][i].name == area.name) {
geometry = WMEURMPT.areaList[area.type][i].geometryWKT;
break;
}
}
if (geometry) {
this.setAttribute("download", area.name + ".wkt");
this.href = "data:application/octet-stream;charset=utf-8;base64," + btoa(geometry);
}
};
WMEURMPT.mapMoveEnd = function() {
if (WMEURMPT.isComputeDistances) {
WMEURMPT.mapCenterLonLat = OpenLayers.Layer.SphericalMercator.inverseMercator(WMEURMPT.wazeMap.olMap.center.lon, WMEURMPT.wazeMap.olMap.center.lat);
for (var i = 0; i < WMEURMPT.URList.length; i++) {
WMEURMPT.URList[i].updateDistanceToMapCenter();
}
for (var i = 0; i < WMEURMPT.MPList.length; i++) {
WMEURMPT.MPList[i].updateDistanceToMapCenter();
}
for (var i = 0; i < WMEURMPT.MCList.length; i++) {
WMEURMPT.MCList[i].updateDistanceToMapCenter();
}
for (var i = 0; i < WMEURMPT.PURList.length; i++) {
WMEURMPT.PURList[i].updateDistanceToMapCenter();
}
WMEURMPT.updateIHMFromURList();
WMEURMPT.updateIHMFromMPList();
WMEURMPT.updateIHMFromMCList();
WMEURMPT.updateIHMFromPURList();
}
};
WMEURMPT.mapZoomEnd = function() {
WMEURMPT.mapMoveEnd();
};
WMEURMPT.showPBInfo = function(show) {
if (show) {
WMEURMPT.getId("urt-progressBarInfo").style.display = "block";
} else {
WMEURMPT.getId("urt-progressBarInfo").style.display = "none";
}
};
WMEURMPT.ProgressBar = function(div) {
this.div = div;
};
WMEURMPT.ProgressBar.prototype.isShown = function() {
return this.div.style.display != "none";
};
WMEURMPT.ProgressBar.prototype.show = function() {
this.div.style.display = "block";
};
WMEURMPT.ProgressBar.prototype.hide = function() {
this.div.style.display = "none";
};
WMEURMPT.ProgressBar.prototype.update = function(value) {
if (value == -1) {
this.div.children[0].style.display = "none";
this.div.children[1].style.display = "none";
return;
}
this.div.children[0].style.display = "block";
this.div.children[1].style.display = "block";
this.div.children[0].style.width = value + "%";
this.div.children[1].innerHTML = value + "%";
};
WMEURMPT.clearAllUR = function() {
WMEURMPT.URList = [];
WMEURMPT.URMap = {};
WMEURMPT.log("UR list cleared");
WMEURMPT.saveURList();
WMEURMPT.updateIHMFromURList();
};
WMEURMPT.markAllURAsVisited = function() {
for (var i = 0; i < WMEURMPT.URList.length; i++) {
if (!WMEURMPT.isURFiltered(WMEURMPT.URList[i])) {
WMEURMPT.URList[i].alreadyVisited = true;
}
}
WMEURMPT.log("All UR marked as visited");
WMEURMPT.updateIHMFromURList();
};
WMEURMPT.blacklistUR = function(index) {
var i = parseInt(index);
if (i < 0 || i >= WMEURMPT.URList.length) {
return;
}
WMEURMPT.log((WMEURMPT.URList[i].blackListed ? "Whitelist" : "Blacklist") + " UR: " + WMEURMPT.URList[i].id);
WMEURMPT.URList[i].blackListed = !WMEURMPT.URList[i].blackListed;
WMEURMPT.updateIHMFromURList();
};
WMEURMPT.URBlackListed = function(URId, value) {
var ur = WMEURMPT.getURFromId(URId);
if (ur != null) {
WMEURMPT.log((value ? "Blacklist" : "Whitelist") + " UR: " + URId);
ur.blackListed = value;
}
};
WMEURMPT.URVisited = function(URId) {
var ur = WMEURMPT.getURFromId(URId);
if (ur != null) {
WMEURMPT.log("Mark UR " + URId + " as visited");
ur.lastVisitCommentsCount = ur.data.session.comments.length;
ur.alreadyVisited = true;
WMEURMPT.updateIHMFromURList();
}
};
WMEURMPT.getURFromId = function(id) {
if (typeof WMEURMPT.URMap[id] === "undefined") {
return null;
}
return WMEURMPT.URList[WMEURMPT.URMap[id]];
};
WMEURMPT.clearAllMP = function() {
WMEURMPT.MPList = [];
WMEURMPT.MPMap = {};
WMEURMPT.log("MP list cleared");
WMEURMPT.saveMPList();
WMEURMPT.updateIHMFromMPList();
};
WMEURMPT.markAllMPAsVisited = function() {
for (var i = 0; i < WMEURMPT.MPList.length; i++) {
if (!WMEURMPT.isMPFiltered(WMEURMPT.MPList[i])) {
WMEURMPT.MPList[i].alreadyVisited = true;
}
}
WMEURMPT.log("All MP marked as visited");
WMEURMPT.updateIHMFromMPList();
};
WMEURMPT.blacklistMP = function(index) {
var i = parseInt(index);
if (i < 0 || i >= WMEURMPT.MPList.length) {
return;
}
WMEURMPT.log((WMEURMPT.MPList[i].blackListed ? "Whitelist" : "Blacklist") + " MP: " + WMEURMPT.MPList[i].id);
WMEURMPT.MPList[i].blackListed = !WMEURMPT.MPList[i].blackListed;
WMEURMPT.updateIHMFromMPList();
};
WMEURMPT.MPVisited = function(MPId) {
var mp = WMEURMPT.getMPFromId(MPId);
if (mp != null) {
WMEURMPT.log("Mark MP " + MPId + " as visited");
mp.alreadyVisited = true;
WMEURMPT.updateIHMFromMPList();
}
};
WMEURMPT.getMPFromId = function(id) {
if (typeof WMEURMPT.MPMap[id] === "undefined") {
return null;
}
return WMEURMPT.MPList[WMEURMPT.MPMap[id]];
};
WMEURMPT.clearAllMC = function() {
WMEURMPT.MCList = [];
WMEURMPT.MCMap = {};
WMEURMPT.log("MC list cleared");
WMEURMPT.saveMCList();
WMEURMPT.updateIHMFromMCList();
};
WMEURMPT.markAllMCAsVisited = function() {
for (var i = 0; i < WMEURMPT.MCList.length; i++) {
if (!WMEURMPT.isMCFiltered(WMEURMPT.MCList[i])) {
WMEURMPT.MCList[i].alreadyVisited = true;
}
}
WMEURMPT.log("All MC marked as visited");
WMEURMPT.updateIHMFromMCList();
};
WMEURMPT.blacklistMC = function(index) {
var i = parseInt(index);
if (i < 0 || i >= WMEURMPT.MCList.length) {
return;
}
WMEURMPT.log((WMEURMPT.MCList[i].blackListed ? "Whitelist" : "Blacklist") + " MC: " + WMEURMPT.MCList[i].id);
WMEURMPT.MCList[i].blackListed = !WMEURMPT.MCList[i].blackListed;
WMEURMPT.updateIHMFromMCList();
};
WMEURMPT.MCBlackListed = function(MCId, value) {
var mc = WMEURMPT.getMCFromId(MCId);
if (mc != null) {
WMEURMPT.log((value ? "Blacklist" : "Whitelist") + " MC: " + MCId);
mc.blackListed = value;
}
};
WMEURMPT.MCVisited = function(MCId) {
var mc = WMEURMPT.getMCFromId(MCId);
if (mc != null) {
WMEURMPT.log("Mark MC " + MCId + " as visited");
mc.lastVisitCommentsCount = mc.data.hasOwnProperty("conversation") ? mc.data.conversation.length : 0;
mc.alreadyVisited = true;
WMEURMPT.updateIHMFromMCList();
}
};
WMEURMPT.getMCFromId = function(id) {
if (typeof WMEURMPT.MCMap[id] === "undefined") {
return null;
}
return WMEURMPT.MCList[WMEURMPT.MCMap[id]];
};
WMEURMPT.clearAllPUR = function() {
WMEURMPT.PURList = [];
WMEURMPT.PURMap = {};
WMEURMPT.log("PUR list cleared");
WMEURMPT.savePURList();
WMEURMPT.updateIHMFromPURList();
};
WMEURMPT.markAllPURAsVisited = function() {
for (var i = 0; i < WMEURMPT.PURList.length; i++) {
if (!WMEURMPT.isPURFiltered(WMEURMPT.PURList[i])) {
WMEURMPT.PURList[i].alreadyVisited = true;
}
}
WMEURMPT.log("All PUR marked as visited");
WMEURMPT.updateIHMFromPURList();
};
WMEURMPT.blacklistPUR = function(index) {
var i = parseInt(index);
if (i < 0 || i >= WMEURMPT.PURList.length) {
return;
}
WMEURMPT.log((WMEURMPT.PURList[i].blackListed ? "Whitelist" : "Blacklist") + " PUR: " + WMEURMPT.PURList[i].id);
WMEURMPT.PURList[i].blackListed = !WMEURMPT.PURList[i].blackListed;
WMEURMPT.updateIHMFromPURList();
};
WMEURMPT.PURVisited = function(PURId) {
var pur = WMEURMPT.getPURFromId(PURId);
if (pur != null) {
WMEURMPT.log("Mark PUR " + PURId + " as visited");
pur.alreadyVisited = true;
WMEURMPT.updateIHMFromPURList();
}
};
WMEURMPT.getPURFromId = function(id) {
if (typeof WMEURMPT.PURMap[id] === "undefined") {
return null;
}
return WMEURMPT.PURList[WMEURMPT.PURMap[id]];
};
WMEURMPT.getHRURResolutionFromType = function(type) {
if (type == 1) {
return "Not identified";
}
if (type == 0) {
return "Solved";
}
};
WMEURMPT.getFullURTypeFromType = function(type) {
return I18n.translations[I18n.locale].update_requests.types[type];
};
WMEURMPT.getHRURTypeFromType = function(type) {
if (type == 6) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">IT</span>';
}
if (type == 7) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">IA</span>';
}
if (type == 8) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">IR</span>';
}
if (type == 9) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">MRa</span>';
}
if (type == 10) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">GE</span>';
}
if (type == 11) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">TnA</span>';
}
if (type == 12) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">IJ</span>';
}
if (type == 13) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">MBO</span>';
}
if (type == 14) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">WDD</span>';
}
if (type == 15) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">ME</span>';
}
if (type == 16) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">MR</span>';
}
if (type == 18) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">ML</span>';
}
if (type == 19) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">BR</span>';
}
if (type == 21) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">MSN</span>';
}
if (type == 22) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">MSS</span>';
}
if (type == 23) {
return '<span title="' + WMEURMPT.getFullURTypeFromType(type) + '" style="display: block; width: 100%;">MSL</span>';
}
return (WMEURMPT.getFullURTypeFromType(type) + " ").replace(/([A-Za-z])[A-Za-z]* /g, "$1").toUpperCase().substring(0, 3);
};
WMEURMPT.getFullMPTypeFromType = function(type) {
return I18n.translations[I18n.locale].problems.types[type].title;
};
WMEURMPT.getHRMPTypeFromType = function(type) {
return '<span title="' + I18n.translations[I18n.locale].problems.types[type].title + '" style="display: block; width: 100%;">P</span>';
};
WMEURMPT.getHRMPDescriptionFromType = function(type) {
if (type == 1) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Crooked segment</span>';
}
if (type == 17) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Segment without details</span>';
}
if (type == 50) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Parking Lot as point</span>';
}
if (type == 101) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Driving dr m/match</span>';
}
if (type == 102) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Missing junction</span>';
}
if (type == 103) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Missing road</span>';
}
if (type == 104) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Cross rd junc miss</span>';
}
if (type == 105) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Road type mismatch</span>';
}
if (type == 106) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Rst trn m. be alwd</span>';
}
if (type == 200) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Turn problem</span>';
}
if (type == 300) {
return '<span title="' + WMEURMPT.getFullMPTypeFromType(type) + '" style="display: block; width: 100%;">Road closure</span>';
}
return '<span title="' + I18n.translations[I18n.locale].problems.types[type].title + '" style="display: block; width: 100%;">' + I18n.translations[I18n.locale].problems.types[type].title + "</span>";
};
WMEURMPT.getFullPURTypeFromType = function(type) {
WMEURMPT.log("getType:", type);
WMEURMPT.log("I18n.translations[" + I18n.locale + "].venues.update_requests.panel.title:", I18n.translations[I18n.locale].venues.update_requests.panel.title);
return I18n.translations[I18n.locale].venues.update_requests.panel.title[type];
};
WMEURMPT.getPURCategoriesFromCategories = function(cat) {
return I18n.translations[I18n.locale].venues.categories[cat];
};
WMEURMPT.getFullPURCategoriesFromCategories = function() {
return I18n.translations[I18n.locale].venues.categories;
};
WMEURMPT.compareUR = function(a, b, i) {
if (arguments.length == 2) {
i = 0;
}
if (i >= WMEURMPT.sortHistoryUR.length) {
return 0;
}
switch(WMEURMPT.sortHistoryUR[i]) {
case WMEURMPT.sortModeListUR.ageDSC:
if (a.data.driveDate == b.data.driveDate) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return a.data.driveDate - b.data.driveDate;
break;
case WMEURMPT.sortModeListUR.ageASC:
if (a.data.driveDate == b.data.driveDate) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return b.data.driveDate - a.data.driveDate;
break;
case WMEURMPT.sortModeListUR.typeDSC:
if (a.data.type == b.data.type) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return a.data.type - b.data.type;
break;
case WMEURMPT.sortModeListUR.typeASC:
if (a.data.type == b.data.type) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return b.data.type - a.data.type;
break;
case WMEURMPT.sortModeListUR.commentCountDSC:
if (a.data.session.comments.length == b.data.session.comments.length) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return a.data.session.comments.length - b.data.session.comments.length;
break;
case WMEURMPT.sortModeListUR.commentCountASC:
if (a.data.session.comments.length == b.data.session.comments.length) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return b.data.session.comments.length - a.data.session.comments.length;
break;
case WMEURMPT.sortModeListUR.distanceDSC:
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return a.distanceToMapCenter - b.distanceToMapCenter;
break;
case WMEURMPT.sortModeListUR.distanceASC:
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return b.distanceToMapCenter - a.distanceToMapCenter;
break;
case WMEURMPT.sortModeListUR.lastCommentDSC:
var da = a.data.driveDate;
var db = b.data.driveDate;
if (a.data.session.comments.length != 0) {
da = a.data.session.comments[a.data.session.comments.length - 1].createdOn;
}
if (b.data.session.comments.length != 0) {
db = b.data.session.comments[b.data.session.comments.length - 1].createdOn;
}
if (a.data.session.comments.length != 0 && b.data.session.comments.length == 0) {
return -1;
}
if (a.data.session.comments.length == 0 && b.data.session.comments.length != 0) {
return 1;
}
if (da == db) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return da - db;
break;
case WMEURMPT.sortModeListUR.lastCommentASC:
var da = a.data.driveDate;
var db = b.data.driveDate;
if (a.data.session.comments.length != 0) {
da = a.data.session.comments[a.data.session.comments.length - 1].createdOn;
}
if (b.data.session.comments.length != 0) {
db = b.data.session.comments[b.data.session.comments.length - 1].createdOn;
}
if (a.data.session.comments.length != 0 && b.data.session.comments.length == 0) {
return 1;
}
if (a.data.session.comments.length == 0 && b.data.session.comments.length != 0) {
return -1;
}
if (da == db) {
return WMEURMPT.compareUR(a, b, i + 1);
}
return db - da;
break;
}
return 0;
};
WMEURMPT.compareMP = function(a, b, i) {
if (arguments.length == 2) {
i = 0;
}
if (i >= WMEURMPT.sortHistoryMP.length) {
return 0;
}
switch(WMEURMPT.sortHistoryMP[i]) {
case WMEURMPT.sortModeListMP.priorityDSC:
if (a.data.weight == b.data.weight) {
return WMEURMPT.compareMP(a, b, i + 1);
}
return a.data.weight - b.data.weight;
break;
case WMEURMPT.sortModeListMP.priorityASC:
if (a.data.weight == b.data.weight) {
return WMEURMPT.compareMP(a, b, i + 1);
}
return b.data.weight - a.data.weight;
break;
case WMEURMPT.sortModeListMP.typeDSC:
if (a.data.subType == b.data.subType) {
return WMEURMPT.compareMP(a, b, i + 1);
}
return a.data.subType - b.data.subType;
break;
case WMEURMPT.sortModeListMP.typeASC:
if (a.data.subType == b.data.subType) {
return WMEURMPT.compareMP(a, b, i + 1);
}
return b.data.subType - a.data.subType;
break;
case WMEURMPT.sortModeListMP.distanceDSC:
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return WMEURMPT.compareMP(a, b, i + 1);
}
return a.distanceToMapCenter - b.distanceToMapCenter;
break;
case WMEURMPT.sortModeListMP.distanceASC:
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return WMEURMPT.compareMP(a, b, i + 1);
}
return b.distanceToMapCenter - a.distanceToMapCenter;
break;
}
return 0;
};
WMEURMPT.compareMC = function(a, b, i) {
if (arguments.length == 2) {
i = 0;
}
if (i >= WMEURMPT.sortHistoryMC.length) {
return 0;
}
switch(WMEURMPT.sortHistoryMC[i]) {
case WMEURMPT.sortModeListMC.ageDSC:
if (a.data.createdOn == b.data.createdOn) {
return WMEURMPT.compareMC(a, b, i + 1);
}
return a.data.createdOn - b.data.createdOn;
break;
case WMEURMPT.sortModeListMC.ageASC:
if (a.data.createdOn == b.data.createdOn) {
return WMEURMPT.compareMC(a, b, i + 1);
}
return b.data.createdOn - a.data.createdOn;
break;
case WMEURMPT.sortModeListMC.distanceDSC:
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return WMEURMPT.compareMC(a, b, i + 1);
}
return a.distanceToMapCenter - b.distanceToMapCenter;
break;
case WMEURMPT.sortModeListMC.distanceASC:
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return WMEURMPT.compareMC(a, b, i + 1);
}
return b.distanceToMapCenter - a.distanceToMapCenter;
break;
case WMEURMPT.sortModeListMC.commentCountDSC:
var acount = a.data.hasOwnProperty("conversation") ? a.data.conversation.length : 0;
var bcount = b.data.hasOwnProperty("conversation") ? b.data.conversation.length : 0;
if (acount == bcount) {
return WMEURMPT.compareMC(a, b, i + 1);
}
return acount - bcount;
break;
case WMEURMPT.sortModeListMC.commentCountASC:
var acount = a.data.hasOwnProperty("conversation") ? a.data.conversation.length : 0;
var bcount = b.data.hasOwnProperty("conversation") ? b.data.conversation.length : 0;
if (acount == bcount) {
return WMEURMPT.compareMC(a, b, i + 1);
}
return bcount - acount;
break;
}
return 0;
};
WMEURMPT.comparePUR = function(a, b, i) {
if (arguments.length == 2) {
i = 0;
}
if (i >= WMEURMPT.sortHistoryPUR.length) {
return 0;
}
switch(WMEURMPT.sortHistoryPUR[i]) {
case WMEURMPT.sortModeListPUR.ageDSC:
if (a.data.dateAddedMin == b.data.dateAddedMin) {
return WMEURMPT.comparePUR(a, b, i + 1);
}
return a.data.dateAddedMin - b.data.dateAddedMin;
break;
case WMEURMPT.sortModeListPUR.ageASC:
if (a.data.dateAddedMin == b.data.dateAddedMin) {
return WMEURMPT.comparePUR(a, b, i + 1);
}
return b.data.dateAddedMin - a.data.dateAddedMin;
break;
case WMEURMPT.sortModeListPUR.categoriesDSC:
var categoriesA = "";
for (var n = 0; n < a.data.categories.length; n++) {
categoriesA += WMEURMPT.getPURCategoriesFromCategories(a.data.categories[n]) + " ";
}
var categoriesB = "";
for (var n = 0; n < b.data.categories.length; n++) {
categoriesB += WMEURMPT.getPURCategoriesFromCategories(b.data.categories[n]) + " ";
}
if (categoriesA.toUpperCase() < categoriesB.toUpperCase()) {
return -1;
} else {
if (categoriesA.toUpperCase() > categoriesB.toUpperCase()) {
return 1;
} else {
return WMEURMPT.comparePUR(a, b, i + 1);
}
}
break;
case WMEURMPT.sortModeListPUR.categoriesASC:
var categoriesA = "";
for (var n = 0; n < a.data.categories.length; n++) {
categoriesA += WMEURMPT.getPURCategoriesFromCategories(a.data.categories[n]) + " ";
}
var categoriesB = "";
for (var n = 0; n < b.data.categories.length; n++) {
categoriesB += WMEURMPT.getPURCategoriesFromCategories(b.data.categories[n]) + " ";
}
if (categoriesA.toUpperCase() > categoriesB.toUpperCase()) {
return -1;
} else {
if (categoriesA.toUpperCase() < categoriesB.toUpperCase()) {
return 1;
} else {
return WMEURMPT.comparePUR(a, b, i + 1);
}
}
break;
case WMEURMPT.sortModeListPUR.nameDSC:
var nameA = a.data.name, nameB = b.data.name;
if (nameA.toUpperCase() < nameB.toUpperCase()) {
return -1;
} else {
if (nameA.toUpperCase() > nameB.toUpperCase()) {
return 1;
} else {
return WMEURMPT.comparePUR(a, b, i + 1);
}
}
break;
case WMEURMPT.sortModeListPUR.nameASC:
var nameA = a.data.name, nameB = b.data.name;
if (nameA.toUpperCase() > nameB.toUpperCase()) {
return -1;
} else {
if (nameA.toUpperCase() < nameB.toUpperCase()) {
return 1;
} else {
return WMEURMPT.comparePUR(a, b, i + 1);
}
}
break;
case WMEURMPT.sortModeListPUR.distanceDSC:
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return WMEURMPT.comparePUR(a, b, i + 1);
}
return a.distanceToMapCenter - b.distanceToMapCenter;
break;
case WMEURMPT.sortModeListPUR.distanceASC:
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return WMEURMPT.comparePUR(a, b, i + 1);
}
return b.distanceToMapCenter - a.distanceToMapCenter;
break;
case WMEURMPT.sortModeListPUR.nbpurDSC:
if (a.data.venueUpdateRequests.length == b.data.venueUpdateRequests.length) {
return WMEURMPT.comparePUR(a, b, i + 1);
}
return a.data.venueUpdateRequests.length - b.data.venueUpdateRequests.length;
break;
case WMEURMPT.sortModeListPUR.nbpurASC:
if (a.data.venueUpdateRequests.length == b.data.venueUpdateRequests.length) {
return WMEURMPT.comparePUR(a, b, i + 1);
}
return b.data.venueUpdateRequests.length - a.data.venueUpdateRequests.length;
break;
}
return 0;
};
WMEURMPT.compareURDriveDate = function(a, b) {
if (a.data.driveDate == b.data.driveDate) {
return WMEURMPT.compareURType(a, b);
}
return a.data.driveDate - b.data.driveDate;
};
WMEURMPT.compareMPPriority = function(a, b) {
if (a.data.weight == b.data.weight) {
return WMEURMPT.compareMPType(a, b);
}
return a.data.weight - b.data.weight;
};
WMEURMPT.compareURType = function(a, b) {
if (a.data.type == b.data.type) {
return WMEURMPT.compareURCommentCount(a, b);
}
return a.data.type - b.data.type;
};
WMEURMPT.compareMPType = function(a, b) {
if (a.data.subType == b.data.subType) {
return WMEURMPT.compareURMPDistanceToMapCenter(a, b);
}
return a.data.subType - b.data.subType;
};
WMEURMPT.compareURCommentCount = function(a, b) {
if (a.data.session.comments.length == b.data.session.comments.length) {
return WMEURMPT.compareURMPDistanceToMapCenter(a, b);
}
return a.data.session.comments.length - b.data.session.comments.length;
};
WMEURMPT.compareURMPDistanceToMapCenter = function(a, b) {
if (a.distanceToMapCenter == b.distanceToMapCenter) {
return a.id - b.id;
}
return a.distanceToMapCenter - b.distanceToMapCenter;
};
WMEURMPT.compareURLastCommentDate = function(a, b) {
var da = a.data.driveDate;
var db = b.data.driveDate;
if (a.data.session.comments.length != 0) {
da = a.data.session.comments[a.data.session.comments.length - 1].createdOn;
}
if (b.data.session.comments.length != 0) {
db = b.data.session.comments[b.data.session.comments.length - 1].createdOn;
}
if (a.data.session.comments.length != 0 && b.data.session.comments.length == 0) {
return -1;
}
if (a.data.session.comments.length == 0 && b.data.session.comments.length != 0) {
return 1;
}
if (da == db) {
return WMEURMPT.compareURType(a, b);
}
return da - db;
};
WMEURMPT.changeTableURSortTo = function(sortMode) {
sortMode = parseInt(sortMode);
var pos = WMEURMPT.sortHistoryUR.indexOf(sortMode);
if (pos != -1) {
WMEURMPT.sortHistoryUR.splice(pos);
}
if (WMEURMPT.sortHistoryUR[0] == -sortMode) {
WMEURMPT.sortHistoryUR[0] = sortMode;
} else {
WMEURMPT.sortHistoryUR.splice(0, 0, sortMode);
}
WMEURMPT.updateIHMFromURList(sortMode);
};
WMEURMPT.changeTableMPSortTo = function(sortMode) {
sortMode = parseInt(sortMode);
var pos = WMEURMPT.sortHistoryMP.indexOf(sortMode);
if (pos != -1) {
WMEURMPT.sortHistoryMP.splice(pos);
}
if (WMEURMPT.sortHistoryMP[0] == -sortMode) {
WMEURMPT.sortHistoryMP[0] = sortMode;
} else {
WMEURMPT.sortHistoryMP.splice(0, 0, sortMode);
}
WMEURMPT.updateIHMFromMPList(sortMode);
};
WMEURMPT.changeTableMCSortTo = function(sortMode) {
sortMode = parseInt(sortMode);
var pos = WMEURMPT.sortHistoryMC.indexOf(sortMode);
if (pos != -1) {
WMEURMPT.sortHistoryMC.splice(pos);
}
if (WMEURMPT.sortHistoryMC[0] == -sortMode) {
WMEURMPT.sortHistoryMC[0] = sortMode;
} else {
WMEURMPT.sortHistoryMC.splice(0, 0, sortMode);
}
WMEURMPT.updateIHMFromMCList(sortMode);
};
WMEURMPT.changeTablePURSortTo = function(sortMode) {
sortMode = parseInt(sortMode);
var pos = WMEURMPT.sortHistoryPUR.indexOf(sortMode);
if (pos != -1) {
WMEURMPT.sortHistoryPUR.splice(pos);
}
if (WMEURMPT.sortHistoryPUR[0] == -sortMode) {
WMEURMPT.sortHistoryPUR[0] = sortMode;
} else {
WMEURMPT.sortHistoryPUR.splice(0, 0, sortMode);
}
WMEURMPT.logDebug("sort history:", WMEURMPT.sortHistoryPUR);
WMEURMPT.updateIHMFromPURList(sortMode);
};
WMEURMPT.getColorFromAge = function(ageInDays) {
var r = 255;
var g = 0;
var b = 255;
if (ageInDays < 15) {
b = 0;
g = 255 - ageInDays * 17;
} else {
if (ageInDays < 30) {
b = (ageInDays - 15) * 17;
}
}
if (g < 0) {
g = 0;
}
if (b > 255) {
b = 255;
}
return "#" + WMEURMPT.decimalToHex(r, 2) + WMEURMPT.decimalToHex(g, 2) + WMEURMPT.decimalToHex(b, 2);
};
WMEURMPT.getColorFromWieght = function(MPWeight) {
var r = 255;
var g = 0;
var b = 255;
if (MPWeight == 2) {
r = 255;
b = 0;
} else {
if (MPWeight == 3) {
g = 255;
b = 0;
} else {
if (MPWeight > 3) {
r = 0;
g = 255;
b = 0;
}
}
}
return "#" + WMEURMPT.decimalToHex(r, 2) + WMEURMPT.decimalToHex(g, 2) + WMEURMPT.decimalToHex(b, 2);
};
WMEURMPT.getColorFromStartTime = function(ts) {
var aDate = new Date;
var now = aDate.getTime();
var deltaH = (ts - now) / 3600000;
var r = 255;
var g = 0;
var b = 255;
if (deltaH < 0) {
return "#" + WMEURMPT.decimalToHex(r, 2) + WMEURMPT.decimalToHex(g, 2) + WMEURMPT.decimalToHex(b, 2);
}
r = 0;
g = 255;
b = 0;
if (deltaH > 30 * 24) {
return "#" + WMEURMPT.decimalToHex(r, 2) + WMEURMPT.decimalToHex(g, 2) + WMEURMPT.decimalToHex(b, 2);
}
r = 255;
g = 0;
b = 255;
if (deltaH < 7 * 24) {
b = Math.floor(255 - deltaH / (7 * 24) * 255);
} else {
if (deltaH < 17 * 24) {
deltaH = deltaH - 7 * 24;
b = 0;
g = Math.floor(255 - deltaH / (10 * 24) * 255);
} else {
deltaH = deltaH - 17 * 24;
g = 255;
b = 0;
r = Math.floor(255 - deltaH / (13 * 24) * 255);
}
}
if (b > 255) {
b = 255;
}
if (r > 255) {
r = 255;
}
if (g > 255) {
g = 255;
}
return "#" + WMEURMPT.decimalToHex(r, 2) + WMEURMPT.decimalToHex(g, 2) + WMEURMPT.decimalToHex(b, 2);
};
WMEURMPT.updateIHMFromURList = function(sortMode) {
var div = WMEURMPT.getId("urt-list");
if (WMEURMPT.URList.length == 0) {
WMEURMPT.removeChildElements(div);
div.innerHTML = "";
return;
}
sortMode = typeof sortMode !== "undefined" && sortMode != null ? sortMode : WMEURMPT.currentSortModeUR;
if (sortMode != WMEURMPT.currentSortModeUR || (sortMode == WMEURMPT.sortModeListUR.distanceDSC || sortMode == WMEURMPT.sortModeListUR.distanceASC) && WMEURMPT.isComputeDistances == true) {
WMEURMPT.URList.sort(WMEURMPT.compareUR);
WMEURMPT.URMap = WMEURMPT.listToObject(WMEURMPT.URList);
}
WMEURMPT.currentSortModeUR = sortMode;
var content = "";
content += '<table id="urmpt-ur-table" class="urt-table">';
content += "<thead><tr>";
content += '<td><div class="urt-table-head-icon"><img style="width: 16px" title="Blacklist UR 1 by 1." src="data:image/png;base64,' + WMEURMPT.icon_blacklist + '" /></div></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="urt-table-sort-age"><img style="width: 16px" title="Age of the UR.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_age + '" /></a><a href="#" id="urt-table-sort-lastcomment"><img style="width: 16px" title="Last comment on UR.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_comments + '" /></a></div></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="urt-table-sort-type"><img title="Type of the UR.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_type + '" /></a></div></td>';
content += '<td width="100%">Description</td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="urt-table-sort-ccount"><img style="width: 16px" title="Comments count\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_comments + '" /></a></div></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="urt-table-sort-distance"><img title="Distance to the center of the map.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_distance + '" /></a></div></td>';
content += '<td style="width: 20px; display: inline-block; border: none;"><center><div class="urt-table-head-icon"><i class="fa fa-crosshairs crosshair icon-screenshot"></i></div></center></td>';
content += "</tr></thead>";
var displayedURCount = 0;
var hiddenURCount = 0;
for (var i = 0; i < WMEURMPT.URList.length; i++) {
if (WMEURMPT.getId("urt-checkbox-filterHideLimitTo").checked) {
if (displayedURCount >= WMEURMPT.currentURLimitTo) {
hiddenURCount += WMEURMPT.URList.length - i;
break;
}
}
if (WMEURMPT.isURFiltered(WMEURMPT.URList[i])) {
hiddenURCount++;
continue;
}
displayedURCount++;
var URDays = WMEURMPT.getDuration(WMEURMPT.URList[i].data.driveDate);
var distance = WMEURMPT.URList[i].distanceToMapCenter;
var distanceStr = "";
if (W.prefs.get("isImperial")) {
distanceStr = Math.floor(distance * 3.28084) + " <font size: smaller>ft</font>";
if (distance * 3.28084 >= 1000) {
distanceStr = Math.floor(distance * 0.000621371) + " <font size: smaller>mi</font>";
}
} else {
distanceStr = Math.floor(distance) + " <font size: smaller>m</font>";
if (distance >= 1000) {
distanceStr = Math.floor(distance / 1000) + " <font size: smaller>km</font>";
}
if (distance >= 1000000) {
distanceStr = Math.floor(distance / 1000000) + " <font size: smaller>Mm</font>";
}
}
var comments = "";
var lastCommentDays = null;
for (var c = 0; c < WMEURMPT.URList[i].data.session.comments.length; c++) {
comments += WMEURMPT.URList[i].data.session.comments[c].userName + " (" + (new Date(WMEURMPT.URList[i].data.session.comments[c].createdOn)).toLocaleString() + "):\n";
comments += WMEURMPT.URList[i].data.session.comments[c].text + "\n\n";
lastCommentDays = WMEURMPT.getDuration(WMEURMPT.URList[i].data.session.comments[c].createdOn);
if (c == WMEURMPT.URList[i].data.session.comments.length - 1 && WMEURMPT.URList[i].data.session.comments[c].userName == WMEURMPT.me.userName) {
WMEURMPT.URList[i].lastVisitCommentsCount = WMEURMPT.URList[i].data.session.comments.length;
}
}
content += '<tr id="urt-tr-' + i + '" >';
content += '<td class="urt-blacklist" id="urt-blacklist-' + i + '" style=" cursor: pointer; " title="' + (WMEURMPT.URList[i].blackListed ? "whitelist" : "blacklist") + ' this UR" > </td>';
var colorCode = new Object;
colorCode.fc = "#000000";
if (WMEURMPT.URList[i].blackListed) {
colorCode.bg = "#000000";
colorCode.fc = "#ffffff";
} else {
if (WMEURMPT.URList[i].data.open == false) {
colorCode.bg = "#00a000";
} else {
colorCode.bg = WMEURMPT.getColorFromAge(URDays);
}
}
var HRURDays = "" + URDays;
var HRURLCDays = "-";
if (lastCommentDays != null) {
HRURLCDays = "" + lastCommentDays;
}
var ttt = HRURDays + " days";
var closedBy = "";
if (WMEURMPT.URList[i].data.open == false) {
closedBy = " - Closed as " + WMEURMPT.getHRURResolutionFromType(WMEURMPT.URList[i].data.resolution) + " by: " + WMEURMPT.URList[i].data.resolvedByName;
}
if (WMEURMPT.URAgeColIsLastComment) {
content += '<td title="' + ttt + closedBy + '" style="text-align: center; background-color: ' + colorCode.bg + "; color: " + colorCode.fc + ';"><span style="width: 100%; display: block;">' + HRURLCDays + "</span></td>";
} else {
content += '<td title="' + HRURLCDays + " days" + closedBy + '" style="text-align: center; background-color: ' + colorCode.bg + "; color: " + colorCode.fc + ';"><span style="width: 100%; display: block;">' + HRURDays + "</span></td>";
}
content += "<td>" + WMEURMPT.getHRURTypeFromType(WMEURMPT.URList[i].data.type) + "</td>";
var descriptionHTML = "Not Available";
var descriptionHTMLNormalized = "N/A" + (new Array(WMEURMPT.URDescriptionMaxLength - 3 + 1)).join(" ");
if (WMEURMPT.URList[i].data.description != null) {
descriptionHTML = WMEURMPT.escapeHtml(WMEURMPT.URList[i].data.description);
descriptionHTMLNormalized = descriptionHTML.substr(0, WMEURMPT.URDescriptionMaxLength);
}
if (descriptionHTMLNormalized.length < WMEURMPT.URDescriptionMaxLength) {
descriptionHTMLNormalized += (new Array(WMEURMPT.URDescriptionMaxLength - descriptionHTMLNormalized.length + 1)).join(" ");
}
content += '<td><span id="urt-descriptionur-' + WMEURMPT.URList[i].id + '" title="' + descriptionHTML + '" style="display: block; height: 20px; overflow: hidden; white-space: nowrap; font-family: \'Courier New\', monospace;">' + descriptionHTMLNormalized + "</span></td>";
content += '<td style="text-align: center"><span id="urt-commentscount-' + i + '" style="width: 100%; display: block;" title="' + WMEURMPT.escapeHtml(comments) + '">' + WMEURMPT.URList[i].data.session.comments.length + "</span></td>";
content += '<td style="text-align: right">' + distanceStr + "</td>";
content += '<td style="width: 20px;" id="urt-targetur-' + i + (WMEURMPT.isDebug ? '" title="' + WMEURMPT.URList[i].id : "") + '"><a href="#"><center><i class="fa fa-crosshairs crosshair icon-screenshot"></i></center></a></td>';
content += "</tr>";
}
content += "</table>";
WMEURMPT.removeChildElements(div);
div.innerHTML = displayedURCount + " URs (" + hiddenURCount + " hidden)<br/>" + content;
var asort = WMEURMPT.getId("urt-table-sort-age");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListUR.ageDSC;
if (WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.ageDSC || WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.ageASC) {
newSortMode = WMEURMPT.currentSortModeUR * -1;
}
return function() {
WMEURMPT.changeTableURSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("urt-table-sort-type");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListUR.typeDSC;
if (WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.typeDSC || WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.typeASC) {
newSortMode = WMEURMPT.currentSortModeUR * -1;
}
return function() {
WMEURMPT.changeTableURSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("urt-table-sort-ccount");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListUR.commentCountDSC;
if (WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.commentCountDSC || WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.commentCountASC) {
newSortMode = WMEURMPT.currentSortModeUR * -1;
}
return function() {
WMEURMPT.changeTableURSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("urt-table-sort-distance");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListUR.distanceDSC;
if (WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.distanceDSC || WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.distanceASC) {
newSortMode = WMEURMPT.currentSortModeUR * -1;
}
return function() {
WMEURMPT.changeTableURSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("urt-table-sort-lastcomment");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListUR.lastCommentDSC;
if (WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.lastCommentDSC || WMEURMPT.currentSortModeUR == WMEURMPT.sortModeListUR.lastCommentASC) {
newSortMode = WMEURMPT.currentSortModeUR * -1;
}
return function() {
WMEURMPT.changeTableURSortTo(newSortMode + "");
};
}();
window.setTimeout(WMEURMPT.setupURListHandlers);
WMEURMPT.updateFlashingURs();
};
WMEURMPT.setupURListHandlers = function() {
var table = WMEURMPT.getId("urmpt-ur-table");
if (table == null) {
return;
}
if (table.childNodes.length != 2) {
return;
}
var rows = table.childNodes[1].childNodes;
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var cellBlackList = row.childNodes[0];
var cellTarget = row.childNodes[row.childNodes.length - 1];
var indexInList = cellTarget.id.split("-")[2];
cellBlackList.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.blacklistUR, [indexInList]);
var lonlat = WMEURMPT.URList[parseInt(indexInList)].lonlat;
var URId = WMEURMPT.URList[parseInt(indexInList)].id;
cellTarget.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.targetMapToUR, [lonlat.lon + "", lonlat.lat + "", URId + ""]);
}
};
WMEURMPT.updateIHMFromMPList = function(sortMode) {
var div = WMEURMPT.getId("mpt-list");
if (WMEURMPT.MPList.length == 0) {
WMEURMPT.removeChildElements(div);
div.innerHTML = "";
return;
}
for (var i = 0; i < WMEURMPT.MPList.length; i++) {
if (WMEURMPT.MPList[i].type == "problem" && WMEURMPT.MPList[i].data.hasOwnProperty("subType") && WMEURMPT.MPList[i].data.subType == 300) {
var aDate = new Date;
var now = aDate.getTime();
var deltaH = (WMEURMPT.MPList[i].data.startTime - now) / 3600000;
var MPWeight = Math.ceil((720 - deltaH) / 7.2);
if (deltaH > 0) {
MPWeight = Math.ceil((720 - deltaH) / 14.4);
}
WMEURMPT.MPList[i].data.weight = MPWeight;
}
}
sortMode = typeof sortMode !== "undefined" && sortMode != null ? sortMode : WMEURMPT.currentSortModeMP;
if (sortMode != WMEURMPT.currentSortModeMP || (sortMode == WMEURMPT.sortModeListMP.distanceDSC || sortMode == WMEURMPT.sortModeListMP.distanceASC) && WMEURMPT.isComputeDistances == true) {
WMEURMPT.MPList.sort(WMEURMPT.compareMP);
WMEURMPT.MPMap = WMEURMPT.listToObject(WMEURMPT.MPList);
}
WMEURMPT.currentSortModeMP = sortMode;
var content = "";
content += '<table id="urmpt-mp-table" class="urt-table">';
content += "<thead><tr>";
content += '<td><div class="urt-table-head-icon"><img style="width: 16px" title="Blacklist UR 1 by 1." src="data:image/png;base64,' + WMEURMPT.icon_blacklist + '" /></div></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="mpt-table-sort-priority"><img style="width: 16px" title="Priority.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_priority + '" /></a></div></td>';
content += '<td width="100%"><a href="#" id="mpt-table-sort-type" title="Type of the MP.\nClick to sort.">Description</a></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="mpt-table-sort-distance"><img title="Distance to the center of the map.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_distance + '" /></a></div></td>';
content += '<td style="width: 20px; display: inline-block; border: none;"><center><div class="urt-table-head-icon"><i class="fa fa-crosshairs crosshair icon-screenshot"></i></div></center></td>';
content += "</tr></thead>";
var displayedMPCount = 0;
var hiddenMPCount = 0;
for (var i = 0; i < WMEURMPT.MPList.length; i++) {
if (WMEURMPT.getId("mpt-checkbox-filterHideLimitTo").checked) {
if (displayedMPCount >= WMEURMPT.currentMPLimitTo) {
hiddenMPCount += WMEURMPT.MPList.length - i;
break;
}
}
if (WMEURMPT.isMPFiltered(WMEURMPT.MPList[i])) {
hiddenMPCount++;
continue;
}
displayedMPCount++;
var MPWeight = 0;
var isClosure = false;
if (WMEURMPT.MPList[i].type == "problem" && WMEURMPT.MPList[i].data.hasOwnProperty("subType") && WMEURMPT.MPList[i].data.subType == 300) {
isClosure = true;
}
if (WMEURMPT.MPList[i].type == "problem") {
MPWeight = WMEURMPT.MPList[i].data.priority;
}
var distance = WMEURMPT.MPList[i].distanceToMapCenter;
var distanceStr = "";
if (W.prefs.get("isImperial")) {
distanceStr = Math.floor(distance * 3.28084) + " <font size: smaller>ft</font>";
if (distance * 3.28084 >= 1000) {
distanceStr = Math.floor(distance * 0.000621371) + " <font size: smaller>mi</font>";
}
} else {
distanceStr = Math.floor(distance) + " <font size: smaller>m</font>";
if (distance >= 1000) {
distanceStr = Math.floor(distance / 1000) + " <font size: smaller>km</font>";
}
if (distance >= 1000000) {
distanceStr = Math.floor(distance / 1000000) + " <font size: smaller>Mm</font>";
}
}
content += '<tr id="mpt-tr-' + i + '" >';
content += '<td class="urt-blacklist" id="mpt-blacklist-' + i + '" style="cursor: pointer;" title="' + (WMEURMPT.MPList[i].blackListed ? "whitelist" : "blacklist") + ' this MP" > </td>';
var colorCode = new Object;
colorCode.fc = "#000000";
if (WMEURMPT.MPList[i].blackListed) {
colorCode.bg = "#000000";
colorCode.fc = "#ffffff";
} else {
if (WMEURMPT.MPList[i].data.open == false) {
colorCode.bg = "#00a000";
} else {
colorCode.bg = WMEURMPT.getColorFromWieght(MPWeight);
}
}
var HRMPWeight = "" + MPWeight;
var ttt = "";
var date = null;
var closureDate = null;
var closureTime = null;
if (isClosure) {
var tmpDate = (new Date(WMEURMPT.MPList[i].data.startTime)).toLocaleString();
tmpDate = tmpDate.split(" ");
closureDate = tmpDate[0];
closureDate = closureDate.replace(",", "");
closureDate = closureDate.replace(/20([0-9][0-9])/, "$1");
closureTime = tmpDate[1];
}
content += '<td style="text-align: right; background-color: ' + colorCode.bg + "; color: " + colorCode.fc + ';"><span ' + (WMEURMPT.MPList[i].data.open == true ? ttt != "" ? 'title="' + ttt + '"' : "" : 'title="' + ttt + (ttt != "" ? "\n" : "") + "Closed as " + WMEURMPT.getHRURResolutionFromType(WMEURMPT.MPList[i].data.resolution) + " by: " + WMEURMPT.MPList[i].data.resolvedByName + '" ') + ' style="width: 100%; display: block;">' + (isClosure ? closureDate : HRMPWeight) + "</span></td>";
var descriptionHTML = WMEURMPT.MPList[i].type == "turnProblem" ? "Turn Problem" : WMEURMPT.getFullMPTypeFromType(WMEURMPT.MPList[i].data.subType);
var descriptionHTMLNormalized = (new Array(WMEURMPT.MPDescriptionMaxLength - 3 + 1)).join(" ");
descriptionHTMLNormalized = descriptionHTML.substr(0, WMEURMPT.MPDescriptionMaxLength);
if (descriptionHTMLNormalized.length < WMEURMPT.MPDescriptionMaxLength) {
descriptionHTMLNormalized += (new Array(WMEURMPT.MPDescriptionMaxLength - descriptionHTMLNormalized.length + 1)).join(" ");
}
content += '<td><span id="mpt-descriptionmp-' + WMEURMPT.MPList[i].id + '" title="' + descriptionHTML + '" style="display: block; height: 20px; overflow: hidden; white-space: nowrap; font-family: \'Courier New\', monospace;">' + descriptionHTMLNormalized + "</span></td>";
content += '<td style="text-align: right">' + distanceStr + "</td>";
content += '<td style="width: 20px;" id="mpt-targetmp-' + i + (WMEURMPT.isDebug ? '" title="' + WMEURMPT.MPList[i].id : "") + '"><a href="#"><center><i class="fa fa-crosshairs crosshair icon-screenshot"></i></center></a></td>';
content += "</tr>";
}
content += "</table>";
WMEURMPT.removeChildElements(div);
div.innerHTML = displayedMPCount + " MPs (" + hiddenMPCount + " hidden)<br/>" + content;
var asort = WMEURMPT.getId("mpt-table-sort-priority");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListMP.priorityDSC;
if (WMEURMPT.currentSortModeMP == WMEURMPT.sortModeListMP.priorityDSC || WMEURMPT.currentSortModeMP == WMEURMPT.sortModeListMP.priorityASC) {
newSortMode = WMEURMPT.currentSortModeMP * -1;
}
return function() {
WMEURMPT.changeTableMPSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("mpt-table-sort-type");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListMP.typeDSC;
if (WMEURMPT.currentSortModeMP == WMEURMPT.sortModeListMP.typeDSC || WMEURMPT.currentSortModeMP == WMEURMPT.sortModeListMP.typeASC) {
newSortMode = WMEURMPT.currentSortModeMP * -1;
}
return function() {
WMEURMPT.changeTableMPSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("mpt-table-sort-distance");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListMP.distanceDSC;
if (WMEURMPT.currentSortModeMP == WMEURMPT.sortModeListMP.distanceDSC || WMEURMPT.currentSortModeMP == WMEURMPT.sortModeListMP.distanceASC) {
newSortMode = WMEURMPT.currentSortModeMP * -1;
}
return function() {
WMEURMPT.changeTableMPSortTo(newSortMode + "");
};
}();
window.setTimeout(WMEURMPT.setupMPListHandlers);
WMEURMPT.updateFlashingMPs();
};
WMEURMPT.setupMPListHandlers = function() {
var table = WMEURMPT.getId("urmpt-mp-table");
if (table == null) {
return;
}
if (table.childNodes.length != 2) {
return;
}
var rows = table.childNodes[1].childNodes;
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var cellBlackList = row.childNodes[0];
var cellTarget = row.childNodes[row.childNodes.length - 1];
var indexInList = cellTarget.id.split("-")[2];
cellBlackList.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.blacklistMP, [indexInList]);
var lonlat = WMEURMPT.MPList[parseInt(indexInList)].lonlat;
var MPId = WMEURMPT.MPList[parseInt(indexInList)].id;
cellTarget.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.targetMapToMP, [lonlat.lon, lonlat.lat, MPId]);
}
};
WMEURMPT.updateIHMFromMCList = function(sortMode) {
var div = WMEURMPT.getId("mct-list");
if (WMEURMPT.MCList.length == 0) {
WMEURMPT.removeChildElements(div);
div.innerHTML = "";
return;
}
sortMode = typeof sortMode !== "undefined" && sortMode != null ? sortMode : WMEURMPT.currentSortModeMC;
if (sortMode != WMEURMPT.currentSortModeMC || (sortMode == WMEURMPT.sortModeListMC.distanceDSC || sortMode == WMEURMPT.sortModeListMC.distanceASC) && WMEURMPT.isComputeDistances == true) {
WMEURMPT.MCList.sort(WMEURMPT.compareMC);
WMEURMPT.MCMap = WMEURMPT.listToObject(WMEURMPT.MCList);
}
WMEURMPT.currentSortModeMC = sortMode;
var content = "";
content += '<table id="urmpt-mc-table" class="urt-table">';
content += "<thead><tr>";
content += '<td><div class="urt-table-head-icon"><img style="width: 16px" title="Blacklist MC 1 by 1." src="data:image/png;base64,' + WMEURMPT.icon_blacklist + '" /></div></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="mct-table-sort-age"><img style="width: 16px" title="Age of the MC.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_age + '" /></a></div></td>';
content += '<td width="100%">Subject</td>';
content += '<td width="100%">Body</td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="mct-table-sort-ccount"><img style="width: 16px" title="Comments count\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_comments + '" /></a></div></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="mct-table-sort-distance"><img title="Distance to the center of the map.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_distance + '" /></a></div></td>';
content += '<td style="width: 20px; display: inline-block; border: none;"><center><div class="urt-table-head-icon"><i class="fa fa-crosshairs crosshair icon-screenshot"></i></div></center></td>';
content += "</tr></thead>";
var displayedMCCount = 0;
var hiddenMCCount = 0;
for (var i = 0; i < WMEURMPT.MCList.length; i++) {
if (WMEURMPT.getId("mct-checkbox-filterHideLimitTo").checked) {
if (displayedMCCount >= WMEURMPT.currentMCLimitTo) {
hiddenMCCount += WMEURMPT.MCList.length - i;
break;
}
}
if (WMEURMPT.isMCFiltered(WMEURMPT.MCList[i])) {
hiddenMCCount++;
continue;
}
displayedMCCount++;
var MCDays = 0;
if (WMEURMPT.MCList[i].data.createdOn !== null) {
MCDays = WMEURMPT.getDuration(WMEURMPT.MCList[i].data.createdOn);
}
var conversation = "";
if (WMEURMPT.MCList[i].data.hasOwnProperty("conversation")) {
var conversationArray = [];
WMEURMPT.MCList[i].data.conversation.forEach(function(c, j) {
var text = c.userName + " (" + (new Date(c.createdOn)).toLocaleString() + "):\n";
text += c.text;
conversationArray.push(text);
if (j == WMEURMPT.MCList[i].data.conversation.length - 1 && c.userName == WMEURMPT.me.userName) {
WMEURMPT.MCList[i].lastVisitCommentsCount = WMEURMPT.MCList[i].data.conversation.length;
}
});
conversation = conversationArray.join("\n\n");
}
var distance = WMEURMPT.MCList[i].distanceToMapCenter;
var distanceStr = "";
if (W.prefs.get("isImperial")) {
distanceStr = Math.floor(distance * 3.28084) + " <font size: smaller>ft</font>";
if (distance * 3.28084 >= 1000) {
distanceStr = Math.floor(distance * 0.000621371) + " <font size: smaller>mi</font>";
}
} else {
distanceStr = Math.floor(distance) + " <font size: smaller>m</font>";
if (distance >= 1000) {
distanceStr = Math.floor(distance / 1000) + " <font size: smaller>km</font>";
}
if (distance >= 1000000) {
distanceStr = Math.floor(distance / 1000000) + " <font size: smaller>Mm</font>";
}
}
content += '<tr id="mct-tr-' + i + '" >';
content += '<td class="urt-blacklist" id="mct-blacklist-' + i + '" style="cursor: pointer; ' + (WMEURMPT.MCList[i].blackListed ? "background-color: #000; color: #FFF;" : "background-color: #FFF; color: #000;") + '" title="' + (WMEURMPT.MCList[i].blackListed ? "whitelist" : "blacklist") + ' this MC" > </td>';
var ttt = "";
var date = null;
content += '<td title="' + MCDays + ' days" style="text-align: center;"><span style="width: 100%; display: block;">' + MCDays + "</span></td>";
var subjectHTML = WMEURMPT.MCList[i].data.subject;
var subjectHTMLNormalized = (new Array(WMEURMPT.MCSubjectMaxLength - 3 + 1)).join(" ");
subjectHTMLNormalized = subjectHTML.substr(0, WMEURMPT.MCSubjectMaxLength);
if (subjectHTMLNormalized.length < WMEURMPT.MCSubjectMaxLength) {
subjectHTMLNormalized += (new Array(WMEURMPT.MCSubjectMaxLength - subjectHTMLNormalized.length + 1)).join(" ");
}
content += '<td><span id="mct-subjectmc-' + WMEURMPT.MCList[i].id + '" title="' + subjectHTML + '" style="display: block; height: 20px; overflow: hidden; white-space: nowrap; font-family: \'Courier New\', monospace;">' + subjectHTMLNormalized + "</span></td>";
var bodyHTML = WMEURMPT.MCList[i].data.body;
var bodyHTMLNormalized = (new Array(WMEURMPT.MCBodyMaxLength - 3 + 1)).join(" ");
bodyHTMLNormalized = bodyHTML.substr(0, WMEURMPT.MCBodyMaxLength);
if (bodyHTMLNormalized.length < WMEURMPT.MCBodyMaxLength) {
bodyHTMLNormalized += (new Array(WMEURMPT.MCBodyMaxLength - bodyHTMLNormalized.length + 1)).join(" ");
}
content += '<td><span id="mct-bodymc-' + WMEURMPT.MCList[i].id + '" title="' + bodyHTML + '" style="display: block; height: 20px; overflow: hidden; white-space: nowrap; font-family: \'Courier New\', monospace;">' + bodyHTMLNormalized + "</span></td>";
content += '<td style="text-align: center"><span id="mct-commentscount-' + i + '" style="width: 100%; display: block;" title="' + WMEURMPT.escapeHtml(conversation) + '">' + (WMEURMPT.MCList[i].data.hasOwnProperty("conversation") ? WMEURMPT.MCList[i].data.conversation.length : "0") + "</span></td>";
content += '<td style="text-align: right">' + distanceStr + "</td>";
content += '<td style="width: 20px;" id="mct-targetmc-' + i + (WMEURMPT.isDebug ? '" title="' + WMEURMPT.MCList[i].id : "") + '"><a href="#"><center><i class="fa fa-crosshairs crosshair icon-screenshot"></i></center></a></td>';
content += "</tr>";
}
content += "</table>";
WMEURMPT.removeChildElements(div);
div.innerHTML = displayedMCCount + " MCs (" + hiddenMCCount + " hidden)<br/>" + content;
var asort = WMEURMPT.getId("mct-table-sort-age");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListMC.ageDSC;
if (WMEURMPT.currentSortModeMC == WMEURMPT.sortModeListMC.ageDSC || WMEURMPT.currentSortModeMC == WMEURMPT.sortModeListMC.ageASC) {
newSortMode = WMEURMPT.currentSortModeMC * -1;
}
return function() {
WMEURMPT.changeTableMCSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("mct-table-sort-distance");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListMC.distanceDSC;
if (WMEURMPT.currentSortModeMC == WMEURMPT.sortModeListMC.distanceDSC || WMEURMPT.currentSortModeMC == WMEURMPT.sortModeListMC.distanceASC) {
newSortMode = WMEURMPT.currentSortModeMC * -1;
}
return function() {
WMEURMPT.changeTableMCSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("mct-table-sort-ccount");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListMC.commentCountDSC;
if (WMEURMPT.currentSortModeMC == WMEURMPT.sortModeListMC.commentCountDSC || WMEURMPT.currentSortModeMC == WMEURMPT.sortModeListMC.commentCountASC) {
newSortMode = WMEURMPT.currentSortModeMC * -1;
}
return function() {
WMEURMPT.changeTableMCSortTo(newSortMode + "");
};
}();
window.setTimeout(WMEURMPT.setupMCListHandlers);
WMEURMPT.updateFlashingMCs();
};
WMEURMPT.setupMCListHandlers = function() {
var table = WMEURMPT.getId("urmpt-mc-table");
if (table == null) {
return;
}
if (table.childNodes.length != 2) {
return;
}
var rows = table.childNodes[1].childNodes;
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var cellBlackList = row.childNodes[0];
var cellTarget = row.childNodes[row.childNodes.length - 1];
var indexInList = cellTarget.id.split("-")[2];
cellBlackList.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.blacklistMC, [indexInList]);
var lonlat = WMEURMPT.MCList[parseInt(indexInList)].lonlat;
var MCId = WMEURMPT.MCList[parseInt(indexInList)].id;
cellTarget.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.targetMapToMC, [lonlat.lon, lonlat.lat, MCId]);
}
};
WMEURMPT.updateIHMFromPURList = function(sortMode) {
var div = WMEURMPT.getId("purt-list");
if (WMEURMPT.PURList.length == 0) {
WMEURMPT.removeChildElements(div);
div.innerHTML = "";
return;
}
sortMode = typeof sortMode !== "undefined" && sortMode !== null ? sortMode : WMEURMPT.currentSortModePUR;
if (sortMode != WMEURMPT.currentSortModePUR || (sortMode == WMEURMPT.sortModeListPUR.distanceDSC || sortMode == WMEURMPT.sortModeListPUR.distanceASC) && WMEURMPT.isComputeDistances == true) {
WMEURMPT.PURList.sort(WMEURMPT.comparePUR);
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
}
WMEURMPT.currentSortModePUR = sortMode;
var content = "";
content += '<table id="urmpt-pur-table" class="urt-table">';
content += "<thead><tr>";
content += '<td><div class="urt-table-head-icon"><img style="width: 16px" title="Blacklist PUR 1 by 1." src="data:image/png;base64,' + WMEURMPT.icon_blacklist + '" /></div></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="purt-table-sort-age"><img style="width: 16px" title="Age of the PUR.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_age + '" /></a></div></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="purt-table-sort-nbpur"><img style="width: 16px" title="Number of PUR on the Poi.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_pur + '" /></a></div></td>';
content += '<td width="100%"><a href="#" id="purt-table-sort-categories" title="Categories of the POI.\nClick to sort.">Categories</a></td>';
content += '<td width="100%"><a href="#" id="purt-table-sort-name" title="Name of the POI.\nClick to sort.">Name</a></td>';
content += '<td><div class="urt-table-head-icon"><a href="#" id="purt-table-sort-distance"><img title="Distance to the center of the map.\nClick to sort." src="data:image/png;base64,' + WMEURMPT.icon_distance + '" /></a></div></td>';
content += '<td style="width: 20px; display: inline-block; border: none;"><center><div class="urt-table-head-icon"><i class="fa fa-crosshairs crosshair icon-screenshot"></i></div></center></td>';
content += "</tr></thead>";
var displayedPURCount = 0;
var hiddenPURCount = 0;
for (var i = 0; i < WMEURMPT.PURList.length; i++) {
if (WMEURMPT.getId("purt-checkbox-filterHideLimitTo").checked) {
if (displayedPURCount >= WMEURMPT.currentPURLimitTo) {
hiddenPURCount += WMEURMPT.PURList.length - i;
break;
}
}
if (WMEURMPT.isPURFiltered(WMEURMPT.PURList[i])) {
hiddenPURCount++;
continue;
}
if (WMEURMPT.PURList[i].data.hasOwnProperty("venueUpdateRequests") && WMEURMPT.PURList[i].data.venueUpdateRequests.length == 0) {
continue;
}
displayedPURCount++;
var PURDays = WMEURMPT.getDuration(WMEURMPT.PURList[i].data.dateAddedMin);
var nbPUR = null;
if (WMEURMPT.PURList[i].data.hasOwnProperty("venueUpdateRequests") && WMEURMPT.PURList[i].data.venueUpdateRequests.length != 0) {
nbPUR = WMEURMPT.PURList[i].data.venueUpdateRequests.length;
}
var distance = WMEURMPT.PURList[i].distanceToMapCenter;
var distanceStr = "";
if (W.prefs.get("isImperial")) {
distanceStr = Math.floor(distance * 3.28084) + " <font size: smaller>ft</font>";
if (distance * 3.28084 >= 1000) {
distanceStr = Math.floor(distance * 0.000621371) + " <font size: smaller>mi</font>";
}
} else {
distanceStr = Math.floor(distance) + " <font size: smaller>m</font>";
if (distance >= 1000) {
distanceStr = Math.floor(distance / 1000) + " <font size: smaller>km</font>";
}
if (distance >= 1000000) {
distanceStr = Math.floor(distance / 1000000) + " <font size: smaller>Mm</font>";
}
}
content += '<tr id="purt-tr-' + i + '" >';
content += '<td class="urt-blacklist" id="purt-blacklist-' + i + '" style="cursor: pointer;" title="' + (WMEURMPT.PURList[i].blackListed ? "whitelist" : "blacklist") + ' this PUR" > </td>';
content += '<td title="' + PURDays + ' days" style="text-align: center;"><span style="width: 100%; display: block;">' + PURDays + "</span></td>";
content += '<td title="' + nbPUR + ' pur(s)" style="text-align: center;"><span style="width: 100%; display: block;">' + nbPUR + "</span></td>";
var categoriesHTML = "";
for (var n = 0; n < WMEURMPT.PURList[i].data.categories.length; n++) {
categoriesHTML += WMEURMPT.getPURCategoriesFromCategories(WMEURMPT.PURList[i].data.categories[n]) + " ";
}
var categoriesHTMLNormalized = (new Array(WMEURMPT.PURCategoriesMaxLength - 3 + 1)).join(" ");
categoriesHTMLNormalized = categoriesHTML.substr(0, WMEURMPT.PURCategoriesMaxLength);
if (categoriesHTMLNormalized.length < WMEURMPT.PURCategoriesMaxLength) {
categoriesHTMLNormalized += (new Array(WMEURMPT.PURCategoriesMaxLength - categoriesHTMLNormalized.length + 1)).join(" ");
}
content += '<td><span id="purt-categoriespur-' + WMEURMPT.PURList[i].id + '" title="' + categoriesHTML + '" style="display: block; height: 20px; overflow: hidden; white-space: nowrap; font-family: \'Courier New\', monospace;">' + categoriesHTMLNormalized + "</span></td>";
var nameHTML = WMEURMPT.PURList[i].data.name;
if (nameHTML === undefined) {
nameHTML = "undefined";
}
var nameHTMLNormalized = (new Array(WMEURMPT.PURNameMaxLength - 3 + 1)).join(" ");
nameHTMLNormalized = nameHTML.substr(0, WMEURMPT.PURNameMaxLength);
if (nameHTMLNormalized.length < WMEURMPT.PURNameMaxLength) {
nameHTMLNormalized += (new Array(WMEURMPT.PURNameMaxLength - nameHTMLNormalized.length + 1)).join(" ");
}
content += '<td><span id="purt-namepur-' + WMEURMPT.PURList[i].id + '" title="' + nameHTML + '" style="display: block; height: 20px; overflow: hidden; white-space: nowrap; font-family: \'Courier New\', monospace;">' + nameHTMLNormalized + "</span></td>";
content += '<td style="text-align: right">' + distanceStr + "</td>";
content += '<td style="width: 20px;" id="purt-targetpur-' + i + (WMEURMPT.isDebug ? '" title="' + WMEURMPT.PURList[i].id : "") + '"><a href="#"><center><i class="fa fa-crosshairs crosshair icon-screenshot"></i></center></a></td>';
content += "</tr>";
}
content += "</table>";
WMEURMPT.removeChildElements(div);
div.innerHTML = displayedPURCount + " PURs (" + hiddenPURCount + " hidden)<br/>" + content;
var asort = WMEURMPT.getId("purt-table-sort-age");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListPUR.ageDSC;
if (WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.ageDSC || WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.ageASC) {
newSortMode = WMEURMPT.currentSortModePUR * -1;
}
return function() {
WMEURMPT.changeTablePURSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("purt-table-sort-categories");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListPUR.categoriesDSC;
if (WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.categoriesDSC || WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.categoriesASC) {
newSortMode = WMEURMPT.currentSortModePUR * -1;
}
return function() {
WMEURMPT.changeTablePURSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("purt-table-sort-name");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListPUR.nameDSC;
if (WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.nameDSC || WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.nameASC) {
newSortMode = WMEURMPT.currentSortModePUR * -1;
}
return function() {
WMEURMPT.changeTablePURSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("purt-table-sort-distance");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListPUR.distanceDSC;
if (WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.distanceDSC || WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.distanceASC) {
newSortMode = WMEURMPT.currentSortModePUR * -1;
}
return function() {
WMEURMPT.changeTablePURSortTo(newSortMode + "");
};
}();
asort = WMEURMPT.getId("purt-table-sort-nbpur");
asort.onclick = function() {
var newSortMode = WMEURMPT.sortModeListPUR.nbpurDSC;
if (WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.nbpurDSC || WMEURMPT.currentSortModePUR == WMEURMPT.sortModeListPUR.nbpurASC) {
newSortMode = WMEURMPT.currentSortModePUR * -1;
}
return function() {
WMEURMPT.changeTablePURSortTo(newSortMode + "");
};
}();
window.setTimeout(WMEURMPT.setupPURListHandlers);
WMEURMPT.updateFlashingPURs();
};
WMEURMPT.setupPURListHandlers = function() {
var table = WMEURMPT.getId("urmpt-pur-table");
if (table == null) {
return;
}
if (table.childNodes.length != 2) {
return;
}
var rows = table.childNodes[1].childNodes;
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var cellBlackList = row.childNodes[0];
var cellTarget = row.childNodes[row.childNodes.length - 1];
var indexInList = cellTarget.id.split("-")[2];
cellBlackList.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.blacklistPUR, [indexInList]);
var lonlat = WMEURMPT.PURList[parseInt(indexInList)].lonlat;
var PURId = WMEURMPT.PURList[parseInt(indexInList)].id;
cellTarget.onclick = WMEURMPT.getFunctionWithArgs(WMEURMPT.targetMapToPUR, [lonlat.lon, lonlat.lat, PURId]);
}
};
WMEURMPT.updateFlashingURs = function() {
for (var i = 0; i < WMEURMPT.URList.length; i++) {
if (WMEURMPT.isURFiltered(WMEURMPT.URList[i])) {
continue;
}
var span = WMEURMPT.getId("urt-commentscount-" + i);
var tr = WMEURMPT.getId("urt-tr-" + i);
if (span == null) {
continue;
}
if (tr == null) {
continue;
}
if (WMEURMPT.URList[i].alreadyVisited == false && tr.className != "urt-bg-highlighted") {
tr.className = "urt-bg-highlighted";
} else {
if (WMEURMPT.URList[i].alreadyVisited == true) {
tr.className = "";
}
}
if (WMEURMPT.URList[i].data.session.isFollowing == true) {
tr.className = "urt-bg-ifollow";
}
if (WMEURMPT.URList[i].id == WMEURMPT.selectedURID) {
tr.className = "urt-bg-selected";
}
if (WMEURMPT.URList[i].data.hasOwnProperty("session") == true && WMEURMPT.URList[i].lastVisitCommentsCount < WMEURMPT.URList[i].data.session.comments.length) {
span.className = "urt-bg-newcomments";
} else {
span.className = "";
}
}
WMEURMPT.flashOdd = !WMEURMPT.flashOdd;
};
WMEURMPT.updateFlashingMPs = function() {
for (var i = 0; i < WMEURMPT.MPList.length; i++) {
var tr = WMEURMPT.getId("mpt-tr-" + i);
if (tr == null) {
continue;
}
if (WMEURMPT.MPList[i].alreadyVisited == false && tr.className != "urt-bg-highlighted") {
tr.className = "urt-bg-highlighted";
} else {
if (WMEURMPT.MPList[i].alreadyVisited == true) {
tr.className = "";
}
}
if (WMEURMPT.MPList[i].id == WMEURMPT.selectedMPID) {
tr.className = "urt-bg-selected";
}
}
};
WMEURMPT.updateFlashingMCs = function() {
for (var i = 0; i < WMEURMPT.MCList.length; i++) {
var tr = WMEURMPT.getId("mct-tr-" + i);
if (tr == null) {
continue;
}
if (WMEURMPT.MCList[i].alreadyVisited == false && tr.className != "urt-bg-highlighted") {
tr.className = "urt-bg-highlighted";
} else {
if (WMEURMPT.MCList[i].alreadyVisited == true) {
tr.className = "";
}
}
if (WMEURMPT.MCList[i].id == WMEURMPT.selectedMCID) {
tr.className = "urt-bg-selected";
}
if (WMEURMPT.MCList[i].data.hasOwnProperty("conversation") == true && WMEURMPT.MCList[i].lastVisitCommentsCount < WMEURMPT.MCList[i].data.conversation.length) {
var span = WMEURMPT.getId("mct-commentscount-" + i);
if (span != null) {
span.className = "urt-bg-newcomments";
}
}
}
};
WMEURMPT.updateFlashingPURs = function() {
for (var i = 0; i < WMEURMPT.PURList.length; i++) {
var tr = WMEURMPT.getId("purt-tr-" + i);
if (tr == null) {
continue;
}
if (WMEURMPT.PURList[i].alreadyVisited == false && tr.className != "urt-bg-highlighted") {
tr.className = "urt-bg-highlighted";
} else {
if (WMEURMPT.PURList[i].alreadyVisited == true) {
tr.className = "";
}
}
if (WMEURMPT.PURList[i].id == WMEURMPT.selectedPURID) {
tr.className = "urt-bg-selected";
}
}
};
WMEURMPT.updateLongTextCrop = function() {
var ur_table = WMEURMPT.getId("urmpt-ur-table");
var mp_table = WMEURMPT.getId("urmpt-mp-table");
var mc_table = WMEURMPT.getId("urmpt-mc-table");
var pur_table = WMEURMPT.getId("urmpt-pur-table");
if (ur_table) {
if (ur_table.children.length >= 2) {
var lines = ur_table.children[1].children;
var spanText = null;
for (var i = 0; i < lines.length; i++) {
spanText = lines[i].children[3].firstChild;
if (spanText == null) {
continue;
}
if (typeof spanText === "undefined") {
continue;
}
var urIndices = lines[i].id.match(/urt-tr-([0-9]+)/);
if (urIndices.length != 2) {
continue;
}
var urIndex = parseInt(urIndices[1]);
if (WMEURMPT.URList[urIndex].data.description == null) {
continue;
}
if (WMEURMPT.URList[urIndex].data.description.length <= WMEURMPT.URDescriptionMaxLength) {
continue;
}
if (typeof WMEURMPT.URList[urIndex].data.descriptionOffset === "undefined") {
WMEURMPT.URList[urIndex].data.descriptionOffset = -10;
}
var pos = WMEURMPT.URList[urIndex].data.descriptionOffset;
if (WMEURMPT.URList[urIndex].data.descriptionOffset < 0) {
pos = 0;
}
var remaining = WMEURMPT.URList[urIndex].data.description.length - pos;
if (remaining < 10) {
spanText.innerHTML = WMEURMPT.escapeHtml(WMEURMPT.URList[urIndex].data.description.substr(0, WMEURMPT.URDescriptionMaxLength));
WMEURMPT.URList[urIndex].data.descriptionOffset = -10;
} else {
if (remaining < WMEURMPT.URDescriptionMaxLength) {
WMEURMPT.URList[urIndex].data.descriptionOffset++;
} else {
if (WMEURMPT.URList[urIndex].data.descriptionOffset > 0) {
spanText.innerHTML = WMEURMPT.escapeHtml(WMEURMPT.URList[urIndex].data.description.substr(WMEURMPT.URList[urIndex].data.descriptionOffset + 1, WMEURMPT.URDescriptionMaxLength));
}
WMEURMPT.URList[urIndex].data.descriptionOffset++;
}
}
}
}
}
if (mp_table) {
if (mp_table.children.length >= 2) {
var lines = mp_table.children[1].children;
var spanText = null;
for (var i = 0; i < lines.length; i++) {
spanText = lines[i].children[2].firstChild;
if (spanText == null) {
continue;
}
if (typeof spanText === "undefined") {
continue;
}
var mpIndices = lines[i].id.match(/mpt-tr-([0-9]+)/);
if (mpIndices.length != 2) {
continue;
}
var mpIndex = parseInt(mpIndices[1]);
var description = WMEURMPT.MPList[mpIndex].type == "turnProblem" ? "Turn Problem" : WMEURMPT.getFullMPTypeFromType(WMEURMPT.MPList[mpIndex].data.subType);
if (description == null) {
continue;
}
if (description.length <= WMEURMPT.MPDescriptionMaxLength) {
continue;
}
if (typeof WMEURMPT.MPList[mpIndex].data.descriptionOffset === "undefined") {
WMEURMPT.MPList[mpIndex].data.descriptionOffset = -10;
}
var pos = WMEURMPT.MPList[mpIndex].data.descriptionOffset;
if (WMEURMPT.MPList[mpIndex].data.descriptionOffset < 0) {
pos = 0;
}
var remaining = description.length - pos;
if (remaining < 10) {
spanText.innerHTML = WMEURMPT.escapeHtml(description.substr(0, WMEURMPT.MPDescriptionMaxLength));
WMEURMPT.MPList[mpIndex].data.descriptionOffset = -10;
} else {
if (remaining < WMEURMPT.MPDescriptionMaxLength) {
WMEURMPT.MPList[mpIndex].data.descriptionOffset++;
} else {
if (WMEURMPT.MPList[mpIndex].data.descriptionOffset > 0) {
spanText.innerHTML = WMEURMPT.escapeHtml(description.substr(WMEURMPT.MPList[mpIndex].data.descriptionOffset + 1, WMEURMPT.MPDescriptionMaxLength));
}
WMEURMPT.MPList[mpIndex].data.descriptionOffset++;
}
}
}
}
}
if (mc_table) {
if (mc_table.children.length >= 2) {
var lines = mc_table.children[1].children;
var spanText = null;
for (var i = 0; i < lines.length; i++) {
[{index:2, att:"subject", maxl:WMEURMPT.MCSubjectMaxLength}, {index:3, att:"body", maxl:WMEURMPT.MCBodyMaxLength}].forEach(function(child) {
spanText = lines[i].children[child.index].firstChild;
if (spanText == null) {
return;
}
if (typeof spanText === "undefined") {
return;
}
var mcIndices = lines[i].id.match(/mct-tr-([0-9]+)/);
if (mcIndices.length != 2) {
return;
}
var mcIndex = parseInt(mcIndices[1]);
var theMC = WMEURMPT.MCList[mcIndex];
if (theMC.data[child.att] == null) {
return;
}
if (theMC.data[child.att].length <= child.maxl) {
return;
}
if (typeof theMC.data[child.att + "Offset"] === "undefined") {
theMC.data[child.att + "Offset"] = -10;
}
var pos = theMC.data[child.att + "Offset"];
if (theMC.data[child.att + "Offset"] < 0) {
pos = 0;
}
var text = theMC.data[child.att];
var remaining = theMC.data[child.att].length - pos;
if (remaining < 10) {
spanText.innerHTML = WMEURMPT.escapeHtml(text.substr(0, child.maxl));
theMC.data[child.att + "Offset"] = -10;
} else {
if (remaining < child.maxl) {
theMC.data[child.att + "Offset"]++;
} else {
if (theMC.data[child.att + "Offset"] > 0) {
spanText.innerHTML = WMEURMPT.escapeHtml(text.substr(theMC.data[child.att + "Offset"] + 1, child.maxl));
}
theMC.data[child.att + "Offset"]++;
}
}
});
}
}
}
if (pur_table) {
if (pur_table.children.length >= 2) {
var lines = pur_table.children[1].children;
var spanText = null;
for (var i = 0; i < lines.length; i++) {
[{index:3, att:"categories", maxl:WMEURMPT.PURCategoriesMaxLength}, {index:4, att:"name", maxl:WMEURMPT.PURNameMaxLength}].forEach(function(child) {
spanText = lines[i].children[child.index].firstChild;
if (spanText == null) {
return;
}
if (typeof spanText === "undefined") {
return;
}
var purIndices = lines[i].id.match(/purt-tr-([0-9]+)/);
if (purIndices.length != 2) {
return;
}
var purIndex = parseInt(purIndices[1]);
var thePUR = WMEURMPT.PURList[purIndex];
if (thePUR.data[child.att] == null) {
return;
}
if (child.att == "categories") {
var categories = "";
for (var n = 0; n < WMEURMPT.PURList[purIndex].data.categories.length; n++) {
categories += WMEURMPT.getPURCategoriesFromCategories(WMEURMPT.PURList[purIndex].data.categories[n]) + " ";
}
if (categories.length <= child.maxl) {
return;
}
if (typeof thePUR.data.categoriesOffset === "undefined") {
thePUR.data.categoriesOffset = -10;
}
var pos = thePUR.data.categoriesOffset;
if (thePUR.data.categoriesOffset < 0) {
pos = 0;
}
var text = categories;
var remaining = categories.length - pos;
if (remaining < 10) {
spanText.innerHTML = WMEURMPT.escapeHtml(text.substr(0, child.maxl));
thePUR.data.categoriesOffset = -10;
} else {
if (remaining < child.maxl) {
thePUR.data.categoriesOffset++;
} else {
if (thePUR.data.categoriesOffset > 0) {
spanText.innerHTML = WMEURMPT.escapeHtml(text.substr(thePUR.data.categoriesOffset + 1, child.maxl));
}
thePUR.data.categoriesOffset++;
}
}
}
if (child.att == "name") {
if (thePUR.data[child.att].length <= child.maxl) {
return;
}
if (typeof thePUR.data[child.att + "Offset"] === "undefined") {
thePUR.data[child.att + "Offset"] = -10;
}
var pos = thePUR.data[child.att + "Offset"];
if (thePUR.data[child.att + "Offset"] < 0) {
pos = 0;
}
var text = thePUR.data[child.att];
var remaining = thePUR.data[child.att].length - pos;
if (remaining < 10) {
spanText.innerHTML = WMEURMPT.escapeHtml(text.substr(0, child.maxl));
thePUR.data[child.att + "Offset"] = -10;
} else {
if (remaining < child.maxl) {
thePUR.data[child.att + "Offset"]++;
} else {
if (thePUR.data[child.att + "Offset"] > 0) {
spanText.innerHTML = WMEURMPT.escapeHtml(text.substr(thePUR.data[child.att + "Offset"] + 1, child.maxl));
}
thePUR.data[child.att + "Offset"]++;
}
}
}
});
}
}
}
window.setTimeout(WMEURMPT.updateLongTextCrop, 150);
};
WMEURMPT.targetMapToUR = function(lon, lat, URId) {
WMEURMPT.log("Target map to UR: " + URId);
WMEURMPT.selectedURID = URId;
WMEURMPT.updateFlashingURs();
var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(parseFloat(lon), parseFloat(lat));
WMEURMPT.wazeMap.setCenter(xy);
URId = parseInt(URId);
WMEURMPT.wazeMap.updateRequestLayer.setVisibility(true);
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectURById, [{URId:URId, attempts:0}]), 250);
};
WMEURMPT.targetMapToMP = function(lon, lat, MPId) {
WMEURMPT.log("Target map to MP: " + MPId);
WMEURMPT.selectedMPID = MPId;
WMEURMPT.updateFlashingMPs();
var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(lon, lat);
WMEURMPT.wazeMap.setCenter(xy);
WMEURMPT.wazeMap.problemLayer.setVisibility(true);
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectMPById, [{MPId:MPId, attempts:0}]), 250);
};
WMEURMPT.targetMapToMC = function(lon, lat, MCId) {
WMEURMPT.log("Target map to MC: " + MCId);
WMEURMPT.selectedMCID = MCId;
WMEURMPT.updateFlashingMCs();
var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(lon, lat);
WMEURMPT.wazeMap.setCenter(xy);
WMEURMPT.wazeMap.getLayerByUniqueName("mapComments").setVisibility(true);
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectMCById, [{MCId:MCId, attempts:0}]), 250);
};
WMEURMPT.targetMapToPUR = function(lon, lat, PURId) {
WMEURMPT.log("Target map to PUR: " + PURId);
WMEURMPT.selectedPURID = PURId;
WMEURMPT.updateFlashingPURs();
var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(lon, lat);
WMEURMPT.wazeMap.setCenter(xy);
WMEURMPT.wazeMap.getLayerByUniqueName("place_updates").setVisibility(true);
WMEURMPT.wazeMap.getLayerByUniqueName("venues").setVisibility(true);
WMEURMPT.wazeMap.getLayerByUniqueName("PARKING_PLACE_UPDATES").setVisibility(true);
WMEURMPT.wazeMap.getLayerByUniqueName("RESIDENTIAL_PLACE_UPDATES").setVisibility(true);
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectPURById, [{PURId:PURId, attempts:0}]), 250);
};
WMEURMPT.selectURById = function(URId) {
if (URId.attempts > 10) {
WMEURMPT.log("Can't select UR " + URId.URId);
return;
}
if (URId.attempts == 0) {
if (WMEURMPT.wazeMap.panelRegion.hasOwnProperty("currentView")) {
WMEURMPT.wazeMap.panelRegion.currentView.destroy();
}
}
WMEURMPT.wazeModel.updateRequestSessions.getAsync([URId.URId]);
var session = WMEURMPT.wazeModel.updateRequestSessions.objects[URId.URId];
var ur = WMEURMPT.wazeModel.mapUpdateRequests.getObjectById(URId.URId);
if (ur != null && session != null) {
WMEURMPT.logDebug("Select UR by ID: " + URId.URId);
if (WMEURMPT.wazeMap.updateRequestLayer.featureMarkers.hasOwnProperty(URId.URId)) {
WMEURMPT.wazeMap.updateRequestLayer.featureMarkers[URId.URId].marker.icon.imageDiv.click();
var htmlSelectedUR = document.getElementsByClassName("selected")[0];
var htmlSelectedURID = parseInt(htmlSelectedUR.getAttribute("data-id"));
WMEURMPT.logDebug("selectURById htmlSelectedURID: ", htmlSelectedURID);
if (URId.URId != htmlSelectedURID) {
WMEURMPT.log("URs " + URId.URId + " & " + htmlSelectedURID + " Stacked !: ");
var offset = 100000;
var htmlSelectedURAtt = WMEURMPT.wazeModel.mapUpdateRequests.objects[htmlSelectedURID].attributes;
if (htmlSelectedURAtt.geometry.oriX === undefined) {
WMEURMPT.stackedUR.id = htmlSelectedURID;
WMEURMPT.stackedUR.oriX = htmlSelectedURAtt.geometry.x;
WMEURMPT.stackedUR.oriY = htmlSelectedURAtt.geometry.y;
WMEURMPT.stackedURList.push(WMEURMPT.stackedUR);
htmlSelectedURAtt.geometry.oriX = htmlSelectedURAtt.geometry.x;
htmlSelectedURAtt.geometry.x += offset;
htmlSelectedURAtt.geometry.oriY = htmlSelectedURAtt.geometry.y;
htmlSelectedURAtt.geometry.y += offset;
offset += 1000;
}
if (WMEURMPT.wazeMap.panelRegion.hasOwnProperty("currentView")) {
WMEURMPT.wazeMap.panelRegion.currentView.destroy();
}
URId.attempts++;
WMEURMPT.log("Can not select UR " + URId.URId + ". Trying again " + URId.attempts + "/10...");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectURById, [URId]), 100);
return;
}
WMEURMPT.URVisited(URId.URId);
WMEURMPT.currentURID = URId.URId;
WMEURMPT.setupFollowAndSendListner();
window.setTimeout(WMEURMPT.openConversationPannel, 100);
WMEURMPT.log("UR selected: " + WMEURMPT.currentURID);
window.setTimeout(WMEURMPT.restackUR, 250);
}
if (!WMEURMPT.isAutoScan) {
var theUR = WMEURMPT.getURFromId(URId.URId);
theUR.refreshFromWMEData(true);
WMEURMPT.updateIHMFromURList();
} else {
WMEURMPT.newDataAvailableStarts();
}
return;
}
URId.attempts++;
WMEURMPT.log("Can not select UR " + URId.URId + ". Trying again " + URId.attempts + "/10...");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectURById, [URId]), 100);
};
WMEURMPT.selectMPById = function(MPId) {
if (MPId.attempts > 10) {
WMEURMPT.log("Can't select MP " + MPId.MPId);
return;
}
if (MPId.attempts == 0) {
if (WMEURMPT.wazeMap.panelRegion.hasOwnProperty("currentView")) {
WMEURMPT.wazeMap.panelRegion.currentView.destroy();
}
}
var mp = WMEURMPT.wazeModel.problems.getObjectById(MPId.MPId);
var tp = null;
WMEURMPT.logDebug("mp :", mp);
if (mp != null) {
if (WMEURMPT.wazeMap.problemLayer.featureMarkers.hasOwnProperty(MPId.MPId)) {
WMEURMPT.wazeMap.problemLayer.featureMarkers[MPId.MPId].marker.icon.imageDiv.click();
}
}
if (mp != null) {
WMEURMPT.MPVisited(MPId.MPId);
WMEURMPT.currentMPID = MPId.MPId;
WMEURMPT.newDataAvailableStarts();
return;
}
MPId.attempts++;
WMEURMPT.log("Can not select MP " + MPId.MPId + ". Trying again " + MPId.attempts + "/10...");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectMPById, [MPId]), 100);
};
WMEURMPT.selectMCById = function(MCId) {
if (MCId.attempts > 10) {
WMEURMPT.log("Can't select MC " + MCId.MCId);
return;
}
if (MCId.attempts == 0) {
if (WMEURMPT.wazeMap.panelRegion.hasOwnProperty("currentView")) {
WMEURMPT.wazeMap.panelRegion.currentView.destroy();
}
}
var mc = WMEURMPT.wazeModel.mapComments.getObjectById(MCId.MCId);
WMEURMPT.logDebug("mc :", mc);
if (mc != null) {
WMEURMPT.MCVisited(MCId.MCId);
WMEURMPT.currentMCID = MCId.MCId;
WMEURMPT.newDataAvailableStarts();
W.selectionManager.setSelectedModels([WMEURMPT.wazeModel.mapComments.getObjectById(MCId.MCId)]);
return;
}
MCId.attempts++;
WMEURMPT.log("Can not select MC " + MCId.MCId + ". Trying again " + MCId.attempts + "/10...");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectMCById, [MCId]), 100);
};
WMEURMPT.selectPURById = function(PURId) {
if (PURId.attempts > 10) {
WMEURMPT.log("Can't select PUR " + PURId.PURId);
return;
}
if (PURId.attempts == 0) {
if (WMEURMPT.wazeMap.panelRegion.hasOwnProperty("currentView")) {
WMEURMPT.wazeMap.panelRegion.currentView.destroy();
}
}
var pur = WMEURMPT.wazeModel.venues.getObjectById(PURId.PURId);
WMEURMPT.logDebug("pur :", pur);
if (pur != null) {
WMEURMPT.PURVisited(PURId.PURId);
WMEURMPT.currentPURID = PURId.PURId;
WMEURMPT.newDataAvailableStarts();
W.selectionManager.setSelectedModels([WMEURMPT.wazeModel.venues.getObjectById(PURId.PURId)]);
return;
}
PURId.attempts++;
WMEURMPT.log("Can not select PUR " + PURId.PURId + ". Trying again " + PURId.attempts + "/10...");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.selectPURById, [PURId]), 100);
};
WMEURMPT.newDataAvailableStarts = function() {
if (WMEURMPT.isScanningWME) {
return;
}
if (!WMEURMPT.isAutoScan) {
var urID = WMEURMPT.getSelectedUR();
WMEURMPT.log("scan only selected: UR: " + urID);
if (urID != null) {
var theUR = WMEURMPT.getURFromId(urID);
if (theUR != null) {
theUR.refreshFromWMEData(true);
WMEURMPT.updateIHMFromURList();
}
}
var mpID = WMEURMPT.getSelectedProblem();
WMEURMPT.log("scan only selected: MP: " + mpID);
if (mpID != null) {
var theMP = WMEURMPT.getMPFromId(mpID);
if (theMP != null) {
theMP.refreshFromWMEData();
WMEURMPT.updateIHMFromMPList();
}
}
var mcID = WMEURMPT.getSelectedMC();
WMEURMPT.log("scan only selected: MC: " + mcID);
if (mcID != null && typeof mcID == "string") {
var theMC = WMEURMPT.getMCFromId(mcID);
if (theMC != null) {
theMC.refreshFromWMEData();
WMEURMPT.updateIHMFromMCList();
} else {
theMC = WMEURMPT.getNewMC(mcID);
}
}
var purID = WMEURMPT.getSelectedPUR();
WMEURMPT.log("scan only selected: PUR: " + purID);
if (purID != null) {
var thePUR = WMEURMPT.getPURFromId(purID);
if (thePUR != null) {
thePUR.refreshFromWMEData();
}
}
return;
}
WMEURMPT.isScanningWME = true;
WMEURMPT.newDataAvailable(0);
};
WMEURMPT.newDataAvailable = function(i) {
try {
var URs = WMEURMPT.wazeModel.mapUpdateRequests.getObjectArray();
var MPs = WMEURMPT.wazeModel.problems.getObjectArray();
var MCs = WMEURMPT.wazeModel.mapComments.getObjectArray();
var POIs = WMEURMPT.wazeModel.venues.getObjectArray();
var PURs = [];
for (var n = 0; n < POIs.length; n++) {
if (POIs[n].attributes.hasOwnProperty("venueUpdateRequests") && POIs[n].attributes.venueUpdateRequests.length >> 0) {
PURs.push(POIs[n].attributes);
}
}
var urcount = URs.length;
var mpcount = MPs.length;
var mccount = MCs.length;
var purcount = PURs.length;
var count = urcount + mpcount + mccount + purcount;
WMEURMPT.log("new data available: i/count:" + i + "/" + count);
var pb = new WMEURMPT.ProgressBar(WMEURMPT.getId("urt-progressBar"));
if (i == 0) {
WMEURMPT.log("Starting WME data scan...");
pb.update(0);
pb.show();
WMEURMPT.showPBInfo(true);
WMEURMPT.info("Scanning...");
}
if (i >= count) {
WMEURMPT.log("WME data scan ended");
WMEURMPT.updateRequestSessions();
WMEURMPT.isScanningWME = false;
WMEURMPT.showPBInfo(false);
pb.hide();
pb.update(0);
WMEURMPT.info();
WMEURMPT.updateIHMFromURList();
WMEURMPT.updateIHMFromMPList();
WMEURMPT.updateIHMFromMCList();
WMEURMPT.updateIHMFromPURList();
WMEURMPT.saveURMPLists();
return;
}
pb.update(Math.round(i / count * 100));
if (i < urcount) {
var index = i;
var URId = URs[index].attributes.id;
var theUR = WMEURMPT.getURFromId(URId);
if (WMEURMPT.ul < WMEURMPT.rl4cp && URs[index].attributes.open == false) {
if (theUR != null) {
WMEURMPT.URList.splice(WMEURMPT.URMap[URId], 1);
WMEURMPT.URMap = WMEURMPT.listToObject(WMEURMPT.URList);
}
} else {
WMEURMPT.logDebug("scan WME: the ur: ", theUR);
WMEURMPT.logDebug("scan WME: the ur index: ", URs[index]);
var URxy = new OpenLayers.Geometry.Point(URs[index].geometry.x, URs[index].geometry.y);
var URLonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(URs[index].geometry.x, URs[index].geometry.y);
if (WMEURMPT.inScreenUpdatableArea(URxy) || WMEURMPT.isInAreas(URLonlat)) {
WMEURMPT.logDebug("scan WME: in screen");
if (theUR == null) {
theUR = new WMEURMPT.URT_UR(URs[index].attributes.id, URLonlat.lon, URLonlat.lat);
if (theUR.refreshFromWMEData(false)) {
WMEURMPT.logDebug("scan WME: added");
WMEURMPT.URList.push(theUR);
WMEURMPT.URMap = WMEURMPT.listToObject(WMEURMPT.URList);
} else {
WMEURMPT.logDebug("scan WME: NOT added");
}
} else {
theUR.refreshFromWMEData(false);
}
} else {
if (theUR != null) {
WMEURMPT.URList.splice(WMEURMPT.URMap[URId], 1);
WMEURMPT.URMap = WMEURMPT.listToObject(WMEURMPT.URList);
}
}
}
} else {
if (i - urcount < mpcount) {
var index = i - urcount;
var MPId = MPs[index].attributes.id;
var theMP = WMEURMPT.getMPFromId(MPId);
if (WMEURMPT.ul < WMEURMPT.rl4cp && MPs[index].attributes.open == false) {
if (theMP != null) {
WMEURMPT.MPList.splice(WMEURMPT.MPMap[MPId], 1);
WMEURMPT.MPMap = WMEURMPT.listToObject(WMEURMPT.MPList);
}
} else {
var MPxy = new OpenLayers.Geometry.Point(MPs[index].geometry.x, MPs[index].geometry.y);
var MPLonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(MPs[index].geometry.x, MPs[index].geometry.y);
if (WMEURMPT.inScreenUpdatableArea(MPxy) || WMEURMPT.isInAreas(MPLonlat)) {
if (theMP == null) {
theMP = new WMEURMPT.URT_MP(MPs[index].attributes.id, MPLonlat.lon, MPLonlat.lat);
if (theMP.refreshFromWMEData()) {
WMEURMPT.MPList.push(theMP);
WMEURMPT.MPMap = WMEURMPT.listToObject(WMEURMPT.MPList);
}
} else {
theMP.refreshFromWMEData();
}
} else {
if (theMP != null) {
WMEURMPT.MPList.splice(WMEURMPT.MPMap[MPId], 1);
WMEURMPT.MPMap = WMEURMPT.listToObject(WMEURMPT.MPList);
}
}
}
} else {
if (i - urcount - mpcount < mccount) {
var index = i - urcount - mpcount;
var MCId = MCs[index].attributes.id;
var theMC = WMEURMPT.getMCFromId(MCId);
var MCxy = new OpenLayers.Geometry.Point(MCs[index].geometry.getCentroid().x, MCs[index].geometry.getCentroid().y);
var MCLonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(MCs[index].geometry.getCentroid().x, MCs[index].geometry.getCentroid().y);
if (WMEURMPT.inScreenUpdatableArea(MCxy) || WMEURMPT.isInAreas(MCLonlat)) {
WMEURMPT.log("in area");
if (theMC == null) {
theMC = new WMEURMPT.URT_MC(MCs[index].attributes.id, MCLonlat.lon, MCLonlat.lat);
if (theMC.refreshFromWMEData()) {
WMEURMPT.MCList.push(theMC);
WMEURMPT.MCMap = WMEURMPT.listToObject(WMEURMPT.MPList);
}
} else {
theMC.refreshFromWMEData();
}
} else {
WMEURMPT.log("not in area");
if (theMC != null) {
WMEURMPT.MCList.splice(WMEURMPT.MCMap[MCId], 1);
WMEURMPT.MCMap = WMEURMPT.listToObject(MCList);
}
}
} else {
var index = i - urcount - mpcount - mccount;
var PURId = PURs[index].id;
var thePUR = WMEURMPT.getPURFromId(PURId);
var PURxy = new OpenLayers.Geometry.Point(PURs[index].geometry.getCentroid().x, PURs[index].geometry.getCentroid().y);
var PURLonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(PURs[index].geometry.getCentroid().x, PURs[index].geometry.getCentroid().y);
if (WMEURMPT.inScreenUpdatableArea(PURxy) || WMEURMPT.isInAreas(PURLonlat)) {
WMEURMPT.log("in area");
if (thePUR == null) {
thePUR = new WMEURMPT.URT_PUR(PURs[index].id, PURLonlat.lon, PURLonlat.lat);
if (thePUR.refreshFromWMEData()) {
WMEURMPT.PURList.push(thePUR);
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
}
} else {
thePUR.refreshFromWMEData();
}
} else {
WMEURMPT.log("not in area");
if (thePUR != null) {
WMEURMPT.PURList.splice(WMEURMPT.PURMap[PURId], 1);
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
}
}
}
}
}
i++;
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.newDataAvailable, [i]), 0);
} catch (err) {
WMEURMPT.log("Warning during auto scan probably due to a map move or a map zoom changed before end of scan: ", err);
WMEURMPT.isScanningWME = false;
WMEURMPT.showPBInfo(false);
pb.hide();
pb.update(0);
WMEURMPT.info();
window.setTimeout(WMEURMPT.newDataAvailableStarts, 1000);
}
};
WMEURMPT.setupListener = function() {
var urs = WMEURMPT.getElementsByClassName("map-problem");
for (var i = 0; i < urs.length; i++) {
var ur = urs[i];
ur.addEventListener("click", WMEURMPT.clickUR, false);
}
var purs = WMEURMPT.getElementsByClassName("place-update");
for (var i = 0; i < purs.length; i++) {
var pur = purs[i];
pur.addEventListener("click", WMEURMPT.clickPUR, false);
}
};
WMEURMPT.clickUR = function() {
if (typeof this.tagName !== "undefined" && this.tagName == "DIV") {
if (this.className.indexOf("user-generated") == -1 && this.className.indexOf("has-comments") == -1) {
WMEURMPT.currentMPID = this.getAttribute("data-id");
WMEURMPT.selectedMPID = WMEURMPT.currentMPID;
WMEURMPT.MPVisited(WMEURMPT.currentMPID);
WMEURMPT.log("MP clicked: " + WMEURMPT.currentMPID);
var mp = WMEURMPT.getMPFromId(WMEURMPT.currentMPID);
if (mp) {
mp.refreshFromWMEData();
}
WMEURMPT.updateIHMFromMPList();
} else {
WMEURMPT.currentURID = parseInt(this.getAttribute("data-id"));
WMEURMPT.URVisited(WMEURMPT.currentURID);
WMEURMPT.logDebug("current UR ID: " + WMEURMPT.currentURID);
WMEURMPT.setupFollowAndSendListner();
WMEURMPT.selectedURID = WMEURMPT.currentURID;
WMEURMPT.log("UR clicked: " + WMEURMPT.currentURID);
var ur = WMEURMPT.getURFromId(WMEURMPT.currentURID);
WMEURMPT.logDebug("clickUR ur: ", ur);
if (ur) {
ur.refreshFromWMEData();
} else {
if (ur == null) {
var theUR = WMEURMPT.wazeModel.mapUpdateRequests.getObjectById(WMEURMPT.currentURID);
WMEURMPT.logDebug("clickUR - theUR: ", theUR);
if (theUR.geometry.hasOwnProperty("realX") && theUR.geometry.hasOwnProperty("realY")) {
var URLonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(theUR.geometry.realX, theUR.geometry.realY);
} else {
var URLonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(theUR.geometry.x, theUR.geometry.y);
}
WMEURMPT.logDebug("clickUR - lonlat: ", URLonlat);
ur = new WMEURMPT.URT_UR(theUR.attributes.id, URLonlat.lon, URLonlat.lat);
WMEURMPT.logDebug("clickUR - ur: ", ur);
if (ur.refreshFromWMEData()) {
WMEURMPT.URList.push(ur);
WMEURMPT.URMap = WMEURMPT.listToObject(WMEURMPT.URList);
}
}
}
WMEURMPT.updateIHMFromURList();
}
}
};
WMEURMPT.clickPUR = function() {
WMEURMPT.logDebug("PUR clicked: ", this);
WMEURMPT.currentPURID = this.getAttribute("data-id");
WMEURMPT.selectedPURID = WMEURMPT.currentPURID;
WMEURMPT.PURVisited(WMEURMPT.currentPURID);
WMEURMPT.log("PUR clicked: " + WMEURMPT.currentPURID, this);
var pur = WMEURMPT.getPURFromId(WMEURMPT.currentPURID);
if (pur) {
pur.refreshFromWMEData();
} else {
if (pur == null) {
var thePUR = WMEURMPT.wazeModel.venues.objects[WMEURMPT.currentPURID];
var lonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(thePUR.attributes.geometry.getCentroid().x, thePUR.attributes.geometry.getCentroid().y);
WMEURMPT.logDebug("clickPUR - lonlat: ", lonlat);
pur = new WMEURMPT.URT_PUR(thePUR.attributes.id, lonlat.lon, lonlat.lat);
WMEURMPT.logDebug("clickPUR - pur: ", pur);
if (pur.refreshFromWMEData()) {
WMEURMPT.PURList.push(pur);
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
}
}
}
WMEURMPT.updateIHMFromPURList();
};
WMEURMPT.getNewMC = function(mcID) {
WMEURMPT.currentMCID = mcID;
WMEURMPT.selectedMCID = WMEURMPT.currentMCID;
WMEURMPT.MCVisited(WMEURMPT.currentMCID);
WMEURMPT.log("New MC: " + WMEURMPT.currentMCID);
var mc = WMEURMPT.getMCFromId(WMEURMPT.currentMCID);
if (mc) {
mc.refreshFromWMEData();
} else {
if (mc == null) {
var theMC = WMEURMPT.wazeModel.mapComments.objects[WMEURMPT.currentMCID];
var lonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(theMC.attributes.geometry.getCentroid().x, theMC.attributes.geometry.getCentroid().y);
mc = new WMEURMPT.URT_MC(theMC.attributes.id, lonlat.lon, lonlat.lat);
if (mc.refreshFromWMEData()) {
WMEURMPT.MCList.push(mc);
WMEURMPT.MCMap = WMEURMPT.listToObject(WMEURMPT.MCList);
}
}
}
WMEURMPT.updateIHMFromMCList();
};
WMEURMPT.setupFollowAndSendListner = function() {
var followPatched = false;
var sendPatched = false;
var btnFollow = document.getElementsByName("follow")[0];
if (btnFollow != null) {
if (typeof btnFollow.urt_listener === "undefined") {
btnFollow.addEventListener("change", WMEURMPT.clickFollowUR, false);
btnFollow.urt_listener = true;
followPatched = true;
}
}
var commentForm = WMEURMPT.getElementsByClassName("new-comment-form")[0];
var btnsSend = WMEURMPT.getElementsByClassName("send-button", commentForm);
if (btnsSend.length == 1) {
var btnSend = btnsSend[0];
if (typeof btnSend.urt_listener === "undefined") {
btnSend.addEventListener("click", function() {
window.setTimeout(WMEURMPT.conversationSent, 400);
}, false);
btnSend.urt_listener = true;
sendPatched = true;
}
}
if (!followPatched || !sendPatched) {
window.setTimeout(WMEURMPT.setupFollowAndSendListner, 200);
}
};
WMEURMPT.conversationSent = function() {
var ur = WMEURMPT.getURFromId(WMEURMPT.currentURID);
if (ur != null && WMEURMPT.wazeMap.panelRegion.currentView.conversationView !== undefined) {
if (WMEURMPT.wazeMap.panelRegion.currentView.conversationView && ur.data.session.comments.length == WMEURMPT.wazeMap.panelRegion.currentView.conversationView.viewModel.attributes.commentCount) {
WMEURMPT.log("Comment is updated...");
} else {
if (WMEURMPT.wazeMap.panelRegion.currentView.conversationView) {
WMEURMPT.log("update Comment and refresh...");
ur.refreshFromWMEData(true);
ur.lastVisitCommentsCount = ur.data.session.comments.length;
WMEURMPT.updateIHMFromURList();
}
}
}
};
WMEURMPT.clickFollowUR = function() {
WMEURMPT.logDebug("FOLLOW or UNFOLLOW. That is the question");
if (!this.checked) {
WMEURMPT.log("Now: unfollow " + WMEURMPT.currentURID);
var ur = WMEURMPT.getURFromId(WMEURMPT.currentURID);
if (ur != null) {
ur.data.session.isFollowing = false;
WMEURMPT.updateIHMFromURList();
}
} else {
WMEURMPT.log("Now: follow " + WMEURMPT.currentURID);
var ur = WMEURMPT.getURFromId(WMEURMPT.currentURID);
if (ur != null) {
ur.data.session.isFollowing = true;
WMEURMPT.URBlackListed(WMEURMPT.currentURID, false);
WMEURMPT.URVisited(WMEURMPT.currentURID);
WMEURMPT.updateIHMFromURList();
}
}
};
WMEURMPT.openConversationPannel = function() {
var btnConversations = WMEURMPT.getElementsByClassName("btn btn-default toggle-comment-view");
if (btnConversations.length != 1) {
window.setTimeout(WMEURMPT.openConversationPannel, 100);
return;
}
var btnConversation = btnConversations[0];
if (btnConversation.className == "btn btn-default toggle-comment-view comment-view-shown") {
return;
}
btnConversation.click();
};
WMEURMPT.saveStarted = function() {
WMEURMPT.visitedURBeforeActionsSaved.length = 0;
WMEURMPT.visitedMPBeforeActionsSaved.length = 0;
WMEURMPT.visitedTPBeforeActionsSaved.length = 0;
WMEURMPT.visitedPURBeforeActionsSaved.length = 0;
var actions = WMEURMPT.wazeModel.actionManager.getActions();
for (var i = 0; i < actions.length; i++) {
if (actions[i].CLASS_NAME == "Waze.Action.UpdateRequest") {
WMEURMPT.visitedURBeforeActionsSaved.push(actions[i].request.attributes.id);
}
if (actions[i].CLASS_NAME == "Waze.Action.UpdateProblem") {
if (actions[i].problem.type == "mapProblem") {
WMEURMPT.visitedMPBeforeActionsSaved.push(actions[i].problem.attributes.id);
}
if (actions[i].problem.type != "mapProblem" && actions[i].problem.type != "turnProblem") {
WMEURMPT.log("Error while detecting update problem operation on: ", WMEURMPT.wazeModel.actionManager.actions[i]);
}
}
}
};
WMEURMPT.saveEnded = function() {
for (var i = 0; i < WMEURMPT.visitedURBeforeActionsSaved.length; i++) {
WMEURMPT.log("save UR: " + WMEURMPT.visitedURBeforeActionsSaved[i]);
var ur = WMEURMPT.getURFromId(WMEURMPT.visitedURBeforeActionsSaved[i]);
if (ur != null) {
WMEURMPT.logDebug("save UR Action: id=" + WMEURMPT.visitedURBeforeActionsSaved[i] + " found");
var refreshStatus = ur.refreshFromWMEData(true);
if (!refreshStatus) {
refreshStatus = ur.refreshFromServer();
if (refreshStatus == true || refreshStatus == null) {
WMEURMPT.logDebug("save UR Action: id=" + WMEURMPT.visitedURBeforeActionsSaved[i] + " refresh ok: " + refreshStatus);
ur.blackListed = false;
ur.alreadyVisited = true;
} else {
WMEURMPT.logDebug("save UR Action: id=" + WMEURMPT.visitedURBeforeActionsSaved[i] + " No change found");
}
}
} else {
WMEURMPT.logDebug("save UR Action: id=" + WMEURMPT.visitedURBeforeActionsSaved[i] + " not found");
}
}
for (var i = 0; i < WMEURMPT.visitedMPBeforeActionsSaved.length; i++) {
WMEURMPT.log("save MP: " + WMEURMPT.visitedMPBeforeActionsSaved[i]);
var mp = WMEURMPT.getMPFromId(WMEURMPT.visitedMPBeforeActionsSaved[i]);
if (mp != null) {
WMEURMPT.logDebug("save MP Action: id=" + WMEURMPT.visitedMPBeforeActionsSaved[i] + " found");
var refreshStatus = mp.refreshFromWMEData();
if (!refreshStatus) {
refreshStatus = mp.refreshFromServer();
if (refreshStatus == true || refreshStatus == null) {
WMEURMPT.logDebug("save MP Action: id=" + WMEURMPT.visitedMPBeforeActionsSaved[i] + " refresh ok: " + refreshStatus);
mp.blackListed = false;
mp.alreadyVisited = true;
} else {
WMEURMPT.logDebug("save MP Action: id=" + WMEURMPT.visitedMPBeforeActionsSaved[i] + " No change found");
}
}
} else {
WMEURMPT.logDebug("save MP Action: id=" + WMEURMPT.visitedMPBeforeActionsSaved[i] + " not found");
}
}
for (var i = 0; i < WMEURMPT.visitedTPBeforeActionsSaved.length; i++) {
WMEURMPT.log("save MP (TP): " + WMEURMPT.visitedTPBeforeActionsSaved[i]);
var mp = WMEURMPT.getMPFromId(WMEURMPT.visitedTPBeforeActionsSaved[i]);
if (mp != null) {
WMEURMPT.logDebug("save TP Action: id=" + WMEURMPT.visitedTPBeforeActionsSaved[i] + " found");
var refreshStatus = mp.refreshFromWMEData();
if (!refreshStatus) {
refreshStatus = mp.refreshFromServer();
if (refreshStatus == true || refreshStatus == null) {
WMEURMPT.logDebug("save TP Action: id=" + WMEURMPT.visitedTPBeforeActionsSaved[i] + " refresh ok: " + refreshStatus);
mp.blackListed = false;
mp.alreadyVisited = true;
} else {
WMEURMPT.logDebug("save TP Action: id=" + WMEURMPT.visitedTPBeforeActionsSaved[i] + " No change found");
}
}
} else {
WMEURMPT.logDebug("save TP Action: id=" + WMEURMPT.visitedTPBeforeActionsSaved[i] + " not found");
}
}
WMEURMPT.updateIHMFromURList();
WMEURMPT.updateIHMFromMPList();
};
WMEURMPT.newActionAdded = function(lastAction) {
WMEURMPT.logDebug("Action added:", lastAction);
lastAction = lastAction.action;
WMEURMPT.logDebug("Action added lastAction :", lastAction);
if (lastAction.hasOwnProperty("object") && lastAction.object.hasOwnProperty("type") && lastAction.object.type == "mapProblem") {
var mp = WMEURMPT.getMPFromId(lastAction.attributes.id);
if (mp == null) {
return;
}
mp.refreshFromWMEData();
if (mp.data.open == true) {
mp.data.resolvedOn = null;
mp.data.resolvedBy = null;
mp.data.resolvedByName = null;
} else {
var now = new Date;
mp.data.resolvedOn = now.getTime();
mp.data.resolvedBy = WMEURMPT.me.id;
mp.data.resolvedByName = WMEURMPT.me.userName;
}
WMEURMPT.updateIHMFromMPList();
}
if (lastAction.hasOwnProperty("object") && lastAction.object.hasOwnProperty("type") && lastAction.object.type == "mapUpdateRequest") {
var ur = WMEURMPT.getURFromId(lastAction.attributes.id);
if (ur == null) {
return;
}
ur.refreshFromWMEData(true);
if (ur.data.open == true) {
ur.data.resolvedOn = null;
ur.data.resolvedBy = null;
ur.data.resolvedByName = null;
} else {
var now = new Date;
ur.data.resolvedOn = now.getTime();
ur.data.resolvedBy = WMEURMPT.me.id;
ur.data.resolvedByName = WMEURMPT.me.userName;
}
WMEURMPT.updateIHMFromURList();
}
if (lastAction.hasOwnProperty("request") && lastAction.request.attributes.hasOwnProperty("approved")) {
var pur = WMEURMPT.getPURFromId(lastAction.venue.attributes.id);
if (pur) {
pur.refreshFromWMEData();
}
if (pur === null) {
var lonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(lastAction.venue.attributes.geometry.getCentroid().x, lastAction.venue.attributes.geometry.getCentroid().y);
pur = new WMEURMPT.URT_PUR(lastAction.venue.attributes.id, lonlat.lon, lonlat.lat);
if (pur.refreshFromWMEData()) {
WMEURMPT.PURList.push(pur);
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
}
}
WMEURMPT.updateIHMFromPURList();
}
if (lastAction.hasOwnProperty("object") && lastAction.object.hasOwnProperty("type") && lastAction.object.type == "mapComment") {
if (typeof lastAction.object.attributes.id == "string") {
var mc = WMEURMPT.getMCFromId(lastAction.object.attributes.id);
if (mc) {
mc.refreshFromWMEData();
}
if (mc === null) {
var xy = new OpenLayers.Geometry.Point(lastAction.object.attributes.geometry.bounds.getCenterLonLat().lon, lastAction.object.attributes.geometry.bounds.getCenterLonLat().lat);
var lonlat = OpenLayers.Layer.SphericalMercator.inverseMercator(xy.x, xy.y);
mc = new WMEURMPT.URT_MC(lastAction.object.attributes.id, lonlat.lon, lonlat.lat);
if (mc.refreshFromWMEData()) {
WMEURMPT.MCList.push(mc);
WMEURMPT.MCMap = WMEURMPT.listToObject(WMEURMPT.MCList);
}
}
WMEURMPT.updateIHMFromMCList();
}
}
};
WMEURMPT.getMPs = function(bounds, filter) {
var url = "https://" + document.location.host + WMEURMPT.wazeConfigApiFeatures + "?language=en" + (WMEURMPT.scanUR ? "&mapUpdateRequestFilter=3%2C0" : "") + (WMEURMPT.scanMP ? "&problemFilter=3%2C3" : "") + "&mapComments=" + (WMEURMPT.scanMC ? "true" : "false") + "&venueLevel=3&venueFilter=" + (WMEURMPT.scanPUR ? "3%2C3%2C3" : "0%2C0%2C0") + "&editableAreas=true&bbox=" + bounds.left + "%2C" + bounds.bottom + "%2C" + bounds.right + "%2C" + bounds.top;
var xhr3_object = null;
if (XMLHttpRequest) {
xhr3_object = new XMLHttpRequest;
} else {
if (ActiveXObject) {
xhr3_object = new ActiveXObject("Microsoft.XMLHTTP");
}
}
var MPs = null;
xhr3_object.open("GET", url, false);
xhr3_object.send(null);
if (xhr3_object.status == 200) {
var r = xhr3_object.responseText;
try {
MPs = JSON.parse(r);
} catch (e) {
WMEURMPT.log("Error: can't read server response: ", e);
WMEURMPT.log("Response from server: ", r);
WMEURMPT.log("Query: ", url);
MPs = null;
}
}
if (MPs == null) {
return null;
}
if (!MPs.hasOwnProperty("mapUpdateRequests") && !MPs.hasOwnProperty("problems") && !MPs.hasOwnProperty("mapComments") && !MPs.hasOwnProperty("venues")) {
return null;
}
if (MPs.hasOwnProperty("mapUpdateRequests") && MPs.mapUpdateRequests.objects.length == 500) {
return {error:1, logMessage:{obj:"mapUpdateRequests", length:500}};
}
if (MPs.hasOwnProperty("problems") && MPs.problems.objects.length == 500) {
return {error:1, logMessage:{obj:"problems", length:500}};
}
if (MPs.hasOwnProperty("mapComments") && MPs.mapComments.objects.length == 500) {
return {error:1, logMessage:{obj:"mapComments", length:500}};
}
if (MPs.hasOwnProperty("venues") && MPs.venues.objects.length >= 1200) {
return {error:1, logMessage:{obj:"venues", length:1200}};
}
if (filter != null) {
var filterArea = [];
if (filter != null && (filter.type == "editableArea" || filter.type == "driveArea" || filter.type == "managedArea")) {
for (var a = 0; a < MPs.userAreas.objects.length; a++) {
filterArea = filterArea.concat(WMEURMPT.wazeMapAreaToOLPolygons(MPs.userAreas.objects[a].geometry));
}
}
if (filter != null && filter.type == "country") {
for (var c = 0; c < WMEURMPT.areaList.country.length; c++) {
if (WMEURMPT.areaList.country[c].name == filter.name) {
filterArea = WMEURMPT.areaList.country[c].geometryOL.geometry.components;
break;
}
}
}
if (filter != null && filter.type == "custom") {
for (var c = 0; c < WMEURMPT.areaList.custom.length; c++) {
if (WMEURMPT.areaList.custom[c].name == filter.name) {
filterArea = WMEURMPT.areaList.custom[c].geometryOL.geometry.components;
break;
}
}
}
var cmp = 0;
if (MPs.hasOwnProperty("problems")) {
while (cmp < MPs.problems.objects.length) {
var theMP = MPs.problems.objects[cmp];
if (WMEURMPT.ul < WMEURMPT.rl4cp && theMP.open == false) {
MPs.problems.objects.splice(cmp, 1);
continue;
}
var lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(theMP.geometry.coordinates[0], theMP.geometry.coordinates[1]);
var xy = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
if (filter.type == "country" || filter.type == "custom") {
xy = new OpenLayers.Geometry.Point(theMP.geometry.coordinates[0], theMP.geometry.coordinates[1]);
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (!inside) {
MPs.problems.objects.splice(cmp, 1);
continue;
}
cmp++;
}
}
cmp = 0;
if (MPs.hasOwnProperty("mapUpdateRequests")) {
while (cmp < MPs.mapUpdateRequests.objects.length) {
var theUR = MPs.mapUpdateRequests.objects[cmp];
if (WMEURMPT.ul < WMEURMPT.rl4cp && theUR.open == false) {
MPs.mapUpdateRequests.objects.splice(cmp, 1);
continue;
}
var lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(theUR.geometry.coordinates[0], theUR.geometry.coordinates[1]);
var xy = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
if (filter.type == "country" || filter.type == "custom") {
xy = new OpenLayers.Geometry.Point(theUR.geometry.coordinates[0], theUR.geometry.coordinates[1]);
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (!inside) {
MPs.mapUpdateRequests.objects.splice(cmp, 1);
continue;
}
cmp++;
}
}
cmp = 0;
if (MPs.hasOwnProperty("mapComments")) {
while (cmp < MPs.mapComments.objects.length) {
var theMC = MPs.mapComments.objects[cmp];
var lonlat = null;
var centroid = null;
if (theMC.geometry.type == "Point") {
lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(theMC.geometry.coordinates[0], theMC.geometry.coordinates[1]);
} else {
var olpolys = [];
theMC.geometry.coordinates.forEach(function(poly) {
var olpts = poly.map(function(e) {
return new OpenLayers.Geometry.Point(e[0], e[1]);
});
var ollr = new OpenLayers.Geometry.LinearRing(olpts);
var olp = new OpenLayers.Geometry.Polygon(ollr);
olpolys.push(olp);
});
var olmultipoly = new OpenLayers.Geometry.MultiPolygon(olpolys);
centroid = olmultipoly.getCentroid();
lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(centroid.x, centroid.y);
}
var xy = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
if (filter.type == "country" || filter.type == "custom") {
if (theMC.geometry.type == "Point") {
xy = new OpenLayers.Geometry.Point(theMC.geometry.coordinates[0], theMC.geometry.coordinates[1]);
} else {
xy = centroid;
}
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (!inside) {
MPs.mapComments.objects.splice(cmp, 1);
continue;
}
cmp++;
}
}
cmp = 0;
if (MPs.hasOwnProperty("venues")) {
while (cmp < MPs.venues.objects.length) {
var thePUR = MPs.venues.objects[cmp];
if (!thePUR.hasOwnProperty("venueUpdateRequests")) {
MPs.venues.objects.splice(cmp, 1);
continue;
}
if (thePUR.venueUpdateRequests.length == 0) {
MPs.venues.objects.splice(cmp, 1);
continue;
}
var lonlat = null;
var centroid = null;
if (thePUR.geometry.type == "Point") {
lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(thePUR.geometry.coordinates[0], thePUR.geometry.coordinates[1]);
} else {
var olpolys = [];
thePUR.geometry.coordinates.forEach(function(poly) {
var olpts = poly.map(function(e) {
return new OpenLayers.Geometry.Point(e[0], e[1]);
});
var ollr = new OpenLayers.Geometry.LinearRing(olpts);
var olp = new OpenLayers.Geometry.Polygon(ollr);
olpolys.push(olp);
});
var olmultipoly = new OpenLayers.Geometry.MultiPolygon(olpolys);
centroid = olmultipoly.getCentroid();
lonlat = OpenLayers.Layer.SphericalMercator.forwardMercator(centroid.x, centroid.y);
}
var xy = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
if (filter.type == "country" || filter.type == "custom") {
if (thePUR.geometry.type == "Point") {
xy = new OpenLayers.Geometry.Point(thePUR.geometry.coordinates[0], thePUR.geometry.coordinates[1]);
} else {
xy = centroid;
}
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (!inside) {
MPs.venues.objects.splice(cmp, 1);
continue;
}
cmp++;
}
}
MPs.area = filterArea;
MPs.filterType = filter.type;
MPs.tile = bounds;
}
if (MPs.hasOwnProperty("mapUpdateRequests")) {
var urIds = [];
for (var i = 0; i < MPs.mapUpdateRequests.objects.length; i++) {
urIds.push(MPs.mapUpdateRequests.objects[i].id);
}
if (urIds.length != 0) {
url = "https://" + document.location.host + WMEURMPT.wazeConfigApiUpdateRequestSessions + "?ids=" + urIds.join(",");
if (XMLHttpRequest) {
xhr3_object = new XMLHttpRequest;
} else {
if (ActiveXObject) {
xhr3_object = new ActiveXObject("Microsoft.XMLHTTP");
}
}
var URcomments = null;
xhr3_object.open("GET", url, false);
xhr3_object.ontimeout = function() {
URcomments = null;
};
xhr3_object.onerror = function() {
URcomments = null;
};
xhr3_object.onreadystatechange = function() {
if (xhr3_object.readyState == 4) {
var r = xhr3_object.responseText;
try {
URcomments = JSON.parse(r);
} catch (e$0) {
WMEURMPT.log("Error: can't read server response: ", e$0);
WMEURMPT.log("Response from server: ", r);
WMEURMPT.log("Query: ", url);
URcomments = null;
}
} else {
URcomments = null;
}
};
xhr3_object.send(null);
WMEURMPT.logDebug("UR comments: ", URcomments);
if (URcomments == null) {
return null;
}
for (var i = 0; i < MPs.mapUpdateRequests.objects.length; i++) {
var urId = MPs.mapUpdateRequests.objects[i].id;
for (var j = 0; j < URcomments.updateRequestSessions.objects.length; j++) {
if (urId == URcomments.updateRequestSessions.objects[j].id) {
MPs.mapUpdateRequests.objects[i].session = URcomments.updateRequestSessions.objects[j];
MPs.mapUpdateRequests.objects[i].session.users = URcomments.users;
break;
}
}
}
}
}
WMEURMPT.logDebug("URs, MPs, MCs, and PURs from server after process: ", MPs);
return MPs;
};
WMEURMPT.updateURList = function(URs) {
if (URs.hasOwnProperty("mapUpdateRequests") == false) {
return;
}
for (var i = 0; i < URs.mapUpdateRequests.objects.length; i++) {
var found = true;
var ur = WMEURMPT.getURFromId(URs.mapUpdateRequests.objects[i].id);
if (ur == null) {
ur = new WMEURMPT.URT_UR(URs.mapUpdateRequests.objects[i].id, URs.mapUpdateRequests.objects[i].geometry.coordinates[0], URs.mapUpdateRequests.objects[i].geometry.coordinates[1]);
found = false;
}
ur.data = JSON.parse(JSON.stringify(URs.mapUpdateRequests.objects[i]));
ur.updated = true;
ur.data.resolvedByName = "Unknown";
for (var u = 0; u < URs.users.objects.length; u++) {
if (URs.users.objects[u].id == ur.data.resolvedBy) {
ur.data.resolvedByName = URs.users.objects[u].userName;
}
}
for (var c = 0; c < ur.data.session.comments.length; c++) {
var userID = ur.data.session.comments[c].userID;
var userName = "Unknown";
if (userID == WMEURMPT.me.id) {
userName = WMEURMPT.me.userName;
if (c == ur.data.session.comments.length - 1) {
ur.lastVisitCommentsCount = ur.data.session.comments.length;
}
}
if (userID == -1) {
userName = "Reporter";
} else {
for (var u = 0; u < ur.data.session.users.objects.length; u++) {
if (ur.data.session.users.objects[u].id == userID) {
userName = ur.data.session.users.objects[u].userName;
break;
}
}
}
ur.data.session.comments[c].userName = userName;
}
ur.clean();
ur.updateDistanceToMapCenter();
if (!found) {
ur.lastVisitCommentsCount = 0;
ur.alreadyVisited = false;
WMEURMPT.URList.push(ur);
WMEURMPT.URMap = WMEURMPT.listToObject(WMEURMPT.URList);
}
}
};
WMEURMPT.updateMPList = function(MPs) {
if (MPs.hasOwnProperty("problems") == false) {
return;
}
WMEURMPT.logDebug("updatelist MPs:", MPs);
for (var i = 0; i < MPs.problems.objects.length; i++) {
WMEURMPT.logDebug("MP server Object:", MPs.problems.objects[i]);
var found = true;
var mp = WMEURMPT.getMPFromId(MPs.problems.objects[i].id);
if (mp == null) {
mp = new WMEURMPT.URT_MP(MPs.problems.objects[i].id, MPs.problems.objects[i].geometry.coordinates[0], MPs.problems.objects[i].geometry.coordinates[1]);
mp.alreadyVisited = false;
found = false;
}
mp.updated = true;
mp.type = "problem";
mp.data = JSON.parse(JSON.stringify(MPs.problems.objects[i]));
mp.data.resolvedByName = "Unknown";
for (var u = 0; u < MPs.users.objects.length; u++) {
if (MPs.users.objects[u].id == mp.data.resolvedBy) {
mp.data.resolvedByName = MPs.users.objects[u].userName;
}
}
mp.clean();
mp.updateDistanceToMapCenter();
if (!found) {
WMEURMPT.MPList.push(mp);
WMEURMPT.MPMap = WMEURMPT.listToObject(WMEURMPT.MPList);
}
}
WMEURMPT.logDebug("MPList Updated:", WMEURMPT.MPList);
};
WMEURMPT.updateMCList = function(MCs) {
if (MCs.hasOwnProperty("mapComments") == false) {
return;
}
for (var i = 0; i < MCs.mapComments.objects.length; i++) {
var found = true;
var mc = WMEURMPT.getMCFromId(MCs.mapComments.objects[i].id);
if (mc == null) {
if (MCs.mapComments.objects[i].geometry.type == "Point") {
mc = new WMEURMPT.URT_MC(MCs.mapComments.objects[i].id, MCs.mapComments.objects[i].geometry.coordinates[0], MCs.mapComments.objects[i].geometry.coordinates[1]);
} else {
var olpolys = [];
MCs.mapComments.objects[i].geometry.coordinates.forEach(function(poly) {
var olpts = poly.map(function(e) {
return new OpenLayers.Geometry.Point(e[0], e[1]);
});
var ollr = new OpenLayers.Geometry.LinearRing(olpts);
var olp = new OpenLayers.Geometry.Polygon(ollr);
olpolys.push(olp);
});
var olmultipoly = new OpenLayers.Geometry.MultiPolygon(olpolys);
var centroid = olmultipoly.getCentroid();
mc = new WMEURMPT.URT_MC(MCs.mapComments.objects[i].id, centroid.x, centroid.y);
}
found = false;
}
mc.data = JSON.parse(JSON.stringify(MCs.mapComments.objects[i]));
mc.updated = true;
mc.data.createdByName = "Unknown";
for (var u in MCs.users.objects) {
if (MCs.users.objects[u].id == mc.data.createdBy) {
mc.data.createdByName = MCs.users.objects[u].userName;
break;
}
}
mc.data.updatedByName = "Unknown";
for (var u in MCs.users.objects) {
if (MCs.users.objects[u].id == mc.data.updatedBy) {
mc.data.updatedByName = MCs.users.objects[u].userName;
break;
}
}
if (mc.data.hasOwnProperty("conversation")) {
mc.data.conversation.forEach(function(c, i) {
if (c.userID == WMEURMPT.me.id) {
c.userName = WMEURMPT.me.userName;
if (i == mc.data.conversation.length - 1) {
mc.lastVisitCommentsCount = mc.data.conversation.length;
}
}
for (var u in MCs.users.objects) {
if (MCs.users.objects[u].id == c.userID) {
c.userName = MCs.users.objects[u].userName;
break;
}
}
}, this);
}
mc.clean();
mc.updateDistanceToMapCenter();
if (!found) {
mc.lastVisitCommentsCount = 0;
mc.alreadyVisited = false;
WMEURMPT.MCList.push(mc);
WMEURMPT.MCMap = WMEURMPT.listToObject(WMEURMPT.MCList);
}
}
};
WMEURMPT.updatePURList = function(PURs) {
if (PURs.hasOwnProperty("venues") == false) {
return;
}
for (var i = 0; i < PURs.venues.objects.length; i++) {
var found = true;
var pur = WMEURMPT.getPURFromId(PURs.venues.objects[i].id);
if (pur == null) {
if (PURs.venues.objects[i].geometry.type == "Point") {
pur = new WMEURMPT.URT_PUR(PURs.venues.objects[i].id, PURs.venues.objects[i].geometry.coordinates[0], PURs.venues.objects[i].geometry.coordinates[1]);
} else {
var olpolys = [];
PURs.venues.objects[i].geometry.coordinates.forEach(function(poly) {
var olpts = poly.map(function(e) {
return new OpenLayers.Geometry.Point(e[0], e[1]);
});
var ollr = new OpenLayers.Geometry.LinearRing(olpts);
var olp = new OpenLayers.Geometry.Polygon(ollr);
olpolys.push(olp);
});
var olmultipoly = new OpenLayers.Geometry.MultiPolygon(olpolys);
var centroid = olmultipoly.getCentroid();
pur = new WMEURMPT.URT_PUR(PURs.venues.objects[i].id, centroid.x, centroid.y);
}
found = false;
}
pur.data = JSON.parse(JSON.stringify(PURs.venues.objects[i]));
pur.updated = true;
if (pur.data.name === undefined) {
pur.data["name"] = "undefined";
}
pur.data.createdByName = "Unknown";
for (var u in PURs.users.objects) {
if (PURs.users.objects[u].id == pur.data.createdBy) {
pur.data.createdByName = PURs.users.objects[u].userName;
break;
}
}
pur.data.updatedByName = "Unknown";
for (var u in PURs.users.objects) {
if (PURs.users.objects[u].id == pur.data.updatedBy) {
pur.data.updatedByName = PURs.users.objects[u].userName;
break;
}
}
pur.data.dateAddedMin = 0;
pur.data.dateAddedMax = 0;
for (var n = 0; n < PURs.venues.objects[i].venueUpdateRequests.length; n++) {
pur.data.venueUpdateRequests[n].createdByName = "Unknown";
for (var u in PURs.users.objects) {
if (PURs.users.objects[u].id == pur.data.venueUpdateRequests[n].createdBy) {
pur.data.venueUpdateRequests[n].createdByName = PURs.users.objects[u].userName;
break;
}
}
if (pur.data.venueUpdateRequests[n].dateAdded << pur.data.dateAddedMin) {
pur.data.dateAddedMin = pur.data.venueUpdateRequests[n].dateAdded;
}
if (pur.data.venueUpdateRequests[n].dateAdded >> pur.data.dateAddedMax) {
pur.data.dateAddedMax = pur.data.venueUpdateRequests[n].dateAdded;
}
}
WMEURMPT.logDebug("updatePURList pur", pur);
pur.clean();
pur.updateDistanceToMapCenter();
if (!found) {
pur.alreadyVisited = false;
WMEURMPT.PURList.push(pur);
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
}
}
};
WMEURMPT.updateListsFromManualScan = function(areaFilter) {
if (!WMEURMPT.scanUR && !WMEURMPT.scanMP && !WMEURMPT.scanMC && !WMEURMPT.scanPUR) {
alert("You must check at least one scan in quick options");
return;
}
WMEURMPT.log("Setup tiles for manual scan: ", areaFilter);
var count = 0;
WMEURMPT.scanAreaBoundsList = [];
if (areaFilter.type == "editableArea") {
for (var i = 0; i < WMEURMPT.loginManager.user.areas.length; i++) {
WMEURMPT.loginManager.user.areas[i].geometry.calculateBounds();
var bounds = WMEURMPT.loginManager.user.areas[i].geometry.bounds;
var lonlatFrom = OpenLayers.Layer.SphericalMercator.inverseMercator(bounds.left, bounds.bottom);
var lonlatTo = OpenLayers.Layer.SphericalMercator.inverseMercator(bounds.right, bounds.top);
for (var lat = lonlatFrom.lat; lat < lonlatTo.lat; lat += 0.5) {
for (var lon = lonlatFrom.lon; lon < lonlatTo.lon; lon += 0.5) {
WMEURMPT.logDebug("Scan editable area from: " + lon + " " + lat + " to: " + (lon + 1) + " " + (lat + 1));
var tileBounds = new OpenLayers.Bounds;
tileBounds.extend(new OpenLayers.LonLat(lon.toFixed(6), lat.toFixed(6)));
tileBounds.extend(new OpenLayers.LonLat((lon + 0.5).toFixed(6), (lat + 0.5).toFixed(6)));
WMEURMPT.scanAreaBoundsList.push(tileBounds);
}
}
}
}
if (areaFilter.type == "driveArea") {
for (var i = 0; i < WMEURMPT.driveArea.length; i++) {
WMEURMPT.driveArea[i].calculateBounds();
WMEURMPT.logDebug("WMEURMPT.driveArea", WMEURMPT.driveArea);
var bounds = WMEURMPT.driveArea[i].bounds;
var lonlatFrom = OpenLayers.Layer.SphericalMercator.inverseMercator(bounds.left, bounds.bottom);
var lonlatTo = OpenLayers.Layer.SphericalMercator.inverseMercator(bounds.right, bounds.top);
var lat = lonlatFrom.lat;
var lon = lonlatFrom.lon;
for (var lat = lonlatFrom.lat; lat < lonlatTo.lat; lat += 0.5) {
for (var lon = lonlatFrom.lon; lon < lonlatTo.lon; lon += 0.5) {
WMEURMPT.logDebug("Scan drive area from: " + lon + " " + lat + " to: " + (lon + 1) + " " + (lat + 1));
var tileBounds = new OpenLayers.Bounds;
tileBounds.extend(new OpenLayers.LonLat(lon.toFixed(6), lat.toFixed(6)));
tileBounds.extend(new OpenLayers.LonLat((lon + 0.5).toFixed(6), (lat + 0.5).toFixed(6)));
WMEURMPT.scanAreaBoundsList.push(tileBounds);
}
}
}
}
if (areaFilter.type == "managedArea") {
for (var i = 0; i < WMEURMPT.managedAreas.length; i++) {
WMEURMPT.managedAreas[i].calculateBounds();
WMEURMPT.logDebug("WMEURMPT.managedAreas", WMEURMPT.managedAreas);
var bounds = WMEURMPT.managedAreas[i].bounds;
var lonlatFrom = OpenLayers.Layer.SphericalMercator.inverseMercator(bounds.left, bounds.bottom);
var lonlatTo = OpenLayers.Layer.SphericalMercator.inverseMercator(bounds.right, bounds.top);
var lat = lonlatFrom.lat;
var lon = lonlatFrom.lon;
for (var lat = lonlatFrom.lat; lat < lonlatTo.lat; lat += 0.5) {
for (var lon = lonlatFrom.lon; lon < lonlatTo.lon; lon += 0.5) {
WMEURMPT.logDebug("Scan managed area from: " + lon + " " + lat + " to: " + (lon + 1) + " " + (lat + 1));
var tileBounds = new OpenLayers.Bounds;
tileBounds.extend(new OpenLayers.LonLat(lon.toFixed(6), lat.toFixed(6)));
tileBounds.extend(new OpenLayers.LonLat((lon + 0.5).toFixed(6), (lat + 0.5).toFixed(6)));
WMEURMPT.scanAreaBoundsList.push(tileBounds);
}
}
}
}
if (areaFilter.type == "country") {
var geometry = null;
for (var i = 0; i < WMEURMPT.areaList.country.length; i++) {
if (WMEURMPT.areaList.country[i].name == areaFilter.name) {
geometry = WMEURMPT.areaList.country[i].geometryOL.geometry.components;
break;
}
}
if (geometry === null) {
return;
}
for (var i = 0; i < geometry.length; i++) {
var bounds = geometry[i].bounds;
var lonlatFrom = new OpenLayers.LonLat(bounds.left, bounds.bottom);
var lonlatTo = new OpenLayers.LonLat(bounds.right, bounds.top);
for (var lat = lonlatFrom.lat; lat < lonlatTo.lat; lat += 0.5) {
for (var lon = lonlatFrom.lon; lon < lonlatTo.lon; lon += 0.5) {
if (lon > 180) {
lon -= 180;
}
var lonStep = 0.5;
if (lon + lonStep > 180) {
lonStep = 180 - lon;
}
WMEURMPT.logDebug("Scan country from: " + lon + " " + lat + " to: " + (lon + lonStep) + " " + (lat + 0.5));
var tileBounds = new OpenLayers.Bounds;
tileBounds.extend(new OpenLayers.LonLat(lon.toFixed(6), lat.toFixed(6)));
tileBounds.extend(new OpenLayers.LonLat((lon + lonStep).toFixed(6), (lat + 0.5).toFixed(6)));
WMEURMPT.scanAreaBoundsList.push(tileBounds);
if (lonStep != 0.5) {
lonStep = 0.5 - lonStep;
WMEURMPT.logDebug("Scan country from: 0! " + lat + " to: " + lonStep + " " + (lat + 0.5));
var tileBounds = new OpenLayers.Bounds;
tileBounds.extend(new OpenLayers.LonLat(0, lat.toFixed(6)));
tileBounds.extend(new OpenLayers.LonLat(lonStep.toFixed(6), (lat + 0.5).toFixed(6)));
WMEURMPT.scanAreaBoundsList.push(tileBounds);
}
}
}
}
}
if (areaFilter.type == "custom") {
var geometry = null;
for (var i = 0; i < WMEURMPT.areaList.custom.length; i++) {
if (WMEURMPT.areaList.custom[i].name == areaFilter.name) {
geometry = WMEURMPT.areaList.custom[i].geometryOL.geometry.components;
break;
}
}
if (geometry === null) {
WMEURMPT.log("Bad geometry for area: ", areaFilter);
return;
}
for (var i = 0; i < geometry.length; i++) {
var bounds = geometry[i].bounds;
var lonlatFrom = new OpenLayers.LonLat(bounds.left, bounds.bottom);
var lonlatTo = new OpenLayers.LonLat(bounds.right, bounds.top);
for (var lat = lonlatFrom.lat; lat < lonlatTo.lat; lat += 0.5) {
for (var lon = lonlatFrom.lon; lon < lonlatTo.lon; lon += 0.5) {
WMEURMPT.logDebug("Scan custom from: " + lon + " " + lat + " to: " + (lon + 1) + " " + (lat + 1));
var tileBounds = new OpenLayers.Bounds;
tileBounds.extend(new OpenLayers.LonLat(lon.toFixed(6), lat.toFixed(6)));
tileBounds.extend(new OpenLayers.LonLat((lon + 0.5).toFixed(6), (lat + 0.5).toFixed(6)));
WMEURMPT.scanAreaBoundsList.push(tileBounds);
}
}
}
}
WMEURMPT.scanAreaBoundsCount = WMEURMPT.scanAreaBoundsList.length;
for (var i = 0; i < WMEURMPT.URList.length; i++) {
WMEURMPT.URList[i].updated = false;
}
for (var i = 0; i < WMEURMPT.MPList.length; i++) {
WMEURMPT.MPList[i].updated = false;
}
for (var i = 0; i < WMEURMPT.MCList.length; i++) {
WMEURMPT.MCList[i].updated = false;
}
for (var i = 0; i < WMEURMPT.PURList.length; i++) {
WMEURMPT.PURList[i].updated = false;
}
WMEURMPT.log("Starting scan...");
WMEURMPT.log("Tile count: " + WMEURMPT.scanAreaBoundsList.length);
var pb = new WMEURMPT.ProgressBar(WMEURMPT.getId("urt-progressBar"));
pb.update(0);
pb.show();
WMEURMPT.showPBInfo(true);
WMEURMPT.wasAutoScan = WMEURMPT.isAutoScan;
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScanNextStep, [areaFilter]), 0);
};
WMEURMPT.updateListsFromManualScanNextStep = function(areaFilter, seconds, retries) {
var pb = new WMEURMPT.ProgressBar(WMEURMPT.getId("urt-progressBar"));
if (typeof seconds !== "undefined" && seconds != null && seconds > 0) {
seconds--;
WMEURMPT.info("Error: can't download data from waze server.<br>Retry in " + seconds + "s.");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScanNextStep, [areaFilter, seconds, retries]), 1000);
return;
}
if (typeof retries !== "undefined" && retries != null && retries > 0) {
retries--;
WMEURMPT.log("Error: can't download data from waze server.<br>Retry in " + seconds + "s.");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScanNextStep, [areaFilter, WMEURMPT.wazeServerWaitingTimeToRetry, retries]), 1000);
return;
}
if (typeof retries !== "undefined" && retries != null && retries == 0 && typeof seconds !== "undefined" && seconds != null && seconds == 0) {
var tileBounds = WMEURMPT.scanAreaBoundsList[0];
WMEURMPT.scanAreaBoundsList.shift();
if (tileBounds.right - tileBounds.left > 0.02 && tileBounds.top - tileBounds.bottom > 0.02) {
WMEURMPT.log("Error from waze server. Try a split...");
var newTileBounds = new OpenLayers.Bounds;
newTileBounds.extend(new OpenLayers.LonLat(tileBounds.left, tileBounds.bottom));
newTileBounds.extend(new OpenLayers.LonLat((tileBounds.left + tileBounds.right) / 2.0, (tileBounds.bottom + tileBounds.top) / 2.0));
WMEURMPT.scanAreaBoundsList.unshift(newTileBounds);
newTileBounds = new OpenLayers.Bounds;
newTileBounds.extend(new OpenLayers.LonLat((tileBounds.left + tileBounds.right) / 2.0, tileBounds.bottom));
newTileBounds.extend(new OpenLayers.LonLat(tileBounds.right, (tileBounds.bottom + tileBounds.top) / 2.0));
WMEURMPT.scanAreaBoundsList.unshift(newTileBounds);
newTileBounds = new OpenLayers.Bounds;
newTileBounds.extend(new OpenLayers.LonLat(tileBounds.left, (tileBounds.bottom + tileBounds.top) / 2.0));
newTileBounds.extend(new OpenLayers.LonLat((tileBounds.left + tileBounds.right) / 2.0, tileBounds.top));
WMEURMPT.scanAreaBoundsList.unshift(newTileBounds);
newTileBounds = new OpenLayers.Bounds;
newTileBounds.extend(new OpenLayers.LonLat((tileBounds.left + tileBounds.right) / 2.0, (tileBounds.bottom + tileBounds.top) / 2.0));
newTileBounds.extend(new OpenLayers.LonLat(tileBounds.right, tileBounds.top));
WMEURMPT.scanAreaBoundsList.unshift(newTileBounds);
WMEURMPT.scanAreaBoundsCount += 4;
} else {
WMEURMPT.log("Abort this area: (" + tileBounds.left + " , " + tileBounds.bottom + ") -> (" + tileBounds.right + " , " + tileBounds.top + ")");
}
}
if (WMEURMPT.scanAreaBoundsList.length == 0) {
WMEURMPT.log("Found after process: " + (WMEURMPT.URList.length >> 0 ? WMEURMPT.URList.length + " URs; " : "") + (WMEURMPT.MPList.length >> 0 ? WMEURMPT.MPList.length + " MPs; " : "") + (WMEURMPT.MCList.length >> 0 ? WMEURMPT.MCList.length + " MCs; " : "") + (WMEURMPT.PURList.length >> 0 ? WMEURMPT.PURList.length + " PURs" : ""));
WMEURMPT.log("Scan ended");
WMEURMPT.showPBInfo(false);
WMEURMPT.info();
pb.hide();
WMEURMPT.refreshStats("", "");
WMEURMPT.updateIHMFromURList();
WMEURMPT.updateIHMFromMPList();
WMEURMPT.updateIHMFromMCList();
WMEURMPT.updateIHMFromPURList();
WMEURMPT.saveURMPLists();
WMEURMPT.isAutoScan = WMEURMPT.wasAutoScan;
return;
}
var tileBounds = WMEURMPT.scanAreaBoundsList[0];
var progression = Math.floor((1 - WMEURMPT.scanAreaBoundsList.length / WMEURMPT.scanAreaBoundsCount) * 100);
var MPs = WMEURMPT.getMPs(tileBounds, areaFilter);
if (MPs == null) {
WMEURMPT.log("Error: can't download data from waze server.<br>Retry in " + WMEURMPT.wazeServerWaitingTimeToRetry + "s.");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScanNextStep, [areaFilter, WMEURMPT.wazeServerWaitingTimeToRetry, 0]), 1000);
return;
}
WMEURMPT.scanAreaBoundsList.shift();
if (MPs != null) {
if (MPs.hasOwnProperty("error") && MPs.error == 1) {
WMEURMPT.log("Found " + MPs.logMessage.length + " " + MPs.logMessage.obj + ". This is a waze server limit. Enqueuing sub tile...");
var newTileBounds = new OpenLayers.Bounds;
newTileBounds.extend(new OpenLayers.LonLat(tileBounds.left, tileBounds.bottom));
newTileBounds.extend(new OpenLayers.LonLat((tileBounds.left + tileBounds.right) / 2.0, (tileBounds.bottom + tileBounds.top) / 2.0));
WMEURMPT.scanAreaBoundsList.unshift(newTileBounds);
newTileBounds = new OpenLayers.Bounds;
newTileBounds.extend(new OpenLayers.LonLat((tileBounds.left + tileBounds.right) / 2.0, tileBounds.bottom));
newTileBounds.extend(new OpenLayers.LonLat(tileBounds.right, (tileBounds.bottom + tileBounds.top) / 2.0));
WMEURMPT.scanAreaBoundsList.unshift(newTileBounds);
newTileBounds = new OpenLayers.Bounds;
newTileBounds.extend(new OpenLayers.LonLat(tileBounds.left, (tileBounds.bottom + tileBounds.top) / 2.0));
newTileBounds.extend(new OpenLayers.LonLat((tileBounds.left + tileBounds.right) / 2.0, tileBounds.top));
WMEURMPT.scanAreaBoundsList.unshift(newTileBounds);
newTileBounds = new OpenLayers.Bounds;
newTileBounds.extend(new OpenLayers.LonLat((tileBounds.left + tileBounds.right) / 2.0, (tileBounds.bottom + tileBounds.top) / 2.0));
newTileBounds.extend(new OpenLayers.LonLat(tileBounds.right, tileBounds.top));
WMEURMPT.scanAreaBoundsList.unshift(newTileBounds);
WMEURMPT.scanAreaBoundsCount += 4;
} else {
WMEURMPT.log("Found: " + (MPs.hasOwnProperty("mapUpdateRequests") ? MPs.mapUpdateRequests.objects.length + " URs; " : "") + (MPs.hasOwnProperty("problems") ? MPs.problems.objects.length + " MPs; " : "") + (MPs.hasOwnProperty("mapComments") ? MPs.mapComments.objects.length + " MCs; " : "") + (MPs.hasOwnProperty("venues") ? MPs.venues.objects.length + " PURs" : ""));
WMEURMPT.updateURList(MPs);
WMEURMPT.updateMPList(MPs);
WMEURMPT.updateMCList(MPs);
WMEURMPT.updatePURList(MPs);
WMEURMPT.removeOldURMP(MPs.area, MPs.filterType, MPs.tile);
}
}
pb.update(progression);
WMEURMPT.info("Please, don't touch anything during this scan.");
window.setTimeout(WMEURMPT.getFunctionWithArgs(WMEURMPT.updateListsFromManualScanNextStep, [areaFilter]), 0);
};
WMEURMPT.removeOldURMP = function(filterArea, type, tileBounds) {
var i = 0;
var now = new Date;
if (WMEURMPT.scanUR) {
while (i < WMEURMPT.URList.length) {
if (WMEURMPT.URList[i].data.hasOwnProperty("session") == false) {
WMEURMPT.log("pas bon ca: ", WMEURMPT.URList[i]);
}
var xy = new OpenLayers.Geometry.Point(WMEURMPT.URList[i].lonlat.lon, WMEURMPT.URList[i].lonlat.lat);
if (type == "editableArea" || type == "driveArea" || type == "managedArea") {
xy = OpenLayers.Layer.SphericalMercator.inverseMercator(xy.x, xy.y);
}
if (xy.x < tileBounds.left || xy.x > tileBounds.right || xy.y < tileBounds.bottom || xy.y > tileBounds.top) {
i++;
continue;
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (!inside) {
i++;
continue;
}
if (WMEURMPT.URList[i].data.open == true && WMEURMPT.URList[i].updated == false || WMEURMPT.URList[i].data.open == false && Math.floor((now.getTime() - WMEURMPT.URList[i].data.resolvedOn) / 86400000) > 60) {
WMEURMPT.log("removing old UR " + WMEURMPT.URList[i].id);
WMEURMPT.URList.splice(i, 1);
WMEURMPT.URMap = WMEURMPT.listToObject(WMEURMPT.URList);
} else {
i++;
}
}
}
i = 0;
if (WMEURMPT.scanMP) {
while (i < WMEURMPT.MPList.length) {
var xy = new OpenLayers.Geometry.Point(WMEURMPT.MPList[i].lonlat.lon, WMEURMPT.MPList[i].lonlat.lat);
if (type == "editableArea" || type == "driveArea" || type == "managedArea") {
xy = OpenLayers.Layer.SphericalMercator.inverseMercator(xy.x, xy.y);
}
if (xy.x < tileBounds.left || xy.x > tileBounds.right || xy.y < tileBounds.bottom || xy.y > tileBounds.top) {
i++;
continue;
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (!inside) {
i++;
continue;
}
if (WMEURMPT.MPList[i].data.open == true && WMEURMPT.MPList[i].updated == false || WMEURMPT.MPList[i].data.open == false && Math.floor((now.getTime() - WMEURMPT.MPList[i].data.resolvedOn) / 86400000) > 60) {
WMEURMPT.log("removing old MP " + WMEURMPT.MPList[i].id);
WMEURMPT.MPList.splice(i, 1);
WMEURMPT.MPMap = WMEURMPT.listToObject(WMEURMPT.MPList);
} else {
i++;
}
}
}
i = 0;
if (WMEURMPT.scanMC) {
while (i < WMEURMPT.MCList.length) {
var xy = new OpenLayers.Geometry.Point(WMEURMPT.MCList[i].lonlat.lon, WMEURMPT.MCList[i].lonlat.lat);
if (type == "editableArea" || type == "driveArea" || type == "managedArea") {
xy = OpenLayers.Layer.SphericalMercator.inverseMercator(xy.x, xy.y);
}
if (xy.x < tileBounds.left || xy.x > tileBounds.right || xy.y < tileBounds.bottom || xy.y > tileBounds.top) {
i++;
continue;
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (!inside) {
i++;
continue;
}
if (WMEURMPT.MCList[i].updated == false) {
WMEURMPT.log("removing old MC " + WMEURMPT.MCList[i].id);
WMEURMPT.MCList.splice(i, 1);
WMEURMPT.MCMap = WMEURMPT.listToObject(WMEURMPT.MCList);
} else {
i++;
}
}
}
i = 0;
if (WMEURMPT.scanPUR) {
while (i < WMEURMPT.PURList.length) {
var xy = new OpenLayers.Geometry.Point(WMEURMPT.PURList[i].lonlat.lon, WMEURMPT.PURList[i].lonlat.lat);
if (type == "editableArea" || type == "driveArea" || type == "managedArea") {
xy = OpenLayers.Layer.SphericalMercator.inverseMercator(xy.x, xy.y);
}
if (xy.x < tileBounds.left || xy.x > tileBounds.right || xy.y < tileBounds.bottom || xy.y > tileBounds.top) {
i++;
continue;
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top && filterArea[a].containsPoint(xy)) {
inside = true;
break;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
inside = true;
break;
}
}
}
if (!inside) {
i++;
continue;
}
if (WMEURMPT.PURList[i].updated == false) {
WMEURMPT.log("removing old PUR " + WMEURMPT.PURList[i].id);
WMEURMPT.PURList.splice(i, 1);
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
} else {
i++;
}
}
}
};
WMEURMPT.URT_UR = function(id, lon, lat) {
this.id = id;
this.lonlat = new OpenLayers.LonLat(lon, lat);
this.blackListed = false;
this.alreadyVisited = false;
this.lastVisitCommentsCount = 0;
this.refreshFromServer = refreshFromServer;
this.refreshFromWMEData = refreshFromWMEData;
this.distanceToMapCenter = 0;
this.clean = clean;
this.updateDistanceToMapCenter = updateDistanceToMapCenter;
function clean() {
if (this.data.hasOwnProperty("bounds") == true) {
delete this.data.bounds;
}
if (this.data.hasOwnProperty("geometry") == true) {
delete this.data.geometry;
}
if (this.data.hasOwnProperty("session") == true) {
if (this.data.session.hasOwnProperty("driveGeometry") == true) {
delete this.data.session.driveGeometry;
}
if (this.data.session.hasOwnProperty("routeGeometry") == true) {
delete this.data.session.routeGeometry;
}
if (this.data.session.hasOwnProperty("routeInstructions") == true) {
delete this.data.session.routeInstructions;
}
if (this.data.session.hasOwnProperty("users") == true) {
delete this.data.session.users;
}
}
}
function updateDistanceToMapCenter() {
if (!WMEURMPT.isComputeDistances) {
return;
}
if (!WMEURMPT.mapCenterLonLat) {
WMEURMPT.mapCenterLonLat = OpenLayers.Layer.SphericalMercator.inverseMercator(WMEURMPT.wazeMap.olMap.center.lon, WMEURMPT.wazeMap.olMap.center.lat);
}
var p1 = new OpenLayers.Geometry.Point(WMEURMPT.mapCenterLonLat.lon, WMEURMPT.mapCenterLonLat.lat);
var p2 = new OpenLayers.Geometry.Point(this.lonlat.lon, this.lonlat.lat);
var line = new OpenLayers.Geometry.LineString([p1, p2]);
this.distanceToMapCenter = line.getGeodesicLength(new OpenLayers.Projection("EPSG:4326"));
}
function refreshFromWMEData(forceSession) {
var theUR = WMEURMPT.wazeModel.mapUpdateRequests.objects[this.id];
WMEURMPT.logDebug("refreshFromWME UR:", theUR);
if (theUR == null) {
return false;
}
WMEURMPT.logDebug("refreshFromWME session:", WMEURMPT.wazeModel.updateRequestSessions.objects[this.id]);
this.data = {};
this.data.description = theUR.attributes.description;
this.data.driveDate = theUR.attributes.driveDate;
this.data.hasComments = theUR.attributes.hasComments;
this.data.open = theUR.attributes.open;
this.data.resolution = theUR.attributes.resolution;
this.data.resolvedBy = theUR.attributes.resolvedBy;
this.data.resolvedOn = theUR.attributes.resolvedOn;
this.data.type = theUR.attributes.type;
this.data.updatedBy = theUR.attributes.updatedBy;
this.data.updatedOn = theUR.attributes.updatedOn;
this.data.resolvedByName = "Unknown";
for (var u in theUR.model.users.objects) {
if (theUR.model.users.objects[u].id == this.data.resolvedBy) {
this.data.resolvedByName = theUR.model.users.objects[u].userName;
break;
}
}
var needToUpdateCommentsUserNames = true;
if (!forceSession) {
if (WMEURMPT.wazeModel.updateRequestSessions.objects[this.id] != null) {
this.data.session = {};
this.data.session.comments = JSON.parse(JSON.stringify(WMEURMPT.wazeModel.updateRequestSessions.objects[this.id].comments));
this.data.session.isFollowing = WMEURMPT.wazeModel.updateRequestSessions.objects[this.id].isFollowing;
} else {
this.data.session = {};
this.data.session.comments = [];
this.data.session.isFollowing = false;
}
} else {
url = "https://" + document.location.host + WMEURMPT.wazeConfigApiUpdateRequestSessions + "?ids=" + this.id;
if (XMLHttpRequest) {
xhr3_object = new XMLHttpRequest;
} else {
if (ActiveXObject) {
xhr3_object = new ActiveXObject("Microsoft.XMLHTTP");
}
}
var URcomments = null;
xhr3_object.open("GET", url, false);
xhr3_object.ontimeout = function() {
URcomments = null;
};
xhr3_object.onerror = function(e) {
WMEURMPT.log("Error while getting UR comments from Waze server.", e);
URcomments = null;
};
xhr3_object.onreadystatechange = function() {
if (xhr3_object.readyState == 4) {
var r = xhr3_object.responseText;
try {
URcomments = JSON.parse(r);
} catch (e) {
WMEURMPT.log("Error: can't read server response: ", e);
WMEURMPT.log("Response from server: ", r);
WMEURMPT.log("Query: ", url);
URcomments = null;
}
} else {
WMEURMPT.log("Error while getting UR comments from Waze server.", xhr3_object);
URcomments = null;
}
};
xhr3_object.send(null);
WMEURMPT.logDebug("UR comments: ", URcomments);
if (URcomments != null) {
var found = false;
for (var j = 0; j < URcomments.updateRequestSessions.objects.length; j++) {
var urId = URcomments.updateRequestSessions.objects[j].id;
if (urId == this.id) {
this.data.session = URcomments.updateRequestSessions.objects[j];
this.data.session.users = URcomments.users;
for (var c = 0; c < this.data.session.comments.length; c++) {
var userID = this.data.session.comments[c].userID;
var userName = "Unknown";
if (userID == WMEURMPT.me.id) {
userName = WMEURMPT.me.userName;
if (c == this.data.session.comments.length - 1) {
this.lastVisitCommentsCount = this.data.session.comments.length;
}
}
if (userID == -1) {
userName = "Reporter";
} else {
for (var u = 0; u < this.data.session.users.objects.length; u++) {
if (this.data.session.users.objects[u].id == userID) {
userName = this.data.session.users.objects[u].userName;
break;
}
}
}
this.data.session.comments[c].userName = userName;
}
found = true;
needToUpdateCommentsUserNames = false;
}
}
if (!found) {
this.data.session = {};
this.data.session.comments = [];
this.data.session.isFollowing = false;
}
} else {
this.data.session = {};
this.data.session.comments = [];
this.data.session.isFollowing = false;
}
}
if (needToUpdateCommentsUserNames) {
for (var c = 0; c < this.data.session.comments.length; c++) {
var userID = this.data.session.comments[c].userID;
var userName = "Unknown";
if (userID == WMEURMPT.me.id) {
userName = WMEURMPT.me.userName;
if (c == this.data.session.comments.length - 1) {
this.lastVisitCommentsCount = this.data.session.comments.length;
}
}
if (userID == -1) {
userName = "Reporter";
} else {
for (var u in WMEURMPT.wazeModel.updateRequestSessions.objects[this.id].model.users.objects) {
if (WMEURMPT.wazeModel.updateRequestSessions.objects[this.id].model.users.objects[u].id == userID) {
userName = WMEURMPT.wazeModel.updateRequestSessions.objects[this.id].model.users.objects[u].userName;
break;
}
}
}
this.data.session.comments[c].userName = userName;
}
}
this.clean();
this.updateDistanceToMapCenter();
WMEURMPT.updateIHMFromURList();
return true;
}
function refreshFromServer() {
var haveChanged = false;
WMEURMPT.log("refresh from server " + this.id);
var URs = WMEURMPT.getUR(this.lonlat.lon, this.lonlat.lat, this.id);
if (URs != null) {
WMEURMPT.log("refresh from server " + this.id + ";", URs);
if (typeof URs.mapUpdateRequests !== "undefined") {
for (var i = 0; i < URs.mapUpdateRequests.objects.length; i++) {
if (URs.mapUpdateRequests.objects[i].id == this.id) {
if (this.data.updatedOn != URs.mapUpdateRequests.objects[i].updatedOn) {
haveChanged = true;
}
WMEURMPT.log("refresh from server " + this.id + ";", URs.mapUpdateRequests.objects[i]);
this.data = URs.mapUpdateRequests.objects[i];
this.data.resolvedByName = "Unknown";
for (var u = 0; u < URs.users.objects.length; u++) {
if (URs.users.objects[u].id == this.data.resolvedBy) {
this.data.resolvedByName = URs.users.objects[u].userName;
}
}
for (var c = 0; c < this.data.session.comments.length; c++) {
var userID = this.data.session.comments[c].userID;
var userName = "Unknown";
if (userID == -1) {
userName = "Reporter";
} else {
for (var u = 0; u < URs.users.objects.length; u++) {
if (URs.users.objects[u].userID == userID) {
userName = URs.users.objects[u].userName;
break;
}
}
for (var u = 0; u < URs.mapUpdateRequests.objects[i].session.users.objects.length; u++) {
if (URs.mapUpdateRequests.objects[i].session.users.objects[u].id == userID) {
userName = URs.mapUpdateRequests.objects[i].session.users.objects[u].userName;
break;
}
}
if (userID == WMEURMPT.loginManager.user.id) {
userName = WMEURMPT.loginManager.user.userName;
}
}
this.data.session.comments[c].userName = userName;
}
}
}
return haveChanged;
}
}
return null;
}
};
WMEURMPT.getUR = function(lon, lat, id) {
var bounds = new OpenLayers.Bounds(lon - 0.01, lat - 0.01, lon + 0.01, lat + 0.01);
var URs = WMEURMPT.getMPs(bounds);
if (URs == null) {
return null;
}
if (id != null) {
while (URs.mapUpdateRequests.objects.length >= 2) {
for (var i = 0; i < URs.mapUpdateRequests.objects.length; i++) {
if (URs.mapUpdateRequests.objects[i].id != id) {
URs.mapUpdateRequests.objects.splice(i, 1);
break;
}
}
}
if (URs.mapUpdateRequests.objects.length == 0) {
return null;
}
if (URs.mapUpdateRequests.objects[0].id != id) {
return null;
}
}
return URs;
};
WMEURMPT.URT_MP = function(id, lon, lat) {
this.id = id;
this.lonlat = new OpenLayers.LonLat(lon, lat);
this.blackListed = false;
this.alreadyVisited = false;
this.distanceToMapCenter = 0;
this.type = "problem";
this.refreshFromServer = refreshFromServer;
this.refreshFromWMEData = refreshFromWMEData;
this.clean = clean;
this.updateDistanceToMapCenter = updateDistanceToMapCenter;
function clean() {
delete this.data.bounds;
delete this.data.geometry;
}
function updateDistanceToMapCenter() {
if (!WMEURMPT.isComputeDistances) {
return;
}
if (!WMEURMPT.mapCenterLonLat) {
WMEURMPT.mapCenterLonLat = OpenLayers.Layer.SphericalMercator.inverseMercator(WMEURMPT.wazeMap.olMap.center.lon, WMEURMPT.wazeMap.olMap.center.lat);
}
var p1 = new OpenLayers.Geometry.Point(WMEURMPT.mapCenterLonLat.lon, WMEURMPT.mapCenterLonLat.lat);
var p2 = new OpenLayers.Geometry.Point(this.lonlat.lon, this.lonlat.lat);
var line = new OpenLayers.Geometry.LineString([p1, p2]);
this.distanceToMapCenter = line.getGeodesicLength(new OpenLayers.Projection("EPSG:4326"));
}
function refreshFromWMEData() {
WMEURMPT.logDebug("Refresh MP: ", WMEURMPT.wazeModel.problems.additionalInfo);
var theMP = null;
if (WMEURMPT.wazeModel.problems.objects.hasOwnProperty(this.id)) {
theMP = WMEURMPT.wazeModel.problems.objects[this.id];
}
if (theMP == null) {
return false;
}
this.data = {};
this.data.priority = theMP.attributes.priority;
this.data.subType = theMP.attributes.subType;
this.data.open = theMP.attributes.open;
this.data.resolution = theMP.attributes.resolution;
this.data.resolvedBy = theMP.attributes.resolvedBy;
this.data.resolvedOn = theMP.attributes.resolvedOn;
this.data.weight = theMP.attributes.weight;
this.data.startTime = theMP.attributes.startTime;
this.data.resolvedByName = "Unknown";
for (var u in theMP.model.users.objects) {
if (theMP.model.users.objects[u].id == this.data.resolvedBy) {
this.data.resolvedByName = theMP.model.users.objects[u].userName;
break;
}
}
this.clean();
this.updateDistanceToMapCenter();
return true;
}
function refreshFromServer() {
var haveChanged = false;
var MPs = WMEURMPT.getMP(this.lonlat.lon, this.lonlat.lat, this.id);
if (MPs != null) {
if (typeof MPs.problems !== "undefined") {
for (var i = 0; i < MPs.problems.objects.length; i++) {
if (MPs.problems.objects[i].id == this.id) {
if (this.data.updatedOn != MPs.problems.objects[i].updatedOn) {
haveChanged = true;
}
this.data = MPs.problems.objects[i];
return haveChanged;
}
}
}
}
return null;
}
};
WMEURMPT.getMP = function(lon, lat, id) {
var bounds = new OpenLayers.Bounds(lon - 0.01, lat - 0.01, lon + 0.01, lat + 0.01);
var MPs = WMEURMPT.getMPs(bounds);
if (MPs == null) {
return null;
}
if (id != null) {
while (MPs.problems.objects.length >= 2) {
for (var i = 0; i < MPs.problems.objects.length; i++) {
if (MPs.problems.objects[i].id != id) {
MPs.problems.objects.splice(i, 1);
break;
}
}
}
if (MPs.problems.objects.length != 0 && MPs.problems.objects[0].id != id) {
return null;
}
}
if (MPs.problems.objects.length == 0) {
return null;
}
return MPs;
};
WMEURMPT.URT_MC = function(id, lon, lat) {
this.id = id;
this.lonlat = new OpenLayers.LonLat(lon, lat);
this.blackListed = false;
this.alreadyVisited = false;
this.lastVisitCommentsCount = 0;
this.refreshFromServer = refreshFromServer;
this.refreshFromWMEData = refreshFromWMEData;
this.distanceToMapCenter = 0;
this.clean = clean;
this.updateDistanceToMapCenter = updateDistanceToMapCenter;
function clean() {
if (this.data.hasOwnProperty("bounds") == true) {
delete this.data.bounds;
}
if (this.data.hasOwnProperty("geometry") == true) {
delete this.data.geometry;
}
}
function updateDistanceToMapCenter() {
if (!WMEURMPT.isComputeDistances) {
return;
}
if (!WMEURMPT.mapCenterLonLat) {
WMEURMPT.mapCenterLonLat = OpenLayers.Layer.SphericalMercator.inverseMercator(WMEURMPT.wazeMap.olMap.center.lon, WMEURMPT.wazeMap.olMap.center.lat);
}
var p1 = new OpenLayers.Geometry.Point(WMEURMPT.mapCenterLonLat.lon, WMEURMPT.mapCenterLonLat.lat);
var p2 = new OpenLayers.Geometry.Point(this.lonlat.lon, this.lonlat.lat);
var line = new OpenLayers.Geometry.LineString([p1, p2]);
this.distanceToMapCenter = line.getGeodesicLength(new OpenLayers.Projection("EPSG:4326"));
}
function refreshFromWMEData(forceSession) {
var theMC = WMEURMPT.wazeModel.mapComments.objects[this.id];
WMEURMPT.logDebug("refreshFromWME MC:", theMC);
if (theMC == null) {
return false;
}
this.data = {};
["body", "createdBy", "createdOn", "endDate", "isFollowing", "subject", "updatedBy", "updatedOn"].forEach(function(p) {
this.data[p] = theMC.attributes[p];
}, this);
this.data.createdByName = "Unknown";
for (var u in theMC.model.users.objects) {
if (theMC.model.users.objects[u].id == this.data.createdBy) {
this.data.createdByName = theMC.model.users.objects[u].userName;
break;
}
}
this.data.updatedByName = "Unknown";
for (var u in theMC.model.users.objects) {
if (theMC.model.users.objects[u].id == this.data.updatedBy) {
this.data.updatedByName = theMC.model.users.objects[u].userName;
break;
}
}
this.data.conversation = [];
if (theMC.attributes.hasOwnProperty("conversation")) {
theMC.attributes.conversation.forEach(function(c, i) {
if (c.userID == WMEURMPT.me.id) {
c.userName = WMEURMPT.me.userName;
if (i == theMC.attributes.conversation.length - 1) {
this.lastVisitCommentsCount = theMC.attributes.conversation.length;
}
}
this.data.conversation.push(JSON.parse(JSON.stringify(c)));
this.data.conversation[this.data.conversation.length - 1].userName = theMC.model.users.objects[c.userID].userName;
}, this);
}
if (theMC.hasOwnProperty("state") && theMC.state == "DELETE") {
WMEURMPT.MCList.splice(WMEURMPT.MCMap[this.id], 1);
WMEURMPT.MCMap = WMEURMPT.listToObject(WMEURMPT.MCList);
this.clean();
WMEURMPT.updateIHMFromMCList();
return;
}
this.clean();
this.updateDistanceToMapCenter();
WMEURMPT.updateIHMFromMCList();
return true;
}
function refreshFromServer() {
var haveChanged = false;
WMEURMPT.log("refresh from server MC.id: " + this.id);
var MCs = WMEURMPT.getMC(this.lonlat.lon, this.lonlat.lat, this.id);
if (MCs != null) {
WMEURMPT.log("MC refresh from server MC.id: " + this.id + ";", MCs);
if (typeof MCs.mapComments !== "undefined") {
for (var i = 0; i < MCs.mapComments.objects.length; i++) {
if (MCs.mapComments.objects[i].id == this.id) {
if (this.data.updatedOn != MCs.mapComments.objects[i].updatedOn) {
haveChanged = true;
}
WMEURMPT.log("refresh from server " + this.id + ";", MCs.mapComments.objects[i]);
this.data = MCs.mapComments.objects[i];
this.data.createdByName = "Unknown";
for (var u in MCs.users.objects) {
if (MCs.users.objects[u].id == this.data.createdBy) {
this.data.createdByName = MCs.users.objects[u].userName;
break;
}
}
this.data.updatedByName = "Unknown";
for (var u in MCs.users.objects) {
if (MCs.users.objects[u].id == this.data.updatedBy) {
this.data.updatedByName = MCs.users.objects[u].userName;
break;
}
}
if (this.data.hasOwnProperty("conversation")) {
this.data.conversation.forEach(function(c, j) {
if (c.userID == WMEURMPT.me.id) {
c.userName = WMEURMPT.me.userName;
if (j == this.data.conversation.length - 1) {
this.lastVisitCommentsCount = this.data.conversation.length;
}
}
for (var u in MCs.users.objects) {
if (MCs.users.objects[u].id == c.userID) {
c.userName = MCs.users.objects[u].userName;
break;
}
}
}, this);
} else {
this.data.conversation = [];
}
}
}
return haveChanged;
}
}
return null;
}
};
WMEURMPT.getMC = function(lon, lat, id) {
var bounds = new OpenLayers.Bounds(lon - 0.01, lat - 0.01, lon + 0.01, lat + 0.01);
var MCs = WMEURMPT.getMPs(bounds);
if (MCs == null) {
return null;
}
if (id != null) {
while (MCs.mapComments.objects.length >= 2) {
for (var i = 0; i < MCs.mapComments.objects.length; i++) {
if (MCs.mapComments.objects[i].id != id) {
MCs.mapComments.objects.splice(i, 1);
break;
}
}
}
if (MCs.mapComments.objects.length == 0) {
return null;
}
if (MCs.mapComments.objects[0].id != id) {
return null;
}
}
return MCs;
};
WMEURMPT.URT_PUR = function(id, lon, lat) {
this.id = id;
this.lonlat = new OpenLayers.LonLat(lon, lat);
this.blackListed = false;
this.alreadyVisited = false;
this.refreshFromServer = refreshFromServer;
this.refreshFromWMEData = refreshFromWMEData;
this.distanceToMapCenter = 0;
this.clean = clean;
this.updateDistanceToMapCenter = updateDistanceToMapCenter;
function clean() {
if (this.data.hasOwnProperty("bounds") == true) {
delete this.data.bounds;
}
if (this.data.hasOwnProperty("geometry") == true) {
delete this.data.geometry;
}
}
function updateDistanceToMapCenter() {
if (!WMEURMPT.isComputeDistances) {
return;
}
if (!WMEURMPT.mapCenterLonLat) {
WMEURMPT.mapCenterLonLat = OpenLayers.Layer.SphericalMercator.inverseMercator(WMEURMPT.wazeMap.olMap.center.lon, WMEURMPT.wazeMap.olMap.center.lat);
}
var p1 = new OpenLayers.Geometry.Point(WMEURMPT.mapCenterLonLat.lon, WMEURMPT.mapCenterLonLat.lat);
var p2 = new OpenLayers.Geometry.Point(this.lonlat.lon, this.lonlat.lat);
var line = new OpenLayers.Geometry.LineString([p1, p2]);
this.distanceToMapCenter = line.getGeodesicLength(new OpenLayers.Projection("EPSG:4326"));
}
function refreshFromWMEData(forceSession) {
var thePUR = WMEURMPT.wazeModel.venues.objects[this.id];
WMEURMPT.logDebug("refreshFromWME PUR:", thePUR);
if (thePUR == null) {
return false;
}
this.data = {};
["categories", "name", "createdBy", "createdOn", "streetID"].forEach(function(p) {
this.data[p] = thePUR.attributes[p] === undefined ? "undefined" : thePUR.attributes[p];
}, this);
this.data.createdByName = "Unknown";
for (var u in thePUR.model.users.objects) {
if (thePUR.model.users.objects[u].id == this.data.createdBy) {
this.data.createdByName = thePUR.model.users.objects[u].userName;
break;
}
}
this.data.updatedByName = "Unknown";
for (var u in thePUR.model.users.objects) {
if (thePUR.model.users.objects[u].id == this.data.updatedBy) {
this.data.updatedByName = thePUR.model.users.objects[u].userName;
break;
}
}
if (thePUR.attributes.hasOwnProperty("venueUpdateRequests") && thePUR.attributes.venueUpdateRequests.length >> 0) {
this.data.venueUpdateRequests = [];
this.data.dateAddedMin = 0;
this.data.dateAddedMax = 0;
for (var n = 0; n < thePUR.attributes.venueUpdateRequests.length; n++) {
if (thePUR.attributes.venueUpdateRequests[n].changed.hasOwnProperty("approved") && thePUR.attributes.venueUpdateRequests[n].changed.approved !== null) {
thePUR.attributes.venueUpdateRequests.splice(n, 1);
continue;
}
this.data.venueUpdateRequests[n] = {};
["createdBy", "dateAdded", "type", "updateType", "subject"].forEach(function(p) {
this.data.venueUpdateRequests[n][p] = thePUR.attributes.venueUpdateRequests[n].attributes[p] === undefined ? "undefined" : thePUR.attributes.venueUpdateRequests[n].attributes[p];
}, this);
this.data.venueUpdateRequests[n].changed = thePUR.attributes.venueUpdateRequests[n].changed;
this.data.venueUpdateRequests[n].createdByName = "Unknown";
for (var u in thePUR.model.users.objects) {
if (thePUR.model.users.objects[u].id == this.data.venueUpdateRequests[n].createdBy) {
this.data.venueUpdateRequests[n].createdByName = thePUR.model.users.objects[u].userName;
break;
}
}
if (this.data.venueUpdateRequests[n].dateAdded << this.data.dateAddedMin) {
this.data.dateAddedMin = this.data.venueUpdateRequests[n].dateAdded;
}
if (this.data.venueUpdateRequests[n].dateAdded >> this.data.dateAddedMax) {
this.data.dateAddedMax = this.data.venueUpdateRequests[n].dateAdded;
}
WMEURMPT.logDebug("this.id: " + this.id + "; this.data.venueUpdateRequests[" + n + "].dateAdded: " + this.data.venueUpdateRequests[n].dateAdded, this);
}
} else {
if (thePUR.attributes.hasOwnProperty("venueUpdateRequests") && thePUR.attributes.venueUpdateRequests.length == 0) {
WMEURMPT.PURList.splice(WMEURMPT.PURMap[this.id], 1);
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
this.clean();
WMEURMPT.updateIHMFromPURList();
return;
}
}
this.clean();
this.updateDistanceToMapCenter();
WMEURMPT.updateIHMFromPURList();
return true;
}
function refreshFromServer() {
var haveChanged = false;
WMEURMPT.log("refresh from server " + this.id);
var PURs = WMEURMPT.getPUR(this.lonlat.lon, this.lonlat.lat, this.id);
if (PURs != null) {
WMEURMPT.logDebug("refresh from server " + this.id + ";", PURs);
if (typeof PURs.venues !== "undefined") {
for (var i = 0; i < PURs.venues.objects.length; i++) {
if (PURs.venues.objects[i].id == this.id) {
if (this.data.updatedOn != PURs.venues.objects[i].updatedOn) {
haveChanged = true;
}
WMEURMPT.logDebug("refresh from server " + this.id + ";", PURs.venues.objects[i]);
this.data = PURs.venues.objects[i];
if (this.data.name === undefined) {
this.data["name"] = "undefined";
}
this.data.createdByName = "Unknown";
for (var u in PURs.users.objects) {
if (PURs.users.objects[u].id == this.data.createdBy) {
this.data.createdByName = PURs.users.objects[u].userName;
break;
}
}
this.data.updatedByName = "Unknown";
for (var u in PURs.users.objects) {
if (PURs.users.objects[u].id == this.data.updatedBy) {
this.data.updatedByName = PURs.users.objects[u].userName;
break;
}
}
if (PURs.venues.objects[i].hasOwnProperty("venueUpdateRequests") && PURs.venues.objects[i].venueUpdateRequests.length >> 0) {
this.data.venueUpdateRequests = [];
this.data.dateAddedMin = 0;
this.data.dateAddedMax = 0;
for (var n = 0; n < PURs.venues.objects[i].venueUpdateRequests.length; n++) {
this.data.venueUpdateRequests[n] = {};
["createdBy", "dateAdded", "type", "updateType", "subject"].forEach(function(p) {
this.data.venueUpdateRequests[n][p] = PURs.venues.objects[i].venueUpdateRequests[n].attributes[p] === undefined ? "undefined" : PURs.venues.objects[i].venueUpdateRequests[n].attributes[p];
}, this);
this.data.venueUpdateRequests[n].changed = PURs.venues.objects[i].venueUpdateRequests[n].changed;
this.data.venueUpdateRequests[n].createdByName = "Unknown";
for (var u in PURs.model.users.objects) {
if (PURs.model.users.objects[u].id == this.data.venueUpdateRequests[n].createdBy) {
this.data.venueUpdateRequests[n].createdByName = PURs.model.users.objects[u].userName;
break;
}
}
if (this.data.venueUpdateRequests[n].dateAdded << this.data.dateAddedMin) {
this.data.dateAddedMin = this.data.venueUpdateRequests[n].dateAdded;
}
if (this.data.venueUpdateRequests[n].dateAdded >> this.data.dateAddedMax) {
this.data.dateAddedMax = this.data.venueUpdateRequests[n].dateAdded;
}
}
}
WMEURMPT.logDebug("this: ", this);
}
}
return haveChanged;
}
}
return null;
}
};
WMEURMPT.getPUR = function(lon, lat, id) {
var bounds = new OpenLayers.Bounds(lon - 0.01, lat - 0.01, lon + 0.01, lat + 0.01);
var PURs = WMEURMPT.getMPs(bounds);
if (PURs == null) {
return null;
}
if (id != null) {
WMEURMPT.log("getPUR PURs.venues :", PURs.venues);
while (PURs.venues.objects.length >= 2) {
for (var i = 0; i < PURs.venues.objects.length; i++) {
if (PURs.venues.objects[i].id != id) {
PURs.venues.objects.splice(i, 1);
break;
}
}
}
if (PURs.venues.objects.length == 0) {
return null;
}
if (PURs.venues.objects[0].id != id) {
return null;
}
}
return PURs;
};
WMEURMPT.URT_AREA = function() {
this.name = "";
this.category = "";
this.subset = false;
this.parent = "";
this.geometryWKT = "";
this.geometryOL = null;
this.getGeometryFromServer = getGeometryFromServer;
this.getCategoryElementsFromServer = getCategoryElementsFromServer;
this.isInside = isInside;
function getGeometryFromServer(callback, serverIndex) {
if (typeof serverIndex === "undefined" || serverIndex == null) {
serverIndex = 0;
}
if (serverIndex >= WMEURMPT.servers.length) {
callback(null);
return;
}
var url = WMEURMPT.servers[serverIndex].url + "getArea.php?category=" + this.category + (this.subset == true ? "&subset=" + this.parent : "") + "&name=" + this.name;
var context = this;
WMEURMPT.log("Try to donwload area from server " + WMEURMPT.servers[serverIndex].name);
downloadHelper.add(url, function(data) {
if (data.status == "success") {
try {
var jsonObj = JSON.parse(data.data);
context.geometryWKT = jsonObj.geometry;
callback(context);
} catch (e) {
WMEURMPT.log("Error while getting area from server" + WMEURMPT.servers[serverIndex].name + "!", e);
context.getGeometryFromServer(callback, serverIndex + 1);
}
} else {
context.getGeometryFromServer(callback, serverIndex + 1);
}
}, null);
}
function getCategoryElementsFromServer(callback, serverIndex) {
if (typeof serverIndex === "undefined" || serverIndex == null) {
serverIndex = 0;
}
if (serverIndex >= WMEURMPT.servers.length) {
WMEURMPT.errorOnCountryServer();
return;
}
var url = WMEURMPT.servers[serverIndex].url + "getArea.php?category=" + this.category;
var context = this;
WMEURMPT.log("Try to donwload area list from server " + WMEURMPT.servers[serverIndex].name);
var context = this;
downloadHelper.add(url, function(data) {
if (data.status == "success") {
try {
callback(JSON.parse(data.data));
} catch (e) {
WMEURMPT.log("Error while getting categories from server!", e);
context.getCategoryElementsFromServer(callback, serverIndex + 1);
}
} else {
context.getCategoryElementsFromServer(callback, serverIndex + 1);
}
}, null);
}
function isInside(lonlat) {
var xy = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat);
var filterArea = [];
if (this.category == "editableArea" || this.category == "driveArea" || this.category == "managedArea") {
}
if (this.category == "country" || this.category == "custom") {
if (this.geometryOL != null) {
filterArea = this.geometryOL.geometry.components;
}
}
var inside = false;
for (var a = 0; a < filterArea.length; a++) {
if (xy.x >= filterArea[a].bounds.left && xy.x <= filterArea[a].bounds.right && xy.y >= filterArea[a].bounds.bottom && xy.y <= filterArea[a].bounds.top) {
if (filterArea[a].hasOwnProperty("bintreeContainsPoint") == false) {
if (filterArea[a].containsPoint(xy)) {
return true;
}
} else {
if (filterArea[a].bintreeContainsPoint(xy)) {
return true;
}
}
}
}
return false;
}
};
WMEURMPT.info = function(text) {
text = typeof text !== "undefined" ? text : "";
var div = WMEURMPT.getId("urt-info");
div.innerHTML = text;
};
WMEURMPT.saveOptions = function() {
var options = {filterUR:WMEURMPT.currentURFilter, filterMP:WMEURMPT.currentMPFilter, filterMC:WMEURMPT.currentMCFilter, filterPUR:WMEURMPT.currentPURFilter, filterURKeyword:WMEURMPT.currentURKeyWord, filterMCKeyword:WMEURMPT.currentMCKeyWord, filterPURKeyword:WMEURMPT.currentPURKeyWord, filterURLimitTo:WMEURMPT.currentURLimitTo, filterMPLimitTo:WMEURMPT.currentMPLimitTo, filterMCLimitTo:WMEURMPT.currentMCLimitTo, filterPURLimitTo:WMEURMPT.currentPURLimitTo, displayLegend:WMEURMPT.displayLegend,
isEnabled:WMEURMPT.isEnabled, isAutoScan:WMEURMPT.isAutoScan, isComputeDistances:WMEURMPT.isComputeDistances, scanUR:WMEURMPT.scanUR, scanMP:WMEURMPT.scanMP, scanMC:WMEURMPT.scanMC, scanPUR:WMEURMPT.scanPUR, filterUROnlyType:WMEURMPT.currentUROnlyType, filterMPOnlyType:WMEURMPT.currentMPOnlyType, filterPUROnlyCategorie:WMEURMPT.currentPUROnlyCategorie, filterUROnlyArea:WMEURMPT.currentUROnlyArea, filterMPOnlyArea:WMEURMPT.currentMPOnlyArea, filterMCOnlyArea:WMEURMPT.currentMCOnlyArea, filterPUROnlyArea:WMEURMPT.currentPUROnlyArea,
filterURCommentsCount:WMEURMPT.currentURCommentsCount, URDescriptionMaxLength:WMEURMPT.URDescriptionMaxLength, MPDescriptionMaxLength:WMEURMPT.MPDescriptionMaxLength, MCSubjectMaxLength:WMEURMPT.MCSubjectMaxLength, MCBodyMaxLength:WMEURMPT.MCBodyMaxLength, PURCategoriesMaxLength:WMEURMPT.PURCategoriesMaxLength, PURNameMaxLength:WMEURMPT.PURNameMaxLength, taggedURList:WMEURMPT.taggedURList, URAgeColIsLastComment:WMEURMPT.URAgeColIsLastComment};
WMEURMPT.log("save options: ", options);
GMStorageHelper.save("WMEURMPTracking_options", JSON.stringify(options));
};
WMEURMPT.saveAreas = function() {
GMStorageHelper.save("WMEURMPTracking_areaList", JSON.stringify(WMEURMPT.areaList, function(key, value) {
if (key == "geometryOL") {
return;
}
return value;
}));
};
WMEURMPT.saveURList = function() {
GMStorageHelper.save("WMEURMPTracking_URList", JSON.stringify(WMEURMPT.URList));
};
WMEURMPT.saveMPList = function() {
GMStorageHelper.save("WMEURMPTracking_MPList", JSON.stringify(WMEURMPT.MPList));
};
WMEURMPT.saveMCList = function() {
GMStorageHelper.save("WMEURMPTracking_MCList", JSON.stringify(WMEURMPT.MCList));
};
WMEURMPT.savePURList = function() {
GMStorageHelper.save("WMEURMPTracking_PURList", JSON.stringify(WMEURMPT.PURList));
};
WMEURMPT.saveURMPLists = function() {
WMEURMPT.saveURList();
WMEURMPT.saveMPList();
WMEURMPT.saveMCList();
WMEURMPT.savePURList();
};
WMEURMPT.save = function() {
delete localStorage.WMEURTracking_options;
delete localStorage.WMEURTracking_URList;
delete localStorage.WMEURTracking_MPList;
delete localStorage.WMEURMPTracking_URList;
delete localStorage.WMEURMPTracking_MPList;
delete localStorage.WMEURMPTracking_PURList;
delete localStorage.WMEURMPTracking_options;
delete localStorage.WMEURMPTracking_URList_z;
delete localStorage.WMEURMPTracking_MPList_z;
WMEURMPT.saveOptions();
WMEURMPT.saveAreas();
WMEURMPT.saveURMPLists();
WMEURMPT.log("Options and data saved");
};
WMEURMPT.optionsLoaded = function(data) {
if (data.data != null) {
var options = JSON.parse(data.data);
WMEURMPT.log("GM options:", options);
WMEURMPT.currentURFilter = typeof options.filterUR === "undefined" ? WMEURMPT.URFilterList.hideClosed + WMEURMPT.URFilterList.hideBlacklisted : options.filterUR;
WMEURMPT.currentMPFilter = typeof options.filterMP === "undefined" ? WMEURMPT.MPFilterList.hideClosed + WMEURMPT.MPFilterList.hideBlacklisted : options.filterMP;
WMEURMPT.currentMCFilter = typeof options.filterMC === "undefined" ? WMEURMPT.MCFilterList.hideBlacklisted : options.filterMC;
WMEURMPT.currentPURFilter = typeof options.filterPUR === "undefined" ? WMEURMPT.PURFilterList.hideBlacklisted : options.filterPUR;
WMEURMPT.currentURKeyWord = typeof options.filterURKeyword === "undefined" ? WMEURMPT.loginManager.user.userName : options.filterURKeyword;
WMEURMPT.currentMCKeyWord = typeof options.filterMCKeyword === "undefined" ? WMEURMPT.loginManager.user.userName : options.filterMCKeyword;
WMEURMPT.currentPURKeyWord = typeof options.filterPURKeyword === "undefined" ? WMEURMPT.loginManager.user.userName : options.filterPURKeyword;
WMEURMPT.currentURLimitTo = typeof options.filterURLimitTo === "undefined" ? 100 : options.filterURLimitTo;
WMEURMPT.currentMPLimitTo = typeof options.filterMPLimitTo === "undefined" ? 100 : options.filterMPLimitTo;
WMEURMPT.currentMCLimitTo = typeof options.filterMCLimitTo === "undefined" ? 100 : options.filterMCLimitTo;
WMEURMPT.currentPURLimitTo = typeof options.filterPURLimitTo === "undefined" ? 100 : options.filterPURLimitTo;
WMEURMPT.displayLegend = typeof options.displayLegend === "undefined" ? true : options.displayLegend;
WMEURMPT.isEnabled = typeof options.isEnabled === "undefined" ? true : options.isEnabled;
WMEURMPT.countryFilterList = typeof options.countryFilterList === "undefined" ? [] : options.countryFilterList;
WMEURMPT.isComputeDistances = typeof options.isComputeDistances === "undefined" ? true : options.isComputeDistances;
WMEURMPT.isAutoScan = typeof options.isAutoScan === "undefined" ? true : options.isAutoScan;
WMEURMPT.scanUR = typeof options.scanUR === "undefined" ? true : options.scanUR;
WMEURMPT.scanMP = typeof options.scanMP === "undefined" ? true : options.scanMP;
WMEURMPT.scanMC = typeof options.scanMC === "undefined" ? true : options.scanMC;
WMEURMPT.scanPUR = typeof options.scanPUR === "undefined" ? true : options.scanPUR;
WMEURMPT.currentUROnlyType = typeof options.filterUROnlyType === "undefined" ? WMEURMPT.currentUROnlyType : options.filterUROnlyType;
WMEURMPT.currentMPOnlyType = typeof options.filterMPOnlyType === "undefined" ? WMEURMPT.currentMPOnlyType : options.filterMPOnlyType;
WMEURMPT.currentPUROnlyCategorie = typeof options.filterPUROnlyCategorie === "undefined" ? WMEURMPT.currentPUROnlyCategorie : options.filterPUROnlyCategorie;
WMEURMPT.currentUROnlyArea = typeof options.filterUROnlyArea === "undefined" ? WMEURMPT.currentUROnlyArea : options.filterUROnlyArea;
WMEURMPT.currentMPOnlyArea = typeof options.filterMPOnlyArea === "undefined" ? WMEURMPT.currentMPOnlyArea : options.filterMPOnlyArea;
WMEURMPT.currentMCOnlyArea = typeof options.filterMCOnlyArea === "undefined" ? WMEURMPT.currentMCOnlyArea : options.filterMCOnlyArea;
WMEURMPT.currentPUROnlyArea = typeof options.filterPUROnlyArea === "undefined" ? WMEURMPT.currentPUROnlyArea : options.filterPUROnlyArea;
WMEURMPT.currentURCommentsCount = typeof options.filterURCommentsCount === "undefined" ? WMEURMPT.currentURCommentsCount : options.filterURCommentsCount;
WMEURMPT.URDescriptionMaxLength = typeof options.URDescriptionMaxLength === "undefined" ? WMEURMPT.URDescriptionMaxLength : options.URDescriptionMaxLength;
WMEURMPT.MPDescriptionMaxLength = typeof options.MPDescriptionMaxLength === "undefined" ? WMEURMPT.MPDescriptionMaxLength : options.MPDescriptionMaxLength;
WMEURMPT.MCSubjectMaxLength = typeof options.MCSubjectMaxLength === "undefined" ? WMEURMPT.MCSubjectMaxLength : options.MCSubjectMaxLength;
WMEURMPT.MCBodyMaxLength = typeof options.MCBodyMaxLength === "undefined" ? WMEURMPT.MCBodyMaxLength : options.MCBodyMaxLength;
WMEURMPT.PURCategoriesMaxLength = typeof options.PURCategoriesMaxLength === "undefined" ? WMEURMPT.PURCategoriesMaxLength : options.PURCategoriesMaxLength;
WMEURMPT.PURNameMaxLength = typeof options.PURNameMaxLength === "undefined" ? WMEURMPT.PURNameMaxLength : options.PURNameMaxLength;
WMEURMPT.taggedURList = typeof options.taggedURList === "undefined" ? WMEURMPT.taggedURList : options.taggedURList;
WMEURMPT.URAgeColIsLastComment = typeof options.URAgeColIsLastComment === "undefined" ? WMEURMPT.URAgeColIsLastComment : options.URAgeColIsLastComment;
}
};
WMEURMPT.urlistLoaded = function(data) {
if (data.data != null) {
WMEURMPT.URList = JSON.parse(data.data);
for (var i = 0; i < WMEURMPT.URList.length; i++) {
var urtmp = new WMEURMPT.URT_UR(WMEURMPT.URList[i].id, WMEURMPT.URList[i].lonlat.lon, WMEURMPT.URList[i].lonlat.lat);
WMEURMPT.URList[i].refreshFromServer = urtmp.refreshFromServer;
WMEURMPT.URList[i].refreshFromWMEData = urtmp.refreshFromWMEData;
WMEURMPT.URList[i].clean = urtmp.clean;
WMEURMPT.URList[i].updateDistanceToMapCenter = urtmp.updateDistanceToMapCenter;
if (WMEURMPT.URList[i].hasOwnProperty("lastVisitCommentsCount") == false) {
WMEURMPT.URList[i].lastVisitCommentsCount = 0;
}
if (WMEURMPT.URList[i].data.hasOwnProperty("session") == false) {
WMEURMPT.log("Bad UR record. Trying to fix it...", WMEURMPT.URList[i].data);
WMEURMPT.URList[i].refreshFromServer();
WMEURMPT.log("Bad UR record. should be fixed:", WMEURMPT.URList[i].data);
}
}
WMEURMPT.URMap = WMEURMPT.listToObject(WMEURMPT.URList);
}
};
WMEURMPT.mplistLoaded = function(data) {
if (data.data != null) {
WMEURMPT.MPList = JSON.parse(data.data);
for (var i = 0; i < WMEURMPT.MPList.length; i++) {
var mptmp = new WMEURMPT.URT_MP(WMEURMPT.MPList[i].id, WMEURMPT.MPList[i].lonlat.lon, WMEURMPT.MPList[i].lonlat.lat);
WMEURMPT.MPList[i].refreshFromServer = mptmp.refreshFromServer;
WMEURMPT.MPList[i].refreshFromWMEData = mptmp.refreshFromWMEData;
WMEURMPT.MPList[i].clean = mptmp.clean;
WMEURMPT.MPList[i].updateDistanceToMapCenter = mptmp.updateDistanceToMapCenter;
}
WMEURMPT.MPMap = WMEURMPT.listToObject(WMEURMPT.MPList);
}
};
WMEURMPT.mclistLoaded = function(data) {
if (data.data != null) {
WMEURMPT.MCList = JSON.parse(data.data);
for (var i = 0; i < WMEURMPT.MCList.length; i++) {
var mctmp = new WMEURMPT.URT_MC(WMEURMPT.MCList[i].id, WMEURMPT.MCList[i].lonlat.lon, WMEURMPT.MCList[i].lonlat.lat);
if (WMEURMPT.MCList[i].hasOwnProperty("lastVisitCommentsCount") == false) {
WMEURMPT.MCList[i].lastVisitCommentsCount = 0;
}
WMEURMPT.MCList[i].refreshFromServer = mctmp.refreshFromServer;
WMEURMPT.MCList[i].refreshFromWMEData = mctmp.refreshFromWMEData;
WMEURMPT.MCList[i].clean = mctmp.clean;
WMEURMPT.MCList[i].updateDistanceToMapCenter = mctmp.updateDistanceToMapCenter;
}
WMEURMPT.MCMap = WMEURMPT.listToObject(WMEURMPT.MCList);
}
};
WMEURMPT.purlistLoaded = function(data) {
if (data.data != null) {
WMEURMPT.PURList = JSON.parse(data.data);
for (var i = 0; i < WMEURMPT.PURList.length; i++) {
var purtmp = new WMEURMPT.URT_PUR(WMEURMPT.PURList[i].id, WMEURMPT.PURList[i].lonlat.lon, WMEURMPT.PURList[i].lonlat.lat);
WMEURMPT.PURList[i].refreshFromServer = purtmp.refreshFromServer;
WMEURMPT.PURList[i].refreshFromWMEData = purtmp.refreshFromWMEData;
WMEURMPT.PURList[i].clean = purtmp.clean;
WMEURMPT.PURList[i].updateDistanceToMapCenter = purtmp.updateDistanceToMapCenter;
}
WMEURMPT.PURMap = WMEURMPT.listToObject(WMEURMPT.PURList);
}
};
WMEURMPT.arealistLoaded = function(data) {
if (data.data != null) {
WMEURMPT.areaList = JSON.parse(data.data);
for (var c = 0; c < WMEURMPT.areaList.country.length; c++) {
var areatmp = new WMEURMPT.URT_AREA;
WMEURMPT.areaList.country[c].geometryOL = null;
WMEURMPT.areaList.country[c].getGeometryFromServer = areatmp.getGeometryFromServer;
WMEURMPT.areaList.country[c].getCategoryElementsFromServer = areatmp.getCategoryElementsFromServer;
WMEURMPT.areaList.country[c].isInside = areatmp.isInside;
}
for (var c = 0; c < WMEURMPT.areaList.custom.length; c++) {
var areatmp = new WMEURMPT.URT_AREA;
WMEURMPT.areaList.custom[c].geometryOL = null;
WMEURMPT.areaList.custom[c].getGeometryFromServer = areatmp.getGeometryFromServer;
WMEURMPT.areaList.custom[c].getCategoryElementsFromServer = areatmp.getCategoryElementsFromServer;
WMEURMPT.areaList.custom[c].isInside = areatmp.isInside;
}
}
window.setTimeout(WMEURMPT.initialiseURT, 1000);
};
WMEURMPT.load = function() {
try {
WMEURMPT.dictionary['"' + WMEURMPT.me.userName + '"'] = "~Z";
var revDictionnary = WMEURMPT.invertObject(WMEURMPT.dictionary);
GMStorageHelper.load("WMEURMPTracking_options", WMEURMPT.optionsLoaded);
GMStorageHelper.load("WMEURMPTracking_URList", WMEURMPT.urlistLoaded);
GMStorageHelper.load("WMEURMPTracking_MPList", WMEURMPT.mplistLoaded);
GMStorageHelper.load("WMEURMPTracking_MCList", WMEURMPT.mclistLoaded);
GMStorageHelper.load("WMEURMPTracking_PURList", WMEURMPT.purlistLoaded);
GMStorageHelper.load("WMEURMPTracking_areaList", WMEURMPT.arealistLoaded);
} catch (err) {
WMEURMPT.log("Error while loading data from storage: ", err);
}
};
WMEURMPT.PopupPannel = function(name, w, h, bgcolor) {
this.name = name;
this.w = w;
this.h = h;
this.pannel_elt = WMEURMPT.createElement("div", "popup-pannel-" + name);
this.pannel_elt.className = "popup-pannel-class-" + name;
this.pannel_elt.style.width = w;
this.pannelTrigger_elt = WMEURMPT.createElement("div", "popup-pannel-trigger-" + name);
this.pannelTrigger_elt.className = "popup-pannel-trigger-class-" + name;
this.pannelTrigger_elt.onclick = WMEURMPT.getFunctionWithArgs(trigger_mouseover, [name, w, h]);
this.pannelTrigger_elt.style.backgroundColor = bgcolor;
this.pannelContents_elt = WMEURMPT.createElement("div", "popup-pannel-contents-" + name);
this.pannelContents_elt.className = "popup-pannel-contents-closed-class-" + name;
this.pannelContents_elt.style.backgroundColor = bgcolor;
this.pannel_elt.appendChild(this.pannelTrigger_elt);
this.pannel_elt.appendChild(this.pannelContents_elt);
this.installInside = installInside;
this.setTriggerInnerHTML = setTriggerInnerHTML;
this.setContentsInnerHTML = setContentsInnerHTML;
function trigger_mouseover(name, w, h) {
var elt = document.getElementById("popup-pannel-contents-" + name);
elt.style.width = w;
elt.style.height = h;
elt.className = "popup-pannel-contents-open-class-" + name;
var triggerElt = document.getElementById("popup-pannel-trigger-" + name);
triggerElt.style.borderBottomRightRadius = "0px";
triggerElt.style.borderBottomLeftRadius = "0px";
window.setTimeout(function() {
document.getElementById("popup-pannel-contents-" + name).onmouseleave = function(e) {
var elementMouseIsOver = document.elementFromPoint(e.clientX, e.clientY);
if (WMEURMPT.isDescendant(this, elementMouseIsOver)) {
return;
}
pannel_mouseleave(name);
};
document.getElementById("popup-pannel-" + name).onmouseleave = function(e) {
var elementMouseIsOver = document.elementFromPoint(e.clientX, e.clientY);
if (WMEURMPT.isDescendant(this, elementMouseIsOver)) {
return;
}
pannel_mouseleave(name);
};
}, 100);
}
function pannel_mouseleave(name) {
var elt = document.getElementById("popup-pannel-contents-" + name);
elt.style.width = "0px";
elt.style.height = "0px";
elt.className = "popup-pannel-contents-closed-class-" + name;
var triggerElt = document.getElementById("popup-pannel-trigger-" + name);
triggerElt.style.borderBottomRightRadius = "5px";
triggerElt.style.borderBottomLeftRadius = "5px";
document.getElementById("popup-pannel-contents-" + name).onmouseleave = null;
document.getElementById("popup-pannel-" + name).onmouseleave = null;
}
function setTriggerInnerHTML(htmltext) {
this.pannelTrigger_elt.innerHTML = htmltext;
}
function setContentsInnerHTML(htmltext) {
this.pannelContents_elt.innerHTML = htmltext;
}
function installInside(node) {
var cssElt = WMEURMPT.createElement("style");
cssElt.type = "text/css";
var css = "";
css += ".popup-pannel-class-" + this.name + " { margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; padding-bottom: 2px; padding-top: 2px; padding-left: 5px; padding-right: 5px; }";
css += ".popup-pannel-trigger-class-" + this.name + " { cursor: pointer; align: right; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; padding-bottom: 2px; padding-top: 2px; padding-left: 5px; padding-right: 5px;}";
css += ".popup-pannel-contents-closed-class-" + this.name + " { float: left; position: relative; left: 0px; width: 0px; height: 0px; overflow: hidden;}";
css += ".popup-pannel-contents-open-class-" + this.name + " { float: left; position: relative; left: 0px; width: 0px; height: 0px; overflow: hidden; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; padding-bottom: 2px; padding-top: 2px; padding-left: 5px; padding-right: 5px;}";
cssElt.innerHTML = css;
document.body.appendChild(cssElt);
node.appendChild(this.pannel_elt);
}
};
WMEURMPT.dict_traduce = function(str, dict) {
str = str.replace(/,"distanceToMapCenter":\d*\.\d*/g, "");
str = str.replace(/,"descriptionOffset":-?\d*/g, "");
str = str.replace(/(\d*\.\d{6})\d+/g, "$1");
for (var word in dict) {
if (dict.hasOwnProperty(word)) {
str = str.replace(new RegExp(word, "g"), dict[word]);
}
}
return str;
};
WMEURMPT.dictionary = {'"lonlat":':"~a", '"blackListed":':"~b", '"alreadyVisited":':"~c", '"lon":':"~d", '"lat":':"~e", '"data":':"~f", '"description":':"~g", '"driveDate":':"~h", '"hasComments":':"~i", '"resolution":':"~j", '"resolvedBy":':"~k", '"resolvedOn":':"~l", '"type":':"~m", '"updatedBy":':"~n", '"updatedOn":':"~o", '"resolvedByName":':"~p", '"session":':"~q", '"comments":':"~r", '"mapUpdateRequestID":':"~s", '"createdOn":':"~t", '"userID":':"~v", '"text":':"~w", '"userName":':"~x", '"isFollowing":':"~y",
"false":"~z", "true":"~A", '"open":':"~B", "null":"~C", '"problem":':"~D", '"priority":':"~E", '"problemType":':"~F", '"weight":':"~G", '"id":':"~H", '"descriptionOffset":':"~I", '"Reporter"':"~J", '"Unknown"':"~K", '"updated":':"~L", '"rank":':"~M", '"permissions":':"~N", '"version":':"~O", '"isReporterFollowing":':"~P", '"lastVisitCommentsCount":':"~Q", '"problem"':"~R", '"turnProblem"':"~S"};
WMEURMPT.rl4cp = 2;
WMEURMPT.shuffleArray(WMEURMPT.servers);
WMEURMPT.log("Ready");
WMEURMPT.bootstrapURT();
}
var WMEURMPT_Injected_script = document.createElement("script");
WMEURMPT_Injected_script.textContent = "" + WMEURMPT_Injected.toString() + " \n" + "WMEURMPT_Injected();";
WMEURMPT_Injected_script.setAttribute("type", "application/javascript");
document.body.appendChild(WMEURMPT_Injected_script);