// ==UserScript==
// @name Feuerwache.net AAO DarkPrince (Komplett-Script)
// @namespace http://userscripts.org/users/119663
// @description Komplettscript fuer Alarmierung (AAO) und verwaltung fuer das Spiel Feuerwache.net
// @include http://www.feuerwache.net/*
// @author DarkPrince
// @version 03.02.2011 - 20.00 Uhr - Ausbildung angepasst, AAO kleinere Anpassung.
// ==/UserScript==
// Anzahl der Spalten in der Verfügbar-Anzeige.
var MAXSPALTENVERFUEGBAR=99;
// ******************************************************************************************
// UPDATES
// ******************************************************************************************
// Die Variablen UPDATEURL und INSTALLURL müssen angepasst werden,
// wenn Du das Script veränderst und selber eine Version zum Download anbietest !!!
// soll täglich nach einem Update des AAO-Scriptes gesucht werden?
var CHECKFORUPDATES=true;
// unter welchem URL finde ich Infos über das Script? (<= Bitte eigene URL eintragen)
var UPDATEURL="http://userscripts.org/scripts/show/63003";
// unter welchem URL finde ich das Script als Installation? (<= Bitte eigene URL eintragen)
var INSTALLURL="http://userscripts.org/scripts/source/63003.user.js";
// ***************************************************************************************
// AB HIER KOPIEREN und in die neue Scriptversion einfügen.
// ***************************************************************************************
// ***************************************************************************************
// Einsatzklassen, Bei einem neuen Einsatz entsprechend unten stehendem Schema einfügen.
// ***************************************************************************************
var Einsatzklassen = {
// hier die Einsatzstichworte einer Einsatzklasse und zusätzlichen Fahrzeugen zuordnen
// Es werden später alle Fahrzeuge vorgeschlagen, die der Einsatzklasse angehören
// (z.B. 3xLF bei "Feuer3") sowie alle hier zusätzlich genannten Fahrzeuge
//
// Syntax in der Alarmierungsliste:
// Einsatzklasse zuerst, dann ggf. ein Plus (+) und weiter Fahrzeugklassen,
// diese durch Komma (,) voneinander getrennt. Alternativen durch Schrägstrich (/) getrennt.
// Optionale Fahrzeuge (werden nur in der Liste hervorgehoben) mit Pipe (|) anfügen.
//
// zum Beispiel 'F1+RW/TS,ELW|GW-M,DL' ->
// alarmiere alles nach F1, zusätzlich einen RW oder LF16-TS, sowie einen ELW.
// markiere zusätzlich den nächsten GW-M sowie die nächste DL
'Auffahrunfall' : 'TH 3 - Umwelt - Öl',
'Baum auf Auto' : 'TH 3 - Umwelt - Rüst',
'Baum auf Dach' : 'TH 1 - Leiter',
'Baum auf Straße' : 'TH 1 - Klein',
'Brand auf Weihnachtsmarkt' : 'Feuer 2 - Mittel',
'Brand im Baumarkt' : 'Feuer 3 - Großalarm - Gefahrgut+GW-A',
'Brand im Casino' : 'Feuer 4 - Großalarm+DLK',
'Brand in Gemeindehaus' : 'Feuer 1 - Klein/LF',
'Brand in Industriepark' : 'Feuer 6 - GSL-VERBAND',
'Brand in Kühlhaus' : 'Feuer 3 - Großalarm - Leiter+GW-G,GW-M,GW-W',
'Brand in Reifenlager' : 'Feuer 2 - Mittel - Gefahrgut+GW-A,GW-W',
'Brand im Sägewerk' : 'Feuer 3 - Großalarm - Wasser',
'Brand im Supermarkt' : 'Feuer 3 - Großalarm - Leiter+KW',
'Brand in Autohaus' : 'Feuer 2 - Mittel - Leiter+ELW,GW-M,GW-A',
'Brand in Briefkasten' : 'Feuer 1 - Klein',
'Brand in Druckerei' : 'Feuer 3 - Großalarm - Leiter+RW',
'Brand in Eishalle' : 'Feuer 2 - Mittel - Leiter+TLF,GW-W,RW',
'Brand in Gärtnerei' : 'Feuer 3 - Großalarm - Leiter+GW-G,GW-M',
'Brand in KFZ-Werkstatt' : 'Feuer 2 - Mittel+KW',
'Brand in Kletterhalle' : 'Feuer 3 - Großalarm - Leiter',
'Brand in Lackfabrik' : 'Feuer 3 - Großalarm - Leiter+GW-G,GW-M',
'Brand in Metzgerei' : 'Feuer 2 - Mittel - Leiter+ELW,GW-W',
'Brand in Schloss' : 'Feuer 3 - Großalarm - Leiter',
'Brand in Schule' : 'Feuer 3 - Großalarm - Wasser',
'Brand in Spedition' : 'Feuer 3 - Großalarm - Leiter+TLF,GW-G,GW-M,GW-W',
'Brand in Sporthalle' : 'Feuer 3 - Großalarm - Wasser',
'Brand in Steinbruch' : 'Feuer 6 - GSL-VERBAND',
'Brand in Zugdepot' : 'Feuer 3 - Großalarm - Leiter+RW,GW-S',
'Brand-Weihnachtsbaum in Kirche' : 'Feuer 2 - Mittel',
'Brennende Bäume' : 'Feuer 1 - Klein',
'Brennende S-Bahn' : 'Feuer 2 - Mittel - Schiene',
'Brennende Telefonzelle' : 'Feuer 1 - Klein',
'Brennender LKW' : 'Feuer 1 - Klein',
'Brennender Müllwagen' : 'Feuer 1 - Klein',
'Brennender PKW' : 'Feuer 1 - Klein',
'Brennender Sicherungskasten' : 'Feuer 1 - Klein',
'Brennendes Gebüsch' : 'Feuer 1 - Klein',
'Brennendes Gras' : 'Feuer 1 - Klein',
'Brennendes Flugzeug' : 'Feuer 5 - Flughafen',
'Chemieunfall (an Schule)' : 'Feuer 3 - Großalarm - Gefahrgut',
'Chlorgas Alarm (Schwimmbad)' : 'Feuer 3 - Großalarm - Gefahrgut',
'Container Brand' : 'Feuer 1 - Klein',
'Dachstuhlbrand' : 'Feuer 2 - Mittel - Leiter',
'Fahrstuhl - Türöffnung' : 'TH 1 - Rüst',
'Feldbrand' : 'Feuer 1 - Klein|FLF',
'Fettbrand in Pommesbude' : 'Feuer 2 - Mittel - Tank',
'Feuer auf Boot (Klein)' : 'H1 - Hafen klein|FLB',
'Feuer auf Boot (Mittel)' : 'H2 - Hafen mittel|FLB',
'Feuer im Altenheim' : 'Feuer 3 - Großalarm - Leiter',
'Feuer im Krankenhaus' : 'Feuer 4 - Großalarm - komplett',
'Feuer im Laubhaufen' : 'Feuer 1 - Klein',
'Gabelstapler im Hafenbecken' : 'TH 2 - Wasser - Bergung',
'Garagenbrand' : 'Feuer 2 - Mittel',
'Gartenlaubenbrand' : 'Feuer 1 - Klein',
'Gastronomiebrand' : 'Feuer 3 - Großalarm',
'Gewerbebrand' : 'Feuer 3 - Großalarm - Leiter',
'Grasnarbenbrand' : 'Feuer 5 - Flughafen - Feuer klein',
'Kaminbrand' : 'Feuer 1 - Klein - Leiter',
'Kellerbrand' : 'Feuer 2 - Mittel',
'Keller unter Wasser' : 'TH 2 - Wasser - Pumpe',
'Kinobrand' : 'Feuer 3 - Großalarm - Leiter',
'Kioskbrand' : 'Feuer 1 - Klein',
'Kleiner Waldbrand' : 'Feuer 1 - Klein',
'Mähdrescherbrand' : 'Feuer 1 - Klein - Tank',
'Maschinenbrand' : 'Feuer 3 - Großalarm',
'Motorrad-Brand' : 'Feuer 1 - Klein',
'Mülleimer Brand' : 'Feuer 1 - Klein|FLF',
'Ölspur' : 'TH 3 - Umwelt - Öl',
'Person im Fluss' : 'TH 2 - Wasser - Rettung',
'PKW-Brand' : 'Feuer 1 - Klein',
'PKW in Fluss' : 'TH 2 - Wasser - Bergung',
'Schuppenbrand' : 'Feuer 2 - Mittel - Gefahrgut',
'Scheunenbrand' : 'Feuer 2 - Mittel - Wasser',
'Schornsteinbrand' : 'Feuer 2 - Mittel - Leiter',
'Silobrand' : 'Feuer 2 - Mittel',
'Sperrmüllbrand' : 'Feuer 1 - Klein',
'Strohballen Brand' : 'Feuer 1 - Klein',
'Traktorbrand' : 'Feuer 1 - Klein',
'Trocknerbrand' : 'Feuer 1 - Klein',
'Verkehrsunfall' : 'TH 3 - Umwelt - Öl',
'Verletztentransport' : 'RD 1 - Transport',
'Wohnblockbrand' : 'Feuer 3 - Großalarm',
'Wohnungsbrand' : 'Feuer 2 - Mittel',
'Wohnwagenbrand' : 'Feuer 1 - Klein',
};
// ***************************************************************************************
// AAO/Einsatzklassen, Bei einem neuen Einsatz entsprechend unten stehendem Schema einfügen.
// ***************************************************************************************
var Einsatzklasse_Fahrzeugzuordnung = {
// hier wird definiert, welche Fahrzeuge standardmäßig zu den verschiedenen Einsatzklassen
// geschickt werden. Einzelne Fahrzeuge werden durch Komma (,) getrennt. Alternativen durch (/).
// !!!ACHTUNG: HIER KEINE OPTIONALEN FAHRZEUGE (|) EINTRAGEN!!!
'undef' : 'LF',
'Feuer 1 - Klein' : 'LF',
'Feuer 1 - Klein - Tank' : 'LF,TLF',
'Feuer 1 - Klein - Leiter' : 'LF,DLK',
'Feuer 1 - Klein - FLF' : 'FLF/LF',
'Feuer 2 - Mittel' : 'LF,LF',
'Feuer 2 - Mittel - Tank' : 'LF,LF,TLF',
'Feuer 2 - Mittel - Leiter' : 'LF,LF,DLK',
'Feuer 2 - Mittel - Gefahrgut' : 'LF,LF,ELW,GW-M,GW-G',
'Feuer 2 - Mittel - Wasser' : 'LF,LF,GW-W',
'Feuer 2 - Mittel - Schiene' : 'LF,LF,GW-S',
'Feuer 3 - Großalarm' : 'LF,LF,LF,ELW',
'Feuer 3 - Großalarm - Tank' : 'LF,LF,LF,ELW,TLF',
'Feuer 3 - Großalarm - Leiter' : 'LF,LF,LF,ELW,DLK',
'Feuer 3 - Großalarm - Gefahrgut' : 'LF,LF,LF,ELW,RW,GW-M,GW-G',
'Feuer 3 - Großalarm - Wasser' : 'LF,LF,LF,ELW,GW-W',
'Feuer 4 - Großalarm' : 'LF,LF,LF,LF,LF,LF,ELW,TLF',
'Feuer 4 - Großalarm - komplett' : 'LF,LF,LF,LF,LF,LF,ELW,DLK,GW-G,GW-M,GW-W,RW',
'Feuer 5 - Flughafen' : 'FLF,FLF,FLF,FLF,FLF,RTF,ELW,GW-M,GW-G,RW,GW-Öl',
'Feuer 5 - Flughafen - Feuer klein' : 'FLF',
'Feuer 6 - GSL-VERBAND' : 'ELW,DLK,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,GW-G,GW-M,GW-W,RW,GW-Öl,TLF,TLF,TLF,TLF,TLF',
'TH 1 - Klein' : 'LF',
'TH 1 - Rüst' : 'LF,RW',
'TH 1 - Leiter' : 'LF,RW,DLK',
'TH 2 - Wasser - Rettung' : 'LF,GW-T',
'TH 2 - Wasser - Pumpe' : 'LF,TLF',
'TH 2 - Wasser - Bergung' : 'LF,LF,GW-T,RW,KW',
'TH 3 - Umwelt - Öl' : 'LF,GW-Öl',
'TH 3 - Umwelt - Rüst' : 'LF,RW,GW-Öl',
'TH 4 - Kran' : 'LF,KW',
'H1 - Hafen klein' : 'FLB',
'H2 - Hafen mittel' : 'FLB,FLB',
'RD 1 - Transport' : 'RTW schon in Alarmliste',
};
// GW-A bei 3-Atem, 4-Groß und 3-Erweitert raus
// ***************************************************************************************
// Fahrzeugklassen, Bei einem neuen Fahrzeug entsprechend unten stehendem Schema einfügen.
// ***************************************************************************************
var Fahrzeugklassen = {
// hier die verfügbaren Fahrzeugen mit ihrer Beschreibung und der Zuordnung zu einer Fahrzeugklasse
// auflisten. In der gleichen Reihenfolge, wie hier die Fahrzeugklassen aufgeführt sind,
// werden sie auch in der Verfügbarkeits-Anzeige der Einsatzinfobox angezeigt.
'LF 16-TS' : 'LF' ,
'LF 10/6' : 'LF' ,
'LF 20/16' : 'LF' ,
'LF 8' : 'LF' ,
'Kleinlöschfahrzeug' : 'LF' ,
'TLF 20/40 - SL' : 'TLF' ,
'ELW 1' : 'ELW' ,
'DLA (K) 23/12' : 'DLK' ,
'RW' : 'RW' ,
'GW-A' : 'GW-A' ,
'GW-Gefahrgut' : 'GW-G' ,
'GW-Messtechnik' : 'GW-M' ,
'GW-Öl' : 'GW-Öl' ,
'GW-Schiene' : 'GW-S' ,
'GW-Taucher' : 'GW-T' ,
'GW-L2 - Wasser' : 'GW-W' ,
'RTW' : 'RTW' ,
'Kran' : 'KW' ,
'Flugfeldlöschfahrzeug' : 'FLF' ,
'Rettungstreppe' : 'RTF' ,
'Feuerlöschboot' : 'FLB' ,
'Rettungsboot' : 'RTB' ,
};
// ***************************************************************************************
// Nachforderungen, bei neuer Nachforderung, nach unten stehenden Schema einfach einfügen.
// ***************************************************************************************
var Nachforderungen = {
// Nachforderungen ELW
"Die Einsatzstelle wird unübersichtlich. Wir benötigen einen ELW 1." : "ELW",
"Die Lage wird zu unübersichtlich! Wir brauchen einen ELW 1." : "ELW",
"Die Lage ist zu unübersichtlich! Wir benötigen einen ELW 1." : "ELW",
"Hier wird es zu unübersichtlich! Wir benötigen einen ELW 1" : "ELW",
"Vorort herrscht Chaos! Wir benötigen einen ELW 1." : "ELW",
"Zur besseren Koordination benötigen wir einen ELW 1." : "ELW",
"Aufgrund der Ausbreitung wird ein ELW 1 benötigt." : "ELW",
"Die Lage ist unübersichtlich! Wir brauchen einen ELW 1." : "ELW",
"Wir benötigen einen ELW 1." : "ELW",
// Nachforderungen TLF
"Die Wasserversorgung ist unzureichend! Ein TLF 20/40 - SL wird benötigt." : "TLF",
"Wir benötigen mehr Schaummittel. Es wird ein TLF 20/40 - SL benötigt." : "TLF",
"Ein TLF 20/40 - SL wird benötigt, da größere Mengen Schaummittel und der Wasserwerfer eingesetzt werden sollen." : "TLF",
"Wir brauchen mehr Wasser und fordern somit ein TLF 20/40 - SL an." : "TLF",
"Ein TLF 20/40 - SL wird benötigt, da der Wasserwerfer eingesetzt werden sollen." : "TLF",
// Nachforderungen RW
"Wir benötigen Material vom Rüstwagen (RW)!" : "RW",
"Für erweiterte Technische Hilfe wird ein RW (Rüstwagen) benötigt." : "RW",
"Um das Auto zu befreien, benötigen wir einen RW!" : "RW",
"Um das Haus vom Baum zu befreien, benötigen wir einen Rüstwagen (RW)" : "RW",
"Wir benötigen Material vom RW." : "RW",
"Wir brauchen Material aus dem RW." : "RW",
"Wir benötigen einen RW." : "RW",
"Wir benötigen Material vom Rüstwagen (RW)!" : "RW",
// Nachforderungen DLK
"Wir benötigen für weitere Löscharbeiten dringend eine Drehleiter (DLA (K) 23/12)." : "DLK",
"Um das Feuer besser erreichen zu können, brauchen wir eine Drehleiter (DLA (K) 23/12)." : "DLK",
"Um die oberen Stockwerke zu erreichen, brauchen wir eine Drehleiter (DLA (K) 23/12)." : "DLK",
"Um die Löscharbeiten weiter ausführen zu können, wird eine Drehleiter (DLA (K) 23 / 12) benötigt." : "DLK",
"Für Dachlöscharbeiten wird eine DLA (K) 23/12 benötigt." : "DLK",
"Wir erreichen den Baum nicht richtig! Wir benötigen eine DLA (K) 23/12." : "DLK",
"Um am Kamin arbeiten zu können, benötigen wir eine Drehleiter (DLA (K) 23/12)." : "DLK",
"Um die oberen Stockwerke zu erreichen, wird eine Drehleiter (DLA (K) 23/12) benötigt." : "DLK",
"Zum erreichen des Daches wird eine DLA (K) 23/12 benötigt." : "DLK",
"Um die Löscharbeiten weiter ausführen zu können, wird eine Drehleiter (DLA (K) 23 / 12) benötigt" : "DLK",
// Nachforderungen GW-Atemschutz
"Uns gehen die Atemschutzgeräte aus! Wir benötigen einen GW-A." : "GW-A",
"Wir benötigen weitere Atemschutzgeräte vom GW-A." : "GW-A",
// Nachforderungen GW-Gefahrgut
"Unbekannte Stoffe sind ausgetreten. Wir benötigen einen GW-Gefahrgut." : "GW-G",
"Unbekannte Fässer wurden gefunden! Wir benötigen einen GW-Gefahrgut." : "GW-G",
"Zur Gefahrenabwehr benötigen wir einen GW-Gefahrgut." : "GW-G",
"Wir benötigen die Ausrüstung vom GW-Gefahrgut." : "GW-G",
"Gefahrstoffe könnten aufgetreten sein! Wir benötigen einen GW-Gefahrgut" : "GW-G",
"Hier wurden Gefäße mit unbekannten Flüssigkeiten gefunden. Wir benötigen zur Abklärung einen GW-Gefahrgut." : "GW-G",
"Es könnte Gefahrgut ausgetreten sein. Wir benötigen einen GW-Gefahrgut." : "GW-G",
"Hier lagern Pestizide. Es wird ein GW-Gefahrgut benötigt." : "GW-G",
// Nachforderungen GW-Meß
"Unbekannte Stoffe sind ausgetreten. Wir benötigen zum Messen einen GW-Messtechnik" : "GW-M",
"Es treten unbekannte Gase aus. Wir brauchen zur Abklärung einen GW-Messtechnik." : "GW-M",
"Es treten unbekannte Gase aus. Wir brauchen zur Abklärung einen GW-Messtechnik" : "GW-M",
"Es treten Gase aus! Zur Überprüfung benötigen wir einen GW-Messtechnik." : "GW-M",
"Es ist unklar ob sich Gefahrgut im Flugzeug befindet! Wir brauchen einen GW-Messtechnik." : "GW-M",
"Hier lagern Pestizide. Es wird ein GW-Messtechnik benötigt." : "GW-M",
// Nachforderungen GW-Öl
"Beim Verkehrsunfall sind große Mengen Öl ausgelaufen! Wir brauchen den GW-Öl!" : "GW-Öl",
"Hier laufen größere Mengen Öl aus! Wir benötigen einen GW-Öl" : "GW-Öl",
"Zum abstreuen benötigen wir den GW-Öl!" : "GW-Öl",
"Um das auslaufende Öl binden zu können, brauchen wir einen GW-Öl." : "GW-Öl",
"Zum aufnehmen von größeren Mengen Öl, benötigen wir den GW-Öl." : "GW-Öl",
// Nachforderungen GW-L2 Wasser
"Hier muss Wasser über weite Wegstrecken transportiert werden. Wir benötigen einen GW-L2 Wasser." : "GW-W",
"Wir müssen Wasser über eine weite Wegstrecke transporierten und benötigen einen GW-L2 Wasser" : "GW-W",
"Um Leitungen über weite Strecken legen zu können, benötigen wir einen GW - L2 - Wasser." : "GW-W",
"Das Feuer ist weiter ausserhalb und alle Wasserreserven sind aufgebraucht. Wir brauchen einen GW-L2 -Wasser um weitere Schläuche verlegen zu können." : "GW-W",
"Wir benötigen einen GW-L2 - Wasser" : "GW-W",
// Nachforderungen GW-Schiene
"Um weiter arbeiten zu können, benötigen wir einen GW-Schiene." : "GW-S",
// Nachforderungen GW-Taucher
"Wir benötigen Ausrüstung und Personal vom GW-Taucher" : "GW-T",
// Nachforderungen Kranwagen
"Wir benötigen für weitere Arbeiten einen Kran." : "KW",
"Um das Fahrzeug zu bergen, benötigen wir einen Kran." : "KW",
// Nachforderungen Flughafenlöschfahrzeug
"Wir benötigen Flugfeldlöschfahrzeuge!" : "FLF",
// Nachforderungen Rettungstreppe
// Fehlerhafte Nachforderungen
"Um das Fahrzeug zur bergen, benötigen wir einen Kran." : "KW",
"Aufgrund der Ausbreitung benötigen wird ein ELW 1 benötigt." : "ELW",
};
// ***************************************************************************************
// BIS HIERHER NUR AAO-SCRIPT (IS NUR FÜR MICH; NICHT BEACHTEN^^)
// ***************************************************************************************
// ***************************************************************************************
// Fahrzeuggeschwindigkeiten, Wenn ein neues Fahrzeug hinzukommt, einfach unten einfügen.
// ***************************************************************************************
var Fahrzeuggeschwindigkeiten = {
'RTW' : 75 ,
'LF 10/6' : 58 ,
'LF 20/16' : 60 ,
'LF 8' : 48 ,
'Kleinlöschfahrzeug' : 60 ,
'TLF 20/40 - SL' : 49 ,
'DLA (K) 23/12' : 63 ,
'ELW 1' : 77 ,
'LF 16-TS' : 52 ,
'RW' : 49 ,
'GW-A' : 56 ,
'GW-L2 - Wasser' : 53 ,
'GW-Öl' : 51 ,
'GW-Schiene' : 57 ,
'GW-Gefahrgut' : 46 ,
'GW-Messtechnik' : 40 ,
'GW-Taucher' : 62 ,
'Kran' : 55 ,
'Flughafenlöschfahrzeugn' : 110 ,
'Rettungstreppenfahrzeug' : 65 ,
'Feuerlöschboot' : 60 ,
'Rettungsboot' : 60 ,
};
// ***************************************************************************************
// Links zum Wikipedia, Wenn ein neuer Einsatz kommt, einfach nach Schema den Link zufügen.
// ***************************************************************************************
var WikiLinks = {
'Auffahrunfall' : 'http://wiki.feuerwache.net/wiki/Auffahrunfall',
'Baum auf Auto' : 'http://wiki.feuerwache.net/wiki/Baum_auf_Auto',
'Baum auf Dach' : 'http://wiki.feuerwache.net/wiki/Baum_auf_Dach',
'Baum auf Straße' : 'http://wiki.feuerwache.net/wiki/Baum_auf_Stra%C3%9Fe',
'Brand im Baumarkt' : 'http://wiki.feuerwache.net/wiki/Brand_im_Baumarkt',
'Brand im Casino' : 'http://wiki.feuerwache.net/wiki/Brand_im_Casino',
'Brand im Gemeindehaus' : 'http://wiki.feuerwache.net/wiki/Brand im Gemeindehaus',
'Brand im Sägewerk' : 'http://wiki.feuerwache.net/wiki/Brand_im_S%C3%A4gewerk',
'Brand im Supermarkt' : 'http://wiki.feuerwache.net/wiki/Brand_im_Supermarkt',
'Brand in Autohaus' : 'http://wiki.feuerwache.net/wiki/Brand_in_Autohaus',
'Brand in Briefkasten' : 'http://wiki.feuerwache.net/wiki/Brand_in_Briefkasten',
'Brand in Druckerei' : 'http://wiki.feuerwache.net/wiki/Brand_in_Druckerei',
'Brand in KFZ-Werkstatt' : 'http://wiki.feuerwache.net/wiki/Brand_in_KFZ-Werkstatt',
'Brand in Lackfabrik' : 'http://wiki.feuerwache.net/wiki/Brand_in_Lackfabrik',
'Brand in Reifenlager' : 'http://wiki.feuerwache.net/wiki/Brand_in_Reifenlager',
'Brand in Schule' : 'http://wiki.feuerwache.net/wiki/Brand_in_Schule',
'Brand in Spedition' : 'http://wiki.feuerwache.net/wiki/Brand_in_Spedition',
'Brand in Sporthalle' : 'http://wiki.feuerwache.net/wiki/Brand_in_Sporthalle',
'Brand in Steinbruch' : 'http://wiki.feuerwache.net/wiki/Brand_in_Steinbruch',
'Brand in Zugdepot' : 'http://wiki.feuerwache.net/wiki/Brand_im_Zugdepot',
'Brennende Bäume' : 'http://wiki.feuerwache.net/wiki/Brennende_B%C3%A4ume',
'Brennende S-Bahn' : 'http://wiki.feuerwache.net/wiki/Brennende_S-Bahn',
'Brennende Telefonzelle' : 'http://wiki.feuerwache.net/wiki/Brennende_Telefonzelle',
'Brennender LKW' : 'http://wiki.feuerwache.net/wiki/Brennender_LKW',
'Brennender Müllwagen' : 'http://wiki.feuerwache.net/wiki/Brennender_M%C3%BCllwagen',
'Brennender PKW' : 'http://wiki.feuerwache.net/wiki/Brennender_PKW',
'Brennender Sicherungskasten' : 'http://wiki.feuerwache.net/wiki/Brennender_Sicherungskasten',
'Brennendes Gebüsch' : 'http://wiki.feuerwache.net/wiki/Brennendes_Geb%C3%BCsch',
'Brennendes Gras' : 'http://wiki.feuerwache.net/wiki/Brennendes_Gras',
'Brennendes Flugzeug' : 'http://wiki.feuerwache.net/wiki/Brennendes_Flugzeug',
'Chemieunfall (an Schule)' : 'http://wiki.feuerwache.net/wiki/Chemieunfall_%28an_Schule%29',
'Chlorgas Alarm (Schwimmbad)' : 'http://wiki.feuerwache.net/wiki/Chlorgas_Alarm_%28Schwimmbad%29',
'Container Brand' : 'http://wiki.feuerwache.net/wiki/Containerbrand',
'Dachstuhlbrand' : 'http://wiki.feuerwache.net/wiki/Dachstuhlbrand',
'Fahrstuhl - Türöffnung' : 'http://wiki.feuerwache.net/wiki/Fahrstuhl-T%C3%BCr%C3%B6ffnung',
'Feldbrand' : 'http://wiki.feuerwache.net/wiki/Feldbrand',
'Fettbrand in Pommesbude' : 'http://wiki.feuerwache.net/wiki/Fettbrand_in_Pommesbude',
'Feuer auf Boot (Klein)' : 'http://wiki.feuerwache.net/wiki/Feuer auf Boot (Klein)',
'Feuer auf Boot (Mittel)' : 'http://wiki.feuerwache.net/wiki/Feuer auf Boot (Mittel)',
'Feuer im Altenheim' : 'http://wiki.feuerwache.net/wiki/Feuer_im_Altenheim',
'Feuer im Laubhaufen' : 'http://wiki.feuerwache.net/wiki/Feuer_im_Laubhaufen',
'Gabelstapler im Hafenbecken' : 'http://wiki.feuerwache.net/wiki/Gabelstapler_im_Hafenbecken',
'Gartenlaubenbrand' : 'http://wiki.feuerwache.net/wiki/Gartenlaubenbrand',
'Gastronomiebrand' : 'http://wiki.feuerwache.net/wiki/Gastronomiebrand',
'Gewerbebrand' : 'http://wiki.feuerwache.net/wiki/Gewerbebrand',
'Grasnarbenbrand' : 'http://wiki.feuerwache.net/wiki/Grasnarbenbrand',
'Kellerbrand' : 'http://wiki.feuerwache.net/wiki/Kellerbrand',
'Keller unter Wasser' : 'http://wiki.feuerwache.net/wiki/Keller_unter_Wasser',
'Kinobrand' : 'http://wiki.feuerwache.net/wiki/Kinobrand',
'Kleiner Waldbrand' : 'http://wiki.feuerwache.net/wiki/Kleiner_Waldbrand',
'Maschinenbrand' : 'http://wiki.feuerwache.net/wiki/Maschinenbrand',
'Motorrad-Brand' : 'http://wiki.feuerwache.net/wiki/Motorradbrand',
'Mülleimer Brand' : 'http://wiki.feuerwache.net/wiki/M%C3%BClleimerbrand',
'Ölspur' : 'http://wiki.feuerwache.net/wiki/%C3%96lspur',
'Person im Fluss' : 'http://wiki.feuerwache.net/wiki/Person_im_Fluss',
'Scheunenbrand' : 'http://wiki.feuerwache.net/wiki/Scheunenbrand',
'Schornsteinbrand' : 'http://wiki.feuerwache.net/wiki/Schornsteinbrand',
'Schuppenbrand' : 'http://wiki.feuerwache.net/wiki/Schuppenbrand',
'Silobrand' : 'http://wiki.feuerwache.net/wiki/Silobrand',
'Sperrmüllbrand' : 'http://wiki.feuerwache.net/wiki/Sperrm%C3%BCllbrand',
'Strohballen Brand' : 'http://wiki.feuerwache.net/wiki/Strohballen_Brand',
'Traktorbrand' : 'http://wiki.feuerwache.net/wiki/Traktorbrand',
'Trocknerbrand' : 'http://wiki.feuerwache.net/wiki/Trocknerbrand',
'Verkehrsunfall' : 'http://wiki.feuerwache.net/wiki/Verkehrsunfall',
'Verletztentransport' : 'http://wiki.feuerwache.net/wiki/Verletztentransport',
'Wohnblockbrand' : 'http://wiki.feuerwache.net/wiki/Wohnblockbrand',
'Wohnungsbrand' : 'http://wiki.feuerwache.net/wiki/Wohnungsbrand',
'Wohnwagenbrand' : 'http://wiki.feuerwache.net/wiki/Wohnwagenbrand',
'Brand auf Weihnachtsmarkt' : 'http://wiki.feuerwache.net/wiki/Brand_auf_Weihnachtsmarkt',
'Brand-Weihnachtsbaum in Kirche' : 'http://wiki.feuerwache.net/wiki/Brand-Weihnachtsbaum_in_Kirche',
};
// ***************************************************************************************
// BIS HIERHER KOPIEREN und in die neue Scriptversion einfügen.
// ***************************************************************************************
// ***************************************************************************************
// Nach dieser Linie nichts mehr aendern !!! Ab hier ist das Script (Programm)
// ***************************************************************************************
var ToAlarm = new Array;
var Optional = new Array;
var Unterwegs = new Array;
var NichtVerf = new Array;
var ichBins;
var FirstRun=true;
var CBClicked=false;
var debugging;
var machVorschlag=true;
var zweiterAbmarsch=GM_getValue("zweiterAbmarsch",0);
var AlleGleich;
var showInfoKlasseInListe;
var showInfoStichwort,InfotextStichwort;
var showInfoKlasse,InfotextKlasse;
var showInfoKlassenalarm,InfotextKlassenalarm;
var showInfoKlassenalarmOpt,InfotextKlassenalarmOpt;
var showInfoRTW,InfotextRTW;
var showInfoUnterwegs,InfotextUnterwegs;
var showInfoNachforderungen,InfotextNachforderungen;
var showInfoToAlarm,InfotextToAlarm;
var showInfoFahrzeit,InfotextFahrzeit;
var showInfoFahrzeitOpt,InfotextFahrzeitOpt;
var showInfoNichtVerfuegbar,InfotextNichtVerfuegbar;
var showInfoVerfuegbar,InfotextVerfuegbar;
var ScriptUpdateAvailable="";
var adr = document.location.href;
init();
main();
function main()
{
mylog("main\nadr=" + adr);
ichBins = true;
if (adr == "http://www.feuerwache.net/feuerwehr-einsaetze")
{ bearbeiteÜbersichtsseite(); }
else if (adr == "http://www.feuerwache.net/feuerwehrleitstelle")
{ bearbeiteLeitstelle(); }
else if (adr == "http://www.feuerwache.net/feuerwehrfahrzeuge")
{ bearbeiteFahrzeugliste(); }
else if (adr == "http://www.feuerwache.net/feuerwachen")
{ bearbeiteFeuerwachenliste(); }
else if (adr == "http://www.feuerwache.net/personal/list")
{ bearbeitePersonaltabellen(); }
else if (adr.match("http://www.feuerwache.net/feuerwachen/.*/feuerwehrleute"))
{ bearbeitePersonaltabellen(); }
else if (adr.match("http://www.feuerwache.net/feuerwachen/.*/feuerwehrautos"))
{ bearbeiteWacheFahrzeugliste(); }
else if (adr.match("http://www.feuerwache.net/vehicle/show/caption_url/*"))
{ bearbeiteFahrzeugkauf(); }
else if (adr.match("http://www.feuerwache.net/feuerwehrfahrzeuge/[0-9]*/verschieben"))
{ bearbeiteFahrzeugkauf(); }
else if (adr.match("http://www.feuerwache.net/building_to_user/show/id/*"))
{ bearbeiteLehrgangszuteilung(); }
else if (adr.match("http://www.feuerwache.net/feuerwehr-einsaetze/[0-9]*"))
{ bearbeiteEinsatzseite(); }
else if (adr.match("http://www.feuerwache.net/feuerwehrfahrzeuge/[0-9]*/bearbeiten"))
{ bearbeiteFahrzeugseite(); }
ichBins = false;
}
function bearbeiteFahrzeugseite()
{ // Fahrzeug bearbeiten
var H = "<script type='text/javascript'>\n";
H += "function ToggleStatus6()\n";
H += "{\n";
H += " var I=document.getElementById('caption');\n";
H += " var FN=I.value;\n";
H += " if (FN.substr(0,4).toUpperCase()=='XXX ')\n";
H += " { I.value = FN.substr(4,FN.length-4); }\n";
H += " else { I.value = 'XXX ' + FN; }\n";
H += "}\n";
H += "</script>\n\n";
H += "<a href='javascript:ToggleStatus6();';>Fahrzeug in/außer Dienst stellen</a>\n";
var INP = document.getElementById("caption");
var td = document.createElement("td");
td.innerHTML = H;
INP.parentNode.parentNode.insertBefore(td,INP.parentNode.nextSibling);
}
function bearbeiteFahrzeugkauf()
{ var FRM = document.getElementsByTagName("form")[0];
if (!FRM) return;
var TB = FRM.getElementsByTagName("table")[0];
if (!TB) return;
var TR = TB.getElementsByTagName("tr")[2];
if (!TR) return;
var TD = TR.getElementsByTagName("td")[0];
if (!TD) return;
for each (Par in TD.getElementsByTagName("p"))
{ if (Par.innerHTML.match("Diese Feuerwache kann keine Fahrzeuge mehr aufnehmen"))
{ Par.style.display = "none"; }
if (Par.innerHTML.match("Zuwenig bzw. keine Stellplätze für Rettungswagen"))
{ Par.style.display = "none"; }
}
}
function bearbeiteWacheFahrzeugliste()
{
var DC = document.getElementById("content");
var TBs = DC.getElementsByClassName("defaultTable");
var H2s = DC.getElementsByTagName("h2");
for each (H2 in H2s)
{ var A = H2.getElementsByTagName("a")[0];
if (A)
{
var FWLink = A.href;
H2.innerHTML += " <a href='" + FWLink + "/feuerwehrleute'><font size='-1'>(Personal)</font></a>";
}
}
}
function bearbeiteFeuerwachenliste()
{
var TRs = document.getElementById("content").getElementsByTagName("tbody")[0].getElementsByTagName("tr");
for (i=0;i<TRs.length;i++)
{ var TR=TRs[i];
var TD = TR.getElementsByTagName("td")[1];
var L = TD.getElementsByTagName("a")[0];
// Spalte Fahrzeuge
var TD = TR.getElementsByTagName("td")[3];
var H1 = TD.getElementsByTagName("a")[0].innerHTML;
var H2 = TD.innerHTML.split(" / ")[1];
var H = " " + H1 + " / " + H2 + " " ;
if (parseInt(H1) != parseInt(H2)) H = "<font color='lightgreen'>"+H+"</font>";
H = "<a href='" + L + "/feuerwehrautos'>" + H + "</a>";
TD.innerHTML = H;
// Spalte Rettungswagen
TD = TR.getElementsByTagName("td")[4];
H = TD.innerHTML;
H2 = H.split("/");
if (parseInt(H2[0]) != parseInt(H2[1])) H = "<font color='lightgreen'>"+H+"</font>";
TD.innerHTML = H;
// Spalte Feuerwehrleute
TD = TR.getElementsByTagName("td")[5];
var A = TD.getElementsByTagName("a")[0];
A.innerHTML = " " + A.innerHTML + " ";
// Spalte Stufe
TD = TR.getElementsByTagName("td")[6];
TD.style.textAlign = "left";
H = TD.innerHTML;
if (parseInt(H) < 5) H += " <a href='" + L + "/ausbauen'> + </a>";
TD.innerHTML = H;
}
}
function bearbeiteLeitstelle()
{
var DC = document.getElementById("content");
var TBs = DC.getElementsByClassName("defaultTable");
var H2s = DC.getElementsByTagName("h2");
for each (H2 in H2s)
{ var A = H2.getElementsByTagName("a")[0];
if (A)
{
var FWLink = A.href;
H2.innerHTML += "<br><a href='" + FWLink + "/feuerwehrleute'><font size='-1'>Personal</font></a>";
H2.innerHTML += " / <a href='" + FWLink + "/feuerwehrautos'><font size='-1'>Fahrzeuge</font></a>";
}
}
}
function bearbeitePersonaltabellen()
{
var DC = document.getElementById("content");
var TBs = DC.getElementsByClassName("defaultTable");
var H2s = DC.getElementsByTagName("h2");
for (var i=0; i<TBs.length; i++)
{ var TB=TBs[i];
var T = BearbeitePersonaltabelle(TB);
if (T != "")
{ var FWStat = document.createElement("div")
TB.parentNode.insertBefore(FWStat,TB);
FWStat.innerHTML = T;
}
var H2 = H2s[i];
var A = H2.getElementsByTagName("a")[0];
var FWLink = A.href;
H2.innerHTML += "  <a href='" + FWLink + "/feuerwehrautos'><font size='-1'>(Fahrzeuge)</font></a>";
}
// vor der ersten Überschrift Default-Sortierung anbieten:
if (!document.getElementById("DefaultSort"))
{
var div = document.createElement("div");
div.style.paddingBottom = "10px";
div.innerHTML = "Standard-Sortierung: ";
var H1 = document.getElementsByTagName("h1")[0];
if (!H1) H1 = document.getElementsByTagName("h2")[0];
H1.parentNode.insertBefore(div,H1);
var SEL = document.createElement("select");
SEL.id = "DefaultSort";
SEL.options[SEL.length] = new Option("(unsortiert)","-1");
SEL.options[SEL.length] = new Option("Name");
SEL.options[SEL.length] = new Option("Motivation");
SEL.options[SEL.length] = new Option("Fähigkeiten");
SEL.options[SEL.length] = new Option("Alter");
SEL.options[SEL.length] = new Option("Ausbildung");
SEL.options[SEL.length] = new Option("Status");
SEL.options[SEL.length] = new Option("Schicht");
div.appendChild(SEL);
document.getElementById("DefaultSort").addEventListener( "change" , DefaultSortChanged , true );
}
var SEL = document.getElementById("DefaultSort");
SEL.value = GM_getValue("DefaultTabSort","-1");
}
function DefaultSortChanged()
{ var S = document.getElementById('DefaultSort').value
GM_setValue("DefaultTabSort",S);
}
function bearbeiteLehrgangszuteilung()
{
for each (R in document.getElementsByName("education_type"))
{ R.addEventListener ( "click" , Markiere_Schueler , true ) ; }
}
// ####################################################################################################
// Beginn - Ausbildungsmenue
// ####################################################################################################
function Markiere_Schueler()
{ var GG = document.getElementById("education_type_1").checked;
var RA = document.getElementById("education_type_2").checked;
var TA = document.getElementById("education_type_3").checked;
var FH = document.getElementById("education_type_4").checked;
var FLB = document.getElementById("education_type_5").checked;
var RTB = document.getElementById("education_type_6").checked;
var DT=document.getElementsByClassName("defaultTable");
if (DT.length<2) return;
for (var i=1; i<DT.length; i++)
{ var TB = DT[i];
for each (TR in TB.getElementsByTagName("tr"))
{ var TDs = TR.getElementsByTagName("td");
if (TDs.length==7)
{ TDs[0].style.backgroundColor="transparent";
var Ausb = TDs[5].innerHTML;
var verf = (TDs[1].innerHTML.match("Nicht verfügbar") == null);
// ************************************************************************************
// Auszubildende kennzeichnen:
// ************************************************************************************
if (verf)
{ var bgc="";
if (GG && Ausb.match("Gefahrgut") == null) bgc = "#226622";
if (RA && Ausb.match("Rettungsassistent") == null) bgc = "#662222";
if (TA && Ausb.match("Taucher") == null) bgc = "#222266";
if (FH && Ausb.match("Flughafen") == null) bgc = "#CD9B1D";
if (FLB && Ausb.match("Löschboot") == null) bgc = "#0000FF";
if (RTB && Ausb.match("Rettungsboot") == null) bgc = "#C0C0C0";
if (bgc)
{ TDs[0].style.backgroundColor = bgc;
TR.style.display = "";
}
else
{ TR.style.display = "none";
}
}
else
{ TR.style.display = "none";
}
// ************************************************************************************
// Motivation kennzeichnen:
// ************************************************************************************
var Mot = parseInt(TDs[2].innerHTML);
if (Mot >= 90) TDs[2].style.color = "#228B22";
if (Mot <= 89) TDs[2].style.color = "#32CD32";
if (Mot <= 75) TDs[2].style.color = "#66FF66";
if (Mot <= 50) TDs[2].style.color = "#FFD700";
if (Mot <= 25) TDs[2].style.color = "#FF6666";
if (Mot <= 10) TDs[2].style.color = "#B22222";
// ************************************************************************************
// Fähigkeiten kennzeichnen:
// ************************************************************************************
var Fae = parseInt(TDs[3].innerHTML);
if (Fae >= 90) TDs[3].style.color = "#228B22";
if (Fae <= 89) TDs[3].style.color = "#32CD32";
if (Fae <= 75) TDs[3].style.color = "#66FF66";
if (Fae <= 50) TDs[3].style.color = "#FFD700";
if (Fae <= 25) TDs[3].style.color = "#FF6666";
if (Fae <= 10) TDs[3].style.color = "#B22222";
if (verf)
{ if (GG && Ausb.match("Gefahrgut")==null) TDs[0].style.backgroundColor="#FA58F4";
if (RA && Ausb.match("Rettungsassistent")==null) TDs[0].style.backgroundColor="#FF8C00";
if (TA && Ausb.match("Taucher")==null) TDs[0].style.backgroundColor="#5858FA";
if (FH && Ausb.match("Flughafen")==null) TDs[0].style.backgroundColor="#CEE3F6";
if (FLB && Ausb.match("Löschboot")==null) TDs[0].style.backgroundColor="#F78181";
if (RTB && Ausb.match("Rettungsboot")==null) TDs[0].style.backgroundColor="#F7BE81";
}
}
}
}
}
// ####################################################################################################
// Schluss - Ausbildungsmenue
// ####################################################################################################
function bearbeiteFahrzeugliste()
{ var DC=document.getElementById("content");
var ArrTR=new Array;
var H2s = DC.getElementsByTagName("h2");
for each (H2 in H2s)
{ var A = H2.getElementsByTagName("a")[0];
if (A)
{ var FWLink = A.href;
H2.innerHTML += "  <a href='" + FWLink + "/feuerwehrleute'><font size='-1'>(Personal)</font></a>";
}
}
var H1 = document.getElementsByTagName("h1")[0];
var H2=document.createElement("h2");
H2.innerHTML = "Übersicht";
DC.insertBefore(H2,H1.nextSibling);
var TB=document.createElement("table");
TB.className="defaultTable";
TB.id="Übersichtstabelle";
var T = "<thead><tr>\n";
T += "<th>FZ-Typ</th>" +
"<th>Anzahl</th>" +
"<th style='background-color:#0000F8;'>Dienstfahrt<br>(S1)</th>" +
"<th style='background-color:#00FF2d;color:#000000;'>auf Wache<br>(S2)</th>" +
"<th style='background-color:#FFCC27;color:#000000;'>zum Einsatz<br>(S3)</th>" +
"<th style='background-color:#FF5A19;color:#000000;'>im Einsatz<br>(S4)</th>" +
"<th style='background-color:#BABABA;color:#000000;'>nicht Bereit<br>(S6)</th>" +
"<th style='background-color:#DAD815;color:#000000;'>Patient an Bord<br>(S7)</th>" +
"<th>Σ km</th><th>Ø-km</th>";
T += "</tr></thead><tbody>\n";
var FZNamen = new Array;
var gefFZ = new Array;
var gefS1 = new Array;
var gefS2 = new Array;
var gefS3 = new Array;
var gefS4 = new Array;
var gefS6 = new Array;
var gefS6a = new Array;
var gefS7 = new Array;
var kmSumme = new Array;
var AnzS1=0;
var AnzS2=0;
var AnzS3=0;
var AnzS4=0;
var AnzS6=0;
var AnzS6a=0;
var AnzS7=0;
var gesamtkm=0;
var ArrTopKM = new Array;
var TBs = document.getElementsByClassName("defaultTable");
for (var i=0;i<TBs.length;i++)
{
var TR=TBs[i].getElementsByTagName("tr")[0];
var LastTH = TR.getElementsByTagName("th")[TR.getElementsByTagName("th").length-1].innerHTML;
if (LastTH=="Zustand")
{ var TRs = TBs[i].getElementsByTagName("tr");
var AnzTR = TRs.length;
for (var j=1;j<AnzTR;j++)
{ var FZName = TRs[j].getElementsByTagName("td")[2].innerHTML;
if (gefFZ[FZName] == undefined)
{ FZNamen.push(FZName);
gefFZ[FZName]=1;
gefS1[FZName]=0;
gefS2[FZName]=0;
gefS3[FZName]=0;
gefS4[FZName]=0;
gefS6[FZName]=0;
gefS6a[FZName]=0;
gefS7[FZName]=0;
kmSumme[FZName]=0;
}
else
{ gefFZ[FZName]++;
}
var Funkname = TRs[j].getElementsByTagName("td")[1].getElementsByTagName("a")[0].innerHTML;
var FZStat = trim(TRs[j].getElementsByTagName("td")[3].innerHTML);
if (FZStat=="Einsatzbereit auf Wache" && Funkname.substr(0,3).toUpperCase()=="XXX") FZStat = "Außer Dienst";
switch (FZStat)
{ case "Frei (Dienstfahrt)": gefS1[FZName]++; break;
case "Einsatzbereit auf Wache": gefS2[FZName]++; break;
case "Auf dem Weg zum Einsatz": gefS3[FZName]++; break;
case "Ankunft am Einsatzort": gefS4[FZName]++; break;
case "Nicht einsatzbereit": gefS6[FZName]++; break;
case "Außer Dienst": gefS6a[FZName]++; break;
case "Patient aufgenommen": gefS7[FZName]++; break;
}
var FZLink = TRs[j].getElementsByTagName("td")[1].innerHTML;
var kmStand = TRs[j].getElementsByTagName("td")[5].innerHTML;
var IntkmStand = parseInt(kmStand.substr(0,kmStand.length-2).replace(".",""))
ArrTopKM.push(new Array(IntkmStand,FZLink));
kmSumme[FZName] += IntkmStand;
//Zustand prüfen und ggf. Link zur Werkstatt einbauen
var TD = TRs[j].getElementsByTagName("td")[6];
var FZID = TRs[j].getElementsByTagName("td")[1].getElementsByTagName("a")[0].href;
FZID = FZID.replace("http://www.feuerwache.net/feuerwehrfahrzeuge/","");
var Zustand = removeTags(TD.innerHTML);
if (Zustand != "100 %")
{ ArrTR.push(TRs[j].cloneNode(true));
}
}
}
}
for each (FZName in FZNamen.sort())
{
AnzS1 += gefS1[FZName];
AnzS2 += gefS2[FZName];
AnzS3 += gefS3[FZName];
AnzS4 += gefS4[FZName];
AnzS6 += gefS6[FZName];
AnzS6a += gefS6a[FZName];
AnzS7 += gefS7[FZName];
gesamtkm += kmSumme[FZName];
if (gefS1[FZName]==0) gefS1[FZName] = "<font color='#666666'>0</font>";
if (gefS2[FZName]==0) gefS2[FZName] = "<font color='#666666'>0</font>";
if (gefS3[FZName]==0) gefS3[FZName] = "<font color='#666666'>0</font>";
if (gefS4[FZName]==0) gefS4[FZName] = "<font color='#666666'>0</font>";
if (gefS6[FZName]==0) gefS6[FZName] = "<font color='#666666'>0</font>";
if (gefS6a[FZName]==0) gefS6a[FZName] = "";
if (gefS7[FZName]==0) gefS7[FZName] = "<font color='#666666'>0</font>";
T += "<tr><td><b>" + FZName + "</b></td>";
T += "<td style='text-align:center'>" + gefFZ[FZName] + "</td>";
T += "<td style='text-align:center'>" + gefS1[FZName] + "</td>";
T += "<td style='text-align:center'>" + gefS2[FZName] + "</td>";
T += "<td style='text-align:center'>" + gefS3[FZName] + "</td>";
T += "<td style='text-align:center'>" + gefS4[FZName] + "</td>";
T += "<td style='text-align:center'>" + gefS6[FZName];
if (gefS6a[FZName]) T += " + " + gefS6a[FZName];
T += "</td>";
T += "<td style='text-align:center'>" + gefS7[FZName] + "</td>";
T += "<td style='text-align:right'>" + makeDots(kmSumme[FZName]) + "</td>";
var Schnitt = parseInt(kmSumme[FZName] / gefFZ[FZName]);
T += "<td style='text-align:right'>" + makeDots(Schnitt) + "</td>";
T += "</tr>\n";
}
var Anz = AnzS1+AnzS2+AnzS3+AnzS4+AnzS6+AnzS6a+AnzS7;
T += "<tr><th style='text-align:left'>SUMME</th>";
T += "<th>" + Anz + "</th>";
T += "<th>" + AnzS1 + "</th>";
T += "<th>" + AnzS2 + "</th>";
T += "<th>" + AnzS3 + "</th>";
T += "<th>" + AnzS4 + "</th>";
T += "<th>" + AnzS6;
if (AnzS6a) T += " + " + AnzS6a;
T += "</th>";
T += "<th>" + AnzS7 + "</th>";
T += "<th>" + makeDots(gesamtkm) + "</th>";
var Schnitt = parseInt(gesamtkm / Anz);
T += "<th>" + makeDots(Schnitt) + "</th>";
T += "</tr>\n";
T += "</tbody></table>\n";
TB.innerHTML=T;
DC.insertBefore(TB,H2.nextSibling);
TB = TBs[TBs.length-1];
var lastTR = TB.getElementsByTagName("tr")[TB.getElementsByTagName("tr").length-1];
var TR=document.createElement("tr");
lastTR.parentNode.insertBefore(TR,lastTR.nextSibling);
TR.innerHTML = "<th>Fahrzeuge mit der höchsten Laufleistung:</th>\n<td></td>";
var TD=TR.getElementsByTagName("td")[0];
ArrTopKM.sort(function s(a,b){return b[0]-a[0];});
for (var i=0;i<5;i++)
{ TD.innerHTML += ArrTopKM[i][1] + " (" + makeDots(ArrTopKM[i][0]) + " km)<br>\n";
}
// Zustandstabelle in Dokument schreiben, aber erstmal verstecken,
// Anzeigen erst durch Klick auf Toggle-Link
var NewDiv = document.createElement("div");
//NewDiv.id = "DivZustandstabelle";
var H = "<script type='text/javascript'>\n";
H += "function toggledisplay()\n";
H += "{ var e = document.getElementById('DivZustandstabelle');\n";
H += " e.style.display = (e.style.display == 'block') ? 'none' : 'block';\n";
H += "}\n";
H += "</script>";
H += "<a href='javascript:toggledisplay();';>defekte Fahrzeuge auflisten</a>";
H += "<br>\n";
NewDiv.innerHTML = H;
var hiddenDiv=document.createElement("div");
hiddenDiv.id = "DivZustandstabelle";
hiddenDiv.style.display = "none";
var H2 = document.createElement("h2");
H2.appendChild(document.createTextNode("defekte Fahrzeuge"));
hiddenDiv.appendChild(H2);
var hiddTB = document.createElement("table");
hiddTB.className="defaultTable";
hiddTB.id="Zustandstabelle";
hiddenDiv.appendChild(hiddTB);
var THead=document.createElement("thead");
hiddTB.appendChild(THead);
H = "<tr>";
H += "<th style='width: 10px;'></th>\n";
H += "<th style='width: auto;'>Funkrufname</th>\n";
H += "<th style='width: 120px;'>Fahrzeugtyp</th>\n";
H += "<th style='width: 190px;'>FMS</th>\n";
H += "<th style='width: 55px;' title='Aktuelle Position'>Akt. Pos</th>\n";
H += "<th style='width: 100px;'>Laufleistung</th>\n";
H += "<th style='width: 60px;'>Zustand</th>\n";
H += "</tr>\n";
THead.innerHTML = H;
var TBody=document.createElement("tbody");
hiddTB.appendChild(TBody);
NewDiv.appendChild(hiddenDiv);
TB=document.getElementById("Übersichtstabelle");
TB.parentNode.insertBefore(NewDiv,TB.nextSibling);
TB=document.getElementById("Zustandstabelle").getElementsByTagName("tbody")[0];
for each (TR in ArrTR) TB.appendChild(TR);
// Tabelle sortieren
// function SortTabelle(myTB,Spalte,Richtung,Numerisch,Link)
SortTabelle(hiddTB,6,true,true,true);
}
function bearbeiteEinsatzseite()
{
// Alle Infobox-Variablen leer machen
InfotextStichwort="";
InfotextKlasse="";
InfotextKlassenalarm="";
InfotextKlassenalarmOpt="";
InfotextRTW="";
InfotextUnterwegs="";
InfotextNachforderungen="";
InfotextToAlarm="";
InfotextFahrzeit="";
InfotextFahrzeitOpt="";
InfotextNichtVerfuegbar="";
InfotextVerfuegbar="";
// verfügbare FZ zählen
if (showInfoVerfuegbar) InfotextVerfuegbar = zaehleVerfuegbar();
// im Verbandseinsatz die Checkbox per default NICHT anhaken, sonst schon
if (document.getElementById("machVorschlag") == undefined) machVorschlag = !Verbandseinsatz();
// =========================================================================================================
// Einsatzstichwort ermitteln (Einsatzseite)
// =========================================================================================================
var EinsatzDiv = document.getElementById("mission_content");
var Einsatz = document.getElementsByTagName("h1")[0];
var Einsatzstichwort = getStichwort(Einsatz.innerHTML);
if (showInfoStichwort)
{ InfotextStichwort = Einsatzstichwort;
var L = getWikiLink(Einsatzstichwort);
if (L != "") InfotextStichwort = "<a target='_new' href='" + L + "'>" + Einsatzstichwort + "</a>";
}
// Einsatzklasse
var Einsatzklasse = getEinsatzKlasse(Einsatzstichwort);
if (showInfoKlasse) InfotextKlasse = Einsatzklasse;
// Fahrzeuge zusammenstellen
FillAlarmListe(Einsatzklasse);
if (showInfoKlassenalarm) InfotextKlassenalarm = ToAlarm.toString();
if (showInfoKlassenalarmOpt && Optional.length>0) InfotextKlassenalarmOpt = Optional.toString();
// Anzahl der nötigen RTW ermitteln
var V = Verletzte();
if (V>0)
{ if (showInfoRTW)
{ InfotextRTW = "";
for (var i=0;i<V;i++) InfotextRTW += "<img class='famfamfamicon' src='/images/pill.png' alt='Pill'>";
InfotextRTW += " " + V + " verletzte Person";
if (V>1) InfotextRTW +="en";
}
while (V>0) { ToAlarm.push("RTW"); V--; }
}
// bereits eingebundene Fahrzeuge ermitteln
FillUnterwegsListe();
// Diese Unterwegs-Fahrzeuge auflisten...
if (Unterwegs.length>0)
{ if (showInfoUnterwegs) InfotextUnterwegs = Unterwegs.toString();
}
// ToAlarm um die FZ kürzen, die bereits unterwegs sind
// sowie die Reihenfolge anpassen, dass Alternativen am Ende stehen
bereinigeToAlarm();
// Nachforderungen auslesen
var NF = AddNachforderungen();
if (NF != "" && showInfoNachforderungen) InfotxetNachforderungen = NF;
if (!machVorschlag)
{ // es sollen keine Vorschläge angehakt werden, also alles aus ToAlarm
// nach Optional verschieben, so dass alles nur gelb markiert wird.
while (ToAlarm.length>0) Optional.push(ToAlarm.pop());
}
// =========================================================================================================
// Anzeige zu alarmierende Kfz (Einsatzseite)
// =========================================================================================================
if (ToAlarm.length>0)
{ if (showInfoToAlarm) InfotextToAlarm = "<font size='1'><font color='lightgreen'>" + ToAlarm + "</font></font>"; }
else
{ if (showInfoToAlarm)
{
InfotextToAlarm = "<font color='lightblue'>Fahrzeuge ausreichend.</font> ";
if (Optional.length>0) InfotextToAlarm += "(Optional: " + Optional + ")";
}
}
// ************************************************************************************
// an dieser Stelle sind die Listen ToAlarm und Optional gefüllt. Jetzt kann alles
// aus ToAlarm abgehakt werden und alles aus Optional gelb markiert
// ************************************************************************************
// ToAlarm-Fahrzeuge tatsächlich abhaken
var Dauer1 = AlarmiereFahrzeuge();
if (Dauer1 != "" && showInfoFahrzeit) InfotextFahrzeit = Dauer1;
// Optionale Fahrzeuge markieren
var Dauer2 = MarkiereFahrzeuge();
if (Dauer2 != "" && showInfoFahrzeitOpt) InfotextFahrzeitOpt = Dauer2;
// falls Fahrzeuge nicht alarmiert werden konnten, diese auflisten
if (ToAlarm.length > 0 && showInfoNichtVerfuegbar) InfotextNichtVerfuegbar = ToAlarm.toString();
// Text für die Infobox zusammenstellen
var Info = "<h2>Einsatzinfos</h2>\n";
// Vorschläge ein- und ausschalten
Info += "<input type='checkbox' id='machVorschlag' ";
if (machVorschlag) Info +="checked";
Info += "> vorgeschlagene Fahrzeuge sofort abhaken<br>\n";
Info += "Abmarschreihenfolge beachten: <input type='checkbox' id='zweiterAbmarschTr' ";
if (zweiterAbmarsch==1) Info +="checked";
Info +="> (Tr-FZ vor Gr-FZ)";
Info += " <input type='checkbox' id='zweiterAbmarschAusb' ";
if (zweiterAbmarsch==2) Info +="checked";
Info +="> (GG/RTW vor Rest)\n";
// Infos in Tabelle strukturieren
Info += "<table class='defaultTable'>\n";
var InfoVorspann = "<tr><th style='width: 150px;'>";
if (InfotextStichwort) Info += InfoVorspann + "Stichwort</th><td>" + InfotextStichwort + "</td></tr>\n";
if (InfotextKlasse)
{ Info += InfoVorspann + "Einsatzklasse</th><td><font color='yellow'>" + InfotextKlasse + "</font>";
if (InfotextKlassenalarmOpt) InfotextKlassenalarm += "<font size='1'>, Optional: " + InfotextKlassenalarmOpt + " </font>";
if (InfotextKlassenalarm) Info += "<font size='1'> ( " + InfotextKlassenalarm + " )</font>";
Info += "</td></tr>\n";
}
// =========================================================================================================
// Schriftgröße, Fahrzeugübersicht
// =========================================================================================================
if (InfotextRTW) Info += InfoVorspann + "RTW benötigt</th><td>" + InfotextRTW + "</td></tr>\n";
if (InfotextNachforderungen) Info += InfoVorspann + "Nachforderung</th><td>" + InfotextNachforderungen + "</td></tr>\n";
if (InfotextUnterwegs) Info += InfoVorspann + "bereits im Einsatz</th><td>" + InfotextUnterwegs + "</td></tr>\n";
if (InfotextToAlarm) Info += InfoVorspann + "<font size='1'>zu alarmieren</font></th><td>" + InfotextToAlarm + "</td></tr>\n";
if (InfotextVerfuegbar) Info += InfoVorspann + "<a target='_new' href='http://www.feuerwache.net/feuerwehrfahrzeuge'>verfügbare Fahrzeuge</a></th><td><font color='orange'><font size='1,9'>" + InfotextVerfuegbar + "</font></font></td></tr>\n";
if (InfotextFahrzeit || InfotextFahrzeitOpt)
{ Info += InfoVorspann + "Anfahrzeiten</th><td>"
if (InfotextFahrzeit) Info += "notwendige Fahrzeuge " + InfotextFahrzeit;
if (InfotextFahrzeit && InfotextFahrzeitOpt) Info += "<br>";
if (InfotextFahrzeitOpt) Info += "optionale Fahrzeuge " + InfotextFahrzeitOpt;
Info += "</td></tr>\n";
}
if (InfotextNichtVerfuegbar) Info += InfoVorspann + "<font color='red'>Fahrzeug nicht verfügbar</font></th><td><font color='red'>" + InfotextNichtVerfuegbar + "</font></td></tr>\n";
Info += "</table>\n";
mylog("Info=\n" + Info);
// Infobereich in die Seite einbauen
var InfoBereich = document.getElementById("InfoBereich");
if (!InfoBereich)
{ InfoBereich = document.createElement("div");
InfoBereich.id = "InfoBereich";
EinsatzDiv.parentNode.insertBefore(InfoBereich,Einsatz.nextSibling);
}
InfoBereich.innerHTML = Info;
document.getElementById("machVorschlag").addEventListener ( "click" , machVorschlag_clicked , false ) ;
document.getElementById("zweiterAbmarschAusb").addEventListener ( "click" , zweiterAbmarsch_clicked , false ) ;
document.getElementById("zweiterAbmarschTr").addEventListener ( "click" , zweiterAbmarsch_clicked , false ) ;
var D = KonfigHTML();
if (D != "")
{ InfoBereich.parentNode.insertBefore(D,InfoBereich.nextSibling);
AddKonfigEventlisteners();
}
var BTN = document.getElementsByName("commit")[0];
if (BTN) BTN.addEventListener ( "click" , function(){ FirstRun=true; } , false ) ;
for each (A in document.getElementsByTagName("a"))
{ if (A.innerHTML == "zurück alarmieren") A.addEventListener ( "click" , function(){ FirstRun=true;CBClicked=false; } , false ) ; }
for each (I in document.getElementsByName("vehicle_to_user_id[]"))
{ I.addEventListener ( "click" , function(){ CBClicked=true; } , false ) ; }
findeFahrzeugeZumZurückalarmieren();
FirstRun=false;
}
function findeFahrzeugeZumZurückalarmieren()
{ var D = document.getElementById("driving_vehicle");
var TB1=D.getElementsByTagName("table")[0];
if (!TB1) return;
var Rows1 = TB1.getElementsByTagName("tr");
D = document.getElementsByClassName("free_vehicle")[0];
var TB2=D.getElementsByTagName("table")[0];
if (!TB2) return;
var Rows2 = TB2.getElementsByTagName("tr");
for (var i=1; i<Rows1.length; i++)
{ var Row1 = Rows1[i];
var FZID1 = Row1.getElementsByTagName("td")[0].getElementsByTagName("a")[0].href;
FZID1 = FZID1.replace("http://www.feuerwache.net/feuerwehrfahrzeuge/","");
var FZBez1 = Row1.getElementsByTagName("td")[1].innerHTML;
var FZKlasse1 = getFahrzeugKlasse(FZBez1);
if (!FZKlasse1) FZKlasse1 = "1";
var RestSek1 = document.getElementById("hidden_driving_countdown_" + FZID1).value;
if (!RestSek1) RestSek1=0;
var sucheWeiter=true;
var j=1;
while (sucheWeiter)
{ var Row2 = Rows2[j];
var FZBez2 = Row2.getElementsByTagName("td")[2].innerHTML;
var FZKlasse2 = getFahrzeugKlasse(FZBez2);
var Fahrzeit2 = Row2.getElementsByTagName("td")[4].innerHTML;
var FahrtSek2 = ZeitToSek(Fahrzeit2);
var FZName2 = Row2.getElementsByTagName("td")[1].getElementsByTagName("a")[0].innerHTML;
if (FZName2.substr(0,3).toUpperCase()=="XXX") FZKlasse2 = "2";
FZName2 = Row2.getElementsByTagName("td")[1].innerHTML;
if (!FZName2.match(".*(unterwegs)")) FahrtSek2 += 90;
if (FZKlasse1 == FZKlasse2 && RestSek1 > FahrtSek2)
{ Row1.getElementsByTagName("td")[5].style.backgroundColor="#662222";
Row2.getElementsByTagName("td")[4].style.backgroundColor="#226622";
sucheWeiter = false;
}
if (FahrtSek2 > RestSek1) sucheWeiter = false;
j++;
if (j >= Rows2.length) sucheWeiter = false;
}
}
}
function bearbeiteÜbersichtsseite()
{ if (showInfoKlasseInListe)
{ for each (TD in document.getElementsByTagName("td"))
{ for each (A in TD.getElementsByTagName("a"))
{ if ( A.href.indexOf("http://www.feuerwache.net/feuerwehr-einsaetze/") == 0)
{ TD.innerHTML += " <font color='red'>(" + getEinsatzKlasse(A.innerHTML) + ")</font>";
}
}
}
}
var H1=document.getElementsByTagName("h1")[0];
var D = KonfigHTML();
if (D != "")
{ H1.parentNode.insertBefore(D,H1);
AddKonfigEventlisteners();
}
}
function AddKonfigEventlisteners()
{ var Boxes = document.getElementsByName("KonfigBox");
for each (Box in Boxes)
{ Box.addEventListener("click",KonfigBox_clicked,false);
}
if (ScriptUpdateAvailable != "")
{ document.getElementById("installURL").addEventListener (
"click" ,
function(){ GM_setValue("Version",ScriptUpdateAvailable); ScriptUpdateAvailable=""; GM_setValue("pleaseUpdate",""); } ,
true )
}
}
function SortiereNachSpalte(Tab,SortBy)
{
var Spalte = -1;
var c=0;
for each (TH in Tab.getElementsByTagName("th"))
{ if (TH.innerHTML == SortBy) Spalte=c;
c++;
}
if (Spalte == -1) return;
switch(SortBy)
{ case "Name": SortTabelle(Tab,Spalte,true,false,true); break;
case "Motivation": SortTabelle(Tab,Spalte,false,true,false); break;
case "Fähigkeiten": SortTabelle(Tab,Spalte,false,true,false); break;
case "Alter": SortTabelle(Tab,Spalte,true,true,false); break;
case "Ausbildung": SortTabelle(Tab,Spalte,true,false,false); break;
case "Status": SortTabelle(Tab,Spalte,true,false,false); break;
case "Schicht": SortTabelle(Tab,Spalte,true,true,false); break;
}
}
function SortiereNachSpalteClick(event)
{ var t = event.target;
var SortBy = t.innerHTML;
var Tab = t.parentNode.parentNode.parentNode;
if (!Tab) return;
SortiereNachSpalte(Tab,SortBy);
}
function MachSortierbar(myTB)
{ var THead = myTB.getElementsByTagName("thead")[0];
if (!THead) return;
var THs = THead.getElementsByTagName("th");
for each (TH in THs)
{ var H = TH.innerHTML;
TH.addEventListener ( "click" , function(e){SortiereNachSpalteClick(e)} , true ) ;
}
}
// ************************************************************************************
// Personalseite
// ************************************************************************************
function BearbeitePersonaltabelle(myTB)
{ MachSortierbar(myTB);
var DefSort = GM_getValue("DefaultTabSort","-1")
if (DefSort != "-1") SortiereNachSpalte(myTB,DefSort)
var AnzFM=0, AnzEinsatz=0, AnzSchule=0, AnzBereit=0, AnzDienst=0;
var AnzGG=0, AnzGGDienst=0, AnzGGBereit=0;
var AnzRA=0, AnzRADienst=0, AnzRABereit=0;
var AnzTA=0, AnzTADienst=0, AnzTABereit=0;
var AnzFH=0, AnzFHDienst=0, AnzFHBereit=0;
var AnzFLB=0, AnzFLBDienst=0, AnzFLBBereit=0;
var AnzRTB=0, AnzRTBDienst=0, AnzRTBBereit=0;
for each (TR in myTB.getElementsByTagName("tr"))
{ if (TR.getElementsByTagName("td").length>5)
{ var TDs = TR.getElementsByTagName("td");
var Stat = trim(TDs[5].innerHTML);
var Ausb = trim(TDs[4].innerHTML);
// ************************************************************************************
// Motivation kennzeichnen:
// ************************************************************************************
var Mot = parseInt(TDs[1].innerHTML);
if (Mot >= 90) TDs[1].style.color = "#228B22";
if (Mot <= 89) TDs[1].style.color = "#32CD32";
if (Mot <= 75) TDs[1].style.color = "#66FF66";
if (Mot <= 50) TDs[1].style.color = "#FFD700";
if (Mot <= 25) TDs[1].style.color = "#FF6666";
if (Mot <= 10) TDs[1].style.color = "#B22222";
// ************************************************************************************
// Fähigkeiten kennzeichnen:
// ************************************************************************************
var Fae = parseInt(TDs[2].innerHTML);
if (Fae >= 90) TDs[2].style.color = "#228B22";
if (Fae <= 89) TDs[2].style.color = "#32CD32";
if (Fae <= 75) TDs[2].style.color = "#66FF66";
if (Fae <= 50) TDs[2].style.color = "#FFD700";
if (Fae <= 25) TDs[2].style.color = "#FF6666";
if (Fae <= 10) TDs[2].style.color = "#B22222";
// ************************************************************************************
// Schicht kennzeichnen:
// ************************************************************************************
var Sch = parseInt(TDs[6].innerHTML);
if (Sch >= 3) TDs[6].style.color = "#FF1493";
if (Sch <= 2) TDs[6].style.color = "#1E90FF";
if (Sch <= 1) TDs[6].style.color = "#FFA500";
// ************************************************************************************
// Personalstatistik:
// ************************************************************************************
AnzFM++;
// Status kennzeichnen und zählen
if (Stat == "Beim Einsatz") { AnzDienst++; AnzEinsatz++; TDs[5].style.color="#F45"; }
if (Stat == "Frei - nicht im Dienst") TDs[5].style.color="#766";
if (Stat == "Einsatzbereit") { AnzDienst++; AnzBereit++; TDs[5].style.color="#6C0"; }
if (Stat == "In der Feuerwehrschule") { AnzSchule++; TDs[5].style.color="#CA0"; }
// ************************************************************************************
// Ausbildungsstand
// ************************************************************************************
if (Ausb.match("Gefahrgut"))
{ AnzGG++;
if (Stat == "Beim Einsatz" || Stat == "Einsatzbereit") AnzGGDienst++;
if (Stat == "Einsatzbereit") AnzGGBereit++;
}
if (Ausb.match("Rettungsassistent"))
{ AnzRA++;
if (Stat == "Beim Einsatz" || Stat == "Einsatzbereit") AnzRADienst++;
if (Stat == "Einsatzbereit") AnzRABereit++;
}
if (Ausb.match("Taucher"))
{ AnzTA++;
if (Stat == "Beim Einsatz" || Stat == "Einsatzbereit") AnzTADienst++;
if (Stat == "Einsatzbereit") AnzTABereit++;
}
if (Ausb.match("Flughafen"))
{ AnzFH++;
if (Stat == "Beim Einsatz" || Stat == "Einsatzbereit") AnzFHDienst++;
if (Stat == "Einsatzbereit") AnzFHBereit++;
}
if (Ausb.match("Löschboot"))
{ AnzFLB++;
if (Stat == "Beim Einsatz" || Stat == "Einsatzbereit") AnzFLBDienst++;
if (Stat == "Einsatzbereit") AnzFLBBereit++;
}
if (Ausb.match("Rettungsboot"))
{ AnzRTB++;
if (Stat == "Beim Einsatz" || Stat == "Einsatzbereit") AnzRTBDienst++;
if (Stat == "Einsatzbereit") AnzRTBBereit++;
}
}
}
var ret;
ret = "<b>Feuerwehrleute:<font color='#FFD700'> " + AnzFM + "</font></b> insgesamt";
if (AnzSchule)
{ ret += ", davon <font color='#DAA520'>" + AnzSchule + "</font> in der Schule"; }
if (AnzDienst != AnzFM)
{ ret += "<br><br><b><font color='lightblue'>" + AnzDienst + " im Dienst </font></b> "; }
ret += "<br><b><font color='lightgreen'>" + AnzBereit + " einsatzbereit</font></b> (=" + parseInt(1000*AnzBereit/AnzDienst)/10 + "%), ";
if (AnzEinsatz) ret += "<br><b><font color='#FF6666'>" + AnzEinsatz + " im Einsatz</font></b> (=" + parseInt(1000*AnzEinsatz/AnzDienst)/10 + "%), ";
ret = ret.substr(0,ret.length-2) + "<br><br>";
if (AnzRA)
{ ret += "<font color='#FF8C00'>Rettung: </font><font color='#FFD700'><b>" + AnzRA + " </b></font>insgesamt, <font color='lightblue'>" + AnzRADienst + " im Dienst</font>";
if (AnzRADienst != AnzRABereit)
{ ret += ", davon <font color='lightgreen'>" + AnzRABereit + " einsatzbereit.</font><br>\n"; }
else
{ ret += " <font color='lightgreen'>(alle einsatzbereit).</font><br>\n"; }
}
if (AnzGG)
{ ret += "<font color='#FA58F4'>Gefahrgut: </font><font color='#FFD700'><b>" + AnzGG + " </b></font>insgesamt, <font color='lightblue'>" + AnzGGDienst + " im Dienst</font>";
if (AnzGGDienst != AnzGGBereit)
{ ret += ", davon <font color='lightgreen'>" + AnzGGBereit + " einsatzbereit.</font><br>\n"; }
else
{ ret += " <font color='lightgreen'>(alle einsatzbereit).</font><br>\n"; }
}
if (AnzTA)
{ ret += "<font color='#5858FA'>Taucher: </font><font color='#FFD700'><b>" + AnzTA + " </b></font>insgesamt, <font color='lightblue'>" + AnzTADienst + " im Dienst</font>";
if (AnzTADienst != AnzTABereit)
{ ret += ", davon <font color='lightgreen'>" + AnzTABereit + " einsatzbereit.</font><br>\n"; }
else
{ ret += " <font color='lightgreen'>(alle einsatzbereit).</font><br>\n"; }
}
if (AnzFH)
{ ret += "<font color='#CEE3F6'>Flughafen: </font><font color='#FFD700'><b>" + AnzFH + " </b></font>insgesamt, <font color='lightblue'>" + AnzFHDienst + " im Dienst</font>";
if (AnzFHDienst != AnzFHBereit)
{ ret += ", davon <font color='lightgreen'>" + AnzFHBereit + " einsatzbereit.</font><br>\n"; }
else
{ ret += " <font color='lightgreen'>(alle einsatzbereit).</font><br>\n"; }
}
if (AnzFLB)
{ ret += "<font color='#F78181'>Löschboot: </font><font color='#FFD700'><b>" + AnzFLB + " </b></font>insgesamt, <font color='lightblue'>" + AnzFLBDienst + " im Dienst</font>";
if (AnzFLBDienst != AnzFLBBereit)
{ ret += ", davon <font color='lightgreen'>" + AnzFLBBereit + " einsatzbereit.</font><br>\n"; }
else
{ ret += " <font color='lightgreen'>(alle einsatzbereit).</font><br>\n"; }
}
if (AnzRTB)
{ ret += "<font color='#F7BE81'>Rettungsboot: </font><font color='#FFD700'><b>" + AnzRTB + " </b></font>insgesamt, <font color='lightblue'>" + AnzRTBDienst + " im Dienst</font>";
if (AnzRTBDienst != AnzRTBBereit)
{ ret += ", davon <font color='lightgreen'>" + AnzRTBBereit + " einsatzbereit.</font><br>\n"; }
else
{ ret += " <font color='lightgreen'>(alle einsatzbereit).</font><br>\n"; }
}
return ret;
}
// ******************************************************************************************
// Personalseite Ende
// ******************************************************************************************
function SortTabelle(myTB,Spalte,Richtung,Numerisch,Link)
{ var TBody = myTB.getElementsByTagName("tbody")[0];
if (!TBody) return;
var ArrTR = new Array();
for each (TR in TBody.getElementsByTagName("tr"))
{ ArrTR.push(TR);
}
if (ArrTR.length==0) return;
ArrTR.sort(function(x,y){return TableSort(x,y,Spalte,Richtung,Numerisch,Link);});
var H = "";
for (var i=0;i<ArrTR.length;i++) H += "<tr>" + ArrTR[i].innerHTML + "</tr>\n";
TBody.innerHTML = H;
}
function TableSort(Z1,Z2,S,richtung,num,link)
{ // sortiert Tabellenspalten nach Spalte S
// übergeben werden zwei <tr> Objekte und die Spaltennummer,
// nach der sortiert werden soll
// die weiteren Parameter bedeuten:
// richtung (t/f) = Richtung (true = A->Z, false = Z->A)
// num (true/false) = numerisch sortieren? sonst alphanumerisch
// link (true/false) = Zelleninhalt ist ein Link
var S1,S2;
var TDs = Z1.getElementsByTagName("td");
if (TDs.length <= S) return 0;
S1 = removeTags(TDs[S].innerHTML);
TDs = Z2.getElementsByTagName("td");
if (TDs.length <= S) return 0;
S2 = removeTags(TDs[S].innerHTML);
if (num)
{ S1 = parseInt(S1.replace(".",""));
S2 = parseInt(S2.replace(".",""));
}
if (richtung)
{ if (S1<S2) return -1;
if (S1>S2) return 1;
}
else
{ if (S1<S2) return 1;
if (S1>S2) return -1;
}
return 0;
}
function ClearFreeVehiclesTable(auchHaken)
{
// löschen aller Hervorhebungen und ggf. Haken in der Liste freier Fahrzeuge:
var D = document.getElementsByClassName("free_vehicle")[0];
var TB = D.getElementsByTagName("table")[0];
if (TB==undefined) return;
for each (TR in TB.getElementsByTagName("tr"))
{ // Farbe entfernen
for each (TD in TR.getElementsByTagName("td")) { TD.bgColor = undefined; }
var CB=TR.getElementsByTagName("input")[0];
if (CB)
{ CB.alt=undefined;
if (CB.checked && auchHaken) CB.click();
}
}
}
function KonfigHTML()
{
if (document.getElementById("DivKonfigurieren")) return "";
var NewDiv = document.createElement("div");
NewDiv.id = "DivKonfigurieren";
var H = "<script type='text/javascript'>\n";
H += "function toggledisplay()\n";
H += "{ var e = document.getElementById('KonfigBoxes');\n";
H += " e.style.display = (e.style.display == 'block') ? 'none' : 'block';\n";
H += "}\n";
H += "</script>";
//H += "<h2>AAO-Script-Optionen einstellen</h2>";
H += "<a href='javascript:toggledisplay();';>AAO-Script Konfiguration anzeigen</a>";
if (ScriptUpdateAvailable != "")
{ H += "<br><br><font color='violet'>Es gibt ein AAO-Script-Update (auf Version " + ScriptUpdateAvailable + ")</font>";
H += " <a href='" + UPDATEURL + "' target='_new'>Infos</a>";
H += " <a id='installURL' href='" + INSTALLURL + "' target='_new'>Installieren</a>";
}
H += "<br><br>\n";
NewDiv.innerHTML = H;
var hiddenDiv=document.createElement("div");
hiddenDiv.id = "KonfigBoxes";
hiddenDiv.style.display = "none";
H = "\n";
H += "<h2>in Einsatzübersichtstabelle</h3><br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfKlasseInListe'";
if (showInfoKlasseInListe) H += " checked";
H += "> Einsatzart anzeigen<br>\n";
H += "<br><h2>in Infobox auf Einsatzseite</h3><br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfStichwort'";
if (showInfoStichwort) H += " checked";
H += "> Einsatzstichwort anzeigen<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfKlasse'";
if (showInfoKlasse) H += " checked";
H += "> Einsatzklasse anzeigen<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfKlassenalarm'";
if (showInfoKlassenalarm) H += " checked";
H += "> gemäß Einsatzklasse zu alarmierende Fahrzeuge anzeigen<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfKlassenalarmOpt'";
if (showInfoKlassenalarmOpt) H += " checked";
H += "> Anzeige der optionalen Fahrzeuge<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfRTW'";
if (showInfoRTW) H += " checked";
H += "> Anzeige der benötigten RTW<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfUnterwegs'";
if (showInfoUnterwegs) H += " checked";
H += "> Anzeige der Fahrzeuge, die bereits im Einsatz eingebunden sind<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfNachforderungen'";
if (showInfoNachforderungen) H += " checked";
H += "> Anzeige der Fahrzeuge, die von der Einsatzstelle nachgefordert wurden<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfToAlarm'";
if (showInfoToAlarm) H += " checked";
H += "> Anzeige der zu alarmierenden Fahrzeuge<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfFahrzeit'";
if (showInfoFahrzeit) H += " checked";
H += "> Anzeige der Fahrzeiten zur Einsatzstelle (von-bis)<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfFahrzeitOpt'";
if (showInfoFahrzeitOpt) H += " checked";
H += "> Anzeige der Fahrzeiten für die optionalen Fahrzeuge<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfNichtVerfuegbar'";
if (showInfoNichtVerfuegbar) H += " checked";
H += "> Anzeige der benötigten, aber nicht verfügbaren Fahrzeuge<br>\n";
H += "<input type='checkbox' name='KonfigBox' id='KonfVerfuegbar'";
if (showInfoVerfuegbar) H += " checked";
H += "> Anzeige aller verfügbarer Fahrzeugklassen<br>\n";
H += "<br><a href='" + adr + "'>Seite aktualisieren</a>\n";
H += "<br><br>\n";
hiddenDiv.innerHTML = H;
NewDiv.appendChild(hiddenDiv);
return NewDiv;
}
function KonfigBox_clicked()
{ mylog("KonfigBox_clicked");
var Boxes = document.getElementsByName("KonfigBox");
mylog("#Boxes = " + Boxes.length);
for (var i=0;i<Boxes.length;i++)
{ var Box=Boxes[i];
var VarNam = Box.id.replace ("Konf","showInfo");
var OldVal = eval(VarNam);
var NewVal = Box.checked;
mylog(VarNam + " von " + OldVal + " nach " + NewVal);
eval(VarNam + " = " + NewVal);
mylog("Test, " + VarNam + " ist jetzt " + eval(VarNam));
}
SetVariables();
}
function zweiterAbmarsch_clicked(e)
{ var zATr = document.getElementById("zweiterAbmarschTr").checked;
var zAGG = document.getElementById("zweiterAbmarschAusb").checked;
if (e.target.id == "zweiterAbmarschTr" && zATr) zAGG=false;
if (e.target.id == "zweiterAbmarschAusb" && zAGG) zATr=false;
zweiterAbmarsch = 0;
if (zATr) zweiterAbmarsch = 1;
if (zAGG) zweiterAbmarsch = 2;
GM_setValue("zweiterAbmarsch",zweiterAbmarsch);
ClearFreeVehiclesTable(true);
FirstRun=true;
main();
}
function machVorschlag_clicked(e)
{ machVorschlag = document.getElementById("machVorschlag").checked;
ClearFreeVehiclesTable(true);
FirstRun=true;
main();
}
function FillAlarmListe(Einsatzklasse)
{ mylog("FillAlarmListe(" + Einsatzklasse + ")");
var FZ = getFahrzeugListe(Einsatzklasse);
ToAlarm = new Array;
Optional = new Array;
var Teile = FZ.split("|");
ToAlarm = Teile[0].split(",");
if (Teile.length > 1) Optional = Teile[1].split(",");
return;
}
function AddNachforderungen()
{ var D = document.getElementById("mission_reply");
if (D==undefined) return "";
var TB = D.getElementsByTagName("table");
if (TB.length == 0) return "";
var TRs = TB[0].getElementsByTagName("tr");
var NFFZ="";
var alleNF="";
for (var z=1;z<TRs.length;z++)
{ var TR=TRs[z];
if (TR.getElementsByTagName("td").length>=2)
{
var RM = TR.getElementsByTagName("td")[2].innerHTML;
if (RM != undefined)
{ NFFZ = getNachforderungFahrzeug(RM);
if (NFFZ != "")
{ if (FZinEinsatz(NFFZ)) NFFZ="";
if (NFFZ != "")
{
ToAlarm.push(NFFZ);
alleNF += "," + NFFZ;
}
}
}
}
}
if (alleNF != "") alleNF = alleNF.substr(1,100);
mylog("Nachforderung: " + alleNF);
return alleNF;
}
function FZinEinsatz(FZ)
{ mylog ("FZinEinsatz(" + FZ + ")");
mylog ("ToAlarm="+ToAlarm+"\nUnterwegs="+Unterwegs);
var FZistDrin = false;
for each (FZA in ToAlarm)
{ var A = FZA.split("/");
for each (F in A)
{ if (F == FZ) FZistDrin = true;
}
}
for each (U in Unterwegs)
{ if (U == FZ) FZistDrin = true;
}
mylog("returns:"+FZistDrin);
return FZistDrin;
}
function FillUnterwegsListe()
{ Unterwegs = new Array;
var divnames = new Array;
divnames.push ("mission_vehicle","driving_vehicle","waiting_vehicle");
for each (dn in divnames)
{ var d = document.getElementById(dn);
if (d.getElementsByTagName("table").length == 1)
{ var TB=d.getElementsByTagName("table")[0];
for each (TR in TB.getElementsByTagName("tr"))
{ var FZ;
try
{ var FZ=TR.getElementsByTagName("td")[1].innerHTML;
FZ = getFahrzeugKlasse(FZ);
Unterwegs.push(FZ);
} catch(e) {};
}
}
}
}
function bereinigeToAlarm()
{ // Alternativ-FZ in ToAalrm ans Ende stellen:
mylog("vorher:"+ToAlarm);
for (var ta=0; ta<ToAlarm.length; ta++)
{ if (ToAlarm[ta].indexOf("/") != -1) ToAlarm[ta] = "ZZZ/" + ToAlarm[ta]; }
ToAlarm = ToAlarm.sort();
for (var ta=0; ta<ToAlarm.length; ta++)
{ if (ToAlarm[ta].indexOf("ZZZ/") != -1) ToAlarm[ta] = ToAlarm[ta].substring(4,100); }
mylog("nachher:"+ToAlarm);
// ebenso in Optional:
mylog("vorher:"+Optional);
for (var ta=0; ta<Optional.length; ta++)
{ if (Optional[ta].indexOf("/") != -1) Optional[ta] = "ZZZ/" + Optional[ta]; }
Optional = Optional.sort();
for (var ta=0; ta<Optional.length; ta++)
{ if (Optional[ta].indexOf("ZZZ/") != -1) Optional[ta] = Optional[ta].substring(4,100); }
mylog("nachher:"+Optional);
var gefunden=false;
for each (FZ in Unterwegs)
{ gefunden=false;
for (var i=0; i<ToAlarm.length; i++)
{ var ALT = ToAlarm[i].split("/");
mylog("prüfe FZ (" + FZ + ") in ALT (" + ALT + ")");
for (a=0; a<ALT.length; a++)
{ if (FZ == ALT[a])
{ ToAlarm.splice(i,1); i=ToAlarm.length;
gefunden=true;
}
}
}
if (!gefunden)
{ for (var i=0; i<Optional.length; i++)
{ var ALT = Optional[i].split("/");
mylog("prüfe FZ (" + FZ + ") in ALT (" + ALT + ")");
for (a=0; a<ALT.length; a++)
{ if (FZ == ALT[a])
{ Optional.splice(i,1); i=Optional.length;
gefunden=true;
}
}
}
}
}
mylog("\nNACHHER: ToAlarm=" + ToAlarm + "\nUnterwegs=" + Unterwegs);
}
function Verletzte()
{ var TB = document.getElementById("mission_content").getElementsByTagName("table")[0];
for (var i=0; i<TB.getElementsByTagName("tr").length; i++)
{ var TR = TB.getElementsByTagName("tr")[i];
if (TR.getElementsByTagName("th")[0].innerHTML == "Verletzte")
{ var T = TR.getElementsByTagName("td")[0].innerHTML;
var pos = T.indexOf("Personen - für jede Person") - 5;
T = T.substr(pos,5);
var Anz = parseInt(T);
return Anz;
}
}
return 0;
}
function getFahrzeugKlasse(Fahrzeugname)
{ mylog("getFahrzeugKlasse(" + Fahrzeugname + ")");
var FZ = Fahrzeugklassen[Fahrzeugname];
if (FZ == undefined) FZ=Fahrzeugname;
mylog("returns " + FZ);
return FZ;
}
function getFahrzeuggeschwindigkeit(Fahrzeugname)
{ var G = Fahrzeuggeschwindigkeiten[Fahrzeugname];
if (G == undefined) G = 1000;
G = parseInt(G);
return G;
}
function getEinsatzKlasse(Stichwort)
{ if (AlleGleich) return "-gleich-";
mylog("getEinsatzKlasse(" + Stichwort + ")");
var EK = Einsatzklassen[Stichwort];
if (EK == undefined) EK = "undef";
mylog("returns " + EK);
return EK;
}
function getNachforderungFahrzeug(Rueckmeldung)
{ mylog("getNachforderungFahrzeug(" + Rueckmeldung + ")");
var FZ = Nachforderungen[Rueckmeldung];
if (FZ == undefined) FZ = "";
mylog("returns " + FZ);
return FZ;
}
function getFahrzeugListe(EKListe)
{ mylog("getFahrzeugListe(" + EKListe + ")");
if (AlleGleich) return AlleGleich;
var Klasse="", dazu="", opt="";
var Teile;
if (EKListe.indexOf("|") != -1)
{ Teile = EKListe.split("|");
EKListe = Teile[0];
opt = Teile[1];
}
if (EKListe.indexOf("+") != -1)
{ Teile = EKListe.split("+");
Klasse = Teile[0];
dazu = Teile[1];
}
else
{ var X=getEinsatzklasseFahrzeugliste(EKListe);
if (X != "")
{ Klasse = EKListe; }
else
{ dazu = EKListe; }
}
mylog("Klasse=" + Klasse + "\ndazu=" + dazu + "\nopt=" + opt);
Klasse = getEinsatzklasseFahrzeugliste(Klasse);
if (Klasse != "" && dazu != "") Klasse +=",";
Klasse += dazu;
if (opt != "") Klasse += "|" + opt;
mylog("ToAlarm = " + Klasse);
return Klasse;
}
function getEinsatzklasseFahrzeugliste(Einsatzklasse)
{ mylog("getEinsatzklasseFahrzeugliste(" + Einsatzklasse +")");
var FZL = Einsatzklasse_Fahrzeugzuordnung[Einsatzklasse];
if (FZL == undefined)
{ mylog ("Einsatzklasse '" + Einsatzklasse + "' nicht definiert!")
FZL = "";
}
mylog("returns " + FZL);
return FZL;
}
function getStichwort(Text)
{ mylog("getStichwort(" + Text + ")");
var Stichwort=Text;
var Teile = Text.split(">");
if (Teile.length > 1)
{ Stichwort = Teile[1]; }
Stichwort = trim(Stichwort);
return Stichwort;
}
function getWikiLink(Stichwort)
{ mylog("getWikiLink(" + Stichwort + ")");
var WL = WikiLinks[Stichwort];
if (WL == undefined) WL = "";
mylog("returns " + WL);
return WL;
}
function trim (S)
{ return S.replace (/^\s+/, '').replace (/\s+$/, '');
}
function removeTags (S)
{ return trim(S.replace(/<.*?>/g, ''));
}
function makeDots(Zahl)
{ var Str = Zahl.toString();
var ret = "";
while (Str.length>3)
{ ret = "." + Str.substr(Str.length-3,3) + ret;
Str = Str.substr(0,Str.length-3);
}
if (Str.length>0)
{ ret = Str + ret; }
else
{ ret = ret.substr(1,ret.length-1); }
return ret;
}
function MarkiereFahrzeuge()
{ var D = document.getElementsByClassName("free_vehicle")[0];
var TB = D.getElementsByTagName("table")[0];
if (TB==undefined) return;
var Zeilen = TB.getElementsByTagName("tr");
var Anfahrt="";
var imax=0;
var imin=9999;
for (var opt=0; opt<Optional.length; opt++)
{ var FZ = Optional[opt];
var AlternativFZ = FZ.split("/");
var Alternativen = AlternativFZ.length;
mylog("(opt) suche nach " + AlternativFZ);
for (var i=1; i<Zeilen.length; i++)
{ var ThisZeile = Zeilen[i];
var ThisSpalten = ThisZeile.getElementsByTagName("td");
var ThisFZ = getFahrzeugKlasse(ThisSpalten[2].innerHTML);
var passt=false;
for (var a=0 ; a<Alternativen ; a++) { if (ThisFZ == AlternativFZ[a]) passt = true; }
if (passt)
{ var C = ThisSpalten[0].getElementsByTagName("input")[0];
var RN = ThisSpalten[1].getElementsByTagName("a")[0];
if (RN) RN = RN.innerHTML;
if (C.alt != "x" && RN.substr(0,3).toUpperCase() != "XXX")
{ mylog("(opt) gefunden:" + ThisFZ);
for (var s=0; s<ThisSpalten.length; s++) ThisSpalten[s].bgColor = "#444422";
C.alt = "x";
if (i>imax) imax=i;
if (i<imin) imin=i;
i=Zeilen.length;
} // not checked
} // FZ passt
} // for Zeilen
} // alle Optionalen
if (imax>0)
{ var Zeile = Zeilen[imax];
Anfahrt = "<font color=#CCCC66>" + Zeile.getElementsByTagName("td")[4].innerHTML + "</font>";
if (imin != imax)
{ Zeile = Zeilen[imin];
Anfahrt = "zwischen <font color=#CCCC66>" + Zeile.getElementsByTagName("td")[4].innerHTML + "</font> und " + Anfahrt;
}
}
return Anfahrt;
}
function AlarmiereFahrzeuge()
{ ClearFreeVehiclesTable(!CBClicked);
var D = document.getElementsByClassName("free_vehicle")[0];
var TB = D.getElementsByTagName("table")[0];
if (TB==undefined) return;
var Zeilen = TB.getElementsByTagName("tr");
var AlarmZeilen = new Array();
var Anfahrt="";
var imax=0;
var imin=9999;
for (var ta=0; ta<ToAlarm.length; ta++)
{ var FZ = ToAlarm[ta];
var AlternativFZ = FZ.split("/");
var Alternativen = AlternativFZ.length;
mylog("suche nach " + AlternativFZ);
for (var i=1; i<Zeilen.length; i++)
{ var ThisZeile = Zeilen[i];
var ThisSpalten = ThisZeile.getElementsByTagName("td");
var ThisFZ = getFahrzeugKlasse(ThisSpalten[2].innerHTML);
var passt=false;
for (var a=0 ; a<Alternativen ; a++) { if (ThisFZ == AlternativFZ[a]) passt = true; }
if (passt)
{ var C = ThisSpalten[0].getElementsByTagName("input")[0];
var RN = ThisSpalten[1].getElementsByTagName("a")[0];
if (RN) RN = RN.innerHTML;
if (C.alt != "x" && RN.substr(0,3).toUpperCase() != "XXX")
{ mylog("gefunden:" + ThisFZ);
if (FirstRun || !CBClicked)
{ C.click();
AlarmZeilen.push (ThisZeile);
}
C.alt="x";
for (var s=0; s<ThisSpalten.length; s++) ThisSpalten[s].bgColor = "#442222";
FZ = "gefunden";
ToAlarm[ta] = "gefunden";
if (i>imax) imax=i;
if (i<imin) imin=i;
i=Zeilen.length;
} // not checked
} // FZ passt
} // for Zeilen
} // alle ToAlarm
if (imax>0)
{ var Zeile = Zeilen[imax];
Anfahrt = "<font color=#CC6666>" + Zeile.getElementsByTagName("td")[4].innerHTML + "</font>";
if (imin != imax)
{ Zeile = Zeilen[imin];
Anfahrt = "zwischen <font color=#CC6666>" + Zeile.getElementsByTagName("td")[4].innerHTML + "</font> und " + Anfahrt;
}
}
if (zweiterAbmarsch != 0)
{ var AlarmWachen = new Array();
var WachAlarm = new Array();
for (var i=0; i<AlarmZeilen.length; i++)
{ var ThisZeile = AlarmZeilen[i];
var ThisSpalten = ThisZeile.getElementsByTagName("td");
var ThisCheckbox = ThisSpalten[0].getElementsByTagName("input")[0];
var ThisWache = ThisSpalten[3].getElementsByTagName("a")[0].innerHTML;
var ThisFZTyp = GrTrFahrzeug(ThisSpalten[2].innerHTML);
var ThisFZAusb = AusbFahrzeug(ThisSpalten[2].innerHTML);
var ThisFunkName = ThisSpalten[1].innerHTML;
var FNEndLink = ThisFunkName.indexOf("</a>");
var ThisFZUnterwegs = ( trim(ThisFunkName.substr(FNEndLink+4)) == "(unterwegs)" );
if (!ThisFZUnterwegs)
{ if (!WachAlarm[ThisWache])
{ AlarmWachen.push (ThisWache);
WachAlarm[ThisWache] = Array();
WachAlarm[ThisWache][0] = "";
WachAlarm[ThisWache][1] = "";
}
if (zweiterAbmarsch == 1)
{
if (ThisFZTyp == "Gr") WachAlarm[ThisWache][0] += "," + i;
if (ThisFZTyp == "Tr") WachAlarm[ThisWache][1] += "," + i;
}
else if (zweiterAbmarsch == 2)
{
if (ThisFZAusb == "") WachAlarm[ThisWache][0] += "," + i;
if (ThisFZAusb == "Ausb") WachAlarm[ThisWache][1] += "," + i;
}
}
}
for each (W in AlarmWachen)
{ if (WachAlarm[W][0] && WachAlarm[W][1])
{ var StornoZeilen = WachAlarm[W][0].split(",");
for each (SZ in StornoZeilen)
{ if (SZ) AlarmZeilen[SZ].getElementsByTagName("input")[0].click();
}
}
}
}
for (ta=ToAlarm.length; ta>=0; ta--)
{ if (ToAlarm[ta]=="gefunden") ToAlarm.splice(ta,1); }
return Anfahrt;
}
function GrTrFahrzeug(FZBez)
{ var ret="";
ret = "Tr";
if (FZBez.substr(0,3) == "LF ") ret="Gr";
if (FZBez == "Kleinlöschfahrzeug") ret="Gr";
mylog("FZBez = " + FZBez + ", Typ=" + ret);
return ret;
}
function AusbFahrzeug(FZBez)
{ var ret="";
if (FZBez == "GW-Gefahrgut") ret="Ausb";
if (FZBez == "GW-Messtechnik") ret="Ausb";
if (FZBez == "RTW") ret="Ausb";
mylog("FZBez = " + FZBez + ", Typ=" + ret);
return ret;
}
function zaehleVerfuegbar()
{ // Array aufbauen, Reihenfolge wie in Fahrzeugklassen
var ArrFZK = new Array();
var strFZK = "";
for (F in Fahrzeugklassen)
{ var FZK = Fahrzeugklassen[F];
if (!strFZK.match("#"+FZK+"#"))
{ ArrFZK.push(FZK);
strFZK += "#" + FZK + "#";
}
}
var AnzFZK=new Array();
var AnzFZKXXX=new Array();
for each (FZK in ArrFZK)
{ AnzFZK[FZK]=0;
AnzFZKXXX[FZK]=0;
}
// Freie-Fahrzeuge-Tabelle durchscannen
var FV=document.getElementsByClassName("free_vehicle");
if (!FV) return "";
var TB=FV[0].getElementsByTagName("table");
if (TB.length==0) return "";
for each (TR in TB[0].getElementsByTagName("tr"))
{ var FZ;
var TDs=TR.getElementsByTagName("td");
if (TDs.length==5)
{ FZ=TDs[2].innerHTML;
var FN=TDs[1].getElementsByTagName("a")[0].innerHTML;
var FZK=getFahrzeugKlasse(FZ);
if (FN.substr(0,3).toUpperCase()=="XXX")
{ AnzFZKXXX[FZK]++; }
else
{ AnzFZK[FZK]++; }
}
}
var ret = "<table border='0'><tr>";
var c=0;
for each (FZ in ArrFZK)
{ if (c==MAXSPALTENVERFUEGBAR) c=0, ret+="</tr><tr>";
ret += "<td style='border:0;'><font color='#66FF66'>"+AnzFZK[FZ]+"</font>";
if (AnzFZKXXX[FZ]) ret +="<font color='green'>+"+AnzFZKXXX[FZ]+"</font>";
ret += "<br>"+FZ+" </td>";
c++;
}
ret +="</tr></table>";
return ret;
}
function mylog(Text)
{ if (!debugging) return;
var Jetzt = new Date();
GM_log(Jetzt.toLocaleString() + "\n" + Text);
}
function GetVariables()
{ mylog("GetVariables");
showInfoKlasseInListe = GM_getValue("showInfoKlasseInListe",true);
showInfoStichwort = GM_getValue("showInfoStichwort",true);
showInfoKlasse = GM_getValue("showInfoKlasse",true);
showInfoKlassenalarm = GM_getValue("showInfoKlassenalarm",true);
showInfoKlassenalarmOpt = GM_getValue("showInfoKlassenalarmOpt",true);
showInfoRTW = GM_getValue("showInfoRTW",true);
showInfoUnterwegs = GM_getValue("showInfoUnterwegs",true);
showInfoNachforderungen = GM_getValue("showInfoNachforderungen",true);
showInfoToAlarm = GM_getValue("showInfoToAlarm",true);
showInfoFahrzeit = GM_getValue("showInfoFahrzeit",true);
showInfoFahrzeitOpt = GM_getValue("showInfoFahrzeitOpt",true);
showInfoNichtVerfuegbar = GM_getValue("showInfoNichtVerfuegbar",true);
showInfoVerfuegbar = GM_getValue("showInfoVerfuegbar",true);
ScriptUpdateAvailable = GM_getValue("pleaseUpdate","");
}
function SetVariables()
{ mylog("SetVariables");
GM_setValue("showInfoKlasseInListe",showInfoKlasseInListe);
GM_setValue("showInfoStichwort",showInfoStichwort);
GM_setValue("showInfoKlasse",showInfoKlasse);
GM_setValue("showInfoKlassenalarm",showInfoKlassenalarm);
GM_setValue("showInfoKlassenalarmOpt",showInfoKlassenalarmOpt);
GM_setValue("showInfoRTW",showInfoRTW);
GM_setValue("showInfoUnterwegs",showInfoUnterwegs);
GM_setValue("showInfoNachforderungen",showInfoNachforderungen);
GM_setValue("showInfoToAlarm",showInfoToAlarm);
GM_setValue("showInfoFahrzeit",showInfoFahrzeit);
GM_setValue("showInfoFahrzeitOpt",showInfoFahrzeit);
GM_setValue("showInfoNichtVerfuegbar",showInfoNichtVerfuegbar);
GM_setValue("showInfoVerfuegbar",showInfoVerfuegbar);
}
function ZeitToSek(txtZeit)
{ // errechnet aus der Klartext-Zeit die Anzahl der Sekunden
var Teile = txtZeit.split(".");
var sek=0;
for each (Teil in Teile)
{ Teil = trim(Teil);
var Wert = Teil.split(" ");
var Zahl = Wert[0];
if (Zahl.match("0[1-9]+")) Zahl = Zahl.substr(1,Zahl.length);
Zahl = parseInt(Zahl);
var Einheit = Wert[1];
switch (Einheit)
{ case "Sek": sek += Zahl; break;
case "Min": sek += Zahl*60; break;
case "Std": sek += Zahl*3600; break;
}
}
return sek;
}
function Verbandseinsatz()
{ var User="X";
var ret=false;
var Obj = document.getElementById("navigation_top");
if (Obj) Obj = Obj.getElementsByTagName("ul")[0];
if (Obj) Obj = Obj.getElementsByTagName("ul")[0];
if (Obj) Obj = Obj.getElementsByTagName("li")[0];
if (Obj) Obj = Obj.getElementsByTagName("a")[0];
if (Obj) Obj = Obj.innerHTML;
if (Obj) User = Obj.replace(/Benutzer: /,"");
mylog("User = " + User);
Obj = document.getElementById("mission_content");
if (Obj) Obj = Obj.getElementsByTagName("table")[0];
if (Obj)
{ var TRs=Obj.getElementsByTagName("tr");
for (var t=0;t<TRs.length;t++)
{ var TR=TRs[t];
var THText = TR.getElementsByTagName("th")[0].innerHTML;
if (THText == "Einsatz von")
{ var UserEinsatz="Y";
Obj = TR.getElementsByTagName("td")[0];
if (Obj) Obj = Obj.getElementsByTagName("a")[0];
if (Obj) UserEinsatz=Obj.innerHTML;
if (User != UserEinsatz) ret=true;
}
}
}
mylog("Verbandseinsatz=" + ret);
return ret;
}
function NowDateString()
{ var Now = new Date();
var X,R="";
var X = Now.getFullYear();
R+=X;
X = "0" + (Now.getMonth()+1);
X = X.substr(X.length-2,2);
R+=X;
X = "0" + Now.getDate();
X = X.substr(X.length-2,2);
R+=X;
return R;
}
function updateTest()
{ // prüfen, ob heute bereits ein Update-Check stattgefunden hat:
var LastUpdate = GM_getValue("LastUpdate","0");
var heute = NowDateString();
mylog("heute = " + heute + "\nLastUpdate = " + LastUpdate);
// wenn ja, nicht noch einmal prüfen
if (LastUpdate == heute) return;
// heute nicht nochmal prüfen
GM_setValue("LastUpdate",heute);
// userscript-Seite öffnen, um Version auszulesen
GM_xmlhttpRequest
( { method: 'GET',
url: UPDATEURL,
onload: function(r)
{ if (r.status==200)
{ XML = r.responseText;
DoUpdateCheck(XML);
}
}
}
)
}
function DoUpdateCheck(XML)
{ var ThisVersion = GM_getValue("Version","version");
var OnlineVersion = ParseXMLforVersion(XML);
mylog("This ="+ThisVersion);
mylog("Online="+OnlineVersion);
if (ThisVersion != OnlineVersion)
{ GM_setValue("pleaseUpdate",OnlineVersion);
ScriptUpdateAvailable = OnlineVersion;
}
else
{ GM_setValue("pleaseUpdate","");
ScriptUpdateAvailable = "";
}
}
function ParseXMLforVersion(XML)
{ // aus XML den Versionsstand herausziehen:
var H = XML;
var Pos = H.indexOf("<div id='summary'>");
if (Pos<0) return "OnlineVersion";
H = H.substr(Pos,H.length);
Pos = H.indexOf("<b>Version:</b>");
H = H.substr(Pos+16,H.length);
Pos = H.indexOf("<br />");
H = H.substr(0,Pos-1);
return H;
}
function init()
{ ToAlarm="";
NichtVerf="";
mylog ("init startet");
document.addEventListener("DOMNodeInserted", nodeInserted, false);
GetVariables();
if (CHECKFORUPDATES) updateTest();
}
function nodeInserted(e)
{
// wenn ich selbst für die Änderung verantwortlich bin, nichts unternehmen
if (ichBins) return;
mylog ("nodeInserted, e=" + e.target.innerHTML.substr(0,100));
// reload auf Übersichtseite hat stattgefunden:
if (e.target.innerHTML == "Einsätze deines Verbandes")
{ window.setTimeout(main, 10);
return;
}
// reload auf Einsatzseite hat stattgefunden:
if (e.target.innerHTML.indexOf("<h2>Freie Fahrzeuge</h2>") > 0)
{ window.setTimeout(main, 100);
return;
}
// in Schule wurde eine Wache "aufgeklickt":
if (e.target.innerHTML.indexOf("<th>Ausbildung</th>") > 0)
{ window.setTimeout(Markiere_Schueler(e),10);
return;
}
// reload auf Leitstellenansicht hat stattgefunden:
if (e.target.innerHTML == "Leitstellenansicht")
{ window.setTimeout(main, 10);
return;
}
mylog("HREF=" + document.location.href + "\nInserted: " + e.target.innerHTML.substr(0,500));
}
function dt() { debugging=true; }
function df() { debugging=false; }
Mozilla add on,User script,Grease Monkey Script, greasemonkey userscripts, updater userscripts mafia wars userscripts mafia wars autoplayer userscripts mafia wars wall userscripts scripts userscripts travian greasemonkey greasemonkey download greasemonkey facebook greasemonkey tutorial greasemonkey youtube greasemonkey travian greasemonkey chrome greasemonkey mafia wars greasemonkey mafia wars autoplayer
Friday, February 4, 2011
Feuerwache.net AAO Darkprince (Komplett-Script)
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment