// ==UserScript==
// @include http://nl*.tribalwars.nl/game.php*
// @include http://nl*.tribalwars.nl/public_report/*
// @include http://zz*.tribalwars.net/game.php*
// @include http://zz*.tribalwars.net/public_report/*
// @name TBR map
// @version 3.2.25
// @namespace http://tbrmap.twscripters.wyk.nl/
// @description TBR Map v3.2.25 voor Tribalwars.nl / beta.tribalwars.net
// ==/UserScript==
/**
*
* TBR Map V3 Copyright (C) 2008, 2009, 2010 Mark Vink (info@markvink.nl), Joost Klootwijk (jk@twscripters.wyk.nl)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version. (See http://www.gnu.org/licenses/gpl.txt)
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* v3.1.3 Opera version
* v3.1.4 First public working v6.0 script
* v3.1.4.1 Modified for tribalwars v6.2, replacing xml+GM_set for game_data
* Firefox fox: use of innerHTML & unsageWindow.game_data
* v3.1.4.2 bugfix: legenda & vacation mode, preparation for localStorage
* v3.1.4.9 Added publicreports beta
* v3.1.4.9.2 Various bugfixes, initial lang support, error msg on map.
* Eenheden onbekend gefixed
* v3.1.4.9.3 First testing on beta, english version (v6.3)
* v3.1.4.9.4 New layout for village_info (notes inline)
* v3.1.4.9.5 New xmlRequest implementation
* v3.1.5 More state changes and synchronized Opera/Firefox version
* v3.1.5.1 Corrected for tw subversion 8575 6.3 new event in map)
* v3.1.5.2 Updated security check of onmessage function, fixing firefox & Opera v9
* v3.1.5.3 No tbr without tribe, no troopinfo for own villages (cleanup)
* v3.1.5.4 Added error for offline server, error placed on map
* v3.1.5.5 Removed notes from all villages
* v3.2.0.0 debug xhr reinstated
* v3.2.0.1 Update to API towards server, support for farmrule worlds, initial gathering of settings,
* bug fix for public reports, compatible trim for Opera <10.50, support for seconds in reports
* changed state to text (due to problems with some quickbar scripts)
* legend colors corrected
* v3.2.1.1 first support tw v7.0
* v3.2.1.2 compatible with sangu package, debugged for v7.0
* v3.2.1.3 injected version
* v3.2.1.4 more strict date selector, fixes some ad-related bugs
* v3.2.1.5 fixed map for x<100
* v3.2.1.6 support for map-dragging, fully ajax style
* v3.2.1.7 map fixed for tw v7.1,
* integrated notes into tw's premium village notes **PREMIUM ONLY**
* BB-codes for notes (no TW specific BB yet)
* Map enhancements: age of report, villagecount of troops, new reporthighlight
* Map info is cached local
* v3.2.1.8 Tijdelijke fix door Tuam (Spelversie 8.0)
* v3.2.1.9 grote kaart schuift weer mee met de kleine kaart (Tuam)
* v3.2.20 Bug fix voor tw-update van 29 oktober 2012 waardoor het opslaan niet meer werkte
* Bugfix voor opslag resources
* Debug mode voor Ongeldige Datum (o.a. als de berichtenhernoemer wordt gebruikt)
* v3.2.21 update jquery-jsonp van v2.1.4 naar 2.5.0 (ivm mogelijke fix 'error' bij opslaan)
* debugmode voor ongeldige datum uitgebreid
* v3.2.22 hersteld dorpsinfo voor non-premium spelers en voor spelers zonder stam
* v3.2.23 pass debug mode and clearcookie request to server
* v3.2.24 farmworld settings for nlc1
* v3.2.25 fix opslaan en verwijderen notities: melding 'Er is geen wereld aangegeven'
*/
if (location.href.match(/^http:\/\/((nl|zz|en).*\.tribalwars\.(nl|net)\/(game.php|public_report).*)/)) {
(function (f) {
var d = document,
s = d.createElement('script');
s.setAttribute('type', 'application/javascript');
s.textContent = '(' + f.toString() + ')()';
(d.head || d.documentElement || d.body).appendChild(s);
s.parentNode.removeChild(s)
})(function () {
/* default configuration, can be changed through UI. Clear storage to restore. */
var settings = {
"active": "07", // mask: 1=report, 2=villageinfo, 4=map, 8=mapdetail (unused)
"kleuren": ["#9900FF", "#FFFFFF", "#00FF00", "#FF7F50", "#FF0000", "#000000"], // (unused)
"legenda": [5, 40000, 100000, 200000, 400000, 9999999],
"legenda_farmrule": [0, 25, 50, 75, 100, 9999999], // percentage * max * 30; for farmrule worlds (unused)
"useStorage": true, // for local caching, do not use yet
"showAge": true, // show age of report with the thickness of the border
"maxAge": 30, // show reports older than maxAge using thin lines (days)
"showRecent": 0.2, // highlight the most recent reports (days)
"showCount": true, // show number of troops in village, divided by 20000
"showType": false, // show type of troops in village
"TypeList": 'AVZSE', // Letter to be used for, in order: {Attack, Defense, Heavy Cavalery, Scouts, Noble}
"showNotes": true // show notes on map
},
/* would be stored in cookie/localStorage */
config = {
"opslaan": "http://tbrmap.twmerge.nl/opslaan.php?",
"note": "http://tbrmap.twmerge.nl/note.php?",
"info": "http://tbrmap.twmerge.nl/info.php?",
"map": "http://tbrmap.twmerge.nl/map.php?",
"version": "3.2.25",
"farmrule": {
"nl5": 1200,
"nl10": 1800,
"nl16": 2500,
"nl24": 2500
} // used to calculate default legend
},
nohide = false,
debug = true,
txtDB = {
"nl": { /* textmessages, should be translated */
"err_no_attack": "Geen aanvals rapport",
"err_unknown_def": "Verdediger onbekend, mogelijk een conflict met een ander script (18)?",
/* NL specific, 18 refers to an allowed nl script */
"err_dump_own": "Dump op eigen dorp",
"err_my_village": "Aanval op eigen dorp",
"err_unknown_units": "Geen eenheden bekend!",
"err_noinfo": "TBRmap info niet beschikbaar",
"msg_prev_stored": "Al opgeslagen: %s op %s",
"info_saving": "opslaan...",
"err_no_gamedata": "No game_data available",
"err_nosave": "Er is een fout opgetreden, niet opgeslagen",
"err_offline": "TBR Map is tijdelijk niet beschikbaar",
"btn_edit": "Bewerken",
"btn_save": "Opslaan",
"btn_del": "Verwijderen",
/* debug messages */
"msg_settings": "Taal: %s\nStam: %s",
"msg_load": "TBRMap: ophalen...",
"msg_save": "Opslaan: ",
"report_save": "Rapport opslaan: Reportid=%s\tDatum=%s\tOnderwerp=%s\nAanvaller=%s\tVerdediger=%s\tDoel=%s\tAantal=%s\tVerliezen=%s",
"report_extras": " extras : Grondstoffen=%s\tBuit=%s\tToestemming=%s\nGebouwen=%s",
"hd_troopinfo": "Info over troepen",
/* Fields / regular expressions, must be adjusted to the server language */
"attrep_re": /( valt .* aan| verovert )/,
"subject": "Onderwerp",
"send_at": "Verzonden",
"attacker": "Aanvaller:",
"defender": "Verdediger:",
"target": "Doel:",
"troops": "Aantal:",
"losses": "Verliezen:",
"village_re": /^(Dorp)/,
"resources": "grondstoffen",
"buildings": "Gebouwen",
"haul": "Buit",
"loyalty": "Toestemming",
"player_map_re": /(.+)\s\([0-9.]+ punten\)/,
"tribe_map_re": /(.+)\s\([0-9.]+ punten\)/,
"expired": "Sessie afgelopen",
/* TBRmap server responses, used to translate by client */
"msg_nonote": "Geen notitie.",
"msg_no_troops_intel": "Geen info bekend.",
"msg_save_ok": "Opgeslagen!",
/* TBRmap related regular expressions - do not translate (see above for translation) */
"nonote_re": /Geen notitie./,
"noinfo_re": /Geen info bekend./,
"saveok_re": /Opgeslagen!/,
"offline_re": /(De website is tijdelijk offline|Not Found)/,
"error_re": /(Teveel requests|De website is tijdelijk offline|Uw huidige TBR Map versie.^versie!|timeout|error)/,
/* accepted standard errormessages */
/* misc */
"lang": "nederlands"
},
"zz": { /* textmessages */
"err_no_attack": "Not a report of an attack",
"err_unknown_def": "No defender found, possibly due to a conflicting script",
/* NL specific, 18 refers to an allowed nl script */
"err_dump_own": "Dump of troops at your own village",
"err_my_village": "Attack at your own village",
"err_unknown_units": "Unknown defending units!",
"err_noinfo": "TBRmap information not available",
"msg_prev_stored": "Already stored: %s at %s",
"info_saving": "saving...",
"err_no_gamedata": "No game_data available",
"err_nosave": "An error occured, report is not saved",
"err_offline": "TBR Map is temporarily unavailable",
"btn_edit": "Edit",
"btn_save": "Save",
"btn_del": "Remove",
/* debug messages */
"msg_settings": "Language: %s\nStam: %s",
"msg_load": "TBRMap: Loading...",
"msg_save": "Saving: ",
"report_save": "Srrt: Reportid=%s\tDatum=%s\tOnderwerp=%s\nAanvaller=%s\tVerdediger=%s\tDoel=%s\tAantal=%s\tVerliezen=%s",
"report_extras": " extras : Grondstoffen=%s\tBuit=%s\tToestemming=%s\nGebouwen=%s",
"hd_troopinfo": "Intelligence on troops",
/* Fields / regular expressions */
"attrep_re": /( attacks | conquers )/,
"subject": "Subject",
"send_at": "Sent",
"attacker": "Attacker:",
"defender": "Defender:",
"target": "Destination:",
"troops": "Quantity:",
"losses": "Losses:",
"village_re": /^(Village:)/,
"resources": "resources",
"buildings": "Buildings",
"haul": "Haul",
"loyalty": "Loyalty",
"player_map_re": /(.+)\s\([0-9.]+ Points\)/,
"tribe_map_re": /(.+)\s\([0-9.]+ Points\)/,
"expired": "Session expired",
/* TBRmap server responses, used to translate by client */
"msg_nonote": "No note.",
"msg_no_troops_intel": "No troops known",
"msg_save_ok": "Stored!",
/* TBRmap related regular expressions - do not translate (see above for translation) */
"nonote_re": /Geen notitie./,
"noinfo_re": /Geen info bekend./,
"saveok_re": /Opgeslagen!/,
"offline_re": /(De website is tijdelijk offline|Not Found)/,
"error_re": /(Teveel requests|De website is tijdelijk offline|Uw huidige TBR Map versie.^versie!)/,
/* accepted standard errormessages */
/* misc */
"lang": "english - beta"
}
};
txtDB.en = txtDB.zz; // copy from zz
txtDB.en.lang = "english";
// jquery.jsonp 2.4.0 (2012-08-21) (c) 2012 Julian Aubourg
// https://github.com/jaubourg/jquery-jsonp
(function(e){function t(){}function n(e){C=[e]}function r(e,t,n){return e&&e.apply(t.context||t,n)}function i(e){return/\?/.test(e)?"&":"?"}function O(c){function Y(e){if(!(z++)){W();j&&(T[I]={s:[e]});D&&(e=D.apply(c,[e]));r(O,c,[e,b,c]);r(_,c,[c,b])}}function Z(e){if(!(z++)){W();j&&e!=w&&(T[I]=e);r(M,c,[c,e]);r(_,c,[c,e])}}c=e.extend({},k,c);var O=c.success,M=c.error,_=c.complete,D=c.dataFilter,P=c.callbackParameter,H=c.callback,B=c.cache,j=c.pageCache,F=c.charset,I=c.url,q=c.data,R=c.timeout,U,z=0,W=t,X,V,J,K,Q,G;S&&S(function(e){e.done(O).fail(M);O=e.resolve;M=e.reject}).promise(c);c.abort=function(){!(z++)&&W()};if(r(c.beforeSend,c,[c])===!1||z){return c}I=I||u;q=q?typeof q=="string"?q:e.param(q,c.traditional):u;I+=q?i(I)+q:u;P&&(I+=i(I)+encodeURIComponent(P)+"=?");!B&&!j&&(I+=i(I)+"_"+(new Date).getTime()+"=");I=I.replace(/=\?(&|$)/,"="+H+"$1");if(j&&(U=T[I])){U.s?Y(U.s[0]):Z(U)}else{E[H]=n;K=e(y)[0];K.id=l+N++;if(F){K[o]=F}L&&L.version()<11.6?(Q=e(y)[0]).text="document.getElementById('"+K.id+"')."+p+"()":K[s]=s;if(A){K.htmlFor=K.id;K.event=h}K[d]=K[p]=K[v]=function(e){if(!K[m]||!/i/.test(K[m])){try{K[h]&&K[h]()}catch(t){}e=C;C=0;e?Y(e[0]):Z(a)}};K.src=I;W=function(e){G&&clearTimeout(G);K[v]=K[d]=K[p]=null;x[g](K);Q&&x[g](Q)};x[f](K,J=x.firstChild);Q&&x[f](Q,J);G=R>0&&setTimeout(function(){Z(w)},R)}return c}var s="async",o="charset",u="",a="error",f="insertBefore",l="_jqjsp",c="on",h=c+"click",p=c+a,d=c+"load",v=c+"readystatechange",m="readyState",g="removeChild",y="