// ==UserScript== // @name mobile.de, autoscout24 Entfernungsrechner // @description Berechnet Entfernung von Ihrem Wohnort bis zum angebotenen Fahrzeug. Funktioniert sowohl auf der Suchergebnis-Seite als auch auf der mit Details. // @namespace softwarecanoe.de // @include http://suchen.mobile.de/* // @include http://*.autoscout24.* // @version 1.2 // @copyright Eugen Kremer // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== (function(){ function debug(msg){ console.log(msg); } function SetStart(){ if (typeof(GM_getValue)=="undefined") return; var start = GM_getValue("addr"); start = prompt("Geben Sie die Startadresse ein", start); GM_setValue("addr", start); } function GetStart(){ var start = null; if (typeof(GM_getValue)!="undefined") start = GM_getValue("addr"); return start; } GM_registerMenuCommand("Mobile.de Settings", SetStart); function OnLoadResponse(responseDetails) { if (responseDetails.readyState !=4) return; var json = eval("("+responseDetails.responseText+")"); var distanz = json.routes[0].legs[0].distance; var dauer = json.routes[0].legs[0].duration; this.divEl.innerHTML = dauer.text+" - "+distanz.text; } function SendRequest(start, ziel, resultEl){ GM_xmlhttpRequest({ method: 'GET', url: 'http://maps.google.de/maps/api/directions/json?language=de&mode=driving&origin='+start+'&destination='+ziel+'&sensor=false', ziel:ziel, divEl: resultEl, headers: { 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey', }, onload: OnLoadResponse }); } function CreateAnchor(parent, start, ziel){ var aEl = document.createElement('a'); aEl.style.display = "block"; parent.appendChild(aEl); if (start){ aEl.href = "http://maps.google.de/maps?f=d&source=s_d&saddr="+start+"&daddr="+ziel+"&hl=de&ie=UTF8"; aEl.target = "_blank"; SendRequest(start, ziel, aEl); } else { aEl.href = "javascript: void(null);"; aEl.addEventListener("click", function(){ SetStart(); document.location.href = document.location.href;}, false); aEl.innerHTML = "Startpunkt setzen!"; } } function AddDistanceAndDuration(){// autoscout searchresult var p = document.querySelectorAll(".listItem .truncc span:nth-child(1)"); if (!p || p.length==0) return; var handler = p[0]; var ziel = handler.textContent; var start = GetStart(); CreateAnchor(handler, start, ziel); } function AddDistanceAndDuration5(){// autoscout details var p = document.querySelectorAll(".contact-container div:nth-child(2)"); if (!p || p.length==0) return; var handler = p[0]; var ziel = handler.textContent; var start = GetStart(); CreateAnchor(handler, start, ziel); } function AddDistanceAndDuration4(){ // mobile.de details page var p = document.querySelectorAll("#vcardAddress"); if (!p || p.length==0) return; var handler = p[0]; var ziel = handler.textContent; var start = GetStart(); CreateAnchor(handler, start, ziel); } function AddDistanceAndDuration2(){ // mobile.de search results var list = document.querySelectorAll(".descriptions .vehicleLocation"); if (!list || list.length == 0) return; var start = GetStart(); for(var i=0, c=list.length; i