// ==UserScript==
// @name WoWsStatInfo
// @author Vov_chiK
// @description Расширенная статистика и функционал.
// @copyright 2015+, Vov_chiK
// @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
// @namespace http://forum.walkure.pro/
// @version 0.3.0.3
// @creator Vov_chiK
// @include http://worldofwarships.ru/cbt/accounts/*
// @match http://worldofwarships.ru/cbt/accounts/*
// @grant GM_xmlhttpRequest
// @downloadURL none
// ==/UserScript==
// @Vov_chiK
(function(window){
/* ===== Main function ===== */
function WoWsStatInfo(){
var VersionWoWsStatInfo = '0.3.0.3';
var WoWsStatInfoLink = '#';
var WoWsStatInfoLinkName = '[0.3.0] [WoWsStatInfo] Расширенная статистика на оф. сайте.';
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 WGAPI = 'http://api.worldoftanks.'+realm+'/';
var WoWsStatInfoHref = 'http://vovchik.myjino.ru/US_WoWsStatInfo/';
var Process = 0;
var MaxProcess = 3;
/* ===== Message UserScript ===== */
{
}
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 += 17;
var agent = '';
var agentArr = navigator.userAgent.split(')');
for(var i = 0; i < agentArr.length; i++){
if(agent != ''){agent += ')\n';}
agent += agentArr[i];
}
var error = localization['ErrorScript']+"\n\n" +
"Browser name: "+navigatorInfo['browserName']+"\n"+
"Full version: "+navigatorInfo['fullVersion']+"\n"+
"Major version: "+navigatorInfo['majorVersion']+"\n"+
"AppName: "+navigatorInfo['appName']+"\n"+
"UserAgent: "+agent+"\n\n"+
"Error: "+message+"\n"+
"URL: " +source+"\n"+
"Line: "+lineno+"\n"+
"Column: "+column+"\n"+
"StackTrace: "+errorObj+"\n\n"+
localization['ErrorSendDeveloper'];
console.log(error);
alert(error);
error = error.split('\n').join('
');
// onShowMessage(
// localization['Box'],
// 'different_error',
// error,
// onCloseMessage,
// localization['Ok'],
// false
// );
return true;
}
function getBrowser(){
var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browserName = navigator.appName;
var fullVersion = ''+parseFloat(navigator.appVersion);
var majorVersion = parseInt(navigator.appVersion, 10);
var nameOffset, verOffset, ix;
// In Opera 15+, the true version is after "OPR/"
if((verOffset = nAgt.indexOf("OPR/")) != -1){
browserName = "Opera";
fullVersion = nAgt.substring(verOffset + 4);
}
// In older Opera, the true version is after "Opera" or after "Version"
else if((verOffset = nAgt.indexOf("Opera")) != -1){
browserName = "Opera";
fullVersion = nAgt.substring(verOffset + 6);
if((verOffset = nAgt.indexOf("Version")) != -1)
fullVersion = nAgt.substring(verOffset + 8);
}
// In MSIE, the true version is after "MSIE" in userAgent
else if((verOffset = nAgt.indexOf("MSIE")) != -1){
browserName = "Microsoft Internet Explorer";
fullVersion = nAgt.substring(verOffset + 5);
}
// In Chrome, the true version is after "Chrome"
else if((verOffset = nAgt.indexOf("Chrome")) != -1) {
browserName = "Chrome";
fullVersion = nAgt.substring(verOffset + 7);
}
// In Safari, the true version is after "Safari" or after "Version"
else if((verOffset = nAgt.indexOf("Safari")) != -1){
browserName = "Safari";
fullVersion = nAgt.substring(verOffset + 7);
if((verOffset = nAgt.indexOf("Version")) != -1)
fullVersion = nAgt.substring(verOffset + 8);
}
// In Firefox, the true version is after "Firefox"
else if((verOffset = nAgt.indexOf("Firefox")) != -1){
browserName = "Firefox";
fullVersion = nAgt.substring(verOffset + 8);
}
// In most other browsers, "name/version" is at the end of userAgent
else if((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))){
browserName = nAgt.substring(nameOffset, verOffset);
fullVersion = nAgt.substring(verOffset + 1);
if(browserName.toLowerCase() == browserName.toUpperCase()){
browserName = navigator.appName;
}
}
// trim the fullVersion string at semicolon/space if present
if((ix = fullVersion.indexOf(";")) != -1)
fullVersion = fullVersion.substring(0, ix);
if((ix = fullVersion.indexOf(" ")) != -1)
fullVersion = fullVersion.substring(0, ix);
majorVersion = parseInt(''+fullVersion, 10);
if(isNaN(majorVersion)){
fullVersion = ''+parseFloat(navigator.appVersion);
majorVersion = parseInt(navigator.appVersion, 10);
}
console.log(''
+'Browser name = '+browserName+'\n'
+'Full version = '+fullVersion+'\n'
+'Major version = '+majorVersion+'\n'
+'navigator.appName = '+navigator.appName+'\n'
+'navigator.userAgent = '+navigator.userAgent+'\n'
);
var navigatorInfo = [];
navigatorInfo['browserName'] = browserName;
navigatorInfo['fullVersion'] = fullVersion;
navigatorInfo['majorVersion'] = majorVersion;
navigatorInfo['appName'] = navigator.appName;
navigatorInfo['userAgent'] = navigator.userAgent;
return navigatorInfo;
}
/* ===== Style UserScript ===== */
{
var 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);
}
var MembersArray = [];
var typeStat = ["pvp", "pve"];
var color = new Array();
color['very_bad'] = '#FE0E00'; // очень плохо
color['bad'] = '#FE7903'; // плохо
color['normal'] = '#F8F400'; // средне
color['good'] = '#60FF00'; // хорошо
color['very_good'] = '#02C9B3'; // очень хорошо
color['unique'] = '#D042F3'; // уникально
/* ===== Check load page ===== */
if(window.location.href.indexOf("accounts") > -1 && window.location.href.split('/').length == 7 && window.location.href.split('/')[5].match(/[0-9]+/) != null){
var account_id = window.location.href.split('/')[5].match(/[0-9]+/);
MemberProfilePage();
}
jQ('.link-block').click(function(){onViewBlock(this);});
/* ===== Pages function ===== */
function MemberProfilePage(){
getMemberStatistic();
getJson(WGAPI+'wgn/clans/membersinfo/?application_id='+application_id+'&language='+lang+'&account_id='+MembersArray[0]['account_id'], doneClanInfo, errorClanInfo);
var content = document.getElementsByClassName('content')[0];
var row = content.getElementsByClassName('row')[0];
row.outerHTML += '' +
'
' +
getUserScriptDeveloperBlock() +
'' +
'
' +
'';
}
/* ===== MemberProfilePage function ===== */
function viewMemberProfilePage(){
for(var t = 0; t < typeStat.length; t++){
var type = typeStat[t];
var account_statistics__general = document.getElementsByClassName('account_statistics__general')[t];
if(account_statistics__general !== undefined){
var stat_main_middle = account_statistics__general.getElementsByClassName('stat-main-middle')[0];
stat_main_middle.getElementsByClassName('value')[0].style.color = colorBattlesAvgXP(MembersArray[0][type]['avg_xp']);
var stat = account_statistics__general.getElementsByClassName('stat');
stat[0].getElementsByClassName('value')[0].style.color = colorBattles(MembersArray[0][type]['battles']);
stat[1].getElementsByClassName('value')[0].style.color = colorWinsPercents(MembersArray[0][type]['wins_percents']);
stat[2].getElementsByClassName('value')[0].style.color = colorAvgDamage(MembersArray[0][type]['avg_damage'], MembersArray[0][type]['avg_level_battles']);
stat[3].getElementsByClassName('value')[0].style.color = colorKillDead(MembersArray[0][type]['kill_dead']);
var userbar = '';
var my_profile_nickname = document.getElementsByClassName('js-my_profile_nickname')[0].textContent;
if(type == 'pvp'){
if(my_profile_nickname == MembersArray[0]['account_name']){
userbar += '';
}
userbar += '' +
'
'+
'
'+
''+WoWsStatInfoHref+'bg/userbar.png
'
'';
}
account_statistics__general.outerHTML += '' +
'
' +
'' +
'' +
'| ' +
' ' +
''+localization['wr']+': ' +
''+(MembersArray[0][type]['wr']).toFixed(2)+'' +
' ' +
' | '+
''+
userbar +
' | ' +
'
' +
'
'
'';
}
}
var img = new Image();
img.onload = function(){
var userbar_img = document.getElementById('userbar-img');
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 = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png';
}
img.src = WoWsStatInfoHref+'userbar/'+MembersArray[0]['account_name']+'.png'+'?'+Math.floor(Math.random()*100000001);
jQ('#generator-userbar').click(function(){
GeneratorUserBar();
});
if(MembersArray[0]['clans'] != null){
var day = dateDiffInDays(MembersArray[0]['clans']['joined_at'] * 1000, new Date().getTime());
var content = document.getElementsByClassName('content')[0];
var row = content.getElementsByClassName('row')[0];
var col_md_8 = row.getElementsByClassName('col-md-8')[0];
col_md_8.outerHTML += '' +
'' +
'' +
'';
}
}
function getMemberStatistic(){
MembersArray[0] = [];
var account_href = window.location.href.split('/')[5].split('-');
var account_id = account_href[0];
var account_name = account_href[1];
var account = document.getElementsByClassName('account')[0];
account_name = account.getElementsByTagName('h1')[0].textContent;
MembersArray[0]['account_id'] = account_id;
MembersArray[0]['account_name'] = account_name;
for(var t = 0; t < typeStat.length; t++){
var type = typeStat[t];
MembersArray[0][type] = [];
var account_statistic = document.getElementById('account_statistic-'+type);
if(account_statistic == null){return;}
var account_statistics = account_statistic.getElementsByClassName('account_statistics__rates-small-border');
if(account_statistics.length == 3){
MembersArray[0][type]['battles'] = htmlParseMemberStatistic(account_statistics[0].rows[1].cells[1]);
MembersArray[0][type]['wins'] = htmlParseMemberStatistic(account_statistics[0].rows[2].cells[1]);
MembersArray[0][type]['losses'] = htmlParseMemberStatistic(account_statistics[0].rows[3].cells[1]);
MembersArray[0][type]['draws'] = htmlParseMemberStatistic(account_statistics[0].rows[4].cells[1]);
MembersArray[0][type]['survived_battles'] = htmlParseMemberStatistic(account_statistics[0].rows[5].cells[1]);
MembersArray[0][type]['hits_percents'] = htmlParseMemberStatistic(account_statistics[0].rows[6].cells[1]);
MembersArray[0][type]['damage'] = htmlParseMemberStatistic(account_statistics[0].rows[7].cells[1]);
MembersArray[0][type]['frags_ships'] = htmlParseMemberStatistic(account_statistics[0].rows[8].cells[1]);
MembersArray[0][type]['frags_planes'] = htmlParseMemberStatistic(account_statistics[0].rows[9].cells[1]);
MembersArray[0][type]['capture_base'] = htmlParseMemberStatistic(account_statistics[0].rows[10].cells[1]);
MembersArray[0][type]['defend_base'] = htmlParseMemberStatistic(account_statistics[0].rows[11].cells[1]);
MembersArray[0][type]['avg_xp'] = htmlParseMemberStatistic(account_statistics[1].rows[1].cells[1]);
MembersArray[0][type]['avg_damage'] = htmlParseMemberStatistic(account_statistics[1].rows[2].cells[1]);
MembersArray[0][type]['avg_frags_ships'] = htmlParseMemberStatistic(account_statistics[1].rows[3].cells[1]);
MembersArray[0][type]['avg_frags_planes'] = htmlParseMemberStatistic(account_statistics[1].rows[4].cells[1]);
MembersArray[0][type]['avg_capture_base'] = htmlParseMemberStatistic(account_statistics[1].rows[5].cells[1]);
MembersArray[0][type]['avg_defend_base'] = htmlParseMemberStatistic(account_statistics[1].rows[6].cells[1]);
MembersArray[0][type]['max_xp'] = htmlParseMemberStatistic(account_statistics[2].rows[1].cells[1]);
MembersArray[0][type]['max_damage'] = htmlParseMemberStatistic(account_statistics[2].rows[2].cells[1]);
MembersArray[0][type]['max_frags_ships'] = htmlParseMemberStatistic(account_statistics[2].rows[3].cells[1]);
MembersArray[0][type]['max_frags_planes'] = htmlParseMemberStatistic(account_statistics[2].rows[4].cells[1]);
var ships__avg_params = account_statistic.getElementsByClassName('ships__avg-params')[0]
MembersArray[0][type]['avg_level_battles'] = htmlParseMemberStatistic(ships__avg_params.getElementsByClassName('_value')[0]);
}else{
MembersArray[0][type]['battles'] = 0;
MembersArray[0][type]['wins'] = 0;
MembersArray[0][type]['losses'] = 0;
MembersArray[0][type]['draws'] = 0;
MembersArray[0][type]['survived_battles'] = 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]['avg_level_battles'] = 0;
}
/* ===== Calc Statistic ===== */
{
MembersArray[0][type]['wins_percents'] = (MembersArray[0][type]['wins']/MembersArray[0][type]['battles'])*100;
MembersArray[0][type]['kill_dead'] = MembersArray[0][type]['frags_ships']/(MembersArray[0][type]['battles']-MembersArray[0][type]['survived_battles']);
var avg_damage = MembersArray[0][type]['avg_damage'];
var avg_frags_ships = MembersArray[0][type]['avg_frags_ships'];
var avg_frags_planes = MembersArray[0][type]['avg_frags_planes'];
var avg_capture_base = MembersArray[0][type]['avg_capture_base'];
var avg_defend_base = MembersArray[0][type]['avg_defend_base'];
var avg_level_battles = MembersArray[0][type]['avg_level_battles'];
var wr = avg_damage/(avg_level_battles*10) + avg_frags_ships*200 + (avg_frags_planes/6)*120 + avg_capture_base*35 + avg_defend_base*35;
if(isNaN(wr)){wr = 0;}
MembersArray[0][type]['wr'] = wr;
}
}
//console.log(MembersArray[0]);
}
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];
viewMemberProfilePage();
}
function errorClanInfo(url){
MembersArray[0]['clans'] = null;
viewMemberProfilePage();
}
function GeneratorUserBar(){
var jsonString = 'json='+JSON.stringify(MembersArray[0])+'&type=userbar';
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 = xmlhttp.responseText;
}
}
};
xmlhttp.send(jsonString);
}
function htmlParseMemberStatistic(element){
var value = element.textContent.trim().replace(new RegExp(' ', 'g'), '');
value = value.replace('%', '');
value = value.replace(',', '.');
if(value.indexOf('(') > -1 && value.indexOf(')') > -1){
value = (value.split(' '))[0];
}
return value;
}
/* ===== Color function ===== */
function findColor(value, colorsBorders) {
if (isNaN(value) || value <= colorsBorders[0]) {
return color['very_bad'];
} else if (value <= colorsBorders[1]) {
return color['bad'];
} else if (value <= colorsBorders[2]) {
return color['normal'];
} else if (value <= colorsBorders[3]) {
return color['good'];
} else if (value <= colorsBorders[4]) {
return color['very_good'];
} else if (value <= colorsBorders[5]) {
return color['unique'];
} else {
return color['very_bad'];
}
}
function colorBattles(b){
return findColor(b / 1000, [0.5, 1.5, 4, 7.5, 10, 999]);
}
function colorWinsPercents(wp){
return findColor(wp, [46, 48, 51, 56, 64, 100]);
}
function colorBattlesAvgXP(baxp) {
return findColor(baxp, [1000, 1150, 1375, 1600, 1825, 9999]);
}
function colorWalkureRating(wr) {
return findColor(wr, [609, 849, 1144, 1474, 1774, 9999]);
}
function colorAvgDamage(ad, alb) {
return findColor(ad/(alb*10), [300, 500, 700, 850, 1000, 9999]);
}
function colorKillDead(kd) {
return findColor(kd, [1.3, 1.7, 2.1, 2.5, 2.7, 99]);
}
/* ===== UserScript function ===== */
function 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'] = '465b433458404851342a8ad750e67820'; // .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 = '' +
'' +
'
' +
'UserScript WoWsStatInfo ' + VersionWoWsStatInfo +
''+
'' +
'
' +
'' +
'
' +
localization['userscript-developer'] +
' Vov_chiK ' +
localization['userscript-alliance'] +
' Walkure.' +
'
' +
localization['userscript-topic']+' '+
'' +
WoWsStatInfoLinkName +
'' +
'
' +
''+localization['userscript-developer-support']+'
'+
'Web-Money WMR R295712009837
'+
'Web-Money WMZ Z226959724402
'+
'Yandex Money 41001290117791
'+
'RBK Money RU353257918
'+
'' +
'
' +
'';
return html;
}
function onViewBlock(element){
if(null != element.getAttribute('id')){
var viewId = element.getAttribute('id');
var viewClassLink = element.getAttribute('class');
var viewBlock = document.getElementsByClassName(viewId)[0];
if(viewClassLink == 'link-block hide-block'){
element.setAttribute('class', 'link-block show-block');
viewBlock.setAttribute('class', viewBlock.getAttribute('class').replace('hide-block', 'show-block'));
setLocalStorage(viewId, 'show', false);
}else{
element.setAttribute('class', 'link-block hide-block');
viewBlock.setAttribute('class', viewBlock.getAttribute('class').replace('show-block', 'hide-block'));
setLocalStorage(viewId, 'hide', false);
}
}
}
function checkLocalStorage(){
try{
return 'localStorage' in window && window['localStorage'] !== null;
}catch (e){
return false;
}
}
function setLocalStorage(key, value, allPageHost){
if(checkLocalStorage()){
if(allPageHost){key = key+ClanId;}
window.localStorage.setItem(key, value);
}else{
setCookie(key, value, allPageHost);
}
}
function getLocalStorage(key, allPageHost){
var value = null;
if(checkLocalStorage()){
if(allPageHost){key = key+ClanId;}
value = window.localStorage.getItem(key);
}else{
value = getCookie(key);
}
return value;
}
function setCookie(c_name, value, allPageHost){
var exdate = new Date();
exdate.setDate(exdate.getDate() + 365);
if(allPageHost){
var c_value = escape(value) + ((365 == null) ? "" : "; expires="+exdate.toUTCString()+"; domain=" +window.location.hostname+"; path=/");
document.cookie = c_name + "=" + c_value;
}else{
var c_value = escape(value) + ((365 == null) ? "" : "; expires="+exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
}
function getCookie(c_name){
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if(c_start == -1){
c_start = c_value.indexOf(c_name + "=");
}
if(c_start == -1){
c_value = null;
}else{
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if(c_end == -1){
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
function onShowMessage(title, icon, content, funcOk, OkText, viewCancel){
}
function onCloseMessage(){
}
// 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 getLocalization(lang){
var localization = [];
{/* Русский */
localization['ru'] = [];
localization['ru']['realm'] = 'ru';
localization['ru']['Box'] = 'Оповещение';
localization['ru']['Ok'] = 'Ok';
localization['ru']['Cancel'] = 'Отмена';
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']['generator-userbar'] = 'Создать UserBar';
localization['ru']['wr'] = 'WR';
}
return localization[lang];
}
}
/* ===== Load UserScript ===== */
function addJQuery(callback){
var script = document.createElement("script");
script.async = true;
script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js");
script.addEventListener(
'load',
function(){
var script = document.createElement("script");
script.async = true;
script.textContent = "window.jQ = jQuery.noConflict(true);"+
"("+callback.toString()+")();";
document.head.appendChild(script);
},
false
);
document.head.appendChild(script);
}
if(window.location.host.indexOf("worldofwarships") > -1){
addJQuery(WoWsStatInfo);
}
})(window);