// ==UserScript==
// @name Stats Xente Script
// @namespace http://tampermonkey.net/
// @version 0.142
// @description Stats Xente script for inject own data on Managerzone site
// @author xente
// @match https://www.managerzone.com/*
// @icon https://statsxente.com/MZ1/View/Images/main_icon.png
// @license GNU
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_listValues
// @require https://code.jquery.com/jquery-3.7.1.js
// @downloadURL https://update.greasyfork.cloud/scripts/491442/Stats%20Xente%20Script.user.js
// @updateURL https://update.greasyfork.cloud/scripts/491442/Stats%20Xente%20Script.meta.js
// ==/UserScript==
(function () {
'use strict';
/*let keys = GM_listValues();
keys.forEach(function(key) {
console.log(key+" "+GM_getValue(key))
});*/
/*let actual_version="0.9666"
console.log(GM_info.script.version)
if(GM_info.script.version!=actual_version){
console.log("here")
keys = GM_listValues();
keys.forEach(function (key) {
GM_deleteValue(key);
});
}*/
let cats=[]
let cats_stats = {}
let statsKeys = {}
let teams_data = "";
let teams_stats = "";
let searchClassName = ""
let players = []
let lines = []
let gk_line = ""
let skills_names = []
let su_line = "unsetted";
let fl_data=[]
let langs = new Map();
setCSSStyles()
createModalMenu()
waitToDOMById(createModalEventListeners,"saveButton",5000)
setLangSportCats()
getUsernameData()
checkScriptVersion()
//GM_deleteValue("date_checked_selects");
getSelects()
/// FUNCTIONS MENU
setTimeout(function () {
const urlParams = new URLSearchParams(window.location.search);
if ((urlParams.has('p')) && (urlParams.get('p') === 'league') && (GM_getValue("leagueFlag"))) {
waitToDOM(leagues, ".nice_table", 0,7000)
waitToDOMById(topScorersTableEventListener,"league_tab_top_scorers",5000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'federations')
&& (urlParams.get('sub') === 'league') && (GM_getValue("federationFlag"))) {
waitToDOM(clashLeagues, ".nice_table", 0,7000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'federations')
&& (urlParams.get('sub') === 'clash') && (GM_getValue("federationFlag"))) {
getDeviceFormat()
waitToDOM(clash, ".fed_badge", 0,7000)
waitToDOMById(clashEloMatches, "latest-challenges",7000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'match')
&& (urlParams.get('sub') === 'result') && (GM_getValue("matchFlag"))) {
setTimeout(function () {
waitToDOM(match, ".hitlist.statsLite.marker", 0,7000)
}, 2000);
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'players') && (!urlParams.has('pid'))&&(!urlParams.has('tid'))
&& (GM_getValue("playersFlag"))) {
getDeviceFormat()
waitToDOM(playersPage, ".playerContainer", 0,7000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'players') && (urlParams.has('tid')) && (!urlParams.has('pid')) ) {
getDeviceFormat()
waitToDOM(playersPageStatsAll, ".player_name", 0,7000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'players') && (urlParams.has('pid'))) {
getDeviceFormat()
waitToDOM(playersPageStats, ".player_name", 0,7000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'rank') && (urlParams.get('sub') === 'countryrank')
&& (GM_getValue("countryRankFlag"))) {
countryRank();
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'clubhouse')) {
StatsXenteNextMatchesClubhouse()
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'friendlyseries')
&& (urlParams.get('sub') === 'standings')&& (GM_getValue("flFlag"))) {
waitToDOM(friendlyCupsAndLeagues, ".nice_table", 0,7000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'friendlyseries')&& (GM_getValue("flFlag"))){
waitToDOMById(topScorersTableEventListener,"ui-id-4",5000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'cup') && (urlParams.get('sub') === 'groupplay')&& (GM_getValue("cupFlag"))) {
waitToDOM(friendlyCupsAndLeagues, ".nice_table", 0,7000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'private_cup') && (urlParams.get('sub') === 'groupplay')&& (GM_getValue("cupFlag"))) {
waitToDOM(friendlyCupsAndLeagues, ".nice_table", 0,7000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'match') && (urlParams.get('sub') === 'played')) {
if(!urlParams.has('hidescore')){
if(GM_getValue("eloPlayedMatchesFlag")){
waitToDOM(lastMatchesELO, ".group", 0,7000)
}
if(GM_getValue("eloNextMatchesFlag")){
waitToDOM(nextMatches, ".group", 0,7000)
}
}else{
if(GM_getValue("eloNextMatchesFlag")){
if(GM_getValue("eloHiddenPlayedMatchesFlag")){
waitToDOM(nextMatches, ".group", 0,7000)
}
}
}
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'match') && (urlParams.get('sub') === 'scheduled')) {
if(GM_getValue("eloNextMatchesFlag")){
waitToDOM(nextMatches, ".group", 0,7000)
}
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'team') && (GM_getValue("teamPageFlag"))) {
teamPage()
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'rank') && (urlParams.has('sub')) &&
(urlParams.get('sub') === 'userrank')) {
usersRank()
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'rank')){
eloRanks()
}
/* if ((urlParams.has('p')) && (urlParams.get('p') === 'clubhouse')){
eloRanks()
}*/
if ((urlParams.has('p')) && (urlParams.get('p') === 'training_report')&& (GM_getValue("trainingReportFlag"))) {
getDeviceFormat()
waitToDOMById(trainingReport,"training_report",5000)
}
if ((urlParams.has('p')) && (urlParams.get('p') === 'statistics')){
test()
}
function test(){
let elements = document.querySelectorAll('.leagueStats');
console.log(elements)
elements[0].insertAdjacentHTML("beforebegin", '');
let listItems = elements[0].querySelectorAll('li')
let as = listItems[0].querySelectorAll('a')
console.log(as[0].href)
let urlObj = new URL(as[0].href);
let params = new URLSearchParams(urlObj.search);
let type = params.get('type');
let tid = params.get('tid');
var link="https://statsxente.com/MZ1/Graficos/graficoHistoricoDivisiones.php?idioma="+window.lang+"&category="+type+"&sport="+window.sport+"&team_id="+tid
document.getElementById("showStats").addEventListener("click", function(event) {
openWindow(link, 0.95, 1.25);
});
}
if ((urlParams.has('p')) && (urlParams.get('p') !== 'players')){
const elementos = document.querySelectorAll('.player_link'); //Adds stats icon in players page, when click on player info
elementos.forEach(function (elemento) {
elemento.addEventListener('click', function () {
getDeviceFormat()
waitToDOM(playersPageStats, ".player_name", 0,7000)
});
});
}
}, 1000);
//BUTTONS EVENTS LISTENERS
const urlParams = new URLSearchParams(window.location.search);
if ((urlParams.get('p') === 'friendlyseries')||(urlParams.get('p') === 'federations')){
waitToDOMById(tableFLAndClashEventListener,"ui-id-2",5000)
}
if ((urlParams.get('p') === 'cup')||(urlParams.get('p') === 'private_cup')){
waitToDOMById(tableCupsEventListener,"ui-id-4",5000)
}
waitToDOMById(tableLeaguesEventListener,"league_tab_table",5000)
function tableLeaguesEventListener(){
document.getElementById("league_tab_table").addEventListener('click', function () {
if (document.getElementById("showMenu") === null) {
waitToDOM(leagues, ".nice_table", 0,7000)
}
});
}
function tableCupsEventListener(){
document.getElementById("ui-id-4").parentNode.addEventListener('click', function () {
if (document.getElementById("showMenu") === null) {
if(GM_getValue("cupFlag")){
waitToDOM(friendlyCupsAndLeagues, ".nice_table", 0,7000)
}
}
viewButtonCupsEventListener()
});
}
function viewButtonCupsEventListener(){
document.addEventListener('click', function(event) {
if ((event.target) &&((event.target.parentNode.id === 'view_btn')||(event.target.parentNode.parentNode.id === 'view_btn'))) {
setTimeout(function () {
if (document.getElementById("showMenu") === null) {
if(GM_getValue("cupFlag")){
waitToDOM(friendlyCupsAndLeagues, ".nice_table", 0,7000)
}
}
}, 1000);
}
});
}
function tableFLAndClashEventListener(){
document.getElementById("ui-id-2").parentNode.addEventListener('click', function () {
if (document.getElementById("showMenu") === null) {
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('fsid')) {
if(GM_getValue("flFlag")){
waitToDOM(friendlyCupsAndLeagues, ".nice_table", 0,7000)
}
} else {
waitToDOM(clashLeagues, ".nice_table", 0,7000)
}
}
});
}
async function showTopScorersData(button_id_el){
let flagShow = true
var idComp="null"
if (button_id_el == "ui-id-4") {
fl_data = await fetchExistsFL(urlParams.get('fsid'))
idComp = fl_data['id']
if (idComp == "null") {
flagShow = false
}
}
if(flagShow){
let minValueText=" Min Goals:"
if(window.sport=="hockey"){minValueText=" Min Time:"}
var posSelect=GM_getValue("posSelect_"+window.sport)
var stats_select=GM_getValue("statsSelect_"+window.sport)
var min_values=GM_getValue("minValues")
var sortSelect = '';
var txt = 'Sort: ' + sortSelect + 'Pos: ' + posSelect
txt+=' Matches: '
txt+=' '+minValueText+' '
txt+='Stats:'+ stats_select + ' Teams:'
var ri = document.getElementsByClassName("floatRight")
var selects = ri[1].querySelectorAll("select");
var li = document.getElementsByClassName("floatLeft")
var spans = ri[1].querySelectorAll("span");
var clone = spans[0].cloneNode(true);
li[0].appendChild(clone);
//spans[0].remove();
var select = selects[0]
select.style.width = "10em"
select.querySelectorAll("option").forEach(option => {
option.removeAttribute("selected");
});
const nuevoOption = document.createElement("option");
nuevoOption.textContent = "All"; // Texto visible
nuevoOption.value = "-1"; // Valor del option
nuevoOption.selected = true;
select.insertBefore(nuevoOption, select.firstChild);
select.selectedIndex = 1;
select.dispatchEvent(new Event('change'));
select.selectedIndex = 0;
select.dispatchEvent(new Event('change'));
spans[0].insertAdjacentHTML("beforebegin", '');
spans[0].remove();
ri[1].innerHTML = txt + ri[1].innerHTML
let tables = document.getElementsByClassName("hitlist hitlist-compact-list-included tablesorter marker")
let table = tables[0]
document.getElementById('valor').addEventListener('change', function(e) {
document.getElementById("minValueText").innerText=" Min "+min_values[e.target.value]+":"
});
document.getElementById("showStats").addEventListener('click', function () {
let texto = select.id;
let idSelect = select.id
let parts = texto.split("_");
let league_id = parts[parts.length - 1];
if (idComp != "null") {
league_id=idComp
}
let selectValor = document.getElementById("valor");
let selectedValue = selectValor.value;
let urlParams = new URLSearchParams(window.location.search);
let typeKey = ""
if (urlParams.has('type')) {
typeKey = urlParams.get("type")
} else {
typeKey = "friendlyseries"
}
var txt = "https://statsxente.com/MZ1/Functions/tamper_player_stats_records.php?table=" + statsKeys[typeKey+"_"+window.sport] + "&pj=" + document.getElementById("pj").value + "&idLiga=" + league_id +
"&valor=" + encodeURIComponent(selectedValue) + "&equipo=" + document.getElementById(idSelect).value + "&categoria=" + cats_stats[typeKey]
+ "&ord="+document.getElementById("sortValue").value+"&posicion=" + document.getElementById("positionValue").value+"&minValue="+document.getElementById("minValue").value;
var keyValue = selectValor.options[selectValor.selectedIndex].text;
var teamId = document.getElementById(idSelect).value
var ris = document.getElementsByClassName("floatRight")
let clase = "loader-" + window.sport
ris[1].insertAdjacentHTML("afterend", "
Loading...
");
playerStatsOnTopScores(table, txt, selectedValue, keyValue, teamId)
});
}
}
function topScorersTableEventListener() {
if (!document.getElementById('showStats')) {
let button_id_el="none"
if (document.getElementById("league_tab_top_scorers")) {
button_id_el="league_tab_top_scorers"
} else {
button_id_el="ui-id-4"
}
document.getElementById(button_id_el).addEventListener('click',function () {
waitToDOMArgs(showTopScorersData, ".hitlist.hitlist-compact-list-included.tablesorter.marker", 0,7000,button_id_el)
});
}
}
//Workers
const workerCode = `
self.onmessage = function (e) {
const { elementos, sport, skillsNames, tacticsList, flagStats } = e.data;
let players = [];
let lines = [];
let gk_line = "";
let su_line = "";
// Procesar cada elemento
for (let i = 0; i < elementos.length; i++) {
let playerValues = {
id: elementos[i].id,
skills: [],
lines: [],
tacticsPosition: {},
tactics: [],
age: parseInt(elementos[i].age),
};
// Procesar tácticas y líneas
for (let j = 0; j < elementos[i].tactics.length; j++) {
const tactic = elementos[i].tactics[j].name;
const line = elementos[i].tactics[j].line;
if(sport=="soccer"){
if (line.includes(",")) {
var fin = line.indexOf(',');
su_line = line.substring(0, fin);
}
}
playerValues.tactics.push(tactic);
playerValues.tacticsPosition[tactic] = line;
// Usar un Set para evitar líneas duplicadas
if (!lines.includes(line)) {
lines.push(line);
playerValues.lines.push(line);
}
}
var key=0;
if(sport=="soccer"){
key=1;
}
// Procesar habilidades
for (let j = 0; j < elementos[i].skills.length-key; j++) {
playerValues.skills.push(elementos[i].skills[j]);
}
players.push(playerValues);
}
// Enviar datos procesados al hilo principal
self.postMessage({ players:players, lines: [...new Set(lines)], gk_line:gk_line, su_line:su_line, tacticsList: [...new Set(tacticsList)], skillsNames:skillsNames });
};
`;
//ELO Rankings
function eloRanks(){
let original = document.getElementById("leftmenu_rank_national");
//let original = document.getElementById("sub_page_nav_rank_national");
const elo_aux_cats = new Map();
elo_aux_cats.set("u18_elo", "ELO U18");
elo_aux_cats.set("u21_elo", "ELO U21");
elo_aux_cats.set("u23_elo","ELO U23");
elo_aux_cats.set("senior_elo", "ELO Senior");
elo_aux_cats.forEach((valor, clave) => {
let clon = original.cloneNode(true);
clon.id = clave;
original.parentNode.insertBefore(clon, original.nextSibling);
let contenedor = document.getElementById(clave);
let enlace = contenedor.querySelector("a");
enlace.textContent = valor;
enlace.innerHTML=''+enlace.innerHTML
enlace.removeAttribute("href");
enlace.addEventListener("click", function(event) {
event.preventDefault();
let link="https://statsxente.com/MZ1/Functions/redirect.php?l="+clave+"_"+window.sport+"&i="+window.lang+"&d="+GM_getValue("currency")
openWindow(link, 0.95, 1.25);
});
});
}
//Training Report
function trainingReport(){
if(!document.getElementById("trainingDaysId")){
let elem=document.getElementsByClassName("headerPanel")
elem[0].id="trainingDaysId"
document.getElementById("trainingDaysId").addEventListener('click', function () {
setTimeout(function () {
waitToDOMById(trainingReport,"training_report",5000)
}, 500);
});
}
let key="ball"
if(window.sport==="hockey"){
key="puck"
}
let promesas = [];
let clase="loader-"+window.sport
if(window.stx_device==="computer"){
let elements0 = document.querySelectorAll('.dailyReportRightColumn');
elements0.forEach(element0 => {
let previousTd = element0.previousElementSibling.previousElementSibling.previousElementSibling;
if((!previousTd.innerHTML.includes("training_graph_icon"))&&(previousTd.innerHTML.includes("0){
loaders[0].innerHTML=''+loaders[0].innerHTML;
}else{
previousTd.innerHTML=''+previousTd.innerHTML
previousTd.innerHTML="
"+previousTd.innerHTML+"
"
}
}
if(element0.innerHTML.includes(key)){
let skills = element0.previousElementSibling.previousElementSibling;
let number_skills=skills.getElementsByClassName("skillBallSeparator")
if(number_skills.length>3){
let player_td = element0.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling;
let player_as=player_td.getElementsByTagName("a")
let link=player_as[0].href
promesas.push(fetchAndProcessPlayerData(link,previousTd.innerText,previousTd,window.stx_device))
}
}
});
}else{
let elements0 = document.querySelectorAll('.playerColumn.hitlist-compact-list-column');
elements0.forEach(element0 => {
let dl=element0.getElementsByClassName("hitlist-compact-list markers")
let newDL = document.createElement("dl");
newDL.className="hitlist-compact-list markers";
newDL.innerHTML=''
dl[0].appendChild(newDL)
if(element0.innerHTML.includes(key)){
let number_skills=element0.getElementsByClassName("skillBallSeparator")
if(number_skills.length>3){
let player_as=element0.getElementsByTagName("a")
let link=player_as[0].href
let toChange=element0.getElementsByClassName("responsive-show floatRight")
promesas.push(fetchAndProcessPlayerData(link,toChange[0].innerText,toChange[0],window.stx_device))
}
}
});
}
Promise.all(promesas)
.then(() => {
const elementos = document.querySelectorAll('.'+clase);
elementos.forEach(elemento => elemento.remove());
})
.catch(() => {
const elementos = document.querySelectorAll('.'+clase);
elementos.forEach(elemento => elemento.remove());
});
}
//Show ELO diff on clash matches
function clashEloMatches() {
let div = document.getElementById("latest-challenges")
let tables = div.getElementsByTagName("table")
if (tables.length > 0) {
let table = tables[0]
let rows = table.querySelectorAll("tr");
let linkIds = ""
let contIds = 0
rows.forEach(row => {
let tds = row.querySelectorAll("td");
let secondTd = tds[1];
let as = secondTd.getElementsByTagName("a")
let urlObj = new URL("https://www.managerzone.com/" + as[0].getAttribute('href'));
let params = new URLSearchParams(urlObj.search);
let mid = params.get('mid');
linkIds += "&idPartido" + contIds + "=" + mid
contIds++
});
GM_xmlhttpRequest({
method: "GET",
url: "https://statsxente.com/MZ1/Functions/tamper_clash_matches_elo.php?currency=" + GM_getValue("currency") + "&sport=" + window.sport + linkIds,
headers: {
"Content-Type": "application/json"
},
onload: function (response) {
let jsonResponse = JSON.parse(response.responseText);
rows.forEach(row => {
let tds = row.querySelectorAll("td");
let secondTd = tds[1];
let as = secondTd.getElementsByTagName("a")
let urlObj = new URL("https://www.managerzone.com/" + as[0].getAttribute('href'));
let params = new URLSearchParams(urlObj.search);
let mid = params.get('mid');
let lastTd = row.querySelector("td:last-child");
if (lastTd) {
const clonedTd = lastTd.cloneNode(true);
let diff = jsonResponse[mid]
if (diff === undefined) {
clonedTd.innerHTML = `
";
}
if (clave === "valor11") {
contenidoNuevo += "
";
}
if (clave === "elo") {
contenidoNuevo += "
";
}
if (clave === "leagues") {
contenidoNuevo += "
";
}
if (clave === "leagues_all") {
contenidoNuevo += "
";
}
if (clave === "cup") {
contenidoNuevo += "
";
}
if (clave === initialValues["senior"]) {
contenidoNuevo += '
';
} else {
contenidoNuevo += '
';
}
});
contenidoNuevo += "
"
contenidoNuevo += "
";
values.set('valor', 'Value');
tabla.insertAdjacentHTML('beforebegin', contenidoNuevo);
if (GM_getValue("show_league_selects") === true) {
document.getElementById("line2").style.transform = 'rotateZ(0deg)';
document.getElementById("line1").style.transform = 'rotateZ(180deg)';
document.getElementById("moreInfo").style.transform = 'rotateZ(0deg)';
}
values.forEach(function (valor, clave) {
let elemento = document.getElementById(clave);
elemento.addEventListener('click', handleClickUserRank);
});
(function () {
document.getElementById("moreInfo").addEventListener('click', function () {
document.getElementById("moreInfo").classList.toggle('active');
if (document.getElementById("moreInfo").classList.contains("active")) {
document.getElementById("line2").style.transform = 'rotateZ(0deg)';
document.getElementById("line1").style.transform = 'rotateZ(180deg)';
document.getElementById("moreInfo").style.transform = 'rotateZ(0deg)';
$('#separatorTd').fadeOut(1);
document.getElementById("separatorTd").style.paddingTop = "5px";
$('#show3').fadeIn('slow');
} else {
document.getElementById("line2").style.transform = 'rotateZ(45deg)';
document.getElementById("line1").style.transform = 'rotateZ(-45deg)';
document.getElementById("moreInfo").style.transform = 'rotateZ(45deg)';
$('#separatorTd').fadeIn(1);
$('#show3').fadeOut('slow');
}
});
})();
const filas = document.querySelectorAll("#userRankTable tr");
let contIds=0;
for (let i = 1; i < filas.length; i++) {
const fila = filas[i];
const tercerTd = fila.children[4];
const cuartoTd = fila.children[5];
let data=extractTeamData(fila.children[3].getElementsByTagName("a"))
linkIds += "&idEquipo" + contIds + "=" + data[0]
contIds++;
if (tercerTd && cuartoTd) {
tercerTd.innerHTML = cuartoTd.innerHTML + " " + tercerTd.innerHTML;
cuartoTd.innerHTML=""
}
}
let nuevaCeldaEncabezado = document.querySelector("#userRankTable th:last-of-type");
nuevaCeldaEncabezado.innerHTML = ""+values.get(initialValues["senior"])+""
nuevaCeldaEncabezado.style.textAlign = 'center';
nuevaCeldaEncabezado.style.maxWidth = '8.5em';
nuevaCeldaEncabezado.style.width = '8.5em';
nuevaCeldaEncabezado.style.whiteSpace = 'nowrap';
nuevaCeldaEncabezado.style.overflow = 'hidden';
nuevaCeldaEncabezado.style.textOverflow = 'ellipsis';
nuevaCeldaEncabezado.id="stx_value"
document.getElementById("stx_value").addEventListener("click", function () {
setTimeout(function () {
ordenarTabla(5, false, "userRankTable",false);
}, 20);
});
GM_xmlhttpRequest({
method: "GET",
url: "https://statsxente.com/MZ1/Functions/tamper_teams.php?currency=" + GM_getValue("currency") + "&sport=" + window.sport + linkIds,
headers: {
"Content-Type": "application/json"
},
onload: function (response) {
teams_data = JSON.parse(response.responseText);
const filas = document.querySelectorAll("#userRankTable tr");
for (let i = 1; i < filas.length; i++) {
const fila = filas[i];
const tercerTd = fila.children[5];
let data=extractTeamData(fila.children[3].getElementsByTagName("a"))
tercerTd.innerText=new Intl.NumberFormat(window.userLocal).format(Math.round(teams_data[data[0]]['elo']))
tercerTd.align = "center";
}
}});
}
//Next matches page
function nextMatches(){
let selectElements = document.getElementsByName('limit');
if (selectElements.length > 0) {
let selectElement = selectElements[0];
selectElement.addEventListener('change', function() {
if(GM_getValue("eloNextMatchesFlag")){
waitToDOM(nextMatches, ".group", 0,7000)
}
});
}
selectElements = document.getElementsByName('selectType');
if (selectElements.length > 0) {
let selectElement = selectElements[0];
selectElement.addEventListener('change', function() {
if(GM_getValue("eloNextMatchesFlag")){
waitToDOM(nextMatches, ".group", 0,7000)
}
});
}
let played_div_menu=document.getElementById("matches_sub_nav")
let div_show_scores=played_div_menu.getElementsByClassName("flex-grow-0")
let showScoreSpan=div_show_scores[0].getElementsByTagName("span")
showScoreSpan[1].addEventListener('click', function() {
if(GM_getValue("eloPlayedMatchesFlag")){
waitToDOM(lastMatchesELO, ".group", 0,7000)
}
});
let team_id=""
let urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('tid')){
team_id=urlParams.get("tid")
}else{
if(window.sport==="soccer"){
if ((GM_getValue("soccer_team_id") === undefined) || (GM_getValue("soccer_team_id") === "")){
GM_setValue("soccer_team_id", document.getElementById("tid1").value)
}
team_id=GM_getValue("soccer_team_id")
}else{
if ((GM_getValue("hockey_team_id") === undefined) || (GM_getValue("hockey_team_id") === "")){
GM_setValue("hockey_team_id", document.getElementById("tid1").value)
}
team_id=GM_getValue("hockey_team_id")
}
}
let team_ids=[]
let linkIds=""
let contIds=0
let cIds=""
let contCIds=0
let comps=[]
let comp_ids=[]
let elements0 = document.querySelectorAll('.odd');
elements0.forEach(element0 => {
let cat=element0.getElementsByClassName("responsive-hide match-reference-text-wrapper flex-grow-0");
if(cat.length>0){
let links = cat[0].querySelectorAll('a');
if(links.length>0){
let urlObj = new URL("https://www.managerzone.com/" + links[0].getAttribute('href'));
let params = new URLSearchParams(urlObj.search);
let type = params.get('type');
if(type===null){
if((params.get('p')==="cup")||(params.get('p')==="private_cup")){
if(links[0].textContent.includes("U23")){
comps[params.get('cid')]="U23"
}else{
if(links[0].textContent.includes("U21")){
comps[params.get('cid')]="U21"
}else{
if(links[0].textContent.includes("U18")){
comps[params.get('cid')]="U18"
}else{
comps[params.get('cid')]="SENIOR";
}
}
}
}else{
let id=0;
switch(params.get('p')){
case "cup":
id=params.get('cid');
break;
case "private_cup":
id=params.get('cid');
break;
case "friendly_series":
id=params.get('fsid');
break;
case "friendlyseries":
id=params.get('fsid');
break;
}
if (!comp_ids.includes(id)) {
comp_ids.push(id);
cIds += "&idComp" + contCIds + "=" + id
contCIds++;
}
}
}
}
}
let elements1 = element0.querySelectorAll('.teams-wrapper .flex-grow-1');
elements1.forEach(element1 => {
let elements2 = element1.querySelectorAll('.clippable');
elements2.forEach(element2 => {
let urlObj = new URL("https://www.managerzone.com/" + element2.getAttribute('href'));
let params = new URLSearchParams(urlObj.search);
let tidValue = params.get('tid');
if(tidValue!==null){
if (!team_ids.includes(tidValue)) {
team_ids.push(tidValue);
linkIds += "&idEquipo" + contIds + "=" + tidValue
contIds++;
}
}
});
});
});
if (!team_ids.includes(team_id)) {
linkIds += "&idEquipo" + contIds + "=" + team_id
}
GM_xmlhttpRequest({
method: "GET",
url: "https://statsxente.com/MZ1/Functions/tamper_elo_values.php?sport=" + window.sport + linkIds+cIds,
headers: {
"Content-Type": "application/json"
},
onload: function (response) {
let rawJSON = JSON.parse(response.responseText);
let jsonResponse=rawJSON["teams"]
for (let key in rawJSON["comps"]) {
comps[key]=rawJSON["comps"][key]['restriction']
}
let elements0 = document.querySelectorAll('.odd:not(.uxx)');
elements0.forEach(element0 => {
let elements1 = element0.querySelectorAll('.teams-wrapper .flex-grow-1');
elements1.forEach(element1 => {
let elements2 = element1.querySelectorAll('.clippable');
elements2.forEach(element2 => {
let urlObj = new URL("https://www.managerzone.com/" + element2.getAttribute('href'));
let params = new URLSearchParams(urlObj.search);
let tidValue = params.get('tid');
if(tidValue!==null){
tidValue=parseInt(tidValue)
let valor=0;
if (jsonResponse[tidValue]?.SENIOR) {
valor = new Intl.NumberFormat(window.userLocal).format(Number.parseFloat(jsonResponse[tidValue]["SENIOR"]).toFixed(0))
}
element1.innerHTML+=""+valor;
}else{
tidValue=parseInt(team_id)
let valor=0;
if (jsonResponse[tidValue]?.SENIOR) {
valor = new Intl.NumberFormat(window.userLocal).format(Number.parseFloat(jsonResponse[tidValue]["SENIOR"]).toFixed(0))
}
element1.innerHTML+=""+valor;
}
});
});
});
let temp_cats=[]
temp_cats["u23"] = "U23";
temp_cats["u21"] = "U21";
temp_cats["u18"] = "U18";
temp_cats["u23_world"] = "U23";
temp_cats["u21_world"] = "U21";
temp_cats["u18_world"] = "U18";
elements0 = document.querySelectorAll('.odd.uxx');
elements0.forEach(element0 => {
let cat=element0.getElementsByClassName("responsive-hide match-reference-text-wrapper flex-grow-0");
let links = cat[0].querySelectorAll('a');
let type
let href=""
if(links[0]!==undefined){
href=links[0].getAttribute('href')
}
let urlObj = new URL("https://www.managerzone.com/" +href);
let params = new URLSearchParams(urlObj.search);
type = params.get('type');
let elo_type="SENIOR"
if(type==null){
if(params.get('cid')!=null){
elo_type=comps[params.get('cid')]
}
if(params.get('fsid')!=null){
elo_type=comps[params.get('fsid')]
}
}else{
elo_type=temp_cats[type]
}
let elements1 = element0.querySelectorAll('.teams-wrapper .flex-grow-1');
elements1.forEach(element1 => {
let elements2 = element1.querySelectorAll('.clippable');
elements2.forEach(element2 => {
let urlObj = new URL("https://www.managerzone.com/" + element2.getAttribute('href'));
let params = new URLSearchParams(urlObj.search);
let tidValue = params.get('tid');
if(tidValue!==null){
tidValue=parseInt(tidValue)
let valor=0;
if(jsonResponse[tidValue] && jsonResponse[tidValue][elo_type] !== undefined){
valor = new Intl.NumberFormat(window.userLocal).format(Number.parseFloat(jsonResponse[tidValue][elo_type]).toFixed(0))
}
element1.innerHTML+=""+valor;
}else{
tidValue=parseInt(team_id)
let valor=0;
if(jsonResponse[tidValue] && jsonResponse[tidValue][elo_type] !== undefined){
valor = new Intl.NumberFormat(window.userLocal).format(Number.parseFloat(jsonResponse[tidValue][elo_type]).toFixed(0))
}
element1.innerHTML+=""+valor;
}
});
});
});
}
});
}
//Team page
function teamPage(){
let divToInserT=document.getElementById("streakAndCupInfo")
let clase="loader-"+window.sport
divToInserT.innerHTML="
Loading...
"+divToInserT.innerHTML
let u23_type="",u21_type="",u18_type=""
let team_name_div=document.getElementsByClassName("teamDataText clippable");
const team_name=encodeURI(team_name_div[0].textContent)
let team_id=""
let urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('tid')){
team_id=urlParams.get("tid")
}else{
if(window.sport==="soccer"){
if ((GM_getValue("soccer_team_id") === undefined) || (GM_getValue("soccer_team_id") === "")){
let div=document.getElementById("infoAboutTeam")
let dds=div.getElementsByTagName("dd")
let spans=dds[0].getElementsByTagName("span")
let raw_id=spans[2].innerText
let id=raw_id.replace(')', '')
id=id.replace('(', '')
GM_setValue("soccer_team_id",id)
}
team_id=GM_getValue("soccer_team_id")
}else{
if ((GM_getValue("hockey_team_id") === undefined) || (GM_getValue("hockey_team_id") === "")){
let div=document.getElementById("infoAboutTeam")
let dds=div.getElementsByTagName("dd")
let spans=dds[0].getElementsByTagName("span")
let raw_id=spans[2].innerText
let id=raw_id.replace(')', '')
id=id.replace('(', '')
GM_setValue("hockey_team_id",id)
}
team_id=GM_getValue("hockey_team_id")
}
}
let main_div=document.getElementById("infoAboutTeam")
let dds = main_div.querySelectorAll('dd');
dds.forEach(dd => {
let as = dd.querySelectorAll('a');
if(as.length>0){
let href = as[0].getAttribute('href');
let urlParams = new URLSearchParams(href.split('?')[1]);
let type = urlParams.get('type');
if(type.includes("u23")){
u23_type=window.cats[type]
}
if(type.includes("u21")){
u21_type=window.cats[type]
}
if(type.includes("u18")){
u18_type=window.cats[type]
}
}
});
GM_xmlhttpRequest({
method: "GET",
url: "https://statsxente.com/MZ1/Functions/tamper_detailed_teams.php?currency=" + GM_getValue("currency") + "&sport=" + window.sport + "&idEquipo="+team_id,
headers: {
"Content-Type": "application/json"
},
onload: function (response) {
let jsonResponse = JSON.parse(response.responseText);
let aux=team_id
let top="TOP 11"
if(window.sport==="hockey"){
top="TOP 21"
}
let teamTable='
'
teamTable+='
'
teamTable+='
'
teamTable+='
Value
LM Value
'
teamTable+='
'+top+'
ELO
'
teamTable+='
Age
'
teamTable+='
Salary
'
teamTable+='
Players
'
teamTable+='
'
teamTable+='
'
let valor=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['valor']))
let valorLM=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['valorUPSenior']))
let valor11=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['valor11']))
let elo=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['elo']))
let edad= Number.parseFloat(jsonResponse[aux]['edad']).toFixed(2)
let salario=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['salario']))
let numJugs=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['numJugadores']))
teamTable+='
"
let color=GM_getValue("bg_native")
contenidoNuevo +='
'
contenidoNuevo += '
'
contenidoNuevo += '
'
contenidoNuevo +="
"
contenidoNuevo += '
'
contenidoNuevo += '
'
contenidoNuevo +="
"
contenidoNuevo +="
"
let darkerColor = darkenColor(color, 25);
document.styleSheets[0].insertRule(
'.btn-comp-fed:hover { background-color: '+darkerColor+' !important; }',
document.styleSheets[0].cssRules.length
);
values.set('valor', 'Value');
elems = document.getElementsByClassName("nice_table");
tabla = elems[0]
tabla.insertAdjacentHTML('beforebegin', contenidoNuevo);
///COM FED BUTTONS
document.getElementById("todos").addEventListener('click', function () {
let link = "https://statsxente.com/MZ1/View/FEDCOMP_ContraTodos_VIEW.php?tamper=yes&id="+idComp+"&idioma="+ window.lang
openWindow(link, 0.75, 1.1);
});
document.getElementById("directosSIN").addEventListener('click', function () {
let link = "https://statsxente.com/MZ1/View/FEDCOMP_Directos_VIEW.php?tamper=yes&id="+idComp+"&idioma="+ window.lang
openWindow(link, 0.75, 1.1);
});
document.getElementById("directosCON").addEventListener('click', function () {
let link = "https://statsxente.com/MZ1/View/FEDCOMP_DirectosEmpates_VIEW.php?tamper=yes&id="+idComp+"&idioma="+ window.lang
openWindow(link, 0.75, 1.1);
});
document.getElementById("desgloseSIN").addEventListener('click', function () {
let link = "https://statsxente.com/MZ1/Lecturas/getDesglosePuntosFede.php?tamper=yes&idComp="+idComp+"&idioma="+ window.lang+"&idLiga="+urlParams.get('fsid')
openWindow(link, 0.75, 1.1);
});
document.getElementById("desgloseCON").addEventListener('click', function () {
let link = "https://statsxente.com/MZ1/Lecturas/getDesglosePuntosFedeEmpates.php?tamper=yes&idComp="+idComp+"&idioma="+ window.lang+"&idLiga="+urlParams.get('fsid')
openWindow(link, 0.75, 1.1);
});
}else{
values.set('valor', 'Value');
elems = document.getElementsByClassName("nice_table");
tabla = elems[0]
tabla.insertAdjacentHTML('beforebegin', contenidoNuevo);
}
//Team Stats
document.getElementById("TeamStats").addEventListener('click', function () {
let checkboxes = document.querySelectorAll('.statsxente');
checkboxes.forEach(function (checkbox) {
if (checkbox.id !== "TeamStats") {
checkbox.checked = false;
}
});
if(document.getElementById("trTeamStats").style.display==="none"){
document.getElementById("trTeamStats").style.display="table-row";
document.getElementById("trELOCompare").style.display="none";
}else{
document.getElementById("trTeamStats").style.display="none";
}
});
document.getElementById("statsSelect").addEventListener('change', function () {
let elems = document.getElementsByClassName("nice_table");
let tabla = elems[0]
let filas = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
for (let i = 0; i < filas.length; i++) {
if (checkClassNameExists(filas[i], searchClassName)) {
let celda = filas[i].cells[1];
let team_data=extractTeamData(celda.getElementsByTagName("a"));
let id=team_data[0]
let celdas = filas[i].getElementsByTagName("td");
let ultimaCelda = celdas[celdas.length - 2];
let selects = document.getElementsByTagName('select');
let index_select = 1;
if (selects[index_select] === undefined) {
index_select = 0;
}
let selectedIndex = selects[index_select].selectedIndex;
let selectedOption = selects[index_select].options[selectedIndex];
let selectedText = selectedOption.text;
let valor=0
if (teams_stats[id] === undefined) {
valor = -1
} else {
let parsedValue=evaluarExpresion(document.getElementById("statsSelect").value,teams_stats[id])
valor = new Intl.NumberFormat(window.userLocal).format(Number.parseFloat(parsedValue).toFixed(2))
}
ultimaCelda.innerHTML = valor;
}
}
let thead = tabla.querySelector('thead');
let tr = thead.querySelectorAll('tr');
let td = tr[0].querySelectorAll('th');
let select = document.getElementById("statsSelect");
td[td.length - 2].textContent = select.options[select.selectedIndex].text
});
document.getElementById("eloCompareButton").style.padding = "5px 3px";
document.getElementById("eloCompareButton").style.width = "9em";
document.getElementById("eloCompareButton").addEventListener('click', function () {
let elems = document.getElementsByClassName("nice_table");
let tabla = elems[0]
let link="https://statsxente.com/MZ1/Functions/graphLoader.php?graph=elo_compare&lang="+window.lang+"&category="+document.getElementById("catSelect").value+"&sport="+window.sport
let cont=0
for (let i = 0; i < tabla.rows.length; i++) {
let fila = tabla.rows[i];
if (fila.cells.length > 1) {
let checkboxes = fila.cells[1].querySelectorAll("input[type='checkbox']");
checkboxes.forEach(function(checkbox) {
if(checkbox.checked){
if(cont<5){
link+="&team_name"+cont+"="+encodeURIComponent(checkbox.value)+"&team_id"+cont+"="+checkbox.id
cont++;
}
}
});
}
}
openWindow(link, 0.95, 1.25);
});
document.getElementById("ELOCompare").addEventListener('click', function () {
let checkboxes = document.querySelectorAll('.statsxente');
checkboxes.forEach(function (checkbox) {
if (checkbox.id !== "ELOCompare") {
checkbox.checked = false;
}
});
if(!document.getElementById("eloCompareCol")){
let elems = document.getElementsByClassName("nice_table");
let tabla = elems[0]
for (let fila of tabla.rows) {
const nuevaCelda = fila.rowIndex === 0 ? document.createElement('th') : document.createElement('td');
if(fila.rowIndex>0){
let team_data=extractTeamData(fila.cells[1].getElementsByTagName('a'))
nuevaCelda.innerHTML = '';
}
fila.insertBefore(nuevaCelda, fila.cells[1]);
if(fila.rowIndex===0){
fila.cells[1].id="eloCompareCol"
fila.cells[2].style.width="175px"
}
}
}else{
let elems = document.getElementsByClassName("nice_table");
let table = elems[0]
let th = document.getElementById("eloCompareCol");
let columnIndex = th.cellIndex;
for (let i = 0; i < table.rows.length; i++) {
let row = table.rows[i];
let cell = row.cells[columnIndex];
if (cell.style.display === 'none') {
cell.style.display = '';
th.style.fontWeight = 'normal';
} else {
cell.style.display = 'none';
th.style.fontWeight = 'bold';
}
}
}
if(document.getElementById("trELOCompare").style.display==="none"){
document.getElementById("trELOCompare").style.display="table-row";
document.getElementById("trTeamStats").style.display="none";
}else{
document.getElementById("trELOCompare").style.display="none";
}
});
if (GM_getValue("show_league_selects") === true) {
document.getElementById("line2").style.transform = 'rotateZ(0deg)';
document.getElementById("line1").style.transform = 'rotateZ(180deg)';
document.getElementById("moreInfo").style.transform = 'rotateZ(0deg)';
}
values.forEach(function (valor, clave) {
let elemento = document.getElementById(clave);
elemento.addEventListener('click', handleClick);
});
let thWidth="7.5em"
if(idComp!=="null"){
thWidth="5.5em"
}
let nuevaCeldaEncabezado = document.createElement("th");
nuevaCeldaEncabezado.textContent = values.get(initialValues[detected_cat]);
nuevaCeldaEncabezado.style.textAlign = 'center';
nuevaCeldaEncabezado.style.maxWidth = thWidth;
nuevaCeldaEncabezado.style.width = thWidth;
nuevaCeldaEncabezado.style.whiteSpace = 'nowrap';
nuevaCeldaEncabezado.style.overflow = 'hidden';
nuevaCeldaEncabezado.style.textOverflow = 'ellipsis';
let ser = document.getElementsByClassName("seriesHeader")
let table_index = 0;
for (let kl = 0; kl < ser.length; kl++) {
if (document.getElementsByClassName("seriesHeader")[kl].parentNode.parentNode.className === "nice_table") {
table_index = kl
}
}
let widthTeam="180px"
if(idComp!=="null"){
widthTeam="150px";
}
document.getElementsByClassName("seriesHeader")[table_index].cells[1].style.width = widthTeam
document.getElementsByClassName("seriesHeader")[table_index].appendChild(nuevaCeldaEncabezado);
if(idComp!=="null"){
let nuevaColumna1 = document.getElementsByClassName("seriesHeader")[table_index].insertCell(2);
nuevaColumna1.outerHTML = "
Federation
"
nuevaColumna1.style.textAlign = 'center';
let tds = document.querySelectorAll('.nice_table td');
let ths = document.querySelectorAll('.nice_table th');
tds.forEach(td => {
td.style.paddingLeft = "3px";
td.style.paddingRight = "3px";
});
ths.forEach(th => {
th.style.paddingLeft = "3px";
th.style.paddingRight = "3px";
});
}
nuevaCeldaEncabezado = document.createElement("th");
nuevaCeldaEncabezado.textContent = "Stats Xente";
nuevaCeldaEncabezado.style.textAlign = 'center';
document.getElementsByClassName("seriesHeader")[table_index].appendChild(nuevaCeldaEncabezado);
if (tabla.getElementsByTagName("tbody")[0].innerHTML.includes("mazyar")) {
searchClassName = "responsive-hide"
}
let contIds = 0
let filasDatos = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
for (let i = 0; i < filasDatos.length; i++) {
if (checkClassNameExists(tabla.rows[i + 1], searchClassName)) {
let celda = tabla.rows[i + 1].cells[1];
let team_data=extractTeamData(celda.getElementsByTagName("a"));
let id=team_data[0]
let equipo=team_data[1]
linkIds += "&idEquipo" + contIds + "=" + id
contIds++
celda.innerHTML += ""
}
}
///DIV PROGRESS
setTimeout(function () {
(function () {
document.getElementById("moreInfo").addEventListener('click', function () {
document.getElementById("moreInfo").classList.toggle('active');
if (document.getElementById("moreInfo").classList.contains("active")) {
document.getElementById("line2").style.transform = 'rotateZ(0deg)';
document.getElementById("line1").style.transform = 'rotateZ(180deg)';
document.getElementById("moreInfo").style.transform = 'rotateZ(0deg)';
$('#separatorTd').fadeOut(1);
document.getElementById("separatorTd").style.paddingTop = "5px";
$('#show3').fadeIn('slow');
} else {
document.getElementById("line2").style.transform = 'rotateZ(45deg)';
document.getElementById("line1").style.transform = 'rotateZ(-45deg)';
document.getElementById("moreInfo").style.transform = 'rotateZ(45deg)';
$('#separatorTd').fadeIn(1);
$('#show3').fadeOut('slow');
}
});
})();
}, 200);
GM_xmlhttpRequest({
method: "GET",
url: "https://statsxente.com/MZ1/Functions/tamper_teams.php?currency=" + GM_getValue("currency") + "&sport=" + window.sport + linkIds,
headers: {
"Content-Type": "application/json"
},
onload: function (response) {
let jsonResponse = JSON.parse(response.responseText);
teams_data = jsonResponse;
let filasDatos = tabla.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
for (let i = 0; i < filasDatos.length; i++) {
if (checkClassNameExists(filasDatos[i], searchClassName)) {
let celda = filasDatos[i].cells[1]
let team_data=extractTeamData(celda.getElementsByTagName("a"));
let id=team_data[0]
let equipo=team_data[1]
let nuevaColumna = document.createElement("td");
let valor = 0;
if (jsonResponse[id] && jsonResponse[id][initialValues[detected_cat]] !== undefined) {
valor = new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[id][initialValues[detected_cat]]))
}
nuevaColumna.innerHTML = valor
nuevaColumna.style.textAlign = 'center';
filasDatos[i].appendChild(nuevaColumna);
if(idComp!=="null"){
let nuevaColumna1 = filasDatos[i].insertCell(2);
nuevaColumna1.innerHTML = ""+fl_data['teams'][id]['nombreFede']+"";
nuevaColumna1.style.textAlign = 'left';
}
let eloType = 1
if (window.sport === "soccer") { eloType = 2 }
let cats_elo = {}
cats_elo["senior"] = "SENIOR";
cats_elo["seniorw"] = "SENIOR";
cats_elo["SUB23"] = "U23";
cats_elo["SUB21"] = "U21";
cats_elo["SUB18"] = "U18";
cats_elo["SUB23w"] = "U23";
cats_elo["SUB21w"] = "U21";
cats_elo["SUB18w"] = "U18";
let cat = cats[detected_cat]
if(cat!=="senior"){eloType=3}
let flagSenior = 0, flagSub23 = 0, flagSub21 = 0, flagSub18 = 0;
if (jsonResponse[id]["elo"] > 0) { flagSenior = 1 }
if (jsonResponse[id]["elo23"] > 0) { flagSub23 = 1 }
if (jsonResponse[id]["elo21"] > 0) { flagSub21 = 1 }
if (jsonResponse[id]["elo18"] > 0) { flagSub18 = 1 }
let buttonDisplay = "display:block;";
nuevaColumna = document.createElement("td");
nuevaColumna.style.margin = '0 auto';
nuevaColumna.style.textAlign = 'center';
let iner = "";
if (GM_getValue("league_graph_button") === "checked") {
buttonDisplay = ""
} else {
buttonDisplay = "display:none;";
}
iner += "";
if (GM_getValue("league_report_button") === "checked") {
buttonDisplay = ""
} else {
buttonDisplay = "display:none;";
}
iner += "";
if (GM_getValue("league_calendar_button") === "checked") {
buttonDisplay = ""
} else {
buttonDisplay = "display:none;";
}
iner += " ";
iner += "";
nuevaColumna.innerHTML = iner
filasDatos[i].appendChild(nuevaColumna);
nuevaColumna = document.createElement("td");
(function (currentId, currentLSport, lang) {
document.getElementById("but1" + currentId).addEventListener('click', function () {
let link = "https://statsxente.com/MZ1/Graficos/graficoProgresoEquipo.php?idEquipo=" + currentId + "&idioma=" + lang + "&divisa=" + GM_getValue("currency") + "&deporte=" + currentLSport;
openWindow(link, 0.95, 1.25);
});
})(id, window.lsport, window.lang);
(function (currentId, currentLSport, lang, currentCat) {
document.getElementById("but2" + currentId).addEventListener('click', function () {
let src = "filtroGraficoEquiposHistoricoHockey";
if (currentLSport === "F") {
src = "filtroGraficoLinealEquiposHistorico";
}
let link = "https://statsxente.com/MZ1/View/" + src + ".php?tamper=yes&categoria=" + currentCat + "&idEquipo=" + currentId + "&idioma=" + lang + "&modal=yes&valor=nota&season=75&season_actual=75&equipo=-"
openWindow(link, 0.95, 1.25);
});
})(id, window.lsport, window.lang, cat);
(function (currentId, currentEquipo, currentCat, currentSport, lang) {
document.getElementById("but" + currentId).addEventListener('click', function () {
let link = "https://statsxente.com/MZ1/View/filtroStatsEquiposHistorico.php?tamper=no&idEquipo=" + currentId + "&idioma=" + lang + "&modal=yes&deporte=" + currentSport + "&season=77&season_actual=77&categoria=" + currentCat + "&equipo=" + currentEquipo + "&cerrar=no";
openWindow(link, 0.95, 1.25);
});
})(id, equipo, cat, window.sport, window.lang);
(function (currentId, type, currentCat, currentSport, lang, flagS, flagS23, flagS21, flagS18) {
document.getElementById("but3" + currentId).addEventListener('click', function () {
let link = "https://statsxente.com/MZ1/Graficos/graficoRachaEquipoELO.php?tamper=yes&team_id=" + currentId + "&idioma=" + lang + "&deporte=" + currentSport + "&type=" + type + "&cat=" + currentCat + "&flagSenior=" +
flagS + "&flagSub23=" + flagS23 + "&flagSub21=" + flagS21 + "&flagSub18=" + flagS18;
openWindow(link, 0.95, 1.25);
});
})(id, eloType, cats_elo[cat], window.sport, window.lang, flagSenior, flagSub23, flagSub21, flagSub18);
}
}
let thead = document.getElementsByClassName("seriesHeader")[table_index]
let ths = thead.querySelectorAll("th");
ths.forEach(function (th, index) {
th.addEventListener("click", function () {
ordenarTabla(index, true, "nice_table",true);
});
});
}
});
}
//Match page
async function match() {
let team_div = document.getElementsByClassName("flex-grow-0 textCenter team-table block")
if (team_div.length===0){
team_div = document.getElementsByClassName("flex-grow-0 textCenter team-table no-match-buttons block")
}
let teams_ = []
let linkIds=""
let contIds=0
for (let x = 0; x < 2; x++) {
let as = team_div[x].getElementsByTagName("a")
let urlObj = new URL("https://www.managerzone.com/" + as[0].getAttribute('href'));
let params = new URLSearchParams(urlObj.search);
let tidValue = params.get('tid');
teams_[x] = { "team_name": as[0].innerHTML, "team_id": tidValue, "inserted": "" }
linkIds += "&idEquipo" + contIds + "=" + tidValue
contIds++
}
GM_xmlhttpRequest({
method: "GET",
url: "https://statsxente.com/MZ1/Functions/tamper_teams.php?currency=" + GM_getValue("currency") + "&sport=" + window.sport + linkIds,
headers: {
"Content-Type": "application/json"
},
onload: function (response) {
let jsonResponse = JSON.parse(response.responseText);
const divs = document.querySelectorAll('div'); // Selecciona todos los divs
const divsConAltura15px = Array.from(divs).filter(div => {
const computedStyle = window.getComputedStyle(div);
return computedStyle.height === '15px' && div.innerHTML === "";
});
for(let m=0;m<2;m++){
let aux=teams_[m]['team_id']
let top="TOP 11"
if(window.sport==="hockey"){
top="TOP 21"
}
let teamTable='
'
teamTable+='
'
teamTable+='
'
teamTable+='
Value
LM Value
'
teamTable+='
'+top+'
ELO
'
let valor=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['valor']))
let valorLM=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['valorUPSenior']))
let valor11=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['valor11']))
let elo=new Intl.NumberFormat(window.userLocal).format(Math.round(jsonResponse[aux]['elo']))
teamTable+='
'
divsConAltura15px[m].insertAdjacentHTML('afterend',teamTable)
}
const thElements = document.querySelectorAll('table.matchValuesTable th');
// Cambia el color de fondo de cada
thElements.forEach(th => {
th.style.backgroundColor = GM_getValue("bg_native");
th.style.color = GM_getValue("color_native");
});
document.getElementById("thTransparent0").style.backgroundColor="transparent";
document.getElementById("thTransparent1").style.backgroundColor="transparent";
}
});
let elems = document.getElementsByClassName("hitlist " + window.sport + " statsLite marker tablesorter");
for (let x = 0; x < 2; x++) {
let linkIds = ""
let contIds = 0;
let tabla = elems[x]
let filas = tabla.getElementsByTagName("tr");
let fila = filas[1];
for (let i = 2; i < filas.length - 1; i++) {
fila = filas[i];
let tds = fila.getElementsByTagName("td");
let as_ = tds[2].getElementsByTagName("a");
let urlObj = new URL("https://www.managerzone.com/" + as_[0].getAttribute("href"));
let params = new URLSearchParams(urlObj.search);
let pid = params.get('pid');
linkIds += "&id" + contIds + "=" + pid
contIds++;
}
let link = "http://statsxente.com/MZ1/Functions/tamper_check_stats_player.php?sport=" + window.sport + linkIds
teams_[x]["inserted"]= await fetchExistPlayers(link);
}
elems = document.getElementsByClassName("hitlist " + window.sport + " statsLite marker tablesorter");
for (let x = 0; x < 2; x++) {
if (teams_[x]['inserted']['total'] > 0) {
let tabla = elems[x]
let firstTrThead = tabla.querySelector('thead td');
let currentColspan = firstTrThead.getAttribute('colspan');
currentColspan = parseInt(currentColspan, 10) + 1;
firstTrThead.setAttribute('colspan', currentColspan);
let secondTrThead = tabla.querySelector('thead tr:nth-of-type(2)')
let newTd = document.createElement('td');
newTd.textContent = '';
secondTrThead.appendChild(newTd);
let filas = tabla.getElementsByTagName("tr");
let dato = document.createElement("td");
let tfoot = tabla.querySelector("tfoot");
let primeraFilaTfoot = tfoot.querySelector("tr");
let primerTDTfoot = primeraFilaTfoot.querySelector("td");
primerTDTfoot.setAttribute("colspan", "9");
let elems2 = document.getElementsByClassName("listHeadColor");
let lista = elems2[0]
let nuevoElementoDD = document.createElement("dd");
nuevoElementoDD.textContent = "Nuevo elemento";
nuevoElementoDD.className = "c6"
lista.appendChild(nuevoElementoDD);
for (let i = 2; i < filas.length - 1; i++) {
let fila = filas[i];
let tds = fila.getElementsByTagName("td");
let as_ = tds[2].getElementsByTagName("a");
let urlObj = new URL("https://www.managerzone.com/" + as_[0].getAttribute("href"));
let params = new URLSearchParams(urlObj.search);
let pid = params.get('pid');
if (teams_[x]['inserted'][pid] === "yes") {
dato = document.createElement("td");
//aa
dato.innerHTML = ""
fila.appendChild(dato);
(function (currentId, currentTeamId, currentSport, lang, team_name, player_name) {
document.getElementById("but" + currentId).addEventListener('click', function () {
let link = "http://statsxente.com/MZ1/Functions/tamper_player_stats.php?sport=" + currentSport
+ "&player_id=" + currentId + "&team_id=" + currentTeamId + "&idioma=" + lang + "&divisa=" + GM_getValue("currency") +
"&team_name=" + encodeURIComponent(team_name) + "&player_name=" + encodeURIComponent(player_name)
openWindow(link, 0.95, 1.25);
});
})(pid, teams_[x]['team_id'], window.sport, window.lang, teams_[x]['team_name'], as_[0].innerHTML);
}else{
dato = document.createElement("td");
fila.appendChild(dato);
}
}
}
}
}
//Players page
async function playersPage() {
const blob = new Blob([workerCode], { type: "application/javascript" });
const workerURL = URL.createObjectURL(blob);
const worker = new Worker(workerURL);
const tacticsList = [];
const sport= window.sport
const elementos = Array.from(document.getElementsByClassName('playerContainer')).map((el) => {
const playerId = el.querySelector('.player_id_span').textContent.trim();
const age = el.querySelector('.dg_playerview_info table td').textContent.split(':')[1].trim();
const skills = Array.from(el.querySelectorAll('.skills-container .skillval')).map(skill => {
const cleanedText = skill.textContent.trim().replace(/[()]/g, ''); // Reemplaza ( y ) con ''
return parseInt(cleanedText, 10);
});
let tactics
if(sport==="soccer"){
tactics = Array.from(el.querySelectorAll('.player_tactic.gradientSunriseIcon'))
.map(t => ({
name: t.textContent.split('(')[0].trim(),
line: t.textContent.split('(')[1].split(')')[0].trim(),
}))
.filter((value, index, self) => {
const tacticString = `${value.name}-${value.line}`;
return self.findIndex(t => `${t.name}-${t.line}` === tacticString) === index;
});
}else{
tactics = Array.from(el.querySelectorAll('.player_tactic.gradientSunriseIcon'))
.map(t => {
const textContent = t.textContent.trim();
const [namePart, linePart] = textContent.split('(');
const name = namePart.trim();
let line = '';
if (linePart) {
line = linePart.replace(')', '').trim();
if (line.includes(':')) {
line = line.split(':')[0].trim();
}else{
gk_line=line
}
}
return { name, line };
})
.filter((value, index, self) => {
const tacticString = `${value.name}-${value.line}`;
return self.findIndex(t => `${t.name}-${t.line}` === tacticString) === index;
});
}
tactics.forEach(tactic => {
tacticsList.push(tactic.name);
});
return { id: playerId, age, skills, tactics };
});
const skillsNames = Array.from(document.querySelectorAll('.player_skills .clippable')).map(el => el.textContent.trim()).filter((value, index, self) => self.indexOf(value) === index);
let flagStats = true
let urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('tid')) {
flagStats = false
}
if(flagStats){
let team_id
if(window.sport==="soccer"){
if ((GM_getValue("soccer_team_id") === undefined) || (GM_getValue("soccer_team_id") === "")){
let div_player=document.getElementById("thePlayers_0")
let h2s=div_player.getElementsByTagName("h2");
let as=h2s[0].getElementsByTagName("a")
let urlObj = new URL("https://www.managerzone.com/"+as[0].getAttribute("href"));
let params = new URLSearchParams(urlObj.search);
let tid = params.get('tid');
GM_setValue("soccer_team_id",tid)
}
team_id=GM_getValue("soccer_team_id")
}else{
if ((GM_getValue("hockey_team_id") === undefined) || (GM_getValue("hockey_team_id") === "")){
let div_player=document.getElementById("thePlayers_0")
let h2s=div_player.getElementsByTagName("h2");
let as=h2s[0].getElementsByTagName("a")
let urlObj = new URL("https://www.managerzone.com/"+as[0].getAttribute("href"));
let params = new URLSearchParams(urlObj.search);
let tid = params.get('tid');
GM_setValue("hockey_team_id",tid)
}
team_id=GM_getValue("hockey_team_id")
}
let elementos1 = document.getElementsByClassName('playerContainer');
for (let i = 0; i < elementos1.length; i++) {
let ids = elementos1[i].getElementsByClassName('player_id_span');
let playerName = elementos1[i].querySelector('.player_name').textContent
let elementos_ = elementos1[i].getElementsByClassName('p_sublinks');
let txt = ''
txt += ''
let index=0
if(window.stx_device!=="computer"){index=1}
elementos_[index].innerHTML += txt;
(function (currentId, currentTeamId, currentSport, lang, team_name, player_name) {
document.getElementById("but" + currentId).addEventListener('click', function () {
let link = "http://statsxente.com/MZ1/Functions/tamper_player_stats.php?sport=" + currentSport
+ "&player_id=" + currentId + "&team_id=" + currentTeamId + "&idioma=" + lang + "&divisa=" + GM_getValue("currency") +
"&team_name=" + encodeURIComponent(team_name) + "&player_name=" + encodeURIComponent(player_name)
openWindow(link, 0.95, 1.25);
});
})(ids[0].textContent, team_id, window.sport, window.lang, "[undefined]", playerName);
}
}
if(sport==="soccer"){
skillsNames.pop();
//GK Line detect
const playerImages = document.querySelectorAll('.player-image');
const elementWithGK1 = Array.from(playerImages).find(el => {
return el.innerHTML.includes('gk=1');
});
let tactics1 = elementWithGK1.parentNode.getElementsByClassName("player_tactic gradientSunriseIcon")
let ini = tactics1[0].textContent.indexOf('(');
let fin = tactics1[0].textContent.indexOf(')');
gk_line = tactics1[0].textContent.substring(ini + 2, fin - 1);
}
worker.postMessage({ elementos, sport, skillsNames, tacticsList, flagStats});
worker.onmessage = function (e) {
const players=e.data.players
const lines=e.data.lines
const tacticsList=e.data.tacticsList
const skillsNames= e.data.skillsNames
su_line=e.data.su_line
if(su_line===""){
su_line="unsetted"
}
const container = document.getElementById("squad-search-toggle");
let contenidoNuevo = "
";
contenidoNuevo += "
Choose Tactic:
";
container.innerHTML = contenidoNuevo + container.innerHTML;
document.getElementById("tactics_select").addEventListener('change', function () {
const selectedTactic = this.value;
document.getElementById("divMenu").innerHTML = ""
skillDistrib(selectedTactic, players, lines, skillsNames,gk_line,su_line);
});
skillDistrib("All Team", players, lines, skillsNames,gk_line,su_line);
maximizationsPlayersPage()
};
}
async function maximizationsPlayersPage(){
let elementos1 = document.getElementsByClassName('weeklyReportBox weeklyReportBoxResponsive');
let elementosConBall = Array.from(elementos1).filter(el => el.innerHTML.includes('ball')&& el.innerHTML.includes('improvement'));
for (let i = 0; i < elementosConBall.length; i++) {
let improvementDiv=elementosConBall[i].getElementsByClassName("improvementLabel")
let trainedSkill=elementosConBall[i].getElementsByClassName("clippable")
let skills=elementosConBall[i].parentNode.parentNode.parentNode.parentNode.getElementsByClassName("player_skills player_skills_responsive")
let elementosConHola = Array.from(skills[0].getElementsByClassName("clippable")).filter(el => el.innerText.includes(trainedSkill[0].innerText));
let currentTd = elementosConHola[0].closest('td');
if(currentTd.nextElementSibling?.nextElementSibling?.nextElementSibling?.nextElementSibling?.nextElementSibling.innerHTML.includes("maxed")){
improvementDiv[0].style.backgroundColor="#db5d5d"
}
}
}
async function skillDistrib(tactic,players, lines, skills_names,gk_line,su_line) {
let t = tactic
let l=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
if (window.sport === "hockey") {
l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0]
}
let li_t = {}
for (let i = 0; i < lines.length; i++) {
li_t[lines[i]] = [...l];
}
let no_gk_line = "Tactic -(" + gk_line + ")"
li_t["Team"] = [...l];
li_t["U23"] = [...l];
li_t["U21"] = [...l];
li_t["U18"] = [...l];
li_t["Tactic"] = [...l];
li_t[no_gk_line] = [...l];
let i,j
for (i = 0; i < players.length; i++) {
if (players[i]['tactics'].includes(t)) {
for (j = 0; j < players[i]['skills'].length; j++) {
li_t[players[i]['tacticsPosition'][t]][j] += players[i]['skills'][j]
li_t['Tactic'][j] += players[i]['skills'][j]
if (players[i]['tacticsPosition'][t] !== gk_line) {
li_t[no_gk_line][j] += players[i]['skills'][j]
}
}
li_t[players[i]['tacticsPosition'][t]][j] += 1
li_t['Tactic'][j] += 1
if (players[i]['tacticsPosition'][t] !== gk_line) {
li_t[no_gk_line][j] += 1
}
} else {
for (let j = 0; j < players[i]['skills'].length; j++) {
if (players[i]['age'] <= 23) {
li_t['U23'][j] += players[i]['skills'][j]
}
if (players[i]['age'] <= 23) {
li_t['U21'][j] += players[i]['skills'][j]
}
if (players[i]['age'] <= 23) {
li_t['U18'][j] += players[i]['skills'][j]
}
li_t['Team'][j] += players[i]['skills'][j]
}
if (players[i]['age'] <= 23) {
li_t['U23'][li_t["U23"].length - 1] += 1
}
if (players[i]['age'] <= 21) {
li_t['U21'][li_t["U21"].length - 1] += 1
}
if (players[i]['age'] <= 18) {
li_t['U18'][li_t["U18"].length - 1] += 1
}
li_t['Team'][li_t["Team"].length - 1] += 1
}
}
const container = document.getElementById("divMenu")
let contenidoNuevo = "
';
newElement.innerHTML=txtToInsert;
let body = document.body;
body.appendChild(newElement);
let newModalElement = document.createElement('div');
newModalElement.innerHTML = '
'
body.insertBefore(newModalElement, body.firstChild);
if (GM_getValue("leagueFlag") === undefined) {
GM_setValue("leagueFlag", true)
}
if (GM_getValue("matchFlag") === undefined) {
GM_setValue("matchFlag", true)
}
if (GM_getValue("federationFlag") === undefined) {
GM_setValue("federationFlag", true)
}
if (GM_getValue("playersFlag") === undefined) {
GM_setValue("playersFlag", true)
}
if (GM_getValue("countryRankFlag") === undefined) {
GM_setValue("countryRankFlag", true)
}
if (GM_getValue("league_graph_button") === undefined) {
GM_setValue("league_graph_button", "checked")
}
if (GM_getValue("league_report_button") === undefined) {
GM_setValue("league_report_button", "checked")
}
if (GM_getValue("league_calendar_button") === undefined) {
GM_setValue("league_calendar_button", "checked")
}
if (GM_getValue("windowsConfig") === undefined) {
GM_setValue("windowsConfig", true)
}
if (GM_getValue("tabsConfig") === undefined) {
GM_setValue("tabsConfig", false)
}
if (GM_getValue("show_league_selects") === undefined) {
GM_setValue("show_league_selects", true)
}
if (GM_getValue("league_image_size") === undefined) {
GM_setValue("league_image_size", 20)
}
if (GM_getValue("eloNextMatchesFlag") === undefined) {
GM_setValue("eloNextMatchesFlag", true)
}
if (GM_getValue("eloPlayedMatchesFlag") === undefined) {
GM_setValue("eloPlayedMatchesFlag", true)
}
if (GM_getValue("teamPageFlag") === undefined) {
GM_setValue("teamPageFlag", true)
}
if (GM_getValue("trainingReportFlag") === undefined) {
GM_setValue("trainingReportFlag", true)
}
if (GM_getValue("eloHiddenPlayedMatchesFlag") === undefined) {
GM_setValue("eloHiddenPlayedMatchesFlag", true)
}
if (GM_getValue("flFlag") === undefined) {
GM_setValue("flFlag", true)
}
if (GM_getValue("cupFlag") === undefined) {
GM_setValue("cupFlag", true)
}
let leagueFlag = "", matchFlag = "", federationFlag = "", playersFlag = "", countryRankFlag = "",eloNextMatchesFlag="",
eloPlayedMatchesFlag="",teamFlag="",trainingReportFlag="",eloHiddenPlayedMatchesFlag="",flFlag="",cupFlag=""
if (GM_getValue("federationFlag")) federationFlag = "checked"
if (GM_getValue("matchFlag")) matchFlag = "checked"
if (GM_getValue("leagueFlag")) leagueFlag = "checked"
if (GM_getValue("playersFlag")) playersFlag = "checked"
if (GM_getValue("countryRankFlag")) countryRankFlag = "checked"
if (GM_getValue("eloNextMatchesFlag")) eloNextMatchesFlag = "checked"
if (GM_getValue("eloPlayedMatchesFlag")) eloPlayedMatchesFlag = "checked"
if (GM_getValue("teamPageFlag")) teamFlag = "checked"
if (GM_getValue("trainingReportFlag")) trainingReportFlag = "checked"
if (GM_getValue("eloHiddenPlayedMatchesFlag")) eloHiddenPlayedMatchesFlag = "checked"
if (GM_getValue("flFlag")) flFlag = "checked"
if (GM_getValue("cupFlag")) cupFlag = "checked"
let newContent = '
'
newContent += '
Config
'
newContent +='
';
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += '
'
newContent += "
"
newContent += ""
newContent += "
Leagues Config
"
newContent += "
"
newContent += "
Default Senior Param:
" + generateValuesSelect('senior') + "
";
newContent += "
Default U23 Param:
" + generateValuesSelect('u23') + "
";
newContent += "
Default U21 Param:
" + generateValuesSelect('u21') + "
";
newContent += "
Default U18 Param:
" + generateValuesSelect('u18') + "
";
newContent += "
"
let checked_graph = GM_getValue("league_graph_button")
let checked_report = GM_getValue("league_report_button")
let checked_calendar = GM_getValue("league_calendar_button")
newContent += "
"
newContent += "
"
newContent += "
"
newContent += '
';
newContent += '
'
let checkedLeagueSelects = ""
if (GM_getValue("show_league_selects")) {
checkedLeagueSelects = "checked"
}
newContent += '
'
newContent += "
"
newContent += ""
newContent += "
Tabs Config
"
newContent += "
"
let checkedTab = ""
if (GM_getValue("tabsConfig")) {
checkedTab = "checked"
}
let checkedWin = ""
if (GM_getValue("windowsConfig")) {
checkedWin = "checked"
}
newContent += "";
newContent += "";
newContent += "