WoTExtendedStat

Adds some usable fields for MMO game World of Tanks user's page

目前为 2014-07-13 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @author Elf__X
  3. // @name WoTExtendedStat
  4. // @namespace http://forum.worldoftanks.ru/index.php?/topic/717208-
  5. // @version 0.9.1.0
  6. // @description Adds some usable fields for MMO game World of Tanks user's page
  7. // @match http://challenge.worldoftanks.ru/uc/accounts/*
  8. // @match http://worldoftanks.com/uc/accounts/*
  9. // @match http://worldoftanks.ru/uc/accounts/*
  10. // @match http://worldoftanks.ru/community/accounts/*
  11. // @match http://worldoftanks.com/community/accounts/*
  12. // @match http://uc.worldoftanks.eu/uc/accounts/*
  13. // @match http://worldoftanks.eu/uc/accounts/*
  14. // @match http://worldoftanks.eu/community/accounts/*
  15. // @include http://challenge.worldoftanks.ru/uc/accounts/*
  16. // @include http://worldoftanks.com/uc/accounts/*
  17. // @include http://worldoftanks.ru/uc/accounts/*
  18. // @include http://worldoftanks.ru/community/accounts/*
  19. // @include http://worldoftanks.com/community/accounts/*
  20. // @include http://uc.worldoftanks.eu/uc/accounts/*
  21. // @include http://worldoftanks.eu/uc/accounts/*
  22. // @include http://worldoftanks.eu/community/accounts/*
  23. // ==/UserScript==
  24. var lang,
  25. scriptVersion = '0.9.1.0',
  26. tanksarr = [],
  27. gServ, api_key;
  28.  
  29. if (document.location.host.indexOf(".ru") !== -1) {
  30. api_key = "895d3dafdd87af03e1e515befcd83882";
  31. gServ = "ru";
  32. } else if (document.location.host.indexOf(".eu") !== -1) {
  33. api_key = "d0a293dc77667c9328783d489c8cef73";
  34. gServ = "eu";
  35. } else if (document.location.host.indexOf(".com") !== -1) {
  36. api_key = "16924c431c705523aae25b6f638c54dd";
  37. gServ = "com";
  38. }
  39.  
  40. var rangD = ['Виртуоз (>99%)', 'Мастер-танкист (>95%)',
  41. 'Танкист 1-го класса (>80%)', 'Танкист 2-го класса (>60%)',
  42. 'Танкист 3-го класса (>45%)', 'Оленевод 3-го класса (>30%)',
  43. 'Оленевод 2-го класса (>20%)', 'Оленевод 1-го класса (>10%)',
  44. 'Мастер-оленевод (>10%)'],
  45. rangDE = ['>99%', '>95%', '>80%', '>60%', '>45%', '>30%', '>20%',
  46. '>10%', '>10%'],
  47. rangA = ['cv', 'cm', 'c1', 'c2', 'c3', 'd3', 'd2', 'd1', 'dm'];
  48.  
  49. /* Requires _opera-xdr-engine.js to handle script-based requests in Opera*/
  50. var xdr = {
  51. reqId: 0,
  52. req: {},
  53. prepareUrl: function (url) {
  54. return url;
  55. },
  56. xget: function (url, onDone) {
  57. url = this.prepareUrl(url);
  58. if (window.opera && window.opera.defineMagicVariable) {
  59. this.scriptTransport(url, onDone);
  60. } else if (GM_xmlhttpRequest) {
  61. this.GMTransport(url, onDone);
  62. } else if (chrome && chrome.extension) {
  63. this.xhrTransport(url, onDone);
  64. } else {
  65. var currentReqId = this.reqId++;
  66. this.req[currentReqId].handleJSONP = onDone;
  67.  
  68. this.JSONPTransport(url, "xdr.req[" + currentReqId
  69. + "].handleJSONP");
  70. }
  71. },
  72. scriptTransport: function (url, onDone) {
  73. var t = document.createElement("script");
  74. t.src = url;
  75. t._callback = onDone;
  76. document.body.appendChild(t);
  77. },
  78. xhrTransport: function (url, onDone) {
  79. chrome.extension.sendRequest({'action': 'xget', 'url': url}, onDone);
  80. },
  81. GMTransport: function (url, onDone) {
  82. setTimeout(function () {
  83. GM_xmlhttpRequest({
  84. method: "GET",
  85. url: url,
  86. onload: function (x) {
  87. var o = x.responseText;
  88. if (onDone) {
  89. onDone(o);
  90. }
  91. }
  92. });
  93. }, 0);
  94.  
  95. },
  96. JSONPTransport: function (url, callbackName) {
  97. if (callbackName && typeof callbackName === "string") {
  98. url += "&callback=" + callbackName;
  99. }
  100. var t = document.createElement("script");
  101. t.src = url;
  102. document.body.appendChild(t);
  103. }
  104. };
  105.  
  106.  
  107. if (document.title.indexOf("Профиль игрока") > -1)
  108. lang = "ru";
  109. if (window.location.host.indexOf("worldoftanks") > -1
  110. && window.location.href.indexOf("accounts") > -1) {
  111. var scr = localStorage.getItem("flot");
  112. if (scr) {
  113. addScript(scr);
  114. } else {
  115. xdr.xget("http://www.flotcharts.org/flot/jquery.flot.js", addScript);
  116. }
  117. }
  118.  
  119. function addScript(response) {
  120. var script = document.createElement("script");
  121. script.type = "text/javascript";
  122. script.textContent = response;
  123. document.body.appendChild(script);
  124. if (!localStorage.getItem("flot"))
  125. localStorage.setItem("flot", response);
  126. var scr = localStorage.getItem("flot_time");
  127. if (scr) {
  128. addScript2(scr);
  129. } else {
  130. xdr.xget("http://www.flotcharts.org/flot/jquery.flot.time.js",
  131. addScript2);
  132. }
  133. }
  134.  
  135. function addScript2(response) {
  136. var script = document.createElement("script");
  137. script.type = "text/javascript";
  138. script.textContent = response;
  139. document.body.appendChild(script);
  140. if (!localStorage.getItem("flot_time"))
  141. localStorage.setItem("flot_time", response);
  142. main();
  143. }
  144.  
  145. function main() {
  146. var UserId = window.location.href.match(/\/(\d+)/)[1];
  147. var uskeys = [];
  148. for (var key in localStorage) {
  149. if (key.indexOf('daystat') !== -1) {
  150. var uskey = key.split('_')[1];
  151. if (uskeys.indexOf(uskey) === -1)
  152. uskeys.push(uskey);
  153. }
  154. }
  155. var d1 = document.createElement("div");
  156. d1.setAttribute('id', "dialog-overlay");
  157. document.body.appendChild(d1);
  158. var d2 = document.createElement("div");
  159. d2.setAttribute('id', "dialog-box");
  160. d2.setAttribute('style', "position: fixed; top: 40%; left: 40%; z-index: 100000;");
  161. d2.innerHTML = '<div class="dialog-content"><div id="dialog-message"></div><a href="#" class="button">Close</a></div>';
  162. document.body.appendChild(d2);
  163. var dtext =
  164. '<style>#dialog-overlay { /* set it to fill the whil screen */ width:100%; height:100%; /* transparency for different browsers */ filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: 0.5; background:#000; /* make sure it appear behind the dialog box but above everything else */ position:absolute; top:0; left:0; z-index:3000; /* hide it by default */ display:none;}#dialog-box { /* css3 drop shadow */ -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5); -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5); /* css3 border radius */ -moz-border-radius: 5px; -webkit-border-radius: 5px; background:#eee; /* styling of the dialog box, i have a fixed dimension for this demo */ width:328px; /* make sure it has the highest z-index */ position:absolute; z-index:5000; /* hide it by default */ display:none;}#dialog-box .dialog-content { /* style the content */ text-align:left; padding:10px; margin:13px; color:#666; font-family:arial; font-size:11px; }a.button { /* styles for button */ margin:10px auto 0 auto; text-align:center; background-color: #e33100; display: block; width:50px; padding: 5px 10px 6px; color: #fff; text-decoration: none; font-weight: bold; line-height: 1; /* css3 implementation :) */ -moz-border-radius: 5px; -webkit-border-radius: 5px; -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.5); -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5); text-shadow: 0 -1px 1px rgba(0,0,0,0.25); border-bottom: 1px solid rgba(0,0,0,0.25); position: relative; cursor: pointer; }a.button:hover { background-color: #c33100; }/* extra styling */#dialog-box .dialog-content p { font-weight:700; margin:0;}#dialog-box .dialog-content ul { margin:10px 0 10px 20px; padding:0; height:50px;} #us-set-table td{border: 1px dashed; text-align: center;' +
  165. ' padding: 3px;} #us-set-table{width: 100%;} #us-set-table ' +
  166. ' th{color: white;}</style>' +
  167. '<div id="us-settings-block" class="ui-dialog ui-draggable no-jquery-buttons" tabindex="-1" style="display:none; z-index: 1004; top: 10%; left: 30%; position: fixed;">' +
  168. '<div class="ui-dialog-titlebar ui-widget-header ui-corner-all" tabindex="-1"><span class="ui-dialog-title">' + (lang === "ru" ? "Настройки скрипта расширенной статистики" : "Extended statistic script settings ") + '</span>' +
  169. '<a href="#" class="ui-dialog-titlebar-close ui-corner-all us-close-settings" tabindex="-1"><span class="ui-icon ui-icon-closethick">close</span></a></div>' +
  170. '<div class="ui-dialog-content ui-widget-content" style="display: block; width: auto; height: auto;"><div class="js-dialog-content b-dialog-content"><div class="h-popup-content" style="background: rgb(31, 31, 31);">' +
  171. '<div style="border: 1px solid; border-radius: 10px; -webkit-border-radius: 10px; padding: 5px;"><h5 style="text-align: center; margin: 0; color: #f25322;">' + (lang === "ru" ? "Настройки блоков" : "Block settings") + '</h5><br><table id="us-set-table"><thead><tr><th width="60%">' + (lang === "ru" ? 'Блок' : 'Block') + '</th><th width="20%">' + (lang === "ru" ? 'Свернуть' : 'Collapse') + '</th><th width="20%">' + (lang === "ru" ? 'Удалить' : 'Remove') + '</th></tr></thead><tbody>' +
  172. '<tr class="us-set-block" btype="efRat"><td>' + (lang === "ru" ? 'Рейтинги эффективности' : 'Eff. ratings') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  173. '<tr class="us-set-block" btype="newBat"><td>' + (lang === "ru" ? 'Новые бои' : 'New battles') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  174. '<tr class="us-set-block" btype="plComp"><td>' + (lang === "ru" ? 'Сравнение игроков' : 'Players compare') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  175. '<tr class="us-set-block" btype="pers"><td>' + (lang === "ru" ? 'Личные данные' : 'Personal') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  176. '<tr class="us-set-block" btype="speed"><td>' + (lang === "ru" ? 'Спидометры' : 'speedometers') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  177. '<tr class="us-set-block" btype="achiev"><td>' + (lang === "ru" ? 'Достижения' : 'Achievements') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  178. '<tr class="us-set-block" btype="common"><td>' + (lang === "ru" ? 'Общее' : 'Common') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  179. '<tr class="us-set-block" btype="diagr"><td>' + (lang === "ru" ? 'Диаграммы' : 'diargams') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  180. '<tr class="us-set-block" btype="rat"><td>' + (lang === "ru" ? 'Рейтинги' : 'Ratings') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  181. '<tr class="us-set-block" btype="veh"><td>' + (lang === "ru" ? 'Техника' : 'Vehicles') + '</td><td><input type="checkbox"></td><td><input type="checkbox"></td></tr>' +
  182. '</tbody></table></div>' +
  183. '<div style="border: 1px solid; border-radius: 10px; -webkit-border-radius: 10px; padding: 5px; margin-top: 5px;"><h5 style="text-align: center; margin: 0; color: #f25322;">' + (lang === "ru" ? 'Графики' : 'Graphs') + '</h5><br>' +
  184. '<label for="all" style="padding-left: 20px;">' + (lang === "ru" ? 'Все' : 'All') + '</label><input type="radio" name="gtype" id="all" value="all" checked/>' +
  185. '<label for="date" style="padding-left: 20px;">' + (lang === "ru" ? 'Дата' : 'Date') + '</label><input type="radio" name="gtype" id="date" value="date" />' +
  186. '<label for="bat" style="padding-left: 20px;">' + (lang === "ru" ? 'Бои' : 'Battles') + '</label><input type="radio" name="gtype" id="bat" value="bat" />' +
  187. '<label for="no" style="padding-left: 20px;">' + (lang === "ru" ? 'Не отображать' : 'Dont show') + '</label><input type="radio" name="gtype" id="no" value="no" />' +
  188. '</div>' +
  189. '<div style="border: 1px solid; border-radius: 10px; -webkit-border-radius: 10px; padding: 5px; margin-top: 5px;max-height: 100px;overflow-y: auto;width: 98%;"><h5 style="text-align: center; margin: 0; color: #f25322;">' + 'Названия ссылок' + '</h5><br><table>';
  190. for (var i = 0; i < uskeys.length; i++) {
  191. dtext += '<tr id="ustr' + uskeys[i] + '"><td><label for="us' + uskeys[i] + '" style="padding-left: 20px;"><a href="http://worldoftanks.ru/community/accounts/' + uskeys[i] + '/">Игрок ' + uskeys[i] + '</a></label></td><td><input style="margin-left: 45px;width: 145%;" type="text" id="us' + uskeys[i] + '" uid="' + uskeys[i] + '" name="us' + uskeys[i] + '" class="us_st_name" value="Игрок ' + uskeys[i] + '" /></td></tr>';
  192. }
  193. dtext +=
  194. '</table></div>' +
  195. '<div style="border: 1px solid; border-radius: 10px; -webkit-border-radius: 10px; padding: 5px; margin-top: 5px;"><h5 style="text-align: center; margin: 0; color: #f25322;">' + (lang === "ru" ? 'Сравнение игроков' : 'Players compare') + '</h5><br><input type="checkbox" id="us-settings-compare">' + (lang === "ru" ? 'Сравнивать других игроков с "моими" данными' : 'Compare any players with "my" stat.') + '<br><br><div id="us-my-compare-block" style="display: none;">' + (lang === "ru" ? 'Адрес моей страницы' : 'Address of my page') + ': ' +
  196. '<input type="text" style="width: 100%;" id="us-settings-compare-page"><br><input type="checkbox" id="us-settings-current-page">' + (lang === "ru" ? 'Текущая страница' : 'Current page') + '</div></div>' +
  197. '</div><fieldset class="g-nopadding"><div class="b-popupbotton"><span class="b-button b-button__colored"><span class="b-button_right b-button-wrap"><input type="button" value="' + (lang === "ru" ? 'Сохранить' : 'Save') + '" tabindex="1003" id="us-settings-save">' +
  198. '</span></span><div class="b-cancel"><a href="#" class="us-close-settings" tabindex="1004">' + (lang === "ru" ? 'Отмена' : 'Cancel') + '</a></div></div></fieldset></div></div></div><div id="us-settings-overlay" class="ui-widget-overlay" style="display:none; width: 5000px; height: 20000px; min-height: 2000px; z-index: 1003;"></div>';
  199. var fake_div = document.createElement("div");
  200. fake_div.innerHTML = dtext;
  201. document.getElementsByClassName("b-portalmenu")[0].appendChild(fake_div);
  202. var avtemp = CalcAvgLev(tanksarr),
  203. AllAvgLev = avtemp[0], tnaSum = avtemp[1], expDmg = avtemp[2], expSpot = avtemp[3], expFrag = avtemp[4], expDef = avtemp[5], expWinRate = avtemp[6],
  204. wn8 = 0, own8 = 0,
  205. WGRating = GetBattleStat(1),
  206. OldWGRating = WGRating,
  207. AllWins = GetBattleStat(4),
  208. AllDamag = GetBattleStat(7),
  209. AllFrags = GetBattleStat(9),
  210. AllSpotted = GetBattleStat(10),
  211. AllCaps = GetBattleStat(6),
  212. AllDefs = GetBattleStat(8),
  213. AllXp = GetBattleStat(11),
  214. AllBattles = GetBattleStat(5),
  215. AllGold = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-gold")[0],
  216. AllCredit = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-credit")[0],
  217. AllExp = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-experience")[0],
  218. playerNick = document.getElementById("js-profile-name").innerHTML,
  219. daypassed = (new Date() - new Date(document.getElementsByClassName("js-date-format")[0].getAttribute("data-timestamp") * 1000)) / 1000 / 60 / 60 / 24,
  220. timeDiv = document.getElementsByClassName("b-profile-name")[0],
  221. dayArray = [],
  222. comparedayArray = [],
  223. blockArray = [],
  224. statTooltip = '',
  225. clanDiv = document.getElementsByClassName("b-profile-clan")[0],
  226. oxeff = 0,
  227. oxwn = 0;
  228. var rDAMAGE = AllDamag / expDmg,
  229. rSPOT = AllSpotted / expSpot,
  230. rFRAG = AllFrags / expFrag,
  231. rDEF = AllDefs / expDef,
  232. rWIN = AllWins / expWinRate,
  233. rWINc = Math.max(0, (rWIN - 0.71) / (1 - 0.71)),
  234. rDAMAGEc = Math.max(0, (rDAMAGE - 0.22) / (1 - 0.22)),
  235. rFRAGc = Math.max(0, Math.min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12))),
  236. rSPOTc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38))),
  237. rDEFc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10)));
  238. wn8 = 980 * rDAMAGEc + 210 * rDAMAGEc * rFRAGc + 155 * rFRAGc * rSPOTc + 75 * rDEFc * rFRAGc + 145 * Math.min(1.8, rWINc);
  239. setup_script(toFl);
  240. setup_script(WriteStat);
  241. setup_script(setCookie);
  242. setup_script(getCookie);
  243. setup_script(SetLSData);
  244. setup_script(GetLSData);
  245. setup_script(GetBattleStat);
  246. setup_script(WriteCompareStat);
  247. setup_script(CalcEffColor);
  248.  
  249. if (window.location.href.indexOf('#USCompareStat') !== -1)
  250. SaveCompareStatData();
  251.  
  252. var alltanks = GetLSData("AllTanksArr");
  253. if (alltanks) {
  254. xdr.xget("http://api." + document.location.host + "/wot/account/tanks/?application_id=" + api_key + "&account_id=" + UserId, fixStatData);
  255. } else {
  256. xdr.xget("http://api." + document.location.host + "/wot/encyclopedia/tanks/?application_id=" + api_key, saveTanksArr);
  257. }
  258.  
  259. document.getElementById("js-profile-name").setAttribute('style', "max-width: 100%;");
  260. var stats = document.getElementsByClassName("b-statistic_item");
  261. for (var i = 0; i < stats.length; i++)
  262. stats[i].setAttribute('style', "max-width: 100%;");
  263. document.getElementsByClassName("b-userblock-wrpr")[0].style.margin = '0';
  264.  
  265. if (!clanDiv) {
  266. clanDiv = document.getElementsByClassName("b-profile-noclan")[0];
  267. } else {
  268. document.getElementsByClassName("b-statistic_item")[0].setAttribute('style', "max-width: 100%;");
  269. }
  270. if (!clanDiv)
  271. clanDiv = timeDiv;
  272. clanDiv.setAttribute('style', "width: 50%; max-width: 100%;");
  273.  
  274. timeDiv.setAttribute('style', "width: 30%; max-width: 100%;");
  275. var fake_div = document.createElement("div");
  276. fake_div.innerHTML = "<p>" + (lang === "ru" ? "Версия <a href='http://forum.worldoftanks.ru/index.php?/topic/717208-'>скрипта</a> " : " <a href='http://forum.worldoftanks.ru/index.php?/topic/717208-'>Script</a> version ")
  277. + scriptVersion + " <br>"
  278. + "</p>"
  279. + "<p><a href='#' id='us-settings-a'>" + (lang === "ru" ? "Настройки скрипта" : "Script settings") + "</a></p>"
  280. + "<style>"
  281. + ".spoiler span.close,"
  282. + ".spoiler span.open{"
  283. + " padding-left:22px;"
  284. + " color: #F25322 !important;"
  285. + " border-bottom: 1px dashed #F25322;"
  286. + "}"
  287. + ".spoiler blockquote,"
  288. + ".spoiler{"
  289. + " padding:0.5em;"
  290. + " border-radius:15px;"
  291. + " -webkit-border-radius:15px;"
  292. + " -khtml-border-radius:15px;"
  293. + " -moz-border-radius:15px;"
  294. + " -o-border-radius:15px;"
  295. + " -ms-border-radius:15px;"
  296. + "}"
  297. + ".spoiler {"
  298. + " overflow-x:hidden;"
  299. + " overflow-y:hidden;"
  300. + " box-shadow: 0px 1px 8px #F2534A;"
  301. + " border:#f25322 solid 1px;"
  302. + " -webkit-box-shadow:0px 1px 8px #F2534A;"
  303. + " -khtml-box-shadow:0px 3px 8px #F2534A;"
  304. + " -moz-box-shadow:0px 1px 8px #F2534A;"
  305. + " -ms-box-shadow:0px 1px 8px #F2534A;"
  306. + "}"
  307. + ".spoiler blockquote {"
  308. + " margin-top:12px;"
  309. + " min-height: 23px;"
  310. + " border:#CDCDCD 2px dashed;"
  311. + "}"
  312. + " </style>"
  313. + '<div class="spoiler" style="border: #f25322 dashed 1px; margin-bottom: 10px;">'
  314. + ' <div class="box" style="text-align: center;"><a href="#" id="autor-pay" class="b-vertical-arrow"><span class="b-fake-link">' + (lang === "ru" ? 'Поддержать автора скрипта' : 'Please, give some money to support the author') + '</span></a><blockquote class="Untext" style="display:none">'
  315. + ' <span style="color: green;">WebMoney:</span><br>'
  316. + ' WMR: R135164502303<br>'
  317. + ' WMZ: Z127526962810<br>'
  318. + ' WME: E419926987074<br><br>'
  319. + ' <span style="color: green;">Yandex:</span><br>'
  320. + ' 41001870448136<br>'
  321. + ' </blockquote>'
  322. + (lang === "ru" ? '<blockquote class="Untext" style="display:none">'
  323. + ' <span style="color: green;">Рассказать друзьям:</span><br><br>'
  324. + ' <a onclick="window.open(\'http://vkontakte.ru/share.php?url=http://userscripts.org/scripts/show/169225&title=Расширенная статистика на сайте http://worldoftanks.ru&description=Скрипт добавляет расширенную статистику(рейтинги, статистика по сохраненным данным и т.д.) на сайт worldoftanks&image=http://wiki.worldoftanks.ru/uploads/thumb/3/30/Wot_logo_metal.png/223px-Wot_logo_metal.png\', \'vkontakte\', \'width=626, height=436\'); return false;" rel="nofollow" href="http://vkontakte.ru/share.php?url=http://userscripts.org/scripts/show/169225"><img src="http://vk.com/images/vk32.png" width="32" height="32" title="Поделиться с друзьями ВКонтакте"></a>'
  325. + '</blockquote>' : '')
  326. + "</div></div>";
  327. timeDiv.appendChild(fake_div);
  328.  
  329. var sVersion = getCookie("usScriptVer");
  330. if (!sVersion) xdr.xget("http://userscripts.org/scripts/show/169225", getNewScriptVersion); else if (sVersion !== scriptVersion) {
  331. var fake_div2 = document.createElement("div");
  332. fake_div2.setAttribute('style', "color: red;font-size: 7pt;padding: 5px;border-radius: 15px;border: 2px solid yellow;");
  333. fake_div2.innerHTML = "<strong>Вышла новая версия скрипта " + sVersion + ".<br>Пожалуйста, обновите скрипт.</strong>";
  334. timeDiv.appendChild(fake_div2);
  335. }
  336.  
  337. var server = document.location.host.match(/\.([^\.]+)$/)[1].toUpperCase();
  338. server = server === "COM" ? "NAm" : server;
  339. var fake_div = document.createElement("div");
  340. if (lang === "ru") {
  341. fake_div.innerHTML = "<p><a class='b-orange-arrow' href='http://worldofclans.ru/player/index.html?id=" + UserId + "'>История кланов</a></p>";
  342. } else {
  343. fake_div.innerHTML = "<p><a class='b-orange-arrow' href='http://td82.ru/wotka?nickname=" + playerNick + "&server=" + server + "'>"
  344. + ((lang === "ru") ? "История кланов" : "Clan history") + "</a></p>";
  345. }
  346. clanDiv.appendChild(fake_div);
  347.  
  348. if (!AllBattles || AllBattles < 100)
  349. return false;
  350.  
  351. var effres = CalcEff(0, AllAvgLev, AllBattles, AllWins, AllDamag, AllFrags, AllSpotted, AllCaps, AllDefs, AllXp);
  352.  
  353. var UsSettings = getCookie("usSettings"),
  354. settings = new Object();
  355.  
  356. if (UsSettings) {
  357. var setArr = UsSettings.split("|"),
  358. blSetArr = setArr[0].split("/");
  359. for (var i = 0; i < blSetArr.length; i++) {
  360. var bsVals = blSetArr[i].split(';');
  361. if (toFl(bsVals[1]) === 1)
  362. document.querySelector('[btype="' + bsVals[0] + '"]').cells[1].getElementsByTagName('input')[0].checked = true;
  363. if (toFl(bsVals[2]) === 1)
  364. document.querySelector('[btype="' + bsVals[0] + '"]').cells[2].getElementsByTagName('input')[0].checked = true;
  365. settings[bsVals[0]] = [bsVals[1], bsVals[2]];
  366. }
  367. bsVals = setArr[1].split(';');
  368. settings.compare = toFl(bsVals[0]);
  369. if (settings.compare === 1) {
  370. document.getElementById('us-settings-compare').checked = true;
  371. document.getElementById('us-my-compare-block').style.display = "block";
  372. }
  373. settings.compareAdr = bsVals[1];
  374. document.getElementById('us-settings-compare-page').value = settings.compareAdr;
  375. var suid = settings.compareAdr.match(/\/(\d+)/);
  376. settings.UserID = settings.compare && suid ? suid[1] : false;
  377. if (settings.UserID && document.getElementById("ustr" + settings.UserID))
  378. document.getElementById("ustr" + settings.UserID).style.display = "none";
  379. if (setArr.length > 2) {
  380. settings.gtype = setArr[2];
  381. } else {
  382. settings.gtype = "all";
  383. }
  384. if (setArr.length > 3) {
  385. var us_strs = setArr[3].split("/");
  386. for (i = 0; i < us_strs.length; i++) {
  387. var us_vals = us_strs[i].split(";");
  388. if (us_vals.length > 1 && document.getElementById('us' + us_vals[0])) {
  389. settings[us_vals[0]] = us_vals[1];
  390. document.getElementById('us' + us_vals[0]).value = us_vals[1];
  391. }
  392. }
  393. }
  394. document.getElementById(settings.gtype).click();
  395. }
  396.  
  397. daystat = GetStat();
  398.  
  399. if (daystat) {
  400. var dsArr = daystat.split("|"),
  401. strArray = dsArr[0].split("/"),
  402. str = strArray[0].split(";"),
  403. oldMedals = [],
  404. timeStat = new Date(str[0]),
  405. olddaypassed = (timeStat - new Date(document.getElementsByClassName("js-date-format")[0].getAttribute("data-timestamp") * 1000)) / 1000 / 60 / 60 / 24;
  406.  
  407. if (timeStat.toLocaleFormat)
  408. var oldTime = timeStat.toLocaleFormat("%d.%m.%Y %H:%M");
  409. else
  410. oldTime = timeStat.toLocaleString().substr(0, timeStat.toLocaleString().lastIndexOf(":"));
  411.  
  412. var statText = '<span style="font-weight: bold; color: white;">' + (lang === "ru" ? 'Статистика c ' + oldTime : 'Stat. from ' + oldTime) + '</span><br>';
  413. if (dsArr.length > 3) {OldWGRating = toFl(dsArr[3]);}
  414.  
  415. if (dsArr.length > 1) {
  416. var MedArr = dsArr[1].split("/");
  417. for (var i = 0; i < MedArr.length; i++) {
  418. var MedStr = MedArr[i].split(";");
  419. oldMedals[MedStr[0]] = toFl(MedStr[1]);
  420. }
  421. }
  422.  
  423. if (str.length > 3) {
  424. var OldBattles = toFl(str[12]),
  425. NewBattles = AllBattles - OldBattles,
  426. OldWins = toFl(str[10]),
  427. NewWins = AllWins - OldWins,
  428. OldXp = toFl(str[24]),
  429. NewXp = AllXp - OldXp,
  430. OldDamag = toFl(str[16]),
  431. NewDamag = AllDamag - OldDamag,
  432. OldFrags = toFl(str[20]),
  433. NewFrags = AllFrags - OldFrags,
  434. OldSpotted = toFl(str[22]),
  435. NewSpotted = AllSpotted - OldSpotted,
  436. OldCaps = toFl(str[14]),
  437. NewCaps = AllCaps - OldCaps,
  438. OldDefs = toFl(str[18]),
  439. NewDefs = AllDefs - OldDefs,
  440. OldGold = toFl(str[1]),
  441. OldCredit = toFl(str[2]),
  442. OldExp = toFl(str[3]);
  443. }
  444. if (AllGold) {
  445. var NewGold = toFl(AllGold.innerHTML) - OldGold;
  446. if (NewGold) {
  447. AllGold.innerHTML = AllGold.innerHTML + " (" + (NewGold > 0 ? "+" + NewGold : NewGold) + ")";
  448. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Золото: ' : 'Gold: ') + '</div><span class="currency-gold" style="float:right">' + (NewGold > 0 ? "+" + NewGold : NewGold) + "</span><br>";
  449. }
  450. }
  451. if (AllCredit) {
  452. var NewCredit = toFl(AllCredit.innerHTML) - OldCredit;
  453. if (NewCredit) {
  454. AllCredit.innerHTML = AllCredit.innerHTML + " (" + (NewCredit > 0 ? "+" + NewCredit : NewCredit) + ")";
  455. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Кредиты: ' : 'Credits: ') + '</div><span class="currency-credit" style="float:right">' + (NewCredit > 0 ? "+" + NewCredit : NewCredit) + "</span><br>";
  456. }
  457. }
  458. if (AllExp) {
  459. var NewExp = toFl(AllExp.innerHTML) - OldExp;
  460. if (NewExp) {
  461. AllExp.innerHTML = AllExp.innerHTML + " (" + (NewExp > 0 ? "+" + NewExp : NewExp) + ")";
  462. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Свободный опыт: ' : 'Free experience: ') + '</div><span class="currency-experience" style="float:right">' + (NewExp > 0 ? "+" + NewExp : NewExp) + "</span><br>";
  463. }
  464. }
  465. for (var i = 1; i < strArray.length; i++) {
  466. str = strArray[i].split(";");
  467. var tName = str[0].toLowerCase();
  468. dayArray[tName] = new Object();
  469. dayArray[tName].b = toFl(str[1]);
  470. dayArray[tName].w = str.length > 3 ? str[3] : -1;
  471. }
  472. var cav = CalcOldAvgLev(dayArray, tanksarr),
  473. OldAvgLev = cav[0],
  474. NewAvgLev = cav[1],
  475. OldtnaSum = cav[2],
  476. expDmg = cav[3], expSpot = cav[4], expFrag = cav[5], expDef = cav[6], expWinRate = cav[7],
  477. neffs = CalcEff(1, NewAvgLev, NewBattles, NewWins, NewDamag, NewFrags, NewSpotted, NewCaps, NewDefs, NewXp),
  478. oeffs = CalcEff(0, OldAvgLev, OldBattles, OldWins, OldDamag, OldFrags, OldSpotted, OldCaps, OldDefs, OldXp);
  479. var oPR = (500 * (OldWins / OldBattles) / 0.4856) + (1000 * OldDamag / (OldtnaSum * 0.975));
  480. var rDAMAGE = OldDamag / expDmg,
  481. rSPOT = OldSpotted / expSpot,
  482. rFRAG = OldFrags / expFrag,
  483. rDEF = OldDefs / expDef,
  484. rWIN = OldWins / expWinRate,
  485. rWINc = Math.max(0, (rWIN - 0.71) / (1 - 0.71)),
  486. rDAMAGEc = Math.max(0, (rDAMAGE - 0.22) / (1 - 0.22)),
  487. rFRAGc = Math.max(0, Math.min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12))),
  488. rSPOTc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38))),
  489. rDEFc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10)));
  490. own8 = 980 * rDAMAGEc + 210 * rDAMAGEc * rFRAGc + 155 * rFRAGc * rSPOTc + 75 * rDEFc * rFRAGc + 145 * Math.min(1.8, rWINc);
  491. var clearedFromPenalties1 = 1500,
  492. expectedMinBattles1 = 500,
  493. expectedMinAvgTier1 = 6,
  494. clearedFromPenalties2 = 1900,
  495. expectedMinBattles2 = 2000,
  496. expectedMinAvgTier2 = 7;
  497. if (oPR > clearedFromPenalties1)
  498. oPR = oPR - (oPR - clearedFromPenalties1) * Math.pow(Math.max(0, 1 - (OldAvgLev / expectedMinAvgTier1), 1 - (OldBattles / expectedMinBattles1)), 0.5);
  499. if (oPR > clearedFromPenalties2)
  500. oPR = oPR - (oPR - clearedFromPenalties2) * Math.pow(Math.max(0, 1 - (OldAvgLev / expectedMinAvgTier2), 1 - (OldBattles / expectedMinBattles2)), 0.5);
  501.  
  502. if (oPR >= 2180) {
  503. var oXPR = 100;
  504. } else {
  505. oXPR = Math.max(oPR * (oPR * (oPR * (-0.00000000008567 * oPR + 0.0000004071) - 0.000689) + 0.5677) - 183, oPR * (-0.0002002 * oPR + 0.8732) - 852.30);
  506. }
  507. if (effres[0] < 440)
  508. var oxeff = 0;
  509. else
  510. oxeff = Math.max(0, Math.min(100,
  511. effres[0]*(effres[0]*(effres[0]*(effres[0]*(effres[0]*(effres[0]*
  512. 0.00000000000000003388
  513. - 0.0000000000002469)
  514. + 0.00000000069335)
  515. - 0.00000095342)
  516. + 0.0006656)
  517. - 0.1485)
  518. - 0.85
  519. )).toFixed(2);
  520. if (effres[2] > 2300)
  521. var oxwn = 100;
  522. else
  523. oxwn = Math.max(0, Math.min(100,
  524. effres[2]*(effres[2]*(effres[2]*(effres[2]*(effres[2]*(effres[2]*
  525. 0.00000000000000000466
  526. - 0.000000000000032413)
  527. + 0.00000000007524)
  528. - 0.00000006516)
  529. + 0.00001307)
  530. + 0.05153)
  531. - 3.9
  532. )).toFixed(2);
  533. }
  534.  
  535. xdr.xget("http://api." + document.location.host + "/2.0/account/info/?application_id=" + api_key + "&account_id=" + UserId, batCompanyClan);
  536.  
  537. //<-Блок Новые бои
  538. if (NewBattles) {
  539. var NBtresulttable = document.getElementsByClassName("b-user-block")[0],
  540. NBmainDiv = document.createElement('div'),
  541. NBsDiv = document.createElement('div'),
  542. NBsDivH3 = document.createElement('h3'),
  543. NBMedalsA = document.createElement('div'),
  544. NBMedalsDiv = document.createElement("div"),
  545. NBMedalsDivUl = document.createElement("ul"),
  546. NBthDiv = document.createElement('div'),
  547. NBretbodytrtd1table = document.createElement('table'),
  548. NBretbodytrtd2table = document.createElement('table'),
  549. NBretbodytrtd3table = document.createElement('table'),
  550. NBretbodytrtd1tabletbody = document.createElement('tbody'),
  551. NBretbodytrtd2tabletbody = document.createElement('tbody'),
  552. NBretbodytrtd3tabletbody = document.createElement('tbody'),
  553. NBh31 = document.createElement('h3'),
  554. NBh32 = document.createElement('h3'),
  555. NBh33 = document.createElement('h3'),
  556. NBdiv1 = document.createElement('div'),
  557. NBdiv2 = document.createElement('div'),
  558. NBdiv3 = document.createElement('div'),
  559. spDiv1 = document.createElement('div'),
  560. spA1 = document.createElement('a'),
  561. spSp1 = document.createElement('span');
  562.  
  563. document.getElementsByClassName("b-userblock-wrpr")[0].insertBefore(NBmainDiv, NBtresulttable);
  564. NBmainDiv.className = "b-user-block";
  565. NBsDiv.className = "b-head-block";
  566. NBsDivH3.innerHTML = lang === "ru" ? "Новые бои" : "New battles";
  567. NBthDiv.setAttribute('class', "b-user-info clearfix");
  568.  
  569. NBh31.innerHTML = lang === "ru" ? "Новые" : "New";
  570. NBh32.innerHTML = lang === "ru" ? "Сохр. данные" : "Saved";
  571. NBh32.setAttribute('style', 'float: right;');
  572. NBh33.innerHTML = lang === "ru" ? "Тек. данные" : "Current";
  573. NBh33.setAttribute('style', 'float: right;');
  574.  
  575. NBretbodytrtd1table.setAttribute('class', 't-dotted');
  576. NBretbodytrtd1table.appendChild(NBretbodytrtd1tabletbody);
  577. NBretbodytrtd2table.setAttribute('class', 't-dotted');
  578. NBretbodytrtd2table.appendChild(NBretbodytrtd2tabletbody);
  579. NBretbodytrtd3table.setAttribute('class', 't-dotted');
  580. NBretbodytrtd3table.appendChild(NBretbodytrtd3tabletbody);
  581.  
  582. NBdiv1.setAttribute('style', 'float: left; width: 45%; margin-left: 25px;');
  583. NBdiv2.setAttribute('style', 'float: left; width: 24%;');
  584. NBdiv3.setAttribute('style', 'float: left; width: 24%;');
  585.  
  586. NBMedalsA.setAttribute('style', 'padding-left: 27px; padding-top: 10px;');
  587. NBMedalsDiv.setAttribute('style', 'padding-left: 20px; display: none;');
  588. NBMedalsA.innerHTML = '<a class="b-vertical-arrow us-show-medals" href="#"><span class="b-fake-link">' + (lang === "ru" ? "Медали" : "Medals") + '</span></a>';
  589.  
  590. NBdiv1.appendChild(NBh31);
  591. NBdiv1.appendChild(NBretbodytrtd1table);
  592. NBdiv2.appendChild(NBh32);
  593. NBdiv2.appendChild(NBretbodytrtd2table);
  594. NBdiv3.appendChild(NBh33);
  595. NBdiv3.appendChild(NBretbodytrtd3table);
  596. NBsDiv.appendChild(NBsDivH3);
  597. NBmainDiv.appendChild(NBsDiv);
  598. NBMedalsDiv.appendChild(NBMedalsDivUl);
  599. NBmainDiv.appendChild(NBMedalsA);
  600. NBmainDiv.appendChild(NBMedalsDiv);
  601. NBthDiv.appendChild(NBdiv1);
  602. NBthDiv.appendChild(NBdiv2);
  603. NBthDiv.appendChild(NBdiv3);
  604. NBmainDiv.appendChild(NBthDiv);
  605.  
  606. var hrIn = statTooltip.length === 0;
  607.  
  608. var medals = document.getElementsByClassName("js-full-achievements")[0].getElementsByClassName("b-achivements_item");
  609. for (i = 0; i < medals.length; i++) {
  610. if ((" " + medals[i].className + " ").replace(/[\n\t]/g, " ").indexOf(" b-achivements_item__empty ") === -1) {
  611. var count = medals[i].getElementsByTagName('div')[0];
  612. if (count) {
  613. count = count.getElementsByTagName('span')[0].getElementsByTagName('span')[0];
  614. if (count) {
  615. count = toFl(count.innerHTML);
  616. } else {
  617. count = 1;
  618. }
  619. } else {
  620. count = 1;
  621. }
  622. var oldMCount = oldMedals[medals[i].id.split("-")[2]];
  623. if (!oldMCount)
  624. oldMCount = 0;
  625. if (count !== oldMCount) {
  626. var node = medals[i].cloneNode(true),
  627. node2 = document.getElementById("js-achivement-" + medals[i].id.split("-")[2] + "_tooltip").cloneNode(true);
  628. node.className = "js-tooltip";
  629. node.id = "nb-achivement-" + medals[i].id.split("-")[2];
  630. node2.id = "nb-achivement-" + medals[i].id.split("-")[2] + "_tooltip";
  631. node.setAttribute("style", "float: left; margin: 27px 10px 0 0; position: relative;");
  632. if (count !== 1)
  633. node.getElementsByTagName('div')[0].getElementsByTagName('span')[0].getElementsByTagName('span')[0].innerHTML = (count - oldMCount);
  634. NBMedalsDivUl.appendChild(node);
  635. NBMedalsDivUl.appendChild(node2);
  636. if (!hrIn && statTooltip.length !== 0) {
  637. statTooltip += '<hr>';
  638. hrIn = true;
  639. }
  640. statTooltip += "<div style='float:left'>" + node2.getElementsByTagName('p')[0].innerHTML + ':</div><span style="float:right">+' + (count - oldMCount) + "</span><br>";
  641. }
  642. }
  643. }
  644.  
  645. hrIn = statTooltip.length === 0;
  646.  
  647. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? "Боев|Побед (%Побед)" : "Battles|Wins (%Wins):", (NewBattles) + "|" + (NewWins) + " (" + col(NewWins / NewBattles * 100, 2) + ")", "", "Nbw1");
  648. statText += "<br><div style='float:left;'>" + (lang === "ru" ? "Боев: " : "Battles: ") + NewBattles + "</div><div style='float:right;'>" + (lang === "ru" ? "Побед: " : "Wins: ") + NewWins + " (" + col(NewWins / NewBattles * 100, 2) + ")</div>";
  649. if ((AllWins / AllBattles * 100 - OldWins / OldBattles * 100).toFixed(2) * 1 !== 0) {
  650. if (!hrIn && statTooltip.length !== 0) {
  651. statTooltip += '<hr>';
  652. hrIn = true;
  653. }
  654. statTooltip += "<div style='float:left'>" + (lang === "ru" ? '% побед: ' : 'Win %: ') + "</div><div style='float:right'>" + (AllWins / AllBattles * 100 - OldWins / OldBattles * 100 > 0 ? "<font color='green'>+" + (AllWins / AllBattles * 100 - OldWins / OldBattles * 100).toFixed(2) : "<font color='red'>" + (AllWins / AllBattles * 100 - OldWins / OldBattles * 100).toFixed(2)) + "</font></div><br>";
  655. }
  656. var deltaWin = (NewWins / NewBattles * 100 - OldWins / OldBattles * 100).toFixed(2);
  657. insertNewTr(NBretbodytrtd2tabletbody, "", col(OldWins / OldBattles * 100, 2) + (deltaWin * 1 !== 0 ? (deltaWin > 0) ? "<font color='green'> (+" + deltaWin + "%)</font>" : "<font color='red'> (" + deltaWin + "%)</font>" : ""), "", "Nbw2");
  658. deltaWin = (AllWins / AllBattles * 100 - OldWins / OldBattles * 100).toFixed(2);
  659. insertNewTr(NBretbodytrtd3tabletbody, "", col(AllWins / AllBattles * 100, 2) + (deltaWin * 1 !== 0 ? (deltaWin > 0) ? "<font color='green'> (+" + deltaWin + "%)</font>" : "<font color='red'> (" + deltaWin + "%)</font>" : ""), "", "Nbw3");
  660.  
  661. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? "Опыт за бой" : "Exp per battle", (NewXp / NewBattles).toFixed(2), "", "Nbe1");
  662. if ((AllXp / AllBattles - OldXp / OldBattles).toFixed(2) * 1 !== 0) {
  663. if (!hrIn && statTooltip.length !== 0) {
  664. statTooltip += '<hr>';
  665. hrIn = true;
  666. }
  667. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Опыт за бой: ' : 'Exp per battle: ') + "</div><div style='float:right'>" + (AllXp / AllBattles - OldXp / OldBattles > 0 ? "<font color='green'>+" + (AllXp / AllBattles - OldXp / OldBattles).toFixed(2) : "<font color='red'>" + (AllXp / AllBattles - OldXp / OldBattles).toFixed(2)) + "</font></div><br>";
  668. }
  669. var deltaExp = ((NewXp / NewBattles).toFixed(2) - (OldXp / OldBattles).toFixed(2)).toFixed(2);
  670. insertNewTr(NBretbodytrtd2tabletbody, "", (OldXp / OldBattles).toFixed(2) + (deltaExp * 1 !== 0 ? (deltaExp > 0) ? "<font color='green'> (+" + deltaExp + ")</font>" : "<font color='red'> (" + deltaExp + ")</font>" : ""), "", "Nbe2");
  671. deltaExp = ((AllXp / AllBattles).toFixed(2) - (OldXp / OldBattles).toFixed(2)).toFixed(2);
  672. insertNewTr(NBretbodytrtd3tabletbody, "", (AllXp / AllBattles).toFixed(2) + (deltaExp * 1 !== 0 ? (deltaExp > 0) ? "<font color='green'> (+" + deltaExp + ")</font>" : "<font color='red'> (" + deltaExp + ")</font>" : ""), "", "Nbe3");
  673.  
  674. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? "Средний уровень танков" : "Average level of tanks", NewAvgLev.toFixed(2), "", "Nbav1");
  675. if ((AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2) * 1 !== 0) {
  676. if (!hrIn && statTooltip.length !== 0) {
  677. statTooltip += '<hr>';
  678. hrIn = true;
  679. }
  680. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Средний уровень танков: ' : 'Average level of tanks: ') + "</div><div style='float:right'>" + (AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2) > 0 ? "<font color='green'>+" + (AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2) : "<font color='red'>" + (AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2)) + "</font></div><br>";
  681. }
  682. var deltaAvg = (NewAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2);
  683. insertNewTr(NBretbodytrtd2tabletbody, "", OldAvgLev.toFixed(2) + (deltaAvg * 1 !== 0 ? (deltaAvg > 0) ? "<font color='green'> (+" + deltaAvg + ")</font>" : "<font color='red'> (" + deltaAvg + ")</font>" : ""), "", "Nbav2");
  684. deltaAvg = (AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2);
  685. insertNewTr(NBretbodytrtd3tabletbody, "", AllAvgLev.toFixed(2) + (deltaAvg * 1 !== 0 ? (deltaAvg > 0) ? "<font color='green'> (+" + deltaAvg + ")</font>" : "<font color='red'> (" + deltaAvg + ")</font>" : ""), "", "Nbav3");
  686.  
  687. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? "Повреждений за бой" : "Damage per battle", (NewDamag / NewBattles).toFixed(2), EffTooltip("damage", NewDamag, neffs, NewBattles, NewAvgLev, lang), "Nbd1");
  688. if (((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0) {
  689. if (!hrIn && statTooltip.length !== 0) {
  690. statTooltip += '<hr>';
  691. hrIn = true;
  692. }
  693. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Повреждений за бой: ' : 'Damage per battle: ') + "</div><div style='float:right'>" + ((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2) > 0 ? "<font color='green'>+" + ((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'>" + ((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2)) + "</font></div><br>";
  694. }
  695. var deltaDmg = ((NewDamag / NewBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2);
  696. insertNewTr(NBretbodytrtd2tabletbody, "", (OldDamag / OldBattles).toFixed(2) + (deltaDmg * 1 !== 0 ? (deltaDmg > 0) ? "<font color='green'> (+" + deltaDmg + ")</font>" : "<font color='red'> (" + deltaDmg + ")</font>" : ""), EffTooltip("damage", OldDamag, oeffs, OldBattles, OldAvgLev, lang), "Nbd2");
  697. deltaDmg = ((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2);
  698. insertNewTr(NBretbodytrtd3tabletbody, "", (AllDamag / AllBattles).toFixed(2) + (deltaDmg * 1 !== 0 ? (deltaDmg > 0) ? "<font color='green'> (+" + deltaDmg + ")</font>" : "<font color='red'> (" + deltaDmg + ")</font>" : ""), EffTooltip("damage", AllDamag, effres, AllBattles, AllAvgLev, lang), "Nbd3");
  699.  
  700.  
  701. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? "Фрагов за бой" : "Frags per battle", (NewFrags / NewBattles).toFixed(2), EffTooltip("frags", NewFrags, neffs, NewBattles, NewAvgLev, lang), "Nbf1");
  702. if (((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0) {
  703. if (!hrIn && statTooltip.length !== 0) {
  704. statTooltip += '<hr>';
  705. hrIn = true;
  706. }
  707. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Фрагов за бой: ' : 'Frags per battle: ') + "</div><div style='float:right'>" + ((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2) > 0 ? "<font color='green'>+" + ((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'>" + ((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2)) + "</font></div><br>";
  708. }
  709. var deltaFr = ((NewFrags / NewBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2);
  710. insertNewTr(NBretbodytrtd2tabletbody, "", (OldFrags / OldBattles).toFixed(2) + (deltaFr * 1 !== 0 ? (deltaFr > 0) ? "<font color='green'> (+" + deltaFr + ")</font>" : "<font color='red'> (" + deltaFr + ")</font>" : ""), EffTooltip("frags", OldFrags, oeffs, OldBattles, OldAvgLev, lang), "Nbf2");
  711. deltaFr = ((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2);
  712. insertNewTr(NBretbodytrtd3tabletbody, "", (AllFrags / AllBattles).toFixed(2) + (deltaFr * 1 !== 0 ? (deltaFr > 0) ? "<font color='green'> (+" + deltaFr + ")</font>" : "<font color='red'> (" + deltaFr + ")</font>" : ""), EffTooltip("frags", AllFrags, effres, AllBattles, AllAvgLev, lang), "Nbf3");
  713.  
  714.  
  715. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? "Обнаружено за бой" : "Spotted per battle", (NewSpotted / NewBattles).toFixed(2), EffTooltip("spotted", NewSpotted, neffs, NewBattles, NewAvgLev, lang), "Nbs1");
  716. if (((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0) {
  717. if (!hrIn && statTooltip.length !== 0) {
  718. statTooltip += '<hr>';
  719. hrIn = true;
  720. }
  721. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Обнаружено за бой: ' : 'Spotted per battle: ') + "</div><div style='float:right'>" + ((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2) > 0 ? "<font color='green'>+" + ((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'>" + ((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2)) + "</font></div><br>";
  722. }
  723. var deltaSp = ((NewSpotted / NewBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2);
  724. insertNewTr(NBretbodytrtd2tabletbody, "", (OldSpotted / OldBattles).toFixed(2) + (deltaSp * 1 !== 0 ? (deltaSp > 0) ? "<font color='green'> (+" + deltaSp + ")</font>" : "<font color='red'> (" + deltaSp + ")</font>" : ""), EffTooltip("spotted", OldSpotted, oeffs, OldBattles, OldAvgLev, lang), "Nbs2");
  725. deltaSp = ((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2);
  726. insertNewTr(NBretbodytrtd3tabletbody, "", (AllSpotted / AllBattles).toFixed(2) + (deltaSp * 1 !== 0 ? (deltaSp > 0) ? "<font color='green'> (+" + deltaSp + ")</font>" : "<font color='red'> (" + deltaSp + ")</font>" : ""), EffTooltip("spotted", AllSpotted, effres, AllBattles, AllAvgLev, lang), "Nbs3");
  727.  
  728. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? "Очков захвата за бой" : "Caps per battle", (NewCaps / NewBattles).toFixed(2), EffTooltip("caps", NewCaps, neffs, NewBattles, NewAvgLev, lang), "Nbc1");
  729. if (((AllCaps / AllBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0) {
  730. if (!hrIn && statTooltip.length !== 0) {
  731. statTooltip += '<hr>';
  732. hrIn = true;
  733. }
  734. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Очков захвата за бой: ' : 'Caps per battle: ') + "</div><div style='float:right'>" + ((AllCaps / AllBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2) > 0 ? "<font color='green'>+" + ((AllCaps / AllBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'>" + ((AllCaps / AllBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2)).toFixed(2)) + "</font></div><br>";
  735. }
  736. var deltaCap = ((NewCaps / NewBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2)).toFixed(2);
  737. insertNewTr(NBretbodytrtd2tabletbody, "", (OldCaps / OldBattles).toFixed(2) + (deltaCap * 1 !== 0 ? (deltaCap > 0) ? "<font color='green'> (+" + deltaCap + ")</font>" : "<font color='red'> (" + deltaCap + ")</font>" : ""), EffTooltip("caps", OldCaps, oeffs, OldBattles, OldAvgLev, lang), "Nbc2");
  738. deltaCap = (AllCaps / AllBattles - OldCaps / OldBattles).toFixed(2);
  739. insertNewTr(NBretbodytrtd3tabletbody, "", (AllCaps / AllBattles).toFixed(2) + (deltaCap * 1 !== 0 ? (deltaCap > 0) ? "<font color='green'> (+" + deltaCap + ")</font>" : "<font color='red'> (" + deltaCap + ")</font>" : ""), EffTooltip("caps", AllCaps, effres, AllBattles, AllAvgLev, lang), "Nbc3");
  740.  
  741. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? "Очков защиты за бой" : "Defs per battle", (NewDefs / NewBattles).toFixed(2), EffTooltip("defs", NewDefs, neffs, NewBattles, NewAvgLev, lang), "Nbde1");
  742. if (((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0) {
  743. if (!hrIn && statTooltip.length !== 0) {
  744. statTooltip += '<hr>';
  745. hrIn = true;
  746. }
  747. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Очков защиты за бой: ' : 'Defs per battle: ') + "</div><div style='float:right'>" + ((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2) > 0 ? "<font color='green'>+" + ((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'>" + ((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2)) + "</font></div><br>";
  748. }
  749. var deltaDef = ((NewDefs / NewBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2);
  750. insertNewTr(NBretbodytrtd2tabletbody, "", (OldDefs / OldBattles).toFixed(2) + (deltaDef * 1 !== 0 ? (deltaDef > 0) ? "<font color='green'> (+" + deltaDef + ")</font>" : "<font color='red'> (" + deltaDef + ")</font>" : ""), EffTooltip("defs", OldDefs, oeffs, OldBattles, OldAvgLev, lang), "Nbde2");
  751. deltaDef = ((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2);
  752. insertNewTr(NBretbodytrtd3tabletbody, "", (AllDefs / AllBattles).toFixed(2) + (deltaDef * 1 !== 0 ? (deltaDef > 0) ? "<font color='green'> (+" + deltaDef + ")</font>" : "<font color='red'> (" + deltaDef + ")</font>" : ""), EffTooltip("defs", AllDefs, effres, AllBattles, AllAvgLev, lang), "Nbde3");
  753.  
  754. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? " Эффективность" : "Eff. rating", "<font color='" + CalcEffColor(Number(neffs[0]), "eff")[0] + "'>" + neffs[0] + "</font>", CalcEffColor(Number(neffs[0]), "eff")[1], "Nbef1");
  755. var delta = neffs[0] - oeffs[0];
  756. insertNewTr(NBretbodytrtd2tabletbody, "", "<font color='" + CalcEffColor(Number(oeffs[0]), "eff")[0] + "'>" + oeffs[0] + (delta * 1 !== 0 ? (delta > 0) ? "<font color='green'> (+" + delta.toFixed(2) + ")</font>" : "<font color='red'> (" + delta.toFixed(2) + ")</font>" : "") + "</font>", CalcEffColor(Number(oeffs[0]), "eff")[1], "Nbef2");
  757. delta = effres[0] - oeffs[0];
  758. insertNewTr(NBretbodytrtd3tabletbody, "", "<font color='" + CalcEffColor(Number(effres[0]), "eff")[0] + "'>" + effres[0] + (delta * 1 !== 0 ? (delta > 0) ? "<font color='green'> (+" + delta.toFixed(2) + ")</font>" : "<font color='red'> (" + delta.toFixed(2) + ")</font>" : "") + "</font>", CalcEffColor(Number(effres[0]), "eff")[1], "Nbef3");
  759.  
  760. insertNewTr(NBretbodytrtd1tabletbody, (lang === "ru") ? " WN6 Рейтинг" : "WN6 Rating", "<font color='" + CalcEffColor(Number(neffs[2]), "wn6")[0] + "'>" + neffs[2] + "</font>", CalcEffColor(Number(neffs[2]), "wn6")[1], "Nbwn1");
  761. var delta = neffs[2] - oeffs[2];
  762. insertNewTr(NBretbodytrtd2tabletbody, "", "<font color='" + CalcEffColor(Number(oeffs[2]), "wn6")[0] + "'>" + oeffs[2] + (delta * 1 !== 0 ? (delta > 0) ? "<font color='green'> (+" + delta.toFixed(2) + ")</font>" : "<font color='red'> (" + delta.toFixed(2) + ")</font>" : "") + "</font>", CalcEffColor(Number(oeffs[2]), "wn6")[1], "Nbwn2");
  763. delta = effres[2] - oeffs[2];
  764. insertNewTr(NBretbodytrtd3tabletbody, "", "<font color='" + CalcEffColor(Number(effres[2]), "wn6")[0] + "'>" + effres[2] + (delta * 1 !== 0 ? (delta > 0) ? "<font color='green'> (+" + delta.toFixed(2) + ")</font>" : "<font color='red'> (" + delta.toFixed(2) + ")</font>" : "") + "</font>", CalcEffColor(Number(effres[2]), "wn6")[1], "Nbwn3");
  765.  
  766. var blBool = settings.newBat && (toFl(settings.newBat[1]) !== 0 || toFl(settings.newBat[0]) !== 0);
  767.  
  768. spSp1.className = "b-fake-link";
  769. spSp1.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок "Новые бои"' : 'Expand "New battles"') : (lang === "ru" ? 'Свернуть блок "Новые бои"' : 'Collapse "New battles"');
  770. spA1.appendChild(spSp1);
  771. spA1.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  772. spA1.setAttribute('curSt', blBool ? 1 : 0);
  773. spA1.setAttribute('curStText', (lang === "ru" ? '"Новые бои"' : '"New battles"'));
  774. spA1.href = "#";
  775. spDiv1.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  776. spDiv1.appendChild(spA1);
  777. }
  778. //->Блок Новые бои
  779.  
  780. //<-Блок сравнение игроков
  781. var comparestat = GetLSData("compareStat");
  782. if (comparestat && settings.compare === 1 && AllBattles && window.location.href.indexOf(settings.UserID) === -1) {
  783. var mArr = comparestat.split("|"),
  784. strArray = mArr[0].split("/"),
  785. str = strArray[0].split(";"),
  786. timeStat = new Date(str[0]),
  787. compareWGRating = 0,
  788. compareMedals = [];;
  789. if (mArr.length > 3) compareWGRating = toFl(mArr[3]);
  790. if (timeStat) {
  791. if (timeStat.toLocaleFormat)
  792. var compareTime = timeStat.toLocaleFormat("%d.%m.%Y %H:%M");
  793. else
  794. compareTime = timeStat.toLocaleString().substr(0, timeStat.toLocaleString().lastIndexOf(":"));
  795.  
  796. if (mArr.length > 2) {
  797. var MedArr = mArr[2].split("/");
  798. for (var i = 0; i < MedArr.length; i++) {
  799. var MedStr = MedArr[i].split(";");
  800. compareMedals[MedStr[0]] = toFl(MedStr[1]);
  801. }
  802. }
  803.  
  804. if (str.length > 3) {
  805. var compareBattles = toFl(str[12]),
  806. compareWins = toFl(str[10]),
  807. compareXp = toFl(str[24]),
  808. compareDamag = toFl(str[16]),
  809. compareFrags = toFl(str[20]),
  810. compareSpotted = toFl(str[22]),
  811. compareCaps = toFl(str[14]),
  812. compareDefs = toFl(str[18]),
  813. compareAvgLev = parseFloat(mArr[1]);
  814. }
  815.  
  816. for (var i = 1; i < strArray.length; i++) {
  817. str = strArray[i].split(";");
  818. var tName = str[0].toLowerCase();
  819. comparedayArray[tName] = new Object();
  820. comparedayArray[tName].b = toFl(str[1]);
  821. comparedayArray[tName].w = toFl(str[2]);
  822. }
  823.  
  824. var Cmptresulttable = document.getElementsByClassName("b-user-block")[0],
  825. CmpmainDiv = document.createElement('div'),
  826. CmpsDiv = document.createElement('div'),
  827. CmpsDivH3 = document.createElement('h3'),
  828. CmpthDiv = document.createElement('div'),
  829. CmpMedalsA = document.createElement("div"),
  830. CmpMedalsDiv = document.createElement("div"),
  831. CmpMedalsDivUl = document.createElement("ul"),
  832. Cmpretbodytrtd1table = document.createElement('table'),
  833. Cmpretbodytrtd2table = document.createElement('table'),
  834. Cmpretbodytrtd3table = document.createElement('table'),
  835. Cmpretbodytrtd1tabletbody = document.createElement('tbody'),
  836. Cmpretbodytrtd2tabletbody = document.createElement('tbody'),
  837. Cmpretbodytrtd3tabletbody = document.createElement('tbody'),
  838. Cmph31 = document.createElement('h5'),
  839. Cmph32 = document.createElement('h5'),
  840. Cmph33 = document.createElement('h5'),
  841. Cmpdiv1 = document.createElement('div'),
  842. Cmpdiv2 = document.createElement('div'),
  843. Cmpdiv3 = document.createElement('div'),
  844. CmpspDiv1 = document.createElement('div'),
  845. CmpspA1 = document.createElement('a'),
  846. CmpspSp1 = document.createElement('span');
  847.  
  848. document.getElementsByClassName("b-userblock-wrpr")[0].insertBefore(CmpmainDiv, Cmptresulttable);
  849. CmpmainDiv.className = "b-user-block";
  850. CmpsDiv.className = "b-head-block";
  851. CmpsDivH3.innerHTML = lang === "ru" ? "Сравнение игрока со мной" : "Compare player with me";
  852. CmpthDiv.setAttribute('class', "b-user-info clearfix");
  853.  
  854. Cmph31.innerHTML = lang === "ru" ? "Мои данные от <span style='color:green;'>" + compareTime + '</span>' : "My stat. from <span style='color:green;'>" + compareTime + '</span>';
  855. Cmph32.innerHTML = lang === "ru" ? "Данные игрока" : "Player stat.";
  856. Cmph32.setAttribute('style', 'float: right;');
  857. Cmph33.innerHTML = lang === "ru" ? "Дельта" : "Delta";
  858. Cmph33.setAttribute('style', 'float: right;');
  859.  
  860. Cmpretbodytrtd1table.setAttribute('class', 't-dotted');
  861. Cmpretbodytrtd1table.appendChild(Cmpretbodytrtd1tabletbody);
  862. Cmpretbodytrtd2table.setAttribute('class', 't-dotted');
  863. Cmpretbodytrtd2table.appendChild(Cmpretbodytrtd2tabletbody);
  864. Cmpretbodytrtd3table.setAttribute('class', 't-dotted');
  865. Cmpretbodytrtd3table.appendChild(Cmpretbodytrtd3tabletbody);
  866.  
  867. Cmpdiv1.setAttribute('style', 'float: left; width: 45%; margin-left: 25px;');
  868. Cmpdiv2.setAttribute('style', 'float: left; width: 24%;');
  869. Cmpdiv3.setAttribute('style', 'float: left; width: 24%;');
  870.  
  871. CmpMedalsA.setAttribute('style', 'padding-left: 27px; padding-top: 10px;');
  872. CmpMedalsDiv.setAttribute('style', 'padding-left: 20px; display: none;');
  873. CmpMedalsA.innerHTML = '<a class="b-vertical-arrow us-show-medals" href="#"><span class="b-fake-link">' + (lang === "ru" ? "Медали" : "Medals") + '</span></a>';
  874.  
  875. Cmpdiv1.appendChild(Cmph31);
  876. Cmpdiv1.appendChild(Cmpretbodytrtd1table);
  877. Cmpdiv2.appendChild(Cmph32);
  878. Cmpdiv2.appendChild(Cmpretbodytrtd2table);
  879. Cmpdiv3.appendChild(Cmph33);
  880. Cmpdiv3.appendChild(Cmpretbodytrtd3table);
  881. CmpsDiv.appendChild(CmpsDivH3);
  882. CmpmainDiv.appendChild(CmpsDiv);
  883. CmpMedalsDiv.appendChild(CmpMedalsDivUl);
  884. CmpmainDiv.appendChild(CmpMedalsA);
  885. CmpmainDiv.appendChild(CmpMedalsDiv);
  886. CmpthDiv.appendChild(Cmpdiv1);
  887. CmpthDiv.appendChild(Cmpdiv2);
  888. CmpthDiv.appendChild(Cmpdiv3);
  889. CmpmainDiv.appendChild(CmpthDiv);
  890.  
  891. medals = document.getElementsByClassName("js-full-achievements")[0].getElementsByClassName("b-achivements_item");
  892. for (i = 0; i < medals.length; i++) {
  893. if ((" " + medals[i].className + " ").replace(/[\n\t]/g, " ").indexOf(" b-achivements_item__empty ") === -1) {
  894. var count = medals[i].getElementsByTagName('div')[0];
  895. if (count) {
  896. count = count.getElementsByTagName('span')[0].getElementsByTagName('span')[0];
  897. if (count) {
  898. count = toFl(count.innerHTML);
  899. } else {
  900. count = 1;
  901. }
  902. } else {
  903. count = 1;
  904. }
  905. } else
  906. count = 0;
  907. var CmpMCount = compareMedals[medals[i].id.split("-")[2]];
  908. if (!CmpMCount)
  909. CmpMCount = 0;
  910. if (count !== CmpMCount) {
  911. var node = medals[i].cloneNode(true),
  912. node2 = document.getElementById("js-achivement-" + medals[i].id.split("-")[2] + "_tooltip").cloneNode(true);
  913. node.className = "js-tooltip";
  914. node.id = "cmp-achivement-" + medals[i].id.split("-")[2];
  915. node2.id = "cmp-achivement-" + medals[i].id.split("-")[2] + "_tooltip";
  916. node.setAttribute("style", "float: left; margin: 27px 10px 0 0; position: relative;");
  917. var mC = node.getElementsByTagName('div')[0];
  918. if (mC) {
  919. var McS = mC.getElementsByTagName('span')[0];
  920. } else {
  921. node.innerHTML += '<div class="b-achivements_wrpr"><span class="b-achivements_num"><span>' + (CmpMCount - count) + '</span></span></div>';
  922. }
  923. if (McS) {
  924. var McS2 = McS.getElementsByTagName('span')[0];
  925. } else {
  926. mC.innerHTML += '<span class="b-achivements_num"><span>' + (CmpMCount - count) + '</span></span>';
  927. }
  928. if (McS2) {
  929. McS2.innerHTML = CmpMCount - count;
  930. } else {
  931. McS.innerHTML += '<span>' + (CmpMCount - count) + '</span>';
  932. }
  933. ;
  934. CmpMedalsDivUl.appendChild(node);
  935. CmpMedalsDivUl.appendChild(node2);
  936. }
  937. }
  938.  
  939. var compareeffs = CalcEff(0, compareAvgLev, compareBattles, compareWins, compareDamag, compareFrags, compareSpotted, compareCaps, compareDefs, compareXp);
  940.  
  941. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? "Боев|Побед (%Побед)" : "Battles|Wins (%Wins):", (compareBattles) + "|" + (compareWins) + " (" + col(compareWins / compareBattles * 100, 2) + ")", "", "comparew1");
  942. insertNewTr(Cmpretbodytrtd2tabletbody, "", (AllBattles) + "|" + (AllWins) + " (" + col(AllWins / AllBattles * 100, 2) + ")", "", "comparew2");
  943. var deltaWin = ((compareWins / compareBattles * 100) - (AllWins / AllBattles * 100)).toFixed(2),
  944. deltaBattles = compareBattles - AllBattles,
  945. deltaWins = compareWins - AllWins,
  946. dstr = '';
  947. if (deltaBattles > 0) {
  948. dstr += "<font color='green'>+" + deltaBattles + "</font>|";
  949. } else {
  950. dstr += "<font color='red'>" + deltaBattles + "</font>|";
  951. }
  952. if (deltaWins > 0) {
  953. dstr += "<font color='green'>+" + deltaWins + "</font>(";
  954. } else {
  955. dstr += "<font color='red'>" + deltaWins + "</font> (";
  956. }
  957. if (deltaWin > 0) {
  958. dstr += "<font color='green'>+" + deltaWin + "%</font>)";
  959. } else {
  960. dstr += "<font color='red'>" + deltaWin + "%</font>)";
  961. }
  962. insertNewTr(Cmpretbodytrtd3tabletbody, "", dstr, "", "comparew3");
  963.  
  964. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? "Средний уровень танков" : "Average level of tanks", compareAvgLev.toFixed(2), "", "compareav1");
  965. insertNewTr(Cmpretbodytrtd2tabletbody, "", AllAvgLev.toFixed(2), "", "compareav2");
  966. var deltaAvg = (compareAvgLev - AllAvgLev).toFixed(2);
  967. insertNewTr(Cmpretbodytrtd3tabletbody, "", (deltaAvg > 0) ? "<font color='green'>+" + deltaAvg + "</font>" : "<font color='red'>" + deltaAvg + "</font>", "", "compareav3");
  968.  
  969. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? "Опыт за бой" : "Exp per battle", (compareXp / compareBattles).toFixed(2), "", "comparee1");
  970. insertNewTr(Cmpretbodytrtd2tabletbody, "", (AllXp / AllBattles).toFixed(2), "", "comparee2");
  971. var deltaExp = (compareXp / compareBattles - AllXp / AllBattles).toFixed(2);
  972. insertNewTr(Cmpretbodytrtd3tabletbody, "", (deltaExp > 0) ? "<font color='green'>+" + deltaExp + "</font>" : "<font color='red'>" + deltaExp + "</font>", "", "comparee3");
  973.  
  974. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? "Повреждений за бой" : "Damage per battle", (compareDamag / compareBattles).toFixed(2), EffTooltip("damage", compareDamag, compareeffs, compareBattles, compareAvgLev, lang), "compared1");
  975. insertNewTr(Cmpretbodytrtd2tabletbody, "", (AllDamag / AllBattles).toFixed(2), EffTooltip("damage", AllDamag, effres, AllBattles, AllAvgLev, lang), "compared2");
  976. var deltaDmg = (compareDamag / compareBattles - AllDamag / AllBattles).toFixed(2);
  977. insertNewTr(Cmpretbodytrtd3tabletbody, "", (deltaDmg > 0) ? "<font color='green'>+" + deltaDmg + "</font>" : "<font color='red'>" + deltaDmg + "</font>", "", "compared3");
  978.  
  979.  
  980. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? "Фрагов за бой" : "Frags per battle", (compareFrags / compareBattles).toFixed(2), EffTooltip("frags", compareFrags, compareeffs, compareBattles, compareAvgLev, lang), "comparef1");
  981. insertNewTr(Cmpretbodytrtd2tabletbody, "", (AllFrags / AllBattles).toFixed(2), EffTooltip("frags", AllFrags, effres, AllBattles, AllAvgLev, lang), "comparef2");
  982. var deltaFr = (compareFrags / compareBattles - AllFrags / AllBattles).toFixed(2);
  983. insertNewTr(Cmpretbodytrtd3tabletbody, "", (deltaFr > 0) ? "<font color='green'>+" + deltaFr + "</font>" : "<font color='red'>" + deltaFr + "</font>", "", "comparef3");
  984.  
  985.  
  986. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? "Обнаружено за бой" : "Spotted per battle", (compareSpotted / compareBattles).toFixed(2), EffTooltip("spotted", compareSpotted, compareeffs, compareBattles, compareAvgLev, lang), "compares1");
  987. insertNewTr(Cmpretbodytrtd2tabletbody, "", (AllSpotted / AllBattles).toFixed(2), EffTooltip("spotted", AllSpotted, effres, AllBattles, AllAvgLev, lang), "compares2");
  988. var deltaSp = (compareSpotted / compareBattles - AllSpotted / AllBattles).toFixed(2);
  989. insertNewTr(Cmpretbodytrtd3tabletbody, "", (deltaSp > 0) ? "<font color='green'>+" + deltaSp + "</font>" : "<font color='red'>" + deltaSp + "</font>", "", "compares3");
  990.  
  991. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? "Очков захвата за бой" : "Caps per battle", (compareCaps / compareBattles).toFixed(2), EffTooltip("caps", compareCaps, compareeffs, compareBattles, compareAvgLev, lang), "comparec1");
  992. insertNewTr(Cmpretbodytrtd2tabletbody, "", (AllCaps / AllBattles).toFixed(2), EffTooltip("caps", AllCaps, effres, AllBattles, AllAvgLev, lang), "comparec2");
  993. var deltaCap = (compareCaps / compareBattles - AllCaps / AllBattles).toFixed(2);
  994. insertNewTr(Cmpretbodytrtd3tabletbody, "", (deltaCap > 0) ? "<font color='green'>+" + deltaCap + "</font>" : "<font color='red'>" + deltaCap + "</font>", "", "comparec3");
  995.  
  996. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? "Очков защиты за бой" : "Defs per battle", (compareDefs / compareBattles).toFixed(2), EffTooltip("defs", compareDefs, compareeffs, compareBattles, compareAvgLev, lang), "comparede1");
  997. insertNewTr(Cmpretbodytrtd2tabletbody, "", (AllDefs / AllBattles).toFixed(2), EffTooltip("defs", AllDefs, effres, AllBattles, AllAvgLev, lang), "comparede2");
  998. var deltaDef = (compareDefs / compareBattles - AllDefs / AllBattles).toFixed(2);
  999. insertNewTr(Cmpretbodytrtd3tabletbody, "", (deltaDef > 0) ? "<font color='green'>+" + deltaDef + "</font>" : "<font color='red'>" + deltaDef + "</font>", "", "comparede3");
  1000.  
  1001. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? " Эффективность" : "Eff. rating", "<font color='" + CalcEffColor(Number(compareeffs[0]), "eff")[0] + "'>" + compareeffs[0] + "</font>", CalcEffColor(Number(compareeffs[0]), "eff")[1], "compareef1");
  1002. insertNewTr(Cmpretbodytrtd2tabletbody, "", "<font color='" + CalcEffColor(Number(effres[0]), "eff")[0] + "'>" + effres[0] + "</font>", CalcEffColor(Number(effres[0]), "eff")[1], "compareef2");
  1003. var delta = compareeffs[0] - effres[0];
  1004. insertNewTr(Cmpretbodytrtd3tabletbody, "", (delta > 0) ? "<font color='green'>+" + delta.toFixed(2) + "</font>" : "<font color='red'>" + delta.toFixed(2) + "</font>", "", "compareef3");
  1005.  
  1006. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? " WN6 Рейтинг" : "WN6 Rating", "<font color='" + CalcEffColor(Number(compareeffs[2]), "wn6")[0] + "'>" + compareeffs[2] + "</font>", CalcEffColor(Number(compareeffs[2]), "wn6")[1], "comparewn1");
  1007. insertNewTr(Cmpretbodytrtd2tabletbody, "", "<font color='" + CalcEffColor(Number(effres[2]), "wn6")[0] + "'>" + effres[2] + "</font>", CalcEffColor(Number(effres[2]), "wn6")[1], "comparewn2");
  1008. var delta = compareeffs[2] - effres[2];
  1009. insertNewTr(Cmpretbodytrtd3tabletbody, "", (delta > 0) ? "<font color='green'>+" + delta.toFixed(2) + "</font>" : "<font color='red'>" + delta.toFixed(2) + "</font>", "", "comparewn3");
  1010.  
  1011. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? 'Эффективность БС' : 'Eff. rating of BS', compareeffs[3], "");
  1012. insertNewTr(Cmpretbodytrtd2tabletbody, "", effres[3], "");
  1013. var delta = compareeffs[3] - effres[3];
  1014. insertNewTr(Cmpretbodytrtd3tabletbody, "", (delta > 0) ? "<font color='green'>+" + delta.toFixed(2) + "</font>" : "<font color='red'>" + delta.toFixed(2) + "</font>", "");
  1015. insertNewTr(Cmpretbodytrtd1tabletbody, (lang === "ru") ? 'Личный рейтинг' : 'Personal Rating', compareWGRating, "");
  1016. insertNewTr(Cmpretbodytrtd2tabletbody, "", WGRating, "");
  1017. var delta = compareWGRating - WGRating;
  1018. insertNewTr(Cmpretbodytrtd3tabletbody, "", (delta > 0) ? "<font color='green'>+" + delta.toFixed(2) + "</font>" : "<font color='red'>" + delta.toFixed(2) + "</font>", "");
  1019.  
  1020. var blBool = settings.plComp && (toFl(settings.plComp[1]) !== 0 || toFl(settings.plComp[0]) !== 0);
  1021.  
  1022. CmpspSp1.className = "b-fake-link";
  1023. CmpspSp1.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок "Сравнение игроков"' : 'Expand "Players compare"') : (lang === "ru" ? 'Свернуть блок "Сравнение игроков"' : 'Collapse "Players compare"');
  1024. CmpspA1.appendChild(CmpspSp1);
  1025. CmpspA1.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1026. CmpspA1.setAttribute('curSt', blBool ? 1 : 0);
  1027. CmpspA1.setAttribute('curStText', (lang === "ru" ? '"Сравнение игроков"' : '"Players compare"'));
  1028. CmpspA1.href = "#";
  1029. CmpspDiv1.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1030. CmpspDiv1.appendChild(CmpspA1);
  1031. }
  1032. }
  1033.  
  1034. //->Блок сравнение игроков
  1035.  
  1036.  
  1037. //<-Блок рейтинга эффективности
  1038. var tresulttable = document.getElementsByClassName("b-user-block")[0],
  1039. mainDiv = document.createElement('div'),
  1040. sDiv = document.createElement('div'),
  1041. sDivH3 = document.createElement('h3'),
  1042. sDiva = document.createElement('a'),
  1043. thDiv = document.createElement('div'),
  1044. lDiv = document.createElement('div'),
  1045. lhr = document.createElement('hr'),
  1046. rhr = document.createElement('hr'),
  1047. companyTable = document.createElement('table'),
  1048. companyH4 = document.createElement('h4'),
  1049. clanTable = document.createElement('table'),
  1050. clanH4 = document.createElement('h4'),
  1051. clanTabletbody = document.createElement('tbody'),
  1052. companyTabletbody = document.createElement('tbody'),
  1053. rDiv = document.createElement('div'),
  1054. NB7div = document.createElement('div'),
  1055. NB7div2 = document.createElement('div'),
  1056. NB7Tdiv = document.createElement('div'),
  1057. NB7Tdiv2 = document.createElement('div'),
  1058. retbodytrtd1table = document.createElement('table'),
  1059. retbodytrtd2table = document.createElement('table'),
  1060. retbodytrtd1tabletbody = document.createElement('tbody'),
  1061. retbodytrtd2tabletbody = document.createElement('tbody'),
  1062. spDiv = document.createElement('div'),
  1063. spA = document.createElement('a'),
  1064. spSp = document.createElement('span');
  1065.  
  1066. if (NBmainDiv)
  1067. tresulttable = document.getElementsByClassName("b-user-block")[1];
  1068.  
  1069. document.getElementsByClassName("b-userblock-wrpr")[0].insertBefore(mainDiv, tresulttable);
  1070.  
  1071. clanTable.setAttribute('style', 'display: none;');
  1072. companyTable.setAttribute('style', 'display: none;');
  1073.  
  1074. mainDiv.className = "b-user-block";
  1075. sDiv.className = "b-head-block";
  1076. sDivH3.innerHTML = lang === "ru" ? "Эффективность" : "Efficiency";
  1077. sDiva.innerHTML = 'Смотреть видеообзоры рейтингов';
  1078. sDiva.setAttribute('href', 'http://www.youtube.com/playlist?list=PLBy529l9aTSiq1ORoe0R2FS43y4oax5jg');
  1079. sDiva.setAttribute('target', '__blank');
  1080. sDiva.setAttribute('style', 'float: right; font-size: 11pt; padding-top: 10px; padding-right: 10px;');
  1081. sDiv.appendChild(sDiva);
  1082. companyH4.innerHTML = '<a class="b-vertical-arrow us-show-medals" href="#"><span class="b-fake-link">' + (lang === "ru" ? "Ротные бои" : "Company battles") + '</span></a>';
  1083. companyTabletbody.setAttribute('id', 'company-battles');
  1084. companyTable.setAttribute('class', 't-dotted');
  1085. clanTabletbody.setAttribute('id', 'clan-battles');
  1086. clanTable.setAttribute('class', 't-dotted');
  1087. clanH4.innerHTML = '<a class="b-vertical-arrow us-show-medals" href="#"><span class="b-fake-link">' + (lang === "ru" ? "Глобальная карта" : "Clan battles") + '</span></a>';
  1088. thDiv.setAttribute('class', "b-user-info clearfix");
  1089. lDiv.className = "b-user-block_left-column";
  1090. lDiv.setAttribute('style', 'margin-left:25px;');
  1091. rDiv.className = "b-user-block_right-column";
  1092. rDiv.setAttribute('style', 'margin-right:25px;');
  1093. NB7div.setAttribute('style', 'padding-left: 27px; padding-top: 5px; padding-bottom: 5px;');
  1094. NB7Tdiv.setAttribute('style', 'padding-left: 27px; padding-top: 5px; padding-bottom: 5px;');
  1095. NB7div2.setAttribute('style', 'padding-left: 5px; padding-right: 5px; display: none; padding-bottom: 5px;');
  1096. NB7Tdiv2.setAttribute('style', 'padding-left: 5px; padding-right: 5px; display: none; padding-bottom: 5px;');
  1097. NB7div2.innerHTML =
  1098. '<h3 style="text-align: center;">' + (lang === "ru" ? "Тип графика" : "Graph type") + '</h3>' +
  1099. '<span id="hoverdata"></span><div style="text-align: center;"><label for="gall" style="padding-left: 50px;">' + (lang === "ru" ? 'Все' : 'All') + '</label><input type="radio" name="ggtype" id="gall" value="all" checked/>' +
  1100. '<label for="gdate" style="padding-left: 50px;">' + (lang === "ru" ? 'Дата' : 'Date') + '</label><input type="radio" name="ggtype" id="gdate" value="date" />' +
  1101. '<label for="gbat" style="padding-left: 50px;">' + (lang === "ru" ? 'Бои' : 'Battles') + '</label><input type="radio" name="ggtype" id="gbat" value="bat" /></div>' +
  1102. '<hr><h4 style="text-align: center;">' + (lang === "ru" ? "% побед" : "Win %") + '</h4><div id="percStr" style="width:600px;height:100px;" gtype="date"></div><br><div id="percStrB" style="width:600px;height:100px;" gtype="bat"></div><br>' +
  1103. '<h4 style="text-align: center;">' + (lang === "ru" ? "Опыт за бой" : "Exp per battle") + '</h4><div id="exp7" style="width:600px;height:100px;" gtype="date"></div><br><div id="xpStrB" style="width:600px;height:100px;" gtype="bat"></div><br>' +
  1104. '<h4 style="text-align: center;">' + (lang === "ru" ? "Повреждений за бой" : "Damage per battle") + '</h4><div id="damagStr" style="width:600px;height:100px;" gtype="date"></div><br><div id="damagStrB" style="width:600px;height:100px;" gtype="bat"></div><br>' +
  1105. '<h4 style="text-align: center;">' + (lang === "ru" ? "Фрагов за бой" : "Frags per battle") + '</h4><div id="FragsStr" style="width:600px;height:100px;" gtype="date"></div><br><div id="FragsStrB" style="width:600px;height:100px;" gtype="bat"></div><br>' +
  1106. '<h4 style="text-align: center;">' + (lang === "ru" ? "Обнаружено за бой" : "Spotted per battle") + '</h4><div id="SpottedStr" style="width:600px;height:100px;" gtype="date"></div><br><div id="SpottedStrB" style="width:600px;height:100px;" gtype="bat"></div><br>' +
  1107. '<h4 style="text-align: center;">' + (lang === "ru" ? "Очков захвата за бой" : "Caps per battle") + '</h4><div id="CapsStr" style="width:600px;height:100px;" gtype="date"></div><br><div id="CapsStrB" style="width:600px;height:100px;" gtype="bat"></div><br>' +
  1108. '<h4 style="text-align: center;">' + (lang === "ru" ? "Очков защиты за бой" : "Defs per battle") + '</h4><div id="DefsStr" style="width:600px;height:100px;" gtype="date"></div><br><div id="DefsStrB" style="width:600px;height:100px;" gtype="bat"></div><br>' +
  1109. '<h4 style="text-align: center;">' + (lang === "ru" ? "Эффективность" : "Eff. rating") + '</h4><div id="EffStr" style="width:600px;height:100px;" gtype="date"></div><br><div id="EffStrB" style="width:600px;height:100px;" gtype="bat"></div><br>' +
  1110. '<h4 style="text-align: center;">' + (lang === "ru" ? "WN6 Рейтинг" : "WN6 Rating") + '</h4><div id="WN6Str" style="width:600px;height:100px;" gtype="date"></div><br><div id="WN6StrB" style="width:600px;height:100px;" gtype="bat"></div><br><hr>';
  1111. NB7div.innerHTML = '<a class="b-vertical-arrow us-show-medals" href="#"><span class="b-fake-link">' + (lang === "ru" ? "Последние 7 сохранений (графики)" : "Last 7 savepoints (graphs)") + '</span></a>';
  1112. NB7Tdiv.innerHTML = '<a class="b-vertical-arrow us-show-medals" href="#"><span class="b-fake-link">' + (lang === "ru" ? "Последние 7 сохранений танки (графики)" : "Last 7 savepoints tanks (graphs)") + '</span></a>';
  1113.  
  1114. retbodytrtd1table.setAttribute('class', 't-dotted');
  1115. retbodytrtd1table.appendChild(retbodytrtd1tabletbody);
  1116.  
  1117. retbodytrtd2table.setAttribute('class', 't-dotted');
  1118. retbodytrtd2table.appendChild(retbodytrtd2tabletbody);
  1119.  
  1120. companyTable.appendChild(companyTabletbody);
  1121. clanTable.appendChild(clanTabletbody);
  1122.  
  1123. lDiv.appendChild(companyH4);
  1124. lDiv.appendChild(companyTable);
  1125. lDiv.appendChild(lhr);
  1126. rDiv.appendChild(clanH4);
  1127. rDiv.appendChild(clanTable);
  1128. rDiv.appendChild(rhr);
  1129.  
  1130. lDiv.appendChild(retbodytrtd1table);
  1131. rDiv.appendChild(retbodytrtd2table);
  1132. sDiv.appendChild(sDivH3);
  1133. mainDiv.appendChild(sDiv);
  1134. if (daystat && settings.gtype !== "no") {
  1135. mainDiv.appendChild(NB7div);
  1136. mainDiv.appendChild(NB7div2);
  1137. }
  1138. thDiv.appendChild(rDiv);
  1139. thDiv.appendChild(lDiv);
  1140. mainDiv.appendChild(thDiv);
  1141. if (daystat && settings.gtype !== "no") {
  1142. mainDiv.appendChild(NB7Tdiv);
  1143. mainDiv.appendChild(NB7Tdiv2);
  1144. }
  1145.  
  1146. blBool = settings.efRat && (toFl(settings.efRat[1]) !== 0 || toFl(settings.efRat[0]) !== 0);
  1147.  
  1148. spSp.className = "b-fake-link";
  1149. spSp.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок "Рейтинги эффективности"' : 'Expand "Eff. ratings"') : (lang === "ru" ? 'Свернуть блок "Рейтинги эффективности"' : 'Collapse "Eff. ratings"');
  1150. spA.appendChild(spSp);
  1151. spA.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1152. spA.setAttribute('curSt', blBool ? 1 : 0);
  1153. spA.setAttribute('curStText', (lang === "ru" ? '"Рейтинги эффективности"' : '"Eff. ratings"'));
  1154. spA.href = "#";
  1155. spDiv.appendChild(spA);
  1156. spDiv.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1157. mainDiv.parentNode.insertBefore(spDiv, mainDiv);
  1158. if (blBool)
  1159. spDiv.nextElementSibling.setAttribute('style', 'display:none;');
  1160. if (settings.efRat && toFl(settings.efRat[1]) === 1)
  1161. spDiv.setAttribute('style', 'display:none;');
  1162.  
  1163. if (CmpmainDiv && settings.compare && window.location.href.indexOf(settings.UserID) === -1) {
  1164. blBool = settings.plComp && (toFl(settings.plComp[1]) !== 0 || toFl(settings.plComp[0]) !== 0);
  1165. CmpmainDiv.parentNode.insertBefore(CmpspDiv1, CmpmainDiv);
  1166. if (settings.plComp && toFl(settings.plComp[1]) === 1)
  1167. CmpspDiv1.setAttribute('style', 'display:none;');
  1168. if (blBool)
  1169. CmpspDiv1.nextElementSibling.setAttribute('style', 'display:none;');
  1170. }
  1171.  
  1172. if (NBmainDiv) {
  1173. blBool = settings.newBat && (toFl(settings.newBat[1]) !== 0 || toFl(settings.newBat[0]) !== 0);
  1174. NBmainDiv.parentNode.insertBefore(spDiv1, NBmainDiv);
  1175. if (settings.newBat && toFl(settings.newBat[1]) === 1)
  1176. spDiv1.setAttribute('style', 'display:none;');
  1177. if (blBool)
  1178. spDiv1.nextElementSibling.setAttribute('style', 'display:none;');
  1179. }
  1180.  
  1181. if (effres[0] < 440)
  1182. var xeff = 0;
  1183. else
  1184. xeff = Math.max(0, Math.min(100,
  1185. effres[0]*(effres[0]*(effres[0]*(effres[0]*(effres[0]*(effres[0]*
  1186. 0.00000000000000003388
  1187. - 0.0000000000002469)
  1188. + 0.00000000069335)
  1189. - 0.00000095342)
  1190. + 0.0006656)
  1191. - 0.1485)
  1192. - 0.85
  1193. )).toFixed(2);
  1194. if (effres[2] > 2300)
  1195. var xwn = 100;
  1196. else
  1197. xwn = Math.max(0, Math.min(100,
  1198. effres[2]*(effres[2]*(effres[2]*(effres[2]*(effres[2]*(effres[2]*
  1199. 0.00000000000000000466
  1200. - 0.000000000000032413)
  1201. + 0.00000000007524)
  1202. - 0.00000006516)
  1203. + 0.00001307)
  1204. + 0.05153)
  1205. - 3.9
  1206. )).toFixed(2);
  1207.  
  1208. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? " <a href='http://wot-news.com/index.php/stat/calc/ru/ru' target='_blank'>Эффективность</a>" : "<a href='http://wot-news.com/index.php' target='_blank'>Eff. rating</a>", "<font color='"
  1209. + CalcEffColor(Number(effres[0]), "eff")[0] + "'>" + effres[0] + "</font>" + (NewBattles && (effres[0] - oeffs[0]).toFixed(2) * 1 !== 0 ? (effres[0] - oeffs[0] > 0 ? "<font color='green'> (+" + (effres[0] - oeffs[0]).toFixed(2) : "<font color='red'> (" + (effres[0] - oeffs[0]).toFixed(2)) + ")</font>" : ""), CalcEffColor(Number(effres[0]), "eff")[1], "eff-rating");
  1210. hrIn = statTooltip.length === 0;
  1211. if (NewBattles && (effres[0] - oeffs[0]).toFixed(2) * 1 !== 0) {
  1212. if (!hrIn && statTooltip.length !== 0) {
  1213. statTooltip += '<hr>';
  1214. hrIn = true;
  1215. }
  1216. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Эффективность: ' : 'Eff. rating: ') + "</div><div style='float:right'>" + (effres[0] - oeffs[0] > 0 ? "<font color='green'>+" + (effres[0] - oeffs[0]).toFixed(2) : "<font color='red'>" + (effres[0] - oeffs[0]).toFixed(2)) + "</font></div><br>";
  1217. }
  1218.  
  1219. var xown8 = own8 > 3250 ? 100 :
  1220. Math.max(0, Math.min(100,
  1221. own8 * (own8 * (own8 * (own8 * (own8 * (own8 *
  1222. 0.0000000000000000000812
  1223. + 0.0000000000000001616)
  1224. - 0.000000000006736)
  1225. + 0.000000028057)
  1226. - 0.00004536)
  1227. + 0.06563)
  1228. - 0.01
  1229. )),
  1230. xwn8 = wn8 > 3250 ? 100 :
  1231. Math.max(0, Math.min(100,
  1232. wn8 * (wn8 * (wn8 * (wn8 * (wn8 * (wn8 *
  1233. 0.0000000000000000000812
  1234. + 0.0000000000000001616)
  1235. - 0.000000000006736)
  1236. + 0.000000028057)
  1237. - 0.00004536)
  1238. + 0.06563)
  1239. - 0.01
  1240. ));
  1241. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? " <a href='http://wot-news.com/index.php/stat/calc/ru/ru' target='_blank'>WN6 Рейтинг</a>" : "<a href='http://wot-news.com/index.php' target='_blank'>WN6 Rating</a>", "<font color='"
  1242. + CalcEffColor(Number(effres[2]), "wn6")[0] + "'>" + effres[2] + "</font>" + (NewBattles && (effres[2] - oeffs[2]).toFixed(2) * 1 !== 0 ? (effres[2] - oeffs[2] > 0 ? "<font color='green'> (+" + (effres[2] - oeffs[2]).toFixed(2) : "<font color='red'> (" + (effres[2] - oeffs[2]).toFixed(2)) + ")</font>" : ""), CalcEffColor(Number(effres[2]), "wn6")[1], "wn6-rating");
  1243. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? "<a href='http://www.noobmeter.com/player/ru/" + playerNick + "/" + UserId + "/' target='_blank'>WN8 Рейтинг</a>" : "<a href='http://www.noobmeter.com/player/ru/" + playerNick + "/" + UserId + "/' target='_blank'>WN8 Rating</a>", "<font color='"
  1244. + CalcEffColor(Number(wn8), "wn8")[0] + "'>" + wn8.toFixed(2) + "</font>" + (NewBattles && (wn8 - own8).toFixed(2) * 1 !== 0 ? (wn8 - own8 > 0 ? "<font color='green'> (+" + (wn8 - own8).toFixed(2) : "<font color='red'> (" + (wn8 - own8).toFixed(2)) + ")</font>" : ""), CalcEffColor(Number(wn8), "wn8")[1], "wn8-rating");
  1245.  
  1246. if (NewBattles && (effres[2] - oeffs[2]).toFixed(2) * 1 !== 0) {
  1247. if (!hrIn && statTooltip.length !== 0) {
  1248. statTooltip += '<hr>';
  1249. hrIn = true;
  1250. }
  1251. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'WN6 Рейтинг: ' : 'WN6 Rating: ') + "</div><div style='float:right'>" + (effres[2] - oeffs[2] > 0 ? "<font color='green'>+" + (effres[2] - oeffs[2]).toFixed(2) : "<font color='red'>" + (effres[2] - oeffs[2]).toFixed(2)) + "</font></div><br>";
  1252. }
  1253.  
  1254. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "<a href='http://wot-news.com/index.php/stat/calc/ru/ru' target='_blank'>Эффективность xvm</a>" : "<a href='http://wot-news.com/index.php' target='_blank'>Eff. rating xwm</a>", "<font color='" + CalcEffColor(Number(xeff), "xvm")[0] + "'>" + xeff + "</font>" + (NewBattles && oxeff !== 0 && (xeff - oxeff).toFixed(2) * 1 !== 0 ? (xeff - oxeff > 0 ? "<font color='green'> (+" + (xeff - oxeff).toFixed(2) : "<font color='red'> (" + (xeff - oxeff).toFixed(2)) + ")</font>" : ""), CalcEffColor(Number(xeff), "xvm")[1], "xeff-rating");
  1255.  
  1256. if (NewBattles && oxeff !== 0 && (xeff - oxeff).toFixed(2) * 1 !== 0) {
  1257. if (!hrIn && statTooltip.length !== 0) {
  1258. statTooltip += '<hr>';
  1259. hrIn = true;
  1260. }
  1261. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'Эффективность xvm: ' : 'Eff. rating xwm: ') + "</div><div style='float:right'>" + (xeff - oxeff > 0 ? "<font color='green'>+" + (xeff - oxeff).toFixed(2) : "<font color='red'>" + (xeff - oxeff).toFixed(2)) + "</font></div><br>";
  1262. }
  1263.  
  1264. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "<a href='http://wot-news.com/index.php/stat/calc/ru/ru' target='_blank'>WN6 Рейтинг xvm</a>" : "<a href='http://wot-news.com/index.php' target='_blank'>WN6 Rating xwm</a>", "<font color='" + CalcEffColor(Number(xwn), "xvm")[0] + "'>" + xwn + "</font>" + (NewBattles && oxwn !== 0 && (xwn - oxwn).toFixed(2) * 1 !== 0 ? (xwn - oxwn > 0 ? "<font color='green'> (+" + (xwn - oxwn).toFixed(2) : "<font color='red'> (" + (xwn - oxwn).toFixed(2)) + ")</font>" : ""), CalcEffColor(Number(xwn), "xvm")[1], "xwn-rating");
  1265. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "<a href='http://www.noobmeter.com/player/ru/" + playerNick + "/" + UserId + "/' target='_blank'>WN8 Рейтинг xwm</a>" : "<a href='http://www.noobmeter.com/player/ru/" + playerNick + "/" + UserId + "/' target='_blank'>WN8 Rating xwm</a>", "<font color='"
  1266. + CalcEffColor(Number(wn8), "wn8")[0] + "'>" + xwn8.toFixed(2) + "</font>" + (NewBattles && (xwn8 - xown8).toFixed(2) * 1 !== 0 ? (xwn8 - xown8 > 0 ? "<font color='green'> (+" + (xwn8 - xown8).toFixed(2) : "<font color='red'> (" + (xwn8 - xown8).toFixed(2)) + ")</font>" : ""), "", "xwn8-rating");
  1267.  
  1268. if (NewBattles && oxwn !== 0 && (xwn - oxwn).toFixed(2) * 1 !== 0) {
  1269. if (!hrIn && statTooltip.length !== 0) {
  1270. statTooltip += '<hr>';
  1271. hrIn = true;
  1272. }
  1273. statTooltip += "<div style='float:left'>" + (lang === "ru" ? 'WN6 Рейтинг xvm: ' : 'WN6 Rating xwm: ') + "</div><div style='float:right'>" + (xwn - oxwn > 0 ? "<font color='green'>+" + (xwn - oxwn).toFixed(2) : "<font color='red'>" + (xwn - oxwn).toFixed(2)) + "</font></div><br>";
  1274. }
  1275.  
  1276. var PR = (500 * (AllWins / AllBattles) / 0.4856) + (1000 * AllDamag / (tnaSum * 0.975));
  1277. var clearedFromPenalties1 = 1500,
  1278. expectedMinBattles1 = 500,
  1279. expectedMinAvgTier1 = 6,
  1280. clearedFromPenalties2 = 1900,
  1281. expectedMinBattles2 = 2000,
  1282. expectedMinAvgTier2 = 7;
  1283. if (PR > clearedFromPenalties1)
  1284. PR = PR - (PR - clearedFromPenalties1) * Math.pow(Math.max(0, 1 - (AllAvgLev / expectedMinAvgTier1), 1 - (AllBattles / expectedMinBattles1)), 0.5);
  1285. if (PR > clearedFromPenalties2)
  1286. PR = PR - (PR - clearedFromPenalties2) * Math.pow(Math.max(0, 1 - (AllAvgLev / expectedMinAvgTier2), 1 - (AllBattles / expectedMinBattles2)), 0.5);
  1287.  
  1288. if (PR >= 2180) {
  1289. var XPR = 100;
  1290. } else {
  1291. XPR = Math.max(PR * (PR * (PR * (-0.00000000008567 * PR + 0.0000004071) - 0.000689) + 0.5677) - 183, PR * (-0.0002002 * PR + 0.8732) - 852.30);
  1292. }
  1293.  
  1294. insertNewTr(retbodytrtd1tabletbody, "<a href='http://www.noobmeter.com/player/ru/" + playerNick + "/" + UserId + "/' target='_blank'>Рейтинг нагиба</a>",
  1295. "<font color='" + CalcEffColor(PR, "pr")[0] + "'>" + PR.toFixed(2) + "</font>" + ((oPR && (PR - oPR).toFixed(2) != 0.0) ? ( "<font color='" + ((PR - oPR > 0) ? "green'> (+" + (PR - oPR).toFixed(2) : "red'> (" + (PR - oPR).toFixed(2)) + ")</font>") : ""), CalcEffColor(PR, "pr")[1], "noobmeter-rating");
  1296. insertNewTr(retbodytrtd2tabletbody, "<a href='http://www.noobmeter.com/player/ru/" + playerNick + "/" + UserId + "/' target='_blank'>Рейтинг нагиба xvm</a>",
  1297. "<font color='" + CalcEffColor(PR, "pr")[0] + "'>" + XPR.toFixed(2) + "</font>" + ((oXPR && (XPR - oXPR).toFixed(2) != 0.0) ? ( "<font color='" + ((XPR - oXPR > 0) ? "green'> (+" + (XPR - oXPR).toFixed(2) : "red'> (" + (XPR - oXPR).toFixed(2)) + ")</font>") : ""), "", "noobmeter-rating-xvm");
  1298. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? "<a href='http://armor.kiev.ua/wot/gamerstat/" + playerNick + "' target='_blank'>Эффективность БС</a>" : "<a href='http://armor.kiev.ua/wot/' target='_blank'>Eff. rating of BS</a>", "x", "x", "bs-rating");
  1299.  
  1300. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? " <a href='http://wot-noobs.ru/nubomer/?nick=" + playerNick + "' target='_blank'>Нубо-Рейтинг</a>" : "<a href='http://wot-noobs.ru/nubomer/?nick=" + playerNick + "' target='_blank'>Wot-noobs rating</a>", "", "x", "us-NoobStat");
  1301. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? " Боев" : "Battles", (AllBattles).toFixed(0) + (NewBattles && ((AllBattles).toFixed(0) - (OldBattles).toFixed(0)).toFixed(0) * 1 !== 0.0 ? (((AllBattles).toFixed(0) - (OldBattles).toFixed(0)).toFixed(0) > 0 ? "<font color='green'> (+" + ((AllBattles).toFixed(0) - (OldBattles).toFixed(0)).toFixed(0) : "<font color='red'> (" + ((AllBattles).toFixed(0) - (OldBattles).toFixed(0)).toFixed(0)) + ")</font>" : ""), "", "us-battles");
  1302. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "Опыт за бой" : "Exp per battle", (AllXp / AllBattles).toFixed(2) + (NewBattles && ((AllXp / AllBattles).toFixed(2) - (OldXp / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0 ? (((AllXp / AllBattles).toFixed(2) - (OldXp / OldBattles).toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + ((AllXp / AllBattles).toFixed(2) - (OldXp / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'> (" + ((AllXp / AllBattles).toFixed(2) - (OldXp / OldBattles).toFixed(2)).toFixed(2)) + ")<font>" : ""), AllXp + " <font color='red'>/</font> <font color='green'>" + AllBattles + "</font>", "us-xp");
  1303. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "Повреждений за бой" : "Damage per battle", (AllDamag / AllBattles).toFixed(2) + (NewBattles && ((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0.0 ? (((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + ((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'> (" + ((AllDamag / AllBattles).toFixed(2) - (OldDamag / OldBattles).toFixed(2)).toFixed(2)) + ")<font>" : ""), EffTooltip("damage", AllDamag, effres, AllBattles, AllAvgLev, lang), "us-damag");
  1304. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "Фрагов за бой" : "Frags per battle", (AllFrags / AllBattles).toFixed(2) + (NewBattles && ((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0.0 ? (((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + ((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'> (" + ((AllFrags / AllBattles).toFixed(2) - (OldFrags / OldBattles).toFixed(2)).toFixed(2)) + ")<font>" : ""), EffTooltip("frags", AllFrags, effres, AllBattles, AllAvgLev, lang), "us-frags");
  1305. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "Обнаружено за бой" : "Spotted per battle", (AllSpotted / AllBattles).toFixed(2) + (NewBattles && ((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0.0 ? (((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + ((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'> (" + ((AllSpotted / AllBattles).toFixed(2) - (OldSpotted / OldBattles).toFixed(2)).toFixed(2)) + ")<font>" : ""), EffTooltip("spotted", AllSpotted, effres, AllBattles, AllAvgLev, lang), "us-spotted");
  1306. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "Очков захвата за бой" : "Caps per battle", (AllCaps / AllBattles).toFixed(2) + (NewBattles && ((AllCaps / AllBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0.0 ? (((AllCaps / AllBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + ((AllCaps / AllBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'> (" + ((AllCaps / AllBattles).toFixed(2) - (OldCaps / OldBattles).toFixed(2)).toFixed(2)) + ")<font>" : ""), EffTooltip("caps", AllCaps, effres, AllBattles, AllAvgLev, lang), "us-caps");
  1307. insertNewTr(retbodytrtd2tabletbody, (lang === "ru") ? "Очков защиты за бой" : "Defs per battle", (AllDefs / AllBattles).toFixed(2) + (NewBattles && ((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2) * 1 !== 0.0 ? (((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + ((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2) : "<font color='red'> (" + ((AllDefs / AllBattles).toFixed(2) - (OldDefs / OldBattles).toFixed(2)).toFixed(2)) + ")<font>" : ""), EffTooltip("defs", AllDefs, effres, AllBattles, AllAvgLev, lang), "us-defs");
  1308. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? " <a href='http://forum.worldoftanks.ru/index.php?/topic/995453-/page__pid__24377030#entry24377030' target='_blank'>Личный рейтинг</a>" : "<a href='http://forum.worldoftanks.ru/index.php?/topic/995453-/page__pid__24377030#entry24377030' target='_blank'>Personal Rating</a>",
  1309. WGRating + (((WGRating - OldWGRating).toFixed(0) != 0.0) ? ( "<font color='" + ((WGRating - OldWGRating > 0) ? "green'> (+" + (WGRating - OldWGRating).toFixed(0) : "red'> (" + (WGRating - OldWGRating).toFixed(0)) + ")</font>") : ""), "", "us-WGRating");
  1310. if (daypassed !== 0)
  1311. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? " Боев в день" : "Battles per day", (AllBattles / daypassed).toFixed(2) + (NewBattles && ((AllBattles / daypassed).toFixed(2) - (OldBattles / olddaypassed).toFixed(2)).toFixed(2) * 1 !== 0.0 ? (((AllBattles / daypassed).toFixed(2) - (OldBattles / olddaypassed).toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + ((AllBattles / daypassed).toFixed(2) - (OldBattles / olddaypassed).toFixed(2)).toFixed(2) : "<font color='red'> (" + ((AllBattles / daypassed).toFixed(2) - (OldBattles / olddaypassed).toFixed(2)).toFixed(2)) + ")</font>" : ""), ((lang === "ru") ? "дней" : "days") + ": " + daypassed.toFixed(), "us-daypassed");
  1312. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? "Средний уровень танков" : "Average level of tanks", AllAvgLev.toFixed(2) + (NewBattles && (AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2) * 1 !== 0.0 ? ((AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + (AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2) : "<font color='red'> (" + (AllAvgLev.toFixed(2) - OldAvgLev.toFixed(2)).toFixed(2)) + ")<font>" : ""), "", "");
  1313. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? "% побед" : "Win %", col(AllWins / AllBattles * 100, 2) + (NewBattles && ((AllWins / AllBattles * 100).toFixed(2) - (OldWins / OldBattles * 100).toFixed(2)).toFixed(2) * 1 !== 0.0 ? (((AllWins / AllBattles * 100).toFixed(2) - (OldWins / OldBattles * 100).toFixed(2)).toFixed(2) > 0 ? "<font color='green'> (+" + ((AllWins / AllBattles * 100).toFixed(2) - (OldWins / OldBattles * 100).toFixed(2)).toFixed(2) : "<font color='red'> (" + ((AllWins / AllBattles * 100).toFixed(2) - (OldWins / OldBattles * 100).toFixed(2)).toFixed(2)) + ")</font>" : ""), FoundProc(AllWins, AllBattles), "us-winperc");
  1314. var AllDefeat = toFl(document.getElementsByClassName("b-result")[0].getElementsByClassName("t-dotted")[0].rows[2].cells[1].innerHTML.split("(")[0]);
  1315. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? "% поражений" : "Defeat %", col(AllDefeat / AllBattles * 100, 2, true), FoundProc(AllDefeat, AllBattles), "us-defeat");
  1316. var AllSurvived = toFl(document.getElementsByClassName("b-result")[0].getElementsByClassName("t-dotted")[0].rows[3].cells[1].innerHTML.split("(")[0]);
  1317. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? "% выживания" : "Survived %", (AllSurvived / AllBattles * 100).toFixed(2) + "%", FoundProc(AllSurvived, AllBattles), "us-surv");
  1318. var AllHR = toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted")[0].rows[2].cells[1].innerHTML);
  1319. insertNewTr(retbodytrtd1tabletbody, (lang === "ru") ? "% попадания" : "Hit Ratio", col(AllHR), "x", "hit-ratio");
  1320.  
  1321. if (daystat && settings.gtype !== "no") {
  1322. var plotScript = document.createElement("script"),
  1323. xpStr = '[{ color: 0, data: [',
  1324. xpStrB = '[{ color: 0, data: [',
  1325. percStrB = '[{ color: 1, data: [',
  1326. percStr = '[{ color: 1, data: [',
  1327. damagStr = '[{ color: 2, data: [',
  1328. FragsStr = '[{ color: 3, data: [',
  1329. SpottedStr = '[{ color: 4, data: [',
  1330. CapsStr = '[{ color: 5, data: [',
  1331. DefsStr = '[{ color: 6, data: [',
  1332. EffStr = '[{ color: 7, data: [',
  1333. WN6Str = '[{ color: 8, data: [',
  1334. damagStrB = '[{ color: 2, data: [',
  1335. FragsStrB = '[{ color: 3, data: [',
  1336. SpottedStrB = '[{ color: 4, data: [',
  1337. CapsStrB = '[{ color: 5, data: [',
  1338. DefsStrB = '[{ color: 6, data: [',
  1339. EffStrB = '[{ color: 7, data: [',
  1340. WN6StrB = '[{ color: 8, data: [',
  1341. firstSt = true;
  1342. plotScript.type = "text/javascript";
  1343.  
  1344. var grTanks = [], grtindex = [];
  1345.  
  1346. for (var k = 0; k < 7; k++) {
  1347. var statData = GetLSData("daystat_" + UserId + "_" + k);
  1348. if (statData) {
  1349. var dsArr = statData.split("|"),
  1350. strArray = dsArr[0].split("/"),
  1351. str = strArray[0].split(";"),
  1352. timeStat = (new Date(str[0])).getTime(),
  1353. gOldBattles = toFl(str[12]),
  1354. gOldWins = toFl(str[10]),
  1355. gOldXp = toFl(str[24]),
  1356. gOldDamag = toFl(str[16]),
  1357. gOldFrags = toFl(str[20]),
  1358. gOldSpotted = toFl(str[22]),
  1359. gOldCaps = toFl(str[14]),
  1360. gOldDefs = toFl(str[18]);
  1361. if (firstSt) {
  1362. firstSt = false;
  1363. } else if (timeStat) {
  1364. xpStr += ', ';
  1365. xpStrB += ', ';
  1366. percStr += ', ';
  1367. percStrB += ', ';
  1368. damagStr += ', ';
  1369. FragsStr += ', ';
  1370. SpottedStr += ', ';
  1371. CapsStr += ', ';
  1372. DefsStr += ', ';
  1373. EffStr += ', ';
  1374. WN6Str += ', ';
  1375. damagStrB += ', ';
  1376. FragsStrB += ', ';
  1377. SpottedStrB += ', ';
  1378. CapsStrB += ', ';
  1379. DefsStrB += ', ';
  1380. EffStrB += ', ';
  1381. WN6StrB += ', ';
  1382. }
  1383. if (timeStat) {
  1384. xpStr += '[' + timeStat + ', ' + (gOldXp / gOldBattles).toFixed(2) + ']';
  1385. xpStrB += '[' + gOldBattles + ', ' + (gOldXp / gOldBattles).toFixed(2) + ']';
  1386. percStr += '[' + timeStat + ', ' + (gOldWins / gOldBattles * 100).toFixed(2) + ']';
  1387. percStrB += '[' + gOldBattles + ', ' + (gOldWins / gOldBattles * 100).toFixed(2) + ']';
  1388. damagStr += '[' + timeStat + ', ' + (gOldDamag / gOldBattles).toFixed(2) + ']';
  1389. FragsStr += '[' + timeStat + ', ' + (gOldFrags / gOldBattles).toFixed(2) + ']';
  1390. SpottedStr += '[' + timeStat + ', ' + (gOldSpotted / gOldBattles).toFixed(2) + ']';
  1391. CapsStr += '[' + timeStat + ', ' + (gOldCaps / gOldBattles).toFixed(2) + ']';
  1392. DefsStr += '[' + timeStat + ', ' + (gOldDefs / gOldBattles).toFixed(2) + ']';
  1393. damagStrB += '[' + gOldBattles + ', ' + (gOldDamag / gOldBattles).toFixed(2) + ']';
  1394. FragsStrB += '[' + gOldBattles + ', ' + (gOldFrags / gOldBattles).toFixed(2) + ']';
  1395. SpottedStrB += '[' + gOldBattles + ', ' + (gOldSpotted / gOldBattles).toFixed(2) + ']';
  1396. CapsStrB += '[' + gOldBattles + ', ' + (gOldCaps / gOldBattles).toFixed(2) + ']';
  1397. DefsStrB += '[' + gOldBattles + ', ' + (gOldDefs / gOldBattles).toFixed(2) + ']';
  1398. var odayArray = [];
  1399.  
  1400. for (var p = 1; p < strArray.length; p++) {
  1401. str = strArray[p].split(";");
  1402. var tName = str[0].toLowerCase();
  1403. odayArray[tName] = new Object();
  1404. odayArray[tName].b = toFl(str[1]);
  1405. odayArray[tName].w = str.length > 3 ? toFl(str[3]) : -1;
  1406. if (tanksarr[tName] && tanksarr[tName].bcount !== odayArray[tName].b) {
  1407. if (!grTanks[tName]) {
  1408. grTanks[tName] = [];
  1409. grtindex[tName] = [];
  1410. }
  1411. if (grtindex[tName].indexOf(odayArray[tName].b) === -1) {
  1412. grTanks[tName].push({'bcount': odayArray[tName].b, 'wcount': odayArray[tName].w});
  1413. grtindex[tName].push(odayArray[tName].b);
  1414. }
  1415. }
  1416. }
  1417. var cav = CalcgOldAvgLev(odayArray),
  1418. gAvgLev = cav[0],
  1419. ogeff = CalcEff(0, gAvgLev, gOldBattles, gOldWins, gOldDamag, gOldFrags, gOldSpotted, gOldCaps, gOldDefs, gOldXp);
  1420. EffStr += '[' + timeStat + ', ' + ogeff[0] + ']';
  1421. WN6Str += '[' + timeStat + ', ' + ogeff[2] + ']';
  1422. EffStrB += '[' + gOldBattles + ', ' + ogeff[0] + ']';
  1423. WN6StrB += '[' + gOldBattles + ', ' + ogeff[2] + ']';
  1424. }
  1425. }
  1426. ;
  1427. }
  1428. plotScript.textContent = ' var plot_conf = { series: {lines: {show: true, lineWidth: 2 }, points: {show: true}}, grid: {hoverable: true}, xaxis: { mode: "time", timeformat: "%d.%m.%y"}}; '
  1429. + ' var plot_confB = { series: {lines: {show: true, lineWidth: 2 }, points: {show: true}}, grid: {hoverable: true}}; ' + ' function showTooltip(x, y, contents) {$("<div id=\'tooltip\'>" + contents + "</div>").css({position: "absolute",display: "none",top: y + 5,left: x + 5,border: "1px solid #fdd",padding: "2px","background-color": "white"}).appendTo("body").fadeIn(200);}var previousPoint = null;';
  1430.  
  1431. for (var gtank in grTanks) {
  1432. if (grTanks[gtank].length > 1) {
  1433. NB7Tdiv2.innerHTML += '<div style="margin-top: 15px;' + (tanksarr[gtank]['prem'] ? ' color: #ffc363 !important;"' : '"') + '><img src="' + tanksarr[gtank]['img'] + '"> ' + tanksarr[gtank]['name'] + ' <strong>' + tanksarr[gtank]['ttype'] + tanksarr[gtank]['tlev'] + '</strong></div><br><div style="width:600px;height:100px;" id="tgr' + gtank + '">';
  1434. plotScript.textContent += 'var tgrdata' + gtank.split('-').join('_') + ' = [{ color: 0, data: [';
  1435. var fst = true;
  1436. for (var grc in grTanks[gtank]) {
  1437. if (fst) {
  1438. fst = false;
  1439. } else {
  1440. plotScript.textContent += ', ';
  1441. }
  1442. plotScript.textContent += '[' + grTanks[gtank][grc]['bcount'] + ', ' + (grTanks[gtank][grc]['wcount'] / grTanks[gtank][grc]['bcount'] * 100).toFixed(2) + ']';
  1443. }
  1444. plotScript.textContent += ']}]; ' + ' $.plot($("#tgr' + gtank + '"), tgrdata' + gtank.split('-').join('_') + ', plot_confB); ';
  1445. plotScript.textContent += ' $("#tgr' + gtank + '").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; " + y + "% побед.");}} else {$("#tooltip").remove();previousPoint = null; }});'
  1446. }
  1447. }
  1448. xpStr += ']}]';
  1449. xpStrB += ']}]';
  1450. percStr += ']}]';
  1451. percStrB += ']}]';
  1452. damagStr += ']}]';
  1453. FragsStr += ']}]';
  1454. SpottedStr += ']}]';
  1455. CapsStr += ']}]';
  1456. DefsStr += ']}]';
  1457. EffStr += ']}]';
  1458. WN6Str += ']}]';
  1459. damagStrB += ']}]';
  1460. FragsStrB += ']}]';
  1461. SpottedStrB += ']}]';
  1462. CapsStrB += ']}]';
  1463. DefsStrB += ']}]';
  1464. EffStrB += ']}]';
  1465. WN6StrB += ']}]';
  1466. plotScript.textContent +=
  1467. " var xp_data = " + xpStr + ","
  1468. + " xpStrB_data = " + xpStrB + ","
  1469. + " damagStr_data = " + damagStr + ","
  1470. + " FragsStr_data = " + FragsStr + ","
  1471. + " SpottedStr_data = " + SpottedStr + ","
  1472. + " CapsStr_data = " + CapsStr + ","
  1473. + " DefsStr_data = " + DefsStr + ","
  1474. + " EffStr_data = " + EffStr + ","
  1475. + " WN6Str_data = " + WN6Str + ","
  1476. + " damagStrB_data = " + damagStrB + ","
  1477. + " FragsStrB_data = " + FragsStrB + ","
  1478. + " SpottedStrB_data = " + SpottedStrB + ","
  1479. + " CapsStrB_data = " + CapsStrB + ","
  1480. + " DefsStrB_data = " + DefsStrB + ","
  1481. + " EffStrB_data = " + EffStrB + ","
  1482. + " WN6StrB_data = " + WN6StrB + ","
  1483. + " percStr_data = " + percStr + ";"
  1484. + " percStrB_data = " + percStrB + ";"
  1485. + ' $.plot($("#percStr"), percStr_data, plot_conf);'
  1486. + ' $("#percStr").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, y + "% побед на " + x);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1487. + ' $.plot($("#percStrB"), percStrB_data, plot_confB);'
  1488. + ' $("#percStrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; " + y + "% побед.");}} else {$("#tooltip").remove();previousPoint = null; }});'
  1489. + ' $.plot($("#exp7"), xp_data, plot_conf);'
  1490. + ' $("#exp7").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, y + " опыта за бой на " + x);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1491. + ' $.plot($("#xpStrB"), xpStrB_data, plot_confB);'
  1492. + ' $("#xpStrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; " + y + " опыта за бой.");}} else {$("#tooltip").remove();previousPoint = null; }});'
  1493. + ' $.plot($("#damagStr"), damagStr_data, plot_conf);'
  1494. + ' $("#damagStr").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, y + " повреждений за бой на " + x);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1495. + ' $.plot($("#damagStrB"), damagStrB_data, plot_confB);'
  1496. + ' $("#damagStrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; " + y + " повреждений за бой.");}} else {$("#tooltip").remove();previousPoint = null; }});'
  1497. + ' $.plot($("#FragsStr"), FragsStr_data, plot_conf);'
  1498. + ' $("#FragsStr").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, y + " фрагов за бой на " + x);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1499. + ' $.plot($("#FragsStrB"), FragsStrB_data, plot_confB);'
  1500. + ' $("#FragsStrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; " + y + " фрагов за бой.");}} else {$("#tooltip").remove();previousPoint = null; }});'
  1501. + ' $.plot($("#SpottedStr"), SpottedStr_data, plot_conf);'
  1502. + ' $("#SpottedStr").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, y + " обнаружено за бой на " + x);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1503. + ' $.plot($("#SpottedStrB"), SpottedStrB_data, plot_confB);'
  1504. + ' $("#SpottedStrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; " + y + " обнаружено за бой.");}} else {$("#tooltip").remove();previousPoint = null; }});'
  1505. + ' $.plot($("#CapsStr"), CapsStr_data, plot_conf);'
  1506. + ' $("#CapsStr").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, y + " очков захвата за бой на " + x);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1507. + ' $.plot($("#CapsStrB"), CapsStrB_data, plot_confB);'
  1508. + ' $("#CapsStrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; " + y + " очков захвата за бой.");}} else {$("#tooltip").remove();previousPoint = null; }});'
  1509. + ' $.plot($("#DefsStr"), DefsStr_data, plot_conf);'
  1510. + ' $("#DefsStr").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, y + " очков защиты за бой на " + x);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1511. + ' $.plot($("#DefsStrB"), DefsStrB_data, plot_confB);'
  1512. + ' $("#DefsStrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; " + y + " очков защиты за бой.");}} else {$("#tooltip").remove();previousPoint = null; }});'
  1513. + ' $.plot($("#EffStr"), EffStr_data, plot_conf);'
  1514. + ' $("#EffStr").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, "Эффективность на " + x + ": " + y);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1515. + ' $.plot($("#EffStrB"), EffStrB_data, plot_confB);'
  1516. + ' $("#EffStrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; Эффективность: " + y);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1517. + ' $.plot($("#WN6Str"), WN6Str_data, plot_conf);'
  1518. + ' $("#WN6Str").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = new Date(item.datapoint[0]),y = item.datapoint[1].toFixed(2); if (x.toLocaleFormat) x = x.toLocaleFormat("%d.%m.%Y %H:%M"); else x = x.toLocaleString().substr(0, x.toLocaleString().lastIndexOf(":")); showTooltip(item.pageX, item.pageY, "Эффективность WN6 на " + x + ": " + y);}} else {$("#tooltip").remove();previousPoint = null; }});'
  1519. + ' $.plot($("#WN6StrB"), WN6StrB_data, plot_confB);'
  1520. + ' $("#WN6StrB").bind("plothover", function (event, pos, item) {if (item) {if (previousPoint != item.dataIndex) {previousPoint = item.dataIndex;$("#tooltip").remove();var x = item.datapoint[0].toFixed(0),y = item.datapoint[1].toFixed(2);showTooltip(item.pageX, item.pageY, "Боев: " + x + "; Эффективность WN6: " + y);}} else {$("#tooltip").remove();previousPoint = null; }});';
  1521. document.body.appendChild(plotScript);
  1522. }
  1523. //->Блок рейтинга эффективности
  1524.  
  1525. var mtext = "<li><a id='WriteStat' style='cursor: pointer;'>" + ((lang === "ru") ? "Сохранить статистику" : "Save statistic") + "</a></li>";
  1526. if (uskeys.length > 0) {
  1527. mtext += "<br>";
  1528. for (var i = 0; i < uskeys.length; i++)
  1529. if (settings.UserID !== uskeys[i])
  1530. mtext += '<li><a href="http://worldoftanks.ru/community/accounts/' + uskeys[i] + '">' + (settings[uskeys[i]] ? (uskeys[i] === UserId ? "<span style='color:green;'>" + settings[uskeys[i]] + "</span>" : settings[uskeys[i]]) : 'Игрок ' + uskeys[i]) + '</a></li>';
  1531. }
  1532. if (UserId !== settings.UserID) {
  1533. mtext += "<br>";
  1534. if (uskeys.indexOf(UserId) !== -1)
  1535. mtext += '<li><a class="us-remove-stat" href="#" uid="' + UserId + '">Удалить статистику</a></li>';
  1536. }
  1537. var fake_div = document.createElement("div");
  1538. fake_div.innerHTML = mtext;
  1539. document.getElementsByClassName("b-context-menu-list__bottomindent")[0].appendChild(fake_div);
  1540. create_expanders(blockArray, lang, settings);
  1541. var statDiv = document.createElement("div"),
  1542. statDiv2 = document.createElement('div'),
  1543. statDiv3 = document.createElement('div');
  1544. statDiv2.innerHTML = statText;
  1545. statDiv2.setAttribute('style', 'text-align: center;');
  1546. statDiv.appendChild(statDiv2);
  1547. if (statTooltip.length > 0)
  1548. statDiv.setAttribute("id", "js-stat-div");
  1549. statDiv.className = (statTooltip.length > 0 ? "js-tooltip " : "") + "spoiler";
  1550. statDiv3.innerHTML = statTooltip;
  1551. statDiv3.setAttribute("id", "js-stat-div_tooltip");
  1552. statDiv3.className = "b-tooltip-main";
  1553. statDiv.setAttribute("style", "position: fixed; bottom: 1%; right: 1%; background-color: black; z-index: 1000;");
  1554. statDiv.style.border = "#f25322 dashed 1px";
  1555. if (statTooltip.length > 0)
  1556. statDiv.appendChild(statDiv3);
  1557.  
  1558. if (daystat)
  1559. document.body.appendChild(statDiv);
  1560.  
  1561. xdr.xget("http://wot-noobs.ru/nubomer/?nick=" + playerNick, outWotNoobStat);
  1562. document.getElementsByClassName("t-profile__vehicle")[0].style.width = '140%';
  1563.  
  1564. function saveTanksArr(response) {
  1565. var now = new Date(),
  1566. time = now.getTime();
  1567. time += 3600 * 24 * 1000;
  1568. now.setTime(time);
  1569. SetLSData("AllTanksArr", response, now.toGMTString());
  1570. var UserId = window.location.href.match(/\/(\d+)/)[1];
  1571. xdr.xget("http://api." + document.location.host + "/wot/account/tanks/?application_id=" + api_key + "&account_id=" + UserId, fixStatData);
  1572. }
  1573.  
  1574. function EffTooltip(ttype, tval, effsArr, allB, tAvgL, lang) {
  1575. var retStr = tval + " <font color='red'>/</font> <font color='green'>" + allB + "</font><br>",
  1576. tPval;
  1577. if (ttype === "damage") {
  1578. tPval = tval / allB * (10 / (tAvgL + 2)) * (0.23 + 2 * tAvgL / 100);
  1579. retStr += "<font color='" + CalcEffColor(effsArr[0], 'eff')[0] + "'>" + (tPval / effsArr[0] * 100).toFixed(2) + "%" + (lang === "ru" ? " от эффективности" : " of eff. rating") + " (" + tPval.toFixed(2) + ")</font><br>";
  1580. tPval = tval / allB * 530 / (184 * Math.pow(Math.E, 0.24 * tAvgL) + 130) + (6 - Math.min(tAvgL, 6)) * -60;
  1581. retStr += "<font color='" + CalcEffColor(effsArr[2], 'wn6')[0] + "'>" + (tPval / effsArr[2] * 100).toFixed(2) + "%" + (lang === "ru" ? " от рейтинга WN6" : " of WN6 rating") + " (" + tPval.toFixed(2) + ")</font>";
  1582. } else if (ttype === "frags") {
  1583. tPval = tval / allB * 250;
  1584. retStr += "<font color='" + CalcEffColor(effsArr[0], 'eff')[0] + "'>" + (tPval / effsArr[0] * 100).toFixed(2) + "%" + (lang === "ru" ? " от эффективности" : " of eff. rating") + " (" + tPval.toFixed(2) + ")</font><br>";
  1585. tPval = (1240 - 1040 / Math.pow(Math.min(tAvgL, 6), 0.164)) * tval / allB + (6 - Math.min(tAvgL, 6)) * -60;
  1586. retStr += "<font color='" + CalcEffColor(effsArr[2], 'wn6')[0] + "'>" + (tPval / effsArr[2] * 100).toFixed(2) + "%" + (lang === "ru" ? " от рейтинга WN6" : " of WN6 rating") + " (" + tPval.toFixed(2) + ")</font>";
  1587. } else if (ttype === "spotted") {
  1588. tPval = tval / allB * 150;
  1589. retStr += "<font color='" + CalcEffColor(effsArr[0], 'eff')[0] + "'>" + (tPval / effsArr[0] * 100).toFixed(2) + "%" + (lang === "ru" ? " от эффективности" : " of eff. rating") + " (" + tPval.toFixed(2) + ")</font><br>";
  1590. tPval = tval / allB * 125 + (6 - Math.min(tAvgL, 6)) * -60;
  1591. retStr += "<font color='" + CalcEffColor(effsArr[2], 'wn6')[0] + "'>" + (tPval / effsArr[2] * 100).toFixed(2) + "%" + (lang === "ru" ? " от рейтинга WN6" : " of WN6 rating") + " (" + tPval.toFixed(2) + ")</font>";
  1592. } else if (ttype === "caps") {
  1593. tPval = Math.log((tval / allB) + 1) / Math.log(1.732) * 150;
  1594. retStr += "<font color='" + CalcEffColor(effsArr[0], 'eff')[0] + "'>" + (tPval / effsArr[0] * 100).toFixed(2) + "%" + (lang === "ru" ? " от эффективности" : " of eff. rating") + " (" + tPval.toFixed(2) + ")</font><br>";
  1595. tPval = 0;
  1596. retStr += "<font color='" + CalcEffColor(effsArr[2], 'wn6')[0] + "'>" + (tPval / effsArr[2] * 100).toFixed(2) + "%" + (lang === "ru" ? " от рейтинга WN6" : " of WN6 rating") + " (" + tPval.toFixed(2) + ")</font>";
  1597. } else if (ttype === "defs") {
  1598. tPval = tval / allB * 150;
  1599. retStr += "<font color='" + CalcEffColor(effsArr[0], 'eff')[0] + "'>" + (tPval / effsArr[0] * 100).toFixed(2) + "%" + (lang === "ru" ? " от эффективности" : " of eff. rating") + " (" + tPval.toFixed(2) + ")</font><br>";
  1600. tPval = Math.min(tval / allB, 2.2) * 100 + (6 - Math.min(tAvgL, 6)) * -60;
  1601. retStr += "<font color='" + CalcEffColor(effsArr[2], 'wn6')[0] + "'>" + (tPval / effsArr[2] * 100).toFixed(2) + "%" + (lang === "ru" ? " от рейтинга WN6" : " of WN6 rating") + " (" + tPval.toFixed(2) + ")</font>";
  1602. }
  1603. return retStr;
  1604. }
  1605.  
  1606. function getNewScriptVersion(response) {
  1607. var regexp = /<b>Version:<\/b>[^0-9\.]+([0-9\.]+)[^0-9\.]+<\/p>/gi,
  1608. res = regexp.exec(response);
  1609. if (res.length > 0) {
  1610. if (res[1] !== scriptVersion)
  1611. popup(lang === "ru" ? "Вышла новая версия скрипта " + res[1] + ".<br>Пожалуйста, обновите скрипт." : "New script version " + res[1] + " enable.<br>Please upgrade script.", false, false);
  1612. var now = new Date();
  1613. var time = now.getTime();
  1614. time += 3600 * 6 * 1000;
  1615. now.setTime(time);
  1616. document.cookie = 'usScriptVer=' + res[1] + '; expires=' + now.toGMTString() + '; domain=.' + window.location.host.toString() + '; path=/community/;';
  1617. }
  1618. }
  1619.  
  1620. function create_expanders(bA, lang, settings) {
  1621. var spMet = document.getElementsByClassName("b-user-block__sparks")[0],
  1622. spDiv = document.createElement('div'),
  1623. spA = document.createElement('a'),
  1624. spSp = document.createElement('span');
  1625. var blBool = settings.speed && (toFl(settings.speed[1]) !== 0 || toFl(settings.speed[0]) !== 0);
  1626. spSp.className = "b-fake-link";
  1627. spSp.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок спидометров' : 'Expand speedometers') : (lang === "ru" ? 'Свернуть блок спидометров' : 'Collapse speedometers');
  1628. spA.appendChild(spSp);
  1629. spA.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1630. spA.setAttribute('curSt', blBool ? 1 : 0);
  1631. spA.setAttribute('curStText', (lang === "ru" ? 'спидометров' : 'speedometers'));
  1632. spA.href = "#";
  1633. spDiv.appendChild(spA);
  1634. spDiv.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1635. spMet.parentNode.insertBefore(spDiv, spMet);
  1636. if (settings.speed && toFl(settings.speed[1]) !== 0)
  1637. spDiv.setAttribute('style', 'display:none;');
  1638. if (blBool)
  1639. spDiv.nextElementSibling.setAttribute('style', 'display:none;');
  1640.  
  1641. var pLink = document.getElementsByClassName("b-personal-link")[0];
  1642.  
  1643. if (pLink) {
  1644. var plDiv = pLink.parentNode.parentNode,
  1645. spDiv1 = document.createElement('div'),
  1646. spA1 = document.createElement('a'),
  1647. spSp1 = document.createElement('span');
  1648. blBool = settings.pers && (toFl(settings.pers[1]) !== 0 || toFl(settings.pers[0]) !== 0);
  1649. spSp1.className = "b-fake-link";
  1650. spSp1.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок "Личные данные"' : 'Expand "Personal"') : (lang === "ru" ? 'Свернуть блок "Личные данные"' : 'Collapse "Personal"');
  1651. spA1.appendChild(spSp1);
  1652. spA1.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1653. spA1.setAttribute('curSt', blBool ? 1 : 0);
  1654. spA1.setAttribute('curStText', (lang === "ru" ? '"Личные данные"' : '"Personal"'));
  1655. spA1.href = "#";
  1656. spDiv1.appendChild(spA1);
  1657. spDiv1.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1658. plDiv.parentNode.insertBefore(spDiv1, plDiv);
  1659. if (settings.pers && toFl(settings.pers[1]) !== 0)
  1660. spDiv1.setAttribute('style', 'display:none;');
  1661. if (blBool)
  1662. spDiv1.nextElementSibling.setAttribute('style', 'display:none;');
  1663. }
  1664.  
  1665. var spMet2 = document.getElementsByClassName("b-diagrams-sector")[0],
  1666. spDiv2 = document.createElement('div'),
  1667. spA2 = document.createElement('a'),
  1668. spSp2 = document.createElement('span');
  1669. blBool = settings.diagr && (toFl(settings.diagr[1]) !== 0 || toFl(settings.diagr[0]) !== 0);
  1670. spSp2.className = "b-fake-link";
  1671. spSp2.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок диаграм' : 'Expand diargams') : (lang === "ru" ? 'Свернуть блок диаграм' : 'Collapse diargams');
  1672. spA2.appendChild(spSp2);
  1673. spA2.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1674. spA2.setAttribute('curSt', blBool ? 1 : 0);
  1675. spA2.setAttribute('curStText', (lang === "ru" ? 'диаграм' : 'diargams'));
  1676. spA2.href = "#";
  1677. spDiv2.appendChild(spA2);
  1678. spDiv2.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1679. spMet2.parentNode.insertBefore(spDiv2, spMet2);
  1680. if (settings.diagr && toFl(settings.diagr[1]) !== 0)
  1681. spDiv2.setAttribute('style', 'display:none;');
  1682. if (blBool) {
  1683. spDiv2.nextElementSibling.setAttribute('style', 'display:none;');
  1684. spDiv2.previousElementSibling.setAttribute('style', 'display:none;');
  1685. }
  1686.  
  1687. var spMet3 = document.getElementsByClassName("b-result-classes")[0].parentNode,
  1688. spDiv3 = document.createElement('div'),
  1689. spA3 = document.createElement('a'),
  1690. spSp3 = document.createElement('span');
  1691. blBool = settings.common && (toFl(settings.common[1]) !== 0 || toFl(settings.common[0]) !== 0);
  1692. spSp3.className = "b-fake-link";
  1693. spSp3.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок "Общее"' : 'Expand "Common"') : (lang === "ru" ? 'Свернуть блок "Общее"' : 'Collapse "Common"');
  1694. spA3.appendChild(spSp3);
  1695. spA3.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1696. spA3.setAttribute('curSt', blBool ? 1 : 0);
  1697. spA3.setAttribute('curStText', (lang === "ru" ? '"Общее"' : '"Common"'));
  1698. spA3.href = "#";
  1699. spDiv3.appendChild(spA3);
  1700. spDiv3.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1701. spMet3.parentNode.insertBefore(spDiv3, spMet3);
  1702. if (settings.common && toFl(settings.common[1]) !== 0)
  1703. spDiv3.setAttribute('style', 'display:none;');
  1704. if (blBool) {
  1705. spDiv3.nextElementSibling.setAttribute('style', 'display:none;');
  1706. spDiv3.previousElementSibling.setAttribute('style', 'display:none;');
  1707. }
  1708.  
  1709. var spMet5 = document.getElementsByClassName("t-profile")[0],
  1710. spDiv5 = document.createElement('div'),
  1711. spA5 = document.createElement('a'),
  1712. spSp5 = document.createElement('span');
  1713. blBool = settings.rat && (toFl(settings.rat[1]) !== 0 || toFl(settings.rat[0]) !== 0);
  1714. spSp5.className = "b-fake-link";
  1715. spSp5.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок "Рейтинги"' : 'Expand "Ratings"') : (lang === "ru" ? 'Свернуть блок "Рейтинги"' : 'Collapse "Ratings"');
  1716. spA5.appendChild(spSp5);
  1717. spA5.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1718. spA5.setAttribute('curSt', blBool ? 1 : 0);
  1719. spA5.setAttribute('curStText', (lang === "ru" ? '"Рейтинги"' : '"Ratings"'));
  1720. spA5.href = "#";
  1721. spDiv5.appendChild(spA5);
  1722. spDiv5.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1723. spMet5.parentNode.insertBefore(spDiv5, spMet5);
  1724. if (settings.rat && toFl(settings.rat[1]) !== 0)
  1725. spDiv5.setAttribute('style', 'display:none;');
  1726. if (blBool) {
  1727. spDiv5.nextElementSibling.setAttribute('style', 'display:none;');
  1728. document.getElementsByClassName("b-composite-heading")[0].setAttribute('style', 'display:none;');
  1729. document.getElementsByClassName("b-profile-link")[0].setAttribute('style', 'display:none;');
  1730. document.getElementsByClassName("b-hr-layoutfix")[2].setAttribute('style', 'display:none;');
  1731. }
  1732.  
  1733. var spMet5 = document.getElementsByClassName("t-profile")[1],
  1734. spDiv5 = document.createElement('div'),
  1735. spA5 = document.createElement('a'),
  1736. spSp5 = document.createElement('span');
  1737. blBool = settings.veh && (toFl(settings.veh[1]) !== 0 || toFl(settings.veh[0]) !== 0);
  1738. spSp5.className = "b-fake-link";
  1739. spSp5.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок "Техника"' : 'Expand "Vehicles"') : (lang === "ru" ? 'Свернуть блок "Техника"' : 'Collapse "Vehicles"');
  1740. spA5.appendChild(spSp5);
  1741. spA5.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1742. spA5.setAttribute('curSt', blBool ? 1 : 0);
  1743. spA5.setAttribute('curStText', (lang === "ru" ? '"Техника"' : '"Vehicles"'));
  1744. spA5.href = "#";
  1745. spDiv5.appendChild(spA5);
  1746. spDiv5.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1747. spMet5.parentNode.insertBefore(spDiv5, spMet5);
  1748. if (settings.veh && toFl(settings.veh[1]) !== 0)
  1749. spDiv5.setAttribute('style', 'display:none;');
  1750. var onb = document.createElement('div');
  1751. onb.innerHTML = "<input type='checkbox' name='new' id='js-nb-ch'> " + ((lang === "ru") ? "только новые бои" : "only new battles");
  1752. var sttab = document.getElementsByClassName("t-profile__vehicle")[0];
  1753. sttab.parentNode.insertBefore(onb, sttab);
  1754. var utanks = document.createElement('div');
  1755. utanks.innerHTML = "<a href='#' id='show-tanks-rating' style='padding-left:5px;'>Показать рейтинги танков</a><div class='b-user-block_left-column' id='bestTanks' style='margin-left: 15px;'></div><div class='b-user-block_right-column' id='loseTanks'></div>";
  1756. onb.nextElementSibling.parentNode.insertBefore(utanks, onb.nextElementSibling);
  1757. var onbst = "padding-bottom: 10px; padding-left: 10px;";
  1758. if (blBool) {
  1759. onbst += "display:none;";
  1760. spDiv5.nextElementSibling.setAttribute('style', 'display:none;');
  1761. utanks.setAttribute('style', 'display:none;');
  1762. spDiv5.previousElementSibling.previousElementSibling.setAttribute('style', 'display:none;');
  1763. spDiv5.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.setAttribute('style', 'display:none;');
  1764. document.getElementsByClassName('t-profile__vehicle')[0].setAttribute('style', 'display:none;');
  1765. }
  1766. onb.setAttribute('style', onbst);
  1767.  
  1768. var spMet6 = document.getElementsByClassName("js-short-achievements")[0],
  1769. spDiv6 = document.createElement('div'),
  1770. spA6 = document.createElement('a'),
  1771. spSp6 = document.createElement('span');
  1772. blBool = settings.achiev && (toFl(settings.achiev[1]) !== 0 || toFl(settings.achiev[0]) !== 0);
  1773. spSp6.className = "b-fake-link";
  1774. spSp6.innerHTML = blBool ? (lang === "ru" ? 'Развернуть блок "Достижения"' : 'Expand "Achievements"') : (lang === "ru" ? 'Свернуть блок "Достижения"' : 'Collapse "Achievements"');
  1775. spA6.appendChild(spSp6);
  1776. spA6.className = "b-vertical-arrow sh-speedometr" + (blBool ? "" : " b-vertical-arrow__open");
  1777. spA6.setAttribute('curSt', blBool ? 1 : 0);
  1778. spA6.setAttribute('curStText', (lang === "ru" ? '"Достижения"' : '"Achievements"'));
  1779. spA6.href = "#";
  1780. spDiv6.appendChild(spA6);
  1781. spDiv6.setAttribute('style', 'text-align: right; margin-right: 15px;' + (blBool ? "padding-top: 10px; padding-bottom: 10px;" : ""));
  1782. spMet6.parentNode.insertBefore(spDiv6, spMet6);
  1783. if (settings.achiev && toFl(settings.achiev[1]) !== 0)
  1784. spDiv6.setAttribute('style', 'display:none;');
  1785. if (blBool) {
  1786. spDiv6.nextElementSibling.setAttribute('style', 'display:none;');
  1787. spDiv6.previousElementSibling.setAttribute('style', 'display:none;');
  1788. document.getElementsByClassName("js-achivements-showhide")[0].setAttribute('style', 'display:none;');
  1789. }
  1790.  
  1791. if (settings.compare && window.location.href.indexOf(settings.UserID) === -1) {
  1792. var fake_div = document.createElement("div");
  1793. fake_div.innerHTML = "<li><a onclick='WriteCompareStat();' style='cursor: pointer;'>" + ((lang === "ru") ? 'Обновить "мои" данные' : 'Refresh "my" stat.') + "</a></li>";
  1794. document.getElementsByClassName("b-context-menu-list__bottomindent")[0].appendChild(fake_div);
  1795. }
  1796.  
  1797. var script = document.createElement("script");
  1798. script.type = "text/javascript";
  1799. script.textContent =
  1800. "function popup(message, autoHide, autoReload) {var maskHeight = $(document).height();var maskWidth = $(window).width();var dialogTop = (maskHeight/3) - ($('#dialog-box').height());var dialogLeft = (maskWidth/2) - ($('#dialog-box').width()/2);$('#dialog-overlay').css({height:maskHeight, width:maskWidth}).show();$('#dialog-box').show();$('#dialog-message').html(message); if (autoHide) setTimeout(function(){$('#dialog-overlay, #dialog-box').hide();} , 2000); if (autoReload) setTimeout(function(){window.location.reload();} , 2000);}"
  1801. + " jQuery(document).ready(function() {"
  1802. + " function expandTanks() {$('.t-profile_tankstype__item').click();}"
  1803. + " function bestUserTanks() { var tanskArr = [], c; $('.t-profile_tankstype__item').each(function() {var tName = $(this).children()[0].getElementsByClassName('b-name-vehicle')[0].innerHTML, prRat=$($(this).next().children()[0]).find('.us-trating').attr('pr'); tanskArr.push({'name': tName, 'pr': prRat});}); for (var i=0; i<tanskArr.length; i++) for (var j=i; j<tanskArr.length; j++) if (parseFloat(tanskArr[i].pr) < parseFloat(tanskArr[j].pr)) {c = tanskArr[i]; tanskArr[i] = tanskArr[j]; tanskArr[j] = c;}"
  1804. + " var bText='<h3>Лучшие танки игрока (PR)</h3><ul>', lText= '<h3>Худшие танки игрока (PR)</h3><ul>'; for (var i=0; i<5; i++) {bText += '<li style=\"color: #' + CalcEffColor(parseFloat(tanskArr[i].pr), 'pr')[0] + ';\">' + (i+1) + '. ' + tanskArr[i].name + ' - ' + tanskArr[i].pr + '</li>'; lText += '<li style=\"color: #' + CalcEffColor(parseFloat(tanskArr[tanskArr.length - 1 - i].pr), 'pr')[0] + ';\">' + (tanskArr.length - 1 - i) + '. ' + tanskArr[tanskArr.length - 1 - i].name + ' - ' + tanskArr[tanskArr.length - 1 - i].pr + '</li>';} bText += '</ul><br>'; lText += '</ul><br>'; $('#bestTanks').html(bText); $('#loseTanks').html(lText);}"
  1805. + " $('.t-profile_tankstype__item').click(function (){"
  1806. + " var me=this;"
  1807. + " function tankRating() {"
  1808. + " if ($($(me).next().children()[0]).find('.us-trating').length === 0) {$($(me).next().children()[0]).html('<h3 class=\"us-trating\"></h3><br>' + $($(me).next().children()[0]).html())}"
  1809. + " var wcount=parseInt($($(me).children()[2]).attr('wcount')), bcount=$($(me).children()[1]).attr('data-battle_count'), tDamage=toFl($(me).next().find('td[data-field=\"damage_dealt\"]')[0].innerHTML), lev=0, tnaSumm=0, nominalDamage=eval(GetLSData(\"nominalDamage\")),"
  1810. + " tName=$(me).children()[0].getElementsByTagName('img')[0].src.match('\/[^-]+-([^\/]*)\.png')[1].toLowerCase();"
  1811. + " for (i = 0; i < nominalDamage.length; i++) {if (nominalDamage[i].id.toLowerCase() === tName){ lev = nominalDamage[i].level; tnaSumm = bcount * nominalDamage[i].nominalDamage; break;}}"
  1812. + " if (tnaSumm) {var PR = (500 * (wcount / bcount) / 0.4856) + (1000 * tDamage / (tnaSumm * 0.975));"
  1813. + " var clearedFromPenalties1 = 1500,"
  1814. + " expectedMinBattles1 = 500,"
  1815. + " expectedMinAvgTier1 = 6,"
  1816. + " clearedFromPenalties2 = 1900,"
  1817. + " expectedMinBattles2 = 2000,"
  1818. + " expectedMinAvgTier2 = 7;"
  1819. + " if (PR > clearedFromPenalties1)"
  1820. + " PR = PR - (PR - clearedFromPenalties1) * Math.pow(Math.max(0, 1 - (lev / expectedMinAvgTier1), 1 - (bcount / expectedMinBattles1)), 0.5);"
  1821. + " if (PR > clearedFromPenalties2)"
  1822. + " PR = PR - (PR - clearedFromPenalties2) * Math.pow(Math.max(0, 1 - (lev / expectedMinAvgTier2), 1 - (bcount / expectedMinBattles2)), 0.5); PR = PR.toFixed(2);} else {PR = 0}"
  1823. + " $($(me).next().children()[0]).find('.us-trating').attr('style', 'text-align: center; color: #' + (tnaSumm ? CalcEffColor(PR, 'pr')[0] : 'fff') + ';'); $($(me).next().children()[0]).find('.us-trating').html('Рейтинг нагиба: ' + PR); $($(me).next().children()[0]).find('.us-trating').attr('pr', PR);"
  1824. + " }"
  1825. + " setTimeout(tankRating, 1000);"
  1826. + " }); $('#show-tanks-rating').click(function (event){event.preventDefault(); expandTanks(); setTimeout(expandTanks, 8000); setTimeout(bestUserTanks, 9000);});"
  1827. + " $('a.btn-ok, #dialog-overlay, #dialog-box').click(function () {$('#dialog-overlay, #dialog-box').hide();return false;});$(window).resize(function () {if (!$('#dialog-box').is(':hidden')) popup();});"
  1828. + " $('.sh-speedometr').click(function(event) {event.preventDefault();"
  1829. + " if ($(this).attr('curStText') === '\"Достижения\"' || $(this).attr('curStText') === '\"Achievements\"') {"
  1830. + " if ($('.js-achivements-showhide').hasClass('b-vertical-arrow__open')) {var achDiv = $('.js-full-achievements')} else {achDiv = $('.js-short-achievements');}"
  1831. + " if (parseInt($(this).attr('curSt')) === 0) {achDiv.slideUp('slow'); $(this).attr('curSt', 1); $(this).removeClass('b-vertical-arrow__open'); $(this).children()[0].innerHTML =(document.title.indexOf('Профиль игрока')>-1 ? 'Развернуть блок ' : 'Expand ') + $(this).attr('curStText'); $('.js-achivements-showhide').hide(); $(this).parent().css('padding-top', '10px'); $(this).parent().css('padding-bottom', '10px'); $(this).parent().prev().hide();"
  1832. + " } else { achDiv.slideDown('slow'); $(this).attr('curSt', 0); $(this).addClass('b-vertical-arrow__open'); $(this).children()[0].innerHTML =(document.title.indexOf('Профиль игрока')>-1 ? 'Свернуть блок ' : 'Collapse ') + $(this).attr('curStText'); $('.js-achivements-showhide').show(); $(this).parent().css('padding-top', '0'); $(this).parent().css('padding-bottom', '0'); $(this).parent().prev().show();}"
  1833. + " } else { if (parseInt($(this).attr('curSt')) === 0) {"
  1834. + " if ($(this).attr('curStText') === '\"Общее\"' || $(this).attr('curStText') === 'диаграм' || $(this).attr('curStText') === '\"Common\"' || $(this).attr('curStText') === 'diargams') $(this).parent().prev().hide();"
  1835. + " $(this).parent().css('padding-top', '10px');"
  1836. + " $(this).parent().css('padding-bottom', '10px');"
  1837. + " if ($(this).attr('curStText') === '\"Рейтинги\"' || $(this).attr('curStText') === '\"Ratings\"') {$('.b-composite-heading').hide(); $('.b-profile-link').hide(); $($('.b-hr-layoutfix')[2]).hide()}"
  1838. + " if ($(this).attr('curStText') === '\"Техника\"') {$(this).parent().prev().prev().prev().prev().hide(); $(this).parent().next().next().hide(); $(this).parent().prev().prev().hide(); $('.t-profile__vehicle').hide();}"
  1839. + " if ($(this).attr('curStText') === '\"Vehicles\"') {$(this).parent().prev().hide(); $(this).parent().prev().prev().hide();}"
  1840. + " $(this).parent().next().slideUp('slow'); $(this).attr('curSt', 1); $(this).removeClass('b-vertical-arrow__open'); $(this).children()[0].innerHTML =(document.title.indexOf('Профиль игрока')>-1 ? 'Развернуть блок ' : 'Expand ') + $(this).attr('curStText');} "
  1841. + " else {"
  1842. + " $(this).parent().css('padding-top', '0');"
  1843. + " $(this).parent().css('padding-bottom', '0');"
  1844. + " if ($(this).attr('curStText') === '\"Общее\"' || $(this).attr('curStText') === 'диаграм' || $(this).attr('curStText') === '\"Common\"' || $(this).attr('curStText') === 'diargams') $(this).parent().prev().show();"
  1845. + " if ($(this).attr('curStText') === '\"Рейтинги\"' || $(this).attr('curStText') === '\"Ratings\"') {$('.b-composite-heading').show(); $('.b-profile-link').show(); $($('.b-hr-layoutfix')[2]).show();}"
  1846. + " if ($(this).attr('curStText') === '\"Техника\"') {$(this).parent().prev().prev().prev().prev().show(); $(this).parent().next().next().show(); $(this).parent().prev().prev().show(); $('.t-profile__vehicle').show();}"
  1847. + " if ($(this).attr('curStText') === '\"Vehicles\"') {$(this).parent().prev().show();$(this).parent().prev().prev().show();}"
  1848. + " $(this).parent().next().slideDown('slow'); $(this).attr('curSt', 0); $(this).addClass('b-vertical-arrow__open'); $(this).children()[0].innerHTML = (document.title.indexOf('Профиль игрока')>-1 ? 'Свернуть блок ' : 'Collapse ')+ $(this).attr('curStText');} }});"
  1849. + " $('#autor-pay').click(function(event) {event.preventDefault(); if ($(this).hasClass('b-vertical-arrow__open')) {$(this).removeClass('b-vertical-arrow__open'); $('.Untext').slideUp();} else {$(this).addClass('b-vertical-arrow__open'); $('.Untext').slideDown();}});"
  1850. + " $('#js-nb-ch').change(function() {if($(this).is(':checked')) {$('.js-tank-head-row').hide(); $('.js-tank-row').hide(); $('.js-nb-tank-row').show();} else {$('.js-tank-head-row').show(); $('.js-tank-row').show()} });"
  1851. + " $('.us-close-settings').click(function(event) {event.preventDefault(); $('#us-settings-overlay').hide(); $('#us-settings-block').hide(); });"
  1852. + " $('#us-settings-a').click(function(event) {event.preventDefault(); $('#us-settings-overlay').show(); $('#us-settings-block').show(); });"
  1853. + " $('#us-settings-current-page').change(function(event) {event.preventDefault(); if ($(this).is(':checked')) {$('#us-settings-compare-page').val(window.location.href)} else {$('#us-settings-compare-page').val('');}});"
  1854. + " $('#us-settings-compare').change(function(event) {if ($(this).is(':checked')) {$('#us-my-compare-block').show()} else {$('#us-my-compare-block').hide()}});"
  1855. + " $('#us-settings-save').click(function(event) {event.preventDefault(); var uBls = $('.us-set-block'), saveC = ''; for (var i=0; i<uBls.length; i++) {saveC += uBls[i].getAttribute('btype') + ';' + (uBls[i].cells[1].getElementsByTagName('input')[0].checked ? '1' : '0') + ';' + (uBls[i].cells[2].getElementsByTagName('input')[0].checked ? '1' : '0') + '/';}"
  1856. + " var padr=$('#us-settings-compare-page').val(), cmpD = $('#us-settings-compare')[0].checked; if(!padr) padr='x'; if (cmpD && padr.length === 0) return false; saveC += '|'; saveC += (cmpD ? '1' : '0') + ';' + padr; var gtype = $('input[name=gtype]:checked').val(); saveC += '|'; saveC += gtype; saveC += '|'; $('.us_st_name').each(function() {saveC += $(this).attr('uid') + ';' + $(this).val() + '/';}); setCookie('usSettings', saveC, '; expires=Mon, 01-Jan-2031 00:00:00 GMT' +'; domain=.' + window.location.host.toString() + '; path=/community;'); $('#us-settings-overlay').hide(); $('#us-settings-block').hide(); window.location.reload();});"
  1857. + " $('.us-show-medals').click(function(event) {event.preventDefault(); if ($(this).hasClass('b-vertical-arrow__open')) {$(this).removeClass('b-vertical-arrow__open'); $(this).parent().next().slideUp('slow');} else {$(this).addClass('b-vertical-arrow__open'); $(this).parent().next().slideDown('slow');}});"
  1858. + " $('#WriteStat').click(function(event) {event.preventDefault(); WriteStat();});"
  1859. + " $('input[name=ggtype]').change(function(event) {var gtype = $('input[name=ggtype]:checked').val(); $('div[gtype=bat]').show(); $('div[gtype=date]').show(); if (gtype === 'bat') $('div[gtype=date]').hide(); if (gtype === 'date') $('div[gtype=bat]').hide();});"
  1860. + " $('.us-remove-stat').click(function(event) {event.preventDefault(); if (confirm('Вы действительно хотите удалить сохраненную статистику данного игрока?')) {var uid = $(this).attr('uid'); for (var i=0; i<8; i++) {localStorage.removeItem('daystat_'+uid+'_'+i)} window.location.reload();} });"
  1861. + ' $("#g' + settings.gtype + '").click(); ' + "$('div[gtype=bat]').show(); $('div[gtype=date]').show(); var ggtype = '" + settings.gtype + "'; if (ggtype === 'bat') $('div[gtype=date]').hide(); if (ggtype === 'date') $('div[gtype=bat]').hide();"
  1862. + "}); ";
  1863. document.body.appendChild(script);
  1864. }
  1865.  
  1866. function setup_script(script_name) {
  1867. var script = document.createElement("script");
  1868. script.type = "text/javascript";
  1869. script.textContent = script_name.toString();
  1870. document.body.appendChild(script);
  1871. }
  1872.  
  1873. function CalcAvgLev(tanksarr) {
  1874. var avgL = 0,
  1875. totalB = 0,
  1876. tnaSum = 0,
  1877. expDmg = 0,
  1878. expSpot = 0,
  1879. expFrag = 0,
  1880. expDef = 0,
  1881. expWinRate = 0,
  1882. tanks = document.getElementsByClassName("t-profile_tankstype__item"),
  1883. tbcount,
  1884. tlev,
  1885. imgName,
  1886. tankLevs = {
  1887. "I": 1,
  1888. "II": 2,
  1889. "III": 3,
  1890. "IV": 4,
  1891. "V": 5,
  1892. "VI": 6,
  1893. "VII": 7,
  1894. "VIII": 8,
  1895. "IX": 9,
  1896. "X": 10
  1897. };
  1898. var nominalDamage = GetLSData("nominalDamage"),
  1899. nominalDamageArr = [];
  1900. if (nominalDamage) {
  1901. nominalDamage = eval(nominalDamage);
  1902. for (i = 0; i < nominalDamage.length; i++) {
  1903. if (nominalDamage[i].nominalDamage)
  1904. nominalDamageArr[(nominalDamage[i].id).toLowerCase()] = [
  1905. nominalDamage[i].nominalDamage * 1,
  1906. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.damage * 1 : 0,
  1907. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.spots * 1 : 0,
  1908. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.frags * 1 : 0,
  1909. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.defensePoints * 1 : 0,
  1910. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.winRate * 1 : 0,
  1911. ];
  1912. }
  1913. } else {
  1914. xdr.xget("http://www.noobmeter.com/tankListJson/elfx_133054", savenominalDamage);
  1915. }
  1916.  
  1917. for (var i = 0; i < tanks.length; i++) {
  1918. imgName = (tanks[i].cells[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1]).toLowerCase();
  1919. if (tanksarr.indexOf(imgName) === -1)
  1920. tanksarr[imgName] = {};
  1921. tbcount = toFl(tanks[i].cells[1].innerHTML);
  1922. if (nominalDamageArr[imgName]) {
  1923. if (nominalDamageArr[imgName][0]) tnaSum += tbcount * nominalDamageArr[imgName][0];
  1924. expDmg += tbcount * nominalDamageArr[imgName][1];
  1925. expSpot += tbcount * nominalDamageArr[imgName][2];
  1926. expFrag += tbcount * nominalDamageArr[imgName][3];
  1927. expDef += tbcount * nominalDamageArr[imgName][4];
  1928. expWinRate += tbcount * nominalDamageArr[imgName][5];
  1929. }
  1930. tlev = tankLevs[tanks[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML];
  1931. tanksarr[imgName]['tlev'] = tlev;
  1932. tanksarr[imgName]['img'] = tanks[i].cells[0].getElementsByTagName('img')[0].src;
  1933. tanksarr[imgName]['name'] = tanks[i].cells[0].getElementsByClassName('b-name-vehicle')[0].innerHTML;
  1934. var tcl = tanks[i].parentNode.previousElementSibling.getElementsByTagName('span')[0].getAttribute('class');
  1935.  
  1936. tanksarr[imgName]['bcount'] = tbcount;
  1937.  
  1938. if (tcl.indexOf('lighttank') !== -1) {
  1939. tanksarr[imgName]['ttype'] = 'ЛТ';
  1940. }
  1941.  
  1942. if (tcl.indexOf('mediumtank') !== -1) {
  1943. tanksarr[imgName]['ttype'] = 'СТ';
  1944. }
  1945.  
  1946. if (tcl.indexOf('heavytank') !== -1) {
  1947. tanksarr[imgName]['ttype'] = 'ТТ';
  1948. }
  1949.  
  1950. if (tcl.indexOf('at-spg') !== -1) {
  1951. tanksarr[imgName]['ttype'] = 'ПТ';
  1952. }
  1953.  
  1954. if (tcl.indexOf('_spg') !== -1) {
  1955. tanksarr[imgName]['ttype'] = 'САУ';
  1956. }
  1957.  
  1958. totalB += tbcount;
  1959. avgL += tlev * tbcount;
  1960. }
  1961.  
  1962. return [avgL / totalB, tnaSum, expDmg, expSpot, expFrag, expDef, expWinRate];
  1963. }
  1964.  
  1965. function CalcgOldAvgLev(ds) {
  1966. var avgL = 0,
  1967. totalB = 0,
  1968. tanks = document.getElementsByClassName("t-profile_tankstype__item"),
  1969. tbcount,
  1970. twcount,
  1971. tlev,
  1972. imgName,
  1973. tankLevs = {
  1974. "I": 1,
  1975. "II": 2,
  1976. "III": 3,
  1977. "IV": 4,
  1978. "V": 5,
  1979. "VI": 6,
  1980. "VII": 7,
  1981. "VIII": 8,
  1982. "IX": 9,
  1983. "X": 10
  1984. };
  1985. for (i = 0; i < tanks.length; i++) {
  1986. imgName = tanks[i].cells[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1];
  1987. if (ds[imgName]) {
  1988. tbcount = toFl(ds[imgName].b);
  1989. twcount = toFl(ds[imgName].w);
  1990. } else {
  1991. tbcount = 0;
  1992. twcount = 0;
  1993. }
  1994. tlev = tankLevs[tanks[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML];
  1995. totalB += tbcount;
  1996. avgL += tlev * tbcount;
  1997.  
  1998. }
  1999. return [avgL / totalB];
  2000. }
  2001.  
  2002. function FoundProc(Wins, Battles) {
  2003. nextD3 = Math.ceil(Wins / Battles * 100 + 0.5) - 0.5;
  2004. nextD1 = nextD3 - 1;
  2005. nextD2 = nextD3 - 0.5;
  2006. need_b1 = Math.floor(Battles - Wins * 100 / nextD1);
  2007. if (100 * Wins / Battles > nextD2)
  2008. need_b2 = Math.floor(Battles - Wins * 100 / nextD2);
  2009. else
  2010. need_b2 = Math.ceil((nextD2 * Battles - Wins * 100) / (100 - nextD2));
  2011. need_b3 = Math.ceil((nextD3 * Battles - Wins * 100) / (100 - nextD3));
  2012. return Wins + "<font color='red'>/</font> <font color='green'>" + Battles + "</font><br>" + nextD1 + "% (" + need_b1 + ")<br>" + nextD2 + "% (" + need_b2 + ")<br>" + nextD3 + "% (" + need_b3 + ")";
  2013. }
  2014.  
  2015. function CalcEffColor(effval, type) {
  2016. var lang;
  2017. if (document.title.indexOf("Профиль игрока") > -1) {
  2018. lang = "ru";
  2019. }
  2020. if (type === "eff") {
  2021. if (effval < 610)
  2022. return ['FE0E00', (610 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2023. if (effval < 850)
  2024. return ['FE7903', (850 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2025. if (effval < 1145)
  2026. return ['F8F400', (1145 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2027. if (effval < 1475)
  2028. return ['60FF00', (1475 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2029. if (effval < 1775)
  2030. return ['02C9B3', (1775 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2031. if (effval < 99999)
  2032. return ['D042F3', (lang === "ru" ? 'Максимальный уровень. Круче только вареные яйца.' : 'Max. level')];
  2033. } else if (type === "wn6") {
  2034. if (effval < 410)
  2035. return ['FE0E00', (410 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2036. if (effval < 795)
  2037. return ['FE7903', (795 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2038. if (effval < 1185)
  2039. return ['F8F400', (1185 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2040. if (effval < 1585)
  2041. return ['60FF00', (1585 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2042. if (effval < 1925)
  2043. return ['02C9B3', (1925 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2044. if (effval < 99999)
  2045. return ['D042F3', (lang === "ru" ? 'Максимальный уровень. Круче только вареные яйца.' : 'Max. level')];
  2046. } else if (type === "xvm") {
  2047. if (effval < 16.5)
  2048. return ['FE0E00', (16.5 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2049. if (effval < 33.5)
  2050. return ['FE7903', (33.5 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2051. if (effval < 52.5)
  2052. return ['F8F400', (52.5 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2053. if (effval < 75.5)
  2054. return ['60FF00', (75.5 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2055. if (effval < 92.5)
  2056. return ['02C9B3', (92.5 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2057. if (effval < 101)
  2058. return ['D042F3', (lang === "ru" ? 'Максимальный уровень. Круче только вареные яйца.' : 'Max. level')];
  2059. } else if (type === "pr") {
  2060. if (effval < 1000)
  2061. return ['FE0E00', (1000 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2062. if (effval < 1215)
  2063. return ['FE7903', (1215 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2064. if (effval < 1445)
  2065. return ['F8F400', (1445 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2066. if (effval < 1685)
  2067. return ['60FF00', (1685 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2068. if (effval < 1990)
  2069. return ['02C9B3', (1990 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2070. if (effval < 99999)
  2071. return ['D042F3', (lang === "ru" ? 'Максимальный уровень. Круче только вареные яйца.' : 'Max. level')];
  2072. } else if (type === "wn8") {
  2073. if (effval < 310)
  2074. return ['FE0E00', (310 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2075. if (effval < 750)
  2076. return ['FE7903', (750 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2077. if (effval < 1310)
  2078. return ['F8F400', (1310 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2079. if (effval < 1965)
  2080. return ['60FF00', (1965 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2081. if (effval < 2540)
  2082. return ['02C9B3', (2540 - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга' : ' balls to next level')];
  2083. if (effval < 99999)
  2084. return ['D042F3', (lang === "ru" ? 'Максимальный уровень. Круче только вареные яйца.' : 'Max. level')];
  2085. }
  2086. return ['white', ''];
  2087. }
  2088.  
  2089. function outWotNoobStatColor(nr) {
  2090. if (0 <= nr && nr < 60)
  2091. return '992323';
  2092. if (60 <= nr && nr < 80)
  2093. return 'c4595e';
  2094. if (80 <= nr && nr < 110)
  2095. return 'dad858';
  2096. if (110 <= nr && nr < 190)
  2097. return '00aa40';
  2098. if (190 <= nr)
  2099. return 'c270ae';
  2100. }
  2101.  
  2102. function outWotNoobStatTitle(nr) {
  2103. if (0 <= nr && nr < 40)
  2104. return "оДНОклеточное\nподающая надежды бОльшая половина сервера";
  2105. if (40 <= nr && nr < 45)
  2106. return "донышко\nподающая надежды бОльшая половина сервера";
  2107. if (45 <= nr && nr < 50)
  2108. return "ИЛита\nподающая надежды бОльшая половина сервера";
  2109. if (50 <= nr && nr < 55)
  2110. return "НЛДнище\nподающая надежды бОльшая половина сервера";
  2111. if (55 <= nr && nr < 60)
  2112. return "неМОЩный\nподающая надежды бОльшая половина сервера";
  2113.  
  2114. if (60 <= nr && nr < 65)
  2115. return "Мистер Крабс\n~46,26%";
  2116. if (65 <= nr && nr < 70)
  2117. return "обуза\n~40,34%";
  2118. if (70 <= nr && nr < 75)
  2119. return "РАКетмэн\n~34,91%";
  2120. if (75 <= nr && nr < 80)
  2121. return "оЛОЛошка\n~29,94%";
  2122.  
  2123. if (80 <= nr && nr < 85)
  2124. return "агроЛЕНЬ\n~25,41%";
  2125. if (85 <= nr && nr < 90)
  2126. return "драчун-забияка\n~21,37%";
  2127. if (90 <= nr && nr < 95)
  2128. return "го в треньку!\n~17,76%";
  2129. if (95 <= nr && nr < 100)
  2130. return "небезнадежный\n~14,56%";
  2131. if (100 <= nr && nr < 110)
  2132. return "всё ровно\n~11,80%";
  2133.  
  2134. if (110 <= nr && nr < 120)
  2135. return "закаленный\n~7,44%";
  2136. if (120 <= nr && nr < 130)
  2137. return "раСЧЕТливый\n~4,40%";
  2138. if (130 <= nr && nr < 140)
  2139. return "пользАдел\n~2,43%";
  2140. if (140 <= nr && nr < 150)
  2141. return "PRO.думанный\~1,26%";
  2142. if (150 <= nr && nr < 160)
  2143. return "вездесуЮщий\n~0,61%";
  2144. if (160 <= nr && nr < 170)
  2145. return "УМелец\n~0,29%";
  2146. if (170 <= nr && nr < 180)
  2147. return "УМникум\n~0,13%";
  2148. if (180 <= nr && nr < 190)
  2149. return "нинзя-мастер\n~0,06%";
  2150.  
  2151. if (190 <= nr && nr < 200)
  2152. return "Джоkер\n~0,0287%";
  2153. if (200 <= nr && nr < 210)
  2154. return "игра пройдена\n~0,0141%";
  2155. if (210 <= nr && nr < 220)
  2156. return "маньяк\n~0,0077%";
  2157. if (220 <= nr && nr < 250)
  2158. return "директор зоопарка\n~0,0039%";
  2159. if (250 <= nr)
  2160. return "убийца ВБРа\n~0,0007%";
  2161. }
  2162.  
  2163. function outWotNoobStat(response) {
  2164. var regexp = /<div class="kpd">(\d*\.*\d*)+<\/div>/gi,
  2165. res = regexp.exec(response);
  2166. if (res.length > 0) {
  2167. document.getElementById("js-us-NoobStat").innerHTML = "<font color='" + outWotNoobStatColor(Number(res[1])) + "'>" + res[1] + "</font>";
  2168. document.getElementById("js-us-NoobStat_tooltip").innerHTML = outWotNoobStatTitle(Number(res[1]));
  2169. }
  2170. }
  2171. }//////////////////////////main
  2172.  
  2173. function CalcEff(New, AvgLev, battles, wins, damag, frags, spotted, caps, defs, summaryxp) {
  2174. var effs = [];
  2175. effs[0] = (damag / battles * (10 / (AvgLev + 2)) * (0.23 + 2 * AvgLev / 100) +
  2176. frags / battles * 250 +
  2177. spotted / battles * 150 +
  2178. Math.log((caps / battles) + 1) / Math.log(1.732) * 150 +
  2179. defs / battles * 150).toFixed(2); //eff
  2180. effs[1] = (damag / battles * (10 / AvgLev) * (0.15 + 2 * AvgLev / 100) +
  2181. frags / battles * (0.35 - 2 * AvgLev / 100) * 1000 +
  2182. spotted / battles * 200 +
  2183. caps / battles * 150 +
  2184. defs / battles * 150).toFixed(2); //old eff
  2185. effs[2] = ((1240 - 1040 / Math.pow(Math.min(AvgLev, 6), 0.164)) * frags / battles +
  2186. damag / battles * 530 / (184 * Math.pow(Math.E, 0.24 * AvgLev) + 130) +
  2187. spotted / battles * 125 +
  2188. Math.min(defs / battles, 2.2) * 100 +
  2189. ((185 / (0.17 + Math.pow(Math.E, (wins / battles * 100 - 35) * -0.134))) - 500) * 0.45 +
  2190. (6 - Math.min(AvgLev, 6)) * -60).toFixed(2);
  2191. if (New === 0)
  2192. effs[3] = (Math.log(battles) / 10 * (summaryxp / battles * 1 +
  2193. damag / battles * (wins / battles * 2.0 + frags / battles * 0.9 + spotted / battles * 0.5 + caps / battles * 0.5 + defs / battles * 0.5))).toFixed(2);
  2194. return effs;
  2195. }
  2196.  
  2197. function insertNewTr(NewTrParent, text, val, title, tid) {
  2198. var trNew = document.createElement('tr');
  2199. var tdNewName = document.createElement('td'),
  2200. div1 = document.createElement('div'),
  2201. div2 = document.createElement('div');
  2202. tdNewName.className = "td-minor";
  2203. tdNewName.innerHTML = text;
  2204. var tdNew = document.createElement('td');
  2205. div1.innerHTML = val;
  2206. tdNew.className = "t-dotted_value";
  2207. tdNew.appendChild(div1);
  2208. if (title && title.length) {
  2209. div1.setAttribute("id", "js-" + tid);
  2210. div1.className = "js-tooltip";
  2211. div2.innerHTML = title;
  2212. div2.setAttribute("id", "js-" + tid + "_tooltip");
  2213. div2.className = "b-tooltip-main";
  2214. tdNew.appendChild(div2);
  2215. }
  2216. NewTrParent.parentNode.appendChild(trNew);
  2217. trNew.appendChild(tdNewName);
  2218. trNew.appendChild(tdNew);
  2219. return trNew;
  2220. }
  2221.  
  2222. function fixStatData(response) {
  2223. var lang,
  2224. UserId = window.location.href.match(/\/(\d+)/)[1];
  2225. if (document.title.indexOf("Профиль игрока") > -1)
  2226. lang = "ru";
  2227. eval("var resp =" + response);
  2228. var alltanks = GetLSData("AllTanksArr");
  2229. if (alltanks) {
  2230. eval("var alltdata =" + alltanks);
  2231. var alltanksArr = [], tankid;
  2232. for (var t in alltdata.data) {
  2233. tankid = alltdata.data[t].tank_id;
  2234. alltanksArr[tankid] = [];
  2235. alltanksArr[tankid]["name"] = alltdata.data[t].name_i18n;
  2236. alltanksArr[tankid]["is_premium"] = alltdata.data[t].is_premium;
  2237. }
  2238. var ttStat = [], tStat = [];
  2239. for (var i = 0; i < resp.data[UserId].length; i++) {
  2240. tankid = resp.data[UserId][i].tank_id;
  2241. if (tankid in alltanksArr) {
  2242. var tName = alltanksArr[tankid]["name"];
  2243. ttStat[tName] = {"win": resp.data[UserId][i].statistics.wins, "battles": resp.data[UserId][i].statistics.battles, "is_premium": alltanksArr[tankid]["is_premium"]};
  2244. }
  2245. }
  2246. var tanks = document.getElementsByClassName("t-profile_tankstype__item");
  2247. for (i = 0; i < tanks.length; i++) {
  2248. var t = tanks[i].cells,
  2249. imgName = t[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1],
  2250. tName = t[0].getElementsByClassName('b-name-vehicle')[0].innerHTML;
  2251. tanks[i].className += " js-tooltip";
  2252. tanks[i].id = "us-t-" + imgName;
  2253. var div = document.createElement('div');
  2254. tStat[imgName] = ttStat[tName];
  2255. if (tStat[imgName]) {
  2256. if (tStat[imgName].is_premium) tanks[i].cells[0].getElementsByClassName('b-name-vehicle')[0].setAttribute('style', 'color: #ffc363 !important;');
  2257. div.innerHTML = "<div style='float:left;'>" + (lang === "ru" ? "Боев|Побед (%Побед)" : "Battles|Wins (%Wins)") + "</div><div style='float:right; padding-left:10px;'>" + tStat[imgName].battles + "|" + tStat[imgName].win + " (" + col(tStat[imgName].win / tStat[imgName].battles * 100, 2) + ")</div>";
  2258. }
  2259. div.setAttribute("id", "us-t-" + imgName + "_tooltip");
  2260. div.className = "b-tooltip-main";
  2261. tanks[i].appendChild(div);
  2262. if (tStat[imgName])
  2263. t[2].innerHTML = col(tStat[imgName].win / tStat[imgName].battles * 100, 2);
  2264. if (tStat[imgName])
  2265. t[2].setAttribute("wcount", tStat[imgName].win);
  2266. }
  2267. var daystat = GetStat();
  2268. if (daystat) {
  2269. var dayArray = [],
  2270. dsArr = daystat.split("|"),
  2271. strArray = dsArr[0].split("/");
  2272. for (var i = 1; i < strArray.length; i++) {
  2273. str = strArray[i].split(";");
  2274. var tName = str[0].toLowerCase();
  2275. dayArray[tName] = new Object();
  2276. dayArray[tName].b = toFl(str[1]);
  2277. dayArray[tName].w = str.length > 3 ? str[3] : -1;
  2278. }
  2279. PaintOldAvgLev(dayArray);
  2280. }
  2281. //OutUnoffStat();
  2282. } else {
  2283. xdr.xget("http://api." + document.location.host + "/wot/encyclopedia/tanks/?application_id=" + api_key, saveTanksArr);
  2284. }
  2285. }
  2286.  
  2287. function batCompanyClan(response) {
  2288. eval("var resp =" + response);
  2289. var UserId = window.location.href.match(/\/(\d+)/)[1],
  2290. companyTable = document.getElementById('company-battles'),
  2291. clanTable = document.getElementById('clan-battles'),
  2292. daystat = GetStat(),
  2293. oldeffres = false;
  2294. if (daystat) {
  2295. var dsArr = daystat.split("|");
  2296. if (dsArr[2]) {
  2297. eval('ostr =' + dsArr[2]);
  2298. var oldeffres = CalcEff(0, 6,
  2299. ostr.all.battles - ostr.company.battles - ostr.clan.battles,
  2300. ostr.all.wins - ostr.company.wins - ostr.clan.wins,
  2301. ostr.all.damage_dealt - ostr.company.damage_dealt - ostr.clan.damage_dealt,
  2302. ostr.all.frags - ostr.company.frags - ostr.clan.frags,
  2303. ostr.all.spotted - ostr.company.spotted - ostr.clan.spotted,
  2304. ostr.all.capture_points - ostr.company.capture_points - ostr.clan.capture_points,
  2305. ostr.all.dropped_capture_points - ostr.company.dropped_capture_points - ostr.clan.dropped_capture_points,
  2306. ostr.all.xp - ostr.company.xp - ostr.clan.xp);
  2307. var ohr = (ostr.all.hits / ostr.all.shots * 100).toFixed(2),
  2308. osurvb = (ostr.all.survived_battles / ostr.all.battles * 100).toFixed(2);
  2309. }
  2310. }
  2311.  
  2312. insertNewTr(companyTable, "Боев", resp.data[UserId].statistics.company.battles +
  2313. (oldeffres ? "<font color='green'>" + ((resp.data[UserId].statistics.company.battles - ostr.company.battles > 0) ? " (+" + (resp.data[UserId].statistics.company.battles - ostr.company.battles) + ")" : "") + "</font>" : "") +
  2314. " (" + (resp.data[UserId].statistics.company.battles / resp.data[UserId].statistics.all.battles * 100).toFixed(2) + "%)",
  2315. resp.data[UserId].statistics.company.battles + " <font color='red'>/</font> <font color='green'>" + resp.data[UserId].statistics.all.battles + "</font>", "cpbat");
  2316. insertNewTr(companyTable, "Побед", resp.data[UserId].statistics.company.wins +
  2317. (oldeffres ? "<font color='green'>" + ((resp.data[UserId].statistics.company.wins - ostr.company.wins > 0) ? " (+" + (resp.data[UserId].statistics.company.wins - ostr.company.wins) + ")" : "") + "</font>" : "") +
  2318. " (" + (resp.data[UserId].statistics.company.wins / resp.data[UserId].statistics.all.wins * 100).toFixed(2) + "%)", resp.data[UserId].statistics.company.wins + " <font color='red'>/</font> <font color='green'>" + resp.data[UserId].statistics.all.wins + "</font>", "cpwin");
  2319. insertNewTr(companyTable, "Повреждений за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.damage_dealt / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
  2320. insertNewTr(companyTable, "Фрагов за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.frags / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
  2321. insertNewTr(companyTable, "Обнаружено за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.spotted / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
  2322. insertNewTr(companyTable, "Очков захвата за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.capture_points / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
  2323. insertNewTr(companyTable, "Очков защиты за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.dropped_capture_points / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
  2324. insertNewTr(companyTable, "Опыт за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.xp / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
  2325. insertNewTr(companyTable, "% побед", resp.data[UserId].statistics.company.battles > 0 ? col((resp.data[UserId].statistics.company.wins / resp.data[UserId].statistics.company.battles * 100).toFixed(2)) : '-', "");
  2326. insertNewTr(companyTable, "% выживания", resp.data[UserId].statistics.company.battles > 0 ? col((resp.data[UserId].statistics.company.survived_battles / resp.data[UserId].statistics.company.battles * 100).toFixed(2)) : '-', "");
  2327. insertNewTr(companyTable, "% попадания", resp.data[UserId].statistics.company.battles > 0 ? col((resp.data[UserId].statistics.company.hits / resp.data[UserId].statistics.company.shots * 100).toFixed(2)) : '-', "");
  2328.  
  2329. insertNewTr(clanTable, "Боев", resp.data[UserId].statistics.clan.battles +
  2330. (oldeffres ? "<font color='green'>" + ((resp.data[UserId].statistics.clan.battles - ostr.clan.battles > 0) ? " (+" + (resp.data[UserId].statistics.clan.battles - ostr.clan.battles) + ")" : "") + "</font>" : "") +
  2331. " (" + (resp.data[UserId].statistics.clan.battles / resp.data[UserId].statistics.all.battles * 100).toFixed(2) + "%)", resp.data[UserId].statistics.clan.battles + " <font color='red'>/</font> <font color='green'>" + resp.data[UserId].statistics.all.battles + "</font>", "clbat");
  2332. insertNewTr(clanTable, "Побед", resp.data[UserId].statistics.clan.wins +
  2333. (oldeffres ? "<font color='green'>" + ((resp.data[UserId].statistics.clan.wins - ostr.clan.wins > 0) ? " (+" + (resp.data[UserId].statistics.clan.wins - ostr.clan.wins) + ")" : "") + "</font>" : "") +
  2334. " (" + (resp.data[UserId].statistics.clan.wins / resp.data[UserId].statistics.all.wins * 100).toFixed(2) + "%)", resp.data[UserId].statistics.clan.wins + " <font color='red'>/</font> <font color='green'>" + resp.data[UserId].statistics.all.wins + "</font>", "clwin");
  2335. insertNewTr(clanTable, "Повреждений за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.damage_dealt / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
  2336. insertNewTr(clanTable, "Фрагов за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.frags / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
  2337. insertNewTr(clanTable, "Обнаружено за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.spotted / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
  2338. insertNewTr(clanTable, "Очков захвата за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.capture_points / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
  2339. insertNewTr(clanTable, "Очков защиты за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.dropped_capture_points / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
  2340. insertNewTr(clanTable, "Опыт за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.xp / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
  2341. insertNewTr(clanTable, "% побед", resp.data[UserId].statistics.clan.battles > 0 ? col((resp.data[UserId].statistics.clan.wins / resp.data[UserId].statistics.clan.battles * 100).toFixed(2)) : '-', "");
  2342. insertNewTr(clanTable, "% выживания", resp.data[UserId].statistics.clan.battles > 0 ? col((resp.data[UserId].statistics.clan.survived_battles / resp.data[UserId].statistics.clan.battles * 100).toFixed(2)) : '-', "");
  2343. insertNewTr(clanTable, "% попадания", resp.data[UserId].statistics.clan.battles > 0 ? col((resp.data[UserId].statistics.clan.hits / resp.data[UserId].statistics.clan.shots * 100).toFixed(2)) : '-', "");
  2344.  
  2345. var effres = CalcEff(0, 6,
  2346. resp.data[UserId].statistics.all.battles - resp.data[UserId].statistics.company.battles - resp.data[UserId].statistics.clan.battles,
  2347. resp.data[UserId].statistics.all.wins - resp.data[UserId].statistics.company.wins - resp.data[UserId].statistics.clan.wins,
  2348. resp.data[UserId].statistics.all.damage_dealt - resp.data[UserId].statistics.company.damage_dealt - resp.data[UserId].statistics.clan.damage_dealt,
  2349. resp.data[UserId].statistics.all.frags - resp.data[UserId].statistics.company.frags - resp.data[UserId].statistics.clan.frags,
  2350. resp.data[UserId].statistics.all.spotted - resp.data[UserId].statistics.company.spotted - resp.data[UserId].statistics.clan.spotted,
  2351. resp.data[UserId].statistics.all.capture_points - resp.data[UserId].statistics.company.capture_points - resp.data[UserId].statistics.clan.capture_points,
  2352. resp.data[UserId].statistics.all.dropped_capture_points - resp.data[UserId].statistics.company.dropped_capture_points - resp.data[UserId].statistics.clan.dropped_capture_points,
  2353. resp.data[UserId].statistics.all.xp - resp.data[UserId].statistics.company.xp - resp.data[UserId].statistics.clan.xp);
  2354. var bsr = document.getElementById("js-bs-rating"),
  2355. hitrat = document.getElementById("js-hit-ratio"),
  2356. hitratt = document.getElementById("js-hit-ratio_tooltip"),
  2357. surv = document.getElementById("js-us-surv"),
  2358. survb = (resp.data[UserId].statistics.all.survived_battles / resp.data[UserId].statistics.all.battles * 100).toFixed(2);
  2359. bsr.innerHTML = effres[3] + ((oldeffres && (effres[3] - oldeffres[3]).toFixed(2) != 0.0) ? "<font color='" + ((effres[3] - oldeffres[3]) > 0 ? "green'> (+" : "red'> (") + (effres[3] - oldeffres[3]).toFixed(2) + ")</font>" : "");
  2360. var hr = (resp.data[UserId].statistics.all.hits / resp.data[UserId].statistics.all.shots * 100).toFixed(2);
  2361. hitrat.innerHTML = col(hr) + ((oldeffres && (hr - ohr).toFixed(2) != 0.0) ? "<font color='" + ((hr - ohr) > 0 ? "green'> (+" : "red'> (") + (hr - ohr).toFixed(2) + ")</font>" : "");
  2362. hitratt.innerHTML = resp.data[UserId].statistics.all.hits + " <font color='red'>/</font> <font color='green'>" + resp.data[UserId].statistics.all.shots + "</font>";
  2363. if (oldeffres && (survb - osurvb).toFixed(2) != 0.0) surv.innerHTML += "<font color='" + ((survb - osurvb > 0) ? "green'> (+" : "red'> (") + (survb - osurvb).toFixed(2) + ")</font>";
  2364. GetStatData(effres);
  2365. }
  2366.  
  2367. function savenominalDamage(response) {
  2368. var now = new Date(),
  2369. time = now.getTime();
  2370. time += 3600 * 24 * 1000;
  2371. now.setTime(time);
  2372. SetLSData("nominalDamage", response, now.toGMTString());
  2373. window.location.reload();
  2374. }
  2375.  
  2376. function GetBattleStat(col) {
  2377. switch (col) {
  2378. case 1:
  2379. return toFl(document.getElementsByClassName("t-personal-data_value__pr")[0].innerHTML);
  2380. break;
  2381. case 4:
  2382. return toFl(document.getElementsByClassName("b-result")[0].getElementsByClassName("t-dotted_value")[1].innerHTML.split("(")[0]);
  2383. break;
  2384. case 7:
  2385. return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[3].innerHTML);
  2386. break;
  2387. case 9:
  2388. return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[0].innerHTML);
  2389. break;
  2390. case 10:
  2391. return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[1].innerHTML);
  2392. break;
  2393. case 6:
  2394. return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[5].innerHTML);
  2395. break;
  2396. case 8:
  2397. return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[6].innerHTML);
  2398. break;
  2399. case 11:
  2400. return toFl(document.getElementsByClassName("b-result")[0].getElementsByClassName("t-dotted_value")[4].innerHTML);
  2401. break;
  2402. case 5:
  2403. return toFl(document.getElementsByClassName("b-result")[0].getElementsByClassName("t-dotted_value")[0].innerHTML);
  2404. break;
  2405. default:
  2406. return 0;
  2407. break;
  2408. break;
  2409. }
  2410. }
  2411.  
  2412. function toFl(s) {
  2413. var a = "" + s;
  2414. a = a.indexOf(">") > 0 ? a.substr(0, a.indexOf(">")) : a;
  2415. return (parseFloat(a.replace(/[\D\.]/g, "")));
  2416. }
  2417.  
  2418. function getCookie(name) {
  2419. var start = document.cookie.indexOf(name + '=');
  2420. var len = start + name.length + 1;
  2421. if ((!start) && (name !== document.cookie.substring(0, name.length))) {
  2422. return null;
  2423. }
  2424. if (start === -1)
  2425. return undefined;
  2426. var end = document.cookie.indexOf(';', len);
  2427. if (end === -1)
  2428. end = document.cookie.length;
  2429.  
  2430. var resval = document.cookie.substring(len, end);
  2431.  
  2432. name = name + "__2";
  2433. start = document.cookie.indexOf(name + '=');
  2434. len = start + name.length + 1;
  2435. if ((!start) && (name !== document.cookie.substring(0, name.length))) {
  2436. return unescape(resval);
  2437. }
  2438. if (start === -1)
  2439. return unescape(resval);
  2440. end = document.cookie.indexOf(';', len);
  2441. if (end === -1)
  2442. end = document.cookie.length;
  2443.  
  2444. resval += document.cookie.substring(len, end);
  2445.  
  2446. return unescape(resval);
  2447. }
  2448.  
  2449. function setCookie(name, value, endstr) {
  2450. var savestr = escape(value),
  2451. savestr2 = false;
  2452. if (savestr.length > 3900) {
  2453. savestr2 = savestr.slice(3900);
  2454. savestr = savestr.slice(0, 3900);
  2455. }
  2456. if (!endstr)
  2457. endstr = "; expires=Mon, 01-Jan-2031 00:00:00 GMT";
  2458. document.cookie = name + "=" + savestr + endstr;
  2459. if (savestr2) {
  2460. document.cookie = name + "__2" + "=" + savestr2 + endstr;
  2461. }
  2462. }
  2463.  
  2464. function GetStat() {
  2465. var UserId = window.location.href.match(/\/(\d+)/)[1],
  2466. day = 0;
  2467. // Перенос старого формата данных
  2468. if (GetLSData("daystat_" + UserId)) {
  2469. var daystat = GetLSData("daystat_" + UserId);
  2470. SetLSData("daystat_" + UserId + "_" + 0, daystat, '01-Jan-2031 00:00:00 GMT');
  2471. localStorage.removeItem("daystat_" + UserId);
  2472. }
  2473. for (var i = 1; i < 7; i++) {
  2474. if (GetLSData("daystat_" + UserId + "_" + i))
  2475. day += 1;
  2476. }
  2477. return GetLSData("daystat_" + UserId + "_" + day);
  2478. }
  2479.  
  2480. function WriteStat() {
  2481. var day = 0,
  2482. UserId = window.location.href.match(/\/(\d+)/)[1],
  2483. WGRating = GetBattleStat(1),
  2484. api_key,
  2485. saveStat = false;
  2486. for (i = 0; i < 7; i++) {
  2487. if (!GetLSData("daystat_" + UserId + "_" + i)) {
  2488. day = i;
  2489. break;
  2490. }
  2491. day = 7;
  2492. }
  2493. if (document.location.host.indexOf(".ru") !== -1) {
  2494. api_key = "895d3dafdd87af03e1e515befcd83882";
  2495. } else if (document.location.host.indexOf(".eu") !== -1) {
  2496. api_key = "d0a293dc77667c9328783d489c8cef73";
  2497. } else if (document.location.host.indexOf(".com") !== -1) {
  2498. api_key = "16924c431c705523aae25b6f638c54dd";
  2499. }
  2500. if (day !== 0) {
  2501. var daystat = GetLSData("daystat_" + UserId + "_" + (day - 1)),
  2502. dsArr = daystat.split("|"),
  2503. strArray = dsArr[0].split("/"),
  2504. str = strArray[0].split(";"),
  2505. OldBattles = toFl(str[12]);
  2506. if (parseInt(OldBattles) !== parseInt(GetBattleStat(5))) {
  2507. saveStat = true;
  2508. }
  2509. } else {
  2510. saveStat = true;
  2511. }
  2512. if (saveStat) {
  2513. $.get("http://api." + document.location.host + "/2.0/account/info/?application_id=" + api_key + "&account_id=" + UserId, function (response) {
  2514. var UserId = window.location.href.match(/\/(\d+)/)[1];
  2515. var timeStamp = new Date();
  2516. var cookie = "" + timeStamp + ";",
  2517. AllGold = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-gold")[0],
  2518. AllCredit = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-credit")[0],
  2519. AllExp = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-experience")[0],
  2520. tstsr = JSON.stringify(response.data[UserId].statistics);
  2521.  
  2522. if (AllGold) {
  2523. cookie += "" + toFl(AllGold.innerHTML.split("(")[0]) + ";";
  2524. } else
  2525. cookie += "NaN;";
  2526. if (AllCredit) {
  2527. cookie += "" + toFl(AllCredit.innerHTML.split("(")[0]) + ";";
  2528. } else
  2529. cookie += "NaN;";
  2530. if (AllExp) {
  2531. cookie += "" + toFl(AllExp.innerHTML.split("(")[0]) + ";";
  2532. } else
  2533. cookie += "NaN;";
  2534.  
  2535. for (var i = 1; i < 12; i++) {
  2536. cookie += GetBattleStat(i) + ";";
  2537. cookie += "0;";
  2538. }
  2539.  
  2540. var tanks = document.getElementsByClassName("t-profile_tankstype__item");
  2541. for (var i = 0; i < tanks.length; i++) {
  2542. var t = tanks[i].cells,
  2543. imgName = t[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1];
  2544. cookie += "/" + imgName + ";" + toFl(t[1].innerHTML.split("(")[0]) + ";" + toFl(t[2].innerHTML.split("(")[0]) + ";" + t[2].getAttribute("wcount");
  2545. }
  2546.  
  2547. cookie += "|";
  2548.  
  2549. var medals = document.getElementsByClassName("js-full-achievements")[0].getElementsByClassName("b-achivements_item");
  2550. for (i = 0; i < medals.length; i++) {
  2551. if ((" " + medals[i].className + " ").replace(/[\n\t]/g, " ").indexOf(" b-achivements_item__empty ") === -1) {
  2552. var count = medals[i].getElementsByTagName('div')[0];
  2553. if (count) {
  2554. count = count.getElementsByTagName('span')[0].getElementsByTagName('span')[0];
  2555. if (count) {
  2556. count = toFl(count.innerHTML);
  2557. } else {
  2558. count = 1;
  2559. }
  2560. } else {
  2561. count = 1;
  2562. }
  2563. cookie += "/" + medals[i].id.split("-")[2] + ";" + count;
  2564. }
  2565. }
  2566. cookie += "|" + tstsr;
  2567. cookie += "|" + WGRating;
  2568. var day = 0;
  2569. for (i = 0; i < 7; i++) {
  2570. if (!GetLSData("daystat_" + UserId + "_" + i)) {
  2571. day = i;
  2572. break;
  2573. }
  2574. day = 7;
  2575. }
  2576. if (day === 0) {
  2577. SetLSData("daystat_" + UserId + "_0", cookie, '01-Jan-2031 00:00:00 GMT');
  2578. if (document.title.indexOf("Профиль игрока") > -1) {
  2579. popup("Статистика сохранена", true, false);
  2580. } else {
  2581. popup("Stat. saved", true, false);
  2582. }
  2583. } else {
  2584. var daystat = GetLSData("daystat_" + UserId + "_" + (day - 1)),
  2585. dsArr = daystat.split("|"),
  2586. strArray = dsArr[0].split("/"),
  2587. str = strArray[0].split(";"),
  2588. OldBattles = toFl(str[12]);
  2589. if (parseInt(OldBattles) === parseInt(GetBattleStat(5))) {
  2590. if (document.title.indexOf("Профиль игрока") > -1) {
  2591. popup("Нет новых боев", true, false);
  2592. } else {
  2593. popup("No new battles", true, false);
  2594. }
  2595. } else {
  2596. if (day === 7) {
  2597. for (i = 1; i < 7; i++) {
  2598. daystat = GetLSData("daystat_" + UserId + "_" + (i));
  2599. SetLSData("daystat_" + UserId + "_" + (i - 1), daystat, '01-Jan-2031 00:00:00 GMT');
  2600. }
  2601. day = 6;
  2602. }
  2603. SetLSData("daystat_" + UserId + "_" + day, cookie, '01-Jan-2031 00:00:00 GMT');
  2604. if (document.title.indexOf("Профиль игрока") > -1) {
  2605. popup("Статистика сохранена", true, false);
  2606. } else {
  2607. popup("Stat. saved", true, false);
  2608. }
  2609. }
  2610. }
  2611. });
  2612. } else {
  2613. if (document.title.indexOf("Профиль игрока") > -1) {
  2614. popup("Нет новых боев", true, false);
  2615. } else {
  2616. popup("No new battles", true, false);
  2617. }
  2618. }
  2619. }
  2620.  
  2621. function col(v1, digit, inv) {
  2622. if (isNaN(v1))
  2623. return "x";
  2624. var color = "90ffff";
  2625. if (inv) {
  2626. var v = 100 - v1;
  2627. } else {
  2628. v = v1;
  2629. }
  2630. if (digit)
  2631. v1 = v1.toFixed(digit);
  2632. if (v < 101)
  2633. color = "D042F3";
  2634. if (v < 64.9)
  2635. color = "02C9B3";
  2636. if (v < 56.9)
  2637. color = "60FF00";
  2638. if (v < 51.9)
  2639. color = "F8F400";
  2640. if (v < 48.9)
  2641. color = "FE7903";
  2642. if (v < 46.9)
  2643. color = "FE0E00";
  2644.  
  2645. return "<font color='" + color + "'>" + v1 + "%</font>";
  2646. }
  2647.  
  2648. function col2(v) {
  2649. if (isNaN(v))
  2650. v = 0;
  2651. var color = "D042F3";
  2652. if (v < 15)
  2653. color = "02C9B3";
  2654. if (v < 10)
  2655. color = "60FF00";
  2656. if (v < 5)
  2657. color = "F8F400";
  2658. if (v < 0)
  2659. color = "FE7903";
  2660. if (v < -5)
  2661. color = "FE0E00"; //красный
  2662. v = v.toFixed(2);
  2663. if (v >= 0)
  2664. v = "+" + v;
  2665. return "<font color='" + color + "'>" + v + "</font>";
  2666. }
  2667.  
  2668. function SaveCompareStatData() {
  2669. var timeStamp = new Date();
  2670. var cookie = "" + timeStamp + ";",
  2671. AllGold = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-gold")[0],
  2672. AllCredit = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-credit")[0],
  2673. AllExp = document.getElementsByClassName("b-userblock-wrpr")[0].getElementsByClassName("currency-experience")[0],
  2674. WGRating = GetBattleStat(1);
  2675.  
  2676. if (AllGold) {
  2677. cookie += "" + toFl(AllGold.innerHTML.split("(")[0]) + ";";
  2678. } else
  2679. cookie += "NaN;";
  2680. if (AllCredit) {
  2681. cookie += "" + toFl(AllCredit.innerHTML.split("(")[0]) + ";";
  2682. } else
  2683. cookie += "NaN;";
  2684. if (AllExp) {
  2685. cookie += "" + toFl(AllExp.innerHTML.split("(")[0]) + ";";
  2686. } else
  2687. cookie += "NaN;";
  2688.  
  2689. for (var i = 1; i < 12; i++) {
  2690. cookie += GetBattleStat(i) + ";";
  2691. cookie += "0;";
  2692. }
  2693.  
  2694. var tanks = document.getElementsByClassName("t-profile_tankstype__item"),
  2695. tlev, totalB = 0, avgL = 0, tbcount, tankLevs = {
  2696. "I": 1,
  2697. "II": 2,
  2698. "III": 3,
  2699. "IV": 4,
  2700. "V": 5,
  2701. "VI": 6,
  2702. "VII": 7,
  2703. "VIII": 8,
  2704. "IX": 9,
  2705. "X": 10
  2706. };
  2707.  
  2708. for (var i = 0; i < tanks.length; i++) {
  2709. var t = tanks[i].cells,
  2710. imgName = t[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1];
  2711. tbcount = toFl(tanks[i].cells[1].innerHTML);
  2712. tlev = tankLevs[tanks[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML];
  2713. totalB += tbcount;
  2714. avgL += tlev * tbcount;
  2715. cookie += "/" + imgName + ";" + toFl(t[1].innerHTML.split("(")[0]) + ";" + toFl(t[2].innerHTML.split("(")[0]);
  2716. }
  2717.  
  2718. cookie += "|" + (avgL / totalB).toFixed(4);
  2719. cookie += "|";
  2720.  
  2721. var medals = document.getElementsByClassName("js-full-achievements")[0].getElementsByClassName("b-achivements_item");
  2722. for (i = 0; i < medals.length; i++) {
  2723. if ((" " + medals[i].className + " ").replace(/[\n\t]/g, " ").indexOf(" b-achivements_item__empty ") === -1) {
  2724. var count = medals[i].getElementsByTagName('div')[0];
  2725. if (count) {
  2726. count = count.getElementsByTagName('span')[0].getElementsByTagName('span')[0];
  2727. if (count) {
  2728. count = toFl(count.innerHTML);
  2729. } else {
  2730. count = 1;
  2731. }
  2732. } else {
  2733. count = 1;
  2734. }
  2735. cookie += "/" + medals[i].id.split("-")[2] + ";" + count;
  2736. }
  2737. }
  2738. cookie += "|" + WGRating;
  2739. SetLSData("compareStat", cookie, '01-Jan-2031 00:00:00 GMT');
  2740. window.close();
  2741. }
  2742.  
  2743. function WriteCompareStat() {
  2744. var set = getCookie("usSettings").split('|')[1].split(';');
  2745. if (toFl(set[0]) === 1 && set[1].match(/\/(\d+)/)[1] !== window.location.href.match(/\/(\d+)/)[1]) {
  2746. window.open(set[1] + '#USCompareStat', 'usCompare', 'width=100, height=100');
  2747. return false;
  2748. }
  2749. }
  2750.  
  2751. function GetLSData(name) {
  2752. var stVal = localStorage.getItem(name);
  2753. if (stVal && new Date(stVal.split("||")[0]) <= new Date()) {
  2754. localStorage.removeItem(name);
  2755. stVal = null;
  2756. }
  2757. if (stVal) {
  2758. return stVal.split("||")[1];
  2759. } else
  2760. return null;
  2761. }
  2762.  
  2763. function SetLSData(name, value, expire) {
  2764. var stval = expire + "||" + value;
  2765. localStorage.setItem(name, stval);
  2766. }
  2767.  
  2768. function outStatData2(response) {
  2769. eval("var resp =" + response);
  2770. var sStat = resp.veh_stat,
  2771. arstr = '';
  2772. for (var sc in sStat) {
  2773. arstr += "/" + sStat[sc]["link"].match(/\/[^-]+-([^\/]*)\.png/)[1].toLowerCase() + ";" + (sStat[sc]["win"] / sStat[sc]["total"] * 100).toFixed(2);
  2774. }
  2775. var now = new Date(),
  2776. time = now.getTime();
  2777. time += 3600 * 24 * 1000;
  2778. now.setTime(time);
  2779. SetLSData("UsUnOfStat", arstr, now.toGMTString());
  2780. OutUnoffStat();
  2781. }
  2782.  
  2783. function CalcOldAvgLev(ds, tankarr) {
  2784. var avgL = 0,
  2785. totalB = 0,
  2786. NavgL = 0,
  2787. NtotalB = 0,
  2788. tnaSum = 0,
  2789. expDmg = 0,
  2790. expSpot = 0,
  2791. expFrag = 0,
  2792. expDef = 0,
  2793. expWinRate = 0,
  2794. tankLevs = {
  2795. "I": 1,
  2796. "II": 2,
  2797. "III": 3,
  2798. "IV": 4,
  2799. "V": 5,
  2800. "VI": 6,
  2801. "VII": 7,
  2802. "VIII": 8,
  2803. "IX": 9,
  2804. "X": 10
  2805. };
  2806. var nominalDamage = GetLSData("nominalDamage"),
  2807. nominalDamageArr = [];
  2808. if (nominalDamage) {
  2809. nominalDamage = eval(nominalDamage);
  2810. for (i = 0; i < nominalDamage.length; i++) {
  2811. if (nominalDamage[i].nominalDamage)
  2812. nominalDamageArr[(nominalDamage[i].id).toLowerCase()] = [
  2813. nominalDamage[i].nominalDamage * 1,
  2814. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.damage * 1 : 0,
  2815. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.spots * 1 : 0,
  2816. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.frags * 1 : 0,
  2817. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.defensePoints * 1 : 0,
  2818. nominalDamage[i].wnNominalStats ? nominalDamage[i].wnNominalStats.winRate * 1 : 0,
  2819. ];
  2820. }
  2821. } else {
  2822. xdr.xget("http://www.noobmeter.com/tankListJson/elfx_133054", savenominalDamage);
  2823. }
  2824.  
  2825. for (var tank in ds) {
  2826. if (tankarr[tank]) {
  2827. totalB += ds[tank].b;
  2828. if (nominalDamageArr[tank]) {
  2829. if (nominalDamageArr[tank][0]) tnaSum += ds[tank].b * nominalDamageArr[tank][0];
  2830. expDmg += ds[tank].b * nominalDamageArr[tank][1];
  2831. expSpot += ds[tank].b * nominalDamageArr[tank][2];
  2832. expFrag += ds[tank].b * nominalDamageArr[tank][3];
  2833. expDef += ds[tank].b * nominalDamageArr[tank][4];
  2834. expWinRate += ds[tank].b * nominalDamageArr[tank][5];
  2835. }
  2836. avgL += tankarr[tank].tlev * ds[tank].b;
  2837. if (ds[tank].b !== tankarr[tank].bcount) {
  2838. NtotalB += (tankarr[tank].bcount - ds[tank].b);
  2839. NavgL += tankarr[tank].tlev * (tankarr[tank].bcount - ds[tank].b);
  2840. }
  2841. }
  2842. }
  2843. return [avgL / totalB, NavgL / NtotalB, tnaSum, expDmg, expSpot, expFrag, expDef, expWinRate];
  2844. }
  2845.  
  2846. function PaintOldAvgLev(ds) {
  2847. var avgL = 0,
  2848. totalB = 0,
  2849. NavgL = 0,
  2850. NtotalB = 0,
  2851. tanks = document.getElementsByClassName("t-profile_tankstype__item"),
  2852. tbcount,
  2853. twcount,
  2854. tlev,
  2855. imgName,
  2856. tHd,
  2857. newBat,
  2858. tankLevs = {
  2859. "I": 1,
  2860. "II": 2,
  2861. "III": 3,
  2862. "IV": 4,
  2863. "V": 5,
  2864. "VI": 6,
  2865. "VII": 7,
  2866. "VIII": 8,
  2867. "IX": 9,
  2868. "X": 10
  2869. };
  2870.  
  2871. var theads = document.getElementsByClassName("t-profile__vehicle")[0].getElementsByTagName('tbody');
  2872. for (var i = 0; i < theads.length; i++) {
  2873. if (theads[i].style.display !== 'none')
  2874. theads[i].setAttribute('class', 'js-tank-head-row');
  2875. }
  2876.  
  2877. for (i = 0; i < tanks.length; i++) {
  2878. if (tanks[i].parentNode.previousElementSibling.style.display !== 'none')
  2879. tanks[i].setAttribute('class', tanks[i].getAttribute('class') + ' js-tank-row');
  2880. imgName = tanks[i].cells[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1];
  2881. if (ds[imgName]) {
  2882. tbcount = toFl(ds[imgName].b);
  2883. twcount = ds[imgName].w;
  2884. } else {
  2885. tbcount = 0;
  2886. twcount = 0;
  2887. }
  2888. tlev = tankLevs[tanks[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML];
  2889. totalB += tbcount;
  2890. avgL += tlev * tbcount;
  2891. if (toFl(tanks[i].cells[1].innerHTML) !== tbcount) {
  2892. NtotalB += toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount;
  2893. tHd = tanks[i].parentNode.previousElementSibling;
  2894. newBat = toFl(tHd.getAttribute('newbat'));
  2895. if (newBat) {
  2896. newBat += toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount;
  2897. } else {
  2898. newBat = toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount;
  2899. }
  2900. tHd.setAttribute("style", "background-color: Darkslategray;");
  2901. tHd.setAttribute("newBat", newBat);
  2902. tHd.rows[0].cells[1].innerHTML = tHd.rows[0].cells[1].innerHTML.split("(")[0] + " (+" + newBat + ")";
  2903. tanks[i].setAttribute("style", "background-color: Darkslategray;");
  2904. tanks[i].setAttribute('class', tanks[i].getAttribute('class') + ' js-nb-tank-row');
  2905. if (!tHd.getAttribute('class') || tHd.getAttribute('class').indexOf('js-nb-tank-row') === -1)
  2906. tHd.setAttribute('class', (tHd.getAttribute('class') ? tHd.getAttribute('class') + ' js-nb-tank-row' : 'js-nb-tank-row'));
  2907. tanks[i].cells[1].innerHTML = tanks[i].cells[1].innerHTML + " (" + (toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount) + "|" + (tanks[i].cells[2].getAttribute('wcount') - twcount) + ")";
  2908. if (twcount !== -1 && tbcount !== 0) {
  2909. var windelta = ((tanks[i].cells[2].getAttribute('wcount') / toFl(tanks[i].cells[1].innerHTML.split("(")[0]) * 100).toFixed(2) - (twcount / tbcount * 100).toFixed(2)).toFixed(2);
  2910. tanks[i].cells[2].innerHTML = tanks[i].cells[2].innerHTML + " (" + (windelta > 0 ? "<font color='green'>+" + windelta + "</font>" : "<font color='red'>" + windelta + "</font>") + ")";
  2911. }
  2912. NavgL += tlev * (toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount);
  2913. }
  2914.  
  2915. }
  2916. }
  2917.  
  2918. function outStatData(response) {
  2919. eval("var resp =" + response);
  2920. var sStat = resp.classRatings,
  2921. arstr = '';
  2922. for (var i = 0; i < rangA.length; i++) {
  2923. arstr += sStat[rangA[i]] + ';';
  2924. }
  2925. var now = new Date(),
  2926. time = now.getTime();
  2927. time += 3600 * 24 * 1000;
  2928. now.setTime(time);
  2929. SetLSData("UsBsRangs", arstr, now.toGMTString());
  2930. GetStatData();
  2931. }
  2932.  
  2933. function OutUnoffStat() {
  2934. var stData = GetLSData("UsUnOfStat");
  2935. if (stData) {
  2936. var vTh = document.getElementsByClassName("t-profile__vehicle")[0].getElementsByTagName('th')[4],
  2937. nTh = document.createElement('th');
  2938. document.getElementsByClassName("t-profile__vehicle")[0].getElementsByTagName('th')[0].width = "288";
  2939. nTh.innerHTML = '<span class="t-vehicle-head t-vehicle-head__fix"><span>' + (lang === "ru" ? "ср % побед по серверу" : "avg win %") + "</span></span>";
  2940. nTh.className = "t-profile_center";
  2941. vTh.parentNode.insertBefore(nTh, vTh);
  2942. var tTypes = document.getElementsByClassName("js-tank-head-row");
  2943. for (i = 0; i < tTypes.length; i++) {
  2944. var nrth = tTypes[i].rows[0].getElementsByClassName('t-profile_center');
  2945. if (nrth.length) {
  2946. nrth[0].width = "288";
  2947. var fTh = document.createElement('td');
  2948. fTh.innerHTML = '-';
  2949. fTh.className = "t-profile_center";
  2950. tTypes[i].rows[0].cells[4].parentNode.insertBefore(fTh, tTypes[i].rows[0].cells[4]);
  2951. }
  2952. }
  2953. var UnOffStat = stData.split("/");
  2954. if (UnOffStat) {
  2955. var unOffStatArr = [];
  2956. for (i = 0; i < UnOffStat.length; i++) {
  2957. var uoss = UnOffStat[i].split(";");
  2958. unOffStatArr[uoss[0]] = uoss[1];
  2959. }
  2960. var tanks = document.getElementsByClassName("t-profile_tankstype__item");
  2961. for (i = 0; i < tanks.length; i++) {
  2962. var t = tanks[i].cells,
  2963. imgName = t[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1].toLowerCase();
  2964. var sTd = document.createElement('td');
  2965. sTd.className = "t-profile_right";
  2966. var med = unOffStatArr[imgName];
  2967. if (med && t[2].getElementsByTagName('font')[0]) {
  2968. sTd.innerHTML = col(med) + " (" + col2(parseFloat(t[2].getElementsByTagName('font')[0].innerHTML) - med) + ")";
  2969. } else {
  2970. sTd.innerHTML = "x";
  2971. }
  2972. t[4].parentNode.insertBefore(sTd, t[4]);
  2973. var rItem = t[4].parentNode.getElementsByClassName("t-profile_ico-dropdown")[0];
  2974. t[4].parentNode.removeChild(rItem);
  2975. }
  2976. }
  2977. } else {
  2978. xdr.xget("http://wot-crabe.ru/api/server_stats.json", outStatData2);
  2979. }
  2980. }
  2981.  
  2982. function GetStatData() {
  2983. var stData = GetLSData("UsBsRangs"),
  2984. lang,
  2985. bsrat = document.getElementById("js-bs-rating").innerHTML.split("(")[0].split("<")[0];
  2986. if (document.title.indexOf("Профиль игрока") > -1)
  2987. lang = "ru";
  2988. if (stData) {
  2989. var bsRangs = stData.split(";");
  2990. if (bsRangs) {
  2991. var rcr = 0,
  2992. rcrv = 0;
  2993. for (var i = bsRangs.length - 1; i > -1; i--) {
  2994. if (Number(bsrat) > Number(bsRangs[i])) {
  2995. rcr = i;
  2996. if (i > 0) {
  2997. rcrv = (Number(bsRangs[i - 1]) - Number(bsrat)).toFixed(2) + (lang === "ru" ? " баллов до следующего ранга" : " balls to next level");
  2998. } else {
  2999. rcrv = (lang === "ru" ? 'Максимальный уровень. Круче только вареные яйца.' : 'Max. level');
  3000. }
  3001. }
  3002. }
  3003. document.getElementById("js-bs-rating_tooltip").innerHTML = (lang === "ru" ? rangD[rcr] : rangDE[rcr]) + "<br>" + rcrv;
  3004. }
  3005. } else {
  3006. xdr.xget("http://armor.kiev.ua/wot/api.php", outStatData);
  3007. }
  3008. }