(\d*\.*\d*)+<\/div>/gi,
res = regexp.exec(response);
if (res && res.length > 0) {
var nr = Number(res[1]),
xnr = GetXRating(nr, "nr");
document.getElementById("js-us-NoobStat").innerHTML = "
" + nr + "";
document.getElementById("js-us-NoobStat-xvm").innerHTML = "
" + xnr + "";
document.getElementById("js-us-NoobStat_tooltip").innerHTML = outWotNoobStatTitle(Number(res[1]));
}
}
}//////////////////////////main
function CalcEff(New, AvgLev, battles, wins, damag, frags, spotted, caps, defs, summaryxp) {
var effs = [];
effs[0] = (damag / battles * (10 / (AvgLev + 2)) * (0.23 + 2 * AvgLev / 100) +
frags / battles * 250 +
spotted / battles * 150 +
Math.log((caps / battles) + 1) / Math.log(1.732) * 150 +
defs / battles * 150).toFixed(2); //eff
effs[1] = (damag / battles * (10 / AvgLev) * (0.15 + 2 * AvgLev / 100) +
frags / battles * (0.35 - 2 * AvgLev / 100) * 1000 +
spotted / battles * 200 +
caps / battles * 150 +
defs / battles * 150).toFixed(2); //old eff
effs[2] = ((1240 - 1040 / Math.pow(Math.min(AvgLev, 6), 0.164)) * frags / battles +
damag / battles * 530 / (184 * Math.pow(Math.E, 0.24 * AvgLev) + 130) +
spotted / battles * 125 +
Math.min(defs / battles, 2.2) * 100 +
((185 / (0.17 + Math.pow(Math.E, (wins / battles * 100 - 35) * -0.134))) - 500) * 0.45 +
(6 - Math.min(AvgLev, 6)) * -60).toFixed(2);
if (New === 0)
effs[3] = (Math.log(battles) / 10 * (summaryxp / battles * 1 +
damag / battles * (wins / battles * 2.0 + frags / battles * 0.9 + spotted / battles * 0.5 + caps / battles * 0.5 + defs / battles * 0.5))).toFixed(2);
return effs;
}
function insertNewTr(NewTrParent, text, val, title, tid) {
var trNew = document.createElement('tr');
var tdNewName = document.createElement('td'),
div1 = document.createElement('div'),
div2 = document.createElement('div');
tdNewName.className = "td-minor";
tdNewName.innerHTML = text;
var tdNew = document.createElement('td');
div1.innerHTML = val;
tdNew.className = "t-dotted_value";
tdNew.appendChild(div1);
if (title && title.length) {
div1.setAttribute("id", "js-" + tid);
div1.className = "js-tooltip";
div2.innerHTML = title;
div2.setAttribute("id", "js-" + tid + "_tooltip");
div2.className = "b-tooltip-main";
tdNew.appendChild(div2);
}
NewTrParent.parentNode.appendChild(trNew);
trNew.appendChild(tdNewName);
trNew.appendChild(tdNew);
return trNew;
}
function fixStatData(response) {
var lang,
UserId = window.location.href.match(/\/(\d+)/)[1];
if (document.title.indexOf("Профиль игрока") > -1)
lang = "ru";
eval("var resp =" + response);
var alltanks = GetLSData("AllTanksArr");
if (alltanks) {
eval("var alltdata =" + alltanks);
var alltanksArr = [], tankid;
for (var t in alltdata.data) {
tankid = alltdata.data[t].tank_id;
alltanksArr[tankid] = [];
alltanksArr[tankid]["name"] = alltdata.data[t].name_i18n;
alltanksArr[tankid]["is_premium"] = alltdata.data[t].is_premium;
}
var ttStat = [], tStat = [];
for (var i = 0; i < resp.data[UserId].length; i++) {
tankid = resp.data[UserId][i].tank_id;
if (tankid in alltanksArr) {
var tName = alltanksArr[tankid]["name"];
ttStat[tankid] = {"win": resp.data[UserId][i].statistics.wins, "battles": resp.data[UserId][i].statistics.battles, "is_premium": alltanksArr[tankid]["is_premium"]};
}
}
var tanks = document.getElementsByClassName("t-profile_tankstype__item");
for (i = 0; i < tanks.length; i++) {
var t = tanks[i].cells,
imgName = t[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1],
tankId = parseInt(tanks[i].nextElementSibling.getAttribute('data-vehicle-cd')),
tName = t[0].getElementsByClassName('b-name-vehicle')[0].innerHTML;
tanks[i].className += " js-tooltip";
tanks[i].id = "us-t-" + imgName;
var div = document.createElement('div');
tStat[imgName] = ttStat[tankId];
if (tStat[imgName]) {
if (tStat[imgName].is_premium) tanks[i].cells[0].getElementsByClassName('b-name-vehicle')[0].setAttribute('style', 'color: #ffc363 !important;');
div.innerHTML = "
" + (lang === "ru" ? "Боев|Побед (%Побед)" : "Battles|Wins (%Wins)") + "
" + tStat[imgName].battles + "|" + tStat[imgName].win + " (" + col(tStat[imgName].win / tStat[imgName].battles * 100, 2) + ")
";
}
div.setAttribute("id", "us-t-" + imgName + "_tooltip");
div.className = "b-tooltip-main";
tanks[i].appendChild(div);
if (tStat[imgName])
t[2].innerHTML = col(tStat[imgName].win / tStat[imgName].battles * 100, 2);
if (tStat[imgName])
t[2].setAttribute("wcount", tStat[imgName].win);
}
var daystat = GetStat();
if (daystat) {
var dayArray = [],
dsArr = daystat.split("|"),
strArray = dsArr[0].split("/");
for (var i = 1; i < strArray.length; i++) {
str = strArray[i].split(";");
var tName = str[0].toLowerCase();
dayArray[tName] = new Object();
dayArray[tName].b = toFl(str[1]);
dayArray[tName].w = str.length > 3 ? str[3] : -1;
}
PaintOldAvgLev(dayArray);
}
//OutUnoffStat();
} else {
xdr.xget("http://api." + document.location.host + "/wot/encyclopedia/tanks/?application_id=" + api_key, saveTanksArr);
}
}
function batCompanyClan(response) {
eval("var resp =" + response);
var UserId = window.location.href.match(/\/(\d+)/)[1],
companyTable = document.getElementById('company-battles'),
clanTable = document.getElementById('clan-battles'),
daystat = GetStat(),
oldeffres = false;
if (daystat) {
var dsArr = daystat.split("|");
if (dsArr[2]) {
eval('ostr =' + dsArr[2]);
var oldeffres = CalcEff(0, 6,
ostr.all.battles - ostr.company.battles - ostr.clan.battles,
ostr.all.wins - ostr.company.wins - ostr.clan.wins,
ostr.all.damage_dealt - ostr.company.damage_dealt - ostr.clan.damage_dealt,
ostr.all.frags - ostr.company.frags - ostr.clan.frags,
ostr.all.spotted - ostr.company.spotted - ostr.clan.spotted,
ostr.all.capture_points - ostr.company.capture_points - ostr.clan.capture_points,
ostr.all.dropped_capture_points - ostr.company.dropped_capture_points - ostr.clan.dropped_capture_points,
ostr.all.xp - ostr.company.xp - ostr.clan.xp);
var ohr = (ostr.all.hits / ostr.all.shots * 100).toFixed(2),
osurvb = (ostr.all.survived_battles / ostr.all.battles * 100).toFixed(2);
}
}
insertNewTr(companyTable, "Боев", resp.data[UserId].statistics.company.battles +
(oldeffres ? "
" + ((resp.data[UserId].statistics.company.battles - ostr.company.battles > 0) ? " (+" + (resp.data[UserId].statistics.company.battles - ostr.company.battles) + ")" : "") + "" : "") +
" (" + (resp.data[UserId].statistics.company.battles / resp.data[UserId].statistics.all.battles * 100).toFixed(2) + "%)",
resp.data[UserId].statistics.company.battles + "
/ " + resp.data[UserId].statistics.all.battles + "", "cpbat");
insertNewTr(companyTable, "Побед", resp.data[UserId].statistics.company.wins +
(oldeffres ? "
" + ((resp.data[UserId].statistics.company.wins - ostr.company.wins > 0) ? " (+" + (resp.data[UserId].statistics.company.wins - ostr.company.wins) + ")" : "") + "" : "") +
" (" + (resp.data[UserId].statistics.company.wins / resp.data[UserId].statistics.all.wins * 100).toFixed(2) + "%)", resp.data[UserId].statistics.company.wins + "
/ " + resp.data[UserId].statistics.all.wins + "", "cpwin");
insertNewTr(companyTable, "Повреждений за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.damage_dealt / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
insertNewTr(companyTable, "Фрагов за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.frags / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
insertNewTr(companyTable, "Обнаружено за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.spotted / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
insertNewTr(companyTable, "Очков захвата за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.capture_points / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
insertNewTr(companyTable, "Очков защиты за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.dropped_capture_points / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
insertNewTr(companyTable, "Опыт за бой", resp.data[UserId].statistics.company.battles > 0 ? (resp.data[UserId].statistics.company.xp / resp.data[UserId].statistics.company.battles).toFixed(2) : '-', "");
insertNewTr(companyTable, "% побед", resp.data[UserId].statistics.company.battles > 0 ? col((resp.data[UserId].statistics.company.wins / resp.data[UserId].statistics.company.battles * 100).toFixed(2)) : '-', "");
insertNewTr(companyTable, "% выживания", resp.data[UserId].statistics.company.battles > 0 ? col((resp.data[UserId].statistics.company.survived_battles / resp.data[UserId].statistics.company.battles * 100).toFixed(2)) : '-', "");
insertNewTr(companyTable, "% попадания", resp.data[UserId].statistics.company.battles > 0 ? col((resp.data[UserId].statistics.company.hits / resp.data[UserId].statistics.company.shots * 100).toFixed(2)) : '-', "");
insertNewTr(clanTable, "Боев", resp.data[UserId].statistics.clan.battles +
(oldeffres ? "
" + ((resp.data[UserId].statistics.clan.battles - ostr.clan.battles > 0) ? " (+" + (resp.data[UserId].statistics.clan.battles - ostr.clan.battles) + ")" : "") + "" : "") +
" (" + (resp.data[UserId].statistics.clan.battles / resp.data[UserId].statistics.all.battles * 100).toFixed(2) + "%)", resp.data[UserId].statistics.clan.battles + "
/ " + resp.data[UserId].statistics.all.battles + "", "clbat");
insertNewTr(clanTable, "Побед", resp.data[UserId].statistics.clan.wins +
(oldeffres ? "
" + ((resp.data[UserId].statistics.clan.wins - ostr.clan.wins > 0) ? " (+" + (resp.data[UserId].statistics.clan.wins - ostr.clan.wins) + ")" : "") + "" : "") +
" (" + (resp.data[UserId].statistics.clan.wins / resp.data[UserId].statistics.all.wins * 100).toFixed(2) + "%)", resp.data[UserId].statistics.clan.wins + "
/ " + resp.data[UserId].statistics.all.wins + "", "clwin");
insertNewTr(clanTable, "Повреждений за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.damage_dealt / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
insertNewTr(clanTable, "Фрагов за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.frags / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
insertNewTr(clanTable, "Обнаружено за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.spotted / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
insertNewTr(clanTable, "Очков захвата за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.capture_points / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
insertNewTr(clanTable, "Очков защиты за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.dropped_capture_points / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
insertNewTr(clanTable, "Опыт за бой", resp.data[UserId].statistics.clan.battles > 0 ? (resp.data[UserId].statistics.clan.xp / resp.data[UserId].statistics.clan.battles).toFixed(2) : '-', "");
insertNewTr(clanTable, "% побед", resp.data[UserId].statistics.clan.battles > 0 ? col((resp.data[UserId].statistics.clan.wins / resp.data[UserId].statistics.clan.battles * 100).toFixed(2)) : '-', "");
insertNewTr(clanTable, "% выживания", resp.data[UserId].statistics.clan.battles > 0 ? col((resp.data[UserId].statistics.clan.survived_battles / resp.data[UserId].statistics.clan.battles * 100).toFixed(2)) : '-', "");
insertNewTr(clanTable, "% попадания", resp.data[UserId].statistics.clan.battles > 0 ? col((resp.data[UserId].statistics.clan.hits / resp.data[UserId].statistics.clan.shots * 100).toFixed(2)) : '-', "");
var effres = CalcEff(0, 6,
resp.data[UserId].statistics.all.battles - resp.data[UserId].statistics.company.battles - resp.data[UserId].statistics.clan.battles,
resp.data[UserId].statistics.all.wins - resp.data[UserId].statistics.company.wins - resp.data[UserId].statistics.clan.wins,
resp.data[UserId].statistics.all.damage_dealt - resp.data[UserId].statistics.company.damage_dealt - resp.data[UserId].statistics.clan.damage_dealt,
resp.data[UserId].statistics.all.frags - resp.data[UserId].statistics.company.frags - resp.data[UserId].statistics.clan.frags,
resp.data[UserId].statistics.all.spotted - resp.data[UserId].statistics.company.spotted - resp.data[UserId].statistics.clan.spotted,
resp.data[UserId].statistics.all.capture_points - resp.data[UserId].statistics.company.capture_points - resp.data[UserId].statistics.clan.capture_points,
resp.data[UserId].statistics.all.dropped_capture_points - resp.data[UserId].statistics.company.dropped_capture_points - resp.data[UserId].statistics.clan.dropped_capture_points,
resp.data[UserId].statistics.all.xp - resp.data[UserId].statistics.company.xp - resp.data[UserId].statistics.clan.xp);
var bsr = document.getElementById("js-bs-rating"),
xbsr = document.getElementById("js-bs-rating-xvm"),
hitrat = document.getElementById("js-hit-ratio"),
hitratt = document.getElementById("js-hit-ratio_tooltip"),
surv = document.getElementById("js-us-surv"),
survb = (resp.data[UserId].statistics.all.survived_battles / resp.data[UserId].statistics.all.battles * 100).toFixed(2);
bsr.innerHTML = "
" + effres[3] + "" + ((oldeffres && (effres[3] - oldeffres[3]).toFixed(2) != 0.0) ? "
(+" : "red'> (") + (effres[3] - oldeffres[3]).toFixed(2) + ")" : "");
var xbs = GetXRating(effres[3], "bs");
if (oldeffres) var oxbs = GetXRating(oldeffres[3], "bs");
xbsr.innerHTML = "
" + xbs + "" + ((oldeffres && (xbs - oxbs).toFixed(2) != 0.0 ) ? "
(+" : "red'> (") + (xbs - oxbs).toFixed(2) + ")" : "");
var hr = (resp.data[UserId].statistics.all.hits / resp.data[UserId].statistics.all.shots * 100).toFixed(2);
hitrat.innerHTML = col(hr) + ((oldeffres && (hr - ohr).toFixed(2) != 0.0) ? "
(+" : "red'> (") + (hr - ohr).toFixed(2) + ")" : "");
hitratt.innerHTML = resp.data[UserId].statistics.all.hits + "
/ " + resp.data[UserId].statistics.all.shots + "";
if (oldeffres && (survb - osurvb).toFixed(2) != 0.0) surv.innerHTML += "
(+" : "red'> (") + (survb - osurvb).toFixed(2) + ")";
GetStatData(effres);
}
function savenominalDamage(response) {
var now = new Date(),
time = now.getTime();
time += 3600 * 24 * 1000;
now.setTime(time);
SetLSData("nominalDamage", response, now.toGMTString());
window.location.reload();
}
function saveWN8Data(response) {
var now = new Date(),
time = now.getTime();
time += 3600 * 24 * 1000;
now.setTime(time);
SetLSData("WN8Data", response, now.toGMTString());
window.location.reload();
}
function GetBattleStat(col) {
switch (col) {
case 1:
return toFl(document.getElementsByClassName("t-personal-data_value__pr")[0].innerHTML);
break;
case 4:
return toFl(document.getElementsByClassName("b-result")[0].getElementsByClassName("t-dotted_value")[1].innerHTML.split("(")[0]);
break;
case 7:
return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[3].innerHTML);
break;
case 9:
return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[0].innerHTML);
break;
case 10:
return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[1].innerHTML);
break;
case 6:
return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[5].innerHTML);
break;
case 8:
return toFl(document.getElementsByClassName("b-result")[1].getElementsByClassName("t-dotted_value")[6].innerHTML);
break;
case 11:
return toFl(document.getElementsByClassName("b-result")[0].getElementsByClassName("t-dotted_value")[4].innerHTML);
break;
case 5:
return toFl(document.getElementsByClassName("b-result")[0].getElementsByClassName("t-dotted_value")[0].innerHTML);
break;
default:
return 0;
break;
break;
}
}
function toFl(s) {
var a = "" + s;
a = a.indexOf(">") > 0 ? a.substr(0, a.indexOf(">")) : a;
return (parseFloat(a.replace(/[\D\.]/g, "")));
}
function getCookie(name) {
var start = document.cookie.indexOf(name + '=');
var len = start + name.length + 1;
if ((!start) && (name !== document.cookie.substring(0, name.length))) {
return null;
}
if (start === -1)
return undefined;
var end = document.cookie.indexOf(';', len);
if (end === -1)
end = document.cookie.length;
var resval = document.cookie.substring(len, end);
name = name + "__2";
start = document.cookie.indexOf(name + '=');
len = start + name.length + 1;
if ((!start) && (name !== document.cookie.substring(0, name.length))) {
return unescape(resval);
}
if (start === -1)
return unescape(resval);
end = document.cookie.indexOf(';', len);
if (end === -1)
end = document.cookie.length;
resval += document.cookie.substring(len, end);
return unescape(resval);
}
function setCookie(name, value, endstr) {
var savestr = escape(value),
savestr2 = false;
if (savestr.length > 3900) {
savestr2 = savestr.slice(3900);
savestr = savestr.slice(0, 3900);
}
if (!endstr)
endstr = "; expires=Mon, 01-Jan-2031 00:00:00 GMT";
document.cookie = name + "=" + savestr + endstr;
if (savestr2) {
document.cookie = name + "__2" + "=" + savestr2 + endstr;
}
}
function GetStat() {
var UserId = window.location.href.match(/\/(\d+)/)[1],
day = 0;
// Перенос старого формата данных
if (GetLSData("daystat_" + UserId)) {
var daystat = GetLSData("daystat_" + UserId);
SetLSData("daystat_" + UserId + "_" + 0, daystat, '01-Jan-2031 00:00:00 GMT');
localStorage.removeItem("daystat_" + UserId);
}
for (var i = 1; i < 7; i++) {
if (GetLSData("daystat_" + UserId + "_" + i))
day += 1;
}
return GetLSData("daystat_" + UserId + "_" + day);
}
function WriteStat() {
var day = 0,
UserId = window.location.href.match(/\/(\d+)/)[1],
WGRating = GetBattleStat(1),
api_key,
saveStat = false;
for (i = 0; i < 7; i++) {
if (!GetLSData("daystat_" + UserId + "_" + i)) {
day = i;
break;
}
day = 7;
}
if (document.location.host.indexOf(".ru") !== -1) {
api_key = "895d3dafdd87af03e1e515befcd83882";
} else if (document.location.host.indexOf(".eu") !== -1) {
api_key = "d0a293dc77667c9328783d489c8cef73";
} else if (document.location.host.indexOf(".com") !== -1) {
api_key = "16924c431c705523aae25b6f638c54dd";
}
if (day !== 0) {
var daystat = GetLSData("daystat_" + UserId + "_" + (day - 1)),
dsArr = daystat.split("|"),
strArray = dsArr[0].split("/"),
str = strArray[0].split(";"),
OldBattles = toFl(str[12]);
if (parseInt(OldBattles) !== parseInt(GetBattleStat(5))) {
saveStat = true;
}
} else {
saveStat = true;
}
if (saveStat) {
$.get("http://api." + document.location.host + "/2.0/account/info/?application_id=" + api_key + "&account_id=" + UserId, function (response) {
var UserId = window.location.href.match(/\/(\d+)/)[1];
var timeStamp = new Date();
var cookie = "" + timeStamp + ";",
AllGold = document.getElementsByClassName("currency-gold")[0],
AllCredit = document.getElementsByClassName("currency-credit")[0],
AllExp = document.getElementsByClassName("currency-experience")[0],
tstsr = JSON.stringify(response.data[UserId].statistics);
if (AllGold) {
cookie += "" + toFl(AllGold.innerHTML.split("(")[0]) + ";";
} else
cookie += "NaN;";
if (AllCredit) {
cookie += "" + toFl(AllCredit.innerHTML.split("(")[0]) + ";";
} else
cookie += "NaN;";
if (AllExp) {
cookie += "" + toFl(AllExp.innerHTML.split("(")[0]) + ";";
} else
cookie += "NaN;";
for (var i = 1; i < 12; i++) {
cookie += GetBattleStat(i) + ";";
cookie += "0;";
}
var tanks = document.getElementsByClassName("t-profile_tankstype__item");
for (var i = 0; i < tanks.length; i++) {
var t = tanks[i].cells,
imgName = t[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1];
cookie += "/" + imgName + ";" + toFl(t[1].innerHTML.split("(")[0]) + ";" + toFl(t[2].innerHTML.split("(")[0]) + ";" + t[2].getAttribute("wcount");
}
cookie += "|";
var medals = document.getElementsByClassName("js-all-achievements")[0].getElementsByClassName("b-achivements_item");
for (i = 0; i < medals.length; i++) {
if ((" " + medals[i].className + " ").replace(/[\n\t]/g, " ").indexOf(" b-achivements_item__empty ") === -1) {
var count = medals[i].getElementsByTagName('div')[0];
if (count) {
count = count.getElementsByTagName('span')[0];
if (count) {
count = count.getElementsByTagName('span')[0];
if (count)
count = toFl(count.innerHTML);
else
count = 1;
} else {
count = 1;
}
} else {
count = 1;
}
cookie += "/" + medals[i].id.split("-")[2] + ";" + count;
}
}
cookie += "|" + tstsr;
cookie += "|" + WGRating;
var day = 0;
for (i = 0; i < 7; i++) {
if (!GetLSData("daystat_" + UserId + "_" + i)) {
day = i;
break;
}
day = 7;
}
if (day === 0) {
SetLSData("daystat_" + UserId + "_0", cookie, '01-Jan-2031 00:00:00 GMT');
if (document.title.indexOf("Профиль игрока") > -1) {
popup("Статистика сохранена", true, false);
} else {
popup("Stat. saved", true, false);
}
} else {
var daystat = GetLSData("daystat_" + UserId + "_" + (day - 1)),
dsArr = daystat.split("|"),
strArray = dsArr[0].split("/"),
str = strArray[0].split(";"),
OldBattles = toFl(str[12]);
if (parseInt(OldBattles) === parseInt(GetBattleStat(5))) {
if (document.title.indexOf("Профиль игрока") > -1) {
popup("Нет новых боев", true, false);
} else {
popup("No new battles", true, false);
}
} else {
if (day === 7) {
for (i = 1; i < 7; i++) {
daystat = GetLSData("daystat_" + UserId + "_" + (i));
SetLSData("daystat_" + UserId + "_" + (i - 1), daystat, '01-Jan-2031 00:00:00 GMT');
}
day = 6;
}
SetLSData("daystat_" + UserId + "_" + day, cookie, '01-Jan-2031 00:00:00 GMT');
if (document.title.indexOf("Профиль игрока") > -1) {
popup("Статистика сохранена", true, false);
} else {
popup("Stat. saved", true, false);
}
}
}
});
} else {
if (document.title.indexOf("Профиль игрока") > -1) {
popup("Нет новых боев", true, false);
} else {
popup("No new battles", true, false);
}
}
}
function col(v1, digit, inv) {
if (isNaN(v1))
return "x";
var color = "90ffff";
if (inv) {
var v = 100 - v1;
} else {
v = v1;
}
if (digit)
v1 = v1.toFixed(digit);
if (v < 101)
color = "D042F3";
if (v < 64.9)
color = "02C9B3";
if (v < 56.9)
color = "60FF00";
if (v < 51.9)
color = "F8F400";
if (v < 48.9)
color = "FE7903";
if (v < 46.9)
color = "FE0E00";
return "
" + v1 + "%";
}
function col2(v) {
if (isNaN(v))
v = 0;
var color = "D042F3";
if (v < 15)
color = "02C9B3";
if (v < 10)
color = "60FF00";
if (v < 5)
color = "F8F400";
if (v < 0)
color = "FE7903";
if (v < -5)
color = "FE0E00"; //красный
v = v.toFixed(2);
if (v >= 0)
v = "+" + v;
return "
" + v + "";
}
function SaveCompareStatData() {
var timeStamp = new Date();
var cookie = "" + timeStamp + ";",
AllGold = document.getElementsByClassName("currency-gold")[0],
AllCredit = document.getElementsByClassName("currency-credit")[0],
AllExp = document.getElementsByClassName("currency-experience")[0],
WGRating = GetBattleStat(1);
if (AllGold) {
cookie += "" + toFl(AllGold.innerHTML.split("(")[0]) + ";";
} else
cookie += "NaN;";
if (AllCredit) {
cookie += "" + toFl(AllCredit.innerHTML.split("(")[0]) + ";";
} else
cookie += "NaN;";
if (AllExp) {
cookie += "" + toFl(AllExp.innerHTML.split("(")[0]) + ";";
} else
cookie += "NaN;";
for (var i = 1; i < 12; i++) {
cookie += GetBattleStat(i) + ";";
cookie += "0;";
}
var tanks = document.getElementsByClassName("t-profile_tankstype__item"),
tlev, totalB = 0, avgL = 0, tbcount, tankLevs = {
"I": 1,
"II": 2,
"III": 3,
"IV": 4,
"V": 5,
"VI": 6,
"VII": 7,
"VIII": 8,
"IX": 9,
"X": 10
};
for (var i = 0; i < tanks.length; i++) {
var t = tanks[i].cells,
imgName = t[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1];
tank_Id = parseInt(tanks[i].nextElementSibling.getAttribute('data-vehicle-cd'));
tbcount = toFl(tanks[i].cells[1].innerHTML);
tlev = tankLevs[tanks[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML];
totalB += tbcount;
avgL += tlev * tbcount;
cookie += "/" + imgName + ";" + toFl(t[1].innerHTML.split("(")[0]) + ";" + toFl(t[2].innerHTML.split("(")[0]) + ";" + tank_Id;
}
cookie += "|" + (avgL / totalB).toFixed(4);
cookie += "|";
var medals = document.getElementsByClassName("js-all-achievements")[0].getElementsByClassName("b-achivements_item");
for (i = 0; i < medals.length; i++) {
if ((" " + medals[i].className + " ").replace(/[\n\t]/g, " ").indexOf(" b-achivements_item__empty ") === -1) {
var count = medals[i].getElementsByTagName('div')[0];
if (count) {
count = count.getElementsByTagName('span')[0];
if (count) {
count = count.getElementsByTagName('span')[0];
if (count)
count = toFl(count.innerHTML);
else
count = 1;
} else {
count = 1;
}
} else {
count = 1;
}
cookie += "/" + medals[i].id.split("-")[2] + ";" + count;
}
}
cookie += "|" + WGRating;
SetLSData("compareStat", cookie, '01-Jan-2031 00:00:00 GMT');
window.close();
}
function WriteCompareStat() {
var set = GetLSData("usSettings").split('|')[1].split(';');
if (toFl(set[0]) === 1/* && set[1].match(/\/(\d+)/)[1] !== window.location.href.match(/\/(\d+)/)[1]*/) {
window.open(set[1] + '#USCompareStat', 'usCompare', 'width=100, height=100');
return false;
}
}
function GetLSData(name) {
var stVal = localStorage.getItem(name);
if (stVal && new Date(stVal.split("||")[0]) <= new Date()) {
localStorage.removeItem(name);
stVal = null;
}
if (stVal) {
return stVal.split("||")[1];
} else
return null;
}
function SetLSData(name, value, expire) {
var stval = expire + "||" + value;
localStorage.setItem(name, stval);
}
function outStatData2(response) {
eval("var resp =" + response);
var sStat = resp.veh_stat,
arstr = '';
for (var sc in sStat) {
arstr += "/" + sStat[sc]["link"].match(/\/[^-]+-([^\/]*)\.png/)[1].toLowerCase() + ";" + (sStat[sc]["win"] / sStat[sc]["total"] * 100).toFixed(2);
}
var now = new Date(),
time = now.getTime();
time += 3600 * 24 * 1000;
now.setTime(time);
SetLSData("UsUnOfStat", arstr, now.toGMTString());
OutUnoffStat();
}
function CalcOldAvgLev(ds, tankarr) {
var avgL = 0,
totalB = 0,
NavgL = 0,
NtotalB = 0,
tnaSum = 0,
expDmg = 0,
expSpot = 0,
expFrag = 0,
expDef = 0,
expWinRate = 0,
tankLevs = {
"I": 1,
"II": 2,
"III": 3,
"IV": 4,
"V": 5,
"VI": 6,
"VII": 7,
"VIII": 8,
"IX": 9,
"X": 10
};
var nominalDamage = GetLSData("nominalDamage"),
wn8Data = GetLSData("WN8Data"),
nominalDamageArr = [], wn8DataArr = [], tankid, tank_Id, nArr;
if (nominalDamage) {
nominalDamage = eval(nominalDamage);
for (i = 0; i < nominalDamage.length; i++) {
if (nominalDamage[i].nominalDamage)
nominalDamageArr[(nominalDamage[i].id).toLowerCase()] = [
nominalDamage[i].nominalDamage * 1
];
}
} else {
xdr.xget("http://www.noobmeter.com/tankListJson/elfx_133054", savenominalDamage);
}
if (wn8Data) {
eval("var allwn8Data =" + wn8Data);
for (var key = 0; key < allwn8Data.data.length; key++) {
t = allwn8Data.data[key];
wn8DataArr[parseInt(t.IDNum)] = [t.expDamage / 1, t.expSpot / 1, t.expFrag / 1, t.expDef / 1, t.expWinRate / 100];
}
} else {
xdr.xget("http://www.wnefficiency.net/exp/expected_tank_values_latest.json", saveWN8Data);
}
for (var tank in ds) {
if (tankarr[tank]) {
totalB += ds[tank].b;
if (nominalDamageArr[tank]) {
if (nominalDamageArr[tank][0]) tnaSum += ds[tank].b * nominalDamageArr[tank][0];
}
tank_Id = tankarr[tank]["tId"];
if (wn8DataArr[tank_Id]) {
expDmg += ds[tank].b * wn8DataArr[tank_Id][0];
expSpot += ds[tank].b * wn8DataArr[tank_Id][1];
expFrag += ds[tank].b * wn8DataArr[tank_Id][2];
expDef += ds[tank].b * wn8DataArr[tank_Id][3];
expWinRate += ds[tank].b * wn8DataArr[tank_Id][4];
}
avgL += tankarr[tank].tlev * ds[tank].b;
if (ds[tank].b !== tankarr[tank].bcount) {
NtotalB += (tankarr[tank].bcount - ds[tank].b);
NavgL += tankarr[tank].tlev * (tankarr[tank].bcount - ds[tank].b);
}
}
}
return [avgL / totalB, NavgL / NtotalB, tnaSum, expDmg, expSpot, expFrag, expDef, expWinRate, totalB];
}
function PaintOldAvgLev(ds) {
var avgL = 0,
totalB = 0,
NavgL = 0,
NtotalB = 0,
tanks = document.getElementsByClassName("t-profile_tankstype__item"),
tbcount,
twcount,
tlev,
imgName,
tHd,
newBat,
tankLevs = {
"I": 1,
"II": 2,
"III": 3,
"IV": 4,
"V": 5,
"VI": 6,
"VII": 7,
"VIII": 8,
"IX": 9,
"X": 10
};
var theads = document.getElementsByClassName("t-profile__vehicle")[0].getElementsByTagName('tbody');
for (var i = 0; i < theads.length; i++) {
if (theads[i].style.display !== 'none')
theads[i].setAttribute('class', 'js-tank-head-row');
}
for (i = 0; i < tanks.length; i++) {
if (tanks[i].parentNode.previousElementSibling.style.display !== 'none')
tanks[i].setAttribute('class', tanks[i].getAttribute('class') + ' js-tank-row');
imgName = tanks[i].cells[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1];
if (ds[imgName]) {
tbcount = toFl(ds[imgName].b);
twcount = ds[imgName].w;
} else {
tbcount = 0;
twcount = 0;
}
tlev = tankLevs[tanks[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('span')[0].innerHTML];
totalB += tbcount;
avgL += tlev * tbcount;
if (toFl(tanks[i].cells[1].innerHTML) !== tbcount) {
NtotalB += toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount;
tHd = tanks[i].parentNode.previousElementSibling;
newBat = toFl(tHd.getAttribute('newbat'));
if (newBat) {
newBat += toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount;
} else {
newBat = toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount;
}
tHd.setAttribute("style", "background-color: Darkslategray;");
tHd.setAttribute("newBat", newBat);
tHd.rows[0].cells[1].innerHTML = tHd.rows[0].cells[1].innerHTML.split("(")[0] + " (+" + newBat + ")";
tanks[i].setAttribute("style", "background-color: Darkslategray;");
tanks[i].setAttribute('class', tanks[i].getAttribute('class') + ' js-nb-tank-row');
if (!tHd.getAttribute('class') || tHd.getAttribute('class').indexOf('js-nb-tank-row') === -1)
tHd.setAttribute('class', (tHd.getAttribute('class') ? tHd.getAttribute('class') + ' js-nb-tank-row' : 'js-nb-tank-row'));
tanks[i].cells[1].innerHTML = tanks[i].cells[1].innerHTML + " (" + (toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount) + "|" + (tanks[i].cells[2].getAttribute('wcount') - twcount) + ")";
if (twcount !== -1 && tbcount !== 0) {
var windelta = ((tanks[i].cells[2].getAttribute('wcount') / toFl(tanks[i].cells[1].innerHTML.split("(")[0]) * 100).toFixed(2) - (twcount / tbcount * 100).toFixed(2)).toFixed(2);
tanks[i].cells[2].innerHTML = tanks[i].cells[2].innerHTML + " (" + (windelta > 0 ? "
+" + windelta + "" : "
" + windelta + "") + ")";
}
NavgL += tlev * (toFl(tanks[i].cells[1].innerHTML.split("(")[0]) - tbcount);
}
}
}
function outStatData(response) {
eval("var resp =" + response);
var sStat = resp.classRatings,
arstr = '';
for (var i = 0; i < rangA.length; i++) {
arstr += sStat[rangA[i]] + ';';
}
var now = new Date(),
time = now.getTime();
time += 3600 * 24 * 1000;
now.setTime(time);
SetLSData("UsBsRangs", arstr, now.toGMTString());
GetStatData();
}
function OutUnoffStat() {
var stData = GetLSData("UsUnOfStat");
if (stData) {
var vTh = document.getElementsByClassName("t-profile__vehicle")[0].getElementsByTagName('th')[4],
nTh = document.createElement('th');
document.getElementsByClassName("t-profile__vehicle")[0].getElementsByTagName('th')[0].width = "288";
nTh.innerHTML = '
' + (lang === "ru" ? "ср % побед по серверу" : "avg win %") + "";
nTh.className = "t-profile_center";
vTh.parentNode.insertBefore(nTh, vTh);
var tTypes = document.getElementsByClassName("js-tank-head-row");
for (var i = 0; i < tTypes.length; i++) {
var nrth = tTypes[i].rows[0].getElementsByClassName('t-profile_center');
if (nrth.length) {
nrth[0].width = "288";
var fTh = document.createElement('td');
fTh.innerHTML = '-';
fTh.className = "t-profile_center";
tTypes[i].rows[0].cells[4].parentNode.insertBefore(fTh, tTypes[i].rows[0].cells[4]);
}
}
var UnOffStat = stData.split("/");
if (UnOffStat) {
var unOffStatArr = [];
for (i = 0; i < UnOffStat.length; i++) {
var uoss = UnOffStat[i].split(";");
unOffStatArr[uoss[0]] = uoss[1];
}
var tanks = document.getElementsByClassName("t-profile_tankstype__item");
for (i = 0; i < tanks.length; i++) {
var t = tanks[i].cells,
imgName = t[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1].toLowerCase();
var sTd = document.createElement('td');
sTd.className = "t-profile_right";
var med = unOffStatArr[imgName];
if (med && t[2].getElementsByTagName('font')[0]) {
sTd.innerHTML = col(med) + " (" + col2(parseFloat(t[2].getElementsByTagName('font')[0].innerHTML) - med) + ")";
} else {
sTd.innerHTML = "x";
}
t[4].parentNode.insertBefore(sTd, t[4]);
var rItem = t[4].parentNode.getElementsByClassName("t-profile_ico-dropdown")[0];
t[4].parentNode.removeChild(rItem);
}
}
} else {
xdr.xget("http://wot-crabe.ru/api/server_stats.json", outStatData2);
}
}
function GetStatData() {
var stData = GetLSData("UsBsRangs"),
lang,
bsrat = document.getElementById("js-bs-rating").innerHTML.split("(")[0].split("<")[0];
if (document.title.indexOf("Профиль игрока") > -1)
lang = "ru";
if (stData) {
var bsRangs = stData.split(";");
if (bsRangs) {
var rcr = 0,
rcrv = 0;
for (var i = bsRangs.length - 1; i > -1; i--) {
if (Number(bsrat) > Number(bsRangs[i])) {
rcr = i;
if (i > 0) {
rcrv = (Number(bsRangs[i - 1]) - Number(bsrat)).toFixed(2) + (lang === "ru" ? " баллов до следующего ранга" : " balls to next level");
} else {
rcrv = (lang === "ru" ? 'Максимальный уровень. Круче только вареные яйца.' : 'Max. level');
}
}
}
document.getElementById("js-bs-rating_tooltip").innerHTML = (lang === "ru" ? rangD[rcr] : rangDE[rcr]) + "
" + rcrv;
}
} else {
xdr.xget("http://armor.kiev.ua/wot/api.php", outStatData);
}
}
function FormatUsSetTable() {
var rowsSorted = [[]];
var tBody = document.getElementById("us-set-table").getElementsByTagName('tbody')[0];
for (i = 0; i < tBody.childNodes.length; i++) {
rowsSorted[tBody.childNodes[i].getAttribute('cur-pos')] = [];
rowsSorted[tBody.childNodes[i].getAttribute('cur-pos')][0] = tBody.childNodes[i].getAttribute('btype');
rowsSorted[tBody.childNodes[i].getAttribute('cur-pos')][1] = tBody.childNodes[i].cells[0].innerText;
rowsSorted[tBody.childNodes[i].getAttribute('cur-pos')][2] = tBody.childNodes[i].cells[1].getElementsByTagName('input')[0].checked;
rowsSorted[tBody.childNodes[i].getAttribute('cur-pos')][3] = tBody.childNodes[i].cells[2].getElementsByTagName('input')[0].checked;
}
for (i = 0; i < tBody.childNodes.length; i++) {
tBody.childNodes[i].setAttribute('btype', rowsSorted[i][0]);
tBody.childNodes[i].setAttribute('cur-pos', i);
tBody.childNodes[i].cells[0].childNodes[0].nodeValue = rowsSorted[i][1].replace(/\u00a0/g, "");
tBody.childNodes[i].cells[1].getElementsByTagName('input')[0].checked = rowsSorted[i][2];
tBody.childNodes[i].cells[2].getElementsByTagName('input')[0].checked = rowsSorted[i][3];
if (i === 0) {
tBody.childNodes[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('a')[0].setAttribute('style', 'visibility:hidden;');
tBody.childNodes[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('a')[1].setAttribute('style', '');
} else if (i === 10) {
tBody.childNodes[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('a')[0].setAttribute('style', '');
tBody.childNodes[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('a')[1].setAttribute('style', 'visibility:hidden;');
} else {
tBody.childNodes[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('a')[0].setAttribute('style', '');
tBody.childNodes[i].cells[0].getElementsByTagName('div')[0].getElementsByTagName('a')[1].setAttribute('style', '');
}
}
rowsSorted = [[]];
}
function GetXRating (value, ratingtype) {
// Волшебные формулы взяты из исходного кода XVM (https://bitbucket.org/XVM/xvm/src/default/src/xpm/xvm_main/xvm_scale.py?at=default)
// по рекомендации на форуме koreanrandom (http://www.koreanrandom.com/forum/topic/2625-xvm-%D1%88%D0%BA%D0%B0%D0%BB%D0%B0-scale/)
var result;
switch (ratingtype) {
case "effres":
if (value > 2250) {
result = 100;
} else {
result = Math.max(0, Math.min(100,
value * (value * (value * (value * (value *
(value * 0.000000000000000013172 - 0.000000000000092286)
+ 0.00000000023692)
- 0.00000027377)
+ 0.00012983)
+ 0.05935)
- 31.684, 100), 0).toFixed(2);
}
break;
case "wn6":
if (value > 2350) {
result = 100;
} else {
result = Math.max(0, Math.min(100,
value * (value * (value * (value * (value * (value *
0.000000000000000001225
- 0.000000000000007167)
+ 0.000000000005501)
+ 0.00000002368)
- 0.00003668)
+ 0.05965)
- 5.297, 100), 0).toFixed(2);
}
break;
case "wn8":
if (value > 3650) {
result = 100;
} else {
result = Math.max(0, Math.min(100,
value * (value * (value * (value * (value * (-value *
0.00000000000000000007656
+ 0.0000000000000014848)
- 0.0000000000099633)
+ 0.00000002858)
- 0.00003836)
+ 0.0575)
- 0.99, 100), 0).toFixed(2);
}
break;
case "wgr":
if (value > 11100) {
result = 100;
} else {
result = Math.max(0, Math.min(100,
value * (value * (value * (value * (value * (-value *
0.0000000000000000000013018
+ 0.00000000000000004812)
- 0.00000000000071831)
+ 0.0000000055583)
- 0.000023362)
+ 0.059054)
- 47.85, 100), 0).toFixed(2);
}
break;
case "pr":
if (value >= 2175) {
result = 100;
} else if (value >= 1500 && value < 2175) {
result = Math.max(value * (value * (value *
(0.00000000074489 * value - 0.0000051431)
+ 0.01313866)
- 14.65) + 6057.52
, value*(value*(0.000000081703*value - 0.000699026) + 1.88722) - 1538.59).toFixed(2);
} else {
result = Math.max(value*(0.00001717*value + 0.03825) - 38.45, 0).toFixed(2);
}
break;
case "bs":
if (value > 13200) {
result = 100;
} else {
result = Math.max(Math.min(value * (value * (value * (value * (value *
(-0.00000000000000000000024883*value + 0.0000000000000000117935)
- 0.00000000000021706)
+ 0.00000000193685)
- 0.0000089711)
+ 0.02948)
- 0.78, 100), 0).toFixed(2);
}
break;
case "nr":
if (value > 240) {
result = 100;
} else {
result = Math.max(Math.min(value*(value*(value*(value*(value*
(0.0000000000060542*value - 0.0000000047258)
+ 0.00000132876)
- 0.00016789)
+ 0.009921)
+ 0.2677)
- 17.3, 100), 0).toFixed(2);
}
break;
default:
result = 0;
}
return result;
}
function CalcEffColor(effval, type) {
//Цифры границ взяты с на форума koreanrandom (http://www.koreanrandom.com/forum/topic/2625-xvm-%D1%88%D0%BA%D0%B0%D0%BB%D0%B0-scale/)
var lang;
if (document.title.indexOf("Профиль игрока") > -1)
lang = "ru";
var color, lboundary, uboundary;
switch (type) {
case "xvm":
if (effval < 16.5) color = 'FE0E00', lboundary = 0, uboundary = 16.5;
else if (effval < 33.5) color = 'FE7903', lboundary = 16.5, uboundary = 33.5;
else if (effval < 52.5) color = 'F8F400', lboundary = 33.5, uboundary = 52.5;
else if (effval < 75.5) color = '60FF00', lboundary = 52.5, uboundary = 75.5;
else if (effval < 92.5) color = '02C9B3', lboundary = 75.5, uboundary = 92.5;
else if (effval < 99999) color = 'D042F3', lboundary = 92.5, uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
case "winrate":
if (effval < 47) color = 'FE0E00', lboundary = 0, uboundary = 47;
else if (effval < 49) color = 'FE7903', lboundary = 47, uboundary = 49;
else if (effval < 53) color = 'F8F400', lboundary = 49, uboundary = 53;
else if (effval < 58) color = '60FF00', lboundary = 53, uboundary = 58;
else if (effval < 65) color = '02C9B3', lboundary = 58, uboundary = 65;
else if (effval < 99999) color = 'D042F3', lboundary = 65, uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
case "eff":
if (effval < 615) color = 'FE0E00', lboundary = 0, uboundary = 615;
else if (effval < 870) color = 'FE7903', lboundary = 615, uboundary = 870;
else if (effval < 1175) color = 'F8F400', lboundary = 870, uboundary = 1175;
else if (effval < 1525) color = '60FF00', lboundary = 1175, uboundary = 1525;
else if (effval < 1850) color = '02C9B3', lboundary = 1525, uboundary = 1850;
else if (effval < 99999) color = 'D042F3', lboundary = 1850, uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
case "wn6":
if (effval < 460) color = 'FE0E00', lboundary = 0, uboundary = 460;
else if (effval < 850) color = 'FE7903', lboundary = 460, uboundary = 850;
else if (effval < 1215) color = 'F8F400', lboundary = 850, uboundary = 1215;
else if (effval < 1620) color = '60FF00', lboundary = 1215, uboundary = 1620;
else if (effval < 1960) color = '02C9B3', lboundary = 1620, uboundary = 1960;
else if (effval < 99999) color = 'D042F3', lboundary = 1960, uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
case "wn8":
if (effval < 380) color = 'FE0E00', lboundary = 0, uboundary = 380;
else if (effval < 860) color = 'FE7903', lboundary = 380, uboundary = 860;
else if (effval < 1420) color = 'F8F400', lboundary = 860, uboundary = 1420;
else if (effval < 2105) color = '60FF00', lboundary = 1420, uboundary = 2105;
else if (effval < 2770) color = '02C9B3', lboundary = 2105, uboundary = 2770;
else if (effval < 99999) color = 'D042F3', lboundary = 2770, uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
case "WGRating":
if (effval < 2495) color = 'FE0E00', lboundary = 0, uboundary = 2495;
else if (effval < 4345) color = 'FE7903', lboundary = 2495, uboundary = 4345;
else if (effval < 6425) color = 'F8F400', lboundary = 4345, uboundary = 6425;
else if (effval < 8625) color = '60FF00', lboundary = 6425, uboundary = 8625;
else if (effval < 10040) color = '02C9B3', lboundary = 8625, uboundary = 10040;
else if (effval < 99999) color = 'D042F3', lboundary = 10040,uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
case "bs":
if (effval < 720) color = 'FE0E00', lboundary = 0, uboundary = 720;
else if (effval < 1920) color = 'FE7903', lboundary = 720, uboundary = 1920;
else if (effval < 3905) color = 'F8F400', lboundary = 1920, uboundary = 3905;
else if (effval < 6700) color = '60FF00', lboundary = 3905, uboundary = 6700;
else if (effval < 9600) color = '02C9B3', lboundary = 6700, uboundary = 9600;
else if (effval < 99999) color = 'D042F3', lboundary = 9600, uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
case "nr":
if (effval < 69) color = 'FE0E00', lboundary = 0, uboundary = 69;
else if (effval < 102) color = 'FE7903', lboundary = 69, uboundary = 102;
else if (effval < 135) color = 'F8F400', lboundary = 102, uboundary = 135;
else if (effval < 172) color = '60FF00', lboundary = 135, uboundary = 172;
else if (effval < 203) color = '02C9B3', lboundary = 172, uboundary = 203;
else if (effval < 99999) color = 'D042F3', lboundary = 203, uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
case "pr":
if (effval < 1000) color = 'FE0E00', lboundary = 0, uboundary = 1000;
else if (effval < 1215) color = 'FE7903', lboundary = 1000, uboundary = 1215;
else if (effval < 1445) color = 'F8F400', lboundary = 1215, uboundary = 1445;
else if (effval < 1685) color = '60FF00', lboundary = 1445, uboundary = 1685;
else if (effval < 1990) color = '02C9B3', lboundary = 1685, uboundary = 1990;
else if (effval < 99999) color = 'D042F3', lboundary = 1990, uboundary = 99999;
else color = 'white' , lboundary = '', uboundary = '';
break;
default: color = 'white', lboundary = '', uboundary = '';
}
return [color, (uboundary === 99999 ? (lang === "ru" ? 'Максимальный уровень. Круче только вареные яйца.'
: 'Max. level')
: (uboundary - effval).toFixed(2) + (lang === "ru" ? ' баллов до следующего ранга'
: ' points to next level')) + '
' +
(effval - lboundary).toFixed(2) + (lang === "ru" ? ' баллов выше предыдущего ранга'
: ' points past previous level')];
}
function putTankStats(response) {
var UserId = window.location.href.match(/\/(\d+)/)[1],
tanks = document.getElementsByClassName("t-profile_tankstype__item"),
tank_stats = [],
nominalDamage = GetLSData("nominalDamage"),
nominalDamageArr = [],
wn8Data = GetLSData("WN8Data"),
wn8DataArr = [],
lvl = 0,
tPR = 0,
tWN8 = 0,
tnaSum = 0;
eval("var resp =" + response);
if (resp) {
for (var key = 0; key < resp.data[UserId].length; key++) {
var tank = resp.data[UserId][key];
tank_stats[tank.tank_id] = [];
tank_stats[tank.tank_id]['battles'] = tank.all.battles;
tank_stats[tank.tank_id]['damage_dealt'] = tank.all.damage_dealt;
tank_stats[tank.tank_id]['dropped_capture_points'] = tank.all.dropped_capture_points;
tank_stats[tank.tank_id]['frags'] = tank.all.frags;
tank_stats[tank.tank_id]['spotted'] = tank.all.spotted;
tank_stats[tank.tank_id]['wins'] = tank.all.wins;
}
}
if (nominalDamage) {
nominalDamage = eval(nominalDamage);
for (i = 0; i < nominalDamage.length; i++) {
if (nominalDamage[i].nominalDamage) {
nominalDamageArr[(nominalDamage[i].id).toLowerCase()] = [];
nominalDamageArr[(nominalDamage[i].id).toLowerCase()].nominalDamage = nominalDamage[i].nominalDamage * 1;
nominalDamageArr[(nominalDamage[i].id).toLowerCase()].level = nominalDamage[i].level * 1;
}
}
} else {
xdr.xget("http://www.noobmeter.com/tankListJson/elfx_133054", savenominalDamage);
}
if (wn8Data) {
eval("var allwn8Data =" + wn8Data);
for (var key = 0; key < allwn8Data.data.length; key++) {
t = allwn8Data.data[key];
wn8DataArr[parseInt(t.IDNum)] = [];
wn8DataArr[parseInt(t.IDNum)].expDamage = t.expDamage / 1;
wn8DataArr[parseInt(t.IDNum)].expSpot = t.expSpot / 1;
wn8DataArr[parseInt(t.IDNum)].expFrag = t.expFrag / 1;
wn8DataArr[parseInt(t.IDNum)].expDef = t.expDef / 1;
wn8DataArr[parseInt(t.IDNum)].expWinRate = (t.expWinRate / 100).toFixed(4);
}
} else {
xdr.xget("http://www.wnefficiency.net/exp/expected_tank_values_latest.json", saveWN8Data);
}
for (var i = 0; i < tanks.length; i++) {
var imgName = (tanks[i].cells[0].getElementsByTagName('img')[0].src.match(/\/[^-]+-([^\/]*)\.png/)[1]).toLowerCase(),
tank_id = parseInt(tanks[i].nextElementSibling.getAttribute('data-vehicle-cd'));
if (nominalDamageArr[imgName]) {
lvl = nominalDamageArr[imgName].level;
tnaSum = tank_stats[tank_id]['battles'] * nominalDamageArr[imgName].nominalDamage;
}
if (tnaSum > 0) {
tPR = (500 * (tank_stats[tank_id]['wins'] / tank_stats[tank_id]['battles']) / 0.4856) + (1000 * tank_stats[tank_id]['damage_dealt'] / (tnaSum * 0.975));
var clearedFromPenalties1 = 1500,
expectedMinBattles1 = 500,
expectedMinAvgTier1 = 6,
clearedFromPenalties2 = 1900,
expectedMinBattles2 = 2000,
expectedMinAvgTier2 = 7;
if (tPR > clearedFromPenalties1)
tPR = tPR - (tPR - clearedFromPenalties1) * Math.pow(Math.max(0, 1 - (lvl / expectedMinAvgTier1), 1 - (tank_stats[tank_id]['battles'] / expectedMinBattles1)), 0.5);
if (tPR > clearedFromPenalties2)
tPR = tPR - (tPR - clearedFromPenalties2) * Math.pow(Math.max(0, 1 - (lvl / expectedMinAvgTier2), 1 - (tank_stats[tank_id]['battles'] / expectedMinBattles2)), 0.5);
tPR = tPR.toFixed(2);
}
tanks[i].setAttribute('PR', tPR);
if (wn8DataArr[tank_id]) {
var expDmg = tank_stats[tank_id]['battles'] * wn8DataArr[tank_id].expDamage,
expSpot = tank_stats[tank_id]['battles'] * wn8DataArr[tank_id].expSpot,
expFrag = tank_stats[tank_id]['battles'] * wn8DataArr[tank_id].expFrag,
expDef = tank_stats[tank_id]['battles'] * wn8DataArr[tank_id].expDef,
expWinRate = tank_stats[tank_id]['battles'] * wn8DataArr[tank_id].expWinRate,
rDAMAGE = tank_stats[tank_id]['damage_dealt'] / expDmg,
rSPOT = tank_stats[tank_id]['spotted'] / expSpot,
rFRAG = tank_stats[tank_id]['frags'] / expFrag,
rDEF = tank_stats[tank_id]['dropped_capture_points'] / expDef,
rWIN = tank_stats[tank_id]['wins'] / expWinRate,
rWINc = Math.max(0, (rWIN - 0.71) / (1 - 0.71)),
rDAMAGEc = Math.max(0, (rDAMAGE - 0.22) / (1 - 0.22)),
rFRAGc = Math.max(0, Math.min(rDAMAGEc + 0.2, (rFRAG - 0.12) / (1 - 0.12))),
rSPOTc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rSPOT - 0.38) / (1 - 0.38))),
rDEFc = Math.max(0, Math.min(rDAMAGEc + 0.1, (rDEF - 0.10) / (1 - 0.10))),
tWN8 = 980 * rDAMAGEc + 210 * rDAMAGEc * rFRAGc + 155 * rFRAGc * rSPOTc + 75 * rDEFc * rFRAGc + 145 * Math.min(1.8, rWINc);
}
tanks[i].setAttribute('WN8', tWN8);
}
}