WoWsInfo

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

当前为 2015-04-17 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name WoWsInfo
// @author Vov_chiK
// @description Расширенная статистика и функционал.
// @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.3.0.1
// @creator Vov_chiK
// @include http://worldofwarships.ru/cbt/accounts/*
// @match http://worldofwarships.ru/cbt/accounts/*
// @grant GM_xmlhttpRequest
// ==/UserScript==
// @Vov_chiK

(function(window){
	/* ===== Main function ===== */
	function WoWsInfo(){
		var VersionWoWsInfo = '0.3.0.1';
		var WoWsInfoLink = '#';
		var WoWsInfoLinkName = '[0.3.0] [WoWsInfo] Расширенная статистика на оф. сайте.';
		
		var lang = 'ru';
		if(window.location.host.indexOf(".wargaming.net") > -1){
			lang = getCookie('wgccfe_language');
		}else if(window.location.host.indexOf("worldoftanks") > -1){
			lang = getCookie('hllang');
		}

		var localization = getLocalization(lang);
		
		var realm = localization['realm'];
		
		/* ===== Message UserScript ===== */
		{
			
		}		
		
		var navigatorInfo = getBrowser();
		window.onerror = function(message, source, lineno, column, errorObj){
			if(source == ''){source = window.location.href;}
			else if(source.indexOf("conversion_async.js") != -1){return false;}
			else if(source.indexOf("map_widgets.js") != -1){return false;}
			else if(source.indexOf("tooltips.js") != -1){return false;}
			else if(source.indexOf("strongholds.build.js") != -1){return false;}
			else if(source.indexOf("clans_leaderboard.js") != -1){return false;}
			else if(source.indexOf("clan_treasury.js") != -1){return false;}
			if(message == 'Script error.' && errorObj == null){console.log('message == \'Script error.\' && errorObj == null'); return false;}
			
			lineno += 17;
			
			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" +
					"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);
			alert(error);
			error = error.split('\n').join('<br />');
			
			// onShowMessage(
				// localization['Box'],
				// 'different_error',
				// 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);
			}
			
			console.log(''
				+'Browser name  = '+browserName+'\n'
				+'Full version  = '+fullVersion+'\n'
				+'Major version = '+majorVersion+'\n'
				+'navigator.appName = '+navigator.appName+'\n'
				+'navigator.userAgent = '+navigator.userAgent+'\n'
			);			
			
			var navigatorInfo = [];
			navigatorInfo['browserName'] = browserName;
			navigatorInfo['fullVersion'] = fullVersion;
			navigatorInfo['majorVersion'] = majorVersion;
			navigatorInfo['appName'] = navigator.appName;
			navigatorInfo['userAgent'] = navigator.userAgent;
			
			return navigatorInfo;
		}
		
		/* ===== Style UserScript ===== */
		{
			var StyleWoTClanInfo = '' +
				'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.wowsinfo-stat{text-align: center; margin-top: 10px; color: white; font-size: 16px;}' +
				'span.name-stat{color: #ffcc33;}' +
			'';
			var StyleWoTClanInfoAdd = document.createElement("style");
			StyleWoTClanInfoAdd.textContent = StyleWoTClanInfo.toString();
			document.head.appendChild(StyleWoTClanInfoAdd);
		}
		
		var MembersArray = [];
		
		var typeStat = ["pvp", "pve"];
		
		var color = new Array();
		color['very_bad'] = '#FE0E00'; // очень плохо
		color['bad'] = '#FE7903'; // плохо
		color['normal'] = '#F8F400'; // средне
		color['good'] = '#60FF00';  // хорошо
		color['very_good'] = '#02C9B3'; // очень хорошо
		color['unique'] = '#D042F3'; // уникально		
		
		/* ===== Check load page ===== */
		if(window.location.href.indexOf("accounts") > -1 && window.location.href.split('/').length == 7 && window.location.href.split('/')[5].match(/[0-9]+/) != null){
			var account_id = window.location.href.split('/')[5].match(/[0-9]+/);
			MemberProfilePage();
		}
		
		jQ('.link-block').click(function(){onViewBlock(this);});
		
		/* ===== Pages function ===== */
		function MemberProfilePage(){
			getMemberStatistic();
		
			var content = document.getElementsByClassName('content')[0];
			var row = content.getElementsByClassName('row')[0];
			row.outerHTML += '' +
				'<div id="userscript-block-list">' +
					getUserScriptDeveloperBlock() +
					'' +
				'</div>' +
			'';
			
			for(var t = 0; t < typeStat.length; t++){
				var type = typeStat[t];
			
				var account_statistics__general = document.getElementsByClassName('account_statistics__general')[t];
				if(account_statistics__general !== undefined){
					var stat_main_middle = account_statistics__general.getElementsByClassName('stat-main-middle')[0];
					stat_main_middle.getElementsByClassName('value')[0].style.color = colorBattlesAvgXP(MembersArray[0][type]['avg_xp']);
				
					var stat = account_statistics__general.getElementsByClassName('stat');
					
					stat[0].getElementsByClassName('value')[0].style.color = colorBattles(MembersArray[0][type]['battles']);
					stat[1].getElementsByClassName('value')[0].style.color = colorWinsPercents(MembersArray[0][type]['wins_percents']);					
					stat[2].getElementsByClassName('value')[0].style.color = colorAvgDamage(MembersArray[0][type]['avg_damage'], MembersArray[0][type]['avg_level_battles']);
					stat[3].getElementsByClassName('value')[0].style.color = colorKillDead(MembersArray[0][type]['kill_dead']);
				
					account_statistics__general.outerHTML += '' +
						'<div id="wowsinfo-'+type+'" class="wowsinfo-stat">' +
							'<span class="name-stat">'+localization['wr']+':</span> ' +
							'<font color="'+colorWalkureRating(MembersArray[0][type]['wr'])+'">'+(MembersArray[0][type]['wr']).toFixed(2)+'</font>' + 
						'</div>' +
					'';
				}
			}
		}
		
		/* ===== MemberProfilePage function ===== */
		function getMemberStatistic(){	
			var index = MembersArray.length;		
			MembersArray[index] = [];
			
			for(var t = 0; t < typeStat.length; t++){
				var type = typeStat[t];				
				MembersArray[index][type] = [];
				
				var account_statistic = document.getElementById('account_statistic-'+type);
				var account_statistics = account_statistic.getElementsByClassName('account_statistics__rates-small-border');
				if(account_statistics.length == 3){
					MembersArray[index][type]['battles'] = htmlParseMemberStatistic(account_statistics[0].rows[1].cells[1]);
					MembersArray[index][type]['wins'] = htmlParseMemberStatistic(account_statistics[0].rows[2].cells[1]);
					MembersArray[index][type]['losses'] = htmlParseMemberStatistic(account_statistics[0].rows[3].cells[1]);
					MembersArray[index][type]['draws'] = htmlParseMemberStatistic(account_statistics[0].rows[4].cells[1]);
					MembersArray[index][type]['survived_battles'] = htmlParseMemberStatistic(account_statistics[0].rows[5].cells[1]);
					MembersArray[index][type]['hits_percents'] = htmlParseMemberStatistic(account_statistics[0].rows[6].cells[1]);
					MembersArray[index][type]['damage'] = htmlParseMemberStatistic(account_statistics[0].rows[7].cells[1]);
					MembersArray[index][type]['frags_ships'] = htmlParseMemberStatistic(account_statistics[0].rows[8].cells[1]);
					MembersArray[index][type]['frags_planes'] = htmlParseMemberStatistic(account_statistics[0].rows[9].cells[1]);
					MembersArray[index][type]['capture_base'] = htmlParseMemberStatistic(account_statistics[0].rows[10].cells[1]);
					MembersArray[index][type]['defend_base'] = htmlParseMemberStatistic(account_statistics[0].rows[11].cells[1]);
					
					MembersArray[index][type]['avg_xp'] = htmlParseMemberStatistic(account_statistics[1].rows[1].cells[1]);
					MembersArray[index][type]['avg_damage'] = htmlParseMemberStatistic(account_statistics[1].rows[2].cells[1]);
					MembersArray[index][type]['avg_frags_ships'] = htmlParseMemberStatistic(account_statistics[1].rows[3].cells[1]);
					MembersArray[index][type]['avg_frags_planes'] = htmlParseMemberStatistic(account_statistics[1].rows[4].cells[1]);
					MembersArray[index][type]['avg_capture_base'] = htmlParseMemberStatistic(account_statistics[1].rows[5].cells[1]);
					MembersArray[index][type]['avg_defend_base'] = htmlParseMemberStatistic(account_statistics[1].rows[6].cells[1]);
					
					MembersArray[index][type]['max_xp'] = htmlParseMemberStatistic(account_statistics[2].rows[1].cells[1]);
					MembersArray[index][type]['max_damage'] = htmlParseMemberStatistic(account_statistics[2].rows[2].cells[1]);
					MembersArray[index][type]['max_frags_ships'] = htmlParseMemberStatistic(account_statistics[2].rows[3].cells[1]);
					MembersArray[index][type]['max_frags_planes'] = htmlParseMemberStatistic(account_statistics[2].rows[4].cells[1]);
					
					var ships__avg_params = account_statistic.getElementsByClassName('ships__avg-params')[0]
					MembersArray[index][type]['avg_level_battles'] = htmlParseMemberStatistic(ships__avg_params.getElementsByClassName('_value')[0]);
				}else{
					MembersArray[index][type]['battles'] = 0;
					MembersArray[index][type]['wins'] = 0;
					MembersArray[index][type]['losses'] = 0;
					MembersArray[index][type]['draws'] = 0;
					MembersArray[index][type]['survived_battles'] = 0;
					MembersArray[index][type]['hits_percents'] = 0;
					MembersArray[index][type]['damage'] = 0;
					MembersArray[index][type]['frags_ships'] = 0;
					MembersArray[index][type]['frags_planes'] = 0;
					MembersArray[index][type]['capture_base'] = 0;
					MembersArray[index][type]['defend_base'] = 0;
					
					MembersArray[index][type]['avg_xp'] = 0;
					MembersArray[index][type]['avg_damage'] = 0;
					MembersArray[index][type]['avg_frags_ships'] = 0;
					MembersArray[index][type]['avg_frags_planes'] = 0;
					MembersArray[index][type]['avg_capture_base'] = 0;
					MembersArray[index][type]['avg_defend_base'] = 0;
					
					MembersArray[index][type]['max_xp'] = 0;
					MembersArray[index][type]['max_damage'] = 0;
					MembersArray[index][type]['max_frags_ships'] = 0;
					MembersArray[index][type]['max_frags_planes'] = 0;
					
					MembersArray[index][type]['avg_level_battles'] = 0;
				}
				
				/* ===== Calc Statistic ===== */
				{
					MembersArray[index][type]['wins_percents'] = (MembersArray[index][type]['wins']/MembersArray[index][type]['battles'])*100;
					MembersArray[index][type]['kill_dead'] = MembersArray[index][type]['frags_ships']/(MembersArray[index][type]['battles']-MembersArray[index][type]['survived_battles']);
				
					var avg_damage = MembersArray[index][type]['avg_damage'];
					var avg_frags_ships = MembersArray[index][type]['avg_frags_ships'];
					var avg_frags_planes = MembersArray[index][type]['avg_frags_planes'];
					var avg_capture_base = MembersArray[index][type]['avg_capture_base'];
					var avg_defend_base = MembersArray[index][type]['avg_defend_base'];
					var avg_level_battles = MembersArray[index][type]['avg_level_battles'];
					
					var wr = avg_damage/(avg_level_battles*10) + avg_frags_ships*200 + (avg_frags_planes/6)*120 + avg_capture_base*35 + avg_defend_base*35;
					if(isNaN(wr)){wr = 0;}
					MembersArray[index][type]['wr'] = wr;
				}
			}
			//console.log(MembersArray[index]);
		}
		function htmlParseMemberStatistic(element){
			var value = element.innerText.trim().replace(new RegExp(' ', 'g'), '');
			
			value = value.replace('%', '');
			value = value.replace(',', '.');
			
			if(value.indexOf('(') > -1 && value.indexOf(')') > -1){
				value = (value.split(' '))[0];
			}
			
			return value;
		}
		
		/* ===== Color function ===== */
		function findColor(value, colorsBorders) {
			if (isNaN(value) || value <= colorsBorders[0]) {
				return color['very_bad'];
			} else if (value <= colorsBorders[1]) {
				return color['bad'];
			} else if (value <= colorsBorders[2]) {
				return color['normal'];
			} else if (value <= colorsBorders[3]) {
				return color['good'];
			} else if (value <= colorsBorders[4]) {
				return color['very_good'];
			} else if (value <= colorsBorders[5]) {
				return color['unique'];
			} else {
				return color['very_bad'];
			}
		}
		function colorBattles(b){
			return findColor(b / 1000, [0.5, 1.5, 4, 7.5, 10, 999]);
		}		
		function colorWinsPercents(wp){
			return findColor(wp, [46, 48, 51, 56, 64, 100]);
		}
		function colorBattlesAvgXP(baxp) {
			return findColor(baxp, [1000, 1150, 1375, 1600, 1825, 9999]);
		}		
		function colorWalkureRating(wr) {
			return findColor(wr, [609, 849, 1144, 1474, 1774, 9999]);
		}		
		function colorAvgDamage(ad, alb) {
			return findColor(ad/(alb*10), [300, 500, 700, 850, 1000, 9999]);
		}
		function colorKillDead(kd) {
			return findColor(kd, [1.3, 1.7, 2.1, 2.5, 2.7, 99]);
		}		
		
		/* ===== UserScript function ===== */
		function getUserScriptDeveloperBlock(){
			var html = '' +
				'<div class="div-link-block">' +
					'<span id="userscriptwotclainfo" class="link-block hide-block">' +
						'UserScript WoTClanInfo ' + VersionWoWsInfo +
						'<div class="icon-link-block"></div>'+
					'</span>' +
				'</div>' +
				'<div id="userscript-block" class="userscriptwotclainfo hide-block" style="text-align: center;">' +
					'<span class="userscript-developer" align="center">' +
						localization['userscript-developer'] +
						' <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> ' +
						localization['userscript-alliance'] +
						' <a target="_blank" style="color: #2CA8C7; font-weight: bold; border-bottom: 1px dotted #2CA8C7;" href="http://'+realm+'.wargaming.net/clans/search/#wgsearch&offset=0&limit=10&search=Walkure">Walkure</a> '+
						'.<br /><br />' +
						localization['userscript-topic']+' '+
						'<a target="_blank" href="'+WoWsInfoLink+'">' +
							WoWsInfoLinkName +
						'</a>' +
						'<br /><br />' +
						'<font style="font-size: 16px; color: #658C4C;">'+localization['userscript-developer-support']+'</font><br />'+
						'<font style="color: #2CA8C7;">Web-Money WMR</font> R295712009837 <br />'+
						'<font style="color: #2CA8C7;">Web-Money WMZ</font> Z226959724402 <br />'+						
						'<font style="color: #2CA8C7;">Yandex Money</font> 41001290117791 <br />'+						
						'<font style="color: #2CA8C7;">RBK Money</font> RU353257918 <br />'+						
					'</span>' +
				'</div>' +
			'';
			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, icon, content, funcOk, OkText, viewCancel){
			
		}
		function onCloseMessage(){
			
		}		
		function getLocalization(lang){
			var localization = [];
			
			{/* Русский */
				localization['ru'] = [];
				
				localization['ru']['realm'] = 'ru';
				
				localization['ru']['Box'] = 'Оповещение';
				localization['ru']['Ok'] = 'Ok';
				localization['ru']['Cancel'] = 'Отмена';
				
				localization['ru']['ErrorScript'] = 'Во время работы UserScript WoWsInfo '+VersionWoWsInfo+', возникла ошибка:';
				localization['ru']['ErrorSendDeveloper'] = 'Сообщите об ошибке разработчику скрипта.';
				
				localization['ru']['userscript-developer'] = 'Разработчик UserScript WoWsInfo:';
				localization['ru']['userscript-alliance'] = 'член альянса';
				localization['ru']['userscript-topic'] = 'Тема на форуме:';
				localization['ru']['userscript-developer-support'] = 'Поддержать автора скрипта:';
				
				localization['ru']['wr'] = 'Walkure Rating';				
			}
			
			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){
		addJQuery(WoWsInfo);
	}
})(window);