WoWsStatInfo

Расширенная статистика на оф. сайте.

当前为 2015-07-19 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name WoWsStatInfo
  3. // @author Vov_chiK
  4. // @description Расширенная статистика на оф. сайте.
  5. // @copyright 2015+, Vov_chiK
  6. // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
  7. // @namespace http://forum.walkure.pro/
  8. // @version 0.4.0.11
  9. // @creator Vov_chiK
  10. // @include http://worldofwarships.ru/ru/community/accounts/*
  11. // @include http://worldofwarships.eu/community/accounts/*
  12. // @include http://forum.worldofwarships.ru/index.php?/topic/*
  13. // @include http://forum.worldofwarships.ru/index.php?/user/*
  14. // @include http://forum.worldofwarships.eu/index.php?/topic/*
  15. // @include http://forum.worldofwarships.eu/index.php?/user/*
  16. // @include http://ru.wargaming.net/clans/*/players*
  17. // @include http://eu.wargaming.net/clans/*/players*
  18. // @match http://worldofwarships.ru/ru/community/accounts/*
  19. // @match http://worldofwarships.eu/community/accounts/*
  20. // @match http://forum.worldofwarships.ru/index.php?/topic/*
  21. // @match http://forum.worldofwarships.ru/index.php?/user/*
  22. // @match http://forum.worldofwarships.eu/index.php?/topic/*
  23. // @match http://forum.worldofwarships.eu/index.php?/user/*
  24. // @match http://ru.wargaming.net/clans/*/players*
  25. // @match http://eu.wargaming.net/clans/*/players*
  26. // @grant GM_xmlhttpRequest
  27. // ==/UserScript==
  28. (function(window){
  29. /* ===== Main function ===== */
  30. function WoWsStatInfo(){
  31. var VersionWoWsStatInfo = '0.4.0.11';
  32. var WoWsStatInfoLinkLoc = [];
  33. WoWsStatInfoLinkLoc['ru'] = 'http://forum.worldofwarships.ru/index.php?/topic/19158-';
  34. WoWsStatInfoLinkLoc['eu'] = 'http://forum.worldofwarships.eu/index.php?/topic/14650-';
  35. var WoWsStatInfoLinkNameLoc = [];
  36. WoWsStatInfoLinkNameLoc['ru'] = '['+VersionWoWsStatInfo.substring(0, 5)+'] [WoWsStatInfo] Расширенная статистика на оф. сайте.';
  37. WoWsStatInfoLinkNameLoc['eu'] = '['+VersionWoWsStatInfo.substring(0, 5)+'] [WoWsStatInfo] Extended stat-info for official WoWS profile.';
  38. var lang = 'ru';
  39. if(window.location.host.indexOf(".wargaming.net") > -1){
  40. lang = getCookie('wgccfe_language');
  41. }else if(window.location.host.indexOf("worldofwarships") > -1){
  42. lang = getCookie('hllang');
  43. }
  44.  
  45. var localization = getLocalization(lang);
  46. var realm = localization['realm'];
  47. var application_id = getApplicationId(realm);
  48. var WoWsStatInfoLink = WoWsStatInfoLinkLoc[realm];
  49. var WoWsStatInfoLinkName = WoWsStatInfoLinkNameLoc[realm];
  50. var WGAPI = 'http://api.worldoftanks.'+realm+'/';
  51. var WoWsStatInfoHref = 'http://vovchik.myjino.ru/US_WoWsStatInfo/';
  52. var Process = 0;
  53. var MaxProcess = 3;
  54. var MembersArray = [];
  55. var typeStat = ["pvp", "pve"];
  56. var color = new Array();
  57. color['very_bad'] = '#FE0E00'; // очень плохо, хуже чем у 85%
  58. color['bad'] = '#FE7903'; // плохо, хуже чем у 50%
  59. color['normal'] = '#F8F400'; // средне, лучше чем у 50%
  60. color['good'] = '#60FF00'; // хорошо, лучше чем у 75%
  61. color['very_good'] = '#02C9B3'; // очень хорошо, лучше чем у 95%
  62. color['unique'] = '#D042F3'; // уникально, лучше чем у 99%
  63. var colorStat = jQ.parseJSON('{"battles":[130,240,409,867,1327,99999],"avg_xp":[814.21,1054.35,1309.24,1748.69,2095.73,99999],"avg_damage":[16869.71,23764.09,29094.78,39358.63,50285.54,999999],"avg_frags_ships":[0.47,0.65,0.79,1.01,1.19,99],"avg_frags_planes":[0.64,1.49,2.26,4.33,7.27,99],"hits_percents_battery":[25,29,32,37,41,999],"hits_percents_torpedo":[5,9,12,17,22,999],"avg_capture_base":[0.37,0.99,1.53,2.66,3.75,99],"avg_defend_base":[3.62,5.41,6.89,9.42,11.51,999],"max_xp":[3270,6376,9268,13360,17040,999999],"max_damage":[82182,113691,138603,189286,241514,9999999],"max_frags_ships":[3,4,5,6,7,99],"max_frags_planes":[12,24,34,58,78,999],"avg_level_battles":[3.9,4.7,5.3,6.3,7,99],"wins_percents":[43.66,48,50.91,55.76,59.55,100],"losses_percents":[100,58.1,54.81,50.26,47.37,42.69],"draws_percents":[100,8.57,7.14,5.64,4.58,2.88],"survived_percents":[20.91,31.17,38.68,50.87,60.39,100],"kill_dead":[0.64,0.96,1.26,1.88,2.61,99],"wr":[568.41,860.96,1064.95,1404.64,1697.06,99999]}');
  64. var ExpShips = jQ.parseJSON('{"Albany":{"avg_damage":13792.25,"avg_frags_ships":0.8,"avg_frags_planes":0.01,"avg_capture_base":1.93,"avg_defend_base":12.62},"Amagi":{"avg_damage":52445.9,"avg_frags_ships":0.86,"avg_frags_planes":4.38,"avg_capture_base":1.24,"avg_defend_base":6.95},"Aoba":{"avg_damage":25047.37,"avg_frags_ships":0.64,"avg_frags_planes":1.79,"avg_capture_base":1.24,"avg_defend_base":6.74},"Atlanta":{"avg_damage":25092.02,"avg_frags_ships":0.69,"avg_frags_planes":2.47,"avg_capture_base":1.23,"avg_defend_base":7.22},"Aurora":{"avg_damage":22889.1,"avg_frags_ships":0.87,"avg_frags_planes":0.01,"avg_capture_base":1.34,"avg_defend_base":10.07},"Baltimore":{"avg_damage":38061.17,"avg_frags_ships":0.82,"avg_frags_planes":4.6,"avg_capture_base":1.33,"avg_defend_base":10.96},"Benson":{"avg_damage":25541.24,"avg_frags_ships":0.76,"avg_frags_planes":0.3,"avg_capture_base":2.78,"avg_defend_base":6.89},"Bogue":{"avg_damage":22470.41,"avg_frags_ships":0.41,"avg_frags_planes":8.92,"avg_capture_base":0.35,"avg_defend_base":3.42},"Chester":{"avg_damage":11096.76,"avg_frags_ships":0.55,"avg_frags_planes":0.01,"avg_capture_base":1,"avg_defend_base":9.83},"Chikuma":{"avg_damage":13355.74,"avg_frags_ships":0.66,"avg_frags_planes":0.01,"avg_capture_base":1.06,"avg_defend_base":9.48},"Clemson":{"avg_damage":19617.2,"avg_frags_ships":0.76,"avg_frags_planes":0.03,"avg_capture_base":1.38,"avg_defend_base":4.17},"Cleveland":{"avg_damage":30656.01,"avg_frags_ships":0.84,"avg_frags_planes":2.42,"avg_capture_base":1.41,"avg_defend_base":8.78},"Colorado":{"avg_damage":33104.83,"avg_frags_ships":0.6,"avg_frags_planes":2.81,"avg_capture_base":1.31,"avg_defend_base":6.38},"Des Moines":{"avg_damage":59710.63,"avg_frags_ships":1.14,"avg_frags_planes":4.65,"avg_capture_base":0.98,"avg_defend_base":10.85},"Enterpriсe":{"avg_damage":46694.67,"avg_frags_ships":0.53,"avg_frags_planes":8.09,"avg_capture_base":0.01,"avg_defend_base":2.71},"Erie":{"avg_damage":12650.94,"avg_frags_ships":0.8,"avg_frags_planes":0.01,"avg_capture_base":1.27,"avg_defend_base":10.59},"Essex":{"avg_damage":70611.92,"avg_frags_ships":1,"avg_frags_planes":16.86,"avg_capture_base":0.59,"avg_defend_base":6.81},"Farragut":{"avg_damage":20869.09,"avg_frags_ships":0.72,"avg_frags_planes":0.47,"avg_capture_base":1.8,"avg_defend_base":5.86},"Fletcher":{"avg_damage":37032.28,"avg_frags_ships":1.03,"avg_frags_planes":0.63,"avg_capture_base":3.82,"avg_defend_base":9.12},"Flyfire":{"avg_damage":33929.57,"avg_frags_ships":0.55,"avg_frags_planes":0.99,"avg_capture_base":0.01,"avg_defend_base":5.08},"Fubuki":{"avg_damage":26102.44,"avg_frags_ships":0.63,"avg_frags_planes":0.49,"avg_capture_base":2.34,"avg_defend_base":5.25},"Furutaka":{"avg_damage":18414.75,"avg_frags_ships":0.52,"avg_frags_planes":0.19,"avg_capture_base":0.86,"avg_defend_base":5.43},"Fuso":{"avg_damage":39157.58,"avg_frags_ships":0.77,"avg_frags_planes":2.62,"avg_capture_base":1.16,"avg_defend_base":5.53},"Galaxy":{"avg_damage":51893.8,"avg_frags_ships":0.79,"avg_frags_planes":3.29,"avg_capture_base":0.01,"avg_defend_base":5.78},"Gearing":{"avg_damage":47057.07,"avg_frags_ships":1.1,"avg_frags_planes":0.75,"avg_capture_base":5.74,"avg_defend_base":9.59},"Gremyashchy":{"avg_damage":26719.82,"avg_frags_ships":0.81,"avg_frags_planes":0.37,"avg_capture_base":1.34,"avg_defend_base":6.23},"Griemiaszczij":{"avg_damage":21210.16,"avg_frags_ships":0.76,"avg_frags_planes":0.41,"avg_capture_base":3.66,"avg_defend_base":3.59},"Hakuryu":{"avg_damage":129273.41,"avg_frags_ships":1.91,"avg_frags_planes":5.31,"avg_capture_base":0.06,"avg_defend_base":6.1},"Hatsuharu":{"avg_damage":21895.35,"avg_frags_ships":0.59,"avg_frags_planes":0.61,"avg_capture_base":2.21,"avg_defend_base":4.24},"Hiryu":{"avg_damage":58329.39,"avg_frags_ships":1.02,"avg_frags_planes":8.48,"avg_capture_base":0.47,"avg_defend_base":6.68},"Hosho":{"avg_damage":25143.63,"avg_frags_ships":0.6,"avg_frags_planes":5.2,"avg_capture_base":0.69,"avg_defend_base":2.21},"Ibuki":{"avg_damage":44784.74,"avg_frags_ships":0.93,"avg_frags_planes":2.75,"avg_capture_base":1.21,"avg_defend_base":10.89},"Independence":{"avg_damage":31891.69,"avg_frags_ships":0.53,"avg_frags_planes":9.6,"avg_capture_base":0.58,"avg_defend_base":4.9},"Iowa":{"avg_damage":65922.78,"avg_frags_ships":1.08,"avg_frags_planes":9.51,"avg_capture_base":1.44,"avg_defend_base":7.94},"Ishizuchi":{"avg_damage":21535.82,"avg_frags_ships":0.56,"avg_frags_planes":0.1,"avg_capture_base":2.47,"avg_defend_base":4.82},"Isokaze":{"avg_damage":21264.56,"avg_frags_ships":0.77,"avg_frags_planes":0.11,"avg_capture_base":1.45,"avg_defend_base":2.45},"Iwaki Alpha":{"avg_damage":23058.81,"avg_frags_ships":0.81,"avg_frags_planes":1.19,"avg_capture_base":1.36,"avg_defend_base":6.19},"Izumo":{"avg_damage":46105.8,"avg_frags_ships":0.72,"avg_frags_planes":3.45,"avg_capture_base":0.88,"avg_defend_base":6.41},"Kagero":{"avg_damage":37109.21,"avg_frags_ships":0.81,"avg_frags_planes":0.38,"avg_capture_base":3.76,"avg_defend_base":6.53},"Katori":{"avg_damage":12577.2,"avg_frags_ships":0.79,"avg_frags_planes":0.01,"avg_capture_base":1.11,"avg_defend_base":11.17},"Kawachi":{"avg_damage":17934.3,"avg_frags_ships":0.64,"avg_frags_planes":0.13,"avg_capture_base":1.58,"avg_defend_base":5.51},"Kitakami":{"avg_damage":17384.71,"avg_frags_ships":0.41,"avg_frags_planes":0.64,"avg_capture_base":0.57,"avg_defend_base":2.65},"Kongo":{"avg_damage":30435.35,"avg_frags_ships":0.73,"avg_frags_planes":2,"avg_capture_base":1.16,"avg_defend_base":5.28},"Kuma":{"avg_damage":19178.87,"avg_frags_ships":0.61,"avg_frags_planes":0.19,"avg_capture_base":0.86,"avg_defend_base":5.91},"Langley":{"avg_damage":20393.2,"avg_frags_ships":0.44,"avg_frags_planes":6.04,"avg_capture_base":0.14,"avg_defend_base":1.94},"Lexington":{"avg_damage":47102.93,"avg_frags_ships":0.62,"avg_frags_planes":20,"avg_capture_base":0.48,"avg_defend_base":4.44},"Mahan":{"avg_damage":22959.84,"avg_frags_ships":0.74,"avg_frags_planes":0.4,"avg_capture_base":2.15,"avg_defend_base":6.21},"Minekaze":{"avg_damage":25415.13,"avg_frags_ships":0.84,"avg_frags_planes":0.14,"avg_capture_base":1.59,"avg_defend_base":2.75},"Mogami":{"avg_damage":39747.53,"avg_frags_ships":0.88,"avg_frags_planes":2,"avg_capture_base":1.24,"avg_defend_base":9.4},"Montana":{"avg_damage":77411.49,"avg_frags_ships":1.12,"avg_frags_planes":6.73,"avg_capture_base":1.21,"avg_defend_base":7.15},"Murmansk":{"avg_damage":31729.96,"avg_frags_ships":0.84,"avg_frags_planes":1.2,"avg_capture_base":0.83,"avg_defend_base":8.74},"Mutsuki":{"avg_damage":18823.05,"avg_frags_ships":0.53,"avg_frags_planes":0.58,"avg_capture_base":1.84,"avg_defend_base":2.58},"Myogi":{"avg_damage":20471.17,"avg_frags_ships":0.53,"avg_frags_planes":0.01,"avg_capture_base":1.27,"avg_defend_base":4.43},"Myoko":{"avg_damage":35163.72,"avg_frags_ships":0.82,"avg_frags_planes":2.04,"avg_capture_base":1.25,"avg_defend_base":8.41},"Nagato":{"avg_damage":38764.88,"avg_frags_ships":0.69,"avg_frags_planes":1.95,"avg_capture_base":1.02,"avg_defend_base":5.55},"New Mexico":{"avg_damage":36169.38,"avg_frags_ships":0.77,"avg_frags_planes":1.41,"avg_capture_base":1.42,"avg_defend_base":6.94},"New Orleans":{"avg_damage":33749.24,"avg_frags_ships":0.72,"avg_frags_planes":3.72,"avg_capture_base":1.43,"avg_defend_base":10.02},"New York":{"avg_damage":28856.72,"avg_frags_ships":0.69,"avg_frags_planes":1.31,"avg_capture_base":1.38,"avg_defend_base":6.73},"Nicholas":{"avg_damage":21737.79,"avg_frags_ships":0.8,"avg_frags_planes":0.36,"avg_capture_base":1.31,"avg_defend_base":4.73},"North Carolina":{"avg_damage":50042.67,"avg_frags_ships":0.84,"avg_frags_planes":6.67,"avg_capture_base":1.66,"avg_defend_base":6.7},"Omaha":{"avg_damage":24249.43,"avg_frags_ships":0.74,"avg_frags_planes":1.03,"avg_capture_base":1.03,"avg_defend_base":7.48},"Pensacola":{"avg_damage":28283.05,"avg_frags_ships":0.65,"avg_frags_planes":2.5,"avg_capture_base":1.18,"avg_defend_base":8.11},"Phoenix":{"avg_damage":16430.57,"avg_frags_ships":0.49,"avg_frags_planes":0.18,"avg_capture_base":0.83,"avg_defend_base":5.64},"Ranger":{"avg_damage":38364.57,"avg_frags_ships":0.54,"avg_frags_planes":13.29,"avg_capture_base":0.27,"avg_defend_base":5.42},"Ryujo":{"avg_damage":51623.95,"avg_frags_ships":0.95,"avg_frags_planes":4.1,"avg_capture_base":0.5,"avg_defend_base":6.68},"Sampson":{"avg_damage":11915.97,"avg_frags_ships":0.78,"avg_frags_planes":0.01,"avg_capture_base":1.16,"avg_defend_base":5.07},"Shimakaze":{"avg_damage":52429.87,"avg_frags_ships":1.07,"avg_frags_planes":0.41,"avg_capture_base":2.74,"avg_defend_base":7.73},"Shokaku":{"avg_damage":70067.59,"avg_frags_ships":1.12,"avg_frags_planes":8.76,"avg_capture_base":0.45,"avg_defend_base":7.58},"Sims":{"avg_damage":14989.17,"avg_frags_ships":0.45,"avg_frags_planes":0.17,"avg_capture_base":1.27,"avg_defend_base":4.64},"South Carolina":{"avg_damage":19308.8,"avg_frags_ships":0.67,"avg_frags_planes":0.06,"avg_capture_base":1.59,"avg_defend_base":7.32},"St. Louis":{"avg_damage":18649.65,"avg_frags_ships":0.69,"avg_frags_planes":0.02,"avg_capture_base":1.53,"avg_defend_base":8.13},"Taiho":{"avg_damage":93347.04,"avg_frags_ships":1.61,"avg_frags_planes":9.17,"avg_capture_base":0.38,"avg_defend_base":11.18},"Tenryu":{"avg_damage":15140.29,"avg_frags_ships":0.57,"avg_frags_planes":0.09,"avg_capture_base":0.86,"avg_defend_base":5.24},"Umikaze":{"avg_damage":12276.5,"avg_frags_ships":0.77,"avg_frags_planes":0.01,"avg_capture_base":1.16,"avg_defend_base":3.34},"Wakatake":{"avg_damage":16098.98,"avg_frags_ships":0.85,"avg_frags_planes":0.03,"avg_capture_base":1.14,"avg_defend_base":2.83},"Warspite":{"avg_damage":29165.55,"avg_frags_ships":0.64,"avg_frags_planes":1.92,"avg_capture_base":1.37,"avg_defend_base":5.1},"Wickes":{"avg_damage":12750.66,"avg_frags_ships":0.56,"avg_frags_planes":0.03,"avg_capture_base":0.82,"avg_defend_base":3.41},"Wyoming":{"avg_damage":26934.92,"avg_frags_ships":0.72,"avg_frags_planes":0.8,"avg_capture_base":1.41,"avg_defend_base":7.61},"Yamato":{"avg_damage":69459.81,"avg_frags_ships":0.82,"avg_frags_planes":4.98,"avg_capture_base":0.95,"avg_defend_base":7.1},"Yamato Cosmo":{"avg_damage":40417.83,"avg_frags_ships":0.54,"avg_frags_planes":6.09,"avg_capture_base":0.01,"avg_defend_base":3.23},"Yubari":{"avg_damage":15321.75,"avg_frags_ships":0.53,"avg_frags_planes":2.22,"avg_capture_base":0.74,"avg_defend_base":5.63},"Zao":{"avg_damage":65710.97,"avg_frags_ships":1.18,"avg_frags_planes":2.91,"avg_capture_base":1.24,"avg_defend_base":12},"Zaya":{"avg_damage":41572.15,"avg_frags_ships":0.6,"avg_frags_planes":2.9,"avg_capture_base":0.01,"avg_defend_base":5.19},"Zuiho":{"avg_damage":40926.1,"avg_frags_ships":0.89,"avg_frags_planes":6.03,"avg_capture_base":0.54,"avg_defend_base":4.74},"Аврора":{"avg_damage":16327.36,"avg_frags_ships":0.61,"avg_frags_planes":0.02,"avg_capture_base":1.15,"avg_defend_base":7.64},"Гремящий":{"avg_damage":19153.07,"avg_frags_ships":0.66,"avg_frags_planes":0.36,"avg_capture_base":1.36,"avg_defend_base":4.74},"Мурманск":{"avg_damage":24856.93,"avg_frags_ships":0.75,"avg_frags_planes":1.38,"avg_capture_base":1.27,"avg_defend_base":7.79}}');
  65. /* ===== Style UserScript ===== */
  66. {
  67. var StyleWoWsStatInfo = '' +
  68. 'div.div-link-block{font-size:13px; color: #fff; text-align: right; padding-top: 10px; padding-bottom: 10px;}' +
  69. 'span.link-block:hover{border-bottom: 1px dotted #fff; cursor: pointer;}' +
  70. 'span.link-block div.icon-link-block{background: url("http://'+realm+'.wargaming.net/clans/static/0.1.0.1/images/table-sorter/table-sorter_arrow_sprite.png") no-repeat 0 0; width: 10px; height: 10px; margin: -15px 100%;}' +
  71. 'span.hide-block div.icon-link-block{background-position: 100% -26px;}' +
  72. 'span.show-block div.icon-link-block{background-position: 100% -16px;}' +
  73. 'div#userscript-block{border-radius: 2px; background-color: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.1); padding: 10px; margin: 10px 0; line-height: 20px;}' +
  74. 'div.hide-block{display: none;}' +
  75. 'div.wowsstatinfo-stat{text-align: center; margin-top: 10px; color: white; font-size: 16px;}' +
  76. 'span.name-stat{color: #ffcc33;}' +
  77. '' +
  78. '';
  79. var StyleWoWsStatInfoAdd = document.createElement("style");
  80. StyleWoWsStatInfoAdd.textContent = StyleWoWsStatInfo.toString();
  81. document.head.appendChild(StyleWoWsStatInfoAdd);
  82. }
  83. /* ===== Message UserScript ===== */
  84. if(window.location.host != 'forum.worldofwarships.'+realm){
  85. var message = document.createElement("div");
  86. message.setAttribute("id", "message-wowsstatinfo");
  87. message.setAttribute("class", "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front");
  88. message.setAttribute("style", "display: none; z-index:9999; left: 50%; margin-left: 0px; top: 0px;");
  89. message.innerHTML = '' +
  90. '<style>' +
  91. '.ui-dialog{box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.12), 0 0 25px 25px rgba(0, 0, 0, 0.3);background-color: rgba(41, 41, 41, 0.8);position: absolute;top: 0;left: 0;outline: 0;padding: 23px 31px 28px;}' +
  92. '.ui-widget-content{color: #b1b2b3;}' +
  93. '.ui-widget{font-family: Arial, "Helvetica CY", Helvetica, sans-serif;font-size: 15px;}' +
  94. '.ui-corner-all{border-bottom-right-radius: 2px;border-bottom-left-radius: 2px;border-top-right-radius: 2px;border-top-left-radius: 2px;}' +
  95. '.ui-front{z-index: 250;}' +
  96. '.ui-dialog:before{background: url("http://ru.wargaming.net/clans/static/1.4.4/images/plugins/jquery-ui/dialog_gradient.png") repeat-x;height: 162px;width: 100%;position: absolute;top: 0;left: 0;z-index: 5;}' +
  97. '.ui-dialog .ui-dialog-titlebar{border-bottom: 1px solid rgba(0, 0, 0, 0.7);box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05);padding: 0 0 14px;position: relative;z-index: 10;}' +
  98. '.ui-widget-header{color: #fff;font-family: "WarHeliosCondC", Arial Narrow, Tahoma, arial, sans-serif;font-size: 25px;font-weight: normal;line-height: 30px;}' +
  99. '.ui-helper-clearfix{min-height: 0;support: IE7;}' +
  100. '.ui-widget-content{color: #b1b2b3;}' +
  101. '.ui-widget{font-family: Arial, "Helvetica CY", Helvetica, sans-serif;font-size: 15px;}' +
  102. '.ui-helper-clearfix:before, .ui-helper-clearfix:after{content: "";display: table;border-collapse: collapse;}' +
  103. '.ui-helper-clearfix:after{clear: both;}' +
  104. '.ui-helper-clearfix:before, .ui-helper-clearfix:after{content: "";display: table;border-collapse: collapse;}' +
  105. '.ui-dialog .ui-dialog-title{float: left;margin: 0;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}' +
  106. '.ui-dialog .ui-dialog-titlebar-close{margin: -16px -3px 0;height: 20px;width: 20px;position: absolute;top: 50%;right: 0;}' +
  107. '.ui-widget .ui-widget{font-size: 1em;}' +
  108. 'button.ui-button-icon-only {width: 16px;}' +
  109. '.ui-state-default{border: 1px solid transparent;color: #b1b2b3;display: inline-block;font-size: 13px;line-height: 30px;padding: 0 5px;height: 30px;width: 20px;}' +
  110. '.ui-button{background: none;border: 0;display: inline-block;position: relative;padding: 0;line-height: normal;cursor: pointer;vertical-align: middle;text-align: center;overflow: visible;}' +
  111. '.ui-button-icon-only .ui-icon{left: 50%;margin-left: -8px;}' +
  112. '.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon{position: absolute;top: 50%;margin-top: -8px;}' +
  113. '.ui-icon-closethick{background: url("http://ru.wargaming.net/clans/static/1.4.4/images/plugins/jquery-ui/dialog_close.png");}' +
  114. '.ui-icon{width: 16px;height: 16px;}' +
  115. '.ui-icon{display: block;text-indent: -99999px;overflow: hidden;background-repeat: no-repeat;}' +
  116. '.ui-state-default{border: 1px solid transparent;color: #b1b2b3;display: inline-block;font-size: 13px;line-height: 30px;padding: 0 5px;height: 30px;width: 20px;}' +
  117. '.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text{padding: .4em;text-indent: -9999999px;}' +
  118. '.ui-button .ui-button-text{display: block;line-height: normal;}' +
  119. '.ui-dialog .ui-dialog-content{position: relative;border: 0;padding: 0;background: none;z-index: 10;}' +
  120. '.ui-widget-content{color: #b1b2b3;}' +
  121. '.popup{margin: 10px auto 0;font-size: 15px;transition: height .3s;}' +
  122. '.popup_footer{margin-top: 20px;position: relative;}' +
  123. '.button__align-middle{vertical-align: middle;}' +
  124. '.button{-webkit-appearance: none;-moz-appearance: none;background: #735917;border-radius: 2px;border: none;box-shadow: 0 0 10px rgba(0, 0, 0, 0.3), 1px 0 2px rgba(0, 0, 0, 0.3);display: inline-block;padding: 0 0 2px;overflow: hidden;color: #000;font-family: Arial, "Helvetica CY", Helvetica, sans-serif;font-size: 17px;font-weight: normal;text-decoration: none;cursor: pointer;vertical-align: top;}' +
  125. '.button_wrapper{background: #dbae30;background: linear-gradient(to bottom, #fff544 0%, #dbae30 100%);border-radius: 2px;display: block;padding: 1px 1px 0;position: relative;}' +
  126. '.button_body{background: #e5ad2c;background: linear-gradient(to bottom, #e7b530 0%, #e5ad2c 100%);display: block;border-radius: 2px;padding: 10px 23px 11px;position: relative;text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);transition: all .2s;}' +
  127. '.button_inner{display: block;position: relative;z-index: 10;white-space: nowrap;line-height: 20px;}' +
  128. '.link__cancel{display: inline-block;font-size: 15px;margin-left: 18px;padding-top: 10px;}' +
  129. '.link{border-bottom: 1px solid transparent;padding-bottom: 1px;color: #e5b12e;line-height: 18px;text-decoration: none;transition: all .2s;}' +
  130. '</style>' +
  131. '<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">' +
  132. '<span class="ui-dialog-title">{%TITLE%}</span>' +
  133. '<button id="userscript-message-close" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" title="Close">' +
  134. '<span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span>' +
  135. '<span class="ui-button-text">Close</span>' +
  136. '</button>' +
  137. '</div>' +
  138. '<div class="ui-dialog-content ui-widget-content" style="width: auto; min-height: 44px; max-height: none; height: auto;">' +
  139. '<div class="popup">{%TEXT%}</div>' +
  140. '<div class="popup_footer">' +
  141. '<button id="userscript-message-ok" class="button button__align-middle">' +
  142. '<span class="button_wrapper">' +
  143. '<span class="button_body">' +
  144. '<span class="button_inner">'+localization['Ok']+'</span>' +
  145. '</span>' +
  146. '</span>' +
  147. '</button>' +
  148. '<a id="userscript-message-cancel" class="link link__cancel" style="display: block; cursor: pointer;" >'+localization['Cancel']+'</a>' +
  149. '</div>' +
  150. '</div>' +
  151. '';
  152. document.body.appendChild(message);
  153. var messagebg = document.createElement("div");
  154. messagebg.setAttribute("id", "userscript-message-bg");
  155. messagebg.setAttribute("style", "display: none; z-index:9998; background: url('http://"+realm+".wargaming.net/clans/static/0.1.0.1/images/plugins/jquery-ui/widget_overlay-pattern.png'); position: fixed; top: 0; left: 0; width: 100%; height: 100%;");
  156. document.body.appendChild(messagebg);
  157. }
  158. var navigatorInfo = getBrowser();
  159. window.onerror = function(message, source, lineno, column, errorObj){
  160. if(source == ''){source = window.location.href;}
  161. else if(source.indexOf(".js") != -1){return false;}
  162. if(message == 'Script error.' && errorObj == null){console.log('message == \'Script error.\' && errorObj == null'); return false;}
  163. lineno += 29;
  164. var agent = '';
  165. var agentArr = navigator.userAgent.split(')');
  166. for(var i = 0; i < agentArr.length; i++){
  167. if(agent != ''){agent += ')\n';}
  168. agent += agentArr[i];
  169. }
  170. var error = localization['ErrorScript']+"\n\n" +
  171. "Lang: "+lang+"\n"+
  172. "Browser name: "+navigatorInfo['browserName']+"\n"+
  173. "Full version: "+navigatorInfo['fullVersion']+"\n"+
  174. "Major version: "+navigatorInfo['majorVersion']+"\n"+
  175. "AppName: "+navigatorInfo['appName']+"\n"+
  176. "UserAgent: "+agent+"\n\n"+
  177. "Error: "+message+"\n"+
  178. "URL: " +source+"\n"+
  179. "Line: "+lineno+"\n"+
  180. "Column: "+column+"\n"+
  181. "StackTrace: "+errorObj+"\n\n"+
  182. localization['ErrorSendDeveloper'];
  183. console.log(error);
  184. //alert(error);
  185. error = error.split('\n').join('<br />');
  186. if(window.location.host != 'forum.worldofwarships.'+realm){
  187. onShowMessage(
  188. localization['Box'],
  189. error,
  190. onCloseMessage,
  191. localization['Ok'],
  192. false
  193. );
  194. }
  195. return true;
  196. }
  197. function getBrowser(){
  198. var nVer = navigator.appVersion;
  199. var nAgt = navigator.userAgent;
  200. var browserName = navigator.appName;
  201. var fullVersion = ''+parseFloat(navigator.appVersion);
  202. var majorVersion = parseInt(navigator.appVersion, 10);
  203. var nameOffset, verOffset, ix;
  204.  
  205. // In Opera 15+, the true version is after "OPR/"
  206. if((verOffset = nAgt.indexOf("OPR/")) != -1){
  207. browserName = "Opera";
  208. fullVersion = nAgt.substring(verOffset + 4);
  209. }
  210. // In older Opera, the true version is after "Opera" or after "Version"
  211. else if((verOffset = nAgt.indexOf("Opera")) != -1){
  212. browserName = "Opera";
  213. fullVersion = nAgt.substring(verOffset + 6);
  214. if((verOffset = nAgt.indexOf("Version")) != -1)
  215. fullVersion = nAgt.substring(verOffset + 8);
  216. }
  217. // In MSIE, the true version is after "MSIE" in userAgent
  218. else if((verOffset = nAgt.indexOf("MSIE")) != -1){
  219. browserName = "Microsoft Internet Explorer";
  220. fullVersion = nAgt.substring(verOffset + 5);
  221. }
  222. // In Chrome, the true version is after "Chrome"
  223. else if((verOffset = nAgt.indexOf("Chrome")) != -1) {
  224. browserName = "Chrome";
  225. fullVersion = nAgt.substring(verOffset + 7);
  226. }
  227. // In Safari, the true version is after "Safari" or after "Version"
  228. else if((verOffset = nAgt.indexOf("Safari")) != -1){
  229. browserName = "Safari";
  230. fullVersion = nAgt.substring(verOffset + 7);
  231. if((verOffset = nAgt.indexOf("Version")) != -1)
  232. fullVersion = nAgt.substring(verOffset + 8);
  233. }
  234. // In Firefox, the true version is after "Firefox"
  235. else if((verOffset = nAgt.indexOf("Firefox")) != -1){
  236. browserName = "Firefox";
  237. fullVersion = nAgt.substring(verOffset + 8);
  238. }
  239. // In most other browsers, "name/version" is at the end of userAgent
  240. else if((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))){
  241. browserName = nAgt.substring(nameOffset, verOffset);
  242. fullVersion = nAgt.substring(verOffset + 1);
  243. if(browserName.toLowerCase() == browserName.toUpperCase()){
  244. browserName = navigator.appName;
  245. }
  246. }
  247. // trim the fullVersion string at semicolon/space if present
  248. if((ix = fullVersion.indexOf(";")) != -1)
  249. fullVersion = fullVersion.substring(0, ix);
  250. if((ix = fullVersion.indexOf(" ")) != -1)
  251. fullVersion = fullVersion.substring(0, ix);
  252.  
  253. majorVersion = parseInt(''+fullVersion, 10);
  254. if(isNaN(majorVersion)){
  255. fullVersion = ''+parseFloat(navigator.appVersion);
  256. majorVersion = parseInt(navigator.appVersion, 10);
  257. }
  258. var url = window.location.href;
  259. console.log(''
  260. +'----------------------- WoWsStatInfo '+VersionWoWsStatInfo+' -----------------------\n'
  261. +'| Lang = '+lang+'\n'
  262. +'| URL = '+url+'\n'
  263. +'| Browser name = '+browserName+'\n'
  264. +'| Full version = '+fullVersion+'\n'
  265. +'| Major version = '+majorVersion+'\n'
  266. +'| navigator.appName = '+navigator.appName+'\n'
  267. +'| navigator.userAgent = '+navigator.userAgent+'\n'
  268. +'---------------------------------------------------------------------\n'
  269. );
  270. var navigatorInfo = [];
  271. navigatorInfo['browserName'] = browserName;
  272. navigatorInfo['fullVersion'] = fullVersion;
  273. navigatorInfo['majorVersion'] = majorVersion;
  274. navigatorInfo['appName'] = navigator.appName;
  275. navigatorInfo['userAgent'] = navigator.userAgent;
  276. return navigatorInfo;
  277. }
  278. /* ===== Check load page ===== */
  279. if(window.location.href.indexOf("accounts") > -1 && window.location.href.split('/').length == 7 && window.location.href.split('/')[5].match(/[0-9]+/) != null){
  280. getJson(WoWsStatInfoHref+'/version.php?random='+Math.floor(Math.random()*100000001), doneLastVersion, errorLastVersion);
  281. var account_id = window.location.href.split('/')[5].match(/[0-9]+/);
  282. MemberProfilePageEU();
  283. }else if(window.location.href.indexOf("accounts") > -1 && window.location.href.split('/').length == 9 && window.location.href.split('/')[6].match(/[0-9]+/) != null){
  284. getJson(WoWsStatInfoHref+'/version.php?random='+Math.floor(Math.random()*100000001), doneLastVersion, errorLastVersion);
  285. var account_id = window.location.href.split('/')[6].match(/[0-9]+/);
  286. MemberProfilePage();
  287. }else if(window.location.host == 'forum.worldofwarships.'+realm && window.location.href.indexOf("/user/") > -1){
  288. ForumUserPage();
  289. }else if(window.location.host == 'forum.worldofwarships.'+realm && window.location.href.indexOf("/topic/") > -1){
  290. ForumTopicPage();
  291. }else if(window.location.href.indexOf("clans") > -1 && window.location.href.split('/')[4].match(/[0-9]+/) != null
  292. && window.location.href.indexOf("players") > -1 && window.location.href.split('/').length >= 6
  293. ){
  294. getJson(WoWsStatInfoHref+'/version.php?random='+Math.floor(Math.random()*100000001), doneLastVersion, errorLastVersion);
  295. var ClanId = window.location.href.split('/')[4].match(/[0-9]+/);
  296. ClanPage();
  297. }
  298. jQ('.link-block').click(function(){onViewBlock(this);});
  299. function doneLastVersion(url, response){
  300. var data = response;
  301. if(VersionWoWsStatInfo != data['version']){
  302. onShowMessage(
  303. localization['Box'],
  304. localization['NewVersion']+' WoWsStatInfo '+data['version']+'<br />'+localization['NewUpdate']+'.',
  305. onCloseMessage,
  306. localization['Ok'],
  307. false
  308. );
  309. }
  310. }
  311. function errorLastVersion(url){}
  312. /* ===== Pages function ===== */
  313. function MemberProfilePage(){
  314. var account_profile = document.getElementsByClassName('account-profile')[0];
  315. if(account_profile === undefined){return;}
  316. MembersArray[0] = [];
  317. var _nick = document.getElementsByClassName('_nick')[0];
  318. account_name = _nick.textContent;
  319. var row = document.getElementsByClassName('row')[0];
  320. row.outerHTML += '' +
  321. '<div id="userscript-block-list">' +
  322. '<div id="userscript-forum-link">' +
  323. '<a target="_blank" href="http://forum.worldofwarships.'+realm+'/index.php?/user/dn-'+account_name+'-/">'+localization['forum-profile']+'</a>' +
  324. '</div>' +
  325. '<style>' +
  326. '.b-profile-clan{max-width: 400px; padding-right: 100px;margin-bottom: 14px;padding-top: 5px;position: relative;}' +
  327. '.b-profile-clan_photo{float: left;width: 61px;position: relative;min-height: 70px;top: 5px;}' +
  328. '.b-profile-clan_color{width: 15px;height: 15px;position: absolute;left: 38px;top: 2px;}' +
  329. '.b-profile-clan_link{background-image: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NTIxMEI3ODRFODExRTI5ODYxODk4QjE3Q0IyNzkyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkI4NTIxMEI4ODRFODExRTI5ODYxODk4QjE3Q0IyNzkyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Qjg1MjEwQjU4NEU4MTFFMjk4NjE4OThCMTdDQjI3OTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Qjg1MjEwQjY4NEU4MTFFMjk4NjE4OThCMTdDQjI3OTIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7V+fopAAAMmElEQVR42sxazY7jxhEm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");display: block;height: 54px;position: absolute;left: 2px;padding: 11px 0 0 11px;width: 54px;}' +
  330. '.b-profile-clan_text{margin-left: 61px;}' +
  331. '.b-profile-clan_text-wrpr{font-size: 13px;margin: 5px 0 0;overflow: hidden;padding-right: 0;padding: 0 0 7px;text-overflow: ellipsis;white-space: nowrap;}' +
  332. '.b-link-clan{color: #f9d088;font-weight: bold;text-decoration: none;}' +
  333. '.b-link-clan_tag{color: #babcbf;}' +
  334. '.b-statistic{overflow: hidden;margin: 0 0 16px;line-height: 14px;}' +
  335. '.b-statistic_item{color: #606061;font-size: 11px;margin: 0;padding: 0;line-height: 125%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;word-wrap: normal;}' +
  336. '.b-statistic_value{color: #babcbf;}' +
  337. '</style>' +
  338. '<div id="wowsstatinfo-profile-clan">' +
  339. '<div class="b-profile-clan b-profile-clan__points js-tooltip" id="js-profile-clan">' +
  340. '<img src="http://'+realm+'.wargaming.net/clans/static/0.1.0.1/images/processing/loader.gif" />' +
  341. '</div>' +
  342. '</div>' +
  343. getUserScriptDeveloperBlock() +
  344. '' +
  345. '</div>' +
  346. '';
  347. var account_href = window.location.href.split('/')[6].split('-');
  348. var account_id = account_href[0];
  349. getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+account_id, doneClanInfo, errorClanInfo);
  350. getMemberStatistic();
  351. jQ('.account-pvp-pve').click(function(){
  352. setTimeout(function(){getMemberStatistic();}, 1000);
  353. });
  354. jQ('.account-tabs').click(function(){
  355. setTimeout(function(){getMemberStatistic();}, 1000);
  356. });
  357. }
  358. function MemberProfilePageEU(){
  359. var account = document.getElementsByClassName('account')[0];
  360. if(account === undefined){return;}
  361. getMemberStatisticEU();
  362. viewMemberProfilePageEU();
  363. getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+MembersArray[0]['account_id'], doneClanInfoEU, errorClanInfoEU);
  364. var content = document.getElementsByClassName('content')[0];
  365. var row = content.getElementsByClassName('row')[0];
  366. row.outerHTML += '' +
  367. '<div id="userscript-forum-link" style="float:left;">' +
  368. '<a target="_blank" href="http://forum.worldofwarships.'+realm+'/index.php?/user/dn-'+MembersArray[0]['account_name']+'-/">'+localization['forum-profile']+'</a>' +
  369. '</div>' +
  370. getUserScriptDeveloperBlock() +
  371. '' +
  372. '</div>' +
  373. '';
  374. }
  375. function ForumUserPage(){
  376. var nickname = document.getElementsByClassName('nickname')[0];
  377. var reputation__wrp = document.getElementsByClassName('reputation__wrp')[0];
  378. var user_id = reputation__wrp.getAttribute('id').split('_')[1];
  379. var ipsList_data = document.getElementsByClassName('ipsList_data')[0];
  380. ipsList_data.innerHTML += '' +
  381. '<li class="clear clearfix">' +
  382. '<span class="row_title">'+localization['profile-wows']+':</span>' +
  383. '<span class="row_data"><a href="http://worldofwarships.'+realm+'/community/accounts/'+user_id+'-/" target="_black">'+nickname.innerHTML+'</a></span>' +
  384. '</li>' +
  385. '<li class="clear clearfix">' +
  386. '<span class="row_title">'+localization['profile-clan']+':</span>' +
  387. '<span class="row_data member_'+user_id+'"></span>' +
  388. '</li>' +
  389. '';
  390. getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+user_id, doneForumClanInfo, errorForumClanInfo);
  391. }
  392. function ForumTopicPage(){
  393. var ForumTopicMembers = [];
  394. var basic_info = document.getElementsByClassName('basic_info');
  395. for(var i = 0; i < basic_info.length; i++){
  396. var ipsUserPhotoLink = basic_info[i].getElementsByClassName('ipsUserPhotoLink')[0];
  397. if(undefined === ipsUserPhotoLink){continue;}
  398. if(ipsUserPhotoLink.id.indexOf('anonymous_element') > -1){
  399. var linkParse = ipsUserPhotoLink.href.split('/');
  400. var accountParse = linkParse[5].split('-');
  401. var account_id = accountParse[accountParse.length - 1];
  402. if(ForumTopicMembers['member_'+account_id] === undefined){
  403. ForumTopicMembers['member_'+account_id] = account_id;
  404. getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+account_id, doneForumClanInfo, errorForumClanInfo);
  405. }
  406. basic_info[i].innerHTML += '<li class="member_'+account_id+' desc lighter"></li>';
  407. }
  408. }
  409. }
  410. function ClanPage(){
  411. var view_block_history = getLocalStorage('clan-member-history', false);
  412. if(view_block_history == null){view_block_history = 'hide';}
  413. var games_tabs = document.getElementsByClassName("games-tabs")[0];
  414. games_tabs.outerHTML += '' +
  415. '<div style="padding-bottom: 20px;">' +
  416. getUserScriptDeveloperBlock() +
  417. '<div class="div-link-block">' +
  418. '<span id="clan-member-history" class="link-block '+view_block_history+'-block">' +
  419. localization['block-link-clan-member-history'] +
  420. '<div class="icon-link-block"></div>'+
  421. '</span>' +
  422. '</div>' +
  423. '<div id="userscript-block" class="clan-member-history '+view_block_history+'-block" style="text-align: center;">' +
  424. '<img src="/clans/static/0.1.0.1/images/processing/loader.gif" />' +
  425. '</div>' +
  426. '</div>' +
  427. '';
  428. getClanMembersList();
  429. }
  430. /* ===== ForumTopicPage function ===== */
  431. function doneForumClanInfo(url, response){
  432. if(response.status && response.status == "error"){
  433. errorForumClanInfo();
  434. return;
  435. }
  436.  
  437. var vars = getUrlVars(url);
  438. var account_id = vars['account_id'];
  439. var clansInfo = response['data'][account_id];
  440. if(clansInfo != null){
  441. var icon = clansInfo['clan']['emblems']['x32']['portal'];
  442. if(icon === undefined){
  443. for(var key in clansInfo['clan']['emblems']['x32']){
  444. if(key != 'wot'){
  445. icon = clansInfo['clan']['emblems']['x32'][key];
  446. }
  447. }
  448. }
  449. var br_line = '';
  450. if(window.location.href.indexOf("/topic/") > -1){
  451. br_line = '<br />';
  452. }
  453. var html = '' +
  454. br_line +
  455. '<span>' +
  456. '<a align="center" href="http://'+realm+'.wargaming.net/clans/'+clansInfo['clan']['clan_id']+'/" title="'+clansInfo['clan']['tag']+'" rel="home" target="_blank">' +
  457. '<img src="'+icon+'" alt="'+clansInfo['clan']['tag']+'">' +
  458. '</a>' +
  459. '<a align="center" href="http://'+realm+'.wargaming.net/clans/'+clansInfo['clan']['clan_id']+'/" title="'+clansInfo['clan']['tag']+'" rel="home" target="_blank">['+clansInfo['clan']['tag']+']</a>' +
  460. '</span>' +
  461. '';
  462. jQ('.member_'+account_id).html(html);
  463. }
  464. }
  465. function errorForumClanInfo(url){}
  466. /* ===== MemberProfilePage function ===== */
  467. function doneClanInfo(url, response){
  468. if(response.status && response.status == "error"){
  469. errorClanInfo();
  470. return;
  471. }
  472. var vars = getUrlVars(url);
  473. var account_id = vars['account_id'];
  474. MembersArray[0]['clans'] = response['data'][account_id];
  475. viewMemberClan();
  476. }
  477. function errorClanInfo(url){
  478. MembersArray[0]['clans'] = null;
  479. viewMemberClan();
  480. }
  481. function viewMemberClan(){
  482. var wowsstatinfo_profile_clan = document.getElementById('wowsstatinfo-profile-clan');
  483. if(MembersArray[0]['clans'] != null){
  484. var day = dateDiffInDays(MembersArray[0]['clans']['joined_at'] * 1000, new Date().getTime());
  485. var icon = MembersArray[0]['clans']['clan']['emblems']['x32']['portal'];
  486. if(icon === undefined){
  487. for(var key in MembersArray[0]['clans']['clan']['emblems']['x32']){
  488. if(key != 'wot'){
  489. icon = MembersArray[0]['clans']['clan']['emblems']['x32'][key];
  490. }
  491. }
  492. }
  493. wowsstatinfo_profile_clan.innerHTML = '' +
  494. '<div class="b-profile-clan b-profile-clan__points js-tooltip" id="js-profile-clan">' +
  495. '<div class="b-profile-clan_photo">' +
  496. '<div style="background: '+MembersArray[0]['clans']['clan']['color']+';" class="b-profile-clan_color"><!-- --></div>' +
  497. '<a class="b-profile-clan_link" href="http://'+realm+'.wargaming.net/clans/'+MembersArray[0]['clans']['clan']['clan_id']+'/" target="_blank">' +
  498. '<img alt="'+MembersArray[0]['clans']['clan']['name']+'" src="'+icon+'" width="32" height="32">' +
  499. '</a>' +
  500. '</div>' +
  501. '<div class="b-profile-clan_text">' +
  502. '<div class="b-profile-clan_text-wrpr">' +
  503. '<a class="b-link-clan" href="http://'+realm+'.wargaming.net/clans/'+MembersArray[0]['clans']['clan']['clan_id']+'/" target="_blank">' +
  504. '<span class="b-link-clan_tag">['+MembersArray[0]['clans']['clan']['tag']+']</span>&nbsp;'+MembersArray[0]['clans']['clan']['name']+'' +
  505. '</a>' +
  506. '</div>' +
  507. '<div class="b-statistic">' +
  508. '<p class="b-statistic_item">'+localization['role']+': <span class="b-statistic_value">'+MembersArray[0]['clans']['role_i18n']+'</span></p>' +
  509. '<p class="b-statistic_item">'+localization['clan-day']+': <span class="b-statistic_value">'+day+'</span></p>' +
  510. '</div>' +
  511. '</div>' +
  512. '</div>' +
  513. '';
  514. }else{
  515. wowsstatinfo_profile_clan.innerHTML = '';
  516. }
  517. }
  518. function getMemberStatistic(){
  519. var account_href = window.location.href.split('/')[6].split('-');
  520. var account_id = account_href[0];
  521. var account_name = account_href[1];
  522. var _nick = document.getElementsByClassName('_nick')[0];
  523. account_name = _nick.textContent;
  524. MembersArray[0]['account_id'] = account_id;
  525. MembersArray[0]['account_name'] = account_name;
  526. var count_stat = 0;
  527. for(var t = 0; t < typeStat.length; t++){
  528. var type = typeStat[t];
  529. MembersArray[0][type] = [];
  530. var tabContainer = null;
  531. var tab_container = document.getElementsByClassName('tab-container');
  532. for(var tc = 0; tc < tab_container.length; tc++){
  533. if(tab_container[tc].getAttribute('js-tab-cont-id') != type){continue;}
  534. tabContainer = tab_container[tc];
  535. }
  536. if(tabContainer == null){continue;}
  537. var account_battle_stats = tabContainer.getElementsByClassName('account-battle-stats')[0];
  538. if(account_battle_stats != null){
  539. var account_table = account_battle_stats.getElementsByClassName('account-table');
  540. //Общие результаты
  541. MembersArray[0][type]['battles'] = htmlParseMemberStatistic(account_table[0].rows[1].cells[1]);
  542. MembersArray[0][type]['wins'] = htmlParseMemberStatistic(account_table[0].rows[2].cells[1]);
  543. MembersArray[0][type]['survived'] = htmlParseMemberStatistic(account_table[0].rows[3].cells[1]);
  544. MembersArray[0][type]['hits_percents'] = htmlParseMemberStatistic(account_table[0].rows[4].cells[1]);
  545. MembersArray[0][type]['damage'] = htmlParseMemberStatistic(account_table[0].rows[5].cells[1]);
  546. MembersArray[0][type]['frags_ships'] = htmlParseMemberStatistic(account_table[0].rows[6].cells[1]);
  547. MembersArray[0][type]['frags_planes'] = htmlParseMemberStatistic(account_table[0].rows[7].cells[1]);
  548. MembersArray[0][type]['capture_base'] = htmlParseMemberStatistic(account_table[0].rows[8].cells[1]);
  549. MembersArray[0][type]['defend_base'] = htmlParseMemberStatistic(account_table[0].rows[9].cells[1]);
  550. //Средние показатели за бой
  551. MembersArray[0][type]['avg_xp'] = htmlParseMemberStatistic(account_table[1].rows[1].cells[1]);
  552. MembersArray[0][type]['avg_damage'] = htmlParseMemberStatistic(account_table[1].rows[2].cells[1]);
  553. MembersArray[0][type]['avg_frags_ships'] = htmlParseMemberStatistic(account_table[1].rows[3].cells[1]);
  554. MembersArray[0][type]['avg_frags_planes'] = htmlParseMemberStatistic(account_table[1].rows[4].cells[1]);
  555. MembersArray[0][type]['avg_capture_base'] = htmlParseMemberStatistic(account_table[1].rows[5].cells[1]);
  556. MembersArray[0][type]['avg_defend_base'] = htmlParseMemberStatistic(account_table[1].rows[6].cells[1]);
  557. //Рекордные показатели
  558. MembersArray[0][type]['max_xp'] = htmlParseMemberStatistic(account_table[2].rows[1].cells[1]);
  559. MembersArray[0][type]['max_damage'] = htmlParseMemberStatistic(account_table[2].rows[2].cells[1]);
  560. MembersArray[0][type]['max_frags_ships'] = htmlParseMemberStatistic(account_table[2].rows[3].cells[1]);
  561. MembersArray[0][type]['max_frags_planes'] = htmlParseMemberStatistic(account_table[2].rows[4].cells[1]);
  562. //Расчет
  563. MembersArray[0][type]['wins_percents'] = (MembersArray[0][type]['wins']/MembersArray[0][type]['battles'])*100;
  564. MembersArray[0][type]['survived_percents'] = (MembersArray[0][type]['survived']/MembersArray[0][type]['battles'])*100;
  565. if(MembersArray[0][type]['battles'] == MembersArray[0][type]['survived_battles']){
  566. MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/MembersArray[0][type]['battles'];
  567. }else{
  568. MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/(MembersArray[0][type]['battles']-MembersArray[0][type]['survived']);
  569. }
  570. //Общие результаты
  571. account_table[0].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['battles'], 'battles');
  572. //Средние показатели за бой
  573. account_table[1].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp');
  574. account_table[1].rows[2].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage');
  575. account_table[1].rows[3].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_ships'], 'avg_frags_ships');
  576. account_table[1].rows[4].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_planes'], 'avg_frags_planes');
  577. account_table[1].rows[5].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_capture_base'], 'avg_capture_base');
  578. account_table[1].rows[6].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_defend_base'], 'avg_defend_base');
  579. //Рекордные показатели
  580. account_table[2].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_xp'], 'max_xp');
  581. account_table[2].rows[2].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_damage'], 'max_damage');
  582. account_table[2].rows[3].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_frags_ships'], 'max_frags_ships');
  583. account_table[2].rows[4].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_frags_planes'], 'max_frags_planes');
  584. //Дополнительно
  585. account_table[0].rows[2].cells[1].getElementsByTagName('small')[0].style.color = findColorASC(MembersArray[0][type]['wins_percents'], 'wins_percents');
  586. if(account_table[0].rows[3].cells[1].getElementsByClassName('small-survived_percents')[0] == null){
  587. account_table[0].rows[3].cells[1].innerHTML += '<small class="small-survived_percents">('+valueFormat((MembersArray[0][type]['survived_percents']).toFixed(2))+'%)</small>';
  588. account_table[0].rows[3].cells[1].getElementsByTagName('small')[0].style.color = findColorASC(MembersArray[0][type]['survived_percents'], 'survived_percents');
  589. }
  590. var account_main_stats = tabContainer.getElementsByClassName('account-main-stats')[0];
  591. var _values = tabContainer.getElementsByClassName('_values')[0];
  592. var main_stat = _values.getElementsByTagName('div');
  593. main_stat[0].style.color = findColorASC(MembersArray[0][type]['battles'], 'battles');
  594. main_stat[1].style.color = findColorASC(MembersArray[0][type]['wins_percents'], 'wins_percents');
  595. main_stat[2].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp');
  596. main_stat[3].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage');
  597. main_stat[4].style.color = findColorASC(MembersArray[0][type]['kill_dead'], 'kill_dead');
  598. count_stat++;
  599. }else{
  600. MembersArray[0][type]['battles'] = 0;
  601. MembersArray[0][type]['wins'] = 0;
  602. MembersArray[0][type]['survived'] = 0;
  603. MembersArray[0][type]['hits_percents'] = 0;
  604. MembersArray[0][type]['damage'] = 0;
  605. MembersArray[0][type]['frags_ships'] = 0;
  606. MembersArray[0][type]['frags_planes'] = 0;
  607. MembersArray[0][type]['capture_base'] = 0;
  608. MembersArray[0][type]['defend_base'] = 0;
  609. MembersArray[0][type]['avg_xp'] = 0;
  610. MembersArray[0][type]['avg_damage'] = 0;
  611. MembersArray[0][type]['avg_frags_ships'] = 0;
  612. MembersArray[0][type]['avg_frags_planes'] = 0;
  613. MembersArray[0][type]['avg_capture_base'] = 0;
  614. MembersArray[0][type]['avg_defend_base'] = 0;
  615. MembersArray[0][type]['max_xp'] = 0;
  616. MembersArray[0][type]['max_damage'] = 0;
  617. MembersArray[0][type]['max_frags_ships'] = 0;
  618. MembersArray[0][type]['max_frags_planes'] = 0;
  619. MembersArray[0][type]['wins_percents'] = 0;
  620. MembersArray[0][type]['survived_percents'] = 0;
  621. MembersArray[0][type]['kill_dead'] = 0;
  622. }
  623. var ship_class = '';
  624. var ships_detail_stats = tabContainer.getElementsByClassName('ships-detail-stats')[0];
  625. if(ships_detail_stats != null){
  626. var ships_x_level = 0;
  627. var StatShips = [];
  628. StatShips['damage'] = 0;
  629. StatShips['frags_ships'] = 0;
  630. StatShips['frags_planes'] = 0;
  631. StatShips['capture_base'] = 0;
  632. StatShips['defend_base'] = 0;
  633. StatShips['expDamage'] = 0;
  634. StatShips['expFragsShips'] = 0;
  635. StatShips['expFragsPlanes'] = 0;
  636. StatShips['expCapture'] = 0;
  637. StatShips['expDefend'] = 0;
  638. var StatShipsClass = [];
  639. StatShipsClass['damage'] = 0;
  640. StatShipsClass['frags_ships'] = 0;
  641. StatShipsClass['frags_planes'] = 0;
  642. StatShipsClass['capture_base'] = 0;
  643. StatShipsClass['defend_base'] = 0;
  644. StatShipsClass['expDamage'] = 0;
  645. StatShipsClass['expFragsShips'] = 0;
  646. StatShipsClass['expFragsPlanes'] = 0;
  647. StatShipsClass['expCapture'] = 0;
  648. StatShipsClass['expDefend'] = 0;
  649. MembersArray[0][type]['ships'] = [];
  650. for(var i = 0; i < ships_detail_stats.rows.length; i++){
  651. var row = ships_detail_stats.rows[i];
  652. if(i == 0 && row.cells.length < 6){
  653. var th = document.createElement('th');
  654. th.setAttribute('class', '_value');
  655. th.innerHTML = '<span>'+localization['wr']+'</span>';
  656. row.appendChild(th);
  657. continue;
  658. }
  659. if(row.getAttribute('class') == null){
  660. var _icon = row.getElementsByClassName('_icon')[0];
  661. var div_icon = _icon.getElementsByTagName('div')[0];
  662. ship_class = div_icon.getAttribute('class').split('-')[1];
  663. if(row.cells.length < 6){
  664. var td = document.createElement('td');
  665. td.setAttribute('id', 'wr-'+type+'-'+ship_class);
  666. td.innerHTML = '<span>0</span>';
  667. row.appendChild(td);
  668. }
  669. var battles = htmlParseMemberStatistic(row.cells[2]);
  670. if(battles > 0){
  671. var wins = htmlParseMemberStatistic(row.cells[3]);
  672. var avg_xp = htmlParseMemberStatistic(row.cells[4]);
  673. var wins_percents = (wins/battles)*100; if(isNaN(wins_percents)){wins_percents = 0;}
  674. row.cells[3].setAttribute('style', 'white-space: nowrap;');
  675. row.cells[3].innerHTML = valueFormat(wins)+' <span style="color:'+findColorASC(wins_percents, 'wins_percents')+';">('+valueFormat((wins_percents).toFixed(0))+'%)</span>';
  676. row.cells[4].setAttribute('style', 'white-space: nowrap;');
  677. row.cells[4].innerHTML = ' <span style="color:'+findColorASC(avg_xp, 'avg_xp')+';">'+valueFormat(avg_xp)+'</span>';
  678. }
  679. StatShipsClass['damage'] = 0;
  680. StatShipsClass['frags_ships'] = 0;
  681. StatShipsClass['frags_planes'] = 0;
  682. StatShipsClass['capture_base'] = 0;
  683. StatShipsClass['defend_base'] = 0;
  684. StatShipsClass['expDamage'] = 0;
  685. StatShipsClass['expFragsShips'] = 0;
  686. StatShipsClass['expFragsPlanes'] = 0;
  687. StatShipsClass['expCapture'] = 0;
  688. StatShipsClass['expDefend'] = 0;
  689. continue;
  690. }
  691. if(row.getAttribute('class').indexOf('_expandable') > -1){
  692. var index = MembersArray[0][type]['ships'].length;
  693. MembersArray[0][type]['ships'][index] = [];
  694. MembersArray[0][type]['ships'][index]['ship_class'] = ship_class;
  695. MembersArray[0][type]['ships'][index]['ship_name'] = row.getAttribute('js-has-extension').split('-')[0];
  696. MembersArray[0][type]['ships'][index]['ship_lvl'] = row.getAttribute('js-has-extension').split('-')[1];
  697. MembersArray[0][type]['ships'][index]['ship_nation'] = row.cells[0].getElementsByTagName('div')[0].getAttribute('class').split('-')[2];
  698. MembersArray[0][type]['ships'][index]['ship_lvl_text'] = row.cells[0].getElementsByClassName('_lvl')[0].innerHTML;
  699. MembersArray[0][type]['ships'][index]['ship_name_text'] = row.cells[0].getElementsByClassName('_text')[0].innerHTML;
  700. MembersArray[0][type]['ships'][index]['ship_code'] = row.cells[0].getElementsByClassName('_icon-ships')[0].getAttribute('src').split('/')[5].split('.')[0];
  701. if(row.cells.length < 5){
  702. var td = document.createElement('td');
  703. td.setAttribute('id', 'wr-'+type+'-'+MembersArray[0][type]['ships'][index]['ship_name_text']);
  704. td.innerHTML = '<span>0</span>';
  705. row.appendChild(td);
  706. }
  707.  
  708. var battles = htmlParseMemberStatistic(row.cells[1]);
  709. if(battles > 0){
  710. var wins = htmlParseMemberStatistic(row.cells[2]);
  711. var avg_xp = htmlParseMemberStatistic(row.cells[3]);
  712. var wins_percents = (wins/battles)*100; if(isNaN(wins_percents)){wins_percents = 0;}
  713. row.cells[2].setAttribute('style', 'white-space: nowrap;');
  714. row.cells[2].innerHTML = valueFormat(wins)+' <span style="color:'+findColorASC(wins_percents, 'wins_percents')+';">('+valueFormat((wins_percents).toFixed(0))+'%)</span>';
  715. row.cells[3].setAttribute('style', 'white-space: nowrap;');
  716. row.cells[3].innerHTML = ' <span style="color:'+findColorASC(avg_xp, 'avg_xp')+';">'+valueFormat(avg_xp)+'</span>';
  717. }
  718. if(MembersArray[0][type]['ships'][index]['ship_lvl_text'] == 'X'){
  719. ships_x_level++;
  720. }
  721. continue;
  722. }
  723. if(row.getAttribute('class').indexOf('_ship-entry-stat') > -1){
  724. row.cells[0].setAttribute('colspan', '6');
  725. var index = MembersArray[0][type]['ships'].length - 1;
  726. var account_table = row.cells[0].getElementsByClassName('account-table');
  727. //Общие результаты
  728. MembersArray[0][type]['ships'][index]['battles'] = htmlParseMemberStatistic(account_table[0].rows[1].cells[1]);
  729. MembersArray[0][type]['ships'][index]['wins'] = htmlParseMemberStatistic(account_table[0].rows[2].cells[1]);
  730. MembersArray[0][type]['ships'][index]['survived'] = htmlParseMemberStatistic(account_table[0].rows[3].cells[1]);
  731. MembersArray[0][type]['ships'][index]['damage'] = htmlParseMemberStatistic(account_table[0].rows[4].cells[1]);
  732. MembersArray[0][type]['ships'][index]['frags_ships'] = htmlParseMemberStatistic(account_table[0].rows[5].cells[1]);
  733. MembersArray[0][type]['ships'][index]['frags_planes'] = htmlParseMemberStatistic(account_table[0].rows[6].cells[1]);
  734. MembersArray[0][type]['ships'][index]['capture_base'] = htmlParseMemberStatistic(account_table[0].rows[7].cells[1]);
  735. MembersArray[0][type]['ships'][index]['defend_base'] = htmlParseMemberStatistic(account_table[0].rows[8].cells[1]);
  736. //Средние показатели за бой
  737. MembersArray[0][type]['ships'][index]['avg_xp'] = htmlParseMemberStatistic(account_table[1].rows[1].cells[1]);
  738. MembersArray[0][type]['ships'][index]['avg_damage'] = htmlParseMemberStatistic(account_table[1].rows[2].cells[1]);
  739. MembersArray[0][type]['ships'][index]['avg_frags_ships'] = htmlParseMemberStatistic(account_table[1].rows[3].cells[1]);
  740. MembersArray[0][type]['ships'][index]['avg_frags_planes'] = htmlParseMemberStatistic(account_table[1].rows[4].cells[1]);
  741. MembersArray[0][type]['ships'][index]['avg_capture_base'] = htmlParseMemberStatistic(account_table[1].rows[5].cells[1]);
  742. MembersArray[0][type]['ships'][index]['avg_defend_base'] = htmlParseMemberStatistic(account_table[1].rows[6].cells[1]);
  743. //Рекордные показатели
  744. MembersArray[0][type]['ships'][index]['max_xp'] = htmlParseMemberStatistic(account_table[2].rows[1].cells[1]);
  745. MembersArray[0][type]['ships'][index]['max_damage'] = htmlParseMemberStatistic(account_table[2].rows[2].cells[1]);
  746. MembersArray[0][type]['ships'][index]['max_frags_ships'] = htmlParseMemberStatistic(account_table[2].rows[3].cells[1]);
  747. MembersArray[0][type]['ships'][index]['max_frags_planes'] = htmlParseMemberStatistic(account_table[2].rows[4].cells[1]);
  748. //Расчет
  749. MembersArray[0][type]['ships'][index]['wins_percents'] = (MembersArray[0][type]['ships'][index]['wins']/MembersArray[0][type]['ships'][index]['battles'])*100;
  750. MembersArray[0][type]['ships'][index]['survived_percents'] = (MembersArray[0][type]['ships'][index]['survived']/MembersArray[0][type]['ships'][index]['battles'])*100;
  751. if(MembersArray[0][type]['ships'][index]['battles'] == MembersArray[0][type]['ships'][index]['survived_battles']){
  752. MembersArray[0][type]['ships'][index]['kill_dead'] = MembersArray[0][type]['ships'][index]['frags_ships']/MembersArray[0][type]['ships'][index]['battles'];
  753. }else{
  754. MembersArray[0][type]['ships'][index]['kill_dead'] = MembersArray[0][type]['ships'][index]['frags_ships']/(MembersArray[0][type]['ships'][index]['battles']-MembersArray[0][type]['ships'][index]['survived']);
  755. }
  756. var ship_name_text = MembersArray[0][type]['ships'][index]['ship_name_text'];
  757. if(ExpShips[ship_name_text] !== undefined){
  758. var ship_battles = parseInt(MembersArray[0][type]['ships'][index]['battles']); if(isNaN(ship_battles)){ship_battles = 0;}
  759. var ship_damage = parseInt(MembersArray[0][type]['ships'][index]['damage']); if(isNaN(ship_damage)){ship_damage = 0;}
  760. var ship_frags_ships = parseInt(MembersArray[0][type]['ships'][index]['frags_ships']); if(isNaN(ship_frags_ships)){ship_frags_ships = 0;}
  761. var ship_frags_planes = parseInt(MembersArray[0][type]['ships'][index]['frags_planes']); if(isNaN(ship_frags_planes)){ship_frags_planes = 0;}
  762. var ship_capture_base = parseInt(MembersArray[0][type]['ships'][index]['capture_base']); if(isNaN(ship_capture_base)){ship_capture_base = 0;}
  763. var ship_defend_base = parseInt(MembersArray[0][type]['ships'][index]['defend_base']); if(isNaN(ship_defend_base)){ship_defend_base = 0;}
  764. var StatShip = [];
  765. StatShip['damage'] = ship_damage;
  766. StatShip['frags_ships'] = ship_frags_ships;
  767. StatShip['frags_planes'] = ship_frags_planes;
  768. StatShip['capture_base'] = ship_capture_base;
  769. StatShip['defend_base'] = ship_defend_base;
  770. StatShip['expDamage'] = ship_battles * ExpShips[ship_name_text]['avg_damage'];
  771. StatShip['expFragsShips'] = ship_battles * ExpShips[ship_name_text]['avg_frags_ships'];
  772. StatShip['expFragsPlanes'] = ship_battles * ExpShips[ship_name_text]['avg_frags_planes'];
  773. StatShip['expCapture'] = ship_battles * ExpShips[ship_name_text]['avg_capture_base'];
  774. StatShip['expDefend'] = ship_battles * ExpShips[ship_name_text]['avg_defend_base'];
  775. MembersArray[0][type]['ships'][index]['wr'] = calcWR(StatShip);
  776. var wr_cell = document.getElementById('wr-'+type+'-'+ship_name_text);
  777. wr_cell.setAttribute('style', 'white-space: nowrap;');
  778. wr_cell.innerHTML = '<span style="color:'+findColorASC(MembersArray[0][type]['ships'][index]['wr'], 'wr')+';">'+valueFormat((MembersArray[0][type]['ships'][index]['wr']).toFixed(0))+'</span>';
  779. StatShipsClass['damage'] += ship_damage;
  780. StatShipsClass['frags_ships'] += ship_frags_ships;
  781. StatShipsClass['frags_planes'] += ship_frags_planes;
  782. StatShipsClass['capture_base'] += ship_capture_base;
  783. StatShipsClass['defend_base'] += ship_defend_base;
  784. StatShipsClass['expDamage'] += ship_battles * ExpShips[ship_name_text]['avg_damage'];
  785. StatShipsClass['expFragsShips'] += ship_battles * ExpShips[ship_name_text]['avg_frags_ships'];
  786. StatShipsClass['expFragsPlanes'] += ship_battles * ExpShips[ship_name_text]['avg_frags_planes'];
  787. StatShipsClass['expCapture'] += ship_battles * ExpShips[ship_name_text]['avg_capture_base'];
  788. StatShipsClass['expDefend'] += ship_battles * ExpShips[ship_name_text]['avg_defend_base'];
  789. var wr_class = calcWR(StatShipsClass);
  790. var ship_class = MembersArray[0][type]['ships'][index]['ship_class'];
  791. var wr_class_cell = document.getElementById('wr-'+type+'-'+ship_class);
  792. wr_class_cell.setAttribute('style', 'white-space: nowrap;');
  793. wr_class_cell.innerHTML = '<span style="color:'+findColorASC(wr_class, 'wr')+';">'+valueFormat((wr_class).toFixed(0))+'</span>';
  794. StatShips['damage'] += ship_damage;
  795. StatShips['frags_ships'] += ship_frags_ships;
  796. StatShips['frags_planes'] += ship_frags_planes;
  797. StatShips['capture_base'] += ship_capture_base;
  798. StatShips['defend_base'] += ship_defend_base;
  799. StatShips['expDamage'] += ship_battles * ExpShips[ship_name_text]['avg_damage'];
  800. StatShips['expFragsShips'] += ship_battles * ExpShips[ship_name_text]['avg_frags_ships'];
  801. StatShips['expFragsPlanes'] += ship_battles * ExpShips[ship_name_text]['avg_frags_planes'];
  802. StatShips['expCapture'] += ship_battles * ExpShips[ship_name_text]['avg_capture_base'];
  803. StatShips['expDefend'] += ship_battles * ExpShips[ship_name_text]['avg_defend_base'];
  804. }else{
  805. console.log('***** '+ship_name_text+' undefined');
  806. }
  807. continue;
  808. }
  809. }
  810. MembersArray[0][type]['ships_x_level'] = ships_x_level;
  811. MembersArray[0][type]['wr'] = calcWR(StatShips);
  812. count_stat++;
  813. }else{
  814. MembersArray[0][type]['wr'] = 0;
  815. }
  816. }
  817. if(count_stat == 0){
  818. console.log('NO LOAD STAT, START REFRESH 1 SEC');
  819. setTimeout(function(){getMemberStatistic();}, 1000);
  820. return;
  821. }
  822. //console.log(MembersArray[0]);
  823. var main_page_script_block = document.getElementById('main-page-script-block');
  824. if(main_page_script_block == null){viewMainMemberPage();}
  825. var ship_page_script_block = document.getElementById('ship-page-script-block');
  826. if(ship_page_script_block == null){viewShipMemberPage();}
  827. }
  828. function viewMainMemberPage(){
  829. var tabContainer = null;
  830. var tab_container = document.getElementsByClassName('tab-container');
  831. for(var tc = 0; tc < tab_container.length; tc++){
  832. if(tab_container[tc].getAttribute('js-tab-cont-id') != 'pvp'){continue;}
  833. tabContainer = tab_container[tc];
  834. }
  835. if(tabContainer != null){
  836. var cm_parent_link_cutted_text = document.getElementsByClassName('cm-parent-link_cutted-text')[0];
  837. var login_name = null; if(cm_parent_link_cutted_text != null){login_name = cm_parent_link_cutted_text.textContent;}
  838. var account_main_stats_mobile = tabContainer.getElementsByClassName('account-main-stats-mobile')[0];
  839. if(account_main_stats_mobile == null){return;}
  840. var userbar = '';
  841. if(login_name == MembersArray[0]['account_name']){
  842. userbar += '<button class="btn btn-lg btn-turqoise" id="generator-userbar" style="margin: 5px;">'+localization['generator-userbar']+'</button>';
  843. }
  844. userbar += '' +
  845. '<br />'+
  846. '<img id="userbar-img" src="'+WoWsStatInfoHref+'bg/userbar.png" />'+
  847. '<div id="userbar-link" style="margin: 5px; font-size: 14px;">[img]'+WoWsStatInfoHref+'bg/userbar.png[/img]</div>'
  848. '';
  849. account_main_stats_mobile.outerHTML += '' +
  850. '<hr />' +
  851. '<table id="main-page-script-block" style="width: 100%;">' +
  852. '<tr>' +
  853. '<td style="width: 410px; vertical-align: top;">' +
  854. ''+
  855. '</td>'+
  856. '<td>'+
  857. '</td>'+
  858. '<td style="/* width: 470px; */ text-align: right; vertical-align: top;">'+
  859. userbar +
  860. '</td>' +
  861. '</tr>' +
  862. '</table>'
  863. '';
  864. }
  865. var img = new Image();
  866. img.onload = function(){
  867. var userbar_img = document.getElementById('userbar-img');
  868. if(userbar_img != null){
  869. userbar_img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001);
  870. var userbar_link = document.getElementById('userbar-link');
  871. userbar_link.textContent = '[img]'+WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png[/img]';
  872. }
  873. }
  874. img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001);
  875. jQ('#generator-userbar').click(function(){
  876. getJson(WoWsStatInfoHref+'bg/bg.php?'+Math.floor(Math.random()*100000001), doneUserBarBG, errorUserBarBG);
  877. });
  878. }
  879. function viewShipMemberPage(){
  880. var tabContainer = null;
  881. var tab_container = document.getElementsByClassName('tab-container');
  882. for(var tc = 0; tc < tab_container.length; tc++){
  883. if(tab_container[tc].getAttribute('js-tab-cont-id') != 'pvp'){continue;}
  884. tabContainer = tab_container[tc];
  885. }
  886. if(tabContainer != null){
  887. var account_tab_ships = tabContainer.getElementsByClassName('account-tab-ships')[0];
  888. if(account_tab_ships == null){return;}
  889. var account_title = account_tab_ships.getElementsByClassName('account-title')[2];
  890. if(account_title == null){return;}
  891. var div = document.createElement('div');
  892. div.setAttribute('id', 'ship-page-script-block');
  893. div.setAttribute('style', ' padding-bottom: 40px;');
  894. div.innerHTML = '' +
  895. '<table class="account-table">' +
  896. '<thead>' +
  897. '<tr>' +
  898. '<th colspan="2">' +
  899. '<h3 class="_title">'+localization['additional-results']+'</h3>' +
  900. '</th>' +
  901. '</tr>' +
  902. '</thead>' +
  903. '<tbody>' +
  904. '<tr>' +
  905. '<td class="_name">' +
  906. '<span>'+localization['number-ships-x']+'</span>' +
  907. '</td>' +
  908. '<td class="_value">' +
  909. '<span>'+MembersArray[0]['pvp']['ships_x_level']+'</span>'+
  910. '</td>' +
  911. '</tr>' +
  912. '<tr>' +
  913. '<td class="_name">' +
  914. '<span>'+localization['wr']+'</span>' +
  915. '</td>' +
  916. '<td class="_value">' +
  917. '<span style="color: '+findColorASC(MembersArray[0]['pvp']['wr'], 'wr')+';">'+
  918. valueFormat((MembersArray[0]['pvp']['wr']).toFixed(2)) +
  919. '</span>'+
  920. '</td>' +
  921. '</tr>' +
  922. '</tbody>' +
  923. '</table>' +
  924. '';
  925. account_title.insertBefore(div, account_title.firstChild);
  926. }
  927. }
  928. function viewMemberProfilePageEU(){
  929. for(var t = 0; t < typeStat.length; t++){
  930. var type = typeStat[t];
  931. var general = document.getElementById('general_'+type);
  932. if(general !== null){
  933. var account_statistics__general = general.getElementsByClassName('account_statistics__general')[0];
  934. if(account_statistics__general !== undefined){
  935. var stat_main_middle = account_statistics__general.getElementsByClassName('stat-main-middle')[0];
  936. stat_main_middle.getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp');
  937. var stat = account_statistics__general.getElementsByClassName('stat');
  938. stat[0].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['battles'], 'battles');
  939. stat[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['wins_percents'], 'wins_percents');
  940. stat[2].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage');
  941. stat[3].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['kill_dead'], 'kill_dead');
  942.  
  943. var userbar = '<font color="black">.</font>';
  944. var my_profile_nickname = document.getElementsByClassName('js-my_profile_nickname')[0].textContent;
  945. if(type == 'pvp'){
  946. if(my_profile_nickname == MembersArray[0]['account_name']){
  947. userbar += '<button class="btn btn-default" id="generator-userbar" style="margin: 5px;">'+localization['generator-userbar']+'</button>';
  948. }
  949. userbar += '' +
  950. '<br />'+
  951. '<img id="userbar-img" src="'+WoWsStatInfoHref+'bg/userbar.png" />'+
  952. '<div id="userbar-link" style="margin: 5px;">[img]'+WoWsStatInfoHref+'bg/userbar.png[/img]</div>'
  953. '';
  954. }
  955. account_statistics__general.outerHTML += '' +
  956. '<hr />' +
  957. '<table style="width: 100%;">' +
  958. '<tr>' +
  959. '<td style="width: 410px; vertical-align: top;">' +
  960. '<table class="account_statistics__rates-small-border">' +
  961. '<thead>' +
  962. '<tr>' +
  963. '<th colspan="2">' +
  964. '<h3 class="account_statistics__title">'+localization['additional-results']+'</h3>' +
  965. '</th>' +
  966. '</tr>' +
  967. '</thead>' +
  968. '<tbody>' +
  969. '<tr>' +
  970. '<td class="param">' +
  971. '<span>'+localization['number-ships-x']+'</span>' +
  972. '</td>' +
  973. '<td class="value">' +
  974. '<span class="value">'+
  975. MembersArray[0][type]['ships_x_level'] +
  976. '</span>'+
  977. '</td>' +
  978. '</tr>' +
  979. '<tr>' +
  980. '<td class="param">' +
  981. '<span>'+localization['wr']+'</span>' +
  982. '</td>' +
  983. '<td class="value">' +
  984. '<span class="value" style="color: '+findColorASC(MembersArray[0][type]['wr'], 'wr')+';">'+
  985. valueFormat((MembersArray[0][type]['wr']).toFixed(2)) +
  986. '</span>'+
  987. '</td>' +
  988. '</tr>' +
  989. '</tbody>' +
  990. '</table>' +
  991. '</td>'+
  992. '<td>'+
  993. '</td>'+
  994. '<td style="/* width: 470px; */ text-align: right; vertical-align: top;">'+
  995. userbar +
  996. '</td>' +
  997. '</tr>' +
  998. '</table>'
  999. '';
  1000. }
  1001. }
  1002. }
  1003. var img = new Image();
  1004. img.onload = function(){
  1005. var userbar_img = document.getElementById('userbar-img');
  1006. if(userbar_img != null){
  1007. userbar_img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001);
  1008. var userbar_link = document.getElementById('userbar-link');
  1009. userbar_link.textContent = '[img]'+WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png[/img]';
  1010. }
  1011. }
  1012. img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001);
  1013. jQ('#generator-userbar').click(function(){
  1014. getJson(WoWsStatInfoHref+'bg/bg.php?'+Math.floor(Math.random()*100000001), doneUserBarBG, errorUserBarBG);
  1015. });
  1016.  
  1017. var content = document.getElementsByClassName('content')[0];
  1018. var row = content.getElementsByClassName('row')[0];
  1019. var col_md_8 = row.getElementsByClassName('col-md-8')[0];
  1020. col_md_8.outerHTML += '' +
  1021. '<style>' +
  1022. '.b-profile-clan{float: right;max-width: 400px;margin-top: -90px;padding-right: 100px;margin-bottom: 14px;padding-top: 5px;position: relative;}' +
  1023. '.b-profile-clan_photo{float: left;width: 61px;position: relative;min-height: 70px;top: 5px;}' +
  1024. '.b-profile-clan_color{width: 15px;height: 15px;position: absolute;left: 38px;top: 2px;}' +
  1025. '.b-profile-clan_link{background-image: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NTIxMEI3ODRFODExRTI5ODYxODk4QjE3Q0IyNzkyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkI4NTIxMEI4ODRFODExRTI5ODYxODk4QjE3Q0IyNzkyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Qjg1MjEwQjU4NEU4MTFFMjk4NjE4OThCMTdDQjI3OTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Qjg1MjEwQjY4NEU4MTFFMjk4NjE4OThCMTdDQjI3OTIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7V+fopAAAMmElEQVR42sxazY7jxhEm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");display: block;height: 54px;position: absolute;left: 2px;padding: 11px 0 0 11px;width: 54px;}' +
  1026. '.b-profile-clan_text{margin-left: 61px;}' +
  1027. '.b-profile-clan_text-wrpr{font-size: 13px;margin: 5px 0 0;overflow: hidden;padding-right: 0;padding: 0 0 7px;text-overflow: ellipsis;white-space: nowrap;}' +
  1028. '.b-link-clan{color: #f9d088;font-weight: bold;text-decoration: none;}' +
  1029. '.b-link-clan_tag{color: #babcbf;}' +
  1030. '.b-statistic{overflow: hidden;margin: 0 0 16px;line-height: 14px;}' +
  1031. '.b-statistic_item{color: #606061;font-size: 11px;margin: 0;padding: 0;line-height: 125%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;word-wrap: normal;}' +
  1032. '.b-statistic_value{color: #babcbf;}' +
  1033. '</style>' +
  1034. '<div id="wowsstatinfo-profile-clan">' +
  1035. '<div class="b-profile-clan b-profile-clan__points js-tooltip" id="js-profile-clan">' +
  1036. '<img src="http://'+realm+'.wargaming.net/clans/static/0.1.0.1/images/processing/loader.gif" />' +
  1037. '</div>' +
  1038. '</div>' +
  1039. '';
  1040. }
  1041. function viewMemberClanEU(){
  1042. var wowsstatinfo_profile_clan = document.getElementById('wowsstatinfo-profile-clan');
  1043. if(MembersArray[0]['clans'] != null){
  1044. var day = dateDiffInDays(MembersArray[0]['clans']['joined_at'] * 1000, new Date().getTime());
  1045. var icon = MembersArray[0]['clans']['clan']['emblems']['x32']['portal'];
  1046. if(icon === undefined){
  1047. for(var key in MembersArray[0]['clans']['clan']['emblems']['x32']){
  1048. if(key != 'wot'){
  1049. icon = MembersArray[0]['clans']['clan']['emblems']['x32'][key];
  1050. }
  1051. }
  1052. }
  1053. wowsstatinfo_profile_clan.innerHTML = '' +
  1054. '<div class="b-profile-clan b-profile-clan__points js-tooltip" id="js-profile-clan">' +
  1055. '<div class="b-profile-clan_photo">' +
  1056. '<div style="background: '+MembersArray[0]['clans']['clan']['color']+';" class="b-profile-clan_color"><!-- --></div>' +
  1057. '<a class="b-profile-clan_link" href="http://'+realm+'.wargaming.net/clans/'+MembersArray[0]['clans']['clan']['clan_id']+'/" target="_blank">' +
  1058. '<img alt="'+MembersArray[0]['clans']['clan']['name']+'" src="'+icon+'" width="32" height="32">' +
  1059. '</a>' +
  1060. '</div>' +
  1061. '<div class="b-profile-clan_text">' +
  1062. '<div class="b-profile-clan_text-wrpr">' +
  1063. '<a class="b-link-clan" href="http://'+realm+'.wargaming.net/clans/'+MembersArray[0]['clans']['clan']['clan_id']+'/" target="_blank">' +
  1064. '<span class="b-link-clan_tag">['+MembersArray[0]['clans']['clan']['tag']+']</span>&nbsp;'+MembersArray[0]['clans']['clan']['name']+'' +
  1065. '</a>' +
  1066. '</div>' +
  1067. '<div class="b-statistic">' +
  1068. '<p class="b-statistic_item">'+localization['role']+': <span class="b-statistic_value">'+MembersArray[0]['clans']['role_i18n']+'</span></p>' +
  1069. '<p class="b-statistic_item">'+localization['clan-day']+': <span class="b-statistic_value">'+day+'</span></p>' +
  1070. '</div>' +
  1071. '</div>' +
  1072. '</div>' +
  1073. '';
  1074. }else{
  1075. wowsstatinfo_profile_clan.innerHTML = '';
  1076. }
  1077. }
  1078. function getMemberStatisticEU(){
  1079. MembersArray[0] = [];
  1080. var account_href = window.location.href.split('/')[5].split('-');
  1081. var account_id = account_href[0];
  1082. var account_name = account_href[1];
  1083. var account = document.getElementsByClassName('account')[0];
  1084. account_name = account.getElementsByTagName('h1')[0].textContent;
  1085. MembersArray[0]['account_id'] = account_id;
  1086. MembersArray[0]['account_name'] = account_name;
  1087. for(var t = 0; t < typeStat.length; t++){
  1088. var type = typeStat[t];
  1089. MembersArray[0][type] = [];
  1090. var account_statistic = document.getElementById(type);
  1091. if(account_statistic == null){continue;}
  1092. var account_statistics = account_statistic.getElementsByClassName('account_statistics__rates-small-border');
  1093. if(account_statistics.length == 3){
  1094. MembersArray[0][type]['battles'] = htmlParseMemberStatistic(account_statistics[0].rows[1].cells[1]);
  1095. account_statistics[0].rows[1].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['battles'], 'battles');
  1096. MembersArray[0][type]['wins'] = htmlParseMemberStatistic(account_statistics[0].rows[2].cells[1]);
  1097. MembersArray[0][type]['losses'] = htmlParseMemberStatistic(account_statistics[0].rows[3].cells[1]);
  1098. MembersArray[0][type]['draws'] = htmlParseMemberStatistic(account_statistics[0].rows[4].cells[1]);
  1099. MembersArray[0][type]['survived_battles'] = htmlParseMemberStatistic(account_statistics[0].rows[5].cells[1]);
  1100. MembersArray[0][type]['damage'] = htmlParseMemberStatistic(account_statistics[0].rows[6].cells[1]);
  1101. MembersArray[0][type]['frags_ships'] = htmlParseMemberStatistic(account_statistics[0].rows[7].cells[1]);
  1102. MembersArray[0][type]['frags_planes'] = htmlParseMemberStatistic(account_statistics[0].rows[8].cells[1]);
  1103. MembersArray[0][type]['capture_base'] = htmlParseMemberStatistic(account_statistics[0].rows[9].cells[1]);
  1104. MembersArray[0][type]['defend_base'] = htmlParseMemberStatistic(account_statistics[0].rows[10].cells[1]);
  1105. if(account_statistics[1].rows.length == 7){
  1106. MembersArray[0][type]['avg_xp'] = htmlParseMemberStatistic(account_statistics[1].rows[1].cells[1]);
  1107. account_statistics[1].rows[1].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp');
  1108. MembersArray[0][type]['avg_damage'] = htmlParseMemberStatistic(account_statistics[1].rows[2].cells[1]);
  1109. account_statistics[1].rows[2].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage');
  1110. MembersArray[0][type]['avg_frags_ships'] = htmlParseMemberStatistic(account_statistics[1].rows[3].cells[1]);
  1111. account_statistics[1].rows[3].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_ships'], 'avg_frags_ships');
  1112. MembersArray[0][type]['avg_frags_planes'] = htmlParseMemberStatistic(account_statistics[1].rows[4].cells[1]);
  1113. account_statistics[1].rows[4].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_planes'], 'avg_frags_planes');
  1114. MembersArray[0][type]['hits_percents_battery'] = 0;
  1115. MembersArray[0][type]['hits_percents_torpedo'] = 0;
  1116. MembersArray[0][type]['avg_capture_base'] = htmlParseMemberStatistic(account_statistics[1].rows[5].cells[1]);
  1117. account_statistics[1].rows[5].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_capture_base'], 'avg_capture_base');
  1118. MembersArray[0][type]['avg_defend_base'] = htmlParseMemberStatistic(account_statistics[1].rows[6].cells[1]);
  1119. account_statistics[1].rows[6].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_defend_base'], 'avg_defend_base');
  1120. }else if(account_statistics[1].rows.length == 8){
  1121. MembersArray[0][type]['avg_xp'] = htmlParseMemberStatistic(account_statistics[1].rows[1].cells[1]);
  1122. account_statistics[1].rows[1].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp');
  1123. MembersArray[0][type]['avg_damage'] = htmlParseMemberStatistic(account_statistics[1].rows[2].cells[1]);
  1124. account_statistics[1].rows[2].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage');
  1125. MembersArray[0][type]['avg_frags_ships'] = htmlParseMemberStatistic(account_statistics[1].rows[3].cells[1]);
  1126. account_statistics[1].rows[3].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_ships'], 'avg_frags_ships');
  1127. MembersArray[0][type]['avg_frags_planes'] = htmlParseMemberStatistic(account_statistics[1].rows[4].cells[1]);
  1128. account_statistics[1].rows[4].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_planes'], 'avg_frags_planes');
  1129. MembersArray[0][type]['hits_percents_battery'] = htmlParseMemberStatistic(account_statistics[1].rows[5].cells[1]);
  1130. account_statistics[1].rows[5].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['hits_percents_battery'], 'hits_percents_battery');
  1131. MembersArray[0][type]['hits_percents_torpedo'] = 0;
  1132. MembersArray[0][type]['avg_capture_base'] = htmlParseMemberStatistic(account_statistics[1].rows[6].cells[1]);
  1133. account_statistics[1].rows[6].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_capture_base'], 'avg_capture_base');
  1134. MembersArray[0][type]['avg_defend_base'] = htmlParseMemberStatistic(account_statistics[1].rows[7].cells[1]);
  1135. account_statistics[1].rows[7].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_defend_base'], 'avg_defend_base');
  1136. }else{
  1137. MembersArray[0][type]['avg_xp'] = htmlParseMemberStatistic(account_statistics[1].rows[1].cells[1]);
  1138. account_statistics[1].rows[1].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp');
  1139. MembersArray[0][type]['avg_damage'] = htmlParseMemberStatistic(account_statistics[1].rows[2].cells[1]);
  1140. account_statistics[1].rows[2].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage');
  1141. MembersArray[0][type]['avg_frags_ships'] = htmlParseMemberStatistic(account_statistics[1].rows[3].cells[1]);
  1142. account_statistics[1].rows[3].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_ships'], 'avg_frags_ships');
  1143. MembersArray[0][type]['avg_frags_planes'] = htmlParseMemberStatistic(account_statistics[1].rows[4].cells[1]);
  1144. account_statistics[1].rows[4].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_planes'], 'avg_frags_planes');
  1145. MembersArray[0][type]['hits_percents_battery'] = htmlParseMemberStatistic(account_statistics[1].rows[5].cells[1]);
  1146. account_statistics[1].rows[5].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['hits_percents_battery'], 'hits_percents_battery');
  1147. MembersArray[0][type]['hits_percents_torpedo'] = htmlParseMemberStatistic(account_statistics[1].rows[6].cells[1]);
  1148. account_statistics[1].rows[6].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['hits_percents_torpedo'], 'hits_percents_torpedo');
  1149. MembersArray[0][type]['avg_capture_base'] = htmlParseMemberStatistic(account_statistics[1].rows[7].cells[1]);
  1150. account_statistics[1].rows[7].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_capture_base'], 'avg_capture_base');
  1151. MembersArray[0][type]['avg_defend_base'] = htmlParseMemberStatistic(account_statistics[1].rows[8].cells[1]);
  1152. account_statistics[1].rows[8].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['avg_defend_base'], 'avg_defend_base');
  1153. }
  1154. MembersArray[0][type]['max_xp'] = htmlParseMemberStatistic(account_statistics[2].rows[1].cells[1]);
  1155. account_statistics[2].rows[1].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['max_xp'], 'max_xp');
  1156. MembersArray[0][type]['max_damage'] = htmlParseMemberStatistic(account_statistics[2].rows[2].cells[1]);
  1157. account_statistics[2].rows[2].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['max_damage'], 'max_damage');
  1158. MembersArray[0][type]['max_frags_ships'] = htmlParseMemberStatistic(account_statistics[2].rows[3].cells[1]);
  1159. account_statistics[2].rows[3].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['max_frags_ships'], 'max_frags_ships');
  1160. MembersArray[0][type]['max_frags_planes'] = htmlParseMemberStatistic(account_statistics[2].rows[4].cells[1]);
  1161. account_statistics[2].rows[4].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['max_frags_planes'], 'max_frags_planes');
  1162. var ships__avg_params = account_statistic.getElementsByClassName('ships__avg-params')[0]
  1163. MembersArray[0][type]['avg_level_battles'] = htmlParseMemberStatistic(ships__avg_params.getElementsByClassName('_value')[0]);
  1164. ships__avg_params.getElementsByClassName('_value')[0].style.color = findColorASC(MembersArray[0][type]['avg_level_battles'], 'avg_level_battles');
  1165. MembersArray[0][type]['wins_percents'] = (MembersArray[0][type]['wins']/MembersArray[0][type]['battles'])*100;
  1166. account_statistics[0].rows[2].cells[1].style.color = findColorASC(MembersArray[0][type]['wins_percents'], 'wins_percents');
  1167. MembersArray[0][type]['losses_percents'] = (MembersArray[0][type]['losses']/MembersArray[0][type]['battles'])*100;
  1168. account_statistics[0].rows[3].cells[1].style.color = findColorDESC(MembersArray[0][type]['losses_percents'], 'losses_percents');
  1169. MembersArray[0][type]['draws_percents'] = (MembersArray[0][type]['draws']/MembersArray[0][type]['battles'])*100;
  1170. account_statistics[0].rows[4].cells[1].innerHTML += '<small>('+(MembersArray[0][type]['draws_percents']).toFixed(0)+'%)</small>';
  1171. account_statistics[0].rows[4].cells[1].style.color = findColorDESC(MembersArray[0][type]['draws_percents'], 'draws_percents');
  1172. MembersArray[0][type]['survived_percents'] = (MembersArray[0][type]['survived_battles']/MembersArray[0][type]['battles'])*100;
  1173. account_statistics[0].rows[5].cells[1].innerHTML += '<small>('+(MembersArray[0][type]['survived_percents']).toFixed(0)+'%)</small>';
  1174. account_statistics[0].rows[5].cells[1].style.color = findColorASC(MembersArray[0][type]['survived_percents'], 'survived_percents');
  1175. if(MembersArray[0][type]['battles'] == MembersArray[0][type]['survived_battles']){
  1176. MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/MembersArray[0][type]['battles'];
  1177. }else{
  1178. MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/(MembersArray[0][type]['battles']-MembersArray[0][type]['survived_battles']);
  1179. }
  1180. }else{
  1181. MembersArray[0][type]['battles'] = 0;
  1182. MembersArray[0][type]['wins'] = 0;
  1183. MembersArray[0][type]['losses'] = 0;
  1184. MembersArray[0][type]['draws'] = 0;
  1185. MembersArray[0][type]['survived_battles'] = 0;
  1186. MembersArray[0][type]['hits_percents_battery'] = 0;
  1187. MembersArray[0][type]['hits_percents_torpedo'] = 0;
  1188. MembersArray[0][type]['damage'] = 0;
  1189. MembersArray[0][type]['frags_ships'] = 0;
  1190. MembersArray[0][type]['frags_planes'] = 0;
  1191. MembersArray[0][type]['capture_base'] = 0;
  1192. MembersArray[0][type]['defend_base'] = 0;
  1193. MembersArray[0][type]['avg_xp'] = 0;
  1194. MembersArray[0][type]['avg_damage'] = 0;
  1195. MembersArray[0][type]['avg_frags_ships'] = 0;
  1196. MembersArray[0][type]['avg_frags_planes'] = 0;
  1197. MembersArray[0][type]['avg_capture_base'] = 0;
  1198. MembersArray[0][type]['avg_defend_base'] = 0;
  1199. MembersArray[0][type]['max_xp'] = 0;
  1200. MembersArray[0][type]['max_damage'] = 0;
  1201. MembersArray[0][type]['max_frags_ships'] = 0;
  1202. MembersArray[0][type]['max_frags_planes'] = 0;
  1203. MembersArray[0][type]['avg_level_battles'] = 0;
  1204. MembersArray[0][type]['ships_x_level'] = 0;
  1205. MembersArray[0][type]['wins_percents'] = 0;
  1206. MembersArray[0][type]['losses_percents'] = 0;
  1207. MembersArray[0][type]['draws_percents'] = 0;
  1208. MembersArray[0][type]['survived_percents'] = 0;
  1209. MembersArray[0][type]['kill_dead'] = 0;
  1210. MembersArray[0][type]['wr'] = 0;
  1211. }
  1212. MembersArray[0][type]['ships'] = [];
  1213. var wows_account_stats = account_statistic.getElementsByClassName('wows-account-stats')[0];
  1214. if(wows_account_stats !== undefined){
  1215. var ships_x_level = 0;
  1216. var StatShips = [];
  1217. StatShips['damage'] = 0;
  1218. StatShips['frags_ships'] = 0;
  1219. StatShips['frags_planes'] = 0;
  1220. StatShips['capture_base'] = 0;
  1221. StatShips['defend_base'] = 0;
  1222. StatShips['expDamage'] = 0;
  1223. StatShips['expFragsShips'] = 0;
  1224. StatShips['expFragsPlanes'] = 0;
  1225. StatShips['expCapture'] = 0;
  1226. StatShips['expDefend'] = 0;
  1227. var StatShipsClass = [];
  1228. StatShipsClass['damage'] = 0;
  1229. StatShipsClass['frags_ships'] = 0;
  1230. StatShipsClass['frags_planes'] = 0;
  1231. StatShipsClass['capture_base'] = 0;
  1232. StatShipsClass['defend_base'] = 0;
  1233. StatShipsClass['expDamage'] = 0;
  1234. StatShipsClass['expFragsShips'] = 0;
  1235. StatShipsClass['expFragsPlanes'] = 0;
  1236. StatShipsClass['expCapture'] = 0;
  1237. StatShipsClass['expDefend'] = 0;
  1238. for(var i = 0; i < wows_account_stats.rows.length; i++){
  1239. var row = wows_account_stats.rows[i];
  1240. if(i == 0){
  1241. var th = document.createElement('th');
  1242. th.innerHTML = '<span>'+localization['wr']+'</span>';
  1243. row.appendChild(th);
  1244. continue;
  1245. }
  1246. if(row.getAttribute('class').indexOf('ship-class-section') > -1){
  1247. var battles = htmlParseMemberStatistic(row.cells[1]);
  1248. if(battles > 0){
  1249. var wins = htmlParseMemberStatistic(row.cells[2]);
  1250. var avg_xp = htmlParseMemberStatistic(row.cells[3]);
  1251. var wins_percents = (wins/battles)*100; if(isNaN(wins_percents)){wins_percents = 0;}
  1252. row.cells[2].setAttribute('style', 'white-space: nowrap;');
  1253. row.cells[2].innerHTML = valueFormat(wins)+' <span style="color:'+findColorASC(wins_percents, 'wins_percents')+';">('+valueFormat((wins_percents).toFixed(0))+'%)</span>';
  1254. row.cells[3].setAttribute('style', 'white-space: nowrap;');
  1255. row.cells[3].innerHTML = ' <span style="color:'+findColorASC(avg_xp, 'avg_xp')+';">'+valueFormat(avg_xp)+'</span>';
  1256. }
  1257. var row_id = row.getAttribute('id');
  1258. var ship_class = row_id.split('_')[1];
  1259. StatShipsClass['damage'] = 0;
  1260. StatShipsClass['frags_ships'] = 0;
  1261. StatShipsClass['frags_planes'] = 0;
  1262. StatShipsClass['capture_base'] = 0;
  1263. StatShipsClass['defend_base'] = 0;
  1264. StatShipsClass['expDamage'] = 0;
  1265. StatShipsClass['expFragsShips'] = 0;
  1266. StatShipsClass['expFragsPlanes'] = 0;
  1267. StatShipsClass['expCapture'] = 0;
  1268. StatShipsClass['expDefend'] = 0;
  1269. var td = document.createElement('td');
  1270. td.setAttribute('id', 'wr-'+type+'-'+ship_class);
  1271. td.innerHTML = '<span>0</span>';
  1272. row.appendChild(td);
  1273. continue;
  1274. }else if(row.getAttribute('class') == 'ship-entry-statistic'){
  1275. var index = MembersArray[0][type]['ships'].length - 1;
  1276. row.cells[0].setAttribute('colspan', '5');
  1277. var account_statistics__rates = row.cells[0].getElementsByClassName('account_statistics__rates');
  1278. MembersArray[0][type]['ships'][index]['battles'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[1].cells[1]);
  1279. MembersArray[0][type]['ships'][index]['wins'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[2].cells[1]);
  1280. MembersArray[0][type]['ships'][index]['losses'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[3].cells[1]);
  1281. MembersArray[0][type]['ships'][index]['draws'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[4].cells[1]);
  1282. MembersArray[0][type]['ships'][index]['survived_battles'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[5].cells[1]);
  1283. MembersArray[0][type]['ships'][index]['damage'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[6].cells[1]);
  1284. MembersArray[0][type]['ships'][index]['frags_ships'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[7].cells[1]);
  1285. MembersArray[0][type]['ships'][index]['frags_planes'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[8].cells[1]);
  1286. MembersArray[0][type]['ships'][index]['capture_base'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[9].cells[1]);
  1287. MembersArray[0][type]['ships'][index]['defend_base'] = htmlParseMemberStatistic(account_statistics__rates[0].rows[10].cells[1]);
  1288. if(account_statistics__rates[1].rows.length == 7){
  1289. MembersArray[0][type]['ships'][index]['avg_xp'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[1].cells[1]);
  1290. MembersArray[0][type]['ships'][index]['avg_damage'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[2].cells[1]);
  1291. MembersArray[0][type]['ships'][index]['avg_frags_ships'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[3].cells[1]);
  1292. MembersArray[0][type]['ships'][index]['avg_frags_planes'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[4].cells[1]);
  1293. MembersArray[0][type]['ships'][index]['hits_percents_battery'] = 0;
  1294. MembersArray[0][type]['ships'][index]['hits_percents_torpedo'] = 0;
  1295. MembersArray[0][type]['ships'][index]['avg_capture_base'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[5].cells[1]);
  1296. MembersArray[0][type]['ships'][index]['avg_defend_base'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[6].cells[1]);account_statistics[1].rows[5].cells[1].getElementsByClassName('value')[0].style.color = findColorASC(MembersArray[0][type]['ships'][index]['avg_defend_base'], 'avg_defend_base');
  1297. }else if(account_statistics__rates[1].rows.length == 8){
  1298. MembersArray[0][type]['ships'][index]['avg_xp'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[1].cells[1]);
  1299. MembersArray[0][type]['ships'][index]['avg_damage'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[2].cells[1]);
  1300. MembersArray[0][type]['ships'][index]['avg_frags_ships'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[3].cells[1]);
  1301. MembersArray[0][type]['ships'][index]['avg_frags_planes'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[4].cells[1]);
  1302. MembersArray[0][type]['ships'][index]['hits_percents_battery'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[5].cells[1]);
  1303. MembersArray[0][type]['ships'][index]['hits_percents_torpedo'] = 0;
  1304. MembersArray[0][type]['ships'][index]['avg_capture_base'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[6].cells[1]);
  1305. MembersArray[0][type]['ships'][index]['avg_defend_base'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[7].cells[1]);
  1306. }else{
  1307. MembersArray[0][type]['ships'][index]['avg_xp'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[1].cells[1]);
  1308. MembersArray[0][type]['ships'][index]['avg_damage'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[2].cells[1]);
  1309. MembersArray[0][type]['ships'][index]['avg_frags_ships'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[3].cells[1]);
  1310. MembersArray[0][type]['ships'][index]['avg_frags_planes'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[4].cells[1]);
  1311. MembersArray[0][type]['ships'][index]['hits_percents_battery'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[5].cells[1]);
  1312. MembersArray[0][type]['ships'][index]['hits_percents_torpedo'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[6].cells[1]);
  1313. MembersArray[0][type]['ships'][index]['avg_capture_base'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[7].cells[1]);
  1314. MembersArray[0][type]['ships'][index]['avg_defend_base'] = htmlParseMemberStatistic(account_statistics__rates[1].rows[8].cells[1]);
  1315. }
  1316. MembersArray[0][type]['ships'][index]['max_xp'] = htmlParseMemberStatistic(account_statistics__rates[2].rows[1].cells[1]);
  1317. MembersArray[0][type]['ships'][index]['max_damage'] = htmlParseMemberStatistic(account_statistics__rates[2].rows[2].cells[1]);
  1318. MembersArray[0][type]['ships'][index]['max_frags_ships'] = htmlParseMemberStatistic(account_statistics__rates[2].rows[3].cells[1]);
  1319. MembersArray[0][type]['ships'][index]['max_frags_planes'] = htmlParseMemberStatistic(account_statistics__rates[2].rows[4].cells[1]);
  1320. MembersArray[0][type]['ships'][index]['wins_percents'] = (MembersArray[0][type]['ships'][index]['wins']/MembersArray[0][type]['ships'][index]['battles'])*100;
  1321. MembersArray[0][type]['ships'][index]['losses_percents'] = (MembersArray[0][type]['ships'][index]['losses']/MembersArray[0][type]['ships'][index]['battles'])*100;
  1322. MembersArray[0][type]['ships'][index]['draws_percents'] = (MembersArray[0][type]['ships'][index]['draws']/MembersArray[0][type]['ships'][index]['battles'])*100;
  1323. MembersArray[0][type]['ships'][index]['survived_percents'] = (MembersArray[0][type]['ships'][index]['survived_battles']/MembersArray[0][type]['ships'][index]['battles'])*100;
  1324. if(MembersArray[0][type]['ships'][index]['battles'] == MembersArray[0][type]['ships'][index]['survived_battles']){
  1325. MembersArray[0][type]['ships'][index]['kill_dead'] = MembersArray[0][type]['ships'][index]['frags_ships']/MembersArray[0][type]['ships'][index]['battles'];
  1326. }else{
  1327. MembersArray[0][type]['ships'][index]['kill_dead'] = MembersArray[0][type]['ships'][index]['frags_ships']/(MembersArray[0][type]['ships'][index]['battles']-MembersArray[0][type]['ships'][index]['survived_battles']);
  1328. }
  1329. var ship_name = MembersArray[0][type]['ships'][index]['ship_name'];
  1330. if(ExpShips[ship_name] !== undefined){
  1331. var ship_battles = parseInt(MembersArray[0][type]['ships'][index]['battles']); if(isNaN(ship_battles)){ship_battles = 0;}
  1332. var ship_damage = parseInt(MembersArray[0][type]['ships'][index]['damage']); if(isNaN(ship_damage)){ship_damage = 0;}
  1333. var ship_frags_ships = parseInt(MembersArray[0][type]['ships'][index]['frags_ships']); if(isNaN(ship_frags_ships)){ship_frags_ships = 0;}
  1334. var ship_frags_planes = parseInt(MembersArray[0][type]['ships'][index]['frags_planes']); if(isNaN(ship_frags_planes)){ship_frags_planes = 0;}
  1335. var ship_capture_base = parseInt(MembersArray[0][type]['ships'][index]['capture_base']); if(isNaN(ship_capture_base)){ship_capture_base = 0;}
  1336. var ship_defend_base = parseInt(MembersArray[0][type]['ships'][index]['defend_base']); if(isNaN(ship_defend_base)){ship_defend_base = 0;}
  1337. var StatShip = [];
  1338. StatShip['damage'] = ship_damage;
  1339. StatShip['frags_ships'] = ship_frags_ships;
  1340. StatShip['frags_planes'] = ship_frags_planes;
  1341. StatShip['capture_base'] = ship_capture_base;
  1342. StatShip['defend_base'] = ship_defend_base;
  1343. StatShip['expDamage'] = ship_battles * ExpShips[ship_name]['avg_damage'];
  1344. StatShip['expFragsShips'] = ship_battles * ExpShips[ship_name]['avg_frags_ships'];
  1345. StatShip['expFragsPlanes'] = ship_battles * ExpShips[ship_name]['avg_frags_planes'];
  1346. StatShip['expCapture'] = ship_battles * ExpShips[ship_name]['avg_capture_base'];
  1347. StatShip['expDefend'] = ship_battles * ExpShips[ship_name]['avg_defend_base'];
  1348. MembersArray[0][type]['ships'][index]['wr'] = calcWR(StatShip);
  1349. var wr_cell = document.getElementById('wr-'+type+'-'+ship_name);
  1350. wr_cell.setAttribute('style', 'white-space: nowrap;');
  1351. wr_cell.innerHTML = '<span style="color:'+findColorASC(MembersArray[0][type]['ships'][index]['wr'], 'wr')+';">'+valueFormat((MembersArray[0][type]['ships'][index]['wr']).toFixed(0))+'</span>';
  1352. StatShipsClass['damage'] += ship_damage;
  1353. StatShipsClass['frags_ships'] += ship_frags_ships;
  1354. StatShipsClass['frags_planes'] += ship_frags_planes;
  1355. StatShipsClass['capture_base'] += ship_capture_base;
  1356. StatShipsClass['defend_base'] += ship_defend_base;
  1357. StatShipsClass['expDamage'] += ship_battles * ExpShips[ship_name]['avg_damage'];
  1358. StatShipsClass['expFragsShips'] += ship_battles * ExpShips[ship_name]['avg_frags_ships'];
  1359. StatShipsClass['expFragsPlanes'] += ship_battles * ExpShips[ship_name]['avg_frags_planes'];
  1360. StatShipsClass['expCapture'] += ship_battles * ExpShips[ship_name]['avg_capture_base'];
  1361. StatShipsClass['expDefend'] += ship_battles * ExpShips[ship_name]['avg_defend_base'];
  1362. var wr_class = calcWR(StatShipsClass);
  1363. var ship_class = MembersArray[0][type]['ships'][index]['ship_class'];
  1364. var wr_class_cell = document.getElementById('wr-'+type+'-'+ship_class);
  1365. wr_class_cell.setAttribute('style', 'white-space: nowrap;');
  1366. wr_class_cell.innerHTML = '<span style="color:'+findColorASC(wr_class, 'wr')+';">'+valueFormat((wr_class).toFixed(0))+'</span>';
  1367. StatShips['damage'] += ship_damage;
  1368. StatShips['frags_ships'] += ship_frags_ships;
  1369. StatShips['frags_planes'] += ship_frags_planes;
  1370. StatShips['capture_base'] += ship_capture_base;
  1371. StatShips['defend_base'] += ship_defend_base;
  1372. StatShips['expDamage'] += ship_battles * ExpShips[ship_name]['avg_damage'];
  1373. StatShips['expFragsShips'] += ship_battles * ExpShips[ship_name]['avg_frags_ships'];
  1374. StatShips['expFragsPlanes'] += ship_battles * ExpShips[ship_name]['avg_frags_planes'];
  1375. StatShips['expCapture'] += ship_battles * ExpShips[ship_name]['avg_capture_base'];
  1376. StatShips['expDefend'] += ship_battles * ExpShips[ship_name]['avg_defend_base'];
  1377. }else{
  1378. console.log('***** '+ship_name+' undefined');
  1379. }
  1380. continue;
  1381. }else if(row.getAttribute('class').indexOf('ship-entry') > -1){
  1382. var index = MembersArray[0][type]['ships'].length;
  1383. MembersArray[0][type]['ships'][index] = [];
  1384. var class_nation = row.cells[0].getAttribute('class').split(' ');
  1385. for(var cn = 0; cn < class_nation.length; cn++){
  1386. if(class_nation[cn].indexOf('ship_') > -1){
  1387. MembersArray[0][type]['ships'][index]['ship_class'] = class_nation[cn].split('_')[1];
  1388. }else if(class_nation[cn].indexOf('nation_') > -1){
  1389. MembersArray[0][type]['ships'][index]['ship_nation'] = class_nation[cn].split('_')[1];
  1390. }
  1391. }
  1392. MembersArray[0][type]['ships'][index]['ship_level'] = row.cells[0].textContent.trim().split("\n")[0].trim();
  1393. MembersArray[0][type]['ships'][index]['ship_name'] = row.cells[0].textContent.trim().split("\n")[1].trim();
  1394. if(MembersArray[0][type]['ships'][index]['ship_level'] == 'X'){
  1395. ships_x_level++;
  1396. }
  1397. var battles = htmlParseMemberStatistic(row.cells[1]);
  1398. var wins = htmlParseMemberStatistic(row.cells[2]);
  1399. var avg_xp = htmlParseMemberStatistic(row.cells[3]);
  1400. var wins_percents = (wins/battles)*100; if(isNaN(wins_percents)){wins_percents = 0;}
  1401. row.cells[2].setAttribute('style', 'white-space: nowrap;');
  1402. row.cells[2].innerHTML = valueFormat(wins)+' <span style="color:'+findColorASC(wins_percents, 'wins_percents')+';">('+valueFormat((wins_percents).toFixed(0))+'%)</span>';
  1403. row.cells[3].setAttribute('style', 'white-space: nowrap;');
  1404. row.cells[3].innerHTML = ' <span style="color:'+findColorASC(avg_xp, 'avg_xp')+';">'+valueFormat(avg_xp)+'</span>';
  1405. var ship_name = MembersArray[0][type]['ships'][index]['ship_name'];
  1406. var td = document.createElement('td');
  1407. td.setAttribute('id', 'wr-'+type+'-'+ship_name);
  1408. td.innerHTML = '<span>0</span>';
  1409. row.appendChild(td);
  1410. continue;
  1411. }
  1412. }
  1413. MembersArray[0][type]['wr'] = calcWR(StatShips);
  1414. MembersArray[0][type]['ships_x_level'] = ships_x_level;
  1415. }
  1416. }
  1417. //console.log(MembersArray[0]);
  1418. }
  1419. function doneClanInfoEU(url, response){
  1420. if(response.status && response.status == "error"){
  1421. errorClanInfoEU();
  1422. return;
  1423. }
  1424. var vars = getUrlVars(url);
  1425. var account_id = vars['account_id'];
  1426. MembersArray[0]['clans'] = response['data'][account_id];
  1427. viewMemberClanEU();
  1428. }
  1429. function errorClanInfoEU(url){
  1430. MembersArray[0]['clans'] = null;
  1431. viewMemberClanEU();
  1432. }
  1433. function GeneratorUserBar(){
  1434. var userbarbg = 'userbar';
  1435. var radios = document.getElementsByName('userbar-bg');
  1436. for(var i = 0; i < radios.length; i++){
  1437. if(radios[i].checked){
  1438. userbarbg = radios[i].value;
  1439. break;
  1440. }
  1441. }
  1442. var jsonString = 'json='+JSON.stringify(MembersArray[0])+'&type=userbar&userbarbg='+userbarbg+'&lang='+lang;
  1443. var xmlhttp;
  1444. try{
  1445. xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
  1446. }catch(e){
  1447. try{
  1448. xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
  1449. }catch(E){
  1450. xmlhttp = false;
  1451. }
  1452. }
  1453. if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
  1454. xmlhttp = new XMLHttpRequest();
  1455. }
  1456. xmlhttp.open('POST', ''+WoWsStatInfoHref+'userbar.php?random='+Math.floor(Math.random()*100000001), true);
  1457. xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  1458. xmlhttp.onreadystatechange = function(){
  1459. if(xmlhttp.readyState == 4){
  1460. if(xmlhttp.status == 200){
  1461. var userbar_img = document.getElementById('userbar-img');
  1462. userbar_img.src = xmlhttp.responseText+'?'+Math.floor(Math.random()*100000001);
  1463. var userbar_link = document.getElementById('userbar-link');
  1464. userbar_link.textContent = '[img]'+xmlhttp.responseText+'[/img]';
  1465. }
  1466. }
  1467. };
  1468. xmlhttp.send(jsonString);
  1469. }
  1470. function doneUserBarBG(url, response){
  1471. var html = '';
  1472. var data = response;
  1473. var check = true;
  1474. html += '<div style="width: 488px; height: 429px; overflow-y: scroll;">';
  1475. for(var i = 0; i < data.length; i++){
  1476. var imgbgview = false;
  1477. var img = data[i].split('_');
  1478. if(img.length > 1){
  1479. for(var i_id = 1; i_id < img.length; i_id++){
  1480. if(MembersArray[0]['clans'] == null){break;}
  1481. if(img[i_id] == MembersArray[0]['clans']['clan']['clan_id']){
  1482. imgbgview = true;
  1483. }
  1484. }
  1485. }else{
  1486. imgbgview = true;
  1487. }
  1488. if(imgbgview){
  1489. var checked = ''; if(check){checked = 'checked="checked"'; check = false;}
  1490. html += '<input type="radio" name="userbar-bg" value="'+data[i]+'" '+checked+'> '+data[i]+'<br />';
  1491. html += '<img src="'+WoWsStatInfoHref+'bg/'+data[i]+'.png" title="'+data[i]+'"/><br /><br />';
  1492. }
  1493. }
  1494. html += '</div>';
  1495. onShowMessage(
  1496. localization['userbar-bg'],
  1497. html,
  1498. function(){GeneratorUserBar(); onCloseMessage();},
  1499. localization['Ok'],
  1500. true
  1501. );
  1502. }
  1503. function errorUserBarBG(url){
  1504. var html = '' +
  1505. '<div style="width: 488px;">' +
  1506. '<input type="radio" name="userbar-bg" value="userbar" checked="checked"> userbar<br />' +
  1507. '<img src="'+WoWsStatInfoHref+'bg/userbar.png" title="userbar"/><br /><br />' +
  1508. '</div>' +
  1509. '';
  1510. onShowMessage(
  1511. localization['userbar-bg'],
  1512. html,
  1513. function(){GeneratorUserBar(); onCloseMessage();},
  1514. localization['Ok'],
  1515. true
  1516. );
  1517. }
  1518. /* ===== ClanPage function ===== */
  1519. function getClanMembersList(){
  1520. var table = document.getElementsByClassName("rating-table__players")[0];
  1521. if(table.rows.length <= 1){
  1522. setTimeout(function(){getClanMembersList();}, 1000);
  1523. return;
  1524. }
  1525. for(var i = 1; i < table.rows.length; i++){
  1526. var row = table.rows[i];
  1527. var index = MembersArray.length;
  1528. MembersArray[index] = [];
  1529. var account_id = row.getAttribute('data-account_id');
  1530. MembersArray[index]['account_id'] = account_id;
  1531. var player_name = row.getElementsByClassName("player_name")[0];
  1532. var account_name = player_name.innerHTML.trim();
  1533. MembersArray[index]['account_name'] = account_name;
  1534. var image = row.getElementsByClassName('svg-icon')[1];
  1535. var srcArr = image.getAttribute('src').split("/");
  1536. MembersArray[index]['role'] = srcArr[srcArr.length - 1].split(".")[0];
  1537. MembersArray[index]['role_i18n'] = getRoleText(srcArr[srcArr.length - 1].split(".")[0]);
  1538. MembersArray[index]['role_sort_num'] = getRoleSortNum(srcArr[srcArr.length - 1].split(".")[0]);
  1539. var colNum = (row.cells.length - 2) - 1;
  1540. var clan_days = row.cells[colNum].innerHTML.trim();
  1541. MembersArray[index]['clan_days'] = clan_days;
  1542. }
  1543. if(MembersArray.length > 0){
  1544. viewClanMemberHistory();
  1545. }
  1546. }
  1547. function viewClanMemberHistory(){
  1548. var oldClanMemberSave = getLocalStorage('ClanMemberSave', true);
  1549. var oldClanChangeSave = getLocalStorage('ClanChangeSave', true);
  1550. if(oldClanChangeSave == null){oldClanChangeSave = '';}
  1551. var stringJSON = '';
  1552. for(var i = 0; i < MembersArray.length; i++){
  1553. stringJSON += '"'+MembersArray[i]['account_id']+'":{"account_id":'+MembersArray[i]['account_id']+',"account_name":"'+MembersArray[i]['account_name']+'","role":"'+MembersArray[i]['role']+'"},';
  1554. }
  1555. stringJSON = stringJSON.substring(stringJSON.length - 1, 0);
  1556. var newClanMemberSave = '{"members": {'+stringJSON+'}}';
  1557. var newClanChangeSave = '';
  1558. if(oldClanMemberSave != null){
  1559. var oldClanMemberArr = jQ.parseJSON(oldClanMemberSave);
  1560. var newClanMemberArr = jQ.parseJSON(newClanMemberSave);
  1561. for(id in oldClanMemberArr['members']){
  1562. if(newClanMemberArr['members'][id] === undefined){
  1563. oldClanChangeSave += '1:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':null:null;';
  1564. }else{
  1565. if(newClanMemberArr['members'][id]['role'] != oldClanMemberArr['members'][id]['role']){
  1566. oldClanChangeSave += '3:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':'+oldClanMemberArr['members'][id]['role']+':'+newClanMemberArr['members'][id]['role']+';';
  1567. }
  1568. if(newClanMemberArr['members'][id]['account_name'] != oldClanMemberArr['members'][id]['account_name']){
  1569. oldClanChangeSave += '4:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':'+oldClanMemberArr['members'][id]['account_name']+':'+newClanMemberArr['members'][id]['account_name']+';';
  1570. }
  1571. }
  1572. }
  1573. for(id in newClanMemberArr['members']){
  1574. if(oldClanMemberArr['members'][id] === undefined){
  1575. oldClanChangeSave += '2:'+newClanMemberArr['members'][id]['account_id']+':'+newClanMemberArr['members'][id]['account_name']+':null:null;';
  1576. if(newClanMemberArr['members'][id]['role'] != 'recruit'){
  1577. oldClanChangeSave += '3:'+newClanMemberArr['members'][id]['account_id']+':'+newClanMemberArr['members'][id]['account_name']+':recruit:'+newClanMemberArr['members'][id]['role']+';';
  1578. }
  1579. }
  1580. }
  1581. }
  1582. var html = '<div style="overflow: auto; height: 150px;"><table style="border-collapse: separate; font-size: 13px; border-bottom: 1px solid rgba(255, 255, 255, 0.1);" cellspacing="0" cellpadding="0"><tbody>';
  1583. var clan_member_history = document.getElementsByClassName("clan-member-history")[0];
  1584. if(oldClanChangeSave != ''){
  1585. var arrOldChangeClan = oldClanChangeSave.split(';');
  1586. if(arrOldChangeClan.length > 50){
  1587. var deleteCountLine = arrOldChangeClan.length - 50;
  1588. for(var i = 0; i < deleteCountLine; i++){
  1589. arrOldChangeClan.splice(0, 1);
  1590. }
  1591. for(var i = 0; i < arrOldChangeClan.length; i++){
  1592. if(arrOldChangeClan[i] == ''){continue;}
  1593. newClanChangeSave += arrOldChangeClan[i]+';';
  1594. }
  1595. }else{
  1596. newClanChangeSave = oldClanChangeSave;
  1597. }
  1598. var arrNewChangeClan = newClanChangeSave.split(';');
  1599. for(var i = (arrNewChangeClan.length - 1); i >= 0; i--){
  1600. var arrChange = arrNewChangeClan[i].split(':');
  1601. var type = arrChange[0];
  1602. var mId = arrChange[1];
  1603. var mName = arrChange[2];
  1604. var mOld = arrChange[3];
  1605. var mNew = arrChange[4];
  1606. if(type == '1'){
  1607. var text = localization['member-history-leave'];
  1608. text = text.replace('%NAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');
  1609. html += '<tr>'+
  1610. '<td class="table-default_cell" align="left" style="padding: 0px;">'+
  1611. ' <font color="red">'+text+'</font>'+
  1612. '</td>'+
  1613. '</tr>';
  1614. }else if(type == '2'){
  1615. var text = localization['member-history-join'];
  1616. text = text.replace('%NAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');
  1617. html += '<tr>'+
  1618. '<td class="table-default_cell" align="left" style="padding: 0px;">'+
  1619. ' <font color="green">'+text+'</font>'+
  1620. '</td>'+
  1621. '</tr>';
  1622. }else if(type == '3'){
  1623. var text = localization['member-history-rerole'];
  1624. text = text.replace('%NAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');
  1625. text = text.replace('%OLDROLE%',getRoleText(mOld));
  1626. text = text.replace('%NEWROLE%',getRoleText(mNew));
  1627. html += '<tr>'+
  1628. '<td class="table-default_cell" align="left" style="padding: 0px;">'+
  1629. text+
  1630. '</td>'+
  1631. '</tr>';
  1632. }else if(type == '4'){
  1633. var text = localization['member-history-rename'];
  1634. text = text.replace('%OLDNAME%',mOld);
  1635. text = text.replace('%NEWNAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mNew+'</a>');
  1636. html += '<tr>'+
  1637. '<td class="table-default_cell" align="left" style="padding: 0px;">'+
  1638. text+
  1639. '</td>'+
  1640. '</tr>';
  1641. }
  1642. }
  1643. }else{
  1644. html += '' +
  1645. '<tr>' +
  1646. '<td class="table-default_cell" style="padding: 0px;">' +
  1647. localization['member-history-notchange'] +
  1648. '</td>' +
  1649. '</tr>' +
  1650. '';
  1651. }
  1652. html += '</tbody></table></div>';
  1653. html += '' +
  1654. '<div align="right" style="border-top: 1px solid rgba(255, 255, 255, 0.1);">' +
  1655. '<br />' +
  1656. '<button id="run-history-clear" class="button" style="display: block;">' +
  1657. '<span class="button_wrapper">' +
  1658. '<span style="padding: 5px;" class="button_body">' +
  1659. '<span class="button_inner">'+localization['member-history-clear']+'</span>' +
  1660. '</span>' +
  1661. '</span>' +
  1662. '</button>' +
  1663. '</div>' +
  1664. '';
  1665. clan_member_history.innerHTML = html;
  1666. jQ('#run-history-clear').click(function(){
  1667. setLocalStorage('ClanChangeSave', '', true);
  1668. viewClanMemberHistory();
  1669. });
  1670. setLocalStorage('ClanMemberSave', newClanMemberSave, true);
  1671. setLocalStorage('ClanChangeSave', newClanChangeSave, true);
  1672. }
  1673. /* ===== UserScript function ===== */
  1674. function calcWR(Stat){
  1675. var rDamage = Stat['damage'] / Stat['expDamage']; if(isNaN(rDamage)){rDamage = 0;}
  1676. var rFragsShips = Stat['frags_ships'] / Stat['expFragsShips']; if(isNaN(rFragsShips)){rFragsShips = 0;}
  1677. var rFragsPlanes = Stat['frags_planes'] / Stat['expFragsPlanes']; if(isNaN(rFragsPlanes)){rFragsPlanes = 0;}
  1678. var rCapture = Stat['capture_base'] / Stat['expCapture']; if(isNaN(rCapture)){rCapture = 0;}
  1679. var rDefend = Stat['defend_base'] / Stat['expDefend']; if(isNaN(rDefend)){rDefend = 0;}
  1680. var rDamagec = Math.max(0, (rDamage - 0.25) / (1 - 0.25));
  1681. var rFragsShipsc = Math.max(0, Math.min(rDamagec + 0.2, (rFragsShips - 0.12) / (1 - 0.12)));
  1682. var rFragsPlanesc = Math.max(0, Math.min(rDamagec + 0.1, (rFragsPlanes - 0.15) / (1 - 0.15)));
  1683. var rCapturec = Math.max(0, Math.min(rDamagec + 0.1, (rCapture - 0.10) / (1 - 0.10)));
  1684. var rDefendc = Math.max(0, Math.min(rDamagec + 0.1, (rDefend - 0.10) / (1 - 0.10)));
  1685. var wr = 650 * rDamagec + 150 * rFragsShipsc * rDamagec + 50 * rFragsShipsc * rCapturec + 50 * rFragsShipsc * rDefendc + 80 * rFragsPlanesc;
  1686. if(isNaN(wr)){wr = 0;}
  1687. return wr;
  1688. }
  1689. function findColorASC(value, stat_type){
  1690. if(isNaN(value) || parseFloat(value) <= parseFloat(colorStat[stat_type][0])){
  1691. return color['very_bad'];
  1692. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][1])){
  1693. return color['bad'];
  1694. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][2])){
  1695. return color['normal'];
  1696. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][3])){
  1697. return color['good'];
  1698. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][4])){
  1699. return color['very_good'];
  1700. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][5])){
  1701. return color['unique'];
  1702. }else{
  1703. return color['very_bad'];
  1704. }
  1705. }
  1706. function findColorDESC(value, stat_type){
  1707. var return_color = color['very_bad'];
  1708. if(isNaN(value)){
  1709. return_color = color['very_bad'];
  1710. }
  1711. if(parseFloat(value) <= parseFloat(colorStat[stat_type][0])){
  1712. return_color = color['very_bad'];
  1713. }
  1714. if(parseFloat(value) <= parseFloat(colorStat[stat_type][1])){
  1715. return_color = color['bad'];
  1716. }
  1717. if(parseFloat(value) <= parseFloat(colorStat[stat_type][2])){
  1718. return_color = color['normal'];
  1719. }
  1720. if(parseFloat(value) <= parseFloat(colorStat[stat_type][3])){
  1721. return_color = color['good'];
  1722. }
  1723. if(parseFloat(value) <= parseFloat(colorStat[stat_type][4])){
  1724. return_color = color['very_good'];
  1725. }
  1726. if(parseFloat(value) <= parseFloat(colorStat[stat_type][5])){
  1727. return_color = color['unique'];
  1728. }
  1729. return return_color;
  1730. }
  1731. function valueFormat(value){
  1732. var newValue = '';
  1733. var valueSplit = value.split('.');
  1734. var numChar = 0;
  1735. for(var i = valueSplit[0].length; i > 0; i--){
  1736. if(numChar < 3){
  1737. newValue = valueSplit[0].substr(i - 1, 1)+''+newValue;
  1738. numChar++;
  1739. }else{
  1740. newValue = valueSplit[0].substr(i - 1, 1)+''+localization['num-separator']+''+newValue;
  1741. numChar = 1;
  1742. }
  1743. }
  1744. if(valueSplit.length > 1){newValue += localization['num-fractional']+''+valueSplit[1];}
  1745. return newValue;
  1746. }
  1747. function htmlParseMemberStatistic(element){
  1748. var value = element.textContent.trim().replace(new RegExp(' ', 'g'), '');
  1749. value = value.replace(/[^0-9,.()% ]/g, "");
  1750. value = value.replace('%', '');
  1751. value = value.split(localization['num-separator']).join('');
  1752. value = value.replace(localization['num-fractional'], '.');
  1753. if(value.indexOf('(') > -1 && value.indexOf(')') > -1){
  1754. value = (value.split('('))[0];
  1755. }
  1756. return value;
  1757. }
  1758. function getJson(url, onDone, onError){
  1759. if(MaxProcess > Process){
  1760. Process++;
  1761. jQ.getJSON(url).done(function(result){
  1762. Process--;
  1763. onDone(url, result);
  1764. }).fail(function(jqxhr, textStatus, error){
  1765. Process--;
  1766. onError(url);
  1767. });
  1768. }else{
  1769. setTimeout(function(){getJson(url, onDone, onError);}, 1000);
  1770. }
  1771. }
  1772. function getApplicationId(realm){
  1773. var applicationId = [];
  1774. applicationId['ru'] = '7149a13b5f5fb7109c5b2400d31b7d42'; // .ru
  1775. applicationId['eu'] = '953df86f6bca01a7af80c3bdedd9c1d9'; // .eu
  1776. return applicationId[realm].split("").reverse().join("");
  1777. }
  1778. function getUrlVars(url){
  1779. var vars = {};
  1780. var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value){
  1781. vars[key] = value;
  1782. });
  1783. return vars;
  1784. }
  1785. function dateDiffInDays(a, b){
  1786. var date1 = new Date(a);
  1787. var date2 = new Date(b);
  1788. if(b == null){
  1789. date2 = new Date();
  1790. }
  1791. var timeDiff = date2.getTime() - date1.getTime();
  1792. var diffDays = timeDiff / (1000 * 3600 * 24);
  1793. if(diffDays < 0){diffDays = 0;}
  1794. return (diffDays).toFixed(0);
  1795. }
  1796. function getUserScriptDeveloperBlock(){
  1797. var html = '' +
  1798. '<div class="div-link-block">' +
  1799. '<span id="userscriptwowsstatinfo" class="link-block hide-block">' +
  1800. 'UserScript WoWsStatInfo ' + VersionWoWsStatInfo +
  1801. '<div class="icon-link-block"></div>'+
  1802. '</span>' +
  1803. '</div>' +
  1804. '<div id="userscript-block" class="userscriptwowsstatinfo hide-block" style="text-align: center;">' +
  1805. '<span class="userscript-developer" align="center">' +
  1806. localization['userscript-developer'] +
  1807. ' <a target="_blank" style="color: #658C4C; font-weight: bold; border-bottom: 1px dotted #658C4C;" href="http://worldofwarships.ru/cbt/accounts/635939-Vov_chiK/">Vov_chiK</a> ' +
  1808. localization['userscript-alliance'] +
  1809. ' <a target="_blank" style="color: #2CA8C7; font-weight: bold; border-bottom: 1px dotted #2CA8C7;" href="http://ru.wargaming.net/clans/search/#wgsearch&offset=0&limit=10&search=Walkure">Walkure</a>.' +
  1810. '<br /><br />' +
  1811. localization['userscript-topic']+' '+
  1812. '<a target="_blank" href="'+WoWsStatInfoLink+'">' +
  1813. WoWsStatInfoLinkName +
  1814. '</a>' +
  1815. '<br /><br />' +
  1816. '<font style="font-size: 16px; color: #658C4C;">'+localization['userscript-developer-support']+'</font><br />'+
  1817. '<font style="color: #2CA8C7;">Web-Money WMR</font> R295712009837 <br />'+
  1818. '<font style="color: #2CA8C7;">Web-Money WMZ</font> Z226959724402 <br />'+
  1819. '<font style="color: #2CA8C7;">Yandex Money</font> 41001290117791 <br />'+
  1820. '<font style="color: #2CA8C7;">RBK Money</font> RU353257918 <br />'+
  1821. '</span>' +
  1822. '</div>' +
  1823. '';
  1824. return html;
  1825. }
  1826. function onViewBlock(element){
  1827. if(null != element.getAttribute('id')){
  1828. var viewId = element.getAttribute('id');
  1829. var viewClassLink = element.getAttribute('class');
  1830. var viewBlock = document.getElementsByClassName(viewId)[0];
  1831. if(viewClassLink == 'link-block hide-block'){
  1832. element.setAttribute('class', 'link-block show-block');
  1833. viewBlock.setAttribute('class', viewBlock.getAttribute('class').replace('hide-block', 'show-block'));
  1834. setLocalStorage(viewId, 'show', false);
  1835. }else{
  1836. element.setAttribute('class', 'link-block hide-block');
  1837. viewBlock.setAttribute('class', viewBlock.getAttribute('class').replace('show-block', 'hide-block'));
  1838. setLocalStorage(viewId, 'hide', false);
  1839. }
  1840. }
  1841. }
  1842. function checkLocalStorage(){
  1843. try{
  1844. return 'localStorage' in window && window['localStorage'] !== null;
  1845. }catch (e){
  1846. return false;
  1847. }
  1848. }
  1849. function setLocalStorage(key, value, allPageHost){
  1850. if(checkLocalStorage()){
  1851. if(allPageHost){key = key+ClanId;}
  1852. window.localStorage.setItem(key, value);
  1853. }else{
  1854. setCookie(key, value, allPageHost);
  1855. }
  1856. }
  1857. function getLocalStorage(key, allPageHost){
  1858. var value = null;
  1859. if(checkLocalStorage()){
  1860. if(allPageHost){key = key+ClanId;}
  1861. value = window.localStorage.getItem(key);
  1862. }else{
  1863. value = getCookie(key);
  1864. }
  1865. return value;
  1866. }
  1867. function setCookie(c_name, value, allPageHost){
  1868. var exdate = new Date();
  1869. exdate.setDate(exdate.getDate() + 365);
  1870. if(allPageHost){
  1871. var c_value = escape(value) + ((365 == null) ? "" : "; expires="+exdate.toUTCString()+"; domain=" +window.location.hostname+"; path=/");
  1872. document.cookie = c_name + "=" + c_value;
  1873. }else{
  1874. var c_value = escape(value) + ((365 == null) ? "" : "; expires="+exdate.toUTCString());
  1875. document.cookie = c_name + "=" + c_value;
  1876. }
  1877. }
  1878. function getCookie(c_name){
  1879. var c_value = document.cookie;
  1880. var c_start = c_value.indexOf(" " + c_name + "=");
  1881. if(c_start == -1){
  1882. c_start = c_value.indexOf(c_name + "=");
  1883. }
  1884. if(c_start == -1){
  1885. c_value = null;
  1886. }else{
  1887. c_start = c_value.indexOf("=", c_start) + 1;
  1888. var c_end = c_value.indexOf(";", c_start);
  1889. if(c_end == -1){
  1890. c_end = c_value.length;
  1891. }
  1892. c_value = unescape(c_value.substring(c_start,c_end));
  1893. }
  1894. return c_value;
  1895. }
  1896. function onShowMessage(title, content, funcOk, OkText, viewCancel){
  1897. var ui_dialog_title = message.getElementsByClassName("ui-dialog-title")[0];
  1898. ui_dialog_title.innerHTML = title;
  1899. var popup = message.getElementsByClassName("popup")[0];
  1900. popup.innerHTML = content;
  1901. var button_inner = message.getElementsByClassName("button_inner")[0];
  1902. button_inner.innerHTML = OkText;
  1903. var link__cancel = message.getElementsByClassName("link__cancel")[0];
  1904. if(viewCancel){
  1905. link__cancel.style.display = 'inline';
  1906. }else{
  1907. link__cancel.style.display = 'none';
  1908. }
  1909. message.style.display = 'block';
  1910. messagebg.style.display = 'block';
  1911. message.style.marginLeft = '-'+(message.offsetWidth / 2)+'px';
  1912. //message.style.top = (window.scrollY + ((document.body.offsetHeight / 2) - (message.offsetHeight / 2)))+'px';
  1913. message.style.top = (window.scrollY + 50)+'px';
  1914. jQ('#userscript-message-ok').unbind('click');
  1915. jQ('#userscript-message-ok').click(funcOk);
  1916. jQ('#userscript-message-close').unbind('click');
  1917. jQ('#userscript-message-close').click(function(){onCloseMessage();});
  1918. jQ('#userscript-message-cancel').unbind('click');
  1919. jQ('#userscript-message-cancel').click(function(){onCloseMessage();});
  1920. }
  1921. function onCloseMessage(){
  1922. message.style.display = 'none';
  1923. messagebg.style.display = 'none';
  1924. }
  1925. function getLevelNumer(text){
  1926. if('I' == text){
  1927. return 1;
  1928. }else if('II' == text){
  1929. return 2;
  1930. }else if('III' == text){
  1931. return 3;
  1932. }else if('IV' == text){
  1933. return 4;
  1934. }else if('V' == text){
  1935. return 5;
  1936. }else if('VI' == text){
  1937. return 6;
  1938. }else if('VII' == text){
  1939. return 7;
  1940. }else if('VIII' == text){
  1941. return 8;
  1942. }else if('IX' == text){
  1943. return 9;
  1944. }else if('X' == text){
  1945. return 10;
  1946. }
  1947. return 0;
  1948. }
  1949. // Modify JSON.stringify to allow recursive and single-level arrays
  1950. (function(){
  1951. // Convert array to object
  1952. var convArrToObj = function(array){
  1953. var thisEleObj = new Object();
  1954. if(typeof array == "object"){
  1955. for(var i in array){
  1956. var thisEle = convArrToObj(array[i]);
  1957. thisEleObj[i] = thisEle;
  1958. }
  1959. }else {
  1960. thisEleObj = array;
  1961. }
  1962. return thisEleObj;
  1963. };
  1964. var oldJSONStringify = JSON.stringify;
  1965. JSON.stringify = function(input){
  1966. return oldJSONStringify(convArrToObj(input));
  1967. };
  1968. })();
  1969. function getRoleText(role){
  1970. var roleText = role;
  1971. if(localization[role] !== undefined){roleText = localization[role];}
  1972. return roleText;
  1973. }
  1974. function getRoleSortNum(role){
  1975. if (role == 'commander') return 0;
  1976. else if (role == 'executive_officer') return 1;
  1977. else if (role == 'personnel_officer') return 2;
  1978. else if (role == 'combat_officer') return 3;
  1979. else if (role == 'intelligence_officer') return 4;
  1980. else if (role == 'quartermaster') return 5;
  1981. else if (role == 'recruitment_officer') return 6;
  1982. else if (role == 'junior_officer') return 7;
  1983. else if (role == 'private') return 8;
  1984. else if (role == 'recruit') return 9;
  1985. else if (role == 'reservist') return 10;
  1986. else return 11;
  1987. }
  1988. function getLocalization(lang){
  1989. var localization = [];
  1990. {/* Русский */
  1991. localization['ru'] = [];
  1992. localization['ru']['realm'] = 'ru';
  1993. localization['ru']['num-separator'] = ' ';
  1994. localization['ru']['num-fractional'] = ',';
  1995. localization['ru']['Box'] = 'Оповещение';
  1996. localization['ru']['Ok'] = 'Ok';
  1997. localization['ru']['Cancel'] = 'Отмена';
  1998. localization['ru']['NewVersion'] = 'Вышла новая версия скрипта';
  1999. localization['ru']['NewUpdate'] = 'Пожалуйста, обновите скрипт';
  2000. localization['ru']['ErrorScript'] = 'Во время работы UserScript WoWsStatInfo '+VersionWoWsStatInfo+', возникла ошибка:';
  2001. localization['ru']['ErrorSendDeveloper'] = 'Сообщите об ошибке разработчику скрипта.';
  2002. localization['ru']['userscript-developer'] = 'Разработчик UserScript WoWsStatInfo:';
  2003. localization['ru']['userscript-alliance'] = 'член альянса';
  2004. localization['ru']['userscript-topic'] = 'Тема на форуме:';
  2005. localization['ru']['userscript-developer-support'] = 'Поддержать автора скрипта:';
  2006. localization['ru']['coloring-scheme'] = 'Цветовая схема';
  2007. localization['ru']['players'] = 'игроков';
  2008. localization['ru']['profile-wows'] = 'Профиль в World of Warships';
  2009. localization['ru']['profile-clan'] = 'Клан';
  2010. localization['ru']['forum-profile'] = 'Профиль на форуме';
  2011. localization['ru']['role'] = 'Должность';
  2012. localization['ru']['clan-day'] = 'Количество дней в клане';
  2013. localization['ru']['generator-userbar'] = 'Создать UserBar';
  2014. localization['ru']['userbar-bg'] = 'Выберите фон:';
  2015. localization['ru']['additional-results'] = 'Дополнительные результаты';
  2016. localization['ru']['number-ships-x'] = 'Количество кораблей 10 уровня';
  2017. localization['ru']['wr'] = 'WR';
  2018. localization['ru']['block-link-clan-member-history'] = 'Блок "Изменений в составе клана"';
  2019. localization['ru']['link-clan-member-history'] = 'Изменения в составе клана';
  2020. localization['ru']['member-history-clear'] = 'Очистить историю';
  2021. localization['ru']['member-history-join'] = 'Вступил в клан %NAME%';
  2022. localization['ru']['member-history-leave'] = 'Покинул клан %NAME%';
  2023. localization['ru']['member-history-rename'] = '%OLDNAME% сменил ник на %NEWNAME%';
  2024. localization['ru']['member-history-rerole'] = '%NAME% сменил должность %OLDROLE% &rArr; %NEWROLE%';
  2025. localization['ru']['member-history-notchange'] = 'С момента установки скрипта WoWsStatInfo и последнего захода на страницу, изменений в составе клана не производились.';
  2026. localization['ru']['banned'] = 'Забанен';
  2027. localization['ru']['commander'] = 'Командующий';
  2028. localization['ru']['executive_officer'] = 'Заместитель командующего';
  2029. localization['ru']['personnel_officer'] = 'Офицер штаба';
  2030. localization['ru']['intelligence_officer'] = 'Офицер разведки';
  2031. localization['ru']['quartermaster'] = 'Офицер снабжения';
  2032. localization['ru']['recruitment_officer'] = 'Офицер по кадрам';
  2033. localization['ru']['junior_officer'] = 'Младший офицер';
  2034. localization['ru']['combat_officer'] = 'Командир подразделения';
  2035. localization['ru']['private'] = 'Боец';
  2036. localization['ru']['recruit'] = 'Новобранец';
  2037. localization['ru']['reservist'] = 'Резервист';
  2038. }
  2039. {/* English */
  2040. localization['en'] = [];
  2041. localization['en']['realm'] = 'eu';
  2042. localization['en']['num-separator'] = ',';
  2043. localization['en']['num-fractional'] = '.';
  2044.  
  2045. localization['en']['Box'] = 'Notification';
  2046. localization['en']['Ok'] = 'Ok';
  2047. localization['en']['Cancel'] = 'Cancel';
  2048. localization['en']['NewVersion'] = 'New version was released';
  2049. localization['en']['NewUpdate'] = 'Please, update the extension';
  2050. localization['en']['ErrorScript'] = 'An error occurred while running UserScript WoWsStatInfo '+VersionWoWsStatInfo+', script:';
  2051. localization['en']['ErrorSendDeveloper'] = 'Please, inform script developer about this error.';
  2052. localization['en']['userscript-developer'] = 'Developer - UserScript WoWsStatInfo:';
  2053. localization['en']['userscript-alliance'] = 'аlliance member';
  2054. localization['en']['userscript-topic'] = 'Forum topic:';
  2055. localization['en']['userscript-developer-support'] = 'Ways to support the developer:';
  2056. localization['en']['coloring-scheme'] = 'Coloring scheme';
  2057. localization['en']['players'] = 'players';
  2058. localization['en']['profile-wows'] = 'World of Warships profile';
  2059. localization['en']['profile-clan'] = 'Clan';
  2060. localization['en']['forum-profile'] = 'Forum profile';
  2061. localization['en']['role'] = 'Alliance rank';
  2062. localization['en']['clan-day'] = 'Days in clan';
  2063. localization['en']['generator-userbar'] = 'Create UserBar';
  2064. localization['en']['userbar-bg'] = 'Choose a background:';
  2065. localization['en']['additional-results'] = 'Additional Results';
  2066. localization['en']['number-ships-x'] = 'Number of X Tier ships';
  2067. localization['en']['wr'] = 'WR';
  2068. localization['en']['block-link-clan-member-history'] = '"Changes in clan members" section';
  2069. localization['en']['link-clan-member-history'] = 'Changes in clan members';
  2070. localization['en']['member-history-clear'] = 'Clear history';
  2071. localization['en']['member-history-join'] = 'Entered %NAME% clan';
  2072. localization['en']['member-history-leave'] = 'Left %NAME% clan';
  2073. localization['en']['member-history-rename'] = '%OLDNAME% has changed his nickname to %NEWNAME%';
  2074. localization['en']['member-history-rerole'] = '%NAME% has changed his position in clan rank: %OLDROLE% &rArr; %NEWROLE%';
  2075. localization['en']['member-history-notchange'] = 'Since installing WoWsStatInfo script and last entering on this page no changes in clan members were made.';
  2076. localization['en']['banned'] = 'Banned';
  2077. localization['en']['commander'] = 'Commander';
  2078. localization['en']['executive_officer'] = 'Executive Officer';
  2079. localization['en']['personnel_officer'] = 'Personnel Officer';
  2080. localization['en']['intelligence_officer'] = 'Intelligence Officer';
  2081. localization['en']['quartermaster'] = 'Quartermaster';
  2082. localization['en']['recruitment_officer'] = 'Recruitment Officer';
  2083. localization['en']['junior_officer'] = 'Junior Officer';
  2084. localization['en']['combat_officer'] = 'Combat Officer';
  2085. localization['en']['private'] = 'Private';
  2086. localization['en']['recruit'] = 'Recruit';
  2087. localization['en']['reservist'] = 'Reservist';
  2088. }
  2089. {/* Français */
  2090. localization['fr'] = [];
  2091. localization['fr'] = jQ.extend([], localization['en']);
  2092. localization['fr']['num-separator'] = ' ';
  2093. localization['fr']['num-fractional'] = ',';
  2094. }
  2095. {/* Deutsch */
  2096. localization['de'] = [];
  2097. localization['de'] = jQ.extend([], localization['en']);
  2098. localization['de']['num-separator'] = '.';
  2099. localization['de']['num-fractional'] = ',';
  2100. }
  2101. {/* Türkçe */
  2102. localization['tr'] = [];
  2103. localization['tr'] = jQ.extend([], localization['en']);
  2104. localization['tr']['num-separator'] = '.';
  2105. localization['tr']['num-fractional'] = ',';
  2106. }
  2107. {/* Español */
  2108. localization['es'] = [];
  2109. localization['es'] = jQ.extend([], localization['en']);
  2110. localization['es']['num-separator'] = '.';
  2111. localization['es']['num-fractional'] = ',';
  2112. }
  2113. {/* Čeština */
  2114. localization['cs'] = [];
  2115. localization['cs'] = jQ.extend([], localization['en']);
  2116. localization['cs']['num-separator'] = ' ';
  2117. localization['cs']['num-fractional'] = ',';
  2118. }
  2119. {/* Polski */
  2120. localization['pl'] = [];
  2121. localization['pl'] = jQ.extend([], localization['en']);
  2122. localization['pl']['num-separator'] = ' ';
  2123. localization['pl']['num-fractional'] = ',';
  2124. }
  2125. return localization[lang];
  2126. }
  2127. }
  2128. /* ===== Load UserScript ===== */
  2129. function addJQuery(callback){
  2130. var script = document.createElement("script");
  2131. script.async = true;
  2132. script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js");
  2133. script.addEventListener(
  2134. 'load',
  2135. function(){
  2136. var script = document.createElement("script");
  2137. script.async = true;
  2138. script.textContent = "window.jQ = jQuery.noConflict(true);"+
  2139. "("+callback.toString()+")();";
  2140. document.head.appendChild(script);
  2141. },
  2142. false
  2143. );
  2144. document.head.appendChild(script);
  2145. }
  2146. if(window.location.host.indexOf("worldofwarships") > -1 || window.location.host.indexOf(".wargaming.net") > -1){
  2147. addJQuery(WoWsStatInfo);
  2148. }
  2149. })(window);