// ==UserScript== // @name WoWsStatInfo // @author Vov_chiK // @description Расширенная статистика и функционал на сайте World of Warships. // @copyright 2015+, Vov_chiK // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html // @namespace http://forum.walkure.pro/ // @version 0.4.0.12 // @creator Vov_chiK // @include http://worldofwarships.ru/ru/community/accounts/* // @include http://worldofwarships.eu/*/community/accounts/* // @include http://forum.worldofwarships.ru/index.php?/topic/* // @include http://forum.worldofwarships.ru/index.php?/user/* // @include http://forum.worldofwarships.eu/index.php?/topic/* // @include http://forum.worldofwarships.eu/index.php?/user/* // @include http://ru.wargaming.net/clans/*/players* // @include http://eu.wargaming.net/clans/*/players* // @match http://worldofwarships.ru/ru/community/accounts/* // @match http://worldofwarships.eu/*/community/accounts/* // @match http://forum.worldofwarships.ru/index.php?/topic/* // @match http://forum.worldofwarships.ru/index.php?/user/* // @match http://forum.worldofwarships.eu/index.php?/topic/* // @match http://forum.worldofwarships.eu/index.php?/user/* // @match http://ru.wargaming.net/clans/*/players* // @match http://eu.wargaming.net/clans/*/players* // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== (function(window){ /* ===== Main function ===== */ function WoWsStatInfo(){ var VersionWoWsStatInfo = '0.4.0.12'; var WoWsStatInfoLinkLoc = []; WoWsStatInfoLinkLoc['ru'] = 'http://forum.worldofwarships.ru/index.php?/topic/19158-'; WoWsStatInfoLinkLoc['eu'] = 'http://forum.worldofwarships.eu/index.php?/topic/14650-'; var WoWsStatInfoLinkNameLoc = []; WoWsStatInfoLinkNameLoc['ru'] = '['+VersionWoWsStatInfo.substring(0, 5)+'] [WoWsStatInfo] Расширенная статистика на оф. сайте.'; WoWsStatInfoLinkNameLoc['eu'] = '['+VersionWoWsStatInfo.substring(0, 5)+'] [WoWsStatInfo] Extended stat-info for official WoWS profile.'; var lang = 'ru'; if(window.location.host.indexOf(".wargaming.net") > -1){ lang = getCookie('wgccfe_language'); }else if(window.location.host.indexOf("worldofwarships") > -1){ lang = getCookie('hllang'); } var localization = getLocalization(lang); var realm = localization['realm']; var application_id = getApplicationId(realm); var WoWsStatInfoLink = WoWsStatInfoLinkLoc[realm]; var WoWsStatInfoLinkName = WoWsStatInfoLinkNameLoc[realm]; var WGAPI = 'http://api.worldoftanks.'+realm+'/'; var WoWsStatInfoHref = 'http://vzhabin.ru/US_WoWsStatInfo/'; var Process = 0; var MaxProcess = 3; var MembersArray = []; var typeStat = ["pvp", "pve"]; var color = new Array(); color['very_bad'] = '#FE0E00'; // очень плохо, хуже чем у 85% color['bad'] = '#FE7903'; // плохо, хуже чем у 50% color['normal'] = '#F8F400'; // средне, лучше чем у 50% color['good'] = '#60FF00'; // хорошо, лучше чем у 75% color['very_good'] = '#02C9B3'; // очень хорошо, лучше чем у 95% color['unique'] = '#D042F3'; // уникально, лучше чем у 99% 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]}'); 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}}'); /* ===== Style UserScript ===== */ { var StyleWoWsStatInfo = '' + 'div.div-link-block{font-size:13px; color: #fff; text-align: right; padding-top: 10px; padding-bottom: 10px;}' + 'span.link-block:hover{border-bottom: 1px dotted #fff; cursor: pointer;}' + '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%;}' + 'span.hide-block div.icon-link-block{background-position: 100% -26px;}' + 'span.show-block div.icon-link-block{background-position: 100% -16px;}' + '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;}' + 'div.hide-block{display: none;}' + 'div.wowsstatinfo-stat{text-align: center; margin-top: 10px; color: white; font-size: 16px;}' + 'span.name-stat{color: #ffcc33;}' + '' + ''; var StyleWoWsStatInfoAdd = document.createElement("style"); StyleWoWsStatInfoAdd.textContent = StyleWoWsStatInfo.toString(); document.head.appendChild(StyleWoWsStatInfoAdd); } /* ===== Message UserScript ===== */ if(window.location.host != 'forum.worldofwarships.'+realm){ var message = document.createElement("div"); message.setAttribute("id", "message-wowsstatinfo"); message.setAttribute("class", "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front"); message.setAttribute("style", "display: none; z-index:9999; left: 50%; margin-left: 0px; top: 0px;"); message.innerHTML = '' + '' + '
' + '{%TITLE%}' + '' + '
' + '
' + '' + '' + '
' + ''; document.body.appendChild(message); var messagebg = document.createElement("div"); messagebg.setAttribute("id", "userscript-message-bg"); 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%;"); document.body.appendChild(messagebg); } var navigatorInfo = getBrowser(); window.onerror = function(message, source, lineno, column, errorObj){ if(source == ''){source = window.location.href;} else if(source.indexOf(".js") != -1){return false;} if(message == 'Script error.' && errorObj == null){console.log('message == \'Script error.\' && errorObj == null'); return false;} lineno += 29; var agent = ''; var agentArr = navigator.userAgent.split(')'); for(var i = 0; i < agentArr.length; i++){ if(agent != ''){agent += ')\n';} agent += agentArr[i]; } var error = localization['ErrorScript']+"\n\n" + "Lang: "+lang+"\n"+ "Browser name: "+navigatorInfo['browserName']+"\n"+ "Full version: "+navigatorInfo['fullVersion']+"\n"+ "Major version: "+navigatorInfo['majorVersion']+"\n"+ "AppName: "+navigatorInfo['appName']+"\n"+ "UserAgent: "+agent+"\n\n"+ "Error: "+message+"\n"+ "URL: " +source+"\n"+ "Line: "+lineno+"\n"+ "Column: "+column+"\n"+ "StackTrace: "+errorObj+"\n\n"+ localization['ErrorSendDeveloper']; console.log(error); if(window.location.host == 'forum.worldofwarships.'+realm){ alert(error); }else{ error = error.split('\n').join('
'); onShowMessage( localization['Box'], error, onCloseMessage, localization['Ok'], false ); } return true; } function getBrowser(){ var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browserName = navigator.appName; var fullVersion = ''+parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion, 10); var nameOffset, verOffset, ix; // In Opera 15+, the true version is after "OPR/" if((verOffset = nAgt.indexOf("OPR/")) != -1){ browserName = "Opera"; fullVersion = nAgt.substring(verOffset + 4); } // In older Opera, the true version is after "Opera" or after "Version" else if((verOffset = nAgt.indexOf("Opera")) != -1){ browserName = "Opera"; fullVersion = nAgt.substring(verOffset + 6); if((verOffset = nAgt.indexOf("Version")) != -1) fullVersion = nAgt.substring(verOffset + 8); } // In MSIE, the true version is after "MSIE" in userAgent else if((verOffset = nAgt.indexOf("MSIE")) != -1){ browserName = "Microsoft Internet Explorer"; fullVersion = nAgt.substring(verOffset + 5); } // In Chrome, the true version is after "Chrome" else if((verOffset = nAgt.indexOf("Chrome")) != -1) { browserName = "Chrome"; fullVersion = nAgt.substring(verOffset + 7); } // In Safari, the true version is after "Safari" or after "Version" else if((verOffset = nAgt.indexOf("Safari")) != -1){ browserName = "Safari"; fullVersion = nAgt.substring(verOffset + 7); if((verOffset = nAgt.indexOf("Version")) != -1) fullVersion = nAgt.substring(verOffset + 8); } // In Firefox, the true version is after "Firefox" else if((verOffset = nAgt.indexOf("Firefox")) != -1){ browserName = "Firefox"; fullVersion = nAgt.substring(verOffset + 8); } // In most other browsers, "name/version" is at the end of userAgent else if((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))){ browserName = nAgt.substring(nameOffset, verOffset); fullVersion = nAgt.substring(verOffset + 1); if(browserName.toLowerCase() == browserName.toUpperCase()){ browserName = navigator.appName; } } // trim the fullVersion string at semicolon/space if present if((ix = fullVersion.indexOf(";")) != -1) fullVersion = fullVersion.substring(0, ix); if((ix = fullVersion.indexOf(" ")) != -1) fullVersion = fullVersion.substring(0, ix); majorVersion = parseInt(''+fullVersion, 10); if(isNaN(majorVersion)){ fullVersion = ''+parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion, 10); } var url = window.location.href; console.log('' +'----------------------- WoWsStatInfo '+VersionWoWsStatInfo+' -----------------------\n' +'| Lang = '+lang+'\n' +'| URL = '+url+'\n' +'| Browser name = '+browserName+'\n' +'| Full version = '+fullVersion+'\n' +'| Major version = '+majorVersion+'\n' +'| navigator.appName = '+navigator.appName+'\n' +'| navigator.userAgent = '+navigator.userAgent+'\n' +'---------------------------------------------------------------------\n' ); var navigatorInfo = []; navigatorInfo['browserName'] = browserName; navigatorInfo['fullVersion'] = fullVersion; navigatorInfo['majorVersion'] = majorVersion; navigatorInfo['appName'] = navigator.appName; navigatorInfo['userAgent'] = navigator.userAgent; return navigatorInfo; } /* ===== Check load page ===== */ if(window.location.href.indexOf("accounts") > -1 && window.location.href.split('/').length == 9 && window.location.href.split('/')[6].match(/[0-9]+/) != null){ lang = window.location.href.split('/')[3].match(/[a-z][a-z]/); localization = getLocalization(lang); getJson(WoWsStatInfoHref+'version.php?random='+Math.floor(Math.random()*100000001), doneLastVersion, errorLastVersion); var account_id = window.location.href.split('/')[6].match(/[0-9]+/); MemberProfilePage(); }else if(window.location.host == 'forum.worldofwarships.'+realm && window.location.href.indexOf("/user/") > -1){ ForumUserPage(); }else if(window.location.host == 'forum.worldofwarships.'+realm && window.location.href.indexOf("/topic/") > -1){ ForumTopicPage(); }else if(window.location.href.indexOf("clans") > -1 && window.location.href.split('/')[4].match(/[0-9]+/) != null && window.location.href.indexOf("players") > -1 && window.location.href.split('/').length >= 6 ){ getJson(WoWsStatInfoHref+'version.php?random='+Math.floor(Math.random()*100000001), doneLastVersion, errorLastVersion); var ClanId = window.location.href.split('/')[4].match(/[0-9]+/); ClanPage(); } jQ('.link-block').click(function(){onViewBlock(this);}); function doneLastVersion(url, response){ var data = response; if(VersionWoWsStatInfo != data['version']){ onShowMessage( localization['Box'], localization['NewVersion']+' WoWsStatInfo '+data['version']+'
'+localization['NewUpdate']+'.', onCloseMessage, localization['Ok'], false ); } } function errorLastVersion(url){} /* ===== Pages function ===== */ function MemberProfilePage(){ var account_profile = document.getElementsByClassName('account-profile')[0]; if(account_profile === undefined){return;} MembersArray[0] = []; var _nick = document.getElementsByClassName('_nick')[0]; account_name = _nick.textContent; var row = document.getElementsByClassName('row')[0]; row.outerHTML += '' + '
' + '' + '' + '
' + '
' + '' + '
' + '
' + getUserScriptDeveloperBlock() + '' + '
' + ''; var account_href = window.location.href.split('/')[6].split('-'); var account_id = account_href[0]; getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+account_id, doneClanInfo, errorClanInfo); getMemberStatistic(); jQ('.account-pvp-pve').click(function(){ setTimeout(function(){getMemberStatistic();}, 1000); }); jQ('.account-tabs').click(function(){ setTimeout(function(){getMemberStatistic();}, 1000); }); } function ForumUserPage(){ var nickname = document.getElementsByClassName('nickname')[0]; var reputation__wrp = document.getElementsByClassName('reputation__wrp')[0]; var user_id = reputation__wrp.getAttribute('id').split('_')[1]; var ipsList_data = document.getElementsByClassName('ipsList_data')[0]; ipsList_data.innerHTML += '' + '
  • ' + ''+localization['profile-wows']+':' + ''+nickname.innerHTML+'' + '
  • ' + '
  • ' + ''+localization['profile-clan']+':' + '' + '
  • ' + ''; getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+user_id, doneForumClanInfo, errorForumClanInfo); } function ForumTopicPage(){ var ForumTopicMembers = []; var basic_info = document.getElementsByClassName('basic_info'); for(var i = 0; i < basic_info.length; i++){ var ipsUserPhotoLink = basic_info[i].getElementsByClassName('ipsUserPhotoLink')[0]; if(undefined === ipsUserPhotoLink){continue;} if(ipsUserPhotoLink.id.indexOf('anonymous_element') > -1){ var linkParse = ipsUserPhotoLink.href.split('/'); var accountParse = linkParse[5].split('-'); var account_id = accountParse[accountParse.length - 1]; if(ForumTopicMembers['member_'+account_id] === undefined){ ForumTopicMembers['member_'+account_id] = account_id; getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+account_id, doneForumClanInfo, errorForumClanInfo); } basic_info[i].innerHTML += '' + '
  • ' + '' + localization['search-clan-forum'] + '
  • ' + ''; } } } function ClanPage(){ var view_block_history = getLocalStorage('clan-member-history', false); if(view_block_history == null){view_block_history = 'hide';} var games_tabs = document.getElementsByClassName("games-tabs")[0]; games_tabs.outerHTML += '' + '
    ' + getUserScriptDeveloperBlock() + '' + '
    ' + '' + '
    ' + '
    ' + ''; getClanMembersList(); } /* ===== ForumTopicPage function ===== */ function doneForumClanInfo(url, response){ if(response.status && response.status == "error"){ errorForumClanInfo(); return; } var vars = getUrlVars(url); var account_id = vars['account_id']; var clansInfo = response['data'][account_id]; if(clansInfo != null){ var icon = clansInfo['clan']['emblems']['x32']['portal']; if(icon === undefined){ for(var key in clansInfo['clan']['emblems']['x32']){ if(key != 'wot'){ icon = clansInfo['clan']['emblems']['x32'][key]; } } } var br_line = ''; if(window.location.href.indexOf("/topic/") > -1){ br_line = '
    '; } var html = '' + br_line + '' + '' + ''+clansInfo['clan']['tag']+'' + '' + '['+clansInfo['clan']['tag']+']' + '' + ''; jQ('.member_'+account_id).html(html); }else{ jQ('.member_'+account_id).html(''); } } function errorForumClanInfo(url){ jQ('.member_'+account_id).html(''); } /* ===== MemberProfilePage function ===== */ function doneClanInfo(url, response){ if(response.status && response.status == "error"){ errorClanInfo(); return; } var vars = getUrlVars(url); var account_id = vars['account_id']; MembersArray[0]['clans'] = response['data'][account_id]; viewMemberClan(); } function errorClanInfo(url){ MembersArray[0]['clans'] = null; viewMemberClan(); } function viewMemberClan(){ var wowsstatinfo_profile_clan = document.getElementById('wowsstatinfo-profile-clan'); if(MembersArray[0]['clans'] != null){ var day = dateDiffInDays(MembersArray[0]['clans']['joined_at'] * 1000, new Date().getTime()); var icon = MembersArray[0]['clans']['clan']['emblems']['x32']['portal']; if(icon === undefined){ for(var key in MembersArray[0]['clans']['clan']['emblems']['x32']){ if(key != 'wot'){ icon = MembersArray[0]['clans']['clan']['emblems']['x32'][key]; } } } wowsstatinfo_profile_clan.innerHTML = '' + '
    ' + '
    ' + '
    ' + '' + ''+MembersArray[0]['clans']['clan']['name']+'' + '' + '
    ' + '
    ' + '' + '
    ' + '

    '+localization['role']+': '+MembersArray[0]['clans']['role_i18n']+'

    ' + '

    '+localization['clan-day']+': '+day+'

    ' + '
    ' + '
    ' + '
    ' + ''; }else{ wowsstatinfo_profile_clan.innerHTML = ''; } } function getMemberStatistic(){ var account_href = window.location.href.split('/')[6].split('-'); var account_id = account_href[0]; var account_name = account_href[1]; var _nick = document.getElementsByClassName('_nick')[0]; account_name = _nick.textContent; MembersArray[0]['account_id'] = account_id; MembersArray[0]['account_name'] = account_name; var count_stat = 0; for(var t = 0; t < typeStat.length; t++){ var type = typeStat[t]; MembersArray[0][type] = []; var tabContainer = null; var tab_container = document.getElementsByClassName('tab-container'); for(var tc = 0; tc < tab_container.length; tc++){ if(tab_container[tc].getAttribute('js-tab-cont-id') != type){continue;} tabContainer = tab_container[tc]; } if(tabContainer == null){continue;} var account_battle_stats = tabContainer.getElementsByClassName('account-battle-stats')[0]; if(account_battle_stats != null){ var account_table = account_battle_stats.getElementsByClassName('account-table'); //Общие результаты MembersArray[0][type]['battles'] = htmlParseMemberStatistic(account_table[0].rows[1].cells[1]); MembersArray[0][type]['wins'] = htmlParseMemberStatistic(account_table[0].rows[2].cells[1]); MembersArray[0][type]['survived'] = htmlParseMemberStatistic(account_table[0].rows[3].cells[1]); MembersArray[0][type]['hits_percents'] = htmlParseMemberStatistic(account_table[0].rows[4].cells[1]); MembersArray[0][type]['damage'] = htmlParseMemberStatistic(account_table[0].rows[5].cells[1]); MembersArray[0][type]['frags_ships'] = htmlParseMemberStatistic(account_table[0].rows[6].cells[1]); MembersArray[0][type]['frags_planes'] = htmlParseMemberStatistic(account_table[0].rows[7].cells[1]); MembersArray[0][type]['capture_base'] = htmlParseMemberStatistic(account_table[0].rows[8].cells[1]); MembersArray[0][type]['defend_base'] = htmlParseMemberStatistic(account_table[0].rows[9].cells[1]); //Средние показатели за бой MembersArray[0][type]['avg_xp'] = htmlParseMemberStatistic(account_table[1].rows[1].cells[1]); MembersArray[0][type]['avg_damage'] = htmlParseMemberStatistic(account_table[1].rows[2].cells[1]); MembersArray[0][type]['avg_frags_ships'] = htmlParseMemberStatistic(account_table[1].rows[3].cells[1]); MembersArray[0][type]['avg_frags_planes'] = htmlParseMemberStatistic(account_table[1].rows[4].cells[1]); MembersArray[0][type]['avg_capture_base'] = htmlParseMemberStatistic(account_table[1].rows[5].cells[1]); MembersArray[0][type]['avg_defend_base'] = htmlParseMemberStatistic(account_table[1].rows[6].cells[1]); //Рекордные показатели MembersArray[0][type]['max_xp'] = htmlParseMemberStatistic(account_table[2].rows[1].cells[1]); MembersArray[0][type]['max_damage'] = htmlParseMemberStatistic(account_table[2].rows[2].cells[1]); MembersArray[0][type]['max_frags_ships'] = htmlParseMemberStatistic(account_table[2].rows[3].cells[1]); MembersArray[0][type]['max_frags_planes'] = htmlParseMemberStatistic(account_table[2].rows[4].cells[1]); //Расчет MembersArray[0][type]['wins_percents'] = (MembersArray[0][type]['wins']/MembersArray[0][type]['battles'])*100; MembersArray[0][type]['survived_percents'] = (MembersArray[0][type]['survived']/MembersArray[0][type]['battles'])*100; if(MembersArray[0][type]['battles'] == MembersArray[0][type]['survived_battles']){ MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/MembersArray[0][type]['battles']; }else{ MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/(MembersArray[0][type]['battles']-MembersArray[0][type]['survived']); } //Общие результаты account_table[0].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['battles'], 'battles'); //Средние показатели за бой account_table[1].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp'); account_table[1].rows[2].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage'); account_table[1].rows[3].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_ships'], 'avg_frags_ships'); account_table[1].rows[4].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_frags_planes'], 'avg_frags_planes'); account_table[1].rows[5].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_capture_base'], 'avg_capture_base'); account_table[1].rows[6].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['avg_defend_base'], 'avg_defend_base'); //Рекордные показатели account_table[2].rows[1].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_xp'], 'max_xp'); account_table[2].rows[2].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_damage'], 'max_damage'); account_table[2].rows[3].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_frags_ships'], 'max_frags_ships'); account_table[2].rows[4].cells[1].getElementsByTagName('span')[0].style.color = findColorASC(MembersArray[0][type]['max_frags_planes'], 'max_frags_planes'); //Дополнительно account_table[0].rows[2].cells[1].getElementsByTagName('small')[0].style.color = findColorASC(MembersArray[0][type]['wins_percents'], 'wins_percents'); if(account_table[0].rows[3].cells[1].getElementsByClassName('small-survived_percents')[0] == null){ account_table[0].rows[3].cells[1].innerHTML += '('+valueFormat((MembersArray[0][type]['survived_percents']).toFixed(2))+'%)'; account_table[0].rows[3].cells[1].getElementsByTagName('small')[0].style.color = findColorASC(MembersArray[0][type]['survived_percents'], 'survived_percents'); } var account_main_stats = tabContainer.getElementsByClassName('account-main-stats')[0]; var _values = tabContainer.getElementsByClassName('_values')[0]; var main_stat = _values.getElementsByTagName('div'); main_stat[0].style.color = findColorASC(MembersArray[0][type]['battles'], 'battles'); main_stat[1].style.color = findColorASC(MembersArray[0][type]['wins_percents'], 'wins_percents'); main_stat[2].style.color = findColorASC(MembersArray[0][type]['avg_xp'], 'avg_xp'); main_stat[3].style.color = findColorASC(MembersArray[0][type]['avg_damage'], 'avg_damage'); main_stat[4].style.color = findColorASC(MembersArray[0][type]['kill_dead'], 'kill_dead'); count_stat++; }else{ MembersArray[0][type]['battles'] = 0; MembersArray[0][type]['wins'] = 0; MembersArray[0][type]['survived'] = 0; MembersArray[0][type]['hits_percents'] = 0; MembersArray[0][type]['damage'] = 0; MembersArray[0][type]['frags_ships'] = 0; MembersArray[0][type]['frags_planes'] = 0; MembersArray[0][type]['capture_base'] = 0; MembersArray[0][type]['defend_base'] = 0; MembersArray[0][type]['avg_xp'] = 0; MembersArray[0][type]['avg_damage'] = 0; MembersArray[0][type]['avg_frags_ships'] = 0; MembersArray[0][type]['avg_frags_planes'] = 0; MembersArray[0][type]['avg_capture_base'] = 0; MembersArray[0][type]['avg_defend_base'] = 0; MembersArray[0][type]['max_xp'] = 0; MembersArray[0][type]['max_damage'] = 0; MembersArray[0][type]['max_frags_ships'] = 0; MembersArray[0][type]['max_frags_planes'] = 0; MembersArray[0][type]['wins_percents'] = 0; MembersArray[0][type]['survived_percents'] = 0; MembersArray[0][type]['kill_dead'] = 0; } var ship_class = ''; var ships_detail_stats = tabContainer.getElementsByClassName('ships-detail-stats')[0]; if(ships_detail_stats != null){ var ships_x_level = 0; var StatShips = []; StatShips['damage'] = 0; StatShips['frags_ships'] = 0; StatShips['frags_planes'] = 0; StatShips['capture_base'] = 0; StatShips['defend_base'] = 0; StatShips['expDamage'] = 0; StatShips['expFragsShips'] = 0; StatShips['expFragsPlanes'] = 0; StatShips['expCapture'] = 0; StatShips['expDefend'] = 0; var StatShipsClass = []; StatShipsClass['damage'] = 0; StatShipsClass['frags_ships'] = 0; StatShipsClass['frags_planes'] = 0; StatShipsClass['capture_base'] = 0; StatShipsClass['defend_base'] = 0; StatShipsClass['expDamage'] = 0; StatShipsClass['expFragsShips'] = 0; StatShipsClass['expFragsPlanes'] = 0; StatShipsClass['expCapture'] = 0; StatShipsClass['expDefend'] = 0; MembersArray[0][type]['ships'] = []; for(var i = 0; i < ships_detail_stats.rows.length; i++){ var row = ships_detail_stats.rows[i]; if(i == 0 && row.cells.length < 6){ var th = document.createElement('th'); th.setAttribute('class', '_value'); th.innerHTML = ''+localization['wr']+''; row.appendChild(th); continue; } if(row.getAttribute('class') == null){ var _icon = row.getElementsByClassName('_icon')[0]; var div_icon = _icon.getElementsByTagName('div')[0]; ship_class = div_icon.getAttribute('class').split('-')[1]; if(row.cells.length < 6){ var td = document.createElement('td'); td.setAttribute('id', 'wr-'+type+'-'+ship_class); td.innerHTML = '0'; row.appendChild(td); } var battles = htmlParseMemberStatistic(row.cells[2]); if(battles > 0){ var wins = htmlParseMemberStatistic(row.cells[3]); var avg_xp = htmlParseMemberStatistic(row.cells[4]); var wins_percents = (wins/battles)*100; if(isNaN(wins_percents)){wins_percents = 0;} row.cells[3].setAttribute('style', 'white-space: nowrap;'); row.cells[3].innerHTML = valueFormat(wins)+' ('+valueFormat((wins_percents).toFixed(0))+'%)'; row.cells[4].setAttribute('style', 'white-space: nowrap;'); row.cells[4].innerHTML = ' '+valueFormat(avg_xp)+''; } StatShipsClass['damage'] = 0; StatShipsClass['frags_ships'] = 0; StatShipsClass['frags_planes'] = 0; StatShipsClass['capture_base'] = 0; StatShipsClass['defend_base'] = 0; StatShipsClass['expDamage'] = 0; StatShipsClass['expFragsShips'] = 0; StatShipsClass['expFragsPlanes'] = 0; StatShipsClass['expCapture'] = 0; StatShipsClass['expDefend'] = 0; continue; } if(row.getAttribute('class').indexOf('_expandable') > -1){ var index = MembersArray[0][type]['ships'].length; MembersArray[0][type]['ships'][index] = []; MembersArray[0][type]['ships'][index]['ship_class'] = ship_class; MembersArray[0][type]['ships'][index]['ship_name'] = row.getAttribute('js-has-extension').split('-')[0]; MembersArray[0][type]['ships'][index]['ship_lvl'] = row.getAttribute('js-has-extension').split('-')[1]; MembersArray[0][type]['ships'][index]['ship_nation'] = row.cells[0].getElementsByTagName('div')[0].getAttribute('class').split('-')[2]; MembersArray[0][type]['ships'][index]['ship_lvl_text'] = row.cells[0].getElementsByClassName('_lvl')[0].innerHTML; MembersArray[0][type]['ships'][index]['ship_name_text'] = row.cells[0].getElementsByClassName('_text')[0].innerHTML; MembersArray[0][type]['ships'][index]['ship_code'] = row.cells[0].getElementsByClassName('_icon-ships')[0].getAttribute('src').split('/')[5].split('.')[0]; if(row.cells.length < 5){ var td = document.createElement('td'); td.setAttribute('id', 'wr-'+type+'-'+MembersArray[0][type]['ships'][index]['ship_code']); td.innerHTML = '0'; row.appendChild(td); } var battles = htmlParseMemberStatistic(row.cells[1]); if(battles > 0){ var wins = htmlParseMemberStatistic(row.cells[2]); var avg_xp = htmlParseMemberStatistic(row.cells[3]); var wins_percents = (wins/battles)*100; if(isNaN(wins_percents)){wins_percents = 0;} row.cells[2].setAttribute('style', 'white-space: nowrap;'); row.cells[2].innerHTML = valueFormat(wins)+' ('+valueFormat((wins_percents).toFixed(0))+'%)'; row.cells[3].setAttribute('style', 'white-space: nowrap;'); row.cells[3].innerHTML = ' '+valueFormat(avg_xp)+''; } if(MembersArray[0][type]['ships'][index]['ship_lvl_text'] == 'X'){ ships_x_level++; } continue; } if(row.getAttribute('class').indexOf('_ship-entry-stat') > -1){ row.cells[0].setAttribute('colspan', '6'); var index = MembersArray[0][type]['ships'].length - 1; var account_table = row.cells[0].getElementsByClassName('account-table'); //Общие результаты MembersArray[0][type]['ships'][index]['battles'] = htmlParseMemberStatistic(account_table[0].rows[1].cells[1]); MembersArray[0][type]['ships'][index]['wins'] = htmlParseMemberStatistic(account_table[0].rows[2].cells[1]); MembersArray[0][type]['ships'][index]['survived'] = htmlParseMemberStatistic(account_table[0].rows[3].cells[1]); MembersArray[0][type]['ships'][index]['damage'] = htmlParseMemberStatistic(account_table[0].rows[4].cells[1]); MembersArray[0][type]['ships'][index]['frags_ships'] = htmlParseMemberStatistic(account_table[0].rows[5].cells[1]); MembersArray[0][type]['ships'][index]['frags_planes'] = htmlParseMemberStatistic(account_table[0].rows[6].cells[1]); MembersArray[0][type]['ships'][index]['capture_base'] = htmlParseMemberStatistic(account_table[0].rows[7].cells[1]); MembersArray[0][type]['ships'][index]['defend_base'] = htmlParseMemberStatistic(account_table[0].rows[8].cells[1]); //Средние показатели за бой MembersArray[0][type]['ships'][index]['avg_xp'] = htmlParseMemberStatistic(account_table[1].rows[1].cells[1]); MembersArray[0][type]['ships'][index]['avg_damage'] = htmlParseMemberStatistic(account_table[1].rows[2].cells[1]); MembersArray[0][type]['ships'][index]['avg_frags_ships'] = htmlParseMemberStatistic(account_table[1].rows[3].cells[1]); MembersArray[0][type]['ships'][index]['avg_frags_planes'] = htmlParseMemberStatistic(account_table[1].rows[4].cells[1]); MembersArray[0][type]['ships'][index]['avg_capture_base'] = htmlParseMemberStatistic(account_table[1].rows[5].cells[1]); MembersArray[0][type]['ships'][index]['avg_defend_base'] = htmlParseMemberStatistic(account_table[1].rows[6].cells[1]); //Рекордные показатели MembersArray[0][type]['ships'][index]['max_xp'] = htmlParseMemberStatistic(account_table[2].rows[1].cells[1]); MembersArray[0][type]['ships'][index]['max_damage'] = htmlParseMemberStatistic(account_table[2].rows[2].cells[1]); MembersArray[0][type]['ships'][index]['max_frags_ships'] = htmlParseMemberStatistic(account_table[2].rows[3].cells[1]); MembersArray[0][type]['ships'][index]['max_frags_planes'] = htmlParseMemberStatistic(account_table[2].rows[4].cells[1]); //Расчет MembersArray[0][type]['ships'][index]['wins_percents'] = (MembersArray[0][type]['ships'][index]['wins']/MembersArray[0][type]['ships'][index]['battles'])*100; MembersArray[0][type]['ships'][index]['survived_percents'] = (MembersArray[0][type]['ships'][index]['survived']/MembersArray[0][type]['ships'][index]['battles'])*100; if(MembersArray[0][type]['ships'][index]['battles'] == MembersArray[0][type]['ships'][index]['survived_battles']){ MembersArray[0][type]['ships'][index]['kill_dead'] = MembersArray[0][type]['ships'][index]['frags_ships']/MembersArray[0][type]['ships'][index]['battles']; }else{ 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']); } var ship_code = MembersArray[0][type]['ships'][index]['ship_code']; var ship_name_text = MembersArray[0][type]['ships'][index]['ship_name_text']; if(ExpShips[ship_code] !== undefined){ var ship_battles = parseInt(MembersArray[0][type]['ships'][index]['battles']); if(isNaN(ship_battles)){ship_battles = 0;} var ship_damage = parseInt(MembersArray[0][type]['ships'][index]['damage']); if(isNaN(ship_damage)){ship_damage = 0;} var ship_frags_ships = parseInt(MembersArray[0][type]['ships'][index]['frags_ships']); if(isNaN(ship_frags_ships)){ship_frags_ships = 0;} var ship_frags_planes = parseInt(MembersArray[0][type]['ships'][index]['frags_planes']); if(isNaN(ship_frags_planes)){ship_frags_planes = 0;} var ship_capture_base = parseInt(MembersArray[0][type]['ships'][index]['capture_base']); if(isNaN(ship_capture_base)){ship_capture_base = 0;} var ship_defend_base = parseInt(MembersArray[0][type]['ships'][index]['defend_base']); if(isNaN(ship_defend_base)){ship_defend_base = 0;} var StatShip = []; StatShip['damage'] = ship_damage; StatShip['frags_ships'] = ship_frags_ships; StatShip['frags_planes'] = ship_frags_planes; StatShip['capture_base'] = ship_capture_base; StatShip['defend_base'] = ship_defend_base; StatShip['expDamage'] = ship_battles * ExpShips[ship_code]['avg_damage']; StatShip['expFragsShips'] = ship_battles * ExpShips[ship_code]['avg_frags_ships']; StatShip['expFragsPlanes'] = ship_battles * ExpShips[ship_code]['avg_frags_planes']; StatShip['expCapture'] = ship_battles * ExpShips[ship_code]['avg_capture_base']; StatShip['expDefend'] = ship_battles * ExpShips[ship_code]['avg_defend_base']; MembersArray[0][type]['ships'][index]['wr'] = calcWR(StatShip); var wr_cell = document.getElementById('wr-'+type+'-'+ship_code); wr_cell.setAttribute('style', 'white-space: nowrap;'); wr_cell.innerHTML = ''+valueFormat((MembersArray[0][type]['ships'][index]['wr']).toFixed(0))+''; StatShipsClass['damage'] += ship_damage; StatShipsClass['frags_ships'] += ship_frags_ships; StatShipsClass['frags_planes'] += ship_frags_planes; StatShipsClass['capture_base'] += ship_capture_base; StatShipsClass['defend_base'] += ship_defend_base; StatShipsClass['expDamage'] += ship_battles * ExpShips[ship_code]['avg_damage']; StatShipsClass['expFragsShips'] += ship_battles * ExpShips[ship_code]['avg_frags_ships']; StatShipsClass['expFragsPlanes'] += ship_battles * ExpShips[ship_code]['avg_frags_planes']; StatShipsClass['expCapture'] += ship_battles * ExpShips[ship_code]['avg_capture_base']; StatShipsClass['expDefend'] += ship_battles * ExpShips[ship_code]['avg_defend_base']; var wr_class = calcWR(StatShipsClass); var ship_class = MembersArray[0][type]['ships'][index]['ship_class']; var wr_class_cell = document.getElementById('wr-'+type+'-'+ship_class); wr_class_cell.setAttribute('style', 'white-space: nowrap;'); wr_class_cell.innerHTML = ''+valueFormat((wr_class).toFixed(0))+''; StatShips['damage'] += ship_damage; StatShips['frags_ships'] += ship_frags_ships; StatShips['frags_planes'] += ship_frags_planes; StatShips['capture_base'] += ship_capture_base; StatShips['defend_base'] += ship_defend_base; StatShips['expDamage'] += ship_battles * ExpShips[ship_code]['avg_damage']; StatShips['expFragsShips'] += ship_battles * ExpShips[ship_code]['avg_frags_ships']; StatShips['expFragsPlanes'] += ship_battles * ExpShips[ship_code]['avg_frags_planes']; StatShips['expCapture'] += ship_battles * ExpShips[ship_code]['avg_capture_base']; StatShips['expDefend'] += ship_battles * ExpShips[ship_code]['avg_defend_base']; }else{ console.log('***** ship_code '+ship_code+' undefined, '+ship_name_text); } continue; } } MembersArray[0][type]['ships_x_level'] = ships_x_level; MembersArray[0][type]['wr'] = calcWR(StatShips); count_stat++; }else{ MembersArray[0][type]['wr'] = 0; } } if(count_stat == 0){ console.log('NO LOAD STAT, START REFRESH 1 SEC'); setTimeout(function(){getMemberStatistic();}, 1000); return; } //console.log(MembersArray[0]); var main_page_script_block = document.getElementById('main-page-script-block'); if(main_page_script_block == null){viewMainMemberPage();} var ship_page_script_block = document.getElementById('ship-page-script-block'); if(ship_page_script_block == null){viewShipMemberPage();} } function viewMainMemberPage(){ var tabContainer = null; var tab_container = document.getElementsByClassName('tab-container'); for(var tc = 0; tc < tab_container.length; tc++){ if(tab_container[tc].getAttribute('js-tab-cont-id') != 'pvp'){continue;} tabContainer = tab_container[tc]; } if(tabContainer != null){ var cm_parent_link_cutted_text = document.getElementsByClassName('cm-parent-link_cutted-text')[0]; var login_name = null; if(cm_parent_link_cutted_text != null){login_name = cm_parent_link_cutted_text.textContent;} var account_main_stats_mobile = tabContainer.getElementsByClassName('account-main-stats-mobile')[0]; if(account_main_stats_mobile == null){return;} var userbar = ''; if(login_name == MembersArray[0]['account_name']){ userbar += ''; } userbar += '' + '
    '+ ''+ '' ''; account_main_stats_mobile.outerHTML += '' + '
    ' + '' + '' + ''+ ''+ '' + '' + '
    ' + ''+ ''+ ''+ userbar + '
    ' ''; } var img = new Image(); img.onload = function(){ var userbar_img = document.getElementById('userbar-img'); if(userbar_img != null){ userbar_img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001); var userbar_link = document.getElementById('userbar-link'); userbar_link.textContent = '[img]'+WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png[/img]'; } } img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001); jQ('#generator-userbar').click(function(){ getJson(WoWsStatInfoHref+'bg/bg.php?'+Math.floor(Math.random()*100000001), doneUserBarBG, errorUserBarBG); }); } function viewShipMemberPage(){ var tabContainer = null; var tab_container = document.getElementsByClassName('tab-container'); for(var tc = 0; tc < tab_container.length; tc++){ if(tab_container[tc].getAttribute('js-tab-cont-id') != 'pvp'){continue;} tabContainer = tab_container[tc]; } if(tabContainer != null){ var account_tab_ships = tabContainer.getElementsByClassName('account-tab-ships')[0]; if(account_tab_ships == null){return;} var account_title = account_tab_ships.getElementsByClassName('account-title')[2]; if(account_title == null){return;} var div = document.createElement('div'); div.setAttribute('id', 'ship-page-script-block'); div.setAttribute('style', ' padding-bottom: 40px;'); div.innerHTML = '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
    ' + '

    '+localization['additional-results']+'

    ' + '
    ' + ''+localization['number-ships-x']+'' + '' + ''+MembersArray[0]['pvp']['ships_x_level']+''+ '
    ' + ''+localization['wr']+'' + '' + ''+ valueFormat((MembersArray[0]['pvp']['wr']).toFixed(2)) + ''+ '
    ' + ''; account_title.insertBefore(div, account_title.firstChild); } } function GeneratorUserBar(){ var userbarbg = 'userbar'; var radios = document.getElementsByName('userbar-bg'); for(var i = 0; i < radios.length; i++){ if(radios[i].checked){ userbarbg = radios[i].value; break; } } var jsonString = 'json='+JSON.stringify(MembersArray[0])+'&type=userbar&userbarbg='+userbarbg+'&lang='+lang; var xmlhttp; try{ xmlhttp = new ActiveXObject('Msxml2.XMLHTTP'); }catch(e){ try{ xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }catch(E){ xmlhttp = false; } } if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){ xmlhttp = new XMLHttpRequest(); } xmlhttp.open('POST', ''+WoWsStatInfoHref+'userbar.php?random='+Math.floor(Math.random()*100000001), true); xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState == 4){ if(xmlhttp.status == 200){ var userbar_img = document.getElementById('userbar-img'); userbar_img.src = xmlhttp.responseText+'?'+Math.floor(Math.random()*100000001); var userbar_link = document.getElementById('userbar-link'); userbar_link.textContent = '[img]'+xmlhttp.responseText+'[/img]'; } } }; xmlhttp.send(jsonString); } function doneUserBarBG(url, response){ var html = ''; var data = response; var check = true; html += '
    '; for(var i = 0; i < data.length; i++){ var imgbgview = false; var img = data[i].split('_'); if(img.length > 1){ for(var i_id = 1; i_id < img.length; i_id++){ if(MembersArray[0]['clans'] == null){break;} if(img[i_id] == MembersArray[0]['clans']['clan']['clan_id']){ imgbgview = true; } } }else{ imgbgview = true; } if(imgbgview){ var checked = ''; if(check){checked = 'checked="checked"'; check = false;} html += ' '+data[i]+'
    '; html += '

    '; } } html += '
    '; onShowMessage( localization['userbar-bg'], html, function(){GeneratorUserBar(); onCloseMessage();}, localization['Ok'], true ); } function errorUserBarBG(url){ var html = '' + '
    ' + ' userbar
    ' + '

    ' + '
    ' + ''; onShowMessage( localization['userbar-bg'], html, function(){GeneratorUserBar(); onCloseMessage();}, localization['Ok'], true ); } /* ===== ClanPage function ===== */ function getClanMembersList(){ var table = document.getElementsByClassName("rating-table__players")[0]; if(table.rows.length <= 1){ setTimeout(function(){getClanMembersList();}, 1000); return; } for(var i = 1; i < table.rows.length; i++){ var row = table.rows[i]; var index = MembersArray.length; MembersArray[index] = []; var account_id = row.getAttribute('data-account_id'); MembersArray[index]['account_id'] = account_id; var player_name = row.getElementsByClassName("player_name")[0]; var account_name = player_name.innerHTML.trim(); MembersArray[index]['account_name'] = account_name; var image = row.getElementsByClassName('svg-icon')[1]; var srcArr = image.getAttribute('src').split("/"); MembersArray[index]['role'] = srcArr[srcArr.length - 1].split(".")[0]; MembersArray[index]['role_i18n'] = getRoleText(srcArr[srcArr.length - 1].split(".")[0]); MembersArray[index]['role_sort_num'] = getRoleSortNum(srcArr[srcArr.length - 1].split(".")[0]); var colNum = (row.cells.length - 2) - 1; var clan_days = row.cells[colNum].innerHTML.trim(); MembersArray[index]['clan_days'] = clan_days; } if(MembersArray.length > 0){ viewClanMemberHistory(); } } function viewClanMemberHistory(){ var oldClanMemberSave = getLocalStorage('ClanMemberSave', true); var oldClanChangeSave = getLocalStorage('ClanChangeSave', true); if(oldClanChangeSave == null){oldClanChangeSave = '';} var stringJSON = ''; for(var i = 0; i < MembersArray.length; i++){ stringJSON += '"'+MembersArray[i]['account_id']+'":{"account_id":'+MembersArray[i]['account_id']+',"account_name":"'+MembersArray[i]['account_name']+'","role":"'+MembersArray[i]['role']+'"},'; } stringJSON = stringJSON.substring(stringJSON.length - 1, 0); var newClanMemberSave = '{"members": {'+stringJSON+'}}'; var newClanChangeSave = ''; if(oldClanMemberSave != null){ var oldClanMemberArr = jQ.parseJSON(oldClanMemberSave); var newClanMemberArr = jQ.parseJSON(newClanMemberSave); for(id in oldClanMemberArr['members']){ if(newClanMemberArr['members'][id] === undefined){ oldClanChangeSave += '1:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':null:null;'; }else{ if(newClanMemberArr['members'][id]['role'] != oldClanMemberArr['members'][id]['role']){ oldClanChangeSave += '3:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':'+oldClanMemberArr['members'][id]['role']+':'+newClanMemberArr['members'][id]['role']+';'; } if(newClanMemberArr['members'][id]['account_name'] != oldClanMemberArr['members'][id]['account_name']){ oldClanChangeSave += '4:'+oldClanMemberArr['members'][id]['account_id']+':'+oldClanMemberArr['members'][id]['account_name']+':'+oldClanMemberArr['members'][id]['account_name']+':'+newClanMemberArr['members'][id]['account_name']+';'; } } } for(id in newClanMemberArr['members']){ if(oldClanMemberArr['members'][id] === undefined){ oldClanChangeSave += '2:'+newClanMemberArr['members'][id]['account_id']+':'+newClanMemberArr['members'][id]['account_name']+':null:null;'; if(newClanMemberArr['members'][id]['role'] != 'recruit'){ oldClanChangeSave += '3:'+newClanMemberArr['members'][id]['account_id']+':'+newClanMemberArr['members'][id]['account_name']+':recruit:'+newClanMemberArr['members'][id]['role']+';'; } } } } var html = '
    '; var clan_member_history = document.getElementsByClassName("clan-member-history")[0]; if(oldClanChangeSave != ''){ var arrOldChangeClan = oldClanChangeSave.split(';'); if(arrOldChangeClan.length > 50){ var deleteCountLine = arrOldChangeClan.length - 50; for(var i = 0; i < deleteCountLine; i++){ arrOldChangeClan.splice(0, 1); } for(var i = 0; i < arrOldChangeClan.length; i++){ if(arrOldChangeClan[i] == ''){continue;} newClanChangeSave += arrOldChangeClan[i]+';'; } }else{ newClanChangeSave = oldClanChangeSave; } var arrNewChangeClan = newClanChangeSave.split(';'); for(var i = (arrNewChangeClan.length - 1); i >= 0; i--){ var arrChange = arrNewChangeClan[i].split(':'); var type = arrChange[0]; var mId = arrChange[1]; var mName = arrChange[2]; var mOld = arrChange[3]; var mNew = arrChange[4]; if(type == '1'){ var text = localization['member-history-leave']; text = text.replace('%NAME%',''+mName+''); html += ''+ ''+ ''; }else if(type == '2'){ var text = localization['member-history-join']; text = text.replace('%NAME%',''+mName+''); html += ''+ ''+ ''; }else if(type == '3'){ var text = localization['member-history-rerole']; text = text.replace('%NAME%',''+mName+''); text = text.replace('%OLDROLE%',getRoleText(mOld)); text = text.replace('%NEWROLE%',getRoleText(mNew)); html += ''+ ''+ ''; }else if(type == '4'){ var text = localization['member-history-rename']; text = text.replace('%OLDNAME%',mOld); text = text.replace('%NEWNAME%',''+mNew+''); html += ''+ ''+ ''; } } }else{ html += '' + '' + '' + '' + ''; } html += '
    '+ ' '+text+''+ '
    '+ ' '+text+''+ '
    '+ text+ '
    '+ text+ '
    ' + localization['member-history-notchange'] + '
    '; html += '' + '
    ' + '
    ' + '' + '
    ' + ''; clan_member_history.innerHTML = html; jQ('#run-history-clear').click(function(){ setLocalStorage('ClanChangeSave', '', true); viewClanMemberHistory(); }); setLocalStorage('ClanMemberSave', newClanMemberSave, true); setLocalStorage('ClanChangeSave', newClanChangeSave, true); } /* ===== UserScript function ===== */ function calcWR(Stat){ var rDamage = Stat['damage'] / Stat['expDamage']; if(isNaN(rDamage)){rDamage = 0;} var rFragsShips = Stat['frags_ships'] / Stat['expFragsShips']; if(isNaN(rFragsShips)){rFragsShips = 0;} var rFragsPlanes = Stat['frags_planes'] / Stat['expFragsPlanes']; if(isNaN(rFragsPlanes)){rFragsPlanes = 0;} var rCapture = Stat['capture_base'] / Stat['expCapture']; if(isNaN(rCapture)){rCapture = 0;} var rDefend = Stat['defend_base'] / Stat['expDefend']; if(isNaN(rDefend)){rDefend = 0;} var rDamagec = Math.max(0, (rDamage - 0.25) / (1 - 0.25)); var rFragsShipsc = Math.max(0, Math.min(rDamagec + 0.2, (rFragsShips - 0.12) / (1 - 0.12))); var rFragsPlanesc = Math.max(0, Math.min(rDamagec + 0.1, (rFragsPlanes - 0.15) / (1 - 0.15))); var rCapturec = Math.max(0, Math.min(rDamagec + 0.1, (rCapture - 0.10) / (1 - 0.10))); var rDefendc = Math.max(0, Math.min(rDamagec + 0.1, (rDefend - 0.10) / (1 - 0.10))); var wr = 650 * rDamagec + 150 * rFragsShipsc * rDamagec + 50 * rFragsShipsc * rCapturec + 50 * rFragsShipsc * rDefendc + 80 * rFragsPlanesc; if(isNaN(wr)){wr = 0;} return wr; } function findColorASC(value, stat_type){ if(isNaN(value) || parseFloat(value) <= parseFloat(colorStat[stat_type][0])){ return color['very_bad']; }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][1])){ return color['bad']; }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][2])){ return color['normal']; }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][3])){ return color['good']; }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][4])){ return color['very_good']; }else if(parseFloat(value) <= parseFloat(colorStat[stat_type][5])){ return color['unique']; }else{ return color['very_bad']; } } function findColorDESC(value, stat_type){ var return_color = color['very_bad']; if(isNaN(value)){ return_color = color['very_bad']; } if(parseFloat(value) <= parseFloat(colorStat[stat_type][0])){ return_color = color['very_bad']; } if(parseFloat(value) <= parseFloat(colorStat[stat_type][1])){ return_color = color['bad']; } if(parseFloat(value) <= parseFloat(colorStat[stat_type][2])){ return_color = color['normal']; } if(parseFloat(value) <= parseFloat(colorStat[stat_type][3])){ return_color = color['good']; } if(parseFloat(value) <= parseFloat(colorStat[stat_type][4])){ return_color = color['very_good']; } if(parseFloat(value) <= parseFloat(colorStat[stat_type][5])){ return_color = color['unique']; } return return_color; } function valueFormat(value){ var newValue = ''; var valueSplit = value.split('.'); var numChar = 0; for(var i = valueSplit[0].length; i > 0; i--){ if(numChar < 3){ newValue = valueSplit[0].substr(i - 1, 1)+''+newValue; numChar++; }else{ newValue = valueSplit[0].substr(i - 1, 1)+''+localization['num-separator']+''+newValue; numChar = 1; } } if(valueSplit.length > 1){newValue += localization['num-fractional']+''+valueSplit[1];} return newValue; } function htmlParseMemberStatistic(element){ var value = element.textContent.trim().replace(new RegExp(' ', 'g'), ''); value = value.replace(/[^0-9,.()% ]/g, ""); value = value.replace('%', ''); value = value.split(localization['num-separator']).join(''); value = value.replace(localization['num-fractional'], '.'); if(value.indexOf('(') > -1 && value.indexOf(')') > -1){ value = (value.split('('))[0]; } return value; } function getJson(url, onDone, onError){ if(MaxProcess > Process){ Process++; jQ.getJSON(url).done(function(result){ Process--; onDone(url, result); }).fail(function(jqxhr, textStatus, error){ Process--; onError(url); }); }else{ setTimeout(function(){getJson(url, onDone, onError);}, 1000); } } function getApplicationId(realm){ var applicationId = []; applicationId['ru'] = '7149a13b5f5fb7109c5b2400d31b7d42'; // .ru applicationId['eu'] = '953df86f6bca01a7af80c3bdedd9c1d9'; // .eu return applicationId[realm].split("").reverse().join(""); } function getUrlVars(url){ var vars = {}; var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value){ vars[key] = value; }); return vars; } function dateDiffInDays(a, b){ var date1 = new Date(a); var date2 = new Date(b); if(b == null){ date2 = new Date(); } var timeDiff = date2.getTime() - date1.getTime(); var diffDays = timeDiff / (1000 * 3600 * 24); if(diffDays < 0){diffDays = 0;} return (diffDays).toFixed(0); } function getUserScriptDeveloperBlock(){ var html = '' + '' + '
    ' + '' + localization['userscript-developer'] + ' Vov_chiK ' + localization['userscript-alliance'] + ' Walkure.' + '

    ' + localization['userscript-topic']+' '+ '' + WoWsStatInfoLinkName + '' + '

    ' + ''+localization['userscript-developer-support']+'
    '+ 'Web-Money WMR R295712009837
    '+ 'Web-Money WMZ Z226959724402
    '+ 'Yandex Money 41001290117791
    '+ 'RBK Money RU353257918
    '+ '
    ' + '
    ' + ''; return html; } function onViewBlock(element){ if(null != element.getAttribute('id')){ var viewId = element.getAttribute('id'); var viewClassLink = element.getAttribute('class'); var viewBlock = document.getElementsByClassName(viewId)[0]; if(viewClassLink == 'link-block hide-block'){ element.setAttribute('class', 'link-block show-block'); viewBlock.setAttribute('class', viewBlock.getAttribute('class').replace('hide-block', 'show-block')); setLocalStorage(viewId, 'show', false); }else{ element.setAttribute('class', 'link-block hide-block'); viewBlock.setAttribute('class', viewBlock.getAttribute('class').replace('show-block', 'hide-block')); setLocalStorage(viewId, 'hide', false); } } } function checkLocalStorage(){ try{ return 'localStorage' in window && window['localStorage'] !== null; }catch (e){ return false; } } function setLocalStorage(key, value, allPageHost){ if(checkLocalStorage()){ if(allPageHost){key = key+ClanId;} window.localStorage.setItem(key, value); }else{ setCookie(key, value, allPageHost); } } function getLocalStorage(key, allPageHost){ var value = null; if(checkLocalStorage()){ if(allPageHost){key = key+ClanId;} value = window.localStorage.getItem(key); }else{ value = getCookie(key); } return value; } function setCookie(c_name, value, allPageHost){ var exdate = new Date(); exdate.setDate(exdate.getDate() + 365); if(allPageHost){ var c_value = escape(value) + ((365 == null) ? "" : "; expires="+exdate.toUTCString()+"; domain=" +window.location.hostname+"; path=/"); document.cookie = c_name + "=" + c_value; }else{ var c_value = escape(value) + ((365 == null) ? "" : "; expires="+exdate.toUTCString()); document.cookie = c_name + "=" + c_value; } } function getCookie(c_name){ var c_value = document.cookie; var c_start = c_value.indexOf(" " + c_name + "="); if(c_start == -1){ c_start = c_value.indexOf(c_name + "="); } if(c_start == -1){ c_value = null; }else{ c_start = c_value.indexOf("=", c_start) + 1; var c_end = c_value.indexOf(";", c_start); if(c_end == -1){ c_end = c_value.length; } c_value = unescape(c_value.substring(c_start,c_end)); } return c_value; } function onShowMessage(title, content, funcOk, OkText, viewCancel){ var ui_dialog_title = message.getElementsByClassName("ui-dialog-title")[0]; ui_dialog_title.innerHTML = title; var popup = message.getElementsByClassName("popup")[0]; popup.innerHTML = content; var button_inner = message.getElementsByClassName("button_inner")[0]; button_inner.innerHTML = OkText; var link__cancel = message.getElementsByClassName("link__cancel")[0]; if(viewCancel){ link__cancel.style.display = 'inline'; }else{ link__cancel.style.display = 'none'; } message.style.display = 'block'; messagebg.style.display = 'block'; message.style.marginLeft = '-'+(message.offsetWidth / 2)+'px'; //message.style.top = (window.scrollY + ((document.body.offsetHeight / 2) - (message.offsetHeight / 2)))+'px'; message.style.top = (window.scrollY + 50)+'px'; jQ('#userscript-message-ok').unbind('click'); jQ('#userscript-message-ok').click(funcOk); jQ('#userscript-message-close').unbind('click'); jQ('#userscript-message-close').click(function(){onCloseMessage();}); jQ('#userscript-message-cancel').unbind('click'); jQ('#userscript-message-cancel').click(function(){onCloseMessage();}); } function onCloseMessage(){ message.style.display = 'none'; messagebg.style.display = 'none'; } function getLevelNumer(text){ if('I' == text){ return 1; }else if('II' == text){ return 2; }else if('III' == text){ return 3; }else if('IV' == text){ return 4; }else if('V' == text){ return 5; }else if('VI' == text){ return 6; }else if('VII' == text){ return 7; }else if('VIII' == text){ return 8; }else if('IX' == text){ return 9; }else if('X' == text){ return 10; } return 0; } // Modify JSON.stringify to allow recursive and single-level arrays (function(){ // Convert array to object var convArrToObj = function(array){ var thisEleObj = new Object(); if(typeof array == "object"){ for(var i in array){ var thisEle = convArrToObj(array[i]); thisEleObj[i] = thisEle; } }else { thisEleObj = array; } return thisEleObj; }; var oldJSONStringify = JSON.stringify; JSON.stringify = function(input){ return oldJSONStringify(convArrToObj(input)); }; })(); function getRoleText(role){ var roleText = role; if(localization[role] !== undefined){roleText = localization[role];} return roleText; } function getRoleSortNum(role){ if (role == 'commander') return 0; else if (role == 'executive_officer') return 1; else if (role == 'personnel_officer') return 2; else if (role == 'combat_officer') return 3; else if (role == 'intelligence_officer') return 4; else if (role == 'quartermaster') return 5; else if (role == 'recruitment_officer') return 6; else if (role == 'junior_officer') return 7; else if (role == 'private') return 8; else if (role == 'recruit') return 9; else if (role == 'reservist') return 10; else return 11; } function getLocalization(lang){ var localization = []; {/* Русский */ localization['ru'] = []; localization['ru']['realm'] = 'ru'; localization['ru']['num-separator'] = ' '; localization['ru']['num-fractional'] = ','; localization['ru']['Box'] = 'Оповещение'; localization['ru']['Ok'] = 'Ok'; localization['ru']['Cancel'] = 'Отмена'; localization['ru']['NewVersion'] = 'Вышла новая версия скрипта'; localization['ru']['NewUpdate'] = 'Пожалуйста, обновите скрипт'; localization['ru']['ErrorScript'] = 'Во время работы UserScript WoWsStatInfo '+VersionWoWsStatInfo+', возникла ошибка:'; localization['ru']['ErrorSendDeveloper'] = 'Сообщите об ошибке разработчику скрипта.'; localization['ru']['userscript-developer'] = 'Разработчик UserScript WoWsStatInfo:'; localization['ru']['userscript-alliance'] = 'член альянса'; localization['ru']['userscript-topic'] = 'Тема на форуме:'; localization['ru']['userscript-developer-support'] = 'Поддержать автора скрипта:'; localization['ru']['search-clan-forum'] = 'Поиск клана...'; localization['ru']['profile-wows'] = 'Профиль в World of Warships'; localization['ru']['profile-clan'] = 'Клан'; localization['ru']['forum-profile'] = 'Профиль на форуме'; localization['ru']['role'] = 'Должность'; localization['ru']['clan-day'] = 'Количество дней в клане'; localization['ru']['generator-userbar'] = 'Создать UserBar'; localization['ru']['userbar-bg'] = 'Выберите фон:'; localization['ru']['additional-results'] = 'Дополнительные результаты'; localization['ru']['number-ships-x'] = 'Количество кораблей 10 уровня'; localization['ru']['wr'] = 'WR'; localization['ru']['block-link-clan-member-history'] = 'Блок "Изменений в составе клана"'; localization['ru']['link-clan-member-history'] = 'Изменения в составе клана'; localization['ru']['member-history-clear'] = 'Очистить историю'; localization['ru']['member-history-join'] = 'Вступил в клан %NAME%'; localization['ru']['member-history-leave'] = 'Покинул клан %NAME%'; localization['ru']['member-history-rename'] = '%OLDNAME% сменил ник на %NEWNAME%'; localization['ru']['member-history-rerole'] = '%NAME% сменил должность %OLDROLE% ⇒ %NEWROLE%'; localization['ru']['member-history-notchange'] = 'С момента установки скрипта WoWsStatInfo и последнего захода на страницу, изменений в составе клана не производились.'; localization['ru']['banned'] = 'Забанен'; localization['ru']['commander'] = 'Командующий'; localization['ru']['executive_officer'] = 'Заместитель командующего'; localization['ru']['personnel_officer'] = 'Офицер штаба'; localization['ru']['intelligence_officer'] = 'Офицер разведки'; localization['ru']['quartermaster'] = 'Офицер снабжения'; localization['ru']['recruitment_officer'] = 'Офицер по кадрам'; localization['ru']['junior_officer'] = 'Младший офицер'; localization['ru']['combat_officer'] = 'Командир подразделения'; localization['ru']['private'] = 'Боец'; localization['ru']['recruit'] = 'Новобранец'; localization['ru']['reservist'] = 'Резервист'; } {/* English */ localization['en'] = []; localization['en']['realm'] = 'eu'; localization['en']['num-separator'] = ','; localization['en']['num-fractional'] = '.'; localization['en']['Box'] = 'Notification'; localization['en']['Ok'] = 'Ok'; localization['en']['Cancel'] = 'Cancel'; localization['en']['NewVersion'] = 'New version was released'; localization['en']['NewUpdate'] = 'Please, update the extension'; localization['en']['ErrorScript'] = 'An error occurred while running UserScript WoWsStatInfo '+VersionWoWsStatInfo+', script:'; localization['en']['ErrorSendDeveloper'] = 'Please, inform script developer about this error.'; localization['en']['userscript-developer'] = 'Developer - UserScript WoWsStatInfo:'; localization['en']['userscript-alliance'] = 'аlliance member'; localization['en']['userscript-topic'] = 'Forum topic:'; localization['en']['userscript-developer-support'] = 'Ways to support the developer:'; localization['en']['search-clan-forum'] = 'Clan Search...'; localization['en']['profile-wows'] = 'World of Warships profile'; localization['en']['profile-clan'] = 'Clan'; localization['en']['forum-profile'] = 'Forum profile'; localization['en']['role'] = 'Alliance rank'; localization['en']['clan-day'] = 'Days in clan'; localization['en']['generator-userbar'] = 'Create UserBar'; localization['en']['userbar-bg'] = 'Choose a background:'; localization['en']['additional-results'] = 'Additional Results'; localization['en']['number-ships-x'] = 'Number of X Tier ships'; localization['en']['wr'] = 'WR'; localization['en']['block-link-clan-member-history'] = '"Changes in clan members" section'; localization['en']['link-clan-member-history'] = 'Changes in clan members'; localization['en']['member-history-clear'] = 'Clear history'; localization['en']['member-history-join'] = 'Entered %NAME% clan'; localization['en']['member-history-leave'] = 'Left %NAME% clan'; localization['en']['member-history-rename'] = '%OLDNAME% has changed his nickname to %NEWNAME%'; localization['en']['member-history-rerole'] = '%NAME% has changed his position in clan rank: %OLDROLE% ⇒ %NEWROLE%'; localization['en']['member-history-notchange'] = 'Since installing WoWsStatInfo script and last entering on this page no changes in clan members were made.'; localization['en']['banned'] = 'Banned'; localization['en']['commander'] = 'Commander'; localization['en']['executive_officer'] = 'Executive Officer'; localization['en']['personnel_officer'] = 'Personnel Officer'; localization['en']['intelligence_officer'] = 'Intelligence Officer'; localization['en']['quartermaster'] = 'Quartermaster'; localization['en']['recruitment_officer'] = 'Recruitment Officer'; localization['en']['junior_officer'] = 'Junior Officer'; localization['en']['combat_officer'] = 'Combat Officer'; localization['en']['private'] = 'Private'; localization['en']['recruit'] = 'Recruit'; localization['en']['reservist'] = 'Reservist'; } {/* Français */ localization['fr'] = []; localization['fr'] = jQ.extend([], localization['en']); localization['fr']['num-separator'] = ' '; localization['fr']['num-fractional'] = ','; } {/* Deutsch */ localization['de'] = []; localization['de'] = jQ.extend([], localization['en']); localization['de']['num-separator'] = '.'; localization['de']['num-fractional'] = ','; } {/* Türkçe */ localization['tr'] = []; localization['tr'] = jQ.extend([], localization['en']); localization['tr']['num-separator'] = '.'; localization['tr']['num-fractional'] = ','; } {/* Español */ localization['es'] = []; localization['es'] = jQ.extend([], localization['en']); localization['es']['num-separator'] = '.'; localization['es']['num-fractional'] = ','; } {/* Čeština */ localization['cs'] = []; localization['cs'] = jQ.extend([], localization['en']); localization['cs']['num-separator'] = ' '; localization['cs']['num-fractional'] = ','; } {/* Polski */ localization['pl'] = []; localization['pl'] = jQ.extend([], localization['en']); localization['pl']['num-separator'] = ' '; localization['pl']['num-fractional'] = ','; } return localization[lang]; } } /* ===== Load UserScript ===== */ function addJQuery(callback){ var script = document.createElement("script"); script.async = true; script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"); script.addEventListener( 'load', function(){ var script = document.createElement("script"); script.async = true; script.textContent = "window.jQ = jQuery.noConflict(true);"+ "("+callback.toString()+")();"; document.head.appendChild(script); }, false ); document.head.appendChild(script); } if(window.location.host.indexOf("worldofwarships") > -1 || window.location.host.indexOf(".wargaming.net") > -1){ addJQuery(WoWsStatInfo); } })(window);