· 6 years ago · Mar 07, 2020, 11:56 PM
1// ==UserScript==
2// @name DeffinfoUpd
3// @author Boggler, Skype: boggler2306k, chubb
4// @version 2.3
5// @description Zaehlt auf der Seite >Truppen-Verteidigung< die Unterstuetzungen jedes Spielers zusammen und bietet eine Funktion um diese zu exportieren und die Truppen spielerweise zurueckzuschicken, fasst auf der Seite >Truppen-Unterstuetzungen< die Truppen ausserhalb Doerfer- und Spielerweise zusammen (auch hier kann man die Infos exportieren und Spieler/Doerferweise Truppen abziehen) und zeigt auf den Seiten >Uebersicht-Truppen-Im Dorf<, >Versammlungsplatz-Truppen< und in der Dorfansicht an, wieviele Truppen im Dorf sind oder zum Dorf laufen. Auf der VP-Seite >Truppen< wird zusaetzlich die Entfernung zum Herkunftsdorf jeder Unterstuetzung eingefuegt und man kann die Doerfer danach sortieren.
6// @include https://de*.die-staemme.de/game.php*screen=settings*
7// @include https://de*.die-staemme.de/game.php*mode=units*
8// @include https://de*.die-staemme.de/game.php*view*screen=report*
9// @include https://de*.die-staemme.de/game.php*screen=overview
10// @include https://de*.die-staemme.de/game.php*screen=overview*t=*
11// @include https://de*.die-staemme.de/game.php*t=*screen=overview*
12// @exclude https://de*.die-staemme.de/game.php*mode=notify*
13// @license Creative Commons by-nc-sa
14// ==/UserScript==
15
16javascript:
17
18var api = typeof unsafeWindow != 'undefined' ? unsafeWindow.ScriptAPI: window.ScriptAPI;
19api.register('170-Deffinfo_', true, 'Boggler', 'Support-nur-ueber-Skype--boggler2306@trash-mail.com');
20
21// Storage-Klasse von Hypix
22var storage = new Storage("prefix", false);
23function Storage(prefx, forceGM) {
24 var gm = typeof(unsafeWindow) != "undefined" && navigator.userAgent.indexOf("Firefox") > -1
25 var win = gm ? unsafeWindow: window;
26 var ls = false;
27 var intGetValue;
28 var intSetValue;
29 var prefix = prefx;
30 try {
31 ls = typeof(win.localStorage) != "undefined";
32 } catch(e) {}
33 if (!ls && !gm)
34 throw ("Keine geeignete Speichermöglichgkeit gefunden");
35 if (forceGM && gm || !ls) {
36 if (gm) {
37 prefix = prefix + "_" + document.location.host.split('.')[0];
38 intSetValue = function(key, value) {
39 GM_setValue(prefix + "_" + key, value);
40 };
41 intGetValue = function(key, defaultValue) {
42 return GM_getValue(prefix + "_" + key, defaultValue);
43 }
44 this.deleteValue = function(key) {
45 GM_deleteValue(prefix + "_" + key);
46 }
47 this.listValues = function(re) {
48 var allkeys = GM_listValues();
49 var serverKeys = [];
50 var rePrefix = new RegExp("^" + prefix + "_(.*)$");
51 if (typeof(re) != "undefined")
52 var reKey = new RegExp(re);
53 for (var i = 0; i < allkeys.length; i++) {
54 var res = allkeys[i].match(rePrefix);
55 if (res) {
56 if (reKey) {
57 res = res[1].match(reKey);
58 if (res)
59 serverKeys.push(res);
60 } else
61 serverKeys.push(res[1]);
62 }
63 }
64 return serverKeys;
65 }
66 }
67 } else if (ls) {
68 intSetValue = function(key, value) {
69 localStorage.setItem(prefix + "_" + key, value);
70 };
71 intGetValue = function(key, defaultValue) {
72 var value = localStorage.getItem(prefix + "_" + key);
73 if (value)
74 return value;
75 else
76 return defaultValue;
77 };
78 this.deleteValue = function(key) {
79 localStorage.removeItem(prefix + "_" + key);
80 }
81 this.listValues = function(re) {
82 var keys = [];
83 var rePrefix = new RegExp("^" + prefix + "_(.*)$");
84 if (typeof(re) != "undefined")
85 var reKey = new RegExp(re);
86 for (var i = 0; i < win.localStorage.length; i++) {
87 var res = localStorage.key(i).match(rePrefix);
88 if (res) {
89 if (reKey) {
90 res = res[1].match(reKey);
91 if (res)
92 keys.push(res);
93 } else
94 keys.push(res[1]);
95 }
96 }
97 return keys;
98 }
99 }
100 this.clear = function(re) {
101 var keys = this.listValues(re);
102 for (var i = 0; i < keys.length; i++)
103 this.deleteValue(keys[i]);
104 }
105 this.setValue = function(key, value) {
106 switch (typeof(value)) {
107 case "object":
108 case "function":
109 intSetValue(key, "j" + JSON.stringify(value));
110 break;
111 case "number":
112 intSetValue(key, "n" + value);
113 break;
114 case "boolean":
115 intSetValue(key, "b" + (value ? 1: 0));
116 break;
117 case "string":
118 intSetValue(key, "s" + value);
119 break;
120 case "undefined":
121 intSetValue(key, "u");
122 break;
123 }
124 }
125 this.getValue = function(key, defaultValue) {
126 var str = intGetValue(key);
127 if (typeof(str) != "undefined") {
128 switch (str[0]) {
129 case "j":
130 return JSON.parse(str.substring(1));
131 case "n":
132 return parseFloat(str.substring(1));
133 case "b":
134 return str[1] == "1";
135 case "s":
136 return str.substring(1);
137 default:
138 this.deleteValue(key);
139 }
140 }
141 return defaultValue;
142 }
143 this.getString = function(key) {
144 return intGetValue(key);
145 }
146 this.setString = function(key, value) {
147 intSetValue(key, value);
148 }
149}
150/*
151 *
152 * Allgemeine Definitionen
153 *
154 */
155
156//Gibt bei gegebenen Truppen und gespeichertem Deffmuster die Deffanzahl zurueck
157function deffanzahl(sp, sw, ax, bo, spy, lk, bb, sk, ra, ka, pa, ag) {
158 var deffzahl = 0;
159
160 var AllgZ = sp * deffallg[0] + sw * deffallg[1] + ax * deffallg[2] + bo * deffallg[3] + spy * deffallg[4] + lk * deffallg[5] + bb * deffallg[6] + sk * deffallg[7] + ra * deffallg[8] + ka * deffallg[9] + pa * deffallg[10] + ag * deffallg[11];
161 var KavZ = sp * deffkav[0] + sw * deffkav[1] + ax * deffkav[2] + bo * deffkav[3] + spy * deffkav[4] + lk * deffkav[5] + bb * deffkav[6] + sk * deffkav[7] + ra * deffkav[8] + ka * deffkav[9] + pa * deffkav[10] + ag * deffkav[11];
162 var BogZ = sp * deffbog[0] + sw * deffbog[1] + ax * deffbog[2] + bo * deffbog[3] + spy * deffbog[4] + lk * deffbog[5] + bb * deffbog[6] + sk * deffbog[7] + ra * deffbog[8] + ka * deffbog[9] + pa * deffbog[10] + ag * deffbog[11];
163
164 AllgZ = AllgZ / allgwert;
165 KavZ = KavZ / kavwert;
166 BogZ = BogZ / bogwert;
167 deffzahl = (bogen) ? AllgZ + KavZ + BogZ: AllgZ + KavZ;
168 deffzahl = (bogen) ? deffzahl / 3: deffzahl / 2;
169 deffzahl = deffzahl * 100;
170 deffzahl = Math.round(deffzahl);
171 deffzahl = deffzahl / 100;
172 return deffzahl;
173}
174
175//Funktionen zum Berechnen der Entfernung zwischen zwei Doerfern
176function hypot(x, y) {
177 return Math.sqrt(x * x + y * y) || 0;
178}
179function village_distance(x1, x2, y1, y2) {
180 var distance = Math.round(hypot(x1 - x2, y1 - y2) * 100);
181 distance = distance / 100;
182 return distance;
183}
184
185//erzeugt ein DOM-Element und f�gt Attribute und Anzeigetext an
186function createElement(type, attributes, html) {
187 var node = document.createElement(type);
188 for (var attr in attributes)
189 if (attributes.hasOwnProperty(attr)) {
190 node.setAttribute(attr, attributes[attr]);
191 }
192 if (html != null) {
193 node.innerHTML = html;
194 }
195 return node;
196}
197
198//Allgemeine Infos ueber Spieler, Dorf und Welt auslesen
199var spielername = document.getElementsByTagName('html')[0].innerHTML.split('"name":"')[1].split('"')[0];
200var spielerid = document.getElementsByTagName('html')[0].innerHTML.split('"id":"')[1].split('"')[0];
201var welt = document.location.href.split('https://')[1].split('.')[0];
202var villageid = Number(document.location.href.split('village=')[1].split('&')[0]);
203/*var spielername = game_data.player.name;
204var spielerid = game_data.player.id;
205var welt = game_data.world;
206var villageid = game_data.village.id;
207alert(welt+spielername+spielerid+'__'+villageid);*/
208var table = document.getElementById('units_table');
209try {
210 var bogen = table.innerHTML.indexOf('archer') > 0;
211 var paladin = table.innerHTML.indexOf('knight') > 0;
212 storage.setValue('deffscript' + welt + '_bogen', bogen);
213 storage.setValue('deffscript' + welt + '_paladin', paladin);
214 var dorfzahl = Number(table.innerHTML.split('Dorf (')[1].split(')')[0]);
215} catch(e) {}
216
217//Deffwerte und BH-Plaetze aller Einheiten definieren
218var deffallg = new Array(15, 50, 10, 50, 2, 30, 40, 200, 20, 100, 250, 100)
219var deffkav = new Array(45, 15, 5, 40, 1, 40, 30, 80, 50, 50, 400, 50)
220var deffbog = new Array(20, 40, 10, 5, 2, 30, 50, 180, 20, 100, 150, 100)
221var bhplaetze = new Array(1, 1, 1, 1, 2, 4, 5, 6, 5, 8, 10, 100);
222var bhplaetze1 = new Array(1, 1, 1, 2, 4, 6, 5, 8, 10, 100);
223
224//Falls nicht vorhanden, Standardwerte fuer das Deffmuster setzen
225if (bogen) {
226 var einedeff = new Array(6000, 6000, 0, 8001, 129, 0, 0, 0, 0, 50);
227 if (storage.getValue('deffscript' + welt + '_allgwert', 'nv') == 'nv')
228 storage.setValue('deffscript' + welt + '_allgwert', 795308);
229 if (storage.getValue('deffscript' + welt + '_kavwert', 'nv') == 'nv')
230 storage.setValue('deffscript' + welt + '_kavwert', 682669);
231 if (storage.getValue('deffscript' + welt + '_bogwert', 'nv') == 'nv')
232 storage.setValue('deffscript' + welt + '_bogwert', 405263);
233} else {
234 var einedeff = new Array(10000, 10000, 0, 100, 0, 0, 0, 50);
235 if (storage.getValue('deffscript' + welt + '_allgwert', 'nv') == 'nv')
236 storage.setValue('deffscript' + welt + '_allgwert', 655200);
237 if (storage.getValue('deffscript' + welt + '_kavwert', 'nv') == 'nv')
238 storage.setValue('deffscript' + welt + '_kavwert', 602600);
239 if (storage.getValue('deffscript' + welt + '_bogwert', 'nv') == 'nv')
240 storage.setValue('deffscript' + welt + '_bogwert', 605200);
241}
242for (i = 0; i < einedeff.length; i++) {
243 if (storage.getValue('deffscript' + welt + '_einedeff_' + i, 'nicht vorhanden') == 'nicht vorhanden')
244 storage.setValue('deffscript' + welt + '_einedeff_' + i, einedeff[i]);
245}
246
247//Gespeicherte Standardwerte auslesen
248var bogen = storage.getValue('deffscript' + welt + '_bogen', true);
249var paladin = storage.getValue('deffscript' + welt + '_paladin', true);
250var allgwert = storage.getValue('deffscript' + welt + '_allgwert', 795308);
251var kavwert = storage.getValue('deffscript' + welt + '_kavwert', 682669);
252var bogwert = storage.getValue('deffscript' + welt + '_bogwert', 405263);
253
254//Auslesen, auf welcher Seite man sich befindet
255var url = document.location.href;
256var mode;
257//Dorfansicht
258if (url.match(/screen=overview/g) != null && url.match(/screen=overview_villages/g) == null)
259 mode = 'overview';
260//Einstellungen
261if (url.match(/screen=settings/g) != null)
262 mode = 'settings';
263//Truppen-Verteidigung
264if (url.match(/mode=units/g) != null && url.match(/type=support_detail/g) != null)
265 mode = 'units&type=support_detail';
266//Truppen-Im Dorf
267if (url.match(/mode=units/g) != null && url.match(/type=there/g) != null)
268 mode = 'units&type=there';
269//Truppen-Unterstuetzungen
270if (url.match(/mode=units/g) != null && url.match(/type=away_detail/g) != null)
271 mode = 'units&type=away_detail';
272//Versammlungsplatz-Truppen
273if (url.match(/mode=units/g) != null && url.match(/screen=place/g) != null)
274 mode = 'units';
275
276switch (mode) {
277 /*
278 *
279 * Einstellungen
280 *
281 */
282 case 'settings':
283 //Speichert in die Felder eingegebene Werte, wird beim Start und wird bei jeder Aenderung aufgerufen
284 function changed() {
285 var bh = (bogen) ? bhplaetze: bhplaetze1;
286 var einedeffallg = 0;
287 var einedeffkav = 0;
288 var einedeffbog = 0;
289 var einedeffbh = 0;
290 for (var i = 0; i < 14; i++) {
291 try {
292 einedeffallg = einedeffallg + Number(document.getElementById('trp' + i).value) * deffallg[i];
293 einedeffkav = einedeffkav + Number(document.getElementById('trp' + i).value) * deffkav[i];
294 einedeffbog = einedeffbog + Number(document.getElementById('trp' + i).value) * deffbog[i];
295 einedeffbh = einedeffbh + Number(document.getElementById('trp' + i).value) * bh[i];
296 storage.setValue('deffscript' + welt + '_einedeff_' + i, document.getElementById('trp' + i).value);
297 } catch(e) {}
298 }
299 document.getElementById('deffallg').value = einedeffallg;
300 document.getElementById('deffkav').value = einedeffkav;
301 try {
302 document.getElementById('deffbog').value = einedeffbog;
303 } catch(e) {}
304 document.getElementById('deffbh').value = einedeffbh;
305 storage.setValue('deffscript' + welt + '_allgwert', einedeffallg);
306 storage.setValue('deffscript' + welt + '_kavwert', einedeffkav);
307 storage.setValue('deffscript' + welt + '_bogwert', einedeffbog);
308
309 }
310 //Einheitentypen fuer Tabelle je nach Welttyp bestimmen
311 var units = new Array('spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult');
312 if (bogen)
313 units = new Array('spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult');
314
315 //Links fuer Einheitensymbole zusammenstellen
316 for (var i = 0; i < units.length; i++) {
317 units[i] = image_base + '/unit/unit_' + units[i] + '.png';
318 }
319 units[units.length] = image_base + '/unit/Def.png';
320 units[units.length] = image_base + '/unit/Def_cav.png';
321 if (bogen)
322 units[units.length] = image_base + '/unit/Def_archer.png';
323
324 //div-Kontainer und Tabelle erzeugen
325 var settings = createElement('div', {
326 id: 'deffsettings'
327 });
328
329 var table = createElement('table', {
330 class: 'vis overview_table',
331 style: 'min-width:950px'
332 });
333
334 var thead = createElement('thead');
335 var tr = createElement('tr');
336
337 tr.appendChild(createElement('th', {
338 style: 'text-align:center'
339 }, 'Deffvorgabe'));
340 for (i = 0; i < units.length; i++) {
341 var th = createElement('th', {
342 style: 'text-align:center'
343 });
344 var img = createElement('img', {
345 src: units[i]
346 });
347 th.appendChild(img);
348 tr.appendChild(th);
349 }
350 tr.appendChild(createElement('th', {
351 style: 'text-align:center'
352 }, 'BH-Plätze'));
353 thead.appendChild(tr);
354 table.appendChild(thead);
355
356 //Eingabefelder + Inhalt einfuegen
357 tr = createElement('tr', {});
358 tr.appendChild(createElement('td', {}, 'für eine Deff'));
359 var anzahl = (bogen) ? 10: 8;
360
361 for (i = 0; i < anzahl; i++) {
362 var td = createElement('td', {
363 style: 'text-align:center'
364 });
365 var input = createElement('input', {
366 size: '3',
367 type: 'text',
368 value: storage.getValue('deffscript' + welt + '_einedeff_' + i, '0'),
369 id: 'trp' + i,
370 name: 'einedeff'
371 });
372 input.addEventListener('keyup', changed, false);
373 td.appendChild(input);
374 tr.appendChild(td);
375
376 }
377
378 var td = createElement('td', {
379 style: 'text-align:center'
380 });
381 var input = createElement('input', {
382 size: '10',
383 type: 'text',
384 id: 'deffallg',
385 disabled: true
386 });
387 td.appendChild(input);
388 tr.appendChild(td);
389
390 var td = createElement('td', {
391 style: 'text-align:center'
392 });
393 var input = createElement('input', {
394 size: '10',
395 type: 'text',
396 id: 'deffkav',
397 disabled: true
398 });
399 td.appendChild(input);
400 tr.appendChild(td);
401 if (bogen) {
402 td = createElement('td', {
403 style: 'text-align:center'
404 });
405 var input = createElement('input', {
406 size: '10',
407 type: 'text',
408 id: 'deffbog',
409 disabled: true
410 });
411 td.appendChild(input);
412 tr.appendChild(td);
413 }
414
415 td = createElement('td', {
416 style: 'text-align:center'
417 });
418 var input = createElement('input', {
419 size: '5',
420 type: 'text',
421 id: 'deffbh',
422 disabled: true
423 });
424 td.appendChild(input);
425 tr.appendChild(td);
426
427 table.appendChild(tr);
428 settings.appendChild(createElement('br', {}));
429 var h3 = createElement('h3', {});
430
431 h3.appendChild(createElement('a', {
432 href: 'https://forum.die-staemme.de/showthread.php?169850'
433 }, 'Deffinfo'));
434
435 settings.appendChild(h3);
436 settings.appendChild(table);
437
438 document.getElementsByClassName('vis settings')[0].parentNode.appendChild(settings);
439
440 changed();
441
442 break;
443 /*
444 *
445 * Uebersicht->Truppen->Im Dorf
446 *
447 */
448 case 'units&type=there':
449
450 for (i = 1; i <= dorfzahl; i++) {
451 var bereich = document.getElementsByTagName('body')[0].innerHTML.split('<!-- troop data -->')[i].split('</tr>')[0];
452 var sp = Number(bereich.split('<td class="unit-')[1].split('">')[1].split("</td>")[0]);
453 var sw = Number(bereich.split('<td class="unit')[2].split('">')[1].split("</td>")[0]);
454 var ax = Number(bereich.split('<td class="unit')[3].split('">')[1].split("</td>")[0]);
455 if (bogen && paladin) {
456 var bo = Number(bereich.split('<td class="unit')[4].split('">')[1].split("</td>")[0]);
457 var spy = Number(bereich.split('<td class="unit')[5].split('">')[1].split("</td>")[0]);
458 var lk = Number(bereich.split('<td class="unit')[6].split('">')[1].split("</td>")[0]);
459 var bb = Number(bereich.split('<td class="unit')[7].split('">')[1].split("</td>")[0]);
460 var sk = Number(bereich.split('<td class="unit')[8].split('">')[1].split("</td>")[0]);
461 var ra = Number(bereich.split('<td class="unit')[9].split('">')[1].split("</td>")[0]);
462 var ka = Number(bereich.split('<td class="unit')[10].split('">')[1].split("</td>")[0]);
463 var pa = Number(bereich.split('<td class="unit')[11].split('">')[1].split("</td>")[0]);
464 var ag = Number(bereich.split('<td class="unit')[12].split('">')[1].split("</td>")[0]);
465 } else if (bogen && !paladin) {
466 var bo = Number(bereich.split('<td class="unit')[4].split('">')[1].split("</td>")[0]);
467 var spy = Number(bereich.split('<td class="unit')[5].split('">')[1].split("</td>")[0]);
468 var lk = Number(bereich.split('<td class="unit')[6].split('">')[1].split("</td>")[0]);
469 var bb = Number(bereich.split('<td class="unit')[7].split('">')[1].split("</td>")[0]);
470 var sk = Number(bereich.split('<td class="unit')[8].split('">')[1].split("</td>")[0]);
471 var ra = Number(bereich.split('<td class="unit')[9].split('">')[1].split("</td>")[0]);
472 var ka = Number(bereich.split('<td class="unit')[10].split('">')[1].split("</td>")[0]);
473 var pa = 0;
474 var ag = Number(bereich.split('<td class="unit')[11].split('">')[1].split("</td>")[0]);
475 } else if (!bogen && paladin) {
476 var bo = 0;
477 var spy = Number(bereich.split('<td class="unit')[4].split('">')[1].split("</td>")[0]);
478 var lk = Number(bereich.split('<td class="unit')[5].split('">')[1].split("</td>")[0]);
479 var bb = 0;
480 var sk = Number(bereich.split('<td class="unit')[6].split('">')[1].split("</td>")[0]);
481 var ra = Number(bereich.split('<td class="unit')[7].split('">')[1].split("</td>")[0]);
482 var ka = Number(bereich.split('<td class="unit')[8].split('">')[1].split("</td>")[0]);
483 var pa = Number(bereich.split('<td class="unit')[9].split('">')[1].split("</td>")[0]);
484 var ag = Number(bereich.split('<td class="unit')[10].split('">')[1].split("</td>")[0]);
485 } else {
486 var bo = 0;
487 var spy = Number(bereich.split('<td class="unit')[4].split('">')[1].split("</td>")[0]);
488 var lk = Number(bereich.split('<td class="unit')[5].split('">')[1].split("</td>")[0]);
489 var bb = 0;
490 var sk = Number(bereich.split('<td class="unit')[6].split('">')[1].split("</td>")[0]);
491 var ra = Number(bereich.split('<td class="unit')[7].split('">')[1].split("</td>")[0]);
492 var ka = Number(bereich.split('<td class="unit')[8].split('">')[1].split("</td>")[0]);
493 var pa = 0;
494 var ag = Number(bereich.split('<td class="unit')[9].split('">')[1].split("</td>")[0]);
495 }
496 var villageid = bereich.split('<td><a href="/game.php?village=')[1].split("&")[0];
497
498 document.getElementsByTagName('body')[0].innerHTML = document.getElementsByTagName('body')[0].innerHTML.replace('<a href="/game.php?village=' + villageid + '&screen=place&mode=units">Truppen</a>'
499 , '<a href="/game.php?village=' + villageid + '&screen=place&mode=units">Truppen (' + String(deffanzahl(sp, sw, ax, bo, spy, lk, bb, sk, ra, ka, pa, ag)) + ' Deffs)</a>');
500 }
501 break;
502 /*
503 *
504 * Uebersicht->Truppen->Unterstuetzungen
505 *
506 */
507 case 'units&type=away_detail':
508 //Infos auslesen & Arrays erzeugen
509 var spieler = new Array();
510 var gesamt = new Array();
511 var spielernr = new Array();
512 spielernr[0] = new Array();
513 spielernr[1] = new Array();
514
515 //Liest die Unterstuetzungstruppen aus und schreibt Werte in die Arrays
516 function zusammenrechnen(i, row) {
517 //a oder b Zeile
518 var rownr = (row == 'row_a') ? 0: 1;
519 //Name des Unterstuetzenden Spielers
520 try {
521 if(navigator.userAgent.indexOf('Firefox') < 0){
522 var name = '<a href="' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].href + '">' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].innerHTML + '</a>';
523 var nameklartext = table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].innerHTML;
524 }else{
525 var name = '<a href="' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].href + '">' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].innerHTML + '</a>';
526 var nameklartext = table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].innerHTML;
527 }
528 } catch(e) {
529 name = '<a href="/game.php?screen=info_player&id=' + spielerid + '">' + spielername + '</a>';
530 nameklartext = spielername;
531 }
532 //Prueft ob und an welcher Stelle der Spieler im Array gespeichert ist bzw schreibt ihn rein
533 for (a = 0; a <= spieler.length; a++) {
534 switch (a) {
535 case spieler.length:
536 if (spielernr[rownr][i] == null) {
537 spieler[a] = new Array();
538 spieler[a][0] = name;
539 spielernr[rownr][i] = a;
540 }
541 break;
542
543 default:
544 if (spieler[a][0] == name && spielernr[rownr][i] == null) {
545 spielernr[rownr][i] = a;
546 }
547 break;
548
549 }
550
551 }
552 spieler[spielernr[rownr][i]][42] = nameklartext;
553 table.getElementsByClassName(row)[i].getElementsByTagName('input')[0].src = nameklartext;
554
555 //Truppen auslesen, in Spieler- und Gesamtarray speichern
556 var b = (bogen) ? 13: 11;
557 for (zelle = 2; zelle <= b; zelle++) {
558 try {
559 spieler[spielernr[rownr][i]][zelle] = (spieler[spielernr[rownr][i]][zelle] == null) ? Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle - 1].innerHTML) : Number(spieler[spielernr[rownr][i]][zelle]) + Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle - 1].innerHTML);
560 gesamt[zelle] = (gesamt[zelle] == null) ? Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle - 1].innerHTML) : gesamt[zelle] + Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle - 1].innerHTML);
561 } catch(e) {}
562 }
563
564 //Unterstuetzungszahl erhoehen
565 spieler[spielernr[rownr][i]][1] = (spieler[spielernr[rownr][i]][1] == null) ? 1: spieler[spielernr[rownr][i]][1] + 1;
566 gesamt[1] = (gesamt[1] == null) ? 1: gesamt[1] + 1;
567 }
568
569 //Funktion fuer a- und b-Zeilen ausfuehren
570 for (i = 0; i < table.getElementsByClassName('row_a').length; i++) {
571 zusammenrechnen(i, 'row_a');
572 }
573 for (i = 0; i < table.getElementsByClassName('row_b').length; i++) {
574 zusammenrechnen(i, 'row_b');
575 }
576
577 //Zaehlen, in wievielen Doerfern Unterstuetzungen stehen
578 var gedefftedoerfer = 0;
579 for (i = 0; i < document.getElementById('units_table').getElementsByClassName('row_a').length; i++) {
580 if (document.getElementById('units_table').getElementsByClassName('row_a')[i].previousSibling.previousSibling.className == ' units_away') {
581 gedefftedoerfer++;
582 }
583 }
584 for (i = 0; i < document.getElementById('units_table').getElementsByClassName('row_b').length; i++) {
585 if (document.getElementById('units_table').getElementsByClassName('row_b')[i].previousSibling.previousSibling.className == ' units_away') {
586 gedefftedoerfer++;
587 }
588 }
589
590 //Tabelle erzeugen
591 var div = document.getElementById("paged_view_content");
592 var stat = createElement('table', {
593 id: 'Statistik',
594 style: 'width:100%'
595 });
596 var div2 = createElement('div', {
597 style: 'width:100%;display:none',
598 id: 'exportbereich',
599 rows: '10'
600 }, '<br><b>Tabelle in BB-Code (für Forum etc.):</b><br><textarea style="width:100%" id="Exportfeld" rows="10"></textarea>');
601 //Behebt den Fehler, dass nichts angezeigt wird, wenn man in einer einzelnen Gruppe Doerfer filtert (leere Eintraege ausblendet)
602 try {
603 div.insertBefore(stat, document.forms[document.forms.length - 2]);
604 div.insertBefore(div2, document.forms[document.forms.length - 2]);
605 } catch(e) {
606 div.insertBefore(stat, document.forms[document.forms.length - 1]);
607 div.insertBefore(div2, document.forms[document.forms.length - 1]);
608 }
609 //Einheiten je nach Welttyp
610 units = new Array('spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult', 'knight', 'snob');
611 if (bogen)
612 units = new Array('spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult', 'knight', 'snob');
613
614 thead = createElement('thead', {});
615 tr = createElement('tr', {});
616 th = createElement('th', {
617 style: 'text-align:center',
618 colspan: '2'
619 }, 'Spieler [<a id="exportieren">Export</a>]');
620 tr.appendChild(th);
621 th = createElement('th', {
622 style: 'text-align:center'
623 });
624 img = createElement('img', {
625 src: image_base + '/command/support.png'
626 });
627 th.appendChild(img);
628 tr.appendChild(th);
629 th = createElement('th', {
630 style: 'text-align:center'
631 });
632 var a = createElement('a', {
633 href: '/game.php?village=' + villageid + '&screen=settings'
634 }, 'Deffs');
635 th.appendChild(a);
636 tr.appendChild(th);
637 for (i = 0; i < units.length; i++) {
638 units[i] = image_base + '/unit/unit_' + units[i] + '.png';
639 }
640 for (i = 0; i < units.length; i++) {
641 th = createElement('th', {
642 style: 'text-align:center'
643 });
644 img = createElement('img', {
645 src: units[i]
646 });
647 th.appendChild(img);
648 tr.appendChild(th);
649 }
650 thead.appendChild(tr);
651
652 document.getElementById('Statistik').appendChild(thead);
653 //Statistiken ueber einzelne Spieler einfuegen
654 for (i = 0; i < spieler.length; i++) {
655 var deffzahl = (bogen)
656 ? deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], spieler[i][5], spieler[i][6], spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11], spieler[i][12], spieler[i][13])
657 : deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], 0, spieler[i][5], spieler[i][6], 0, spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11]);
658 tr = createElement('tr', {});
659 td = createElement('td', {
660 style: 'text-align:center'
661 }, '<input type="checkbox" name="indenstats" alt="' + spieler[i][42] + '">');
662 tr.appendChild(td);
663
664 td = createElement('td', {
665 style: 'text-align:center'
666 }, spieler[i][0])
667 tr.appendChild(td);
668 td = createElement('td', {
669 style: 'text-align:center'
670 }, spieler[i][1])
671 tr.appendChild(td);
672 td = createElement('td', {
673 style: 'text-align:center'
674 }, deffzahl)
675 tr.appendChild(td);
676 b = (bogen) ? 13: 11;
677 for (a = 2; a <= b; a++) {
678 td = createElement('td', {
679 style: 'text-align:center'
680 }, spieler[i][a])
681 tr.appendChild(td);
682 }
683 document.getElementById('Statistik').appendChild(tr);
684 }
685
686 //Gesamtwerte einfuegen
687 tr = createElement('tr', {});
688 th = createElement('th', {
689 style: 'text-align:center',
690 colspan: '2'
691 }, '<strong>Gesamt (' + spieler.length + ')</strong>')
692 tr.appendChild(th);
693 gedefftedoerfer = (navigator.userAgent.indexOf('Firefox') > 0) ? gedefftedoerfer + 1: gedefftedoerfer
694 th = createElement('th', {
695 style: 'text-align:center'
696 }, gesamt[1] + ' in ' + gedefftedoerfer + ' Dörfern')
697 tr.appendChild(th);
698 if (bogen) {
699 th = createElement('th', {
700 style: 'text-align:center'
701 }, deffanzahl(gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12], gesamt[13]))
702 tr.appendChild(th);
703 } else {
704 th = createElement('th', {
705 style: 'text-align:center'
706 }, deffanzahl(gesamt[2], gesamt[3], gesamt[4], 0, gesamt[5], gesamt[6], 0, gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11]))
707 tr.appendChild(th);
708 }
709 b = (bogen) ? 13: 11;
710 for (a = 2; a <= b; a++) {
711 th = createElement('th', {
712 style: 'text-align:center'
713 }, gesamt[a])
714 tr.appendChild(th);
715 }
716 document.getElementById('Statistik').appendChild(tr);
717
718 //Beim Klick auf den Export-"Button"
719 document.getElementById('exportieren').addEventListener('click', function exporten() {
720 //Tabellenkopf
721 var text = '[table][**]Spieler[||]Verteidigung[||]Deffs[||][unit]spear[/unit][||][unit]sword[/unit][||][unit]axe[/unit][||]';
722 if (bogen)
723 text += '[unit]archer[/unit][||]';
724 text += '[unit]spy[/unit][||][unit]light[/unit][||]';
725 if (bogen)
726 text += '[unit]marcher[/unit][||]';
727 text += '[unit]heavy[/unit][||][unit]ram[/unit][||][unit]catapult[/unit][||]';
728 if (paladin)
729 text += '[unit]knight[/unit][||]';
730 text += '[unit]snob[/unit][/**]';
731 //Pro Spieler den Namen, die unterstuetzten Truppen, Deffzahlen etc einfuegen
732 for (i = 0; i < spieler.length; i++) {
733 deffzahl = (bogen)
734 ? deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], spieler[i][5], spieler[i][6], spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11], spieler[i][12], spieler[i][13])
735 : deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], 0, spieler[i][5], spieler[i][6], 0, spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11]);
736
737 var text1 = '[*][player]' + spieler[i][0].split('>')[1].split('<')[0] + '[/player][|]' + spieler[i][1] + '[|]' + deffzahl;
738 var b = (bogen) ? 13: 11;
739 for (a = 2; a <= b; a++) {
740
741 text1 += '[|]' + spieler[i][a];
742
743 }
744 text += text1 + '[/*]';
745 }
746 //Gesamtdeffzahl, Unterstuetzungen etc. einfuegen
747 deffzahl = (bogen)
748 ? deffanzahl(gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12], gesamt[13])
749 : deffanzahl(gesamt[2], gesamt[3], gesamt[4], 0, gesamt[5], gesamt[6], 0, gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11]);
750 text1 = '[**]Gesamt (' + spieler.length + ')[||]' + gesamt[1] + ' in ' + gedefftedoerfer + ' Doerfern[||]' + deffzahl;
751 b = (bogen) ? 13: 11;
752 for (a = 2; a <= b; a++) {
753 text1 += '[||]' + gesamt[a];
754 }
755
756 text += text1 + '[/**][/table]';
757 document.getElementById('exportbereich').style.display = '';
758 document.getElementById('Exportfeld').value = text;
759
760 }, false);
761
762 //Beim Checken einer Checkbox die zugehoerigen Checkboxen in den anderen Bereichen auch anhaken
763 var eventname = (navigator.userAgent.indexOf('Firefox') > 0) ? 'mouseup': 'click';
764 window.addEventListener(eventname, function(event) {
765 if (event.target.type == "checkbox") {
766 var rows = document.getElementById('units_table').getElementsByTagName('tr');
767 for (var i = 1; i < rows.length - 1; i++) {
768 try {
769 if (rows[i].getElementsByTagName('input')[0].src.split('/')[3] == event.target.alt && event.target.name == 'indenstats') {
770 rows[i].getElementsByTagName('input')[0].checked = event.target.checked;
771 }
772 } catch(e) {}
773 }
774 }
775 }, true);
776 /*
777 //Vielen Dank an xXNo M3rcyXx, fuer das Einverstaendnis zur Verwendung des Scriptes >Liste der unterstuetzten Doerfer in der Truppenuebersicht< als Vorlage
778 function trim(str, chars) {
779 return ltrim(rtrim(str, chars), chars);
780 }
781
782 function ltrim(str, chars) {
783 chars = chars || "s";
784 return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
785 }
786
787 function rtrim(str, chars) {
788 chars = chars || "s";
789 return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
790 }
791
792 //Gibt den Index des Arrays zurueck, an dem sich der gesuchte Spieler befindet
793 function findPlayer(array, name) {
794 for (i = 0; i < array.length; i++) {
795 try {
796 if (array[i][0] == name) {
797 return i;
798 break;
799 }
800 } catch(e) {
801 return null;
802 }
803 }
804 }
805
806 var villages = new Array(0);
807 var villages1 = new Array();
808 var defence = new Array(0);
809 var links = new Array(0);
810 var players = new Array();
811 var gesamt = new Array();
812 var b = (bogen) ? 12: 10
813 for (a = 0; a <= b; a++) {
814 gesamt[a] = 0;
815 }
816 var villagesTable = document.getElementById('units_table');
817
818 //Liest Infos ueber gedeffte Doerfer ein
819 function summarize() {
820 var rows = villagesTable.getElementsByTagName('tr');
821 for (var i = 1; i < rows.length - 1; i++) {
822 if (rows[i].lastChild.previousSibling.getElementsByTagName('a').length == 0) {
823 //Unterstuetztes Dorf
824 var village = rows[i].getElementsByTagName('span')[0].textContent;
825 var j = 0;
826 //Suche, ob das Dorf bereits in villages[] gespeichert ist
827 for (j = 0; j < villages.length; j++) {
828 if (villages[j] == village)
829 break;
830 }
831 try {
832 //Besitzer des Dorfes herausfinden und speichern
833 if (rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].innerHTML.length == 0) {
834 player = '<a href="' + rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[2].href + '">' + rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[2].innerHTML + '</a>';
835 rows[i].getElementsByTagName('span')[0].getElementsByTagName('input')[0].alt = rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[2].innerHTML;
836 } else {
837 player = '<a href="' + rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].href + '">' + rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].innerHTML + '</a>';
838 rows[i].getElementsByTagName('span')[0].getElementsByTagName('input')[0].alt = rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].innerHTML;
839 }
840 } catch(e) {
841 player = '<a href="/game.php?village=' + villageid + '&id=' + spielerid + '&screen=info_player">' + spielername + '</a>';
842 rows[i].getElementsByTagName('span')[0].getElementsByTagName('input')[0].alt = spielername;
843 }
844 //Index des Spielers in players[] definieren
845 var playernr = findPlayer(players, player);
846 //Wenn der Spieler noch nicht angelegt ist, das Array erzeugen
847 if (playernr == null) {
848 playernr = players.length;
849 players[playernr] = new Array();
850 players[playernr][0] = player;
851 for (var d = 0; d <= rows[0].getElementsByTagName('th').length - 3; d++) {
852 players[playernr][d + 1] = 0;
853 }
854 players[playernr]['anzahl'] = 0;
855 }
856 //Wenn das Dorf noch nicht in villages[] vorhanden ist, Dorf eintragen
857 if (j == villages.length) {
858 villages[j] = village;
859 villages1[j] = new Array();
860 villages1[j][j] = rows[i].getElementsByTagName('span')[0].innerHTML;
861 //Besitzername in Klartext zusammen mit dem Dorf speichern
862 try {
863 if (navigator.userAgent.indexOf('Firefox') > 0) {
864 var player1 = rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].innerHTML;
865 } else {
866 var player1 = rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[2].innerHTML;
867 }
868 } catch(e) {
869 var player1 = spielername;
870 }
871 villages1[j]['name'] = player1;
872 //Array fuer die Einheiten erstellen
873 defence[j] = new Array(0);
874 for (k = 0; k < rows[0].getElementsByTagName('th').length - 3; k++)
875 defence[j][k] = 0;
876 links[j] = rows[i].getElementsByTagName('a')[0];
877 //Anzahl an gedefften Doerfern je Spieler erhoehen
878 players[playernr][1] = players[playernr][1] + 1;
879 }
880 //Anzahl an gedefften Doerfern erhoehen
881 players[playernr]['anzahl'] = players[playernr]['anzahl'] + 1;
882
883 //Jede Einheit einer Unterstuertzung dem Dorfarray, Spielerarray und Gesamtarray hinzufuegen
884 cells = rows[i].getElementsByTagName('td');
885 gesamt[0] += 1;
886 for (var k = 1; k <= defence[j].length; k++) {
887 defence[j][k - 1] += parseInt(cells[k].textContent);
888 players[playernr][k + 1] += parseInt(cells[k].textContent);
889 gesamt[k] += parseInt(cells[k].textContent);
890 }
891
892 }
893 }
894 }
895
896 //Erzeugt die Tabelle und listet die einzelnen gedefften Doerfer auf
897 function display() {
898 //Einheitentabelle erstellen
899 var div = document.getElementById("paged_view_content");
900 var stat = createElement('table', {
901 id: 'Statistik',
902 style: 'width:100%'
903 });
904 var div2 = createElement('div', {
905 style: 'width:100%;display:none',
906 id: 'exportbereich',
907 rows: '10'
908 }, '<br><b>Tabelle in BB-Code (für Forum etc.):</b><br><textarea style="width:100%" id="Exportfeld" rows="10"></textarea>');
909
910 //Behebt den Fehler, dass nichts angezeigt wird, wenn man in einer einzelnen Gruppe Doerfer filtert (leere Eintraege ausblendet)
911 try {
912 div.insertBefore(stat, document.forms[document.forms.length - 2]);
913 div.insertBefore(div2, document.forms[document.forms.length - 2]);
914 } catch(e) {
915 div.insertBefore(stat, document.forms[document.forms.length - 1]);
916 div.insertBefore(div2, document.forms[document.forms.length - 1]);
917 }
918 //Einheiten je nach Welttyp
919 var units = new Array('spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult', 'knight', 'snob');
920 if (bogen)
921 units = new Array('spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult', 'knight', 'snob');
922 //Export-"Button"
923 var thead = createElement('thead', {});
924 var tr = createElement('tr', {});
925 var th = createElement('th', {
926 style: 'text-align:center',
927 colspan: '2'
928 }, 'Spieler [<a id="exportieren">Export</a>]');
929 tr.appendChild(th);
930 th = createElement('th', {
931 style: 'text-align:center'
932 });
933 var img = createElement('img', {
934 src: image_base + '/command/support.png'
935 });
936 th.appendChild(img);
937 tr.appendChild(th);
938 th = createElement('th', {
939 style: 'text-align:center'
940 });
941 var a = createElement('a', {
942 href: '/game.php?village=' + villageid + '&screen=settings'
943 }, 'Deffs');
944 th.appendChild(a);
945 tr.appendChild(th);
946 for (i = 0; i < units.length; i++) {
947 units[i] = image_base + '/unit/unit_' + units[i] + '.png';
948 }
949 for (i = 0; i < units.length; i++) {
950 th = createElement('th', {
951 style: 'text-align:center'
952 });
953 img = createElement('img', {
954 src: units[i]
955 });
956 th.appendChild(img);
957 tr.appendChild(th);
958 }
959 thead.appendChild(tr);
960
961 document.getElementById('Statistik').appendChild(thead);
962 //Statistiken ueber einzelne Spieler einfuegen
963 for (i = 0; i < players.length; i++) {
964 deffzahl = (bogen) ? deffanzahl(players[i][2], players[i][3], players[i][4], players[i][5], players[i][6], players[i][7], players[i][8], players[i][9], players[i][10], players[i][11], players[i][12], players[i][13]) : deffanzahl(players[i][2], players[i][3], players[i][5], 0, players[i][6], players[i][8], 0, players[i][9], players[i][10], players[i][11], players[i][12], players[i][13]);
965 tr = createElement('tr', {});
966 td = createElement('td', {
967 style: 'text-align:center'
968 }, '<input type="checkbox" name="indenstats" value="' + players[i][0].split('>')[1].split('<')[0] + '">');
969 tr.appendChild(td);
970 td = createElement('td', {
971 style: 'text-align:center'
972 }, players[i][0]);
973 tr.appendChild(td);
974 td = createElement('td', {
975 style: 'text-align:center'
976 }, players[i]['anzahl'] + ' in ' + players[i][1] + ' Dörfern');
977 tr.appendChild(td);
978 td = createElement('td', {
979 style: 'text-align:center'
980 }, deffzahl);
981 tr.appendChild(td);
982 var b = (bogen) ? 13: 11;
983 for (a = 2; a <= b; a++) {
984 td = createElement('td', {
985 style: 'text-align:center'
986 }, players[i][a])
987 tr.appendChild(td);
988 }
989 document.getElementById('Statistik').appendChild(tr);
990 }
991
992 //Gesamtwerte einfuegen
993 tr = createElement('tr', {});
994 th = createElement('th', {
995 style: 'text-align:center',
996 colspan: '2'
997 }, '<strong>Gesamt (' + players.length + ')</strong>')
998 tr.appendChild(th);
999 th = createElement('th', {
1000 style: 'text-align:center'
1001 }, gesamt[0] + ' in ' + villages.length + ' Dörfern')
1002 tr.appendChild(th);
1003 if (bogen) {
1004 th = createElement('th', {
1005 style: 'text-align:center'
1006 }, deffanzahl(gesamt[1], gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12]))
1007 tr.appendChild(th);
1008 } else {
1009 th = createElement('th', {
1010 style: 'text-align:center'
1011 }, deffanzahl(gesamt[1], gesamt[2], gesamt[3], 0, gesamt[4], gesamt[5], 0, gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10]))
1012 tr.appendChild(th);
1013 }
1014 b = (bogen) ? 13: 11;
1015 for (a = 1; a < b; a++) {
1016 th = createElement('th', {
1017 style: 'text-align:center'
1018 }, gesamt[a])
1019 tr.appendChild(th);
1020 }
1021 document.getElementById('Statistik').appendChild(tr);
1022
1023 //Bei Klick auf den Exportieren-"Button"
1024 document.getElementById('exportieren').addEventListener('click', function exporten() {
1025 //Tabellenkopf
1026 var text = '[table][**]Spieler[||]Unterstuetzungen[||]Deffs[||][unit]spear[/unit][||][unit]sword[/unit][||][unit]axe[/unit][||]';
1027
1028 if (bogen)
1029 text += '[unit]archer[/unit][||]';
1030 text += '[unit]spy[/unit][||][unit]light[/unit][||]';
1031 if (bogen)
1032 text += '[unit]marcher[/unit][||]';
1033 text += '[unit]heavy[/unit][||][unit]ram[/unit][||][unit]catapult[/unit][||]';
1034 if (paladin)
1035 text += '[unit]knight[/unit][||]';
1036 text += '[unit]snob[/unit][/**]';
1037 //Spieler und unterstuetzte Einheiten
1038 for (i = 0; i < players.length; i++) {
1039 deffzahl = (bogen) ? deffanzahl(players[i][2], players[i][3], players[i][4], players[i][5], players[i][6], players[i][7], players[i][8], players[i][9], players[i][10], players[i][11], players[i][12], players[i][13]) : deffanzahl(players[i][2], players[i][3], players[i][5], 0, players[i][6], players[i][8], 0, players[i][9], players[i][10], players[i][11], players[i][12], players[i][13]);
1040
1041 var text1 = '[*][player]' + players[i][0].split('>')[1].split('<')[0] + '[/player][|]' + players[i]['anzahl'] + ' in ' + players[i][1] + ' Doerfern' + '[|]' + deffzahl;
1042 var b = (bogen) ? 13: 11;
1043 for (a = 2; a <= b; a++) {
1044
1045 text1 += '[|]' + String(players[i][a]);
1046
1047 }
1048 text += text1 + '[/*]';
1049 }
1050 //Gesamte Unterstuetzung
1051 var deffzahl = (bogen) ? deffanzahl(gesamt[1], gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12]) : deffanzahl(gesamt[1], gesamt[2], gesamt[3], 0, gesamt[4], gesamt[5], 0, gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10]);
1052 text1 = '[**]Gesamt (' + players.length + ')[||]' + gesamt[0] + ' in ' + villages.length + ' Doerfern[||]' + deffzahl;
1053 b = (bogen) ? 13: 11;
1054 for (a = 1; a < b; a++) {
1055
1056 text1 += '[||]' + gesamt[a];
1057
1058 }
1059 //Einzelne gedeffte Doerfer mit Truppen
1060 text += text1 + '[/**][/table]' + '\r\n\r\nGedeffte Doerfer:\r\n';
1061 text += '[table][**]Dorf[||]Spieler[||][unit]spear[/unit][||][unit]sword[/unit][||][unit]axe[/unit][||]';
1062
1063 if (bogen)
1064 text += '[unit]archer[/unit][||]';
1065 text += '[unit]spy[/unit][||][unit]light[/unit][||]';
1066 if (bogen)
1067 text += '[unit]marcher[/unit][||]';
1068 text += '[unit]heavy[/unit][||][unit]ram[/unit][||][unit]catapult[/unit][||]';
1069 if (paladin)
1070 text += '[unit]knight[/unit][||]';
1071 text += '[unit]snob[/unit][||]Deffs[/**]';
1072 for (var i = 0; i < villages.length; i++) {
1073
1074 var newCell = document.createElement('td');
1075 if (villages1[i][i].split('<a')[1].split('(')[villages1[i][i].split('<a')[1].split('(').length - 1].split(')')[0].length == 0) {
1076 koord = villages1[i][i].split('<a')[1].split('(')[villages1[i][i].split('<a')[1].split('(').length - 2].split(')')[0];
1077 } else {
1078 koord = villages1[i][i].split('<a')[1].split('(')[villages1[i][i].split('<a')[1].split('(').length - 1].split(')')[0];
1079 }
1080 text += '[*][coord]' + koord + '[/coord][|][player]' + villages1[i]['name'] + '[/player]';
1081 for (var j = 0; j <= defence[i].length; j++) {
1082 switch (j) {
1083
1084 case defence[i].length:
1085
1086 if (storage.getValue('deffscript' + welt + '_bogen', true) && storage.getValue('deffscript' + welt + '_paladin', true)) {
1087
1088 text += '[|]' + deffanzahl(defence[i][0], defence[i][1], defence[i][2], defence[i][3], defence[i][4], defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9], defence[i][10], defence[i][11]);
1089 } else if (storage.getValue('deffscript' + welt + '_bogen', true) && !storage.getValue('deffscript' + welt + '_paladin', true)) {
1090 text += '[|]' + deffanzahl(defence[i][0], defence[i][1], defence[i][2], defence[i][3], defence[i][4], defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9], 0, defence[i][10]);
1091 } else if (!storage.getValue('deffscript' + welt + '_bogen', true) && storage.getValue('deffscript' + welt + '_paladin', true)) {
1092 text += '[|]' + deffanzahl(defence[i][0], defence[i][1], defence[i][2], 0, defence[i][3], defence[i][4], 0, defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9]);
1093 } else {
1094 text += '[|]' + deffanzahl(defence[i][0], defence[i][1], defence[i][2], 0, defence[i][3], defence[i][4], 0, defence[i][5], defence[i][6], defence[i][7], 0, defence[i][8]);
1095 }
1096
1097 break;
1098
1099 default:
1100 text += '[|]' + String(defence[i][j]);
1101 break;
1102 }
1103 }
1104 text += '[/*]';
1105
1106 }
1107 text += '[/table]';
1108
1109 document.getElementById('exportbereich').style.display = '';
1110 document.getElementById('Exportfeld').value = text;
1111
1112 }, false);
1113
1114 //Einzelne gedeffte Doerfer aufzaehlen
1115 var newTable = createElement('table', {
1116 class: 'vis',
1117 style: 'min-width:950px',
1118 id: 'einzeldoerfer'
1119 });
1120 var tables = document.getElementsByTagName('table');
1121 var headerRow = document.getElementById('units_table').getElementsByTagName('tr')[0].cloneNode(true);
1122 headerRow.id = 'headerRow';
1123 newTable.appendChild(headerRow);
1124 for (var i = 0; i < villages.length; i++) {
1125 var newRow = document.createElement('tr');
1126 var newCell = document.createElement('td');
1127 var checkBox = createElement('input', {
1128 type: 'checkbox',
1129 id: villages[i],
1130 });
1131 checkBox.alt = villages1[i]['name'];
1132 newCell.appendChild(checkBox);
1133 newCell.innerHTML += "<a href=" + links[i] + ">" + villages[i] + "</a>";
1134 newRow.appendChild(newCell);
1135
1136 //Truppen einer Einheit anzeigen
1137 for (var j = 0; j <= defence[i].length; j++) {
1138 switch (j) {
1139 //Deffzahl
1140 case defence[i].length:
1141 var troopCell = document.createElement('td');
1142 if (storage.getValue('deffscript' + welt + '_bogen', true) && storage.getValue('deffscript' + welt + '_paladin', true)) {
1143 troopCell.innerHTML = deffanzahl(defence[i][0], defence[i][1], defence[i][2], defence[i][3], defence[i][4], defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9], defence[i][10], defence[i][11]);
1144 } else if (storage.getValue('deffscript' + welt + '_bogen', true) && !storage.getValue('deffscript' + welt + '_paladin', true)) {
1145 troopCell.innerHTML = deffanzahl(defence[i][0], defence[i][1], defence[i][2], defence[i][3], defence[i][4], defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9], 0, defence[i][10]);
1146 } else if (!storage.getValue('deffscript' + welt + '_bogen', true) && storage.getValue('deffscript' + welt + '_paladin', true)) {
1147 troopCell.innerHTML = deffanzahl(defence[i][0], defence[i][1], defence[i][2], 0, defence[i][3], defence[i][4], 0, defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9]);
1148 } else {
1149 troopCell.innerHTML = deffanzahl(defence[i][0], defence[i][1], defence[i][2], 0, defence[i][3], defence[i][4], 0, defence[i][5], defence[i][6], defence[i][7], 0, defence[i][8]);
1150 }
1151 newRow.appendChild(troopCell);
1152 break;
1153 //Untertuetzung einer Einheit
1154 default:
1155 var troopCell = document.createElement('td');
1156 if (defence[i][j] == 0)
1157 troopCell.className = "hidden";
1158 troopCell.innerHTML = defence[i][j];
1159 newRow.appendChild(troopCell);
1160 break;
1161 }
1162 }
1163 newTable.appendChild(newRow);
1164 }
1165 //Beim Checken einer Checkbox, die passenden Doerfer und Unterstuetzungen auch checken
1166 div.insertBefore(newTable, document.forms[document.forms.length - 2]);
1167 var eventname = (navigator.userAgent.indexOf('Firefox') > 0) ? 'mouseup': 'click';
1168 window.addEventListener(eventname, function(event) {
1169 if (event.target.type == "checkbox") {
1170 //Beim Checken einer Checkbox aus der Doerferliste
1171 var rows = document.getElementsByTagName('tr');
1172 for (var i = 1; i < rows.length - 1; i++) {
1173 try {
1174 if ((rows[i].getElementsByTagName("td")[rows[i].getElementsByTagName('td').length - 1].textContent != "Wojska") && trim(rows[i].getElementsByTagName('span')[0].textContent) == event.target.id || rows[i].getElementsByTagName('span')[0].innerHTML.split('value="')[1].split('"')[0] == event.target.value && event.target.name == 'indenstats') {
1175 rows[i].getElementsByTagName("input")[0].checked = event.target.checked;
1176 }
1177 } catch(e) {}
1178 }
1179 //Beim Checken einer Checkbox aus der Spielertabelle
1180 var boxes = document.getElementById('einzeldoerfer').getElementsByTagName('input');
1181 if (event.target.name == 'indenstats') {
1182 for (i = 0; i < boxes.length; i++) {
1183 if (boxes[i].alt == event.target.value) {
1184 boxes[i].checked = event.target.checked;
1185 }
1186 }
1187 }
1188 }
1189 }, true);
1190 }
1191
1192 summarize();
1193 display();
1194
1195 //Hochkopierter Button, um Truppen zurueckzuziehen
1196 document.getElementById('headerRow').removeChild(document.getElementById('headerRow').getElementsByTagName('th')[1]);
1197 document.getElementById('headerRow').innerHTML = document.getElementById('headerRow').innerHTML.replace('Aktion', '<a href="/game.php?village=' + villageid + '&screen=settings">Deffs</a>'); (function() {
1198 var button = document.getElementsByName("submit_units_back")[0];
1199 var table = document.getElementById("units_table");
1200 var newButton = createElement('input', {
1201 type: 'submit',
1202 value: 'Zurueckziehen'
1203 });
1204 table.childNodes[1].childNodes[1].childNodes[1].appendChild(newButton);
1205 newButton.addEventListener("click", function() {
1206 button.click();
1207 }, false);
1208 })();
1209*/
1210 break;
1211 /*
1212 *
1213 * Uebersicht->Truppen->Verteidigung
1214 *
1215 */
1216 case 'units&type=support_detail':
1217 //Infos auslesen & Arrays erzeugen
1218 var spieler = new Array();
1219 var gesamt = new Array();
1220 var spielernr = new Array();
1221 spielernr[0] = new Array();
1222 spielernr[1] = new Array();
1223
1224 //Liest die Unterstuetzungstruppen aus und schreibt Werte in die Arrays
1225 function zusammenrechnen(i, row) {
1226 //a oder b Zeile
1227 var rownr = (row == 'row_a') ? 0: 1;
1228 //Name des Unterstuetzenden Spielers
1229 try {
1230 if(navigator.userAgent.indexOf('Firefox') < 0){
1231 var name = '<a href="' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].href + '">' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].innerHTML + '</a>';
1232 var nameklartext = table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].innerHTML;
1233 }else{
1234 var name = '<a href="' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].href + '">' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].innerHTML + '</a>';
1235 var nameklartext = table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].innerHTML;
1236 }
1237 } catch(e) {
1238 name = '<a href="/game.php?screen=info_player&id=' + spielerid + '">' + spielername + '</a>';
1239 nameklartext = spielername;
1240 }
1241 //Prueft ob und an welcher Stelle der Spieler im Array gespeichert ist bzw schreibt ihn rein
1242 for (a = 0; a <= spieler.length; a++) {
1243 switch (a) {
1244 case spieler.length:
1245 if (spielernr[rownr][i] == null) {
1246 spieler[a] = new Array();
1247 spieler[a][0] = name;
1248 spielernr[rownr][i] = a;
1249 }
1250 break;
1251
1252 default:
1253 if (spieler[a][0] == name && spielernr[rownr][i] == null) {
1254 spielernr[rownr][i] = a;
1255 }
1256 break;
1257
1258 }
1259
1260 }
1261 spieler[spielernr[rownr][i]][42] = nameklartext;
1262 table.getElementsByClassName(row)[i].getElementsByTagName('input')[0].src = nameklartext;
1263
1264 //Truppen auslesen, in Spieler- und Gesamtarray speichern
1265 var b = (bogen) ? 13: 11;
1266 for (zelle = 2; zelle <= b; zelle++) {
1267 try {
1268 spieler[spielernr[rownr][i]][zelle] =
1269 (spieler[spielernr[rownr][i]][zelle] == null)
1270 ? Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle].innerHTML)
1271 : Number(spieler[spielernr[rownr][i]][zelle]) + Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle].innerHTML);
1272 gesamt[zelle] =
1273 (gesamt[zelle] == null)
1274 ? Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle].innerHTML)
1275 : gesamt[zelle] + Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle].innerHTML);
1276 } catch(e) {}
1277 }
1278
1279 //Unterstuetzungszahl erhoehen
1280 spieler[spielernr[rownr][i]][1] = (spieler[spielernr[rownr][i]][1] == null) ? 1: spieler[spielernr[rownr][i]][1] + 1;
1281 gesamt[1] = (gesamt[1] == null) ? 1: gesamt[1] + 1;
1282 }
1283
1284 //Funktion fuer a- und b-Zeilen ausfuehren
1285 for (i = 0; i < table.getElementsByClassName('row_a').length; i++) {
1286 zusammenrechnen(i, 'row_a');
1287 }
1288 for (i = 0; i < table.getElementsByClassName('row_b').length; i++) {
1289 zusammenrechnen(i, 'row_b');
1290 }
1291
1292 //Zaehlen, in wievielen Doerfern Unterstuetzungen stehen
1293 var gedefftedoerfer = 0;
1294 for (i = 0; i < document.getElementById('units_table').getElementsByClassName('row_a').length; i++) {
1295 if (document.getElementById('units_table').getElementsByClassName('row_a')[i].previousSibling.previousSibling.className == ' units_away') {
1296 gedefftedoerfer++;
1297 }
1298 }
1299 for (i = 0; i < document.getElementById('units_table').getElementsByClassName('row_b').length; i++) {
1300 if (document.getElementById('units_table').getElementsByClassName('row_b')[i].previousSibling.previousSibling.className == ' units_away') {
1301 gedefftedoerfer++;
1302 }
1303 }
1304
1305 //Tabelle erzeugen
1306 var div = document.getElementById("paged_view_content");
1307 var stat = createElement('table', {
1308 id: 'Statistik',
1309 style: 'width:100%'
1310 });
1311 var div2 = createElement('div', {
1312 style: 'width:100%;display:none',
1313 id: 'exportbereich',
1314 rows: '10'
1315 }, '<br><b>Tabelle in BB-Code (für Forum etc.):</b><br><textarea style="width:100%" id="Exportfeld" rows="10"></textarea>');
1316 //Behebt den Fehler, dass nichts angezeigt wird, wenn man in einer einzelnen Gruppe Doerfer filtert (leere Eintraege ausblendet)
1317 try {
1318 div.insertBefore(stat, document.forms[document.forms.length - 2]);
1319 div.insertBefore(div2, document.forms[document.forms.length - 2]);
1320 } catch(e) {
1321 div.insertBefore(stat, document.forms[document.forms.length - 1]);
1322 div.insertBefore(div2, document.forms[document.forms.length - 1]);
1323 }
1324 //Einheiten je nach Welttyp
1325 units = new Array('spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult', 'knight', 'snob');
1326 if (bogen)
1327 units = new Array('spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult', 'knight', 'snob');
1328
1329 thead = createElement('thead', {});
1330 tr = createElement('tr', {});
1331 th = createElement('th', {
1332 style: 'text-align:center',
1333 colspan: '2'
1334 }, 'Spieler [<a id="exportieren">Export</a>]');
1335 tr.appendChild(th);
1336 th = createElement('th', {
1337 style: 'text-align:center'
1338 });
1339 img = createElement('img', {
1340 src: image_base + '/command/support.png'
1341 });
1342 th.appendChild(img);
1343 tr.appendChild(th);
1344 th = createElement('th', {
1345 style: 'text-align:center'
1346 });
1347 var a = createElement('a', {
1348 href: '/game.php?village=' + villageid + '&screen=settings'
1349 }, 'Deffs');
1350 th.appendChild(a);
1351 tr.appendChild(th);
1352 for (i = 0; i < units.length; i++) {
1353 units[i] = image_base + '/unit/unit_' + units[i] + '.png';
1354 }
1355 for (i = 0; i < units.length; i++) {
1356 th = createElement('th', {
1357 style: 'text-align:center'
1358 });
1359 img = createElement('img', {
1360 src: units[i]
1361 });
1362 th.appendChild(img);
1363 tr.appendChild(th);
1364 }
1365 thead.appendChild(tr);
1366
1367 document.getElementById('Statistik').appendChild(thead);
1368 //Statistiken ueber einzelne Spieler einfuegen
1369 for (i = 0; i < spieler.length; i++) {
1370 var deffzahl = (bogen) ? deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], spieler[i][5], spieler[i][6], spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11], spieler[i][12], spieler[i][13]) : deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], 0, spieler[i][5], spieler[i][6], 0, spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11]);
1371 tr = createElement('tr', {});
1372 td = createElement('td', {
1373 style: 'text-align:center'
1374 }, '<input type="checkbox" name="indenstats" alt="' + spieler[i][42] + '">');
1375 tr.appendChild(td);
1376
1377 td = createElement('td', {
1378 style: 'text-align:center'
1379 }, spieler[i][0])
1380 tr.appendChild(td);
1381 td = createElement('td', {
1382 style: 'text-align:center'
1383 }, spieler[i][1])
1384 tr.appendChild(td);
1385 td = createElement('td', {
1386 style: 'text-align:center'
1387 }, deffzahl)
1388 tr.appendChild(td);
1389 b = (bogen) ? 13: 11;
1390 for (a = 2; a <= b; a++) {
1391 td = createElement('td', {
1392 style: 'text-align:center'
1393 }, spieler[i][a])
1394 tr.appendChild(td);
1395 }
1396 document.getElementById('Statistik').appendChild(tr);
1397 }
1398
1399 //Gesamtwerte einfuegen
1400 tr = createElement('tr', {});
1401 th = createElement('th', {
1402 style: 'text-align:center',
1403 colspan: '2'
1404 }, '<strong>Gesamt (' + spieler.length + ')</strong>')
1405 tr.appendChild(th);
1406 gedefftedoerfer = (navigator.userAgent.indexOf('Firefox') > 0) ? gedefftedoerfer + 1: gedefftedoerfer
1407 th = createElement('th', {
1408 style: 'text-align:center'
1409 }, gesamt[1] + ' in ' + gedefftedoerfer + ' Dörfern')
1410 tr.appendChild(th);
1411 if (bogen) {
1412 th = createElement('th', {
1413 style: 'text-align:center'
1414 }, deffanzahl(gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12], gesamt[13]))
1415 tr.appendChild(th);
1416 } else {
1417 th = createElement('th', {
1418 style: 'text-align:center'
1419 }, deffanzahl(gesamt[2], gesamt[3], gesamt[4], 0, gesamt[5], gesamt[6], 0, gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11]))
1420 tr.appendChild(th);
1421 }
1422 b = (bogen) ? 13: 11;
1423 for (a = 2; a <= b; a++) {
1424 th = createElement('th', {
1425 style: 'text-align:center'
1426 }, gesamt[a])
1427 tr.appendChild(th);
1428 }
1429 document.getElementById('Statistik').appendChild(tr);
1430
1431 //Beim Klick auf den Export-"Button"
1432 document.getElementById('exportieren').addEventListener('click', function exporten() {
1433 //Tabellenkopf
1434 var text = '[table][**]Spieler[||]Verteidigung[||]Deffs[||][unit]spear[/unit][||][unit]sword[/unit][||][unit]axe[/unit][||]';
1435 if (bogen)
1436 text += '[unit]archer[/unit][||]';
1437 text += '[unit]spy[/unit][||][unit]light[/unit][||]';
1438 if (bogen)
1439 text += '[unit]marcher[/unit][||]';
1440 text += '[unit]heavy[/unit][||][unit]ram[/unit][||][unit]catapult[/unit][||]';
1441 if (paladin)
1442 text += '[unit]knight[/unit][||]';
1443 text += '[unit]snob[/unit][/**]';
1444 //Pro Spieler den Namen, die unterstuetzten Truppen, Deffzahlen etc einfuegen
1445 for (i = 0; i < spieler.length; i++) {
1446 deffzahl = (bogen)
1447 ? deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], spieler[i][5], spieler[i][6], spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11], spieler[i][12], spieler[i][13])
1448 : deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], 0, spieler[i][5], spieler[i][6], 0, spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11]);
1449
1450 var text1 = '[*][player]' + spieler[i][0].split('>')[1].split('<')[0] + '[/player][|]' + spieler[i][1] + '[|]' + deffzahl;
1451 var b = (bogen) ? 13: 11;
1452 for (a = 2; a <= b; a++) {
1453
1454 text1 += '[|]' + spieler[i][a];
1455
1456 }
1457 text += text1 + '[/*]';
1458 }
1459 //Gesamtdeffzahl, Unterstuetzungen etc. einfuegen
1460 deffzahl = (bogen)
1461 ? deffanzahl(gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12], gesamt[13])
1462 : deffanzahl(gesamt[2], gesamt[3], gesamt[4], 0, gesamt[5], gesamt[6], 0, gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11]);
1463 text1 = '[**]Gesamt (' + spieler.length + ')[||]' + gesamt[1] + ' in ' + gedefftedoerfer + ' Doerfern[||]' + deffzahl;
1464 b = (bogen) ? 13: 11;
1465 for (a = 2; a <= b; a++) {
1466 text1 += '[||]' + gesamt[a];
1467 }
1468
1469 text += text1 + '[/**][/table]qwer';
1470 document.getElementById('exportbereich').style.display = '';
1471 document.getElementById('Exportfeld').value = text;
1472
1473 }, false);
1474
1475 //Beim Checken einer Checkbox die zugehoerigen Checkboxen in den anderen Bereichen auch anhaken
1476 var eventname = (navigator.userAgent.indexOf('Firefox') > 0) ? 'mouseup': 'click';
1477 window.addEventListener(eventname, function(event) {
1478 if (event.target.type == "checkbox") {
1479 var rows = document.getElementById('units_table').getElementsByTagName('tr');
1480 for (var i = 1; i < rows.length - 1; i++) {
1481 try {
1482 if (rows[i].getElementsByTagName('input')[0].src.split('/')[3] == event.target.alt && event.target.name == 'indenstats') {
1483 rows[i].getElementsByTagName('input')[0].checked = event.target.checked;
1484 }
1485 } catch(e) {}
1486 }
1487 }
1488 }, true);
1489
1490 break;
1491 /*
1492 *
1493 * Versammlungsplatz->Truppen
1494 *
1495 */
1496 case 'units':
1497 var table = document.getElementById('units_home');
1498 var bereiche = new Array();
1499 bereiche[0] = new Array();
1500 bereiche[1] = new Array();
1501 bereiche[2] = new Array();
1502 villages = new Array();
1503
1504 //Deffzahlen auslesen
1505 function auslesen(a) {
1506 b = bereiche[a];
1507 if (bogen && paladin) {
1508 for (i = 1; i < 13; i++) {
1509 b[i] = Number(b[0][i].innerHTML);
1510 }
1511 return deffanzahl(b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12]);
1512 } else if (bogen && !paladin) {
1513 for (i = 1; i < 12; i++) {
1514 b[i] = Number(b[0][i].innerHTML);
1515 }
1516 return deffanzahl(b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], 0, b[11]);
1517 } else if (!bogen && paladin) {
1518 for (i = 1; i < 11; i++) {
1519 b[i] = Number(b[0][i].innerHTML);
1520 }
1521 return deffanzahl(b[1], b[2], b[3], 0, b[4], b[5], 0, b[6], b[7], b[8], b[9], b[10]);
1522 } else if (!bogen && !paladin) {
1523 for (i = 1; i < 10; i++) {
1524 b[i] = Number(b[0][i].innerHTML);
1525 }
1526 return deffanzahl(b[1], b[2], b[3], 0, b[4], b[5], 0, b[6], b[7], b[8], 0, b[9]);
1527 }
1528
1529 }
1530
1531 //Um die Herkunftsdoerfer nach Entfernung zu sortieren
1532 function sortieren() {
1533 if (villages.length > 3) {
1534 villages.sort(function(a, b) {
1535 return (villages[2]['distance'] > villages[3]['distance']) ? a.distance - b.distance: b.distance - a.distance
1536 });
1537 for (i = 2; i < villages.length; i++) {
1538 table.getElementsByTagName('tr')[i].innerHTML = villages[i - 2]['code'];
1539 }
1540 }
1541 }
1542 //Nur, wenn das Dorf wirklich unterstuetzt wird
1543 if (table.getElementsByTagName('tr').length > 3) {
1544
1545 bereiche[0][0] = table.getElementsByTagName('tr')[1].getElementsByTagName('td');
1546 //table.getElementsByTagName('tr')[1].getElementsByTagName('td')[0].innerHTML = 'Aus diesem Dorf (' + auslesen(0) + ' Deffs)';
1547 try {
1548 bereiche[1][0] = table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 2].getElementsByTagName('th');
1549 table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 2].getElementsByTagName('th')[0].innerHTML = '<input name="all" type="checkbox" class="selectAll" onclick="selectAll(this.form, this.checked)" /> Von außerhalb (' + auslesen(1) + ' Deffs)';
1550 } catch(e) {}
1551 bereiche[2][0] = table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 1].getElementsByTagName('th');
1552 table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 1].getElementsByTagName('th')[0].innerHTML = 'Insgesamt (' + auslesen(2) + ' Deffs)';
1553
1554 //Eigene Koordinaten fuer Entfernungsberechnung auslesen
1555 var ownx = document.getElementsByTagName('html')[0].innerHTML.split('"coord":"')[1].split('|')[0];
1556 var owny = document.getElementsByTagName('html')[0].innerHTML.split('"coord":"')[1].split('|')[1].split('"')[0];
1557
1558 //Fuer jede Zeile zusaetzliche Zellen einfuegen
1559 for (i = 0; i < table.getElementsByTagName('tr').length - 1; i++) {
1560 switch (i) {
1561 case 0:
1562 var th = createElement('th', {}, '<a>Entfernung</a>');
1563 th.addEventListener('click', sortieren, false);
1564 //table.getElementsByTagName('tr')[0].insertBefore(th, table.getElementsByTagName('tr')[0].getElementsByTagName('th')[1]);
1565 break;
1566 case 1:
1567 var td = createElement('td', {
1568 style: 'text-align:center',
1569 class: 'unit-item hidden'
1570 }, '0');
1571 //table.getElementsByTagName('tr')[1].insertBefore(td, table.getElementsByTagName('tr')[1].getElementsByTagName('td')[1]);
1572 break;
1573 default:
1574 try {
1575 /*
1576 table.getElementsByTagName('tr')[i].getElementsByTagName('td')[0].style = 'min-width:250px';
1577 var x = table.getElementsByTagName('tr')[i].getElementsByTagName('td')[0].innerHTML.split('(')[1].split('|')[0];
1578 var y = table.getElementsByTagName('tr')[i].getElementsByTagName('td')[0].innerHTML.split('|')[1].split(')')[0];
1579 var td = createElement('td', {
1580 style: 'text-align:center',
1581 class: 'unit-item hidden'
1582 }, village_distance(ownx, x, owny, y));
1583 table.getElementsByTagName('tr')[i].insertBefore(td, table.getElementsByTagName('tr')[i].getElementsByTagName('td')[1]);
1584 villages[i] = {};
1585 villages[i]['distance'] = village_distance(ownx, x, owny, y);
1586 villages[i]['code'] = table.getElementsByTagName('tr')[i].innerHTML;
1587 */
1588 } catch(e) {}
1589 break;
1590 }
1591 }
1592 //var th = document.createElement('th');
1593 //table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 1].insertBefore(th, table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 1].getElementsByTagName('th')[1]);
1594 //var th = document.createElement('th');
1595 //table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 2].insertBefore(th, table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 2].getElementsByTagName('th')[1]);
1596 }
1597 break;
1598 /*
1599 *
1600 * Dorfansicht
1601 *
1602 */
1603 case 'overview':
1604
1605 //Truppen auslesen
1606 var bereich = document.getElementsByTagName('body')[0].innerHTML.split('<div id="show_units" class="vis moveable widget">')[1].split('<td><a href="')[0];
1607
1608 var sp = (bereich.indexOf('unit_spear.png?') < 0) ? 0: Number(bereich.split('unit_spear.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1609 var sw = (bereich.indexOf('unit_sword.png?') < 0) ? 0: Number(bereich.split('unit_sword.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1610 var ax = (bereich.indexOf('unit_axe.png?') < 0) ? 0: Number(bereich.split('unit_axe.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1611 var bo = (bereich.indexOf('unit_archer.png?') < 0) ? 0: Number(bereich.split('unit_archer.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1612 var spy = (bereich.indexOf('unit_spy.png?') < 0) ? 0: Number(bereich.split('unit_spy.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1613 var lk = (bereich.indexOf('unit_light.png?') < 0) ? 0: Number(bereich.split('unit_light.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1614 var bb = (bereich.indexOf('unit_marcher.png?') < 0) ? 0: Number(bereich.split('unit_marcher.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1615 var sk = (bereich.indexOf('unit_heavy.png?') < 0) ? 0: Number(bereich.split('unit_heavy.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1616 var ra = (bereich.indexOf('unit_ram.png?') < 0) ? 0: Number(bereich.split('unit_ram.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1617 var ka = (bereich.indexOf('unit_catapult.png?') < 0) ? 0: Number(bereich.split('unit_catapult.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1618 var pa = (bereich.indexOf('unit_knight.png?') < 0) ? 0: Number(bereich.split('unit_knight.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1619 var ag = (bereich.indexOf('unit_snob.png?') < 0) ? 0: Number(bereich.split('unit_snob.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1620 //Deffanzahl berechnen und einfuegen
1621 document.getElementById('show_units').getElementsByTagName('h4')[0].innerHTML = '<img style="float: right; cursor: pointer;" onclick="return VillageOverview.toggleWidget( \'show_units\', this );" src="graphic/minus.png" /> EinheitenXY (' + String(deffanzahl(sp, sw, ax, bo, spy, lk, bb, sk, ra, ka, pa, ag)) + ' Deffs)';
1622
1623 break;
1624
1625}