BP_Trassendetails.user.js (3,47 KB)
// ==UserScript==
// @name Bahnplan Titel Trassendetails
// @namespace BP_Trassendetails
// @include http://www.bahnplan.de/cms/bp_fv_trassen_details.php*
// @version 1
// ==/UserScript==
/*document.title=
(
document.getElementsByClassName("column1-unit")[0].getElementsByTagName("h2")[0].firstChild.textContent
+ " "
+ (document.getElementsByClassName("column1-unit")[0].getElementsByTagName("h2")[0].textContent).match(".+Trasse ([0-9]*)")[1]
);
*/
periods = ({id: new Array(), text: new Array(), operator: new Array()});
function setId(num, id){
periods.id[num] = id;
}
function setText(num, text){
periods.text[num] = text;
}
function fetchPeriods(){
var req = GM_xmlhttpRequest({
method: "GET",
synchronous: true,
url: "bp_fv_trassen_inhaber.php",
headers: {
"User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used.
"Accept": "text/xml" // If not specified, browser defaults will be used.
},
});
var responseXML = null;
responseXML = new DOMParser().parseFromString(req.responseText, "text/html");
var options = responseXML.getElementsByTagName("option");
var i;
for (i=0; i<options.length; i++){
setId(i, options[i].value);
setText(i, options[i].innerHTML);
}
}
function getOperator(trasse) {
var i;
for (i=0; i<periods.id.length; i++) {
var req = new XMLHttpRequest();
req.open('POST', 'bp_fv_trassen_inhaber.php', false);
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.send('fpl='+periods.id[i]);
var responseXML = null;
responseXML = new DOMParser().parseFromString(req.responseText, "text/html");
var trs = responseXML.getElementsByTagName("tr");
var j;
for (j=1;j<trs.length;j++) {
if (trs[j].getElementsByTagName("td")[0].innerHTML.indexOf("-Trassen") < 0) {
if (trs[j].getElementsByTagName("td")[0].getElementsByTagName("font")[1].innerHTML.substr(1) == trasse) {
periods.operator[i] = trs[j].getElementsByTagName("td")[1].getElementsByTagName("b")[0].innerHTML;
break;
}
}
}
}
}
//Create structure for injecting
var newListHeader = document.createElement("li");
newListHeader.innerHTML = "Betreiberdaten:";
var newList = document.createElement("ul");
var newElement0 = document.createElement("li");
newElement0.innerHTML = "Lade....";
newList.appendChild(newElement0);
var newElement1 = document.createElement("li");
newList.appendChild(newElement1);
newElement1.innerHTML = "Lade....";
document.getElementsByClassName("column1-unit")[0].getElementsByTagName("ul")[0].insertBefore(newListHeader, document.getElementsByClassName("column1-unit")[0].getElementsByTagName("ul")[0].getElementsByTagName("li")[5]);
document.getElementsByClassName("column1-unit")[0].getElementsByTagName("ul")[0].insertBefore(newList, document.getElementsByClassName("column1-unit")[0].getElementsByTagName("ul")[0].getElementsByTagName("li")[6]);
fetchPeriods();
getOperator((document.getElementsByClassName("column1-unit")[0].getElementsByTagName("h2")[0].textContent).match(".+Trasse ([0-9]*)")[1]);
var i;
for (i=0; i<periods.id.length; i++) {
if (i == 0) {
newElement0.innerHTML = periods.text[i] + ": " + periods.operator[i];
}
else if (i == 1) {
newElement1.innerHTML = periods.text[i] + ": " + periods.operator[i];
}
else {
var newElement = document.createElement("li");
newElement.innerHTML = periods.text[i] + ": " + periods.operator[i];
newList.appendChild(newElement);
}
}