WoWsStatInfo

Расширенная статистика и функционал на сайте World of Warships.

当前为 2015-09-02 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name WoWsStatInfo
  3. // @author Vov_chiK
  4. // @description Расширенная статистика и функционал на сайте World of Warships.
  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.12
  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.12';
  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://vzhabin.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('{"PJSB006":{"avg_damage":43923.16,"avg_defend_base":5.89,"avg_frags_ships":0.98,"avg_capture_base":1.22,"avg_frags_planes":1.04},"PASD027":{"avg_damage":12228.02,"avg_defend_base":4.25,"avg_frags_ships":0.55,"avg_capture_base":0.55,"avg_frags_planes":0.02},"PRSC003":{"avg_damage":29437.04,"avg_defend_base":9.48,"avg_frags_ships":0.86,"avg_capture_base":0.84,"avg_frags_planes":1.14},"PJSC026":{"avg_damage":26072.59,"avg_defend_base":7.87,"avg_frags_ships":0.95,"avg_capture_base":1.07,"avg_frags_planes":0.72},"PJSB008":{"avg_damage":25986.89,"avg_defend_base":6.18,"avg_frags_ships":0.76,"avg_capture_base":1.16,"avg_frags_planes":0.16},"PRSC002":{"avg_damage":22766.96,"avg_defend_base":17.48,"avg_frags_ships":1.2,"avg_capture_base":1.64,"avg_frags_planes":0.01},"PJSB007":{"avg_damage":32093.11,"avg_defend_base":5.93,"avg_frags_ships":0.78,"avg_capture_base":0.9,"avg_frags_planes":0.81},"PJSB001":{"avg_damage":21638.59,"avg_defend_base":8.12,"avg_frags_ships":0.86,"avg_capture_base":1.32,"avg_frags_planes":0.04},"PASD029":{"avg_damage":14976.04,"avg_defend_base":4.71,"avg_frags_ships":0.48,"avg_capture_base":1.06,"avg_frags_planes":0.24},"PJSB003":{"avg_damage":22023.82,"avg_defend_base":5.3,"avg_frags_ships":0.57,"avg_capture_base":0.91,"avg_frags_planes":0.35},"PJSA009":{"avg_damage":66811.77,"avg_defend_base":7.87,"avg_frags_ships":1.47,"avg_capture_base":0.32,"avg_frags_planes":4.95},"PJSD012":{"avg_damage":44157.01,"avg_defend_base":0.56,"avg_frags_ships":0.76,"avg_capture_base":0.01,"avg_frags_planes":2.13},"PJSD010":{"avg_damage":32693.33,"avg_defend_base":3.55,"avg_frags_ships":0.61,"avg_capture_base":1.53,"avg_frags_planes":0.39},"PASB001":{"avg_damage":21074.21,"avg_defend_base":8.94,"avg_frags_ships":0.76,"avg_capture_base":1.09,"avg_frags_planes":0.02},"PJSA002":{"avg_damage":41708.31,"avg_defend_base":2.85,"avg_frags_ships":0.97,"avg_capture_base":0.35,"avg_frags_planes":5.71},"PASB006":{"avg_damage":32662.81,"avg_defend_base":6.84,"avg_frags_ships":0.83,"avg_capture_base":1.14,"avg_frags_planes":0.59},"PASB004":{"avg_damage":30519.52,"avg_defend_base":8.01,"avg_frags_ships":0.86,"avg_capture_base":1.19,"avg_frags_planes":0.38},"PJSA006":{"avg_damage":56990.97,"avg_defend_base":5.37,"avg_frags_ships":1.35,"avg_capture_base":0.44,"avg_frags_planes":6.65},"PASB008":{"avg_damage":40591.65,"avg_defend_base":5.36,"avg_frags_ships":0.73,"avg_capture_base":1.04,"avg_frags_planes":2.79},"PASD021":{"avg_damage":32974.24,"avg_defend_base":21.69,"avg_frags_ships":0.95,"avg_capture_base":2.4,"avg_frags_planes":1.04},"PRSC010":{"avg_damage":21892.39,"avg_defend_base":20.46,"avg_frags_ships":1.12,"avg_capture_base":1.65,"avg_frags_planes":0.01},"PJSD014":{"avg_damage":16998.68,"avg_defend_base":10.09,"avg_frags_ships":0.97,"avg_capture_base":0.14,"avg_frags_planes":0.01},"PASC024":{"avg_damage":19622.04,"avg_defend_base":7.5,"avg_frags_ships":0.61,"avg_capture_base":0.71,"avg_frags_planes":0.11},"PJSC015":{"avg_damage":20441.6,"avg_defend_base":8.15,"avg_frags_ships":0.82,"avg_capture_base":0.74,"avg_frags_planes":0.03},"PJSB018":{"avg_damage":99505.75,"avg_defend_base":15.59,"avg_frags_ships":1.38,"avg_capture_base":0.8,"avg_frags_planes":17.85},"PASD014":{"avg_damage":25694.38,"avg_defend_base":5.64,"avg_frags_ships":0.98,"avg_capture_base":1.0,"avg_frags_planes":0.3},"PJSC013":{"avg_damage":26874.99,"avg_defend_base":8.15,"avg_frags_ships":0.87,"avg_capture_base":0.79,"avg_frags_planes":0.25},"PJSB013":{"avg_damage":55693.21,"avg_defend_base":5.55,"avg_frags_ships":0.96,"avg_capture_base":1.54,"avg_frags_planes":4.41},"PASD019":{"avg_damage":21104.82,"avg_defend_base":4.55,"avg_frags_ships":0.87,"avg_capture_base":0.95,"avg_frags_planes":0.02},"PBSB002":{"avg_damage":33656.3,"avg_defend_base":5.6,"avg_frags_ships":0.77,"avg_capture_base":0.79,"avg_frags_planes":2.0},"PJSB011":{"avg_damage":13218.69,"avg_defend_base":6.65,"avg_frags_ships":0.8,"avg_capture_base":1.51,"avg_frags_planes":0.01},"PJSB010":{"avg_damage":45813.95,"avg_defend_base":4.92,"avg_frags_ships":0.86,"avg_capture_base":0.99,"avg_frags_planes":1.94},"PJSC012":{"avg_damage":44723.17,"avg_defend_base":9.76,"avg_frags_ships":1.0,"avg_capture_base":1.21,"avg_frags_planes":4.78},"PJSD002":{"avg_damage":13531.36,"avg_defend_base":4.17,"avg_frags_ships":0.77,"avg_capture_base":0.8,"avg_frags_planes":0.01},"PJSD001":{"avg_damage":19422.91,"avg_defend_base":4.97,"avg_frags_ships":1.15,"avg_capture_base":0.83,"avg_frags_planes":0.01},"PRSD001":{"avg_damage":22223.64,"avg_defend_base":5.63,"avg_frags_ships":0.78,"avg_capture_base":1.12,"avg_frags_planes":0.3},"PJSB021":{"avg_damage":58700.3,"avg_defend_base":10.12,"avg_frags_ships":1.0,"avg_capture_base":1.0,"avg_frags_planes":8.56},"PASB034":{"avg_damage":42953.45,"avg_defend_base":6.51,"avg_frags_ships":1.0,"avg_capture_base":1.34,"avg_frags_planes":1.13},"PJSD007":{"avg_damage":31782.9,"avg_defend_base":4.74,"avg_frags_ships":0.78,"avg_capture_base":2.47,"avg_frags_planes":0.47},"PJSD004":{"avg_damage":34816.77,"avg_defend_base":3.25,"avg_frags_ships":1.21,"avg_capture_base":1.51,"avg_frags_planes":0.12},"PJSD003":{"avg_damage":24368.48,"avg_defend_base":3.06,"avg_frags_ships":0.93,"avg_capture_base":1.14,"avg_frags_planes":0.08},"PJSD006":{"avg_damage":28067.87,"avg_defend_base":5.0,"avg_frags_ships":0.75,"avg_capture_base":2.55,"avg_frags_planes":0.66},"PRSC001":{"avg_damage":21117.35,"avg_defend_base":11.28,"avg_frags_ships":0.77,"avg_capture_base":0.99,"avg_frags_planes":0.01},"PJSD005":{"avg_damage":25293.51,"avg_defend_base":2.81,"avg_frags_ships":0.78,"avg_capture_base":2.13,"avg_frags_planes":0.45},"PJSC007":{"avg_damage":36365.12,"avg_defend_base":9.42,"avg_frags_ships":1.02,"avg_capture_base":1.39,"avg_frags_planes":2.24},"PASC045":{"avg_damage":42287.76,"avg_defend_base":11.36,"avg_frags_ships":1.4,"avg_capture_base":0.86,"avg_frags_planes":0.27},"PJSC008":{"avg_damage":48965.79,"avg_defend_base":10.16,"avg_frags_ships":1.19,"avg_capture_base":1.46,"avg_frags_planes":2.96},"PJSC009":{"avg_damage":55984.74,"avg_defend_base":10.94,"avg_frags_ships":1.2,"avg_capture_base":1.68,"avg_frags_planes":3.43},"PJSC004":{"avg_damage":17860.88,"avg_defend_base":6.75,"avg_frags_ships":0.59,"avg_capture_base":0.62,"avg_frags_planes":1.19},"PJSC005":{"avg_damage":22070.59,"avg_defend_base":6.63,"avg_frags_ships":0.66,"avg_capture_base":0.89,"avg_frags_planes":0.36},"PASA012":{"avg_damage":64411.49,"avg_defend_base":7.58,"avg_frags_ships":1.19,"avg_capture_base":0.65,"avg_frags_planes":31.19},"PASA013":{"avg_damage":99741.88,"avg_defend_base":18.24,"avg_frags_ships":1.74,"avg_capture_base":0.94,"avg_frags_planes":20.64},"PASA010":{"avg_damage":60955.12,"avg_defend_base":6.99,"avg_frags_ships":1.11,"avg_capture_base":0.26,"avg_frags_planes":17.0},"PASA015":{"avg_damage":102950.27,"avg_defend_base":10.45,"avg_frags_ships":2.09,"avg_capture_base":0.56,"avg_frags_planes":12.28},"PASC004":{"avg_damage":23047.14,"avg_defend_base":12.41,"avg_frags_ships":0.88,"avg_capture_base":1.1,"avg_frags_planes":0.01},"PASD006":{"avg_damage":25588.17,"avg_defend_base":6.98,"avg_frags_ships":0.87,"avg_capture_base":2.56,"avg_frags_planes":0.54},"PASC001":{"avg_damage":11167.23,"avg_defend_base":10.37,"avg_frags_ships":0.76,"avg_capture_base":0.86,"avg_frags_planes":0.01},"PASC002":{"avg_damage":11346.76,"avg_defend_base":9.95,"avg_frags_ships":0.49,"avg_capture_base":0.77,"avg_frags_planes":0.01},"PASD008":{"avg_damage":32676.22,"avg_defend_base":8.71,"avg_frags_ships":0.86,"avg_capture_base":6.98,"avg_frags_planes":0.41},"PASC007":{"avg_damage":38945.31,"avg_defend_base":11.48,"avg_frags_ships":1.14,"avg_capture_base":1.51,"avg_frags_planes":3.45},"PASD002":{"avg_damage":10838.8,"avg_defend_base":5.06,"avg_frags_ships":0.62,"avg_capture_base":0.56,"avg_frags_planes":0.01},"PASC005":{"avg_damage":34437.51,"avg_defend_base":10.55,"avg_frags_ships":1.1,"avg_capture_base":1.14,"avg_frags_planes":1.15},"PASD005":{"avg_damage":25335.87,"avg_defend_base":6.47,"avg_frags_ships":0.96,"avg_capture_base":2.1,"avg_frags_planes":0.55},"PASC006":{"avg_damage":26167.19,"avg_defend_base":8.25,"avg_frags_ships":0.74,"avg_capture_base":1.19,"avg_frags_planes":2.85},"PASC044":{"avg_damage":36400.16,"avg_defend_base":14.27,"avg_frags_ships":0.96,"avg_capture_base":0.26,"avg_frags_planes":0.23},"PJSC034":{"avg_damage":67523.06,"avg_defend_base":18.71,"avg_frags_ships":1.51,"avg_capture_base":3.32,"avg_frags_planes":5.56},"PASA002":{"avg_damage":32836.55,"avg_defend_base":3.61,"avg_frags_ships":0.64,"avg_capture_base":0.17,"avg_frags_planes":12.54},"PJSC038":{"avg_damage":29758.86,"avg_defend_base":7.19,"avg_frags_ships":0.59,"avg_capture_base":0.9,"avg_frags_planes":1.83},"PJSC037":{"avg_damage":13645.73,"avg_defend_base":12.39,"avg_frags_ships":1.06,"avg_capture_base":1.24,"avg_frags_planes":0.01},"PASA004":{"avg_damage":23937.22,"avg_defend_base":1.57,"avg_frags_ships":0.49,"avg_capture_base":0.13,"avg_frags_planes":9.16},"PJSC035":{"avg_damage":14790.27,"avg_defend_base":9.49,"avg_frags_ships":0.65,"avg_capture_base":0.83,"avg_frags_planes":0.01},"PASA006":{"avg_damage":55677.61,"avg_defend_base":6.35,"avg_frags_ships":1.08,"avg_capture_base":0.67,"avg_frags_planes":10.71},"PASB018":{"avg_damage":74911.87,"avg_defend_base":9.21,"avg_frags_ships":1.18,"avg_capture_base":0.58,"avg_frags_planes":5.98},"PASB012":{"avg_damage":57587.71,"avg_defend_base":5.29,"avg_frags_ships":0.97,"avg_capture_base":1.57,"avg_frags_planes":9.31},"PJSD024":{"avg_damage":16828.59,"avg_defend_base":3.31,"avg_frags_ships":0.76,"avg_capture_base":0.78,"avg_frags_planes":0.02},"PASB013":{"avg_damage":28356.59,"avg_defend_base":7.47,"avg_frags_ships":0.79,"avg_capture_base":1.13,"avg_frags_planes":0.01},"PASC012":{"avg_damage":32227.31,"avg_defend_base":9.14,"avg_frags_ships":0.78,"avg_capture_base":1.54,"avg_frags_planes":3.96},"PASC014":{"avg_damage":36663.49,"avg_defend_base":9.93,"avg_frags_ships":0.76,"avg_capture_base":1.59,"avg_frags_planes":6.3},"PJSA015":{"avg_damage":96289.91,"avg_defend_base":10.43,"avg_frags_ships":1.98,"avg_capture_base":0.19,"avg_frags_planes":14.43},"PASC017":{"avg_damage":39382.69,"avg_defend_base":10.24,"avg_frags_ships":0.69,"avg_capture_base":1.81,"avg_frags_planes":7.67},"PJSA011":{"avg_damage":71017.64,"avg_defend_base":8.47,"avg_frags_ships":1.49,"avg_capture_base":0.63,"avg_frags_planes":10.97},"PJSA012":{"avg_damage":69258.62,"avg_defend_base":8.71,"avg_frags_ships":1.27,"avg_capture_base":0.57,"avg_frags_planes":14.41}}');
  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. if(window.location.host == 'forum.worldofwarships.'+realm){
  185. alert(error);
  186. }else{
  187. error = error.split('\n').join('<br />');
  188. onShowMessage(
  189. localization['Box'],
  190. error,
  191. onCloseMessage,
  192. localization['Ok'],
  193. false
  194. );
  195. }
  196. return true;
  197. }
  198. function getBrowser(){
  199. var nVer = navigator.appVersion;
  200. var nAgt = navigator.userAgent;
  201. var browserName = navigator.appName;
  202. var fullVersion = ''+parseFloat(navigator.appVersion);
  203. var majorVersion = parseInt(navigator.appVersion, 10);
  204. var nameOffset, verOffset, ix;
  205.  
  206. // In Opera 15+, the true version is after "OPR/"
  207. if((verOffset = nAgt.indexOf("OPR/")) != -1){
  208. browserName = "Opera";
  209. fullVersion = nAgt.substring(verOffset + 4);
  210. }
  211. // In older Opera, the true version is after "Opera" or after "Version"
  212. else if((verOffset = nAgt.indexOf("Opera")) != -1){
  213. browserName = "Opera";
  214. fullVersion = nAgt.substring(verOffset + 6);
  215. if((verOffset = nAgt.indexOf("Version")) != -1)
  216. fullVersion = nAgt.substring(verOffset + 8);
  217. }
  218. // In MSIE, the true version is after "MSIE" in userAgent
  219. else if((verOffset = nAgt.indexOf("MSIE")) != -1){
  220. browserName = "Microsoft Internet Explorer";
  221. fullVersion = nAgt.substring(verOffset + 5);
  222. }
  223. // In Chrome, the true version is after "Chrome"
  224. else if((verOffset = nAgt.indexOf("Chrome")) != -1) {
  225. browserName = "Chrome";
  226. fullVersion = nAgt.substring(verOffset + 7);
  227. }
  228. // In Safari, the true version is after "Safari" or after "Version"
  229. else if((verOffset = nAgt.indexOf("Safari")) != -1){
  230. browserName = "Safari";
  231. fullVersion = nAgt.substring(verOffset + 7);
  232. if((verOffset = nAgt.indexOf("Version")) != -1)
  233. fullVersion = nAgt.substring(verOffset + 8);
  234. }
  235. // In Firefox, the true version is after "Firefox"
  236. else if((verOffset = nAgt.indexOf("Firefox")) != -1){
  237. browserName = "Firefox";
  238. fullVersion = nAgt.substring(verOffset + 8);
  239. }
  240. // In most other browsers, "name/version" is at the end of userAgent
  241. else if((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))){
  242. browserName = nAgt.substring(nameOffset, verOffset);
  243. fullVersion = nAgt.substring(verOffset + 1);
  244. if(browserName.toLowerCase() == browserName.toUpperCase()){
  245. browserName = navigator.appName;
  246. }
  247. }
  248. // trim the fullVersion string at semicolon/space if present
  249. if((ix = fullVersion.indexOf(";")) != -1)
  250. fullVersion = fullVersion.substring(0, ix);
  251. if((ix = fullVersion.indexOf(" ")) != -1)
  252. fullVersion = fullVersion.substring(0, ix);
  253.  
  254. majorVersion = parseInt(''+fullVersion, 10);
  255. if(isNaN(majorVersion)){
  256. fullVersion = ''+parseFloat(navigator.appVersion);
  257. majorVersion = parseInt(navigator.appVersion, 10);
  258. }
  259. var url = window.location.href;
  260. console.log(''
  261. +'----------------------- WoWsStatInfo '+VersionWoWsStatInfo+' -----------------------\n'
  262. +'| Lang = '+lang+'\n'
  263. +'| URL = '+url+'\n'
  264. +'| Browser name = '+browserName+'\n'
  265. +'| Full version = '+fullVersion+'\n'
  266. +'| Major version = '+majorVersion+'\n'
  267. +'| navigator.appName = '+navigator.appName+'\n'
  268. +'| navigator.userAgent = '+navigator.userAgent+'\n'
  269. +'---------------------------------------------------------------------\n'
  270. );
  271. var navigatorInfo = [];
  272. navigatorInfo['browserName'] = browserName;
  273. navigatorInfo['fullVersion'] = fullVersion;
  274. navigatorInfo['majorVersion'] = majorVersion;
  275. navigatorInfo['appName'] = navigator.appName;
  276. navigatorInfo['userAgent'] = navigator.userAgent;
  277. return navigatorInfo;
  278. }
  279. /* ===== Check load page ===== */
  280. if(window.location.href.indexOf("accounts") > -1 && window.location.href.split('/').length == 9 && window.location.href.split('/')[6].match(/[0-9]+/) != null){
  281. lang = window.location.href.split('/')[3].match(/[a-z][a-z]/);
  282. localization = getLocalization(lang);
  283. getJson(WoWsStatInfoHref+'version.php?random='+Math.floor(Math.random()*100000001), doneLastVersion, errorLastVersion);
  284. var account_id = window.location.href.split('/')[6].match(/[0-9]+/);
  285. MemberProfilePage();
  286. }else if(window.location.host == 'forum.worldofwarships.'+realm && window.location.href.indexOf("/user/") > -1){
  287. ForumUserPage();
  288. }else if(window.location.host == 'forum.worldofwarships.'+realm && window.location.href.indexOf("/topic/") > -1){
  289. ForumTopicPage();
  290. }else if(window.location.href.indexOf("clans") > -1 && window.location.href.split('/')[4].match(/[0-9]+/) != null
  291. && window.location.href.indexOf("players") > -1 && window.location.href.split('/').length >= 6
  292. ){
  293. getJson(WoWsStatInfoHref+'version.php?random='+Math.floor(Math.random()*100000001), doneLastVersion, errorLastVersion);
  294. var ClanId = window.location.href.split('/')[4].match(/[0-9]+/);
  295. ClanPage();
  296. }
  297. jQ('.link-block').click(function(){onViewBlock(this);});
  298. function doneLastVersion(url, response){
  299. var data = response;
  300. if(VersionWoWsStatInfo != data['version']){
  301. onShowMessage(
  302. localization['Box'],
  303. localization['NewVersion']+' WoWsStatInfo '+data['version']+'<br />'+localization['NewUpdate']+'.',
  304. onCloseMessage,
  305. localization['Ok'],
  306. false
  307. );
  308. }
  309. }
  310. function errorLastVersion(url){}
  311. /* ===== Pages function ===== */
  312. function MemberProfilePage(){
  313. var account_profile = document.getElementsByClassName('account-profile')[0];
  314. if(account_profile === undefined){return;}
  315. MembersArray[0] = [];
  316. var _nick = document.getElementsByClassName('_nick')[0];
  317. account_name = _nick.textContent;
  318. var row = document.getElementsByClassName('row')[0];
  319. row.outerHTML += '' +
  320. '<div id="userscript-block-list">' +
  321. '<div id="userscript-forum-link">' +
  322. '<a target="_blank" href="http://forum.worldofwarships.'+realm+'/index.php?/user/dn-'+account_name+'-/">'+localization['forum-profile']+'</a>' +
  323. '</div>' +
  324. '<style>' +
  325. '.b-profile-clan{max-width: 400px; padding-right: 100px;margin-bottom: 14px;padding-top: 5px;position: relative;}' +
  326. '.b-profile-clan_photo{float: left;width: 61px;position: relative;min-height: 70px;top: 5px;}' +
  327. '.b-profile-clan_color{width: 15px;height: 15px;position: absolute;left: 38px;top: 2px;}' +
  328. '.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;}' +
  329. '.b-profile-clan_text{margin-left: 61px;}' +
  330. '.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;}' +
  331. '.b-link-clan{color: #f9d088;font-weight: bold;text-decoration: none;}' +
  332. '.b-link-clan_tag{color: #babcbf;}' +
  333. '.b-statistic{overflow: hidden;margin: 0 0 16px;line-height: 14px;}' +
  334. '.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;}' +
  335. '.b-statistic_value{color: #babcbf;}' +
  336. '</style>' +
  337. '<div id="wowsstatinfo-profile-clan">' +
  338. '<div class="b-profile-clan b-profile-clan__points js-tooltip" id="js-profile-clan">' +
  339. '<img src="http://'+realm+'.wargaming.net/clans/static/0.1.0.1/images/processing/loader.gif" />' +
  340. '</div>' +
  341. '</div>' +
  342. getUserScriptDeveloperBlock() +
  343. '' +
  344. '</div>' +
  345. '';
  346. var account_href = window.location.href.split('/')[6].split('-');
  347. var account_id = account_href[0];
  348. getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+account_id, doneClanInfo, errorClanInfo);
  349. getMemberStatistic();
  350. jQ('.account-pvp-pve').click(function(){
  351. setTimeout(function(){getMemberStatistic();}, 1000);
  352. });
  353. jQ('.account-tabs').click(function(){
  354. setTimeout(function(){getMemberStatistic();}, 1000);
  355. });
  356. }
  357. function ForumUserPage(){
  358. var nickname = document.getElementsByClassName('nickname')[0];
  359. var reputation__wrp = document.getElementsByClassName('reputation__wrp')[0];
  360. var user_id = reputation__wrp.getAttribute('id').split('_')[1];
  361. var ipsList_data = document.getElementsByClassName('ipsList_data')[0];
  362. ipsList_data.innerHTML += '' +
  363. '<li class="clear clearfix">' +
  364. '<span class="row_title">'+localization['profile-wows']+':</span>' +
  365. '<span class="row_data"><a href="http://worldofwarships.'+realm+'/community/accounts/'+user_id+'-/" target="_black">'+nickname.innerHTML+'</a></span>' +
  366. '</li>' +
  367. '<li class="clear clearfix">' +
  368. '<span class="row_title">'+localization['profile-clan']+':</span>' +
  369. '<span class="row_data member_'+user_id+'"></span>' +
  370. '</li>' +
  371. '';
  372. getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+user_id, doneForumClanInfo, errorForumClanInfo);
  373. }
  374. function ForumTopicPage(){
  375. var ForumTopicMembers = [];
  376. var basic_info = document.getElementsByClassName('basic_info');
  377. for(var i = 0; i < basic_info.length; i++){
  378. var ipsUserPhotoLink = basic_info[i].getElementsByClassName('ipsUserPhotoLink')[0];
  379. if(undefined === ipsUserPhotoLink){continue;}
  380. if(ipsUserPhotoLink.id.indexOf('anonymous_element') > -1){
  381. var linkParse = ipsUserPhotoLink.href.split('/');
  382. var accountParse = linkParse[5].split('-');
  383. var account_id = accountParse[accountParse.length - 1];
  384. if(ForumTopicMembers['member_'+account_id] === undefined){
  385. ForumTopicMembers['member_'+account_id] = account_id;
  386. getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+account_id, doneForumClanInfo, errorForumClanInfo);
  387. }
  388. basic_info[i].innerHTML += '' +
  389. '<li class="member_'+account_id+' desc lighter" style="min-height: 50px;">' +
  390. '<img style="width: 32px; height: 32px;" src="http://'+realm+'.wargaming.net/clans/static/0.1.0.1/images/processing/loader.gif" />' +
  391. localization['search-clan-forum'] +
  392. '</li>' +
  393. '';
  394. }
  395. }
  396. }
  397. function ClanPage(){
  398. var view_block_history = getLocalStorage('clan-member-history', false);
  399. if(view_block_history == null){view_block_history = 'hide';}
  400. var games_tabs = document.getElementsByClassName("games-tabs")[0];
  401. games_tabs.outerHTML += '' +
  402. '<div style="padding-bottom: 20px;">' +
  403. getUserScriptDeveloperBlock() +
  404. '<div class="div-link-block">' +
  405. '<span id="clan-member-history" class="link-block '+view_block_history+'-block">' +
  406. localization['block-link-clan-member-history'] +
  407. '<div class="icon-link-block"></div>'+
  408. '</span>' +
  409. '</div>' +
  410. '<div id="userscript-block" class="clan-member-history '+view_block_history+'-block" style="text-align: center;">' +
  411. '<img src="/clans/static/0.1.0.1/images/processing/loader.gif" />' +
  412. '</div>' +
  413. '</div>' +
  414. '';
  415. getClanMembersList();
  416. }
  417. /* ===== ForumTopicPage function ===== */
  418. function doneForumClanInfo(url, response){
  419. if(response.status && response.status == "error"){
  420. errorForumClanInfo();
  421. return;
  422. }
  423.  
  424. var vars = getUrlVars(url);
  425. var account_id = vars['account_id'];
  426. var clansInfo = response['data'][account_id];
  427. if(clansInfo != null){
  428. var icon = clansInfo['clan']['emblems']['x32']['portal'];
  429. if(icon === undefined){
  430. for(var key in clansInfo['clan']['emblems']['x32']){
  431. if(key != 'wot'){
  432. icon = clansInfo['clan']['emblems']['x32'][key];
  433. }
  434. }
  435. }
  436. var br_line = '';
  437. if(window.location.href.indexOf("/topic/") > -1){
  438. br_line = '<br />';
  439. }
  440. var html = '' +
  441. br_line +
  442. '<span>' +
  443. '<a align="center" href="http://'+realm+'.wargaming.net/clans/'+clansInfo['clan']['clan_id']+'/" title="'+clansInfo['clan']['tag']+'" rel="home" target="_blank">' +
  444. '<img src="'+icon+'" alt="'+clansInfo['clan']['tag']+'">' +
  445. '</a>' +
  446. '<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>' +
  447. '</span>' +
  448. '';
  449. jQ('.member_'+account_id).html(html);
  450. }else{
  451. jQ('.member_'+account_id).html('');
  452. }
  453. }
  454. function errorForumClanInfo(url){
  455. jQ('.member_'+account_id).html('');
  456. }
  457. /* ===== MemberProfilePage function ===== */
  458. function doneClanInfo(url, response){
  459. if(response.status && response.status == "error"){
  460. errorClanInfo();
  461. return;
  462. }
  463. var vars = getUrlVars(url);
  464. var account_id = vars['account_id'];
  465. MembersArray[0]['clans'] = response['data'][account_id];
  466. viewMemberClan();
  467. }
  468. function errorClanInfo(url){
  469. MembersArray[0]['clans'] = null;
  470. viewMemberClan();
  471. }
  472. function viewMemberClan(){
  473. var wowsstatinfo_profile_clan = document.getElementById('wowsstatinfo-profile-clan');
  474. if(MembersArray[0]['clans'] != null){
  475. var day = dateDiffInDays(MembersArray[0]['clans']['joined_at'] * 1000, new Date().getTime());
  476. var icon = MembersArray[0]['clans']['clan']['emblems']['x32']['portal'];
  477. if(icon === undefined){
  478. for(var key in MembersArray[0]['clans']['clan']['emblems']['x32']){
  479. if(key != 'wot'){
  480. icon = MembersArray[0]['clans']['clan']['emblems']['x32'][key];
  481. }
  482. }
  483. }
  484. wowsstatinfo_profile_clan.innerHTML = '' +
  485. '<div class="b-profile-clan b-profile-clan__points js-tooltip" id="js-profile-clan">' +
  486. '<div class="b-profile-clan_photo">' +
  487. '<div style="background: '+MembersArray[0]['clans']['clan']['color']+';" class="b-profile-clan_color"><!-- --></div>' +
  488. '<a class="b-profile-clan_link" href="http://'+realm+'.wargaming.net/clans/'+MembersArray[0]['clans']['clan']['clan_id']+'/" target="_blank">' +
  489. '<img alt="'+MembersArray[0]['clans']['clan']['name']+'" src="'+icon+'" width="32" height="32">' +
  490. '</a>' +
  491. '</div>' +
  492. '<div class="b-profile-clan_text">' +
  493. '<div class="b-profile-clan_text-wrpr">' +
  494. '<a class="b-link-clan" href="http://'+realm+'.wargaming.net/clans/'+MembersArray[0]['clans']['clan']['clan_id']+'/" target="_blank">' +
  495. '<span class="b-link-clan_tag">['+MembersArray[0]['clans']['clan']['tag']+']</span>&nbsp;'+MembersArray[0]['clans']['clan']['name']+'' +
  496. '</a>' +
  497. '</div>' +
  498. '<div class="b-statistic">' +
  499. '<p class="b-statistic_item">'+localization['role']+': <span class="b-statistic_value">'+MembersArray[0]['clans']['role_i18n']+'</span></p>' +
  500. '<p class="b-statistic_item">'+localization['clan-day']+': <span class="b-statistic_value">'+day+'</span></p>' +
  501. '</div>' +
  502. '</div>' +
  503. '</div>' +
  504. '';
  505. }else{
  506. wowsstatinfo_profile_clan.innerHTML = '';
  507. }
  508. }
  509. function getMemberStatistic(){
  510. var account_href = window.location.href.split('/')[6].split('-');
  511. var account_id = account_href[0];
  512. var account_name = account_href[1];
  513. var _nick = document.getElementsByClassName('_nick')[0];
  514. account_name = _nick.textContent;
  515. MembersArray[0]['account_id'] = account_id;
  516. MembersArray[0]['account_name'] = account_name;
  517. var count_stat = 0;
  518. for(var t = 0; t < typeStat.length; t++){
  519. var type = typeStat[t];
  520. MembersArray[0][type] = [];
  521. var tabContainer = null;
  522. var tab_container = document.getElementsByClassName('tab-container');
  523. for(var tc = 0; tc < tab_container.length; tc++){
  524. if(tab_container[tc].getAttribute('js-tab-cont-id') != type){continue;}
  525. tabContainer = tab_container[tc];
  526. }
  527. if(tabContainer == null){continue;}
  528. var account_battle_stats = tabContainer.getElementsByClassName('account-battle-stats')[0];
  529. if(account_battle_stats != null){
  530. var account_table = account_battle_stats.getElementsByClassName('account-table');
  531. //Общие результаты
  532. MembersArray[0][type]['battles'] = htmlParseMemberStatistic(account_table[0].rows[1].cells[1]);
  533. MembersArray[0][type]['wins'] = htmlParseMemberStatistic(account_table[0].rows[2].cells[1]);
  534. MembersArray[0][type]['survived'] = htmlParseMemberStatistic(account_table[0].rows[3].cells[1]);
  535. MembersArray[0][type]['hits_percents'] = htmlParseMemberStatistic(account_table[0].rows[4].cells[1]);
  536. MembersArray[0][type]['damage'] = htmlParseMemberStatistic(account_table[0].rows[5].cells[1]);
  537. MembersArray[0][type]['frags_ships'] = htmlParseMemberStatistic(account_table[0].rows[6].cells[1]);
  538. MembersArray[0][type]['frags_planes'] = htmlParseMemberStatistic(account_table[0].rows[7].cells[1]);
  539. MembersArray[0][type]['capture_base'] = htmlParseMemberStatistic(account_table[0].rows[8].cells[1]);
  540. MembersArray[0][type]['defend_base'] = htmlParseMemberStatistic(account_table[0].rows[9].cells[1]);
  541. //Средние показатели за бой
  542. MembersArray[0][type]['avg_xp'] = htmlParseMemberStatistic(account_table[1].rows[1].cells[1]);
  543. MembersArray[0][type]['avg_damage'] = htmlParseMemberStatistic(account_table[1].rows[2].cells[1]);
  544. MembersArray[0][type]['avg_frags_ships'] = htmlParseMemberStatistic(account_table[1].rows[3].cells[1]);
  545. MembersArray[0][type]['avg_frags_planes'] = htmlParseMemberStatistic(account_table[1].rows[4].cells[1]);
  546. MembersArray[0][type]['avg_capture_base'] = htmlParseMemberStatistic(account_table[1].rows[5].cells[1]);
  547. MembersArray[0][type]['avg_defend_base'] = htmlParseMemberStatistic(account_table[1].rows[6].cells[1]);
  548. //Рекордные показатели
  549. MembersArray[0][type]['max_xp'] = htmlParseMemberStatistic(account_table[2].rows[1].cells[1]);
  550. MembersArray[0][type]['max_damage'] = htmlParseMemberStatistic(account_table[2].rows[2].cells[1]);
  551. MembersArray[0][type]['max_frags_ships'] = htmlParseMemberStatistic(account_table[2].rows[3].cells[1]);
  552. MembersArray[0][type]['max_frags_planes'] = htmlParseMemberStatistic(account_table[2].rows[4].cells[1]);
  553. //Расчет
  554. MembersArray[0][type]['wins_percents'] = (MembersArray[0][type]['wins']/MembersArray[0][type]['battles'])*100;
  555. MembersArray[0][type]['survived_percents'] = (MembersArray[0][type]['survived']/MembersArray[0][type]['battles'])*100;
  556. if(MembersArray[0][type]['battles'] == MembersArray[0][type]['survived_battles']){
  557. MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/MembersArray[0][type]['battles'];
  558. }else{
  559. MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/(MembersArray[0][type]['battles']-MembersArray[0][type]['survived']);
  560. }
  561. //Общие результаты
  562. account_table[0].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['battles'], 'battles');
  563. //Средние показатели за бой
  564. account_table[1].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp');
  565. account_table[1].rows[2].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage');
  566. account_table[1].rows[3].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_ships'], 'avg_frags_ships');
  567. account_table[1].rows[4].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_planes'], 'avg_frags_planes');
  568. account_table[1].rows[5].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_capture_base'], 'avg_capture_base');
  569. account_table[1].rows[6].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_defend_base'], 'avg_defend_base');
  570. //Рекордные показатели
  571. account_table[2].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_xp'], 'max_xp');
  572. account_table[2].rows[2].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_damage'], 'max_damage');
  573. account_table[2].rows[3].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_frags_ships'], 'max_frags_ships');
  574. account_table[2].rows[4].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_frags_planes'], 'max_frags_planes');
  575. //Дополнительно
  576. account_table[0].rows[2].cells[1].getElementsByTagName('small')[0].style.color = findColorASC(MembersArray[0][type]['wins_percents'], 'wins_percents');
  577. if(account_table[0].rows[3].cells[1].getElementsByClassName('small-survived_percents')[0] == null){
  578. account_table[0].rows[3].cells[1].innerHTML += '<small class="small-survived_percents">('+valueFormat((MembersArray[0][type]['survived_percents']).toFixed(2))+'%)</small>';
  579. account_table[0].rows[3].cells[1].getElementsByTagName('small')[0].style.color = findColorASC(MembersArray[0][type]['survived_percents'], 'survived_percents');
  580. }
  581. var account_main_stats = tabContainer.getElementsByClassName('account-main-stats')[0];
  582. var _values = tabContainer.getElementsByClassName('_values')[0];
  583. var main_stat = _values.getElementsByTagName('div');
  584. main_stat[0].style.color = findColorASC(MembersArray[0][type]['battles'], 'battles');
  585. main_stat[1].style.color = findColorASC(MembersArray[0][type]['wins_percents'], 'wins_percents');
  586. main_stat[2].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp');
  587. main_stat[3].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage');
  588. main_stat[4].style.color = findColorASC(MembersArray[0][type]['kill_dead'], 'kill_dead');
  589. count_stat++;
  590. }else{
  591. MembersArray[0][type]['battles'] = 0;
  592. MembersArray[0][type]['wins'] = 0;
  593. MembersArray[0][type]['survived'] = 0;
  594. MembersArray[0][type]['hits_percents'] = 0;
  595. MembersArray[0][type]['damage'] = 0;
  596. MembersArray[0][type]['frags_ships'] = 0;
  597. MembersArray[0][type]['frags_planes'] = 0;
  598. MembersArray[0][type]['capture_base'] = 0;
  599. MembersArray[0][type]['defend_base'] = 0;
  600. MembersArray[0][type]['avg_xp'] = 0;
  601. MembersArray[0][type]['avg_damage'] = 0;
  602. MembersArray[0][type]['avg_frags_ships'] = 0;
  603. MembersArray[0][type]['avg_frags_planes'] = 0;
  604. MembersArray[0][type]['avg_capture_base'] = 0;
  605. MembersArray[0][type]['avg_defend_base'] = 0;
  606. MembersArray[0][type]['max_xp'] = 0;
  607. MembersArray[0][type]['max_damage'] = 0;
  608. MembersArray[0][type]['max_frags_ships'] = 0;
  609. MembersArray[0][type]['max_frags_planes'] = 0;
  610. MembersArray[0][type]['wins_percents'] = 0;
  611. MembersArray[0][type]['survived_percents'] = 0;
  612. MembersArray[0][type]['kill_dead'] = 0;
  613. }
  614. var ship_class = '';
  615. var ships_detail_stats = tabContainer.getElementsByClassName('ships-detail-stats')[0];
  616. if(ships_detail_stats != null){
  617. var ships_x_level = 0;
  618. var StatShips = [];
  619. StatShips['damage'] = 0;
  620. StatShips['frags_ships'] = 0;
  621. StatShips['frags_planes'] = 0;
  622. StatShips['capture_base'] = 0;
  623. StatShips['defend_base'] = 0;
  624. StatShips['expDamage'] = 0;
  625. StatShips['expFragsShips'] = 0;
  626. StatShips['expFragsPlanes'] = 0;
  627. StatShips['expCapture'] = 0;
  628. StatShips['expDefend'] = 0;
  629. var StatShipsClass = [];
  630. StatShipsClass['damage'] = 0;
  631. StatShipsClass['frags_ships'] = 0;
  632. StatShipsClass['frags_planes'] = 0;
  633. StatShipsClass['capture_base'] = 0;
  634. StatShipsClass['defend_base'] = 0;
  635. StatShipsClass['expDamage'] = 0;
  636. StatShipsClass['expFragsShips'] = 0;
  637. StatShipsClass['expFragsPlanes'] = 0;
  638. StatShipsClass['expCapture'] = 0;
  639. StatShipsClass['expDefend'] = 0;
  640. MembersArray[0][type]['ships'] = [];
  641. for(var i = 0; i < ships_detail_stats.rows.length; i++){
  642. var row = ships_detail_stats.rows[i];
  643. if(i == 0 && row.cells.length < 6){
  644. var th = document.createElement('th');
  645. th.setAttribute('class', '_value');
  646. th.innerHTML = '<span>'+localization['wr']+'</span>';
  647. row.appendChild(th);
  648. continue;
  649. }
  650. if(row.getAttribute('class') == null){
  651. var _icon = row.getElementsByClassName('_icon')[0];
  652. var div_icon = _icon.getElementsByTagName('div')[0];
  653. ship_class = div_icon.getAttribute('class').split('-')[1];
  654. if(row.cells.length < 6){
  655. var td = document.createElement('td');
  656. td.setAttribute('id', 'wr-'+type+'-'+ship_class);
  657. td.innerHTML = '<span>0</span>';
  658. row.appendChild(td);
  659. }
  660. var battles = htmlParseMemberStatistic(row.cells[2]);
  661. if(battles > 0){
  662. var wins = htmlParseMemberStatistic(row.cells[3]);
  663. var avg_xp = htmlParseMemberStatistic(row.cells[4]);
  664. var wins_percents = (wins/battles)*100; if(isNaN(wins_percents)){wins_percents = 0;}
  665. row.cells[3].setAttribute('style', 'white-space: nowrap;');
  666. row.cells[3].innerHTML = valueFormat(wins)+' <span style="color:'+findColorASC(wins_percents, 'wins_percents')+';">('+valueFormat((wins_percents).toFixed(0))+'%)</span>';
  667. row.cells[4].setAttribute('style', 'white-space: nowrap;');
  668. row.cells[4].innerHTML = ' <span style="color:'+findColorASC(avg_xp, 'avg_xp')+';">'+valueFormat(avg_xp)+'</span>';
  669. }
  670. StatShipsClass['damage'] = 0;
  671. StatShipsClass['frags_ships'] = 0;
  672. StatShipsClass['frags_planes'] = 0;
  673. StatShipsClass['capture_base'] = 0;
  674. StatShipsClass['defend_base'] = 0;
  675. StatShipsClass['expDamage'] = 0;
  676. StatShipsClass['expFragsShips'] = 0;
  677. StatShipsClass['expFragsPlanes'] = 0;
  678. StatShipsClass['expCapture'] = 0;
  679. StatShipsClass['expDefend'] = 0;
  680. continue;
  681. }
  682. if(row.getAttribute('class').indexOf('_expandable') > -1){
  683. var index = MembersArray[0][type]['ships'].length;
  684. MembersArray[0][type]['ships'][index] = [];
  685. MembersArray[0][type]['ships'][index]['ship_class'] = ship_class;
  686. MembersArray[0][type]['ships'][index]['ship_name'] = row.getAttribute('js-has-extension').split('-')[0];
  687. MembersArray[0][type]['ships'][index]['ship_lvl'] = row.getAttribute('js-has-extension').split('-')[1];
  688. MembersArray[0][type]['ships'][index]['ship_nation'] = row.cells[0].getElementsByTagName('div')[0].getAttribute('class').split('-')[2];
  689. MembersArray[0][type]['ships'][index]['ship_lvl_text'] = row.cells[0].getElementsByClassName('_lvl')[0].innerHTML;
  690. MembersArray[0][type]['ships'][index]['ship_name_text'] = row.cells[0].getElementsByClassName('_text')[0].innerHTML;
  691. MembersArray[0][type]['ships'][index]['ship_code'] = row.cells[0].getElementsByClassName('_icon-ships')[0].getAttribute('src').split('/')[5].split('.')[0];
  692. if(row.cells.length < 5){
  693. var td = document.createElement('td');
  694. td.setAttribute('id', 'wr-'+type+'-'+MembersArray[0][type]['ships'][index]['ship_code']);
  695. td.innerHTML = '<span>0</span>';
  696. row.appendChild(td);
  697. }
  698.  
  699. var battles = htmlParseMemberStatistic(row.cells[1]);
  700. if(battles > 0){
  701. var wins = htmlParseMemberStatistic(row.cells[2]);
  702. var avg_xp = htmlParseMemberStatistic(row.cells[3]);
  703. var wins_percents = (wins/battles)*100; if(isNaN(wins_percents)){wins_percents = 0;}
  704. row.cells[2].setAttribute('style', 'white-space: nowrap;');
  705. row.cells[2].innerHTML = valueFormat(wins)+' <span style="color:'+findColorASC(wins_percents, 'wins_percents')+';">('+valueFormat((wins_percents).toFixed(0))+'%)</span>';
  706. row.cells[3].setAttribute('style', 'white-space: nowrap;');
  707. row.cells[3].innerHTML = ' <span style="color:'+findColorASC(avg_xp, 'avg_xp')+';">'+valueFormat(avg_xp)+'</span>';
  708. }
  709. if(MembersArray[0][type]['ships'][index]['ship_lvl_text'] == 'X'){
  710. ships_x_level++;
  711. }
  712. continue;
  713. }
  714. if(row.getAttribute('class').indexOf('_ship-entry-stat') > -1){
  715. row.cells[0].setAttribute('colspan', '6');
  716. var index = MembersArray[0][type]['ships'].length - 1;
  717. var account_table = row.cells[0].getElementsByClassName('account-table');
  718. //Общие результаты
  719. MembersArray[0][type]['ships'][index]['battles'] = htmlParseMemberStatistic(account_table[0].rows[1].cells[1]);
  720. MembersArray[0][type]['ships'][index]['wins'] = htmlParseMemberStatistic(account_table[0].rows[2].cells[1]);
  721. MembersArray[0][type]['ships'][index]['survived'] = htmlParseMemberStatistic(account_table[0].rows[3].cells[1]);
  722. MembersArray[0][type]['ships'][index]['damage'] = htmlParseMemberStatistic(account_table[0].rows[4].cells[1]);
  723. MembersArray[0][type]['ships'][index]['frags_ships'] = htmlParseMemberStatistic(account_table[0].rows[5].cells[1]);
  724. MembersArray[0][type]['ships'][index]['frags_planes'] = htmlParseMemberStatistic(account_table[0].rows[6].cells[1]);
  725. MembersArray[0][type]['ships'][index]['capture_base'] = htmlParseMemberStatistic(account_table[0].rows[7].cells[1]);
  726. MembersArray[0][type]['ships'][index]['defend_base'] = htmlParseMemberStatistic(account_table[0].rows[8].cells[1]);
  727. //Средние показатели за бой
  728. MembersArray[0][type]['ships'][index]['avg_xp'] = htmlParseMemberStatistic(account_table[1].rows[1].cells[1]);
  729. MembersArray[0][type]['ships'][index]['avg_damage'] = htmlParseMemberStatistic(account_table[1].rows[2].cells[1]);
  730. MembersArray[0][type]['ships'][index]['avg_frags_ships'] = htmlParseMemberStatistic(account_table[1].rows[3].cells[1]);
  731. MembersArray[0][type]['ships'][index]['avg_frags_planes'] = htmlParseMemberStatistic(account_table[1].rows[4].cells[1]);
  732. MembersArray[0][type]['ships'][index]['avg_capture_base'] = htmlParseMemberStatistic(account_table[1].rows[5].cells[1]);
  733. MembersArray[0][type]['ships'][index]['avg_defend_base'] = htmlParseMemberStatistic(account_table[1].rows[6].cells[1]);
  734. //Рекордные показатели
  735. MembersArray[0][type]['ships'][index]['max_xp'] = htmlParseMemberStatistic(account_table[2].rows[1].cells[1]);
  736. MembersArray[0][type]['ships'][index]['max_damage'] = htmlParseMemberStatistic(account_table[2].rows[2].cells[1]);
  737. MembersArray[0][type]['ships'][index]['max_frags_ships'] = htmlParseMemberStatistic(account_table[2].rows[3].cells[1]);
  738. MembersArray[0][type]['ships'][index]['max_frags_planes'] = htmlParseMemberStatistic(account_table[2].rows[4].cells[1]);
  739. //Расчет
  740. MembersArray[0][type]['ships'][index]['wins_percents'] = (MembersArray[0][type]['ships'][index]['wins']/MembersArray[0][type]['ships'][index]['battles'])*100;
  741. MembersArray[0][type]['ships'][index]['survived_percents'] = (MembersArray[0][type]['ships'][index]['survived']/MembersArray[0][type]['ships'][index]['battles'])*100;
  742. if(MembersArray[0][type]['ships'][index]['battles'] == MembersArray[0][type]['ships'][index]['survived_battles']){
  743. MembersArray[0][type]['ships'][index]['kill_dead'] = MembersArray[0][type]['ships'][index]['frags_ships']/MembersArray[0][type]['ships'][index]['battles'];
  744. }else{
  745. 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']);
  746. }
  747. var ship_code = MembersArray[0][type]['ships'][index]['ship_code'];
  748. var ship_name_text = MembersArray[0][type]['ships'][index]['ship_name_text'];
  749. if(ExpShips[ship_code] !== undefined){
  750. var ship_battles = parseInt(MembersArray[0][type]['ships'][index]['battles']); if(isNaN(ship_battles)){ship_battles = 0;}
  751. var ship_damage = parseInt(MembersArray[0][type]['ships'][index]['damage']); if(isNaN(ship_damage)){ship_damage = 0;}
  752. var ship_frags_ships = parseInt(MembersArray[0][type]['ships'][index]['frags_ships']); if(isNaN(ship_frags_ships)){ship_frags_ships = 0;}
  753. var ship_frags_planes = parseInt(MembersArray[0][type]['ships'][index]['frags_planes']); if(isNaN(ship_frags_planes)){ship_frags_planes = 0;}
  754. var ship_capture_base = parseInt(MembersArray[0][type]['ships'][index]['capture_base']); if(isNaN(ship_capture_base)){ship_capture_base = 0;}
  755. var ship_defend_base = parseInt(MembersArray[0][type]['ships'][index]['defend_base']); if(isNaN(ship_defend_base)){ship_defend_base = 0;}
  756. var StatShip = [];
  757. StatShip['damage'] = ship_damage;
  758. StatShip['frags_ships'] = ship_frags_ships;
  759. StatShip['frags_planes'] = ship_frags_planes;
  760. StatShip['capture_base'] = ship_capture_base;
  761. StatShip['defend_base'] = ship_defend_base;
  762. StatShip['expDamage'] = ship_battles * ExpShips[ship_code]['avg_damage'];
  763. StatShip['expFragsShips'] = ship_battles * ExpShips[ship_code]['avg_frags_ships'];
  764. StatShip['expFragsPlanes'] = ship_battles * ExpShips[ship_code]['avg_frags_planes'];
  765. StatShip['expCapture'] = ship_battles * ExpShips[ship_code]['avg_capture_base'];
  766. StatShip['expDefend'] = ship_battles * ExpShips[ship_code]['avg_defend_base'];
  767. MembersArray[0][type]['ships'][index]['wr'] = calcWR(StatShip);
  768. var wr_cell = document.getElementById('wr-'+type+'-'+ship_code);
  769. wr_cell.setAttribute('style', 'white-space: nowrap;');
  770. wr_cell.innerHTML = '<span style="color:'+findColorASC(MembersArray[0][type]['ships'][index]['wr'], 'wr')+';">'+valueFormat((MembersArray[0][type]['ships'][index]['wr']).toFixed(0))+'</span>';
  771. StatShipsClass['damage'] += ship_damage;
  772. StatShipsClass['frags_ships'] += ship_frags_ships;
  773. StatShipsClass['frags_planes'] += ship_frags_planes;
  774. StatShipsClass['capture_base'] += ship_capture_base;
  775. StatShipsClass['defend_base'] += ship_defend_base;
  776. StatShipsClass['expDamage'] += ship_battles * ExpShips[ship_code]['avg_damage'];
  777. StatShipsClass['expFragsShips'] += ship_battles * ExpShips[ship_code]['avg_frags_ships'];
  778. StatShipsClass['expFragsPlanes'] += ship_battles * ExpShips[ship_code]['avg_frags_planes'];
  779. StatShipsClass['expCapture'] += ship_battles * ExpShips[ship_code]['avg_capture_base'];
  780. StatShipsClass['expDefend'] += ship_battles * ExpShips[ship_code]['avg_defend_base'];
  781. var wr_class = calcWR(StatShipsClass);
  782. var ship_class = MembersArray[0][type]['ships'][index]['ship_class'];
  783. var wr_class_cell = document.getElementById('wr-'+type+'-'+ship_class);
  784. wr_class_cell.setAttribute('style', 'white-space: nowrap;');
  785. wr_class_cell.innerHTML = '<span style="color:'+findColorASC(wr_class, 'wr')+';">'+valueFormat((wr_class).toFixed(0))+'</span>';
  786. StatShips['damage'] += ship_damage;
  787. StatShips['frags_ships'] += ship_frags_ships;
  788. StatShips['frags_planes'] += ship_frags_planes;
  789. StatShips['capture_base'] += ship_capture_base;
  790. StatShips['defend_base'] += ship_defend_base;
  791. StatShips['expDamage'] += ship_battles * ExpShips[ship_code]['avg_damage'];
  792. StatShips['expFragsShips'] += ship_battles * ExpShips[ship_code]['avg_frags_ships'];
  793. StatShips['expFragsPlanes'] += ship_battles * ExpShips[ship_code]['avg_frags_planes'];
  794. StatShips['expCapture'] += ship_battles * ExpShips[ship_code]['avg_capture_base'];
  795. StatShips['expDefend'] += ship_battles * ExpShips[ship_code]['avg_defend_base'];
  796. }else{
  797. console.log('***** ship_code '+ship_code+' undefined, '+ship_name_text);
  798. }
  799. continue;
  800. }
  801. }
  802. MembersArray[0][type]['ships_x_level'] = ships_x_level;
  803. MembersArray[0][type]['wr'] = calcWR(StatShips);
  804. count_stat++;
  805. }else{
  806. MembersArray[0][type]['wr'] = 0;
  807. }
  808. }
  809. if(count_stat == 0){
  810. console.log('NO LOAD STAT, START REFRESH 1 SEC');
  811. setTimeout(function(){getMemberStatistic();}, 1000);
  812. return;
  813. }
  814. //console.log(MembersArray[0]);
  815. var main_page_script_block = document.getElementById('main-page-script-block');
  816. if(main_page_script_block == null){viewMainMemberPage();}
  817. var ship_page_script_block = document.getElementById('ship-page-script-block');
  818. if(ship_page_script_block == null){viewShipMemberPage();}
  819. }
  820. function viewMainMemberPage(){
  821. var tabContainer = null;
  822. var tab_container = document.getElementsByClassName('tab-container');
  823. for(var tc = 0; tc < tab_container.length; tc++){
  824. if(tab_container[tc].getAttribute('js-tab-cont-id') != 'pvp'){continue;}
  825. tabContainer = tab_container[tc];
  826. }
  827. if(tabContainer != null){
  828. var cm_parent_link_cutted_text = document.getElementsByClassName('cm-parent-link_cutted-text')[0];
  829. var login_name = null; if(cm_parent_link_cutted_text != null){login_name = cm_parent_link_cutted_text.textContent;}
  830. var account_main_stats_mobile = tabContainer.getElementsByClassName('account-main-stats-mobile')[0];
  831. if(account_main_stats_mobile == null){return;}
  832. var userbar = '';
  833. if(login_name == MembersArray[0]['account_name']){
  834. userbar += '<button class="btn btn-lg btn-turqoise" id="generator-userbar" style="margin: 5px;">'+localization['generator-userbar']+'</button>';
  835. }
  836. userbar += '' +
  837. '<br />'+
  838. '<img id="userbar-img" src="'+WoWsStatInfoHref+'bg/userbar.png" />'+
  839. '<div id="userbar-link" style="margin: 5px; font-size: 14px;">[img]'+WoWsStatInfoHref+'bg/userbar.png[/img]</div>'
  840. '';
  841. account_main_stats_mobile.outerHTML += '' +
  842. '<hr />' +
  843. '<table id="main-page-script-block" style="width: 100%;">' +
  844. '<tr>' +
  845. '<td style="width: 410px; vertical-align: top;">' +
  846. ''+
  847. '</td>'+
  848. '<td>'+
  849. '</td>'+
  850. '<td style="/* width: 470px; */ text-align: right; vertical-align: top;">'+
  851. userbar +
  852. '</td>' +
  853. '</tr>' +
  854. '</table>'
  855. '';
  856. }
  857. var img = new Image();
  858. img.onload = function(){
  859. var userbar_img = document.getElementById('userbar-img');
  860. if(userbar_img != null){
  861. userbar_img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001);
  862. var userbar_link = document.getElementById('userbar-link');
  863. userbar_link.textContent = '[img]'+WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png[/img]';
  864. }
  865. }
  866. img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001);
  867. jQ('#generator-userbar').click(function(){
  868. getJson(WoWsStatInfoHref+'bg/bg.php?'+Math.floor(Math.random()*100000001), doneUserBarBG, errorUserBarBG);
  869. });
  870. }
  871. function viewShipMemberPage(){
  872. var tabContainer = null;
  873. var tab_container = document.getElementsByClassName('tab-container');
  874. for(var tc = 0; tc < tab_container.length; tc++){
  875. if(tab_container[tc].getAttribute('js-tab-cont-id') != 'pvp'){continue;}
  876. tabContainer = tab_container[tc];
  877. }
  878. if(tabContainer != null){
  879. var account_tab_ships = tabContainer.getElementsByClassName('account-tab-ships')[0];
  880. if(account_tab_ships == null){return;}
  881. var account_title = account_tab_ships.getElementsByClassName('account-title')[2];
  882. if(account_title == null){return;}
  883. var div = document.createElement('div');
  884. div.setAttribute('id', 'ship-page-script-block');
  885. div.setAttribute('style', ' padding-bottom: 40px;');
  886. div.innerHTML = '' +
  887. '<table class="account-table">' +
  888. '<thead>' +
  889. '<tr>' +
  890. '<th colspan="2">' +
  891. '<h3 class="_title">'+localization['additional-results']+'</h3>' +
  892. '</th>' +
  893. '</tr>' +
  894. '</thead>' +
  895. '<tbody>' +
  896. '<tr>' +
  897. '<td class="_name">' +
  898. '<span>'+localization['number-ships-x']+'</span>' +
  899. '</td>' +
  900. '<td class="_value">' +
  901. '<span>'+MembersArray[0]['pvp']['ships_x_level']+'</span>'+
  902. '</td>' +
  903. '</tr>' +
  904. '<tr>' +
  905. '<td class="_name">' +
  906. '<span>'+localization['wr']+'</span>' +
  907. '</td>' +
  908. '<td class="_value">' +
  909. '<span style="color: '+findColorASC(MembersArray[0]['pvp']['wr'], 'wr')+';">'+
  910. valueFormat((MembersArray[0]['pvp']['wr']).toFixed(2)) +
  911. '</span>'+
  912. '</td>' +
  913. '</tr>' +
  914. '</tbody>' +
  915. '</table>' +
  916. '';
  917. account_title.insertBefore(div, account_title.firstChild);
  918. }
  919. }
  920. function GeneratorUserBar(){
  921. var userbarbg = 'userbar';
  922. var radios = document.getElementsByName('userbar-bg');
  923. for(var i = 0; i < radios.length; i++){
  924. if(radios[i].checked){
  925. userbarbg = radios[i].value;
  926. break;
  927. }
  928. }
  929. var jsonString = 'json='+JSON.stringify(MembersArray[0])+'&type=userbar&userbarbg='+userbarbg+'&lang='+lang;
  930. var xmlhttp;
  931. try{
  932. xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
  933. }catch(e){
  934. try{
  935. xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
  936. }catch(E){
  937. xmlhttp = false;
  938. }
  939. }
  940. if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
  941. xmlhttp = new XMLHttpRequest();
  942. }
  943. xmlhttp.open('POST', ''+WoWsStatInfoHref+'userbar.php?random='+Math.floor(Math.random()*100000001), true);
  944. xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  945. xmlhttp.onreadystatechange = function(){
  946. if(xmlhttp.readyState == 4){
  947. if(xmlhttp.status == 200){
  948. var userbar_img = document.getElementById('userbar-img');
  949. userbar_img.src = xmlhttp.responseText+'?'+Math.floor(Math.random()*100000001);
  950. var userbar_link = document.getElementById('userbar-link');
  951. userbar_link.textContent = '[img]'+xmlhttp.responseText+'[/img]';
  952. }
  953. }
  954. };
  955. xmlhttp.send(jsonString);
  956. }
  957. function doneUserBarBG(url, response){
  958. var html = '';
  959. var data = response;
  960. var check = true;
  961. html += '<div style="width: 488px; height: 429px; overflow-y: scroll;">';
  962. for(var i = 0; i < data.length; i++){
  963. var imgbgview = false;
  964. var img = data[i].split('_');
  965. if(img.length > 1){
  966. for(var i_id = 1; i_id < img.length; i_id++){
  967. if(MembersArray[0]['clans'] == null){break;}
  968. if(img[i_id] == MembersArray[0]['clans']['clan']['clan_id']){
  969. imgbgview = true;
  970. }
  971. }
  972. }else{
  973. imgbgview = true;
  974. }
  975. if(imgbgview){
  976. var checked = ''; if(check){checked = 'checked="checked"'; check = false;}
  977. html += '<input type="radio" name="userbar-bg" value="'+data[i]+'" '+checked+'> '+data[i]+'<br />';
  978. html += '<img src="'+WoWsStatInfoHref+'bg/'+data[i]+'.png" title="'+data[i]+'"/><br /><br />';
  979. }
  980. }
  981. html += '</div>';
  982. onShowMessage(
  983. localization['userbar-bg'],
  984. html,
  985. function(){GeneratorUserBar(); onCloseMessage();},
  986. localization['Ok'],
  987. true
  988. );
  989. }
  990. function errorUserBarBG(url){
  991. var html = '' +
  992. '<div style="width: 488px;">' +
  993. '<input type="radio" name="userbar-bg" value="userbar" checked="checked"> userbar<br />' +
  994. '<img src="'+WoWsStatInfoHref+'bg/userbar.png" title="userbar"/><br /><br />' +
  995. '</div>' +
  996. '';
  997. onShowMessage(
  998. localization['userbar-bg'],
  999. html,
  1000. function(){GeneratorUserBar(); onCloseMessage();},
  1001. localization['Ok'],
  1002. true
  1003. );
  1004. }
  1005. /* ===== ClanPage function ===== */
  1006. function getClanMembersList(){
  1007. var table = document.getElementsByClassName("rating-table__players")[0];
  1008. if(table.rows.length <= 1){
  1009. setTimeout(function(){getClanMembersList();}, 1000);
  1010. return;
  1011. }
  1012. for(var i = 1; i < table.rows.length; i++){
  1013. var row = table.rows[i];
  1014. var index = MembersArray.length;
  1015. MembersArray[index] = [];
  1016. var account_id = row.getAttribute('data-account_id');
  1017. MembersArray[index]['account_id'] = account_id;
  1018. var player_name = row.getElementsByClassName("player_name")[0];
  1019. var account_name = player_name.innerHTML.trim();
  1020. MembersArray[index]['account_name'] = account_name;
  1021. var image = row.getElementsByClassName('svg-icon')[1];
  1022. var srcArr = image.getAttribute('src').split("/");
  1023. MembersArray[index]['role'] = srcArr[srcArr.length - 1].split(".")[0];
  1024. MembersArray[index]['role_i18n'] = getRoleText(srcArr[srcArr.length - 1].split(".")[0]);
  1025. MembersArray[index]['role_sort_num'] = getRoleSortNum(srcArr[srcArr.length - 1].split(".")[0]);
  1026. var colNum = (row.cells.length - 2) - 1;
  1027. var clan_days = row.cells[colNum].innerHTML.trim();
  1028. MembersArray[index]['clan_days'] = clan_days;
  1029. }
  1030. if(MembersArray.length > 0){
  1031. viewClanMemberHistory();
  1032. }
  1033. }
  1034. function viewClanMemberHistory(){
  1035. var oldClanMemberSave = getLocalStorage('ClanMemberSave', true);
  1036. var oldClanChangeSave = getLocalStorage('ClanChangeSave', true);
  1037. if(oldClanChangeSave == null){oldClanChangeSave = '';}
  1038. var stringJSON = '';
  1039. for(var i = 0; i < MembersArray.length; i++){
  1040. stringJSON += '"'+MembersArray[i]['account_id']+'":{"account_id":'+MembersArray[i]['account_id']+',"account_name":"'+MembersArray[i]['account_name']+'","role":"'+MembersArray[i]['role']+'"},';
  1041. }
  1042. stringJSON = stringJSON.substring(stringJSON.length - 1, 0);
  1043. var newClanMemberSave = '{"members": {'+stringJSON+'}}';
  1044. var newClanChangeSave = '';
  1045. if(oldClanMemberSave != null){
  1046. var oldClanMemberArr = jQ.parseJSON(oldClanMemberSave);
  1047. var newClanMemberArr = jQ.parseJSON(newClanMemberSave);
  1048. for(id in oldClanMemberArr['members']){
  1049. if(newClanMemberArr['members'][id] === undefined){
  1050. oldClanChangeSave += '1:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':null:null;';
  1051. }else{
  1052. if(newClanMemberArr['members'][id]['role'] != oldClanMemberArr['members'][id]['role']){
  1053. oldClanChangeSave += '3:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':'+oldClanMemberArr['members'][id]['role']+':'+newClanMemberArr['members'][id]['role']+';';
  1054. }
  1055. if(newClanMemberArr['members'][id]['account_name'] != oldClanMemberArr['members'][id]['account_name']){
  1056. oldClanChangeSave += '4:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':'+oldClanMemberArr['members'][id]['account_name']+':'+newClanMemberArr['members'][id]['account_name']+';';
  1057. }
  1058. }
  1059. }
  1060. for(id in newClanMemberArr['members']){
  1061. if(oldClanMemberArr['members'][id] === undefined){
  1062. oldClanChangeSave += '2:'+newClanMemberArr['members'][id]['account_id']+':'+newClanMemberArr['members'][id]['account_name']+':null:null;';
  1063. if(newClanMemberArr['members'][id]['role'] != 'recruit'){
  1064. oldClanChangeSave += '3:'+newClanMemberArr['members'][id]['account_id']+':'+newClanMemberArr['members'][id]['account_name']+':recruit:'+newClanMemberArr['members'][id]['role']+';';
  1065. }
  1066. }
  1067. }
  1068. }
  1069. 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>';
  1070. var clan_member_history = document.getElementsByClassName("clan-member-history")[0];
  1071. if(oldClanChangeSave != ''){
  1072. var arrOldChangeClan = oldClanChangeSave.split(';');
  1073. if(arrOldChangeClan.length > 50){
  1074. var deleteCountLine = arrOldChangeClan.length - 50;
  1075. for(var i = 0; i < deleteCountLine; i++){
  1076. arrOldChangeClan.splice(0, 1);
  1077. }
  1078. for(var i = 0; i < arrOldChangeClan.length; i++){
  1079. if(arrOldChangeClan[i] == ''){continue;}
  1080. newClanChangeSave += arrOldChangeClan[i]+';';
  1081. }
  1082. }else{
  1083. newClanChangeSave = oldClanChangeSave;
  1084. }
  1085. var arrNewChangeClan = newClanChangeSave.split(';');
  1086. for(var i = (arrNewChangeClan.length - 1); i >= 0; i--){
  1087. var arrChange = arrNewChangeClan[i].split(':');
  1088. var type = arrChange[0];
  1089. var mId = arrChange[1];
  1090. var mName = arrChange[2];
  1091. var mOld = arrChange[3];
  1092. var mNew = arrChange[4];
  1093. if(type == '1'){
  1094. var text = localization['member-history-leave'];
  1095. text = text.replace('%NAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');
  1096. html += '<tr>'+
  1097. '<td class="table-default_cell" align="left" style="padding: 0px;">'+
  1098. ' <font color="red">'+text+'</font>'+
  1099. '</td>'+
  1100. '</tr>';
  1101. }else if(type == '2'){
  1102. var text = localization['member-history-join'];
  1103. text = text.replace('%NAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');
  1104. html += '<tr>'+
  1105. '<td class="table-default_cell" align="left" style="padding: 0px;">'+
  1106. ' <font color="green">'+text+'</font>'+
  1107. '</td>'+
  1108. '</tr>';
  1109. }else if(type == '3'){
  1110. var text = localization['member-history-rerole'];
  1111. text = text.replace('%NAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');
  1112. text = text.replace('%OLDROLE%',getRoleText(mOld));
  1113. text = text.replace('%NEWROLE%',getRoleText(mNew));
  1114. html += '<tr>'+
  1115. '<td class="table-default_cell" align="left" style="padding: 0px;">'+
  1116. text+
  1117. '</td>'+
  1118. '</tr>';
  1119. }else if(type == '4'){
  1120. var text = localization['member-history-rename'];
  1121. text = text.replace('%OLDNAME%',mOld);
  1122. text = text.replace('%NEWNAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mNew+'</a>');
  1123. html += '<tr>'+
  1124. '<td class="table-default_cell" align="left" style="padding: 0px;">'+
  1125. text+
  1126. '</td>'+
  1127. '</tr>';
  1128. }
  1129. }
  1130. }else{
  1131. html += '' +
  1132. '<tr>' +
  1133. '<td class="table-default_cell" style="padding: 0px;">' +
  1134. localization['member-history-notchange'] +
  1135. '</td>' +
  1136. '</tr>' +
  1137. '';
  1138. }
  1139. html += '</tbody></table></div>';
  1140. html += '' +
  1141. '<div align="right" style="border-top: 1px solid rgba(255, 255, 255, 0.1);">' +
  1142. '<br />' +
  1143. '<button id="run-history-clear" class="button" style="display: block;">' +
  1144. '<span class="button_wrapper">' +
  1145. '<span style="padding: 5px;" class="button_body">' +
  1146. '<span class="button_inner">'+localization['member-history-clear']+'</span>' +
  1147. '</span>' +
  1148. '</span>' +
  1149. '</button>' +
  1150. '</div>' +
  1151. '';
  1152. clan_member_history.innerHTML = html;
  1153. jQ('#run-history-clear').click(function(){
  1154. setLocalStorage('ClanChangeSave', '', true);
  1155. viewClanMemberHistory();
  1156. });
  1157. setLocalStorage('ClanMemberSave', newClanMemberSave, true);
  1158. setLocalStorage('ClanChangeSave', newClanChangeSave, true);
  1159. }
  1160. /* ===== UserScript function ===== */
  1161. function calcWR(Stat){
  1162. var rDamage = Stat['damage'] / Stat['expDamage']; if(isNaN(rDamage)){rDamage = 0;}
  1163. var rFragsShips = Stat['frags_ships'] / Stat['expFragsShips']; if(isNaN(rFragsShips)){rFragsShips = 0;}
  1164. var rFragsPlanes = Stat['frags_planes'] / Stat['expFragsPlanes']; if(isNaN(rFragsPlanes)){rFragsPlanes = 0;}
  1165. var rCapture = Stat['capture_base'] / Stat['expCapture']; if(isNaN(rCapture)){rCapture = 0;}
  1166. var rDefend = Stat['defend_base'] / Stat['expDefend']; if(isNaN(rDefend)){rDefend = 0;}
  1167. var rDamagec = Math.max(0, (rDamage - 0.25) / (1 - 0.25));
  1168. var rFragsShipsc = Math.max(0, Math.min(rDamagec + 0.2, (rFragsShips - 0.12) / (1 - 0.12)));
  1169. var rFragsPlanesc = Math.max(0, Math.min(rDamagec + 0.1, (rFragsPlanes - 0.15) / (1 - 0.15)));
  1170. var rCapturec = Math.max(0, Math.min(rDamagec + 0.1, (rCapture - 0.10) / (1 - 0.10)));
  1171. var rDefendc = Math.max(0, Math.min(rDamagec + 0.1, (rDefend - 0.10) / (1 - 0.10)));
  1172. var wr = 650 * rDamagec + 150 * rFragsShipsc * rDamagec + 50 * rFragsShipsc * rCapturec + 50 * rFragsShipsc * rDefendc + 80 * rFragsPlanesc;
  1173. if(isNaN(wr)){wr = 0;}
  1174. return wr;
  1175. }
  1176. function findColorASC(value, stat_type){
  1177. if(isNaN(value) || parseFloat(value) <= parseFloat(colorStat[stat_type][0])){
  1178. return color['very_bad'];
  1179. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][1])){
  1180. return color['bad'];
  1181. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][2])){
  1182. return color['normal'];
  1183. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][3])){
  1184. return color['good'];
  1185. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][4])){
  1186. return color['very_good'];
  1187. }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][5])){
  1188. return color['unique'];
  1189. }else{
  1190. return color['very_bad'];
  1191. }
  1192. }
  1193. function findColorDESC(value, stat_type){
  1194. var return_color = color['very_bad'];
  1195. if(isNaN(value)){
  1196. return_color = color['very_bad'];
  1197. }
  1198. if(parseFloat(value) <= parseFloat(colorStat[stat_type][0])){
  1199. return_color = color['very_bad'];
  1200. }
  1201. if(parseFloat(value) <= parseFloat(colorStat[stat_type][1])){
  1202. return_color = color['bad'];
  1203. }
  1204. if(parseFloat(value) <= parseFloat(colorStat[stat_type][2])){
  1205. return_color = color['normal'];
  1206. }
  1207. if(parseFloat(value) <= parseFloat(colorStat[stat_type][3])){
  1208. return_color = color['good'];
  1209. }
  1210. if(parseFloat(value) <= parseFloat(colorStat[stat_type][4])){
  1211. return_color = color['very_good'];
  1212. }
  1213. if(parseFloat(value) <= parseFloat(colorStat[stat_type][5])){
  1214. return_color = color['unique'];
  1215. }
  1216. return return_color;
  1217. }
  1218. function valueFormat(value){
  1219. var newValue = '';
  1220. var valueSplit = value.split('.');
  1221. var numChar = 0;
  1222. for(var i = valueSplit[0].length; i > 0; i--){
  1223. if(numChar < 3){
  1224. newValue = valueSplit[0].substr(i - 1, 1)+''+newValue;
  1225. numChar++;
  1226. }else{
  1227. newValue = valueSplit[0].substr(i - 1, 1)+''+localization['num-separator']+''+newValue;
  1228. numChar = 1;
  1229. }
  1230. }
  1231. if(valueSplit.length > 1){newValue += localization['num-fractional']+''+valueSplit[1];}
  1232. return newValue;
  1233. }
  1234. function htmlParseMemberStatistic(element){
  1235. var value = element.textContent.trim().replace(new RegExp(' ', 'g'), '');
  1236. value = value.replace(/[^0-9,.()% ]/g, "");
  1237. value = value.replace('%', '');
  1238. value = value.split(localization['num-separator']).join('');
  1239. value = value.replace(localization['num-fractional'], '.');
  1240. if(value.indexOf('(') > -1 && value.indexOf(')') > -1){
  1241. value = (value.split('('))[0];
  1242. }
  1243. return value;
  1244. }
  1245. function getJson(url, onDone, onError){
  1246. if(MaxProcess > Process){
  1247. Process++;
  1248. jQ.getJSON(url).done(function(result){
  1249. Process--;
  1250. onDone(url, result);
  1251. }).fail(function(jqxhr, textStatus, error){
  1252. Process--;
  1253. onError(url);
  1254. });
  1255. }else{
  1256. setTimeout(function(){getJson(url, onDone, onError);}, 1000);
  1257. }
  1258. }
  1259. function getApplicationId(realm){
  1260. var applicationId = [];
  1261. applicationId['ru'] = '7149a13b5f5fb7109c5b2400d31b7d42'; // .ru
  1262. applicationId['eu'] = '953df86f6bca01a7af80c3bdedd9c1d9'; // .eu
  1263. return applicationId[realm].split("").reverse().join("");
  1264. }
  1265. function getUrlVars(url){
  1266. var vars = {};
  1267. var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value){
  1268. vars[key] = value;
  1269. });
  1270. return vars;
  1271. }
  1272. function dateDiffInDays(a, b){
  1273. var date1 = new Date(a);
  1274. var date2 = new Date(b);
  1275. if(b == null){
  1276. date2 = new Date();
  1277. }
  1278. var timeDiff = date2.getTime() - date1.getTime();
  1279. var diffDays = timeDiff / (1000 * 3600 * 24);
  1280. if(diffDays < 0){diffDays = 0;}
  1281. return (diffDays).toFixed(0);
  1282. }
  1283. function getUserScriptDeveloperBlock(){
  1284. var html = '' +
  1285. '<div class="div-link-block">' +
  1286. '<span id="userscriptwowsstatinfo" class="link-block hide-block">' +
  1287. 'UserScript WoWsStatInfo ' + VersionWoWsStatInfo +
  1288. '<div class="icon-link-block"></div>'+
  1289. '</span>' +
  1290. '</div>' +
  1291. '<div id="userscript-block" class="userscriptwowsstatinfo hide-block" style="text-align: center;">' +
  1292. '<span class="userscript-developer" align="center">' +
  1293. localization['userscript-developer'] +
  1294. ' <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> ' +
  1295. localization['userscript-alliance'] +
  1296. ' <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>.' +
  1297. '<br /><br />' +
  1298. localization['userscript-topic']+' '+
  1299. '<a target="_blank" href="'+WoWsStatInfoLink+'">' +
  1300. WoWsStatInfoLinkName +
  1301. '</a>' +
  1302. '<br /><br />' +
  1303. '<font style="font-size: 16px; color: #658C4C;">'+localization['userscript-developer-support']+'</font><br />'+
  1304. '<font style="color: #2CA8C7;">Web-Money WMR</font> R295712009837 <br />'+
  1305. '<font style="color: #2CA8C7;">Web-Money WMZ</font> Z226959724402 <br />'+
  1306. '<font style="color: #2CA8C7;">Yandex Money</font> 41001290117791 <br />'+
  1307. '<font style="color: #2CA8C7;">RBK Money</font> RU353257918 <br />'+
  1308. '</span>' +
  1309. '</div>' +
  1310. '';
  1311. return html;
  1312. }
  1313. function onViewBlock(element){
  1314. if(null != element.getAttribute('id')){
  1315. var viewId = element.getAttribute('id');
  1316. var viewClassLink = element.getAttribute('class');
  1317. var viewBlock = document.getElementsByClassName(viewId)[0];
  1318. if(viewClassLink == 'link-block hide-block'){
  1319. element.setAttribute('class', 'link-block show-block');
  1320. viewBlock.setAttribute('class', viewBlock.getAttribute('class').replace('hide-block', 'show-block'));
  1321. setLocalStorage(viewId, 'show', false);
  1322. }else{
  1323. element.setAttribute('class', 'link-block hide-block');
  1324. viewBlock.setAttribute('class', viewBlock.getAttribute('class').replace('show-block', 'hide-block'));
  1325. setLocalStorage(viewId, 'hide', false);
  1326. }
  1327. }
  1328. }
  1329. function checkLocalStorage(){
  1330. try{
  1331. return 'localStorage' in window && window['localStorage'] !== null;
  1332. }catch (e){
  1333. return false;
  1334. }
  1335. }
  1336. function setLocalStorage(key, value, allPageHost){
  1337. if(checkLocalStorage()){
  1338. if(allPageHost){key = key+ClanId;}
  1339. window.localStorage.setItem(key, value);
  1340. }else{
  1341. setCookie(key, value, allPageHost);
  1342. }
  1343. }
  1344. function getLocalStorage(key, allPageHost){
  1345. var value = null;
  1346. if(checkLocalStorage()){
  1347. if(allPageHost){key = key+ClanId;}
  1348. value = window.localStorage.getItem(key);
  1349. }else{
  1350. value = getCookie(key);
  1351. }
  1352. return value;
  1353. }
  1354. function setCookie(c_name, value, allPageHost){
  1355. var exdate = new Date();
  1356. exdate.setDate(exdate.getDate() + 365);
  1357. if(allPageHost){
  1358. var c_value = escape(value) + ((365 == null) ? "" : "; expires="+exdate.toUTCString()+"; domain=" +window.location.hostname+"; path=/");
  1359. document.cookie = c_name + "=" + c_value;
  1360. }else{
  1361. var c_value = escape(value) + ((365 == null) ? "" : "; expires="+exdate.toUTCString());
  1362. document.cookie = c_name + "=" + c_value;
  1363. }
  1364. }
  1365. function getCookie(c_name){
  1366. var c_value = document.cookie;
  1367. var c_start = c_value.indexOf(" " + c_name + "=");
  1368. if(c_start == -1){
  1369. c_start = c_value.indexOf(c_name + "=");
  1370. }
  1371. if(c_start == -1){
  1372. c_value = null;
  1373. }else{
  1374. c_start = c_value.indexOf("=", c_start) + 1;
  1375. var c_end = c_value.indexOf(";", c_start);
  1376. if(c_end == -1){
  1377. c_end = c_value.length;
  1378. }
  1379. c_value = unescape(c_value.substring(c_start,c_end));
  1380. }
  1381. return c_value;
  1382. }
  1383. function onShowMessage(title, content, funcOk, OkText, viewCancel){
  1384. var ui_dialog_title = message.getElementsByClassName("ui-dialog-title")[0];
  1385. ui_dialog_title.innerHTML = title;
  1386. var popup = message.getElementsByClassName("popup")[0];
  1387. popup.innerHTML = content;
  1388. var button_inner = message.getElementsByClassName("button_inner")[0];
  1389. button_inner.innerHTML = OkText;
  1390. var link__cancel = message.getElementsByClassName("link__cancel")[0];
  1391. if(viewCancel){
  1392. link__cancel.style.display = 'inline';
  1393. }else{
  1394. link__cancel.style.display = 'none';
  1395. }
  1396. message.style.display = 'block';
  1397. messagebg.style.display = 'block';
  1398. message.style.marginLeft = '-'+(message.offsetWidth / 2)+'px';
  1399. //message.style.top = (window.scrollY + ((document.body.offsetHeight / 2) - (message.offsetHeight / 2)))+'px';
  1400. message.style.top = (window.scrollY + 50)+'px';
  1401. jQ('#userscript-message-ok').unbind('click');
  1402. jQ('#userscript-message-ok').click(funcOk);
  1403. jQ('#userscript-message-close').unbind('click');
  1404. jQ('#userscript-message-close').click(function(){onCloseMessage();});
  1405. jQ('#userscript-message-cancel').unbind('click');
  1406. jQ('#userscript-message-cancel').click(function(){onCloseMessage();});
  1407. }
  1408. function onCloseMessage(){
  1409. message.style.display = 'none';
  1410. messagebg.style.display = 'none';
  1411. }
  1412. function getLevelNumer(text){
  1413. if('I' == text){
  1414. return 1;
  1415. }else if('II' == text){
  1416. return 2;
  1417. }else if('III' == text){
  1418. return 3;
  1419. }else if('IV' == text){
  1420. return 4;
  1421. }else if('V' == text){
  1422. return 5;
  1423. }else if('VI' == text){
  1424. return 6;
  1425. }else if('VII' == text){
  1426. return 7;
  1427. }else if('VIII' == text){
  1428. return 8;
  1429. }else if('IX' == text){
  1430. return 9;
  1431. }else if('X' == text){
  1432. return 10;
  1433. }
  1434. return 0;
  1435. }
  1436. // Modify JSON.stringify to allow recursive and single-level arrays
  1437. (function(){
  1438. // Convert array to object
  1439. var convArrToObj = function(array){
  1440. var thisEleObj = new Object();
  1441. if(typeof array == "object"){
  1442. for(var i in array){
  1443. var thisEle = convArrToObj(array[i]);
  1444. thisEleObj[i] = thisEle;
  1445. }
  1446. }else {
  1447. thisEleObj = array;
  1448. }
  1449. return thisEleObj;
  1450. };
  1451. var oldJSONStringify = JSON.stringify;
  1452. JSON.stringify = function(input){
  1453. return oldJSONStringify(convArrToObj(input));
  1454. };
  1455. })();
  1456. function getRoleText(role){
  1457. var roleText = role;
  1458. if(localization[role] !== undefined){roleText = localization[role];}
  1459. return roleText;
  1460. }
  1461. function getRoleSortNum(role){
  1462. if (role == 'commander') return 0;
  1463. else if (role == 'executive_officer') return 1;
  1464. else if (role == 'personnel_officer') return 2;
  1465. else if (role == 'combat_officer') return 3;
  1466. else if (role == 'intelligence_officer') return 4;
  1467. else if (role == 'quartermaster') return 5;
  1468. else if (role == 'recruitment_officer') return 6;
  1469. else if (role == 'junior_officer') return 7;
  1470. else if (role == 'private') return 8;
  1471. else if (role == 'recruit') return 9;
  1472. else if (role == 'reservist') return 10;
  1473. else return 11;
  1474. }
  1475. function getLocalization(lang){
  1476. var localization = [];
  1477. {/* Русский */
  1478. localization['ru'] = [];
  1479. localization['ru']['realm'] = 'ru';
  1480. localization['ru']['num-separator'] = ' ';
  1481. localization['ru']['num-fractional'] = ',';
  1482. localization['ru']['Box'] = 'Оповещение';
  1483. localization['ru']['Ok'] = 'Ok';
  1484. localization['ru']['Cancel'] = 'Отмена';
  1485. localization['ru']['NewVersion'] = 'Вышла новая версия скрипта';
  1486. localization['ru']['NewUpdate'] = 'Пожалуйста, обновите скрипт';
  1487. localization['ru']['ErrorScript'] = 'Во время работы UserScript WoWsStatInfo '+VersionWoWsStatInfo+', возникла ошибка:';
  1488. localization['ru']['ErrorSendDeveloper'] = 'Сообщите об ошибке разработчику скрипта.';
  1489. localization['ru']['userscript-developer'] = 'Разработчик UserScript WoWsStatInfo:';
  1490. localization['ru']['userscript-alliance'] = 'член альянса';
  1491. localization['ru']['userscript-topic'] = 'Тема на форуме:';
  1492. localization['ru']['userscript-developer-support'] = 'Поддержать автора скрипта:';
  1493. localization['ru']['search-clan-forum'] = 'Поиск клана...';
  1494. localization['ru']['profile-wows'] = 'Профиль в World of Warships';
  1495. localization['ru']['profile-clan'] = 'Клан';
  1496. localization['ru']['forum-profile'] = 'Профиль на форуме';
  1497. localization['ru']['role'] = 'Должность';
  1498. localization['ru']['clan-day'] = 'Количество дней в клане';
  1499. localization['ru']['generator-userbar'] = 'Создать UserBar';
  1500. localization['ru']['userbar-bg'] = 'Выберите фон:';
  1501. localization['ru']['additional-results'] = 'Дополнительные результаты';
  1502. localization['ru']['number-ships-x'] = 'Количество кораблей 10 уровня';
  1503. localization['ru']['wr'] = 'WR';
  1504. localization['ru']['block-link-clan-member-history'] = 'Блок "Изменений в составе клана"';
  1505. localization['ru']['link-clan-member-history'] = 'Изменения в составе клана';
  1506. localization['ru']['member-history-clear'] = 'Очистить историю';
  1507. localization['ru']['member-history-join'] = 'Вступил в клан %NAME%';
  1508. localization['ru']['member-history-leave'] = 'Покинул клан %NAME%';
  1509. localization['ru']['member-history-rename'] = '%OLDNAME% сменил ник на %NEWNAME%';
  1510. localization['ru']['member-history-rerole'] = '%NAME% сменил должность %OLDROLE% &rArr; %NEWROLE%';
  1511. localization['ru']['member-history-notchange'] = 'С момента установки скрипта WoWsStatInfo и последнего захода на страницу, изменений в составе клана не производились.';
  1512. localization['ru']['banned'] = 'Забанен';
  1513. localization['ru']['commander'] = 'Командующий';
  1514. localization['ru']['executive_officer'] = 'Заместитель командующего';
  1515. localization['ru']['personnel_officer'] = 'Офицер штаба';
  1516. localization['ru']['intelligence_officer'] = 'Офицер разведки';
  1517. localization['ru']['quartermaster'] = 'Офицер снабжения';
  1518. localization['ru']['recruitment_officer'] = 'Офицер по кадрам';
  1519. localization['ru']['junior_officer'] = 'Младший офицер';
  1520. localization['ru']['combat_officer'] = 'Командир подразделения';
  1521. localization['ru']['private'] = 'Боец';
  1522. localization['ru']['recruit'] = 'Новобранец';
  1523. localization['ru']['reservist'] = 'Резервист';
  1524. }
  1525. {/* English */
  1526. localization['en'] = [];
  1527. localization['en']['realm'] = 'eu';
  1528. localization['en']['num-separator'] = ',';
  1529. localization['en']['num-fractional'] = '.';
  1530.  
  1531. localization['en']['Box'] = 'Notification';
  1532. localization['en']['Ok'] = 'Ok';
  1533. localization['en']['Cancel'] = 'Cancel';
  1534. localization['en']['NewVersion'] = 'New version was released';
  1535. localization['en']['NewUpdate'] = 'Please, update the extension';
  1536. localization['en']['ErrorScript'] = 'An error occurred while running UserScript WoWsStatInfo '+VersionWoWsStatInfo+', script:';
  1537. localization['en']['ErrorSendDeveloper'] = 'Please, inform script developer about this error.';
  1538. localization['en']['userscript-developer'] = 'Developer - UserScript WoWsStatInfo:';
  1539. localization['en']['userscript-alliance'] = 'аlliance member';
  1540. localization['en']['userscript-topic'] = 'Forum topic:';
  1541. localization['en']['userscript-developer-support'] = 'Ways to support the developer:';
  1542. localization['en']['search-clan-forum'] = 'Clan Search...';
  1543. localization['en']['profile-wows'] = 'World of Warships profile';
  1544. localization['en']['profile-clan'] = 'Clan';
  1545. localization['en']['forum-profile'] = 'Forum profile';
  1546. localization['en']['role'] = 'Alliance rank';
  1547. localization['en']['clan-day'] = 'Days in clan';
  1548. localization['en']['generator-userbar'] = 'Create UserBar';
  1549. localization['en']['userbar-bg'] = 'Choose a background:';
  1550. localization['en']['additional-results'] = 'Additional Results';
  1551. localization['en']['number-ships-x'] = 'Number of X Tier ships';
  1552. localization['en']['wr'] = 'WR';
  1553. localization['en']['block-link-clan-member-history'] = '"Changes in clan members" section';
  1554. localization['en']['link-clan-member-history'] = 'Changes in clan members';
  1555. localization['en']['member-history-clear'] = 'Clear history';
  1556. localization['en']['member-history-join'] = 'Entered %NAME% clan';
  1557. localization['en']['member-history-leave'] = 'Left %NAME% clan';
  1558. localization['en']['member-history-rename'] = '%OLDNAME% has changed his nickname to %NEWNAME%';
  1559. localization['en']['member-history-rerole'] = '%NAME% has changed his position in clan rank: %OLDROLE% &rArr; %NEWROLE%';
  1560. localization['en']['member-history-notchange'] = 'Since installing WoWsStatInfo script and last entering on this page no changes in clan members were made.';
  1561. localization['en']['banned'] = 'Banned';
  1562. localization['en']['commander'] = 'Commander';
  1563. localization['en']['executive_officer'] = 'Executive Officer';
  1564. localization['en']['personnel_officer'] = 'Personnel Officer';
  1565. localization['en']['intelligence_officer'] = 'Intelligence Officer';
  1566. localization['en']['quartermaster'] = 'Quartermaster';
  1567. localization['en']['recruitment_officer'] = 'Recruitment Officer';
  1568. localization['en']['junior_officer'] = 'Junior Officer';
  1569. localization['en']['combat_officer'] = 'Combat Officer';
  1570. localization['en']['private'] = 'Private';
  1571. localization['en']['recruit'] = 'Recruit';
  1572. localization['en']['reservist'] = 'Reservist';
  1573. }
  1574. {/* Français */
  1575. localization['fr'] = [];
  1576. localization['fr'] = jQ.extend([], localization['en']);
  1577. localization['fr']['num-separator'] = ' ';
  1578. localization['fr']['num-fractional'] = ',';
  1579. }
  1580. {/* Deutsch */
  1581. localization['de'] = [];
  1582. localization['de'] = jQ.extend([], localization['en']);
  1583. localization['de']['num-separator'] = '.';
  1584. localization['de']['num-fractional'] = ',';
  1585. }
  1586. {/* Türkçe */
  1587. localization['tr'] = [];
  1588. localization['tr'] = jQ.extend([], localization['en']);
  1589. localization['tr']['num-separator'] = '.';
  1590. localization['tr']['num-fractional'] = ',';
  1591. }
  1592. {/* Español */
  1593. localization['es'] = [];
  1594. localization['es'] = jQ.extend([], localization['en']);
  1595. localization['es']['num-separator'] = '.';
  1596. localization['es']['num-fractional'] = ',';
  1597. }
  1598. {/* Čeština */
  1599. localization['cs'] = [];
  1600. localization['cs'] = jQ.extend([], localization['en']);
  1601. localization['cs']['num-separator'] = ' ';
  1602. localization['cs']['num-fractional'] = ',';
  1603. }
  1604. {/* Polski */
  1605. localization['pl'] = [];
  1606. localization['pl'] = jQ.extend([], localization['en']);
  1607. localization['pl']['num-separator'] = ' ';
  1608. localization['pl']['num-fractional'] = ',';
  1609. }
  1610. return localization[lang];
  1611. }
  1612. }
  1613. /* ===== Load UserScript ===== */
  1614. function addJQuery(callback){
  1615. var script = document.createElement("script");
  1616. script.async = true;
  1617. script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js");
  1618. script.addEventListener(
  1619. 'load',
  1620. function(){
  1621. var script = document.createElement("script");
  1622. script.async = true;
  1623. script.textContent = "window.jQ = jQuery.noConflict(true);"+
  1624. "("+callback.toString()+")();";
  1625. document.head.appendChild(script);
  1626. },
  1627. false
  1628. );
  1629. document.head.appendChild(script);
  1630. }
  1631. if(window.location.host.indexOf("worldofwarships") > -1 || window.location.host.indexOf(".wargaming.net") > -1){
  1632. addJQuery(WoWsStatInfo);
  1633. }
  1634. })(window);