WME Speedhelper

Makes inputting speed data easier

当前为 2015-11-23 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

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

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 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,iVBORw0KGgoAAAANSUhEUgAAADcAAAA3CAYAAACo29JGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTEvMTUvMTUXz/AGAAAFNUlEQVRoge1aTW/aSBh+QFiFisZWtJVYlAizzq7UG71FChVU+QE4p+ZofkF8SyLlkEi9h38AvYUT5gdUEEGl3vAt2t0QYmXVRVWkwAYVIlC8hyQOJMYzxg7dTfpIPtiaj+eZ1+87M++MR9d1HY8U3u9N4CHhc7vB83we53t76H3+jMteD5et1tiyXo6D1++Hf3ERL1ZX8eLdO1e5eNz4LbvVKk63ttD79An6YDA5GZ8P/qUl/PT+PQLxuFNazsR1q1U0JQn9et0xkbtgBAGhXM6RyInEDTQNJ8vLDyLqLhhBwPzHj/BFIrbr2g4op5ubOIpGpyIMAPr1Oo6iUZxubtqua8ty2uvXuFBV2524hWexGCK1GnV5KssNNA2NhYXvKgwALlQVjYUFDDSNqjzRcgNNQ+PVK+jdrisE3YAnEED04IDoh0RxjYUF2/7F8DyCoohAMolnsRgYExJ9TcOFqqJbLqOjKOgfH9vrQxAQPTy0LGMpzq6PPU8mwckygqkUPctrdIpFtDIZfCuXqeuQfHCsz51ublILY3geYUXBXKk0kTAACKZSmCuVEFYUMDxPVedCVS2jqKnlBpqGo2gUoAikQVFEKJeDl2WpCNHgst1GU5LQURRyYY8HvzQapv5narmT5WUqYTOShHCh4KowAPCyLMKFAmYkiVxY16/4mrVz90O3WqUKIDOShFA2S+7cAULZLJXAfr2ObrV67/u935ImOgZFEeFCwR5TB/iyskL8Rc2i54jlaKzG8DxCudxkLCdEKJcjBhkz642IO93aInb0MpNx3cdI8LIsXmYyxHJ3+Y/8ln8yjOV+7HkyiblSyQFNZ/jr7VvLedDj8+HXft94Nyx3ns8TN5qcLDtn6ACk/vXBAOf5vPF+K25vz7Iiw/MTTdDlchmSJCGZTEIURWQyGbQsUg9WCKZSRN8b0aFfox4K6b8DY5+vsqzbwdnZmZ5IJHQA9x6WZfVarWarvRt8lWVLnvVQyChrWO6y17MckUAyaWuUFUXB/v4+WJbF7u4uSqUSstksWJZFu93G9va2rfZoeQzrMLJfVlkq4GqRageiKKLVakGSJHAcZ3znOA4rKysoFou22qPlMayDOrVntm2xAsdxkE0CwI2/sRNOJ3Z4uJ63HAdVVVEul43fURTFB+9zKuK2t7exs7NjvKdSKWQoJmWnmJrlAGBtbQ2SJCFm038nxVTExWIxsCwLWZbBU25E3YCx/PrD47EsGD0+th1UHgJ9TUODMEC/Xa8ojXnOOxSuzeAkraeqKiRJgupCapDEY1jHrTi/37JS10bi5i5kWcaHDx9Mpwa7IPEY1mGI8y8uWlaiymeMwU3YdyP8k3gM6zB87jyfx9+rq5YVw4oycXbLDXSKRXwhDNDPe3vGOd/T2M8BgH9pybLxb+UyOhOuCZ2iUywSE7Z3+Y9Yrlut4uTNG8sGGJ5HRFWnmmq4bLehxWLElPt8pTJyWDliuUA8DkYQLBvoHx+jSZNPdBFNSSIKYwTh3insvbwlTWaroyhoptO2CE6KZjpNFanNeJum02lPdh46MdtMp/EPxWCPO/F5emcFvkgEs+vrVEQ6igItFnMtinaKxav2KBcNs+vrYw8hH/X53NM9WQX+32fixNsMvkgE0YMD4vw3LTCCQCUM+HEP5RaRWg2zGxsAYdfuOjwezG5s2BIG/Lj7dR++SATRw0PMVyoP5ouMIGC+UkH08HAiYYDDm7KBeNwQGUgk4PE5S6Z5fD4EEglDlNM7l65cJh3Go7sp+1/Fo77A/S/buzjoMiOSZwAAAABJRU5ErkJggg==';
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,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', '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);