WME UR responses types

Add a dropdown list to the UR conversation panel

נכון ליום 05-12-2014. ראה הגרסה האחרונה.

// ==UserScript==
// @name                WME UR responses types
// @namespace           @UR2T_Myriades
// @description         Add a dropdown list to the UR conversation panel
// @include             https://www.waze.com/editor/*
// @include             https://www.waze.com/*/editor/*
// @icon                data:image/png;base64,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
// @version             0.5
// @grant				GM_xmlhttpRequest
// @copyright   		2014, Myriades
// ==/UserScript==

/***	Remerciements : DummyD2, seb-d59, Yopinet et tous les testeurs :)	***/

/**************************/
/***	UR2T object		***/
/**************************/
console.info('WME_UR2T_' + GM_info.script.version + ' : ' + 'Init start');
var UR2T = {};
UR2T.debug_level = 3;
UR2T.UR_Selected = false;
UR2T.oldVer = null;
UR2T.answers = {};
UR2T.answers.UR = {};
//	Perso
UR2T.answers.UR['perso'] = {'name': 'Réponses personnalisées', 'objects': {}};
//	Outils
UR2T.answers.UR['outils'] = {'name': 'Outils', 'objects': {}};
UR2T.answers.UR['outils'].objects[0] = {'question': 'Effacer la zone de texte', 'answer': ''};
UR2T.answers.UR['outils'].objects[1] = {'question': 'Éditer les réponses', 'answer': 'UR2T_EditResponses'};
//	Divers
UR2T.answers.UR['divers'] = {'name': 'Divers', 'objects': {}};
UR2T.answers.UR['divers'].objects[0] = {'question': 'Décrochage GPS (général)', 'answer': 'Bonjour,\nil semble que vous ayez eu un problème de décrochage GPS. Vous pouvez améliorer les performances GPS de votre mobile en vous rendant sur "Paramètres", "Localisation" et en désactivant "Service de localisation" et "Localisation et recherche". Je clôture donc cette demande. Merci pour votre contribution à l\'amélioration de Waze.'};
UR2T.answers.UR['divers'].objects[1] = {'question': 'Mise à jour sur mobile', 'answer': 'Bonjour,\nla carte sur votre mobile ne doit plus être à jour.\nJe vous suggère de forcer la mise à jour sur Waze dans "Paramètres->Avancés->Transferts réseau->Rafraichir la carte de ma zone".\nMerci pour votre contribution à l\'amélioration de Waze.'};
UR2T.answers.UR['divers'].objects[2] = {'question': 'Mise à jour POI', 'answer': 'Bonjour,\nnous vous invitons à mettre à jour votre application Waze en version 3.9.\nEn effet cette version vous permet de signaler un POI, et l\'agrémenter d\'information que vous seul êtes le mieux à même de connaitre.\nCeci enclenchera sa création, et son existence au sein de la carte. D\'avance merci.'};
UR2T.answers.UR['divers'].objects[3] = {'question': 'Relance (aprés 3 ou 4 jours)', 'answer': 'Bonjour,\ntoujours pas d\'informations supplémentaires?\nPour info, après 7 jours sans réponses, les demandes sont considérées comme sans objet et clôturées.\nCordialement.'};
UR2T.answers.UR['divers'].objects[4] = {'question': 'UR Résolu', 'answer': 'Bonjour,\nle problème est corrigé et la modification sera effective sur votre mobile d\'ici quelques jours.\nVous pourrez si nécessaire forcer la mise à jour sur Waze dans "Paramètres->Avancés->Transfert réseau->Rafraichir la carte de ma zone".\nMerci pour votre contribution à l\'amélioration de Waze.', 'special' : 'ur_solved'};
UR2T.answers.UR['divers'].objects[5] = {'question': 'UR sans réponse après une relance', 'answer': 'Bonjour,\nNous n\'avons plus de vos nouvelles pour cette demande de mise à jour depuis plus de 7 jours. Nous considérons donc ce problème comme abandonné.\nCette demande de mise à jour est close, merci d\'en faire une nouvelle si nécessaire.\nA bientôt sur Waze', 'special' : 'ur_unsolved'};
//	Guidage incorrecte
UR2T.answers.UR[6] = {'name': 'Guidage incorrecte', 'objects': {}};
UR2T.answers.UR[6].objects[0] = {'question': 'Guidage incorrect', 'answer': 'Vous nous avez fait part d\'un guidage incorrect lors de votre navigation. Pourriez-vous nous décrire les raisons qui vous ont conduit à effectuer ce signalement? Au mieux, un point de départ et une destination afin d\'essayer de reproduire les instructions d\'itinéraire? Merci d\'avance.'};
//	Adresse incorrecte
UR2T.answers.UR[7] = {'name': 'Adresse incorrecte', 'objects': {}};
UR2T.answers.UR[7].objects[0] = {'question': 'Adresse incorrecte', 'answer': 'Vous avez signalé une adresse incorrecte. Nous allons analyser si des données doivent être mises à jour. Cependant, à l\'emplacement de votre signalement, merci de nous indiquer quelle devrait être l\'adresse correcte à rectifier ? Dans l\'attente d\'un retour de votre part, merci d\'avance pour votre participation.'};
//	Rond-point manquant
UR2T.answers.UR[9] = {'name': 'Rond-point manquant', 'objects': {}};
UR2T.answers.UR[9].objects[0] = {'question': 'Rond-point manquant', 'answer': 'Vous avez signalé un rond-point manquant. Sauriez-vous nous indiquer si son emplacement correspond à la position de votre signalement? De plus, dans l\'idéal, le nombre et le nom des voies impliquées seraient fort appréciables afin que nous puissions créer ce carrefour giratoire au plus près de la réalité. Merci d\'avance pour votre participation.'};
//	General error
UR2T.answers.UR[10] = {'name': 'Erreur générale', 'objects': {}};
UR2T.answers.UR[10].objects[0] = {'question': 'Erreur générale: pas systématique', 'answer': 'Bonjour,\nvous avez signalé une "erreur générale" sur votre parcours.\nLa carte ne faisant apparaître aucun problème dans ce secteur, pouvez-vous être plus précis?\nMerci pour votre contribution à l\'amélioration de Waze.'};
UR2T.answers.UR[10].objects[1] = {'question': 'Ponts non affichés sur la carte', 'answer': 'Bonjour,\nen fonction de votre vitesse les éléments inutiles sont automatiquement masqués, donc ceci est une situation normale.\nMerci pour votre contribution à l\'amélioration de Waze.'};
UR2T.answers.UR[10].objects[2] = {'question': 'Trajet inhabituel - carte OK', 'answer': 'Bonjour,\naprès vérification de la carte sur votre trajet, aucune erreur ne peut expliquer l\'itinéraire "inhabituel" proposé.\nNous allons donc clôturer ce post.\nLes explications possibles (suppositions) sont :\n- ralentissement important, travaux, accident;\n- mauvaise saisie de destination sur le mobile;\n- mauvais paramétrage de navigation (autoroute / péage / +rapide / +court);\n- nous vous suggérons également de forcer la mise à jour sur Waze dans "Paramètres" / "Avancés" / "Transfert réseau" puis "Rafraichir la carte de ma zone".\nN\'hésitez pas à signaler toute anomalie / modification / travaux.\nMerci pour votre contribution à l\'amélioration de Waze.'};
UR2T.answers.UR[10].objects[3] = {'question': 'Zone radar non signalée', 'answer': 'Bonjour,\nafin de respecter les nouvelles règlementations en matière de dispositifs "anti-radar", Waze signale désormais la zone de contrôle radar en tant que "zone de contrôle".\nJe clôture donc ce signalement.\nMerci pour votre contribution à l\'amélioration de Waze.'};
//	Turn not allowed
UR2T.answers.UR[11] = {'name': 'Interdiction de tourner', 'objects': {}};
UR2T.answers.UR[11].objects[0] = {'question': 'Interdiction / Autorisation de tourner', 'answer': 'Bonjour,\nmerci pour votre signalement.\nPouvez-vous préciser :\n- s\'il s\'agit d\'une interdiction de tourner à établir ou à supprimer sur Waze;\n- quelle est l\'intersection concernée (nom des voies);\n- quel est le sens de l\'interdiction à traiter (exemple : interdit de tourner voie A vers voie B en tournant à gauche).\nMerci pour votre contribution à l\'amélioration de Waze.'};
UR2T.answers.UR[11].objects[1] = {'question': 'Travaux', 'answer': 'Bonjour,\nsi les travaux ne sont pas de nature à interdire complètement la circulation (dans un sens ou dans l\'autre) pour une période donnée, il suffit de les signaler simplement en circulant.\nPar contre, dans le cas contraire, merci de bien vouloir indiquer le tronçon concerné, l\'interdiction exacte (par exemple interdit de rue A vers rue B en tournant à gauche) et si possible la période.\nMerci pour votre contribution à l\'amélioration de Waze.'};
//	Incorrect junction
UR2T.answers.UR[12] = {'name': 'Jonction incorrecte', 'objects': {}};
UR2T.answers.UR[12].objects[0] = {'question': 'Jonction Incorrecte', 'answer': 'Bonjour,\nvous avez signalé une jonction incorrecte sur votre parcours, pouvez-vous être plus précis afin que nous puissions traiter ce désagrément. Merci pour votre contribution à l\'amélioration de Waze.'};
//	Missing bridge overpass
UR2T.answers.UR[13] = {'name': 'Viaduc ou pont manquant', 'objects': {}};
UR2T.answers.UR[13].objects[0] = {'question': 'Viaduc ou pont manquant', 'answer': 'Bonjour,\nvous signalez "viaduc ou pont manquant".\nPouvez-vous nous donner des précisions concernant votre signalement? (lieu ou autre cause ou erreur).\nVous pouvez également créer une route en temps réel sur votre application Waze en sélectionnant "Signaler / Erreur carte" puis l\'onglet "Créer une route".\nMerci pour votre contribution à l\'amélioration de Waze.'};
//	Wrong driving direction
UR2T.answers.UR[14] = {'name': 'Mauvais sens de circulation', 'objects': {}};
UR2T.answers.UR[14].objects[0] = {'question': 'Travaux', 'answer': 'Bonjour,\nsi les travaux ne sont pas de nature à interdire complètement la circulation (dans un sens ou dans l\'autre) pour une période donnée, il suffit de les signaler simplement en circulant.\nPar contre, dans le cas contraire, merci de bien vouloir indiquer le tronçon concerné, l\'interdiction exacte (par exemple interdit de rue A vers rue B en tournant à gauche) et si possible la période.\nMerci pour votre contribution à l\'amélioration de Waze.'};
UR2T.answers.UR[14].objects[1] = {'question': 'Mauvais sens de circulation', 'answer': 'Bonjour,\nsuite à votre signalement, pouvez-vous préciser quel tronçon de voie est à corriger.\nSi vous le pouvez, préciser également le sens de circulation et les limites.\nPar exemple : la voie A est en sens unique nord-sud entre la voie B et la voie C.\nMerci pour votre contribution à l\'amélioration de Waze.'};
//	Missing exit
UR2T.answers.UR[15] = {'name': 'Sortie manquante', 'objects': {}};
UR2T.answers.UR[15].objects[0] = {'question': 'Nom de rue introuvable', 'answer': 'Bonjour,\nmerci pour votre signalement. Toutefois, pouvez-vous me dire où se trouve la rue concernée ?'};
UR2T.answers.UR[15].objects[1] = {'question': 'Sortie manquante', 'answer': 'Bonjour,\nmerci de votre signalement. Vous nous indiquez qu\'une sortie est manquante. Pouvez-vous nous donner son emplacement s\'il vous plaît ? Vous pouvez également créer une route en temps réel sur votre application Waze en sélectionnant "Signaler / Erreur carte" puis l\'onglet "Créer une route".Merci pour votre contribution à l\'amélioration de Waze.'};
//	Missing road
UR2T.answers.UR[16] = {'name': 'Route manquante', 'objects': {}};
UR2T.answers.UR[16].objects[0] = {'question': 'Nom de rue introuvable', 'answer': 'Bonjour,\nvous avez signalé un mauvais nom de rue. Notre base de données n’étant pas suffisamment à jour pour traiter cet incident, pourriez-vous nous communiquer le nom correct afin que nous puissions la mettre à jour?\nMerci pour votre contribution à l\'amélioration de Waze."'};
UR2T.answers.UR[16].objects[1] = {'question': 'Route manquante', 'answer': 'Bonjour,\nmerci de votre signalement.\nVous nous indiquez qu\'une route est manquante. Pouvez-vous nous donner son nom et son emplacement s\'il vous plaît?\n(Par exemple entre la rue A et la rue B.)\nVous pouvez également créer une route en temps réel sur votre application Waze en sélectionnant "Signaler / Erreur carte" puis l\'onglet "Créer une route".\nMerci pour votre contribution à l\'amélioration de Waze.'};
UR2T.answers.UR[16].objects[2] = {'question': 'Route manquante mais présente.', 'answer': 'Bonjour,\nvous nous signalez une route manquante sur la carte Waze. Or la route désignée à l\'emplacement est pourtant présente sur la carte.\nJe vous suggère de forcer la mise à jour sur Waze dans "Paramètres->Avancés->Transfert réseau" puis "Rafraichir la carte de ma zone".\nMerci pour votre contribution à l\'amélioration de Waze.'};
//	POI Manquant
UR2T.answers.UR[18] = {'name': 'POI manquant', 'objects': {}};
UR2T.answers.UR[18].objects[0] = {'question': 'POI manquant', 'answer': 'Nous vous invitons à mettre à jour votre application Waze en version 3.9. En effet cette version vous permet de signaler un POI, et l\'agrémenter d\'informations que vous seul êtes le mieux à même de connaître. Ceci enclenchera sa création, et son existence au sein de la carte dès la validation par nos équipes. Merci d\'avance pour votre participation.'};
/***	Adaptation du local storage au nouveau modèle	***/
if(localStorage.UR2T){
	var UR2T_tmp = JSON.parse(localStorage.UR2T);
	var URs = UR2T.answers.UR;
	/***	V0.4 -> V0.5	***/
	//	Ajout des nouveaux objets
	if(typeof(UR2T_tmp.oldVer) == 'undefined')UR2T_tmp.oldVer = null;
	if(typeof(UR2T_tmp.answers.UR['outils']) == 'undefined')UR2T_tmp.answers.UR['outils'] = URs['outils'];
	if(typeof(UR2T_tmp.answers.UR['perso']) == 'undefined')UR2T_tmp.answers.UR['perso'] = URs['perso'];
	//	Suppression des objets obsolètes
	var QR_tmp = [];
	for(var QRid in URs.divers.objects){
		switch(UR2T_tmp.answers.UR.divers.objects[QRid].question){
			case'Effacer la zone de texte':
			case'Éditer les réponses':
				continue;
			default:
				QR_tmp.push(UR2T_tmp.answers.UR.divers.objects[QRid]);
				break;
		}
	}
	UR2T_tmp.answers.UR.divers.objects = QR_tmp;
	/***	Fin V0.4 -> V0.5	***/
	//	Sauvegarde
	UR2T = UR2T_tmp;
}
UpdateLS();

/**********************************************/
/***	bootstrap, will call UR2T_init()	***/
/**********************************************/
function UR2T_bootstrap(){
	UR2T_addLog(1, 'info', 'bootstrap starts');
	if (typeof(unsafeWindow) === "undefined"){
		unsafeWindow = ( function () {
			var dummyElem = document.createElement('p');
			dummyElem.setAttribute('onclick', 'return window;');
			return dummyElem.onclick();
		}) ();
	}
	/* begin running the code! */
	setTimeout(UR2T_init, 1000);
}

/* helper functions */
// function getElementsByClassName(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;
// }

function UpdateLS(){
	localStorage.UR2T = JSON.stringify(UR2T);
}

function getId(node){
	if(node != '')return document.getElementById(node);
	return false;
}

function DOMDataFilter(obj){
	return JSON.parse(JSON.stringify(obj));
}

function getSelectedValue(node){
	var t = getId(node);
	return t.options[t.selectedIndex].value;
}

function getSelectedText(node){
	var t = getId(node);
	return t.options[t.selectedIndex].text;
}

function UR2T_addLog(UR2T_Level, UR2T_type, UR2T_text){
	if(UR2T_Level <= UR2T.debug_level){
		var HLaL_text = 'WME_UR2T_' + GM_info.script.version + ' : ' + UR2T_text;
		switch(UR2T_type){
			case 'info':
				console.info(HLaL_text);
				break;
			case 'error':
				console.error(HLaL_text);
				break;
			default:
				console.log(HLaL_text);
				break;
		}
		if(typeof(arguments[3]) !== 'undefined'){
			console.debug(HLaL_text);
			console.debug(arguments[3]);
		}
	}
}

function UR2T_init(){
	// Waze object needed
	//	Waze
	if(typeof(unsafeWindow.Waze) == 'undefined'){
		UR2T_addLog(1, 'error', 'unsafeWindow.Waze NOK', unsafeWindow.Waze);
		window.setTimeout(UR2T_init, 500);
		return;
	}
	UR2T_Waze = unsafeWindow.Waze;
	//	Waze.updateRequestsControl
	if(typeof(UR2T_Waze.updateRequestsControl) == 'undefined'){
		UR2T_addLog(1, 'error', 'UR2T_Waze.updateRequestsControl NOK', UR2T_Waze.updateRequestsControl);
		window.setTimeout(UR2T_init, 500);
		return;
	}
	UR2T_updateRequestsControl = UR2T_Waze.updateRequestsControl;
	//	Waze.model
	if(typeof(UR2T_Waze.model) == 'undefined'){
		UR2T_addLog(1, 'error', 'UR2T_Waze.model NOK', UR2T_Waze.model);
		window.setTimeout(UR2T_init, 500);
		return;
	}
	UR2T_Waze_model = UR2T_Waze.model;
	//	Waze.model.updateRequestSessions
	if(typeof(UR2T_Waze_model.updateRequestSessions) == 'undefined'){
		UR2T_addLog(1, 'error', 'UR2T_Waze_model.mapUpdateRequests NOK', UR2T_Waze_model.updateRequestSessions);
		window.setTimeout(UR2T_init, 500);
		return;
	}
	UR2T_model_updateRequestSessions = UR2T_Waze_model.updateRequestSessions;
	//	Waze.model.mapUpdateRequests
	if(typeof(UR2T_Waze_model.mapUpdateRequests) == 'undefined'){
		UR2T_addLog(1, 'error', 'UR2T_Waze_model.mapUpdateRequests NOK', UR2T_Waze_model.mapUpdateRequests);
		window.setTimeout(UR2T_init, 500);
		return;
	}
	UR2T_model_mapUpdateRequests = UR2T_Waze_model.mapUpdateRequests;
	//	Waze.loginManager
	if(typeof(UR2T_Waze.loginManager) == 'undefined'){
		UR2T_addLog(1, 'error', 'UR2T_Waze.loginManager NOK', UR2T_Waze.loginManager);
		window.setTimeout(UR2T_init, 500);
		return;
	}
	UR2T_Waze_loginManager = UR2T_Waze.loginManager;
	//	Waze.loginManager.user
	if(typeof(UR2T_Waze_loginManager.user) == 'undefined'){
		UR2T_addLog(1, 'error', 'UR2T_Waze_loginManager.user NOK', UR2T_Waze_loginManager.user);
		window.setTimeout(UR2T_init, 500);
		return;
	}
	UR2T_Waze_user = UR2T_Waze_loginManager.user;
	UR2T_addLog(1, 'info', 'GVars done');
	lastURfid = null;
	UR2T.UR_Selected = null;
	//	Periodic updates
	window.setInterval(UR2T_detect_UR_selected, 250);	//	pas d'event de sélection sur les UR :/
	UR2T_addLog(1, 'info', 'Periodic uptdates done');
	//	Events
	UR2T_addLog(1, 'info', 'Events done');
	//	Init finished
	UR2T_addLog(1, 'info', 'Init done');
	UR2T_ER_HTML();
	UR2T_GetUserResponses();
}

function UR2T_detect_UR_selected(){
	UR2T_currentRequest = UR2T_updateRequestsControl.currentRequest;
	//	UR sélectionnée ou pas
	// UR2T_addLog(1, 'info', 'UR2T_currentRequest', UR2T_currentRequest);
	if(UR2T_currentRequest == null){
		// UR2T_addLog(1, 'info', 'No UR selected');
		UR2T_CancelResponses();
		UR2T.UR_Selected = false;
		return;
	}
	//	Fast update?
	URfid = UR2T_currentRequest.attributes.id;
	if(URfid != lastURfid){
		// UR2T_addLog(1, 'info', 'UR fast update');
		lastURfid = URfid;
		UR2T.UR_Selected = false;
	}
	//	UR déjà sélectionnée
	if(UR2T.UR_Selected === true)return;
	// UR2T_addLog(1, 'info', 'UR not selected');
	UR2T.UR_Selected = true;
	//	Then wait for messages being visible.
	UR2T_Html();
}

function UR2T_Html(){
	UR2T_addLog(1, 'info', 'UR2T_Html called');
	if(typeof(document.getElementsByClassName('clearfix new-comment-form')[0]) === 'undefined'){
		console.info('clearfix new-comment-form invisible');
		window.setTimeout(UR2T_Html, 250);
		return;
	}
	//	Ajustement des hauteurs des contenus
	var WME_comment = document.getElementsByClassName('ur-comment-list')[0];
	var WME_List = WME_comment.getElementsByClassName('comment-list list-unstyled')[0];
	var WME_Form = WME_comment.getElementsByClassName('clearfix new-comment-form')[0];
	var WME_Textarea = WME_Form.getElementsByClassName('form-control new-comment-text')[0];
	var WME_edit_request = getId('edit-request');
	var WME_fieldset = WME_edit_request.getElementsByTagName('fieldset')[0];
	WME_List.style.bottom =  '210px';
	WME_Form.style.height =  '210px';
	WME_Textarea.style.height =  '110px';
	//	Content UR spéciales
	var URAttr = UR2T_currentRequest.attributes;
	var patt = new RegExp("^\[[A-Z]+\]");
	if(typeof(URAttr.description) === 'string' && patt.test(URAttr.description)){
		if(UR2T_model_updateRequestSessions.objects[URAttr.id].isFollowing === false)WME_fieldset.style.visibility = 'hidden';
		var UR2T_content = document.createElement('div');
		UR2T_content.id = 'UR2T_spec';
		UR2T_content.innerHTML = 'Merci de consulter le <a href="https://www.waze.com/forum/viewforum.php?f=34" target="_blank">forum</a>';
		UR2T_content.style.backgroundColor = 'pink';
		UR2T_content.style.marginBottom = '10px';
		UR2T_content.style.textAlign = 'center';
		// UR2T_content.style.opacity = '0.3';
		// UR2T_content.style.color = 'black';
		UR2T_content.className = 'form-control';
		if(WME_Form.firstChild)WME_Form.insertBefore(UR2T_content, WME_Textarea);
	}
	//	Content UR classiques
	else{
		WME_fieldset.style.visibility = 'visible';
		var UR2T_content = document.createElement('select');
		UR2T_content.id = 'UR2T_msgs';
		UR2T_content.className = 'form-control';
		UR2T_content.style.marginBottom = '10px';
		if(WME_Form.firstChild)WME_Form.insertBefore(UR2T_content, WME_Textarea);
		//	Populate the select
		var dummy = document.createElement('option');
		dummy.text = 'Choisissez une réponse type';
		UR2T_content.add(dummy);
		populateAnswers(UR2T_content);
		//	events
		getId('UR2T_msgs').onchange = AutoComment;
	}
}

function UR2T_ER_HTML(){
	var theMap = getId('map');
	var UR2T_container = document.createElement('div');
	UR2T_container.id = 'UR2T-overlay';
	UR2T_container.className = 'form-control';
	UR2T_container.style.zIndex = 1000;
	UR2T_container.style.backgroundColor = 'white';
	UR2T_container.style.textAlign = 'center';
	UR2T_container.style.margins = '10px';
	UR2T_container.style.display = 'none';
	UR2T_container.style.position = 'absolute';
	//	Defining position
	//	Get the ur size
	// var URPanelSize = getId('update-request-panel').clientHeight;
	UR2T_container.style.height = '360px';
	UR2T_container.style.width = (theMap.clientWidth * 0.75) + 'px';
	var topPosition = theMap.clientHeight * 0.125;
	var leftPosition = theMap.clientWidth * 0.125;
	UR2T_container.style.top = topPosition + 'px';
	UR2T_container.style.left = leftPosition + 'px';
	/***	Le conteneur des boutons	***/
	UR2T_container2 = document.createElement('div');
	UR2T_container2.id = 'UR2T-overlay-btn';
	UR2T_container2.style.position = 'absolute';
	UR2T_container2.style.bottom = '10px';
	UR2T_container2.style.right = '10px';
	UR2T_container.appendChild(UR2T_container2);
	/***	Les boutons annuler et enregistrer	***/
	var UR2T_content = document.createElement('button');
	UR2T_content.id = 'UR2T-overlay-btn-cancel';
	UR2T_content.innerHTML = 'Fermer';
	UR2T_container2.appendChild(UR2T_content);
	UR2T_content = document.createElement('button');
	UR2T_content.id = 'UR2T-overlay-btn-save';
	UR2T_content.style.marginLeft = '10px';
	UR2T_content.innerHTML = 'Enregistrer';
	UR2T_container2.appendChild(UR2T_content);
	/***	Le contenu	***/
	UR2T_container2 = document.createElement('div');
	UR2T_container.appendChild(UR2T_container2);
	UR2T_content = document.createElement('h2');
	UR2T_content.innerHTML = 'Éditeur de réponses automatiques';
	UR2T_container2.appendChild(UR2T_content);
	/***	Le contenu 1	***/
	UR2T_container2 = document.createElement('div');
	UR2T_container2.style.marginTop = '10px';
	UR2T_container.appendChild(UR2T_container2);
	UR2T_content = document.createElement('label');
	UR2T_content.setAttribute('for', 'UR2T-overlay-cat');
	UR2T_content.style.marginRight = '10px';
	UR2T_content.innerHTML = 'Section';
	UR2T_container2.appendChild(UR2T_content);
	var UR2T_select = document.createElement('select');
	UR2T_select.id = 'UR2T-overlay-cat';
	UR2T_select.innerHTML = '<option value="">Choisissez une section</option>';
	UR2T_container2.appendChild(UR2T_select);
	//	Populate the dropdown
	var UR2T_options = [];
	for(var URIndex in UR2T.answers.UR){
		UR2T_options.push(UR2T.answers.UR[URIndex].name);
	}
	UR2T_options.sort();
	//	Get the indexes
	var UR2T_options_index = [];
	for(var URDesc in UR2T_options){
		for(var URIndex in UR2T.answers.UR){
			if(UR2T_options[URDesc] == UR2T.answers.UR[URIndex].name){
				UR2T_options_index.push(URIndex);
				break;
			}
		}
	}
	for(var i=0; i<UR2T_options.length; i++){
		if(UR2T_options[i] == 'Outils')continue;
		var UR2T_option = document.createElement('option');
		UR2T_option.value = UR2T_options_index[i];
		UR2T_option.innerHTML = UR2T_options[i];
		UR2T_select.appendChild(UR2T_option);
	}
	/***	Le contenu 2	***/
	UR2T_container2 = document.createElement('div');
	UR2T_container2.style.marginTop = '10px';
	UR2T_container.appendChild(UR2T_container2);
	UR2T_content = document.createElement('label');
	// UR2T_content.setAttribute('for', 'UR2T-overlay-question');
	UR2T_content.style.marginRight = '10px';
	UR2T_content.innerHTML = 'Question';
	UR2T_container2.appendChild(UR2T_content);
	UR2T_select = document.createElement('select');
	UR2T_select.id = 'UR2T-overlay-question';
	UR2T_select.innerHTML = '<option>Choisissez une question</option>';
	UR2T_container2.appendChild(UR2T_select);
	/***	Le contenu 3	***/
	UR2T_container2 = document.createElement('div');
	UR2T_container2.style.marginTop = '10px';
	UR2T_container.appendChild(UR2T_container2);
	UR2T_content = document.createElement('label');
	// UR2T_content.setAttribute('for', 'UR2T-overlay-response');
	UR2T_content.style.marginRight = '10px';
	UR2T_content.innerHTML = 'Le texte de réponse automatique';
	UR2T_container2.appendChild(UR2T_content);
	/***	Le contenu 4	***/
	UR2T_container2 = document.createElement('div');
	// UR2T_container2.style.marginTop = '10px';
	UR2T_container.appendChild(UR2T_container2);
	var UR2T_textarea = document.createElement('textarea');
	UR2T_textarea.id = 'UR2T-overlay-response';
	// UR2T_textarea.setAttribute('rows', 23);
	UR2T_textarea.style.width = '100%';
	UR2T_textarea.style.height = '150px';
	UR2T_container2.appendChild(UR2T_textarea);
	//	On insère le tout
	theMap.appendChild(UR2T_container);
	//	events
	getId('UR2T-overlay-btn-save').onclick = UR2T_SaveResponses;
	getId('UR2T-overlay-btn-cancel').onclick = UR2T_CancelResponses;
	getId('UR2T-overlay-cat').onchange = UR2T_PopulateQuestions;
	getId('UR2T-overlay-question').onchange = UR2T_PopulateAnswers;
	getId('UR2T-overlay-response').oninput = function(){getId('UR2T-overlay-btn-cancel').innerHTML = 'Annuler';};
}

function UR2T_PopulateQuestions(){
	getId('UR2T-overlay-response').value = "";
	var UR2T_cat_dropDown = getId('UR2T-overlay-cat');
	var UR2T_question_dropdown = getId('UR2T-overlay-question');
	UR2T_question_dropdown.innerHTML = '<option>Choisissez une question</option>';
	if(UR2T_cat_dropDown.selectedIndex > 0){
		var theRef = UR2T_cat_dropDown.options[UR2T_cat_dropDown.selectedIndex].value;
		var URObjects = UR2T.answers.UR[theRef].objects; 
		var UR2T_questions = [];
		for(var QId in URObjects){
            UR2T_questions.push(URObjects[QId].question);
		}
		UR2T_questions.sort();
		//	Get the indexes
		var UR2T_questions_index = [];
		for(var URQuestion in UR2T_questions){
			for(var URIndex in URObjects){
				if(UR2T_questions[URQuestion] == URObjects[URIndex].question){
					UR2T_questions_index.push(URIndex);
					break;
				}
			}
		}
		for(var i=0; i<UR2T_questions.length; i++){
			var UR2T_option = document.createElement('option');
			UR2T_option.value = UR2T_questions_index[i];
			UR2T_option.innerHTML = UR2T_questions[i];
			UR2T_question_dropdown.appendChild(UR2T_option);
		}
	}
	else{
		UR2T_question_dropdown.innerHTML = '<option>Choisissez une question</option>';
	}
}

function UR2T_PopulateAnswers(){
	var theCat = getId('UR2T-overlay-cat');
	var theCatValue = theCat.options[theCat.selectedIndex].value;
	var theQuestion = getId('UR2T-overlay-question');
	var theQuestionValue = theQuestion.options[theQuestion.selectedIndex].value;
    if(theQuestion.selectedIndex > 0){
        var UR2T_OR = getId('UR2T-overlay-response');
        UR2T_OR.value = UR2T.answers.UR[theCatValue].objects[theQuestionValue].answer;
    }
	else getId('UR2T-overlay-response').value = "";

}

function UR2T_EditResponses(){
	//	Enfin on affiche
	getId('UR2T-overlay').style.display = 'block';
}

function UR2T_SaveResponses(){
	var theCat = getId('UR2T-overlay-cat');
	var theCatValue = theCat.options[theCat.selectedIndex].value;
	var theQuestion = getId('UR2T-overlay-question');
	var theQuestionValue = theQuestion.options[theQuestion.selectedIndex].value;
	if(theCat.selectedIndex > 0 && theQuestion.selectedIndex > 0){
		var theResponse = getId('UR2T-overlay-response').value;
		UR2T.answers.UR[theCatValue].objects[theQuestionValue].answer = theResponse;
		// console.dir(UR2T.answers.UR[theCatValue].objects[theQuestionValue]);
		UpdateLS();
		UR2T_SaveUserResponses();
		getId('UR2T-overlay-btn-cancel').innerHTML = 'Fermer';
	}
}

function UR2T_CancelResponses(){
	var UR2T_overlay = getId('UR2T-overlay');
	if(UR2T_overlay.style.display == 'block'){
		getId('UR2T-overlay-cat').selectedIndex = 0;
		getId('UR2T-overlay-question').selectedIndex = 0;
		getId('UR2T-overlay-question').innerHTML = '<option>Choisissez une question</option>';
		getId('UR2T-overlay-response').value = "";
		UR2T_overlay.style.display = 'none';
	}
}

function AutoComment(){
	var myTextArea = document.getElementsByClassName('form-control new-comment-text')[0];
	var UR2T_msgs = getId('UR2T_msgs');
	if(UR2T_msgs.selectedIndex > 0){
		var indexes = getSelectedValue('UR2T_msgs').split('-');
		var le_texte = UR2T.answers.UR[indexes[0]].objects[indexes[1]].answer;
		// UR2T_addLog(1, 'info', 'indexof UR2T_ : ' + le_texte);
		if(le_texte.indexOf('UR2T_') == 0){
			switch(le_texte){
				case'UR2T_EditResponses':
					UR2T_EditResponses();
					break;
			}
		}
		else myTextArea.value = bonJourSoir(le_texte);
		UR2T_msgs.selectedIndex = 0;
		// if(typeof(UR2T.answers.UR[indexes[0]].objects[indexes[1]].special) !== 'undefined'){
			// getId('state--1').checked = false;
			// getId('state-0').checked = true;
		// }
	}
}

function populateAnswers(theSelect){
	//	Selected UR type
	var attr = UR2T_currentRequest.attributes;
	if(attr.type > 5 && attr.type < 8 || attr.type> 8 && attr.type < 17 || attr.type == 18){
		var cat_name = UR2T.answers.UR[attr.type].name;
		var dummygroup = document.createElement('optgroup');
		dummygroup.label = UR2T.answers.UR[attr.type].name;
		dummygroup.style.backgroundColor = '#FFCC00';
		theSelect.add(dummygroup);
		var answers = UR2T.answers.UR[attr.type].objects;
		for(var answer in answers){
            if(isNaN(answer))continue;
			var dummy = document.createElement('option');
			dummy.value = attr.type + '-' + answer;
			dummy.text = '- ' + UR2T.answers.UR[attr.type].objects[answer].question.slice(0, 45);
			theSelect.add(dummy);
		}
	}
	else{	//	author alert
		var dummy = document.createElement('optgroup');
		dummy.label = 'Please alert author: Myriades';
		dummy.style.backgroundColor = 'red';
		theSelect.add(dummy);
		dummy = document.createElement('optgroup');
		dummy.label = 'Unknow request type : ' + attr.type;
		dummy.style.backgroundColor = 'red';
		theSelect.add(dummy);
	}
	//	Divers
	dummygroup = document.createElement('optgroup');
	dummygroup.label = UR2T.answers.UR['divers'].name;
	dummygroup.style.backgroundColor = '#44B9EC';
	theSelect.add(dummygroup);
	var answers = UR2T.answers.UR['divers'].objects;
	for(var answer in answers){
        if(isNaN(answer))continue;
		dummy = document.createElement('option');
		dummy.value = 'divers-' + answer;
		dummy.text = '- ' + UR2T.answers.UR['divers'].objects[answer].question;
		theSelect.add(dummy);
	}
	//	Outils
	dummygroup = document.createElement('optgroup');
	dummygroup.label = UR2T.answers.UR['outils'].name;
	dummygroup.style.backgroundColor = '#33CC33';
	theSelect.add(dummygroup);
	var answers = UR2T.answers.UR['outils'].objects;
	for(var answer in answers){
        if(isNaN(answer))continue;
		dummy = document.createElement('option');
		dummy.value = 'outils-' + answer;
		dummy.text = '- ' + UR2T.answers.UR['outils'].objects[answer].question;
		theSelect.add(dummy);
	}
}

function bonJourSoir(leTexte){
	var recherche = new RegExp('^(bon(jou|soi)r)', 'i');
	if(leTexte.match(recherche) === null){
		return leTexte;
	}
	//	Vérification de l'heure du jour
	var UR2T_date = new Date();
	var heure = UR2T_date.getHours();
	var UR2T_replace = 'Bonjour';
	if(heure > 17 || heure < 4)UR2T_replace = 'Bonsoir';
	return leTexte.replace(recherche, UR2T_replace);
}

function UR2T_GetUserResponses(){
	var UR2T_import = {};
	UR2T_import.script = "UR2T";
	UR2T_import.user = {};
	UR2T_import.user.id = UR2T_Waze_user.id;
	UR2T_import.user.rank = UR2T_Waze_user.rank;
	UR2T_import.user.userName = UR2T_Waze_user.userName;
	var UR2T_import_JSON = JSON.stringify(UR2T_import);
	var ret = GM_xmlhttpRequest({
		method: "POST",
		// url: "http://wmebookmarks.free.fr/manageDatas.php",
		url: "http://waze.gensig.info/WME/WME%20UR2T/manageDatas.php",
		data: 'JSONdatas=' + UR2T_import_JSON,
		headers: {
						"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" 
					},
		onload: function(r){UR2T_convertResponses(r.responseText)},
		onerror: function(r){console.log("WME UR2T: Error: " + r.responseText);}
	});
}

function UR2T_convertResponses(jsonText){
	// console.info(jsonText);
	var resultat = JSON.parse(jsonText);
	// console.dir(resultat);
	for(var index in resultat){
		var res = resultat[index];
		// console.dir(res);
		UR2T.answers.UR[res[0]].objects[res[1]].answer = res[2];
	}
	UpdateLS();
}

function UR2T_SaveUserResponses(){
	var UR2T_export = {};
	UR2T_export.script = "UR2T";
	UR2T_export.user = {};
	UR2T_export.user.id = UR2T_Waze_user.id;
	UR2T_export.user.rank = UR2T_Waze_user.rank;
	UR2T_export.user.userName = UR2T_Waze_user.userName;
	UR2T_export.datas = {};
	//	Sauvegarde complète
	// UR2T_export.datas = UR2T.answers.UR;
	//	Sauvegarde partielle
	if(getId('UR2T-overlay-cat').selectedIndex == 0)return;
	UR2T_export.datas[getSelectedValue('UR2T-overlay-cat')] = {'name': getSelectedText('UR2T-overlay-cat'), 'objects': {}};
	if(getId('UR2T-overlay-question').selectedIndex == 0 || getId('UR2T-overlay-response').length == 0)return;
	UR2T_export.datas[getSelectedValue('UR2T-overlay-cat')].objects[getSelectedValue('UR2T-overlay-question')] = {'question': getSelectedText('UR2T-overlay-question'), 'answer': getId('UR2T-overlay-response').value};
	var UR2T_export_JSON = JSON.stringify(UR2T_export);
	var ret = GM_xmlhttpRequest({
		method: "POST",
		// url: "http://wmebookmarks.free.fr/manageDatas.php",
		url: "http://waze.gensig.info/WME/WME%20UR2T/manageDatas.php",
		data: 'JSONdatas=' + UR2T_export_JSON,
		headers: {
						"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" 
					},
		onload: function(r){console.log("WME UR2T: Saving: " + r.responseText);},
		onerror: function(r){console.log("WME UR2T: Error: " + r.responseText);}
	});
}

UR2T_bootstrap();

/*	
	Version : 0.5
	- Improvement : ability to edit defined answers
	- Improvement : edited answers saved on external server. If you logon at an another comp, everything will be restaured
	- Fix : bug on chrome that shown undefined elements
	
	Version : 0.4
	- Add : New UR that can be posted from livemap
	- Add : Special UR feature (must be improved)
	
	Version : 0.3
	- Add : new ur response type : POI request
	- BugFix : UR change without clicking the close button
	
	Version : 0.2
	- Improvement: "bonjour" auto change according to localtime and hour of the day : bonjour < 18h <= bonsoir <= 3h < bonjour
	- Update : "Zone de danger" deviens "Zone de contrôle"
	
	Version : 0.1
	- First release
*/