WME Bookmarks

Bookmark your places on the map

当前为 2014-08-26 提交的版本,查看 最新版本

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

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

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

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

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        WME Bookmarks
// @version     0.12
// @description Bookmark your places on the map
// @namespace   Sebiseba
// @include     https://www.waze.com/editor/*
// @include     https://www.waze.com/*/editor/*
// @include     https://editor-beta.waze.com/*
// @icon        data:image/png;base64,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
// @URL  	https://greasyfork.org/scripts/4515-wme-bookmarks
// @grant       none
// @copyright   Sebiseba 2014
// ==/UserScript==

// icon from ©iconza (https://www.iconfinder.com/iconsets/iconza)

var WMEF_Version = GM_info.script.version;
var icon_signet    ="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";
var icon_addlink   ="iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAB0UlEQVR4XqVVgW3CQAz8RB0g3YBOUBALlAlKJ0iYgHQCYALoBDQThA2SBRB0AtiAbEDvpUN52WBQOOn0L7+Vi517J3IdMBwOEyw5mII9hmvwZ7vdbtwVRB1E+ljKVkDhF2ITGYw7iFRCRCJD3lgJdRBJgvACfAXfwH0Qn0qhlydEJmjRL/cNcr6wHnj2oSu6L+LbNOMbN0qE4JnE40J44JEt+sbet2lAEYk82B+VkGVhcA2eENh5cj/1ZyI3Y9UXFErIcNcOzMR3SRirhMhaVLMyhEwLN+QF/VBE5H2htep7RffcxW+z4nlO627AvysiI+TS5krItjD4znYthODSFNFC9j3B2fmKhRNbRCOmg0rjMoYPSETeUYkYNp6D54DZLZsHOSfGEuZkYHU55z6TQocgYX7T7lw9xUvsKKDIs4T2bm2s/E8LB5d16cmx5FHR6rdAgwGibT0pIs5PQXW5rMARMg5mfnrXwbQtOYUbzq6Z4a5P9zjSiD+p0s7TFg4rQDwS+Son5j9eTWPbwjbMycDKUnAcCBTgSs4u5ldty9vKZCVE/eIIVgY+jEIImbmRewL+ntDCFvYoYhC75zAC95YIc1z3ivSlToNW1mAR/vL/Acg9BLVmh/IBAAAAAElFTkSuQmCC";
var icon_delete    ="iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJMSURBVHjaxJZLaxRBEMerd4PZWSNJFM3mJMQHG0WQSAjBx8lr/ALCnvSar+DOTeM9hxyFfAHzDZQQRAyCiQZfmGTzwH0Z1Bj3MZ2qprrp7ZmdNcKSgR/T3VtV/5rq6maFlBK6+SSgy8/xCuyIk1OdAnSyEe4eoIMekuNz5B6y0MY/ZDMsf7dakIDNNqSJKUTKW3clvWmOY7AxNrmHxoZ83XhRX6CyytycNGu7i0vgfImyGc7dB6hWQVaqxga/YKFTiWRmciJUi92lV1oETPBKBWS50mKDAqLTJvtkKIOghaGJceB6q+CyXIagWDK/cwL+v25yHnl0bvxGSD05mgVZKqng+vn++o0Onnc3Oa6LlMjZseuxbVpcfmuCR3VR3DkgB58CuOXSuMGPeg5MJ5+5djXSufxuVcWw147yBSq42tBmEMnpK6PK5n+vChW8sbWN5WgqAn7bDGYvx4ok4oLXC1tQ29iEALMlfqx9hCqi55r+SxfbiiTaBt8sQH19AzBtxd6nz3pDfTXmdU3/hZFIkciDtvNsHmrf1k237H35aneL6i5aszvKsom+7PTDl12eLrCf57PqIitA2udkDLRm27BP6LKzBajdkkgv0rcG3mNyfA/eDM6HkAx1oUVmBbynZPMBvCc4HyA/9k/qI2DOgRCCMjvBRqeQ1EtITd+Ggzl2SHASgmtNBC8g9eAOHMziuI78QX4xNYwduAI9iIekOZMeDm4LmOqSANJkGshfZJ+FGq6ALpNda+FkHtpCS0iykJpLXfdu/205FGAAoerA0rygBN8AAAAASUVORK5CYII=";
var icon_comment   ="iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGlSURBVHja1JW9TsMwEMftlI+CqNShICGqIjGwM8Ej8ACMbJQngJm0vAaMLH0DngDBxM6ABHRoC0O/CEqc2tyVc3WNolSpmgFLJ9eN7/873zkXxxgjsjRHZDwyByzxxe75E041MHdOvTr6v90cxgOs+MH+ltgsrqdS/ux64vml4zKdWMBEvNMPUyZ7ReyVS+K1+eUmAcbi7d6feLunUmYol1wDO/B6tbrB4ovMEGNIZgDU1jpTAJ5A//MUZQbAF0YIORdAqXBmL6rD2yj6337qrqmUEp7n2XaR2CrER6ub2IsKhY3Jb98PRBAEU71oVg1q0U3R54PB0LUQFIfmJiMNM027NnEB1AGSrshSSlGpPk49fL89spHJiN915exBAuSKfCX4xt4KaW8LbqITIXSZ5hz95xCEg0z59P7CyRcvIZASrEdgeI0UzRq0Da+BJGFMbgEsT+scA1kIRmWad8eN7ZMG7t0h4R+wIRlW3vAT2OjXwPBrs8pOwQG8OJoit9H7YB6BQtDW/ASaohjRJisYlx4OsSBDvsamZ6rItDYsooWMXwEGAHyKIA9iDp/UAAAAAElFTkSuQmCC";
var icon_nocomment ="iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGeSURBVHja1JXNTsJAEMd3KUZrMB6QeDDeuPEM+gY+BDwAFz0LmPAC3IGLF8++gNFn4MaNk0GigX5a6DoDO3XbNMUS9uAmk+222/9vZmd3lgshmM5WYJqbdkBRHQyHb9i1wVo76nXw/3r9Kh1A4rXaJSuXS7mUZzOLjUaTlqKTCojEHcfLBTDNIqtWz9l4/N7KAqzFbXsjblluLohh8OwcUMOtu1i4+0/yL4CxMBQ6AQIAoT4Aer9a/ecItOYADwwgdgJ4frC1FnXgNLL53FsD8pjrBuzr06FykVkq2GTykVmLKpWT6Nm2fTj137FatK2a4gSeYZ3pdBFNluL0rb2Pct1OQv6UZM45GwxeYx8bjWsqLski89Dvv3CA3NM8+Dd1V3C6MjkSNhEh9ED2hnxXUJYh2s293vNtqXR6B4AzGK/AlmCB7EPQFmqSuRTGiwCzeCTHhgIiCHolms2bp273EedeSGGskJY0TI5QIyDvTbBjsEMlChUQRYBeSs/Jex/zLkFL0A5VAEVRSCxL2vKoEAIJCRK0PLEc6Go/AgwAQQrZygXnINMAAAAASUVORK5CYII=";
var icon_valid	   ="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";

/* helper function */

function getId(node) {
  return document.getElementById(node);
}

function getElementsByClassName(classname, node) {
    node || (node = document.getElementsByTagName("body")[0]);
    for (var a = [], re = new RegExp("\\b" + classname + "\\b"), els = node.getElementsByTagName("*"), i = 0, j = els.length;i < j;i++) {
      re.test(els[i].className) && a.push(els[i]);
    }
    return a;
}
  
function getFunctionWithArgs(func, args) {
    return (
        function () {
            var json_args = JSON.stringify(args);
            return function() {
                var args = JSON.parse(json_args);
                func.apply(this, args);
            }
        }
    )();
}

/* Bootstrap */

function BKM_bootstrap() {
  if (typeof unsafeWindow === "undefined") {
    unsafeWindow    = ( function () {
      var dummyElem = document.createElement('p');
      dummyElem.setAttribute('onclick', 'return window;');
      return dummyElem.onclick();
    }) ();
  }

  /* begin running the code! */
    console.log("WME Bookmarks: " + WMEF_Version + " starting");
    BKMinit();
}

/* Verif */

function BKMinit(){
	// Verify localStorage
	if ("undefined" === typeof localStorage.WMEBookmarks) {
		localStorage.setItem('WMEBookmarks', "");
	}
	
	// Waze object needed
	BKMWaze = unsafeWindow.Waze;
	if(typeof(BKMWaze) === 'undefined'){
        console.error("WME Bookmarks - BKMWaze : NOK");
		window.setTimeout(BKMinit, 500);
		return;
	}
 	BKMlocation = BKMWaze.location;
	if(typeof(BKMlocation) == 'undefined'){
        console.error("WME Bookmarks - BKMlocation : NOK");
		window.setTimeout(BKMinit, 500);
		return;
	} 
    BKMcountry = BKMWaze.model.countries.top;
	if(typeof(BKMcountry) == 'undefined'){
        //console.error("WME Bookmarks - BKMcountry DOM : NOK");
		window.setTimeout(BKMinit, 500);
		return;
	}
    //    Traductions
     BKMI18n = unsafeWindow.I18n;
    if(typeof(BKMI18n) === 'undefined'){
        console.error("WME Bookmarks - BKMI18n : NOK");
        setTimeout(BKMinit, 500);
        return;
    }  
	//	Waze GUI needed
   BKMhandle = getId("user-info");
    if(typeof(BKMhandle) === 'undefined'){
        console.error("WME Bookmarks - BKMhandle : NOK");
        setTimeout(BKMinit, 500);
        return;
    }
   BKMhandleClass = getElementsByClassName("nav-tabs", BKMhandle)[0];
    if(typeof(BKMhandleClass) === 'undefined'){
        //console.error("WME Bookmarks - BKMhandleClass : NOK");
        setTimeout(BKMinit, 500);
        return;
    }
   BKMhandleClass2 = getElementsByClassName("tab-content", BKMhandle)[0];
    if(typeof(BKMhandleClass2) === 'undefined'){
        //console.error("WME Bookmarks - BKMhandleClass2 : NOK");
        setTimeout(BKMinit, 500);
        return;
    }
    
    // Translation
   	var BKMLang = BKMI18n.locale;
    if (BKMLang  == "fr") { lang = new Array("Favoris","Noms","Nom","Supprimer ","Commentaire","Sans Nom"); }
    else { lang = new Array("Bookmarks","Names","Name","Delete ","Comment","Unnamed"); }

    // Then running
    console.log("WME Bookmarks - Ready to start");
    BKMcountryActive = BKMWaze.model.countries.top.name;
    BKMCheckCountry();
    BKMcss();
    BKMhtml();
}

function BKMhtml() {
    //Create content in favorite's tab
    var newtab = document.createElement('li');
    newtab.innerHTML = "<a href='#sidepanel-favorites' data-toggle='tab'><img style='height:16px;' title='"+ lang[0] +"' src='data:image/png;base64,"+ icon_signet +"' /> "+ lang[0] +"</a>";
	BKMhandleClass.appendChild(newtab);
    
    var addon = document.createElement('section');
    addon.id = "favorites-addon";
  
    // Bookmarks list
    var content="<div style='float:left;'><b><a href='http://sebiseba.free.fr/WME/WME_Bookmarks.user.js' target='_blank'><u>WME Bookmarks</u></a></b> " + WMEF_Version + "</div>";
    content += "<div id='addBKMButton' style='float:right; height:34px;'></div>";
    content += "<div class='divEntete'><div id='divEnteteNom'><b>"+ lang[1] +"</b></div><div id	='divEntetePays'>"+ BKMcountryActive +"</div></div>";
    
    // Bookmarks container
    content += "<div id='BKMcontent'></div>";
    
    // Editing infos
    content += "<div id='BKMEdit'></div>";
            
    addon.innerHTML  = content; 
 	addon.id = "sidepanel-favorites";
    addon.className = "tab-pane";
	BKMhandleClass2.appendChild(addon);

	console.info("WME Bookmarks HTML loaded");
    
	BKMLoad();
	BKMTestLoad();
}

function BKMInsertPermalink() {
    //Get link
	var link="";
	var	a = getElementsByClassName("WazeControlPermalink")[0].innerHTML;
    var b = a.substring(a.indexOf("https")).split('?');
    var c = b[1].split(/"/g);
    var d = c[0].split('&amp;');

    for (i=0; d[i]; i++) {
        if (d[i].substring(0,3)=="lon" || d[i].substring(0,3)=="lat") { link = link + d[i].substring(4) +"&"; }
        if (d[i].substring(0,4)=="zoom") { link = link + d[i].substring(5,6) +"&"; }
    } 
    link = link.substring(0,link.length-1);

    //Get name
    var town = getElementsByClassName("WazeControlLocationInfo")[0];
	var name = town.innerHTML.split(",");
    name = name[0].substring(6);
    if (!name) { name = lang[5]; }
    //console.info("WME Bookmarks Add link: "+name+"/"+BKMcountry);
  
    //Add in HTML table
    var id = new Date().getTime();
    BKMTableHTML(name,link,"");
    
    //Add in memory
    var newbkm = BKMWaze.model.countries.top.name +"|"+ name +"|"+ link +"|,";
    var tosave = localStorage.getItem("WMEBookmarks") + newbkm;
    localStorage.setItem("WMEBookmarks", tosave);
    console.info("WME Bookmarks Save Memory: "+ tosave);
}

function BKMLoad() {
    var listfav= localStorage.getItem("WMEBookmarks");
    if (listfav) {
        var a = listfav.split(',');
		for (var i = 0; a[i]; i++) {
            var b = a[i].split('|');
            if (b[0] == BKMcountryActive) { BKMTableHTML(b[1],b[2],b[3]); }
        }
    	console.info("WME Bookmarks all ID loaded, script ready");
    } else {
        console.info("WME Bookmarks no ID to load, script ready");
    }
}

function BKMTableHTML(name,link,comment) {
    var div = document.createElement('div');
    div.className="divBKM";
    
    var divname = document.createElement('div');
    divname.className="divName";
    
    var divnamea = document.createElement('a');
    divnamea.innerHTML="<b>"+name.substring(0,36)+"</b>";
    divnamea.href = "#";
    divnamea.onclick = getFunctionWithArgs(BKMJump, [link]);
    divname.appendChild(divnamea);
    div.appendChild(divname);                                    
     
    var divsuppr = document.createElement('div');
    divsuppr.className="divSuppr";

    var divsuppra = document.createElement('a');
    divsuppra.innerHTML="<img style='width: 16px;' title='Suppr' src='data:image/png;base64," +icon_delete +"' />"; 
    divsuppra.href = "#";
    divsuppra.onclick = getFunctionWithArgs(BKMSuppr, [name,link]);
    divsuppr.appendChild(divsuppra);
    div.appendChild(divsuppr); 
    
    var divcomment = document.createElement('div');
    divcomment.className="divSuppr";

	var divcommenta = document.createElement('a');
    if (comment == "") { divcommenta.innerHTML="<img style='width: 16px;' title='+' src='data:image/png;base64," +icon_nocomment +"' />"; }   
    else { divcommenta.innerHTML="<img style='width: 16px;' title='"+comment.replace(/\'/g,'&#39;').replace(/"/g,'&quot;')+"' src='data:image/png;base64," +icon_comment +"' />"; }
	divcommenta.href = "#";
    divcommenta.onclick = getFunctionWithArgs(BKMAddEdit, [name,link,comment]);
    divcommenta.onmouseover = getFunctionWithArgs(BKMTooltip, [comment]);
    //divcommenta.onmouseover = (function() { console.info("WME Bookmarks Test: "+this.offsetLeft+" / "+this.offsetTop)});
    divcomment.appendChild(divcommenta);
    div.appendChild(divcomment); 

	getId('BKMcontent').appendChild(div);
}

function BKMAddEdit(name,link,comment) {
    getId('BKMEdit').style.display = "block"; 
    var content1 = "<div id='divEditTitre'><div id='divEdit'>"+ lang[2] +"</div><input type='text' id='divEditName' value='"+name.replace(/\'/g,'&#39;').replace(/"/g,'&quot;')+"' />";
	content1 += "<div class='divSuppr'><a href='#'><img id='EditValid' style='width: 16px; margin-top:3px;' title='Valid' src='data:image/png;base64," +icon_valid +"' /></a></div>";
	content1 += "</div><div><div id='divComm'>"+ lang[4] +"</div><textarea id='divCommEdit'>";
    if (comment == "") { content1 += ""; } else { content1 += comment; }
    content1 += "</textarea></div>";
    getId('BKMEdit').innerHTML=content1;
    getId('EditValid').onclick = getFunctionWithArgs(BKMEditLink, [link]);
}

function BKMcss() {
    var cssElt = document.createElement("style");
	cssElt.type = "text/css";
    var css = "img { vertical-align:top;}";
    css += ".divEntete { clear:both; line-height:22px; height:26px; padding-left:5px; border:2px solid #3d3d3d; background-color:#BEDCE5;}";
    css += "#divEnteteNom { float:left; text-align:left; border-right:2px solid #3d3d3d; width:80px; }";
    css += "#divEntetePays { float:right; text-align:right; padding-right:10px; font-weight:bold; }";
    css += ".divBKM { clear:both; line-height:16px; height: 24px; padding:3px; border: 1px solid #3d3d3d; border-top:0; }";
    css += ".divName { float:left; text-align:left; padding-left:5px; width:230px; }";
    css += ".divSuppr { width:20px; float:right; }";
    css += "#BKMEdit { display:none; height:135px; margin-top:20px; border:2px solid #3d3d3d; }";
    css += "#divEditTitre { line-height:24px; height:24px; border-bottom:1px solid #3d3d3d; }";
    css += "#divEdit     { float:left; width: 50px; height:23px; text-align:left; padding-left:5px; font-weight:bold; background-color:#BEDCE5; }";
    css += "#divEditName { float:left; width:195px; height:23px; padding:0; padding-left:5px; border:0; margin:0; }";
    css += "#divComm { float:left; width:100%; line-height:24px; height:23px; padding-left:5px; text-align:left; font-weight:bold; background-color:#BEDCE5; border-bottom:1px solid #3d3d3d; }";
    css += "#divCommEdit { float:left; width:275px; height:81px; border:0; margin:0; padding:2px; resize:none; }";
    cssElt.innerHTML = css;
    document.body.appendChild(cssElt);
    console.info("WME Bookmarks CSS loaded");
}

function BKMSuppr(name,id) {
    var answer = window.confirm(lang[3]+name+" ?");
    if (answer){
    	//console.info("WME Bookmarks Suppr: "+id);
    	var listfav= localStorage.getItem("WMEBookmarks");
    	var a = listfav.split(','), tosave="";
		for (var i = 0; a[i]; i++) {
    	    var b = a[i].indexOf(id);
    	    if (b == -1) { tosave = tosave + a[i] + ","; }
    	}
    	localStorage.setItem("WMEBookmarks", tosave);
    	getId('BKMcontent').innerHTML="";
    	BKMLoad(); 
    }
}

function BKMEditLink(link) {

    var newname = getId('divEditName').value;
    var newcomment = getId('divCommEdit').value;
    getId('BKMEdit').style.display = "none";
    // console.info("WME Bookmarks New Values: "+newname+" "+newcomment);
    
    var listfav= localStorage.getItem("WMEBookmarks");
	console.info("WME Bookmarks localStorage: "+ listfav); 
    var a = listfav.split(','), tosave="";
	for (var i = 0; a[i]; i++) {
        var b = a[i].indexOf(link);
        if (b == -1) { tosave = tosave + a[i] + ","; }
        else { 
            var c = listfav.split('|');
            tosave = tosave + c[0] +"|"+ newname +"|"+ link +"|"+ newcomment +",";
        }
    }
    localStorage.setItem("WMEBookmarks", tosave);
    getId('BKMcontent').innerHTML="";
    BKMLoad(); 
}

function BKMTooltip(mx,my,comment) {
    console.log("WME Bookmarks Tooltip : "+comment);
}
function BKMJump(xy) {
    var coord=xy.split('&');
    //console.log("WME Bookmarks Move to: "+ coord[0] +" / "+ coord[1] +" / Zoom: "+ coord[2]);
    var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(parseFloat(coord[0]), parseFloat(coord[1]));
    unsafeWindow.Waze.map.setCenter(xy);
    unsafeWindow.Waze.map.zoomTo(coord[2]);
    BKMTestLoad();
}

function BKMTestLoad() {
    var loaded = Waze.map.controls[5].pending;
    //console.error("WME Bookmarks Scan Map Loaded : "+ loaded.length);
    if(loaded.length != 0){
        getId('addBKMButton').innerHTML="";
        setTimeout(BKMTestLoad, 500);
        return;
	}
    getId('addBKMButton').innerHTML="<a href='#'><img style='height:24px; border:1px solid #93C4D3; padding:3px; margin-bottom:10px;' id='AddIcon' title='Add' src='data:image/png;base64," + icon_addlink + "' /></a>";
    getId('AddIcon').onclick = BKMInsertPermalink;
    setTimeout(BKMTestLoad, 2000);
}

function BKMCheckCountry() {
    var BKMcountryActive2 = BKMWaze.model.countries.top.name;
    if (BKMcountryActive != BKMcountryActive2) {
        console.log("WME Bookmarks Country changed : "+ BKMcountryActive+" / "+BKMcountryActive2);
        BKMcountryActive = BKMcountryActive2;
        getId('BKMcontent').innerHTML="";
        getId('divEntetePays').innerHTML=BKMcountryActive;
        BKMLoad();
    }
    setTimeout(BKMCheckCountry, 2000);
}
/* begin running the code! */

BKM_bootstrap();