WME Speedhelper

Makes inputting speed data easier

目前為 2015-11-23 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name           WME Speedhelper
// @description    Makes inputting speed data easier
// @namespace      [email protected]
// @grant          none
// @grant          GM_info
// @version        0.4.1
// @match          https://editor-beta.waze.com/*editor/*
// @match          https://www.waze.com/*editor/*
// @author         Broos Gert '2015
// @license        MIT/BSD/X11
// @icon			data:image/png;base64,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
// ==/UserScript==
/* Changelog

*/
var VERSION = '0.4.1';

// Add Google Varela Round font to make sure signs look the same everywhere (less hassle)
WebFontConfig = {google:{families:['Varela+Round::latin' ]}};
(function() {
    var wf = document.createElement('script');
    wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
        '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
    wf.type = 'text/javascript';
    wf.async = 'true';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(wf, s);
})();

/* Borden base64 */
var mssimg = 'data:image/png;base64,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';
var BGa = ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMS8wOS8xNWB5Zg4AAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAB/ElEQVRYhe2YPWjbQBiGnwvJEPCQzaM2TR27FDxoz6ItSyEeuha6du6Q1aarA+pUuhlKdlEKXQrt0EWeLDK0WWICIYE45OtgnTifT6otJKShLxycDt17D9/96DspEaEL2q/acabUAHhuNf/2RT5V8VO7RGSm1BkwBPqAKnn1D3ABvPNF0tpAZkpNgFN2j6AAX4DTfwGVgmTh/wwc7Qhg6xF4WTZthSAzpU6Aj1hT0AtDemHIYRBw4HlrfZZpyn0cczudcjudumzPfZFXzgFFZKMkcJLAUwKiy2UQyMN8LtvqYT6XyyAQ0yMrE9eYLoiBDXE9Gm0NYOt6NHLBvNkGZGF2uomiyhBaN1Fkgzwl4BWCJDCpKxK2HJH5UQayNNdE3XKsmYEee8/YJWcY50Q/iop2WmU5PN/ryp7RONSVXhhubM06dOB59MLQbHrmAumbIE3J8t7PDs0VSPaQH1yHQdAYiMP7OAfB+oo2MS0l3i9MkNb1H8SWBvluNi7TrXKZSnJ4f8tBfJGvrJIYAO7juDEQh/dFDpLpSlcKcolaZHk/ZkFYA4nMl5uYnmWa2iC/dCUH8UXeskrpALgaDmsHcXi+3gDJ9EFX7uKYxXhcG8RiPOZufX381NMCdDQxki6litJS8tyZ60T3L1gWULtXTgdQu5fwAqj2fks0qb9wkQP7KV35ewAAAABJRU5ErkJggg==', '34|34|10|visible']; // Global (red circle)
var BGb = ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAiCAYAAAAd6YoqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMS8wOS8xNWB5Zg4AAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAALu0lEQVRYhd2YeXRV1b3HP/ucc8+5N8m9NxMEiRDmQaiIhCcSAwVfoELRQnH2DUWfladSqsW++vTRR5+0lkGU9Ry6rLiswxIqIoMoRX0yGEBAEBYRWBYJgQBJyHBzc8ez9/tj30xkAPpnf39kZd199m//vr/9G777J5RS/D2I1fzP0QNbh/W8Kv8Jr+N1DEMklFICEFeoTwlQCmEIhHm5+5VA72r9XAkBkWjMg1Km1+dVqlWXEsLwxOPRUM35s4v6DS8+BiCUUhzat22CJ3vw8u17qsaEm5LKsAz1N4BoMQIQba3qXgRSKaRsA8TQWhQKoQTiIk1uQpIVdCgem/1lY+XhR0aPK9kjlFLEGir2/PHDurEPz1kPOV4QQptzpWIIDb+zvUp1rbN5jyHAlVAbBdOASBz8DgQccNtslgrqYrz0+m3cO9lb6s8ZMN4CsB1b1NZFIcsL+YH2my4LQMqQCxGIumC2BYB2TG4aeAyQ3YBxFbZtMqSwN9G4y7QJfXl3y7ecO1qj7RLo/aYAGqipiWCafj+kciQajSmPbWqPSKW9dyWSUJCQ/PCWwfzDiB40hGPaMgWOY1JbH+NPG48RiiQ1mE6dIaAhihX08dbyqfg8Bp/vq2TmlEH876qv+PO6o9rRjqnBGAKPx0ApFW0BIqXqQvtFHoPOw6MpwZjv5TFr6kBWbzhKU0JiWgYIQbg2yt3TBzFz6iDeWH0YLA8dg15BbQSfx+DphwvJDjj8/JltbPrzEYpKBrJy0SRm/OMAfvbbndRVh8Fvt81g0QKkWzEEJCWE4vqmAo6+2mZAUiFMwYzpgzjyVSU71pZh9spApEJKNUR5tSHKUwuK+GjrXznflLgo9BQBYOyEAp5dcBOGKSic8TbnjtdAnyBbPzhK4e4KNr4xi12rZ/Pfz+9iy+cnqUlKDLM1IbsHkopbwgmGDs7CYxocPn5Be6RZkpIh/bO5cVgP6nv5mfrhvdiOhZnKYImg4myI3lkOE4v7suaDo5DhaXGESEgm3DyApT8fR27Qyw13riEvzUO/qYM49F0dQ6cMwNeUZNrcjZStv5vFC8bjy/Ty2srduEnZcjPdA0kl8MwfDWP5fxRhWyaPLt7G2g3HIejoD5KSkSN7sHv/Wc5UNfLSwu93UPPuuRBL3zzELeOuZs3aslRV1EiEY7F/72numruRRx4aS5+CIC88OQG/bTLzFx/zylMTuG5YD0bdsZq/7K5g0YtfYrgK0m19I+pygCQkKLhnxhD65WUA8G+zhrP2vTJQrXF6oS7KnMeuIRyJd6pm8th8rh2Uw+Yd5R3KsERxpryBSK4PANtrkRew8dkWtsckN+jFI8CfbmOZBhXnw6jGBLi67V7ejdi6rq588yCFw3Pxp9m8+l4ZOFarV22T3XtOs6fsPL2yfXz/X9cRlwrL1olQXxfl/lnDmV0ygFfeLwOvR+tOSl0hbRPSPaT5HTLSPUTrYtzzy0/w+Sy+PlrNw7/dTm6ml/LKEOlei2DAoQ4glmznkEvciIsRdAjHJfOXlbLn63NUVoQgYLeWaAGxSJKa+hiugs+3l4OUkJbKgzMh/jrmKhJSUdsQ0z3HlWT6HSxDUNMYRwHSVZimPvOTLd/iyfbRI+jw6affEYsmSe+VjuUx9LGdVM6uy65UUBtl/k9Gs/fNWaxbOoVZk/qBku0VGQZumsWvlpcy7zfbINMLOWng82gwA7J4deMxiu57n5r6KHhMOBfm4dtH8IffTMLnSn07zWkjBBgwe+Ywvlh7J48+VAhSIoTAoGvG0TkQATTG+N71vVn0UGHLz9OKCxBCtGdhAjAE1VVhKs+EtMa265ZBOBTn9Mk6pFQtNCQajjFqcDYZXqudccoQ4Cryc9Mo6JXBoKv9kFQIVIf2c2kgUmHaFsuevIl0b2v0VddGUfWxVgAtp6O931xWVXtdOCYE23A4n4ePd1Xgcyzy+gYgKRHafuKhGDTEdBgC52uj0BijsTGOKxVdUdGOQAwBFyI8cOdISsbmt2MrJTdezV33jMRojENTQn/bFkxXzEbRhvbopnr4cBVnq5uYVlwAkQQJV5KV7mHKxH7cNH0whdf0AGDU4GwKbx7ILcUF9MrxIbvgau2BCCAUp2BoLoseGcv+Y9V8XFrRspwTdHh7yRQ+eu02rhvRE8KJK2PJTQm9xzEhmuSPa47w0OwReHLTqL4Q5S+lpxk9Ko85/zQKj2HwypojnDsf5oG7R/DjyQP4ZNdpwrGkZsYXSfuqJYG6CL9fPpWeWT5+8OBGHptzXcvypu3l7Dt4ljtuHUpJUV8OfFWpS3Qnitu7S0BTnJyAA0BNKA556bz89iEeuH0Ey/6zmHmPfMiylbtZhmp5nrXbrxQYhm7EZsekbw9EAJZJVV2UZ18/wFelFZz90TD2Hqki6Uq27T/LiiU7WfLmIeLRhOZd3WVgs87GOAP7Z7Fq8c2A4qdPf0bZ8RpcCfc/uZUd78zm+Ml6Vv5uBxRkgtfSCdOBqHa8/uanekcguT5+tbyUUEMMJ8vGSHVVV0oyAzZke4lHEuBN0f5LhZYQ0JRkYB8/xaPyAOiT46NsVwQGZrH/y9Pc/rOP2PDiNHKDDguf2a4dlGHrQtGdKDAN0+0IRAGWSSgcBykxMRk1NIehBUEA+vf2IxQov0eH4eXkhwIyHT7bcYonnttFwO9QE3MJDMiioTEOuels2vANk0Ix3lnxA66/pgc/efITqs+HNaBLOMu2bRc6q1pSaRrhSiZM7MfNY3pzpqqJcKQNJbjcBBcCokmoCnP/HSN54MfD+ZcZg9nwwi0cWn8XJUV9IRyHnul8vuMkY259B9ux2Lv2bm4tGQgXonq92zGI6gJI6nB/po/nnyjiQijGY8/v4rvKEF7b7PB5t5Jw8buSZ56eyMJ5N5Dpd+iTl8HmL06x4p3DPP7gGILN7/Ee6VTWRph633u89PZB3lg6lRf+ZzJB04AzoeaRRkcYSru183JTG2Hh/HEM6Rvk+dcPsGnzcXKzvN22io4nAI1xxk4o4LYfDuH2B9ez/rMTAIy+pgcvvryPX87bTFygq5BU+p0TcHj29zuZ/s/vM2l8H3Zvvo/i8X3hVL1m4xcNN2KxmNURiCmgKsyNk/vx2L3XcvJcIyue28XVAS8ex0Je6i0vWv5oCTgc+qaaotmr2bHlWzymXhs9KJunHrye+qiL5TFbDXOVLuX5AXbuKmfc9LfYsqOcLe/O5tFHb4BQTANu24eVNDoCaUog0iyWPF6EELBgeSkNZ0Kk5Xq7ryDNXgonIRzTnjMA06CqJkJ9Qwxy0zAtg9fWfcOCpV/w0zmjeX/1bObfey3E27Tr5mN6BwhLybzHt3Df/I9YOG8cryyZAk1J3VNSYESq/FvtjGlKkH+VnyH9M/lwe7l+lvZMwxQC22NgGnry1gFS3MU2DP7r8XFMHN2buYu3c/ibKt0PHBNMC2oiJJKSk6caWPq7HazaeBzTUMSSSpfyi0Uq8Hshzea9jcc4Ul5PSVFfjHRPpzSlGYhOGb9DRVUTK/70Nes+O6Ept21RfSFCKJwgO+hFCNURSDRJfn6AuXeOJDvD5qbC3hw+eDb1AEt5WSoE0DPHB7ZJTSiaChPRnrO1FZViyzk+yr69QFlZlR7YpTp76jJUCxAhhC8ec/UHjsni50o1m02zwGty4lQDcxdto3evjNbXYVvJsDlR3cQvlpYy/vpebPq/E3pvM5UQgNdi675Kautjuj9YxpWV8+b3TWqmhVS4rgSEtwWIm0w05PVMh/o4qJA2NOZCLS0e/eAP+/RwLejtOMBLvTFWLdnJqoSrv/F5QM/OWuStl/fqkWiGo8nj3yLNk526GDnZaUjXrYfUEPvg7k/HBPJHvrB9b8342roohqfzfiGlwugqDAQoqVBSYXRBImVS6jl9VzouU2RC4s/wUDw2pzRWVfbvIwsnHRDNpKv29IH+wvY9neZNy5FSJrsyttsw6G4aeTnrlydKGMKKxePhUG31r/MHjTsOqRv5e5D/B4af1N9kGthnAAAAAElFTkSuQmCC', '34|50|10|hidden']; // residential 
var BGc = ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAiCAYAAACnSgJKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMS8wOS8xNWB5Zg4AAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAD7ElEQVRYhe2Vyyu8exzHX88zmodmmBGiSSSXZiiK3HIpl1lYKEyxYGMhUaN+EeEnt2lKkjqSlcKKh/wDMqVYIlbjskFobAjjMpjnLE7kMqFzOGdxvFff7+fz9H59+3w+PR9BURT+K/k9v8iy3ON0Oru/40GCIGA0GnsrKyt73sBlWe53OBxNgYGBqNVqvvIBgiDg8XhwOBy/AFVlZWXXC/jW1tZvjUbD4ODgl0Ffq7m5OcjpdP4GugDEx4SiKEiS9G1g4I3/i54/ltrlcmG32zk5OaGjowNRFLHb7YiiSH5+PuXl5fT19XF+fo6fnx/t7e1MTk6yv7/P/f09NpsNWZZZXV0lNzcXq9X6wv9RIj40MjLC2toaFRUViKLI0tISR0dH1NXVMTk5yfT0NMvLy+Tk5GCxWHh4eECWZVJTU6mqqkKj0TA3N0dpaSlLS0sMDw/7rIRPeFNTExkZGczPz7O/v09YWBiHh4eMj48TFxdHcnIyHo+HjY0NSkpKMBgMCILA6uoqxcXFhIWFodPpqKmpwWaz4XA4fML9fAU3Nzcxm80cHx9jt9uprq4mPj6e1tZWjEYjm5ubBAQEUF9fz/r6Ov7+/mg0GhoaGnA6nRgMBi4uLlhYWGBqaoqsrKzPwyVJYnR0FEEQGBgYwO12U1paSlJSEgDh4eHExsbS1dWFJEl0dnaSnZ3N4OAgiqLQ3d1NUVERQ0NDpKen09bW9nl4Xl4eeXl5L2Jms/npbDAYmJ6eRlEUBEEA/pqT50pJSfEJ/BD+KJfLhaIoREREAHBwcEBAQAA3Nzfo9Xq0Wi1ut5vT01O0Wi0ej4e9vT2ur6+5vb3FZDIRGRn59+BjY2NIkkR7ezsAo6OjmEwmdnd3OTg4YGJigsbGRqKiojAajWxvbxMaGsrQ0BAxMTH09va+C/c57U9JUUSlUj3dBUFAFEWCgoKQZZmVlRVmZ2fR6XR4vV7u7u6wWq2UlJTQ399Pfn7+e/bvw71e74u/kqIo3N3doVKpsFgslJWVYbFYEEWR+/v7p++ur6+5vLx8FwwflF2r1TIzM4PL5cJkMiFJEmq1mtPTUwoLC0lMTMRgMLCzs0NISMjT8CmK8qnF9C68traWtLQ03G434eHhmM1mJEmioKAAjUaDXq/n7OyMq6sr/P39ubm5AaCvr4/g4OB/Bg8JCaGgoOBN/LmxXq9Hr9e/yEdHR38Ihg96/t36gf/Af+A/8P8J/HErfZde+4vPE7e3t98Kf+3/tNWMRqNtcXHR2tLSolOr1V8O9ng8XF5enmdmZv7xGBOeL31Zlnu2tra6vV7vl7ZAURREUSQhIaG3qqqqxyf839afzGFw15tV9cAAAAAASUVORK5CYII=','34|31|17|visible']; // US
var BGd = ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOnAAADpwBB5RT3QAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTEvMDkvMTVgeWYOAAACVklEQVRYhe2YPUhbURTHf9ckEngOVRHBkCEU3tShQ5eSiqNDackWCgU7dLRDCw6dO3RwKdRRoZ1KNrE4ZFQbXBw6dAqIFIltkZjFB+Iz3A7vg5ub92I+3uvL0P90OMm775dzzr33nAgpJeOg9LAP1oV4BDzQ3L9MKSvDrCcGiUhdiPfAC2AeED2++hvYBd6ZUv6MDKQuxCawwuARlMA+sHIbUE8QN/xfgTsDAui6AZ73SlsoSF2IMvAFJQWZhUlmVheZKhqkjEbgc20rx2XN4mLjAPvsWv94y5TyZd8gQRBza0Wmy1dhPyhQrUqW8/VaXzBdIG469lWIQrVEZvZ0IAhPdjPPyfK27n5tSvnhNpAWSk3c3XsamoZ+1bZyHC/tqC4JFNQCntAgNlWIQrU0MgRAymhQqJZUlwA6wtQBgrNFAacmhk1HkDKzp8ytFVXXfbcMOkHcwyoNzu4YtDD70XT5iszCpOr62AWCc2ICMLO6GDlEyNr3gkDmPWOqaMQGoq2d9tIzAf6W9bdrFAUappTR0NPz2Aeh+xb9l3qogiSu/yC6PJCjBBkOfRBTym845z/g3A1xqW3l9PZg1wdx9cczLmtWbCDa2jduEDpAPnnGxcZBbCDa2j88wwcxpXyL09Jhn13TqmQjh2hVsnpaXnWBuPrsGefrNexmPjIIu5nXu7XvXlpgXBsjV09QdtDx0s5IkbGbeR0C4I0+XnSBuOF6psKcLG8PVTOtSjaoX93S+1UY93FCgQkdsLSr3FfAy2GUAUsDSnbkDABKdggPgUrub4k49RftnBxzBAP7OgAAAABJRU5ErkJggg==', '34|34|10|visible']; // Sweden (red/yellow circle)
var BGe = ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAiCAYAAACjv9J3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTEvMDkvMTVgeWYOAAADn0lEQVRIie2Xz0sqaxjHv+84is4V+6FilqBEigXRpshNV8cozv0LCuEeipYti2hRmzaB0b5V0T20qUUQBGHFrS4pBdEPKohQaiwsw8WV0sFx5j0rJU/SPZwO92z8wgvzPPPyfN7n+87A+xJKKf5vsYWHcDhs3tzc/BKNRnsURXkmhJCPFqeUUoZh9A6HY5Pn+T95nn8qgYZCocVEIuF3Op0MwzCGn+EAIQSUUgiC4N/Z2fmL5/k/SqDX19ef2trayNjY2Idh32pmZkZ9enr6qRAXoQzD/MuybDUAnJycwG63Ix6Pw+Fw4Pj4GF6vF2dnZ0in0zAajeA4DtlsFjabDVdXV6iuroZOp8PLywskSUJDQwMEQUBraytUKhUIIek3UABMYRsXFhYgCAIsFguGhoYwOjqK/f197O3tIRqNgud5EEKwsrICtVoNvV6P7u5uGAwGJBIJhMNhpFIpWK1WzM7OghACQghTBJWzo6qqCtvb29Dr9YhEIjAYDAiFQtBoNMjn82BZtjg2NjZgtVqRyWSQTCah0WigVquxvr4OjuPK2v26UxQ+Hr/fj66uLgCAKIpYXFzE4eEhGhsbYbFYwHEcampqMDAwgP7+fpjNZoiiiLW1NQwODqK2tha9vb3QarUldctCZVkGAPh8vjers9lsZVf9Wh6PB4QQuFyuknyhbkFl7f1Rfe+v/VOh36sKtAKtQCvQCrQC/UXQu7s7SJL0n0VEUcTDwwOenp4+Dh0fH0csFsP9/T0URUE8HsfFxQVub29xfn4OSimy2SyOjo6wurqKyclJHBwcIJfLvQtl33tJCMHU1BS8Xi98Ph9GRkbw+PgIs9mMdDqNYDAIo9EIURTR0tKC+fl5XF5eoq+vD8PDwz/WaSKRwPLyMlwuFwRBgNvtRiAQQEdHB3p6erC7u4tUKoW6ujokk0m0t7djYmICW1tb73b6Gqp8e8ZxOp2Ym5vD0tISOI6D3W6HwWCAyWSCyWSCTqeDKIpobm4Gy7LFk2JTU9MbxyilSjFBKQWlFIFAQAkGg/S1np+fKaWUJpNJqigKlWWZ5vN5msvlqCRJNJvNlswvxJlMpiQfDAZpIBCgBVZxT91u99+xWOz36elpttCxVquFJEnQaDSQJAkMw4BSWnLqk2UZsiyDZVmoVCrk83mo1WqIolicc3Nzk3e5XHuFuAj1eDyfI5HIl2g06iWEvAD48FURAAXwW319/T+dnZ2fi3b/ikvxV91+qmOLoEEOAAAAAElFTkSuQmCC','34|29|10|visible']; // Canada

var signConfig = {
    NL:         {'sgn': BGa, 'ann':'kmh', 'spd':[ [15,BGb], 30, 50, 60, 70, 80, 100, 120, 130 ]}, // 1. The Netherlands
    BE:         {'sgn': BGa, 'ann':'kmh', 'spd':[ [20,BGb], 30, 50, 70, 90, 100, 120 ]}, // 2.Belgium
    LU:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 50, 70, 90, 110, 130 ]}, // 3.Luxemburg
    FR:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 50, 70, 90, 110, 130 ]}, // 4.France
    AU:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 70, 80, 100, 110, 120, 130 ]}, // 5.Austria
    UK:         {'sgn': BGa, 'ann':'mph', 'spd':[ 20, 30, 40, 50, 60, 70]}, // 6.United Kingdom
    HU:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 70, 80, 90, 130]}, // 7.Hungary
    MX:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 10, 60, 70, 80, 90, 100, 110]}, // 8.Mexico
    SZ:         {'sgn': BGa, 'ann':'kph', 'spd':[ 30, 40, 50, 60, 80, 100, 120]}, // 9.Switzerland
    GM:         {'sgn': BGa, 'ann':'kph', 'spd':[ [7,BGb], 30, 50, 60, 70, 80, 100, 120, 130]}, // 10.Germany
    LG:         {'sgn': BGa, 'ann':'kmh', 'spd':[ [20,BGb], 30, 40, 50, 60, 70, 80, 90, 100]}, // 11.Latvia
    LH:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 70, 80, 90, 110, 120, 130 ]}, // 12.Lithuania
    RS:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130 ]}, // 13.Russia
    EZ:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 20, 30, 40, 50, 70, 80, 90 ]}, // 14.Czech Republic
    SP:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 20, 30, 40, 50, 60, 70, 80, 90, 100, 120 ]}, // 15.Spain
    PO:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 70, 80, 90, 100, 120]}, // 16.Portugal
    DA:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 70, 80, 90, 110]}, // 17.Danmark
    CO:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 20, 30, 40, 50, 60, 70, 80, 90, 100, 120]}, // 18.Colombia
    LO:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 70, 80, 90, 100, 110, 130]}, // 19.Slovakia
    BR:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 70, 80, 90, 100, 110, 120 ]}, // 20.Brazil
    UY:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 45, 60, 75, 80, 90, 110]}, // 21.Uruguay
    US:         {'sgn': BGc, 'ann':'mph', 'spd':[ 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80]}, // 22.United States    
    ES:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 25, 40, 50, 60, 70, 80, 90]}, // 23.El Salvador
    BL:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 20, 30, 50, 70, 80, 100]}, // 24.Bolivia
    LS:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 80, 100, 120]}, // 25.Liechtenstein
    EI:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 80, 100, 120]}, // 26.Ireland
    PL:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140]}, // 27.Poland
    AS:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 25, 30, 40, 50, 60, 70, 80, 90, 100, 110, 130]}, // 28.Australia
    NZ:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 40, 50, 60, 70, 80, 100]}, // 29.New Zealand
    SW:         {'sgn': BGd, 'ann':'kmh', 'spd':[ 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]}, // 30.Sweden
    CA:         {'sgn': BGe, 'ann':'kmh', 'spd':[ 30, 50, 60, 70, 80, 90, 100, 110]}, // 31.Canada
    SR:         {'sgn': BGa, 'ann':'kmh', 'spd':[ 20, 30, 50, 60, 80, 90, 100, 120]}, // 32.Serbia
};

// initialize WMESpeedhelper and do some checks
function WMESpeedhelper_bootstrap() {
    WMESpeedhelper_init();
}

function WMESpeedhelper_init() {

    //create the WMESpeedhelper object
    var WMESpeedhelper = {};
    var editpanel =  $("#edit-panel");

    // Check initialisation
    if (typeof Waze == 'undefined' || typeof I18n == 'undefined') {
        setTimeout(WMESpeedhelper_init, 660);
        log('Waze object unavailable, map still loading');
        return;
    }
    if (editpanel === undefined) {
        setTimeout(WMESpeedhelper_init, 660);
        log('edit-panel info unavailable, map still loading');
        return;
    }

    // Show friendly message to users of unsupported countries (for now)
    WMESpeedhelper.showMessage = function() {
        // Check if the user hasn't allready asked to hide this message
        if (localStorage.msgHide != 1) {
            // Check if this message isn't allready on screen (bugcheck, can't reproduce myself)
            if (!$("#_cnt").length) {
                var mD = document.createElement("div");
                mD.id = '_cnt';
                mD.style.cssText = 'margin:5px 0 10px 0;border:1px solid red;padding:5px;border-radius:5px;position:relative';

                // Hide button
                var mC = document.createElement("div");
                mC.style.cssText ='cursor:pointer;width:16px;height:16px;position:absolute;right:3px;top:3px;background-image:url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTEvMjAvMTVnsXrkAAADTUlEQVQ4jW2TW0xbZQCAv3ODnpYWegEGo1wKwzBcxAs6dONSjGMm3kjmnBqjYqLREE2WLDFTIBmbmmxRpzHy4NPi4zRLfNBlZjjtnCEaOwYDJUDcVqC3UzpWTkt7fp80hvk9f/nePkkIwWb+gA5jMXLQjK50Zc2cuKVp4wlX2UevtAYubnal/waWoTI1N38keu7ck2uTl335ZFJCkpE8XlGob4ibgeZvMl7P8MtdO6/dFohDe/Sn0LdzJ457MuHfUYqLkYtsSIqMJASyIiNv30Gm6+G1zNbqvpf6gqF/AwaUXx+/MDdz6KArH4ujVVRAbgPVroMsQz6P6nJiGUnUGj/pR/tTyx2dtW+11t2UAa5Pz34w//GHLitpsG1wkODp0xQ11GOZJpgmzq5uqo8ew76zAxFPUDJxscwzFR4BkGfh/tj58/3Zq9OoFZU0PHsAd00NnWNj6IEApd3duA48g2nXKenpQSl1oceWsUeuPfdp+M9GZf/zA5+lz3x9lxRbAUli+dIlKnt7Ud1uCk1NJH0+VnMmq6EQfw0NUzCSULBQfT4HVf4iNRO50VlIGSi6jup0sj5zlTO7d9N48iRLa2vkCwWsyTArbx/GAaSBm/MLyLm85OjZs0c2zawQsoRmt5NeXCRyeRLh9rBkGBSEwF6i09h+L96GemyAx2bDK4ENkGRJkbM2fVy4PRhT08RmZvH09VE29C6ixEFuahL3hklLby9PhEKUt7VRZln4kHD669Bqtl6Q7W07jqWL9FQiEkHTdUoGBsgXF5EPh0m8M8Tc62/CSoLSqmqaR4ZxaRpenxfbgw8lCy2Nx5Uv3xuNXEll7shO/HI38Rjr09NImkriyCgOy0JZTZM4+x3C7SY+epTaLZWsdwXJPNV/6jF/9ReSEIKzmcKWpbHPF9OHDxUr6xksoAiQJAmnpuEWAqeq4G9uRr7nPpZeeDG10NqybV+5Ly4DPGJXlsv79u51v38iK22/EwmwACEEIpdD2tjApmncan8A49XX4qtNgeC+cl/8tpm+jxoBY+K3N7I/jj+dvxKuIhZV7KpKWV295dy1K6YEg1/NO2wj+/210f+98R9+hub0wo1BOZnslRVV16orf0hVeD55HH7d7P4N0V1gY9/zcaEAAAAASUVORK5CYII=\');'; 
                mD.appendChild(mC);


                var mI = document.createElement("img");
                mI.id = '_img';
                mI.style.cssText = 'float:left;margin-right:5px;';
                mI.src = mssimg;

                var mT = document.createElement("div");
                mT.id = '_text';
                mT.innerHTML = '<b><a href="https://greasyfork.org/en/scripts/13774-wme-speedhelper" target="_blank">WME Speedhelper '+VERSION+'</a></b><br>Country missing? Follow <a href="https://greasyfork.org/en/scripts/13774-wme-speedhelper" target="_blank">this</a> link Your country code: <b>'+Waze.model.countries.top.abbr+'</b>';

                mC.onclick = function() {
                    log("clicked");
                    localStorage.msgHide = 1;
                    $('#_cnt').hide('slow');

                };
                var cleardiv = document.createElement("div");
                cleardiv.id = 'cleardiv';
                cleardiv.style.cssText ='clear:both;margin-bottom:5px;';

                mD.appendChild(mI);
                mD.appendChild(mT);
                mD.appendChild(cleardiv);
                $("div.controls.speed-limit").prepend(mD);
            }
        }
    };

    // The big one...
    WMESpeedhelper.makeSigns = function(reciever) {
        var ABBR =  signConfig[Waze.model.countries.top.abbr];

        // Country code not found? Show user friendly message with info to get his/her country added
        if (typeof ABBR == 'undefined') {
            WMESpeedhelper.showMessage();
            return;
        }

        /*************
        * EDIT PANEL *
        *************/
        // check if we're not adding to existing signs
        if (!$("#signsholder").length) {
            var signsholder = document.createElement("div");
            signsholder.id = 'signsholder';

            //Get the correct list of speedsigns to make
            ABBR.spd.forEach(function(speed) {

                var bgimage = ABBR.sgn[0];
                var allowedspeed = speed;
                var dims = ABBR.sgn[1].split('|');
                var hidden = '';

                //check per speedvalue if we need a special image
                try {
                    if(Array.isArray(speed)) {
                        allowedspeed = speed[0];
                        bgimage = speed[1][0];
                        dims = speed[1][1].split('|');
                        hidden = 'visibility:hidden;';
                    }
                } catch (e) {
                    //
                }

                // The sign background
                var addsign = document.createElement("div");
                addsign.id = 'sign'+allowedspeed;

                // Get width/height of sign background img
                addsign.style.cssText = 'cursor:pointer;float:left;width:'+dims[1]+'px;height:'+dims[0]+'px;background-image: url(\''+ bgimage + '\');';
                addsign.onclick =  function() {
                    $("input[name=fwdMaxSpeed]").val(allowedspeed).change();
                    $("input[name=revMaxSpeed]").val(allowedspeed).change();
                };

                // The speed value
                var speedvalue = document.createElement("div");
                speedvalue.id = 'spd_'+ allowedspeed;
                speedvalue.style.cssText = 'text-align:center;margin-top:'+dims[2]+'px;font-size:10px;font-family:\'Varela Round\',sans-serif;color:#000; font-weight:bold;visibility:'+dims[3];
                speedvalue.innerHTML = allowedspeed;
                addsign.appendChild(speedvalue);
                signsholder.appendChild(addsign);
            });

            // CSS Clear after the floats
            var cleardiv = document.createElement("div");
            cleardiv.style.cssText ='clear:both;margin-bottom:5px;';

            // Add everything to the stage
            signsholder.appendChild(cleardiv);
            $("div.controls.speed-limit").prepend(signsholder);
            log('ready');
        }
    };

    function log(message) {
        if (typeof message === 'string') {
            console.log('WMESpeedhelper: ' + message);
        } else {
            console.log('WMESpeedhelper: ', message);
        }
    }
    
    // check for changes in the edit-panel
    var speedlimitsObserver = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            // Mutation is a NodeList and doesn't support forEach like an array
            for (var i = 0; i < mutation.addedNodes.length; i++) {
                var addedNode = mutation.addedNodes[i];

                // Only fire up if it's a node
                if (addedNode.nodeType === Node.ELEMENT_NODE) {
                    var speedlimitDiv = addedNode.querySelector('div.controls.speed-limit');

                    if (speedlimitDiv) {
                        WMESpeedhelper.makeSigns(speedlimitDiv);
                    }
                }
            }
        });
    });
    speedlimitsObserver.observe(document.getElementById('edit-panel'), { childList: true, subtree: true });
    
    // Catch permalinks
    WMESpeedhelper.makeSigns();
}

setTimeout(WMESpeedhelper_bootstrap, 3000);