// ==UserScript==
// @name WME Requests
// @namespace https://greasyfork.org/ru/scripts/5085-wme-requests
// @description Opens the Requests module with precompiled fields to submit an request
// @include https://*.waze.com/editor/*
// @include https://*.waze.com/*/editor/*
// @include https://*.waze.com/map-editor/*
// @include https://*.waze.com/beta_editor/*
// @grant none
// @author skirda
// @version 1.14.1
// ==/UserScript==
var wmer_Version = '1.14.1';
var CL=new Array(
{
c:'Russia',
f:'https://docs.google.com/forms/d/1ck0cCIV6vPy16YQZJvfmM0clOdAE2Z-kDsXn06ZwQ1s/viewform',
d:'https://docs.google.com/spreadsheets/d/1ddcW8EmNjojJp7EQ4AYPdfBqNWe28WqRaQ_RtkB8JAU',
l:'https://script.google.com/macros/s/AKfycbzqA15-fy4g4StdRUmnuMj9z6rJ56gQPjCYpgCMni7h/exec',
fr:'https://docs.google.com/forms/d/1QzvF3-lH8MuuEaSw0GA6LgLW62EiSHzQXBmG5-rQdIQ/viewform',
dr:'https://docs.google.com/spreadsheet/ccc?key=0AtcEFFDNcic4dEE2UFh5X0lDdlRZbno3YVFYUkg0Unc'
},
{
c:'Belarus',
f:'https://docs.google.com/forms/d/1a7g7ONWOIHfxr8ZEXKxRXUkIxFF7xFb-2uX4LlydWXo/viewform',
d:'https://docs.google.com/spreadsheets/d/1uuRY8ib5h_8xMfpzgXG2N78foMtftUNkPzJxP56mDXI',
l:'https://script.google.com/macros/s/AKfycbz8_xLefn_06nLRsfwnupviEEStCXfttg777KryBMnD/exec',
fr:'https://docs.google.com/forms/d/1a9wXzngDV_KGoYZC65X_-xAUfcyA7vgftaEBC9aHAMM/viewform',
dr:'https://docs.google.com/spreadsheets/d/1gge9vlSuDrxkzH0ubiRGcx3VOawYA-Hub7EZzP94siI'
}
);
// через солько дней вернуть лок обратно
var wmer_CountDays = 5;
var wmer_UserCache = new Array();
var wmer_LanguageRU = false;
var wmer_MousePos = '';
function wmer_bootstrap()
{
wmer_LanguageRU=window.location.href.indexOf("/ru/") > 0?true:false;
if (typeof unsafeWindow === "undefined") {
unsafeWindow = ( function () {
var dummyElem = document.createElement('p');
dummyElem.setAttribute('onclick', 'return window;');
return dummyElem.onclick();
}) ();
}
/* begin running the code! */
wmer_Init();
}
function wmer_getUsername()
{
var thisUser = Waze.loginManager.user;
if (thisUser === null)
{
alert(wmer_LanguageRU?'Невозможно получить имя текущего пользователя':'Nobody\'s logged in.');
return "";
}
return Waze.loginManager.user.userName;
}
function timeConverter(UNIX_timestamp)
{
var datetime = new Date();
var mEpoch = parseInt(UNIX_timestamp);
if (mEpoch<10000000000) mEpoch *= 1000;
datetime.setTime(mEpoch)
// !!! UTC !!!
return datetime.getUTCFullYear()+"-"+('0' + (datetime.getUTCMonth() + 1)).slice(-2)+"-"+('0' + datetime.getUTCDate()).slice(-2)+"+"+('0' + datetime.getUTCHours()).slice(-2) + ':' + ('0' + datetime.getUTCMinutes()).slice(-2)
}
function wmer_getCCSD(segment){ // BUBBUB!!! need use "hasOwnProperty" or "in"
console.log('WME Requests v.' + wmer_Version + ': ' + 'start wmer_getCCSD');
var oID="";
var streetName="";
var cityName="";
var countryName="";
var description="";
var typeName= "";
var cityID="";
var userID="";
var forumUserID="";
var userName="";
var updatedOn="";
try {
typeName=segment.type;
/*
"segment"
"venue"
"node"
"camera" typeName: "Speed camera"
*/
oID=segment.fid;
updatedOn=segment.attributes.updatedOn;
if (segment.attributes.hasOwnProperty('primaryStreetID'))
{
//Waze.model.streets.get(Waze.selectionManager.selectedItems[0].model.attributes.primaryStreetID).cityID
console.log('WME Requests v.' + wmer_Version + ': ' + 'found street');
var sID=segment.attributes.primaryStreetID;
var streetsObj = Waze.model.streets.get(sID);
cityID=streetsObj.cityID;
streetName=streetsObj.name;
}
else if (typeName === "camera")
{
//Waze.selectionManager.selectedItems[0].model.model.cities.additionalInfo[0].id
console.log('WME Requests v.' + wmer_Version + ': ' + 'found camera');
streetName=segment.typeName;
description="\rSpeed: "+segment.attributes.speed+"\rValidated: "+segment.attributes.validated + "\rAzymuth: "+segment.attributes.azymuth+"\rType: "+segment.attributes.type;
cityID=segment.model.cities.additionalInfo[0].id;
if (cityID == null)
cityID="";
}
else if (typeName === "node")
{
//Waze.selectionManager.selectedItems[0].model.segments.topCityID
console.log('WME Requests v.' + wmer_Version + ': ' + 'found node');
cityID=''+segment.model.segments.topCityID;
if (cityID == null)
cityID="";
description="count segment(s)="+segment.attributes.segIDs.length;
}
else // "venue"
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'found POI ('+typeName+')');
//Waze.model.streets.get(Waze.selectionManager.selectedItems[0].attributes.streetID).cityID
var sID=segment.attributes.streetID;
if (sID == null)
cityID="";
else
cityID=Waze.model.streets.get(sID).cityID;
if (sID == null)
cityID="";
if (typeof Waze.selectionManager.selectedItems[0].model.attributes.categories === "undefined")
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'categories=undefined');
console.log('WME Requests v.' + wmer_Version + ': ' + 'segment.attributes.description='+segment.attributes.description);
}
else
{
description='\rCategories: '+segment.attributes.categories.join(';') + '.\r' + segment.attributes.description;
if (segment.attributes.categories.indexOf("GAS_STATION") != -1) // Gas Station
{
typeName="gas station"
description="Brand: "+segment.attributes.brand + "\rAddress: " + segment.attributes.address + "\nDescription: " + segment.attributes.description
}
}
streetName=segment.attributes.name;
}
if (!(typeName === "camera" || typeName === "node" || cityID === "")) // BUGBUG!!!
{
console.log('WME Requests v.' + wmer_Version + ': cityID=' + cityID);
var cityObj=Waze.model.cities.get(cityID);
var countryID=cityObj.countryID;
cityName=cityObj.name;
var countriesObj=Waze.model.countries.get(countryID);
countryName = countriesObj.name;
}
if (!(typeName === "node"))
{
userID=segment.attributes.updatedBy;
if (userID == null)
userID=segment.attributes.createdBy;
if (userID==-1 || userID == null)
{
userID=segment.attributes.createdBy;
if (userID==-1)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'Do not PM Admin!');
}
}
userName=Waze.model.users.get(userID).userName;
console.log('WME Requests v.' + wmer_Version + ': ' + 'userName='+userName);
}
else
userID="-1";
console.log('WME Requests v.' + wmer_Version + ': ' + 'userID=' +userID);
}
catch (err) {
console.log('WME Requests v.' + wmer_Version + ': error['+err.columnNumber+','+err.lineNumber+']: ' +err.name);
}
console.log('WME Requests v.' + wmer_Version + ': ' + 'return from wmer_getCCSD');
return {
objid : oID,
type : typeName,
street : streetName,
city : cityName,
cityID : cityID,
country : countryName,
description : description,
username : userName,
userID : userID,
forumuserID : forumUserID,
updatedOn : updatedOn
};
}
function wmer_userRank(segment)
{
var usrRank = 0;
/*
if (segment.attributes.lockRank)
{
var updatedBy = Waze.model.users.get(segment.attributes.updatedBy);
return updatedBy != null ? updatedBy.rank : 0;
}
return 0;
*/
if (Waze.selectionManager.selectedItems[0].model.attributes.hasOwnProperty('lockRank'))
return segment.attributes.lockRank;
else
return 0;
}
//It returns the maximum lock level
function wmer_GetLevel() {
//attributes.rank dovrebbe essere il road rank
var sel = Waze.selectionManager.selectedItems;
var maxR = wmer_userRank(sel[0].model);
console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() maxR='+maxR);
console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() sel.length='+sel.length);
for (i = 1; i < sel.length; i++)
{
if (maxR == 5)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() return 6');
return 6;
}
var usrRank = wmer_userRank(sel[i].model);
console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() usrRank='+usrRank);
if (usrRank > maxR) {
maxR = usrRank;
console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() '+maxR);
}
}
console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_GetLevel() return [maxR + 1] = '+(maxR + 1));
return maxR + 1;
}
function click_WMERequest() {
console.log('WME Requests v.' + wmer_Version + ': ' + 'click_WMERequest()::Action: '+this.id);
if (typeof Waze.selectionManager === "undefined")
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.selectionManager not found');
return;
}
if (Waze.selectionManager.selectedItems.length == 0)
{
alert(wmer_LanguageRU?'Нет выделенных объектов':'No selected segments.');
return;
}
if (Waze.selectionManager.selectedItems.length < 2 && this.id == 'wmerBtn_join')
{
alert(wmer_LanguageRU?'Вы должны выделить 2 сегмента':'You must select 2 segments.');
return;
}
var username = wmer_getUsername();
var sccObj = wmer_getCCSD(Waze.selectionManager.selectedItems[0].model);
//console.dir(sccObj)
var lockLevel = wmer_GetLevel();
console.log('WME Requests v.' + wmer_Version + ': ' + 'lockLevel= '+lockLevel);
if (lockLevel == 1 && this.id == 'wmerBtn_lock')
{
alert(wmer_LanguageRU?'Выбранные сегменты уже разблокированы':'Selected segments are already unlocked');
return;
}
var normalizedLevel=Waze.loginManager.user.normalizedLevel;
//normalizedLevel=2;
console.log('WME Requests v.' + wmer_Version + ': ' + 'My level: '+normalizedLevel);
console.log('WME Requests v.' + wmer_Version + ': ' + 'Lock level: '+lockLevel);
if (lockLevel <= normalizedLevel && this.id == 'wmerBtn_lock') {
alert(wmer_LanguageRU?'Выбранные сегменты имеют доступный вам уровень блокировки':'Selected segments have a lock level that is less or equal to yours')
return;
}
lockLevel=normalizedLevel;
var description='type: ' + sccObj.type + '\r' +
'country: '+ sccObj.country + '\r' +
'city: ' + sccObj.city + '\r' +
'street/name: ' + sccObj.street + '\r' +
'description: ' + sccObj.description;
description = description.replace(/%/g, '%25');
description = description.replace(/\+/g, '%2B'); // +
description = description.replace(' ', '%20'); // ' '
description = description.replace(/\r\n/g, '\r'); // '\r\n'
description = description.replace(/\r/g, '%0A'); // '\n'
description = description.replace(/&/g, '%26');
description = description.replace(/</g, '%3C');
description = description.replace(/\>/g, '%3E');
description = description.replace(/\?/g, '%3F');
description = description.replace(/=/g, '%3D');
var permalink = wmer_generate_permalink();
console.log('WME Requests v.' + wmer_Version + ': ' + 'permalink=' + permalink);
permalink = permalink.replace(/%/g, '%25'); //???
permalink = permalink.replace(/&/g, '%26');
permalink = permalink.replace(/\?/g, '%3F');
permalink = permalink.replace(/=/g, '%3D');
permalink = permalink.replace(/</g, '%3C');
permalink = permalink.replace(/\>/g, '%3E');
//You can get entry numbers in google stylesheet: "Answers->Get precompiled URL"
var curDate=new Date();
curDate.setDate(curDate.getDate() + wmer_CountDays);
var action="";
switch(this.id)
{
case 'wmerBtn_lock':
action='lock';
break;
case 'wmerBtn_join':
action='join';
break;
case 'wmerBtn_dir':
action='direction';
break;
case 'wmerBtn_turn':
action='turn';
break;
case 'wmerBtn_closures':
action='closures';
break;
}
function zero2(d){
if((""+d).length == 1)
d="0" + "" + d;
return d;
}
var idCL=(sccObj.country=='Russia'?0:(sccObj.country=='Belarus'?1:-1));
if(idCL == -1)
{
console.log('WME Requests v.' + wmer_Version + ': idCL = ' +idCL + ', sccObj.countryName='+sccObj.country);
return;
}
var WMERequestEmail=localStorage.getItem("WMERequestEmail");
if (!WMERequestEmail)
WMERequestEmail=""
// localStorage.setItem('WMERequestEmail', 'МЫЛО');
// !!!
var url = CL[idCL].fr +
'?entry.1230839078=' + username +
'&entry.390417455=' + permalink +
'&entry.1224334113=' + lockLevel +
'&entry.1508498769=' + sccObj.country +
'&entry.1856604039=' + action +
'&entry.259824358=' + description +
'&entry.1797072526=' + WMERequestEmail +
'&entry.571885954='+curDate.getFullYear()+'-'+zero2(curDate.getMonth()+1)+'-'+zero2(curDate.getDate()) +
'';
// CL: always zoom = 4
var urlCL = CL[idCL].f +
'?entry.1109766685=' + username +
'&entry.1785513403=' + WMERequestEmail +
'&entry.1300384005=' + permalink.replace(/zoom\%3D([0-9]+)\%26/,"zoom%3D4%26") +
'';
var urlL5 = CL[idCL].l +
'?p1=' + sccObj.username +
'&p2=' + sccObj.city +
'&p3=' + permalink +
'&p4=' + timeConverter(sccObj.updatedOn) +
'&p5=' + sccObj.cityID +
'';
if(this.id == 'wmerA_cl')
{
if(sccObj.city == null || sccObj.city == '')
{
alert(wmer_LanguageRU?"Внимание! Имя НП пустое. Сохранение не возможно.":"Attention! The name of the city is empty. Saving is not possible.")
return;
}
}
window.open(this.id == 'wmerBtn_cl'?urlCL:(this.id == 'wmerA_cl'?urlL5:url), '_blank');
}
function wmer_generate_permalink() {
var wcp=document.getElementsByClassName('WazeControlPermalink');
for(var i=0; i < wcp.length; ++i)
for (var j=0; j < wcp[i].getElementsByTagName('a').length;++j)
{
var href=wcp[i].getElementsByTagName('a')[j].href;
if (href.indexOf(".waze.com/") > 0 && href.indexOf("/editor") > 0)
{
// kill "/ru/", kill "layers"
href=href.replace("/ru/","/").replace(/layers=([0-9]+)\&/,"");
console.log('WME Requests v.' + wmer_Version + ': ' + 'href=' + href);
return href;
}
}
return "";
}
function wmer_insertButton(z)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'wmer_insertButton()');
/*{
var permalink=wmer_generate_permalink();
var p = document.getElementsByClassName('WazeControlMousePosition')[0].lastChild.innerHTML.split(' ');
permalink=permalink.replace(/#/g, "").replace(/&lat=([0-9\.]+)/g, '&lat='+p[1]).replace(/&lon=([0-9\.]+)/g, '&lon='+p[0]);
}*/
if(document.getElementById('WME.Request_' + wmer_Version) != null)
document.getElementById('WME.Request_' + wmer_Version).setAttribute('style', 'display:'+(Waze.selectionManager && Waze.selectionManager.selectedItems.length == 0?'none':'')+';');
if(Waze.selectionManager.selectedItems.length == 0)
return;
var editPanelID='';
var disabled=false;
var disabledjoin=false;
var disabledLock=false;
var disabledPM=false;
if (document.getElementById('segment-edit-general') != null)
{
editPanelID='segment-edit-general';
disabled=false;
disabledjoin=false;
disabledLock=false;
}
else if (document.getElementById('landmark-edit-general') != null)
{
editPanelID='landmark-edit-general';
disabledLock=false;
disabledjoin=true;
disabled=true;
}
else if (document.getElementById('node-edit-general') != null)
{
editPanelID='node-edit-general';
disabled=true;
disabledjoin=true;
disabledPM=true;
disabledLock=true;
}
else if (document.getElementById('edit-panel') != null)
{
editPanelID='edit-panel';
disabled=true;
disabledjoin=true;
disabledLock=true;
}
var sccObj = wmer_getCCSD(Waze.selectionManager.selectedItems[0].model);
//console.dir(sccObj)
console.log('WME Requests v.' + wmer_Version + ': sccObj.cityID=' + sccObj.cityID + ', sccObj.country='+sccObj.country);
var idCL=(sccObj.country=='Russia'?0:(sccObj.country=='Belarus'?1:-1));
if(idCL == -1)
{
console.log('WME Requests v.' + wmer_Version + ': idCL = ' +idCL + ', sccObj.country='+sccObj.country);
idCL=0;
}
if(document.getElementById('WME.Request_' + wmer_Version) == null)
{
srsCtrl = document.createElement('section');
srsCtrl.id = 'WME.Request_' + wmer_Version;
var padding="padding:5px 9px"
srsCtrl.innerHTML = /*'<hr>'+*/
'<a href="' + CL[idCL].dr + '" target="_gdocRequest" title="' + sccObj.country + '">Requests:</a> '+
'(<a href="https://www.waze.com/forum/viewtopic.php?p=662218#p662218" title="WME Requests ' + wmer_Version + '" style="font-size: 10px" target="_blank">?</a>) / '+
'<a href="' + CL[idCL].d + '" target="_gdocRequest" title="' + sccObj.country + '">CityLock:</a> '+
'(<a href="https://www.waze.com/forum/viewtopic.php?f=787&t=105793" title="City Lock ' + wmer_Version + '" style="font-size: 10px" target="_blank">?</a>)'+
'</br>'+
'<button id="wmerBtn_lock" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
(wmer_LanguageRU?'Отправить запрос на изменение уровня блокировки объектов':'Send a request to lock/unlock segment(s)')+
'"><i class="icon-unlock"></i> Lock</button> ' +
'<button id="wmerBtn_join" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
(wmer_LanguageRU?'Отправить запрос на присоединение сегментов':'Send a request to join several segments')+
'"><i class="icon-cogs"></i> Join</button> ' +
'<button id="wmerBtn_dir" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
(wmer_LanguageRU?'Отправить запрос на изменение направления движения сегментов':'Send a request to change the direction of segment(s)')+
'"><i class="icon-random"></i> Dir</button> ' +
'<button id="wmerBtn_turn" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
(wmer_LanguageRU?'Отправить запрос на изменение разрешения поворотов':'Send a request to change the turn restriction.')+
'"><i class="icon-arrows-alt"></i> Turn</button> ' +
'<button id="wmerBtn_closures" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
(wmer_LanguageRU?'Отправить запрос на изменение перекрытие сегментов':'Send a request to change the Real Time Closures.')+
'"><i class="icon-calendar"></i> Closures</button><br>' +
'<button id="wmerBtn_pm" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
(wmer_LanguageRU?'Отправить приватное сообщение в форум авторам выделенных объектов':'Send (in forum) a Private Message to the author of the segment')+
'"><i class="icon-envelope"></i> PM</button> ' +
'<button id="wmerBtn_cl" class="btn btn-default" style="font-size:9px;'+padding+'" title="'+
(wmer_LanguageRU?'Отправить запрос на изменение наименования населенного пункта':'Send a request to CityLock')+
'"><i class="icon-home"></i> City</button>' +
'</br><span id="wmerCityID"></span>'+
'</br><span id="wmerLatLon"></span>'+
'<hr>';
//http://www.earthtools.org/sun/51.65500265464235/39.18297673378902/22/1/99/0
document.getElementById(editPanelID).appendChild(srsCtrl);
document.getElementById('wmerBtn_lock').onclick = click_WMERequest;
document.getElementById('wmerBtn_dir').onclick = click_WMERequest;
document.getElementById('wmerBtn_turn').onclick = click_WMERequest;
document.getElementById('wmerBtn_closures').onclick = click_WMERequest;
document.getElementById('wmerBtn_join').onclick = click_WMERequest;
document.getElementById('wmerBtn_pm').onclick = click_submitPMForm;
document.getElementById('wmerBtn_cl').onclick = click_WMERequest;
var permalink=wmer_generate_permalink();
//var p = document.getElementsByClassName('WazeControlMousePosition')[0].innerHTML.replace(' ', '').split(',');
var p = document.getElementsByClassName('WazeControlMousePosition')[0].lastChild.innerHTML.split(' ');
permalink=permalink.replace(/#/g, "").replace(/&lat=([0-9\.]+)/g, '&lat='+p[1]).replace(/&lon=([0-9\.]+)/g, '&lon='+p[0]);
/*
if (typeof Waze.selectionManager.selectedItems[0].geometry.x !== "undefined")
{
// корректировка пермалинка для камеры, жанкшина и Place (point)
var urPos=new OpenLayers.LonLat(Waze.selectionManager.selectedItems[0].geometry.x,Waze.selectionManager.selectedItems[0].geometry.y);
urPos.transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326")); // {lon, lat}
permalink=permalink.replace(/#/g, "").replace(/&lat=([0-9\.]+)/g, '&lat='+urPos.lat).replace(/&lon=([0-9\.]+)/g, '&lon='+urPos.lon);
}
*/
//document.getElementById('wmerCityID').innerHTML='<small><a href="'+permalink+'">cityID: '+sccObj.cityID+'</a></small>';
document.getElementById('wmerCityID').innerHTML='<small>cityID: '+sccObj.cityID+'</small>';
if(Waze.loginManager.user.rank >= 4)
{
document.getElementById('wmerCityID').innerHTML+=' (<small><a style="cursor: pointer" title="Save the name of the new city in the Google Table" id="wmerA_cl">save</a></small>)';
document.getElementById('wmerA_cl').onclick = click_WMERequest;
}
//document.getElementById('wmerLatLon').innerHTML='<small>'+p[0]+','+p[1]+'</a></small>';
console.log('WME Requests v.' + wmer_Version + ': ' + 'initialised');
}
if(document.getElementById('WME.Request_' + wmer_Version) != null)
{
document.getElementById('wmerBtn_lock').disabled=disabledLock;
document.getElementById('wmerBtn_dir').disabled=disabled;
document.getElementById('wmerBtn_turn').disabled=disabled;
document.getElementById('wmerBtn_closures').disabled=disabled;
document.getElementById('wmerBtn_join').disabled=disabled;
document.getElementById('wmerBtn_pm').disabled=disabledPM;
document.getElementById('wmerBtn_cl').disabled=disabled;
}
}
// <WME Fancy permalink> - http://userscripts.org/users/548866
function getId(node) {
return document.getElementById(node);
}
function getForumUserIdFromID(wmeUserID)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'call getForumUserIdFromID(' + wmeUserID + ')');
var userName=Waze.model.users.get(wmeUserID);
console.dir(userName);
return (getForumUserIdFromName(userName.userName));
}
function getForumUserIdFromName(userName)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'call getForumUserIdFromName(' + userName + ')');
var forumID=-1;
var forumIDs=new Array();
if (userName.indexOf('/')!=-1)
{
var userNames=userName.split('/');
for (var i=0; i<userNames.length; i++)
{
forumID=getForumUserIdFromName(userNames[i]);
forumIDs[i]=forumID[0];
}
return forumIDs;
}
console.log('WME Requests v.' + wmer_Version + ': ' + 'looking for ' + userName + ' in the forum.');
var xhr3_object;
if(window.XMLHttpRequest) // Firefox & Chrome
xhr3_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr3_object = new ActiveXObject("Microsoft.XMLHTTP");
xhr3_object.open("GET", "https://www.waze.com/forum/memberlist.php?username=" + userName, false);
xhr3_object.onreadystatechange = function() {
if(xhr3_object.readyState == 4)
{
var test = xhr3_object.responseText.match(/u=([0-9]+)"/g);
if (test==null)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'Forum return null');
return(-1); // no match
}
if (test.length>1)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'Forum return multiple match:');
console.dir(test);
return(-2); // multiple match
}
forumID=test[0].substring(2, test[0].length-1);
}
};
console.dir(xhr3_object);
try {
xhr3_object.send(null);
}
catch (err) {
console.log('WME Requests v.' + wmer_Version + ': ' + 'XMLHttpRequest error: ' +err.name);
console.dir(err);
return(-3);
}
forumIDs[0]=forumID;
return (forumIDs);
}
function click_submitPMForm()
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'click_submitPMForm() start');
if (typeof Waze.selectionManager === "undefined")
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.selectionManager not found');
return;
}
if (Waze.selectionManager.selectedItems.length == 0)
{
alert(wmer_LanguageRU?'Сначала необходимо выделить сегмент':'Please, select one segment before');
return false;
}
//-------------
var sccObjs=new Array();
for (var i=0; i < Waze.selectionManager.selectedItems.length; ++i)
{
var sccObj = wmer_getCCSD(Waze.selectionManager.selectedItems[i].model);
if (sccObj.userID==-1)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - Do not PM Admin!');
alert("Can't PM admin!");
return false;
}
var j;
for (j=0; j < wmer_UserCache.length; j+=2)
{
if (wmer_UserCache[j] === sccObj.userID)
{
sccObj.forumuserID=wmer_UserCache[j+1];
console.log('WME Requests v.' + wmer_Version + ': ' + 'found ['+j+']'+wmer_UserCache[j+1]);
break;
}
}
if (sccObj.forumuserID == "")
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'not found '+sccObj.userID);
sccObj.forumuserID=getForumUserIdFromID(sccObj.userID);
wmer_UserCache.push(sccObj.userID,sccObj.forumuserID);
}
sccObjs.push(sccObj);
}
var forumIDs=new Array();
for (var i=0; i < sccObjs.length; ++i)
forumIDs[i]=sccObjs[i].forumuserID;
//-------------
if (forumIDs.length==1 && forumIDs[0]==-1)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - User never logged to the forum...');
alert(wmer_LanguageRU?'Автор сегмента не найден на форуме':'Sorry: unable to find the user in the forum');
return false;
}
if (forumIDs.length==1 && forumIDs[0]==-2)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - Several users match name. Should never happen :s');
alert(wmer_LanguageRU?'Найдено более одного пользователя\nОтправьте сообщение самостоятельно.':'Sorry: more than one user found in the forum.\nYou should look for him/her by yourself.');
return false;
}
if (forumIDs.length==1 && forumIDs[0]==-3)
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'A network error occurred.');
alert(wmer_LanguageRU?'Сетевые проблемы\nОтправьте сообщение самостоятельно.':'Sorry: a network error occurred.\nYou should look for him/her by yourself.');
return false;
}
console.log('WME Requests v.' + wmer_Version + ': ' + 'PM request - all OK. go to PM!');
var formID="WMER-PM-FORM";
var nodePM;
if (getId("WMER-PM-Send") == null)
{
nodePM= document.createElement('div');
nodePM.id = 'WMER-PM-Send';
nodePM.style.display='hidden';
getId('WME.Request_' + wmer_Version).appendChild(nodePM);
}
else
{
nodePM=getId("WMER-PM-Send");
}
var PMForm;
PMForm='<form id="' + formID + '" target="_blank" method="post" style="display: inline">';
PMForm+='<input id="' + formID + '-subject" type="hidden" name="subject" value="" />';
PMForm+='<input type="hidden" name="addbbcode20" value="100" />';
PMForm+='<input id="' + formID + '-message" type="hidden" name="message" value="" />';
PMForm+='<input type="hidden" name="preview" value="Preview" />';
PMForm+='<input type="hidden" name="attach_sig" value="on" />';
PMForm+='<input id="' + formID + '-ct" type="hidden" name="creation_time" value="0" />';
PMForm+='<input id="' + formID + '-lc" type="hidden" name="lastclick" value="0" />';
for (var i=0; i<forumIDs.length; i++)
{
PMForm+='<input type="hidden" name="address_list[u]['+forumIDs[i]+']" value="to" />';
}
PMForm+='</form>';
nodePM.innerHTML=PMForm;
var permalink=wmer_generate_permalink();
linkParts=permalink.replace(/#/g, "").split('&');
for (var j=0; j<linkParts.length; j++)
{
if (linkParts[j].indexOf("segments=")==0)
{
linkParts.splice (j,1);
break;
}
}
//console.dir(linkParts);
var message=wmer_LanguageRU?
'Есть вопросы по вашим правкам в [url=' + permalink + ']этой области редактирования[/url]:\n\n':
'Some questions about [url=' + permalink + ']this area[/url]:\n\n';
permalink=linkParts.join('&');
for (var i=0; i < sccObjs.length; ++i)
{
message += '[b]2' + sccObjs[i].username + '[/b]: '+
sccObjs[i].type+' ('+
'[url=' + permalink + '&segments=' + sccObjs[i].objid + ']'+
(sccObjs[i].country === ''?'':'country: [b]'+sccObjs[i].country+'[/b]/')+
(sccObjs[i].city === ''?'':'city: [b]'+sccObjs[i].city+'[/b]/')+
'name: [b]'+(sccObjs[i].street==null?'<<noname>>':sccObjs[i].street)+'[/b]'+
(sccObjs[i].description === ''?'':'/description: [b]'+sccObjs[i].description+'[/b]') +
'[/url])\n\n';
}
//console.log('WME Requests v.' + wmer_Version + ': ' + message);
getId(formID + '-message').value=message;
var now=new Date().getTime();
now /= 1000;
now = Math.floor(now);
getId(formID + '-ct').value=now;
getId(formID + '-lc').value=now;
getId(formID).action="https://www.waze.com/forum/ucp.php?i=pm&mode=compose&action=post";
getId(formID + '-subject').value=
wmer_LanguageRU?
'[WME Request] Уточнение по вашим правкам.':
'[WME Request] Question about your map edits';
//console.dir(getId(formID));
getId(formID).submit();
return true; // this forces to open in new tab!
}
// </WME Fancy permalink>
function wmer_WazeBits()
{
if (typeof Waze === "undefined")
Waze=unsafeWindow.Waze;
if (typeof Waze === "undefined")
Waze=window.Waze;
}
function wmer_FakeLoad()
{
wmer_WazeBits();
if (typeof Waze === "undefined")
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze not found, retrying in 500ms...');
setTimeout(wmer_FakeLoad,500);
return;
}
if (typeof Waze.selectionManager === "undefined")
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.selectionManager not found, retrying in 500ms...');
setTimeout(wmer_FakeLoad,500);
return;
}
if (typeof Waze.model === "undefined")
{
console.log('WME Requests v.' + wmer_Version + ': ' + 'Waze.model not found, retrying in 500ms...');
setTimeout(wmer_FakeLoad,500);
return;
}
try {
Waze.selectionManager.events.register("selectionchanged", null, wmer_insertButton);
console.log('WME Requests v.' + wmer_Version + ': ' + 'added event handler for selectionchanged');
}
catch (err) {
console.log('WME Requests v.' + wmer_Version + ': ' + 'added event handler error: ' +err.name);
}
}
function wmer_Init() {
console.log('WME Requests v.' + wmer_Version + ': ' + 'init');
setTimeout(wmer_FakeLoad, 500);
}
wmer_bootstrap();