WoWsStatInfo

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

目前為 2015-09-02 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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
// ==/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 = '' +
				'<style>' +
					'.ui-dialog{box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.12), 0 0 25px 25px rgba(0, 0, 0, 0.3);background-color: rgba(41, 41, 41, 0.8);position: absolute;top: 0;left: 0;outline: 0;padding: 23px 31px 28px;}' +
					'.ui-widget-content{color: #b1b2b3;}' +
					'.ui-widget{font-family: Arial, "Helvetica CY", Helvetica, sans-serif;font-size: 15px;}' +
					'.ui-corner-all{border-bottom-right-radius: 2px;border-bottom-left-radius: 2px;border-top-right-radius: 2px;border-top-left-radius: 2px;}' +
					'.ui-front{z-index: 250;}' +
					'.ui-dialog:before{background: url("http://ru.wargaming.net/clans/static/1.4.4/images/plugins/jquery-ui/dialog_gradient.png") repeat-x;height: 162px;width: 100%;position: absolute;top: 0;left: 0;z-index: 5;}' +
					'.ui-dialog .ui-dialog-titlebar{border-bottom: 1px solid rgba(0, 0, 0, 0.7);box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.05);padding: 0 0 14px;position: relative;z-index: 10;}' +
					'.ui-widget-header{color: #fff;font-family: "WarHeliosCondC", Arial Narrow, Tahoma, arial, sans-serif;font-size: 25px;font-weight: normal;line-height: 30px;}' +
					'.ui-helper-clearfix{min-height: 0;support: IE7;}' +
					'.ui-widget-content{color: #b1b2b3;}' +
					'.ui-widget{font-family: Arial, "Helvetica CY", Helvetica, sans-serif;font-size: 15px;}' +
					'.ui-helper-clearfix:before, .ui-helper-clearfix:after{content: "";display: table;border-collapse: collapse;}' +
					'.ui-helper-clearfix:after{clear: both;}' +
					'.ui-helper-clearfix:before, .ui-helper-clearfix:after{content: "";display: table;border-collapse: collapse;}' +
					'.ui-dialog .ui-dialog-title{float: left;margin: 0;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}' +
					'.ui-dialog .ui-dialog-titlebar-close{margin: -16px -3px 0;height: 20px;width: 20px;position: absolute;top: 50%;right: 0;}' +
					'.ui-widget .ui-widget{font-size: 1em;}' +
					'button.ui-button-icon-only {width: 16px;}' +
					'.ui-state-default{border: 1px solid transparent;color: #b1b2b3;display: inline-block;font-size: 13px;line-height: 30px;padding: 0 5px;height: 30px;width: 20px;}' +
					'.ui-button{background: none;border: 0;display: inline-block;position: relative;padding: 0;line-height: normal;cursor: pointer;vertical-align: middle;text-align: center;overflow: visible;}' +
					'.ui-button-icon-only .ui-icon{left: 50%;margin-left: -8px;}' +
					'.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon{position: absolute;top: 50%;margin-top: -8px;}' +
					'.ui-icon-closethick{background: url("http://ru.wargaming.net/clans/static/1.4.4/images/plugins/jquery-ui/dialog_close.png");}' +
					'.ui-icon{width: 16px;height: 16px;}' +
					'.ui-icon{display: block;text-indent: -99999px;overflow: hidden;background-repeat: no-repeat;}' +
					'.ui-state-default{border: 1px solid transparent;color: #b1b2b3;display: inline-block;font-size: 13px;line-height: 30px;padding: 0 5px;height: 30px;width: 20px;}' +
					'.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text{padding: .4em;text-indent: -9999999px;}' +
					'.ui-button .ui-button-text{display: block;line-height: normal;}' +
					'.ui-dialog .ui-dialog-content{position: relative;border: 0;padding: 0;background: none;z-index: 10;}' +
					'.ui-widget-content{color: #b1b2b3;}' +
					'.popup{margin: 10px auto 0;font-size: 15px;transition: height .3s;}' +
					'.popup_footer{margin-top: 20px;position: relative;}' +
					'.button__align-middle{vertical-align: middle;}' +
					'.button{-webkit-appearance: none;-moz-appearance: none;background: #735917;border-radius: 2px;border: none;box-shadow: 0 0 10px rgba(0, 0, 0, 0.3), 1px 0 2px rgba(0, 0, 0, 0.3);display: inline-block;padding: 0 0 2px;overflow: hidden;color: #000;font-family: Arial, "Helvetica CY", Helvetica, sans-serif;font-size: 17px;font-weight: normal;text-decoration: none;cursor: pointer;vertical-align: top;}' +
					'.button_wrapper{background: #dbae30;background: linear-gradient(to bottom, #fff544 0%, #dbae30 100%);border-radius: 2px;display: block;padding: 1px 1px 0;position: relative;}' +
					'.button_body{background: #e5ad2c;background: linear-gradient(to bottom, #e7b530 0%, #e5ad2c 100%);display: block;border-radius: 2px;padding: 10px 23px 11px;position: relative;text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);transition: all .2s;}' +
					'.button_inner{display: block;position: relative;z-index: 10;white-space: nowrap;line-height: 20px;}' +
					'.link__cancel{display: inline-block;font-size: 15px;margin-left: 18px;padding-top: 10px;}' +
					'.link{border-bottom: 1px solid transparent;padding-bottom: 1px;color: #e5b12e;line-height: 18px;text-decoration: none;transition: all .2s;}' +
				'</style>' +
				'<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">' +
					'<span class="ui-dialog-title">{%TITLE%}</span>' +
					'<button id="userscript-message-close" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" title="Close">' +
						'<span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span>' +
						'<span class="ui-button-text">Close</span>' +
					'</button>' +
				'</div>' +
				'<div class="ui-dialog-content ui-widget-content" style="width: auto; min-height: 44px; max-height: none; height: auto;">' +
					'<div class="popup">{%TEXT%}</div>' +
					'<div class="popup_footer">' +
						'<button id="userscript-message-ok" class="button button__align-middle">' +
							'<span class="button_wrapper">' +
								'<span class="button_body">' +
									'<span class="button_inner">'+localization['Ok']+'</span>' +
								'</span>' +
							'</span>' +
						'</button>' +
						'<a id="userscript-message-cancel" class="link link__cancel" style="display: block; cursor: pointer;" >'+localization['Cancel']+'</a>' +
					'</div>' +
				'</div>' +
			'';
			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('<br />');
				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']+'<br />'+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 += '' +
				'<div id="userscript-block-list">' +
					'<div id="userscript-forum-link">' +
						'<a target="_blank" href="http://forum.worldofwarships.'+realm+'/index.php?/user/dn-'+account_name+'-/">'+localization['forum-profile']+'</a>' +
					'</div>' +
					'<style>' +
						'.b-profile-clan{max-width: 400px; padding-right: 100px;margin-bottom: 14px;padding-top: 5px;position: relative;}' +
						'.b-profile-clan_photo{float: left;width: 61px;position: relative;min-height: 70px;top: 5px;}' +
						'.b-profile-clan_color{width: 15px;height: 15px;position: absolute;left: 38px;top: 2px;}' +
						'.b-profile-clan_link{background-image: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NTIxMEI3ODRFODExRTI5ODYxODk4QjE3Q0IyNzkyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkI4NTIxMEI4ODRFODExRTI5ODYxODk4QjE3Q0IyNzkyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Qjg1MjEwQjU4NEU4MTFFMjk4NjE4OThCMTdDQjI3OTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Qjg1MjEwQjY4NEU4MTFFMjk4NjE4OThCMTdDQjI3OTIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7V+fopAAAMmElEQVR42sxazY7jxhEm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");display: block;height: 54px;position: absolute;left: 2px;padding: 11px 0 0 11px;width: 54px;}' +
						'.b-profile-clan_text{margin-left: 61px;}' +
						'.b-profile-clan_text-wrpr{font-size: 13px;margin: 5px 0 0;overflow: hidden;padding-right: 0;padding: 0 0 7px;text-overflow: ellipsis;white-space: nowrap;}' +
						'.b-link-clan{color: #f9d088;font-weight: bold;text-decoration: none;}' +
						'.b-link-clan_tag{color: #babcbf;}' +
						'.b-statistic{overflow: hidden;margin: 0 0 16px;line-height: 14px;}' +
						'.b-statistic_item{color: #606061;font-size: 11px;margin: 0;padding: 0;line-height: 125%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;word-wrap: normal;}' +
						'.b-statistic_value{color: #babcbf;}' +
					'</style>' +
					'<div id="wowsstatinfo-profile-clan">' +
						'<div class="b-profile-clan b-profile-clan__points js-tooltip" id="js-profile-clan">' +
							'<img src="http://'+realm+'.wargaming.net/clans/static/0.1.0.1/images/processing/loader.gif" />' + 
						'</div>' +
					'</div>' +
					getUserScriptDeveloperBlock() +
					'' +
				'</div>' +
			'';			
			
			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 += '' +
				'<li class="clear clearfix">' +
					'<span class="row_title">'+localization['profile-wows']+':</span>' +
					'<span class="row_data"><a href="http://worldofwarships.'+realm+'/community/accounts/'+user_id+'-/" target="_black">'+nickname.innerHTML+'</a></span>' +
				'</li>' +
				'<li class="clear clearfix">' +
					'<span class="row_title">'+localization['profile-clan']+':</span>' +
					'<span class="row_data member_'+user_id+'"></span>' +
				'</li>' +				
			'';
			
			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 += '' +
						'<li class="member_'+account_id+' desc lighter" style="min-height: 50px;">' +
							'<img style="width: 32px; height: 32px;" src="http://'+realm+'.wargaming.net/clans/static/0.1.0.1/images/processing/loader.gif" />' +
							localization['search-clan-forum'] +
						'</li>' +
					'';
				}
			}
		}
		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 += '' +
				'<div style="padding-bottom: 20px;">' +
					getUserScriptDeveloperBlock() + 
					'<div class="div-link-block">' +
						'<span id="clan-member-history" class="link-block '+view_block_history+'-block">' +
							localization['block-link-clan-member-history'] +
							'<div class="icon-link-block"></div>'+
						'</span>' +
					'</div>' +
					'<div id="userscript-block" class="clan-member-history '+view_block_history+'-block" style="text-align: center;">' +
						'<img src="/clans/static/0.1.0.1/images/processing/loader.gif" />' +
					'</div>' +
				'</div>' +
			'';
			
			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 = '<br />';
				}
			
				var html = '' +
					br_line +
					'<span>' +
						'<a align="center" href="http://'+realm+'.wargaming.net/clans/'+clansInfo['clan']['clan_id']+'/" title="'+clansInfo['clan']['tag']+'" rel="home" target="_blank">' +
							'<img src="'+icon+'" alt="'+clansInfo['clan']['tag']+'">' +
						'</a>' +
						'<a align="center" href="http://'+realm+'.wargaming.net/clans/'+clansInfo['clan']['clan_id']+'/" title="'+clansInfo['clan']['tag']+'" rel="home" target="_blank">['+clansInfo['clan']['tag']+']</a>' +
					'</span>' +
				'';
				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 = '' +
					'<div class="b-profile-clan b-profile-clan__points js-tooltip" id="js-profile-clan">' +
						'<div class="b-profile-clan_photo">' +
							'<div style="background: '+MembersArray[0]['clans']['clan']['color']+';" class="b-profile-clan_color"><!-- --></div>' +
							'<a class="b-profile-clan_link" href="http://'+realm+'.wargaming.net/clans/'+MembersArray[0]['clans']['clan']['clan_id']+'/" target="_blank">' +
								'<img alt="'+MembersArray[0]['clans']['clan']['name']+'" src="'+icon+'" width="32" height="32">' +
							'</a>' +
						'</div>' +
						'<div class="b-profile-clan_text">' +
							'<div class="b-profile-clan_text-wrpr">' +
								'<a class="b-link-clan" href="http://'+realm+'.wargaming.net/clans/'+MembersArray[0]['clans']['clan']['clan_id']+'/" target="_blank">' +
									'<span class="b-link-clan_tag">['+MembersArray[0]['clans']['clan']['tag']+']</span>&nbsp;'+MembersArray[0]['clans']['clan']['name']+'' +
								'</a>' +
							'</div>' +
							'<div class="b-statistic">' +
								'<p class="b-statistic_item">'+localization['role']+': <span class="b-statistic_value">'+MembersArray[0]['clans']['role_i18n']+'</span></p>' +
								'<p class="b-statistic_item">'+localization['clan-day']+': <span class="b-statistic_value">'+day+'</span></p>' +
							'</div>' +
						'</div>' +
					'</div>' +
				'';
			}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 += '<small class="small-survived_percents">('+valueFormat((MembersArray[0][type]['survived_percents']).toFixed(2))+'%)</small>';
						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 = '<span>'+localization['wr']+'</span>';
							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 = '<span>0</span>';
								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)+' <span style="color:'+findColorASC(wins_percents, 'wins_percents')+';">('+valueFormat((wins_percents).toFixed(0))+'%)</span>';							
								
								row.cells[4].setAttribute('style', 'white-space: nowrap;');
								row.cells[4].innerHTML = ' <span style="color:'+findColorASC(avg_xp, 'avg_xp')+';">'+valueFormat(avg_xp)+'</span>';
							}
							
							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 = '<span>0</span>';
								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)+' <span style="color:'+findColorASC(wins_percents, 'wins_percents')+';">('+valueFormat((wins_percents).toFixed(0))+'%)</span>';							
								
								row.cells[3].setAttribute('style', 'white-space: nowrap;');
								row.cells[3].innerHTML = ' <span style="color:'+findColorASC(avg_xp, 'avg_xp')+';">'+valueFormat(avg_xp)+'</span>';
							}
							
							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 = '<span style="color:'+findColorASC(MembersArray[0][type]['ships'][index]['wr'], 'wr')+';">'+valueFormat((MembersArray[0][type]['ships'][index]['wr']).toFixed(0))+'</span>';								
								
								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 = '<span style="color:'+findColorASC(wr_class, 'wr')+';">'+valueFormat((wr_class).toFixed(0))+'</span>';								
								
								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 += '<button class="btn btn-lg btn-turqoise" id="generator-userbar" style="margin: 5px;">'+localization['generator-userbar']+'</button>';
				}
				userbar += '' +
					'<br />'+
					'<img id="userbar-img" src="'+WoWsStatInfoHref+'bg/userbar.png" />'+
					'<div id="userbar-link" style="margin: 5px; font-size: 14px;">[img]'+WoWsStatInfoHref+'bg/userbar.png[/img]</div>'
				'';
				
				account_main_stats_mobile.outerHTML += '' +
					'<hr />' +
					'<table id="main-page-script-block" style="width: 100%;">' +
						'<tr>' +
							'<td style="width: 410px; vertical-align: top;">' +
								''+
							'</td>'+
							'<td>'+
							'</td>'+
							'<td style="/* width: 470px; */ text-align: right; vertical-align: top;">'+
								userbar +
							'</td>' +
						'</tr>' +
					'</table>'
				'';
			}
			
			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 = '' +
					'<table class="account-table">' +
						'<thead>' +
							'<tr>' +
								'<th colspan="2">' +
									'<h3 class="_title">'+localization['additional-results']+'</h3>' +
								'</th>' +
							'</tr>' +
						'</thead>' +
						'<tbody>' +
							'<tr>' +
								'<td class="_name">' +
									'<span>'+localization['number-ships-x']+'</span>' +
								'</td>' +
								'<td class="_value">' +
									'<span>'+MembersArray[0]['pvp']['ships_x_level']+'</span>'+
								'</td>' +
							'</tr>' +
							'<tr>' +
								'<td class="_name">' +
									'<span>'+localization['wr']+'</span>' +
								'</td>' +
								'<td class="_value">' +
									'<span style="color: '+findColorASC(MembersArray[0]['pvp']['wr'], 'wr')+';">'+
										valueFormat((MembersArray[0]['pvp']['wr']).toFixed(2)) + 
									'</span>'+
								'</td>' +
							'</tr>' +
						'</tbody>' +
					'</table>' +
				'';
				
				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 += '<div style="width: 488px; height: 429px; overflow-y: scroll;">';
			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 += '<input type="radio" name="userbar-bg" value="'+data[i]+'" '+checked+'> '+data[i]+'<br />';
					html += '<img src="'+WoWsStatInfoHref+'bg/'+data[i]+'.png" title="'+data[i]+'"/><br /><br />';
				}
			}
			html += '</div>';
			
			onShowMessage(
				localization['userbar-bg'],
				html,
				function(){GeneratorUserBar(); onCloseMessage();},
				localization['Ok'],
				true
			);			
		}
		function errorUserBarBG(url){
			var html = '' +
				'<div style="width: 488px;">' +
					'<input type="radio" name="userbar-bg" value="userbar" checked="checked"> userbar<br />' +
					'<img src="'+WoWsStatInfoHref+'bg/userbar.png" title="userbar"/><br /><br />' +
				'</div>' +
			'';
			
			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 = '<div style="overflow: auto; height: 150px;"><table style="border-collapse: separate; font-size: 13px; border-bottom: 1px solid rgba(255, 255, 255, 0.1);" cellspacing="0" cellpadding="0"><tbody>';
			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%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');
						html +=  '<tr>'+				
							'<td class="table-default_cell" align="left" style="padding: 0px;">'+
								' <font color="red">'+text+'</font>'+
							'</td>'+
						'</tr>';						
					}else if(type == '2'){
						var text = localization['member-history-join'];
						text = text.replace('%NAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');					
						html +=  '<tr>'+				
							'<td class="table-default_cell" align="left" style="padding: 0px;">'+
								' <font color="green">'+text+'</font>'+
							'</td>'+
						'</tr>';						
					}else if(type == '3'){
						var text = localization['member-history-rerole'];
						text = text.replace('%NAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mName+'</a>');					
						text = text.replace('%OLDROLE%',getRoleText(mOld));					
						text = text.replace('%NEWROLE%',getRoleText(mNew));					
						html +=  '<tr>'+				
							'<td class="table-default_cell" align="left" style="padding: 0px;">'+
								text+
							'</td>'+
						'</tr>';					
					}else if(type == '4'){
						var text = localization['member-history-rename'];
						text = text.replace('%OLDNAME%',mOld);						
						text = text.replace('%NEWNAME%','<a target="_blank" href="http://worldoftanks.'+realm+'/community/accounts/'+mId+'/">'+mNew+'</a>');						
						html +=  '<tr>'+				
							'<td class="table-default_cell" align="left" style="padding: 0px;">'+
								text+
							'</td>'+
						'</tr>';					
					}
				}
			}else{
				html += '' +
					'<tr>' +
						'<td class="table-default_cell" style="padding: 0px;">' +
							localization['member-history-notchange'] +
						'</td>' +
					'</tr>' +
				'';
			}
			
			html += '</tbody></table></div>';
			html += '' +
				'<div align="right" style="border-top: 1px solid rgba(255, 255, 255, 0.1);">' +
					'<br />' +
					'<button id="run-history-clear" class="button" style="display: block;">' +
						'<span class="button_wrapper">' +
							'<span style="padding: 5px;" class="button_body">' +
								'<span class="button_inner">'+localization['member-history-clear']+'</span>' +
							'</span>' +
						'</span>' +
					'</button>' +
				'</div>' +
			'';
			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 = '' +
				'<div class="div-link-block">' +
					'<span id="userscriptwowsstatinfo" class="link-block hide-block">' +
						'UserScript WoWsStatInfo ' + VersionWoWsStatInfo +
						'<div class="icon-link-block"></div>'+
					'</span>' +
				'</div>' +
				'<div id="userscript-block" class="userscriptwowsstatinfo 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://ru.wargaming.net/clans/search/#wgsearch&offset=0&limit=10&search=Walkure">Walkure</a>.' +
						'<br /><br />' +
						localization['userscript-topic']+' '+
						'<a target="_blank" href="'+WoWsStatInfoLink+'">' +
							WoWsStatInfoLinkName +
						'</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, 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% &rArr; %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% &rArr; %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);