您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Versión actualizada de MZScript
- // ==UserScript==
- // @name rzscript
- // @namespace rzscript
- // @description Versión actualizada de MZScript
- // @homepage https://github.com/rhonaldomaster/rzscript
- // @include https://www.managerzone.com/?p=
- // @grant none
- // @version 0.2
- // @copyright GNU/GPL v3
- // @author rhonaldomaster
- // @credits c_c, serbocapo
- // @license GPL-3.0-or-later
- // @compatible chrome
- // @compatible firefox
- // @compatible opera
- // @compatible safari
- // @compatible edge
- // ==/UserScript==
- const rzscript = (() => {
- const sports = ['', 'soccer', 'hockey'];
- const init = () => {
- setStyles();
- createQuickLinks();
- createForumLinks();
- setPageFunctions();
- setEvents();
- addTeamBadgeToPlayers();
- };
- const setStyles = () => {
- const css =
- '#pt-wrapper{bottom:52px;filter:alpha(opacity=50);opacity:0.5;}#notifications-wrapper{bottom:-2px;}' +
- '.quicklink{background-color:#4A4A4A;border:0;border-radius:4px;box-shadow:0 0 1px 0 #000;color:#FFF;cursor:pointer;display:inline-block;margin-left:4px;padding:2px 4px;text-decoration:none;}' +
- '.quicklink:hover{background-color:#000000;box-shadow:0 0 2px 0 #000000;color:#FFFFFF;text-decoration:none;}' +
- '.pagelinks{padding:0 4px 8px;}' +
- '.quicklinks{text-align:center;}' +
- '#fluid-menu-opener > div.sport-line,#top-wrapper-sport-line{background:#5d5b5f none repeat scroll 0 0;}' +
- '.preview-results{border:2px solid #2A4CB0;cursor:pointer;float:right;height:20px;padding:4px 0 0 4px;width:20px;}' +
- '.bbcode{margin:auto;max-width:640px;}' +
- '.player-image.soccer{position: relative;}' +
- '.player-image.soccer .player-team-badge{background-position: center; height: auto; padding: 5px; position: absolute; right: 24px; top: 44px; width: auto;}';
- if (typeof GM_addStyle != 'undefined') {
- GM_addStyle(css);
- return;
- } else if (typeof PRO_addStyle != 'undefined') {
- PRO_addStyle(css);
- return;
- } else if (typeof addStyle != 'undefined') {
- addStyle(css);
- return;
- }
- let heads = document.querySelectorAll('head');
- if (heads.length < 1) {
- return;
- }
- let node = document.createElement('style');
- node.appendChild(document.createTextNode(css));
- heads[0].appendChild(node);
- };
- // Quick links
- const createButtonLinks = (data) => {
- const container = document.querySelector(data.selector);
- if (container) {
- return;
- }
- let html =
- '<div ' +
- (data.selector.charAt(0) == '.' ? 'class' : 'id') +
- '="' +
- data.selector.replace(/\./g, '') +
- '">';
- html += data.links.reduce((prev, curr) => {
- return (
- prev +
- '<a class="quicklink" href="' +
- curr.url +
- '"' +
- (curr.url.indexOf('?p=') < 0 ? ' target="_blank"' : '') +
- ' title="' +
- curr.title +
- '">' +
- curr.text +
- '</a>'
- );
- }, '');
- html += '</div>';
- data.wrapper.insertAdjacentHTML(data.prepend ? 'afterbegin' : 'beforeend', html);
- };
- const createForumLinks = () => {
- const options = {
- selector: '.js-forum-buttons',
- wrapper: document.querySelector('#notifications-wrapper'),
- links: [
- {
- text: 'MER',
- title: 'Mercado(Transfers)',
- url: '?p=forum&sub=topics&forum_id=254&sport=soccer'
- },
- { text: 'AMI', title: 'Amistosos', url: '?p=forum&sub=topics&forum_id=249&sport=soccer' },
- { text: 'MZH', title: 'MZ Habla', url: '?p=forum&sub=topics&forum_id=253&sport=soccer' },
- {
- text: 'PYR',
- title: 'Preguntas y Respuestas',
- url: '?p=forum&sub=topics&forum_id=255&sport=soccer'
- },
- {
- text: 'DA',
- title: 'Discusión Abierta',
- url: '?p=forum&sub=topics&forum_id=250&sport=soccer'
- },
- {
- text: 'FED',
- title: 'Federaciones',
- url: '?p=forum&sub=topics&forum_id=251&sport=soccer'
- },
- {
- text: 'HDC',
- title: 'Hablemos de copas',
- url: '?p=forum&sub=topics&forum_id=252&sport=soccer'
- }
- ],
- prepend: false
- };
- createButtonLinks(options);
- };
- const createQuickLinks = () => {
- const options = {
- selector: '.pagelinks .quicklinks',
- wrapper: document.querySelector('#contentDiv'),
- links: [
- { text: 'Monitoreo', title: 'Monitoreo', url: '?p=transfer&sub=yourplayers' },
- { text: 'Vista Alternativa', title: 'Ver Vista Alternativa', url: '?p=players&sub=alt' },
- { text: 'Seguimiento', title: 'Ir a Seguimiento', url: '?p=shortlist' },
- { text: 'Finanzas', title: 'Ver Finanzas', url: '?p=economy' },
- { text: 'Mercado', title: 'Ver Mercado', url: '?p=transfer' },
- { text: 'Jugados', title: 'Ver los Partidos Jugados', url: '?p=match&sub=played' },
- {
- text: 'Próximos',
- title: 'Ver los Próximos Partidos',
- url: '?p=match&sub=scheduled'
- },
- { text: 'Tácticas', title: 'Ir a Tácticas', url: '?p=tactics' },
- {
- text: 'Lesiones/Sanciones',
- title: 'Ver Lesionados/Sancionados',
- url: '?p=players&sub=unavailable'
- },
- {
- text: 'Reporte entr.',
- title: 'Ver el Reporte de Entrenamiento',
- url: '?p=training_report'
- },
- { text: 'Entrenamiento', title: 'Ir al Entrenamiento General', url: '?p=training' },
- { text: 'Skiller', title: 'Skiller MZ Player', url: 'http://mzplayer.se' },
- { text: 'Top 11', title: 'Ir a top11', url: 'https://oxi.se/top11/' }
- ],
- prepend: true
- };
- createButtonLinks(options);
- };
- // End quick links
- // Signature
- const renderSignatureDiv = () => {
- const signature = obtainSignature();
- if (signature && localStorage.getItem('showAlwaysUserSignature')) {
- setSignature(signature, false);
- }
- let container = document.querySelector('.bbcode');
- const html =
- '<form class="js-signature-form">' +
- '<table style="width:100%;">' +
- '<tr>' +
- '<td><span>Texto</span> <small>(Usa bbcode)</small></td>' +
- '</tr>' +
- '<tr>' +
- '<td><textarea name="signature" cols="84" rows="5" style="padding:5px;">' +
- (signature ? signature : '') +
- '</textarea></td>' +
- '</tr>' +
- '<tr>' +
- '<td>' +
- '<button type="button" class="quicklink js-signature">Agregar firma</button>' +
- '<button type="button" class="quicklink js-save-signature">Guardar firma</button>' +
- '<button type="button" class="quicklink js-delete-signature">Borrar firma</button>' +
- '</td>' +
- '</tr>' +
- '</table>' +
- '</form>';
- container.insertAdjacentHTML('beforeend', html);
- };
- const setSignature = (signature, isFromForm) => {
- let textarea = document.querySelector('.markItUpEditor');
- const put = !isFromForm && textarea.value !== '' ? false : true;
- if (!put) {
- return;
- }
- textarea.value += '\r\n\r\n';
- for (let i = 0; i <= 50; i++) {
- textarea.value += '-';
- }
- textarea.value += '\r\n' + signature;
- resetCursor(textarea);
- };
- const saveSignature = () => {
- let form = document.querySelector('.js-signature-form');
- form = JSON.parse(formToJSONString(form));
- let signature = form.signature.replace(/^(\s|\ )*|(\s|\ )*$/g, '');
- if (signature !== '' && signature.length > 0 && signature !== null) {
- saveUserSignature(signature);
- }
- let showAlways = window.confirm('Mostrar siempre?');
- if (showAlways) {
- localStorage.setItem('showAlwaysUserSignature', showAlways);
- return;
- }
- localStorage.removeItem('showAlwaysUserSignature');
- };
- const resetCursor = (element) => {
- if (element.setSelectionRange) {
- element.focus().setSelectionRange(0, 0);
- } else if (element.createTextRange) {
- let range = element.createTextRange();
- range.moveStart('character', 0).select();
- }
- };
- const saveUserSignature = (signature) => {
- const savedSignature = localStorage.getItem('userSignature');
- if (savedSignature != signature) {
- localStorage.setItem('userSignature', signature);
- }
- };
- const dropSignature = () => {
- localStorage.removeItem('userSignature');
- localStorage.removeItem('showAlwaysUserSignature');
- alert('La firma fue eliminada');
- };
- const putSignature = (ev) => {
- ev.preventDefault();
- let form = document.querySelector('.js-signature-form');
- form = JSON.parse(formToJSONString(form));
- let signature = form.signature.replace(/^(\s|\ )*|(\s|\ )*$/g, '');
- if (signature !== '' && signature.length > 0 && signature !== null) {
- setSignature(signature, true);
- }
- };
- const obtainSignature = () => {
- let signature = '';
- if (localStorage.getItem('userSignature')) {
- signature = localStorage.getItem('userSignature');
- } else if (localStorage.getItem('firmaMZ')) {
- signature = localStorage.getItem('firmaMZ');
- }
- return signature;
- };
- // End signature
- // Matches data
- const linkToSeniorLeague = () => {
- const wrapper = document.querySelector('#match-info-wrapper');
- if (!wrapper) {
- return;
- }
- let h1 = wrapper.querySelector('h1');
- const text = h1.innerHTML;
- const i18nLeague = ['Liga', 'League'];
- if (i18nLeague.indexOf(text) > -1) {
- h1.innerHTML = '<a href="?p=league&type=senior">' + text + '</a>';
- }
- };
- const getPlayerData = (teamXML, playerId) => {
- let player = null;
- const players = teamXML.getElementsByTagName('Player');
- for (let i = 0; i < players.length; i++) {
- if (playerId == players[i].getAttribute('id')) {
- player = players[i];
- }
- }
- return player;
- };
- const playersMatchValue = () => {
- if (ajaxSport == 'soccer') {
- footballMatchValues();
- } else if (ajaxSport == 'hockey') {
- hockeyMatchValues();
- }
- };
- const footballMatchValues = () => {
- let teamsDiv = document.querySelectorAll('.matchStats:not(.matchStats--detailed)');
- if (!teamsDiv) {
- return;
- }
- const teamHeadings = document.querySelectorAll('.team-table');
- for (let i = 0; i < teamHeadings.length; i++) {
- const links = teamHeadings[i].querySelectorAll('a');
- renderFootballTeamValue(links[0].href.split('&tid=')[1], teamsDiv[i]);
- }
- };
- const renderFootballTeamValue = (teamId, teamTable) => {
- if (!teamTable) {
- return;
- }
- const ajax = $.ajax({
- url: '/xml/team_playerlist.php',
- type: 'GET',
- data: { sport_id: sports.indexOf(ajaxSport), team_id: teamId }
- });
- ajax.done((data) => {
- const currency = data.getElementsByTagName('TeamPlayers')[0].getAttribute('teamCurrency');
- let playing11Value = 0,
- playing11 = 0;
- const firstRow = teamTable.querySelector('thead tr');
- const tableBody = teamTable.querySelector('tbody');
- const tableFoot = teamTable.querySelector('tfoot');
- const totalsRow = tableFoot.rows[2];
- firstRow.innerHTML = '<td>Valor</td>' + firstRow.innerHTML;
- for (let i = 0; i < tableBody.rows.length; i++) {
- if (tableBody.rows[i].querySelector('img')) {
- tableBody.rows[i].cells[0].colSpan = '16';
- } else {
- const link = tableBody.rows[i].querySelector('a');
- const playerData = link
- ? getPlayerData(data, link.href.split('&')[1].split('=')[1])
- : null;
- if (playerData) {
- let playerValue = toLocaleCurrency(playerData.getAttribute('value'), currency);
- playing11 += 1;
- const playerNameCell = tableBody.rows[i].querySelector('.player-label')?.parentElement;
- if (playerNameCell) {
- const row = playerNameCell.parentElement;
- row.innerHTML =
- '<td style="width:62px;text-align:right;padding-right:15px">' +
- formatMoney(playerValue) +
- '</td>' +
- row.innerHTML;
- }
- if (playing11 < 12) {
- playing11Value += playerValue;
- }
- }
- }
- }
- tableFoot.rows[1].cells[0].colSpan = '2';
- totalsRow.innerHTML = '<td>' + formatMoney(playing11Value) + '</td><td colspan="8"></td>';
- });
- };
- const hockeyMatchValues = () => {
- let teamsDiv = document.querySelectorAll('.team-table');
- if (!teamsDiv) {
- return;
- }
- for (let i = 0; i < teamsDiv.length; i++) {
- let links = teamsDiv[i].querySelectorAll('a');
- renderHockeyTeamValue(links[0].href.split('&')[1].split('=')[1], i);
- }
- const teamHeadings = document.querySelectorAll('.team-table');
- for (let i = 0; i < teamHeadings.length; i++) {
- const links = teamHeadings[i].querySelectorAll('a');
- renderHockeyTeamValue(links[0].href.split('&tid=')[1], teamsDiv[i]);
- }
- };
- const renderHockeyTeamValue = (teamId, teamTable) => {
- if (!teamTable) {
- return;
- }
- const ajax = $.ajax({
- url: '/xml/team_playerlist.php',
- type: 'GET',
- data: { sport_id: sports.indexOf(ajaxSport), team_id: teamId }
- });
- ajax.done((data) => {
- const currency = data.getElementsByTagName('TeamPlayers')[0].getAttribute('teamCurrency');
- let playing21Value = 0,
- playing21 = 0;
- let firstRow = teamTable.rows[0];
- let secondRow = teamTable.rows[1],
- tableBody = teamTable.querySelector('tbody');
- let tableFoot = teamTable.querySelector('tfoot'),
- totalsRow = tableFoot.rows[1];
- firstRow.cells[0].colSpan = 10;
- teamTable.rows[2].cells[0].colSpan = 19;
- secondRow.innerHTML = '<td>Valor</td>' + secondRow.innerHTML;
- let goalkeeperTable = document.querySelectorAll(
- '#match-statistics .hitlist_wrapper_background table'
- )[tableIndex + 1];
- let goalkeeperLink = goalkeeperTable.querySelector('a');
- let goalkeeperData = getPlayerData(data, goalkeeperLink.href.split('&')[1].split('=')[1]);
- let goalkeeperValue = 0;
- if (goalkeeperData) {
- goalkeeperValue = toLocaleCurrency(goalkeeperData.getAttribute('value'), currency);
- }
- for (let i = 0; i < tableBody.rows.length; i++) {
- if (tableBody.rows[i].querySelector('img')) {
- tableBody.rows[i].cells[0].colSpan = '19';
- } else {
- if (tableBody.rows[i].cells[0] !== '') {
- let link = tableBody.rows[i].querySelector('a');
- if (link) {
- let playerData = getPlayerData(data, link.href.split('&')[1].split('=')[1]);
- if (playerData) {
- let playerValue = toLocaleCurrency(playerData.getAttribute('value'), currency);
- playing21 += 1;
- tableBody.rows[i].innerHTML =
- '<td style="width:62px;text-align:right;padding-right:15px">' +
- formatMoney(playerValue) +
- '</td>' +
- tableBody.rows[i].innerHTML;
- if (playing21 < 21) {
- playing21Value += playerValue;
- }
- }
- } else {
- tableBody.rows[i].innerHTML =
- '<td style="width:62px;text-align:right;padding-right:15px"></td>' +
- tableBody.rows[i].innerHTML;
- }
- } else if (tableBody.rows[i].cells < 2) {
- tableBody.rows[i].innerHTML =
- '<td style="width:62px;text-align:right;padding-right:15px"></td>' +
- tableBody.rows[i].innerHTML;
- }
- }
- }
- totalsRow.innerHTML =
- '<td style="width:62px;text-align:right;padding-right:15px">' +
- (formatMoney(playing21Value + goalkeeperValue) +
- '<br><small>Incluye valor de portero</small>') +
- '</td>' +
- totalsRow.innerHTML;
- tableFoot.rows[3].cells[0].colSpan = '19';
- let goalkeeperTableHead = goalkeeperTable.querySelector('thead');
- goalkeeperTableHead.rows[0].innerHTML =
- '<td>Valor</td>' + goalkeeperTableHead.rows[0].innerHTML;
- let goalkeeperTableBody = goalkeeperTable.querySelector('tbody');
- goalkeeperTableBody.rows[0].innerHTML =
- '<td style="width:62px;text-align:right;padding-right:15px">' +
- formatMoney(goalkeeperValue) +
- '</td>' +
- goalkeeperTableBody.rows[0].innerHTML;
- goalkeeperTable.querySelector('tfoot').rows[0].cells[0].colSpan = '19';
- });
- };
- const previewResultsButton = () => {
- let container = document.querySelector('#results-fixtures-wrapper');
- const html =
- '<button type="button" class="results-fixtures-type flex-grow-0 js-preview-results">' +
- 'Ver resultados' +
- '</button>';
- container.insertAdjacentHTML('afterbegin', html);
- };
- const getMatchesResults = () => {
- let matches = document.querySelectorAll('#fixtures-results-list > .odd');
- for (let i = 0; i < matches.length; i++) {
- let scoreBlock = matches[i].querySelector('.score-cell-wrapper > a');
- let tacticWrapper = $.trim(matches[i].querySelector('.set-default-wrapper').innerHTML);
- if (tacticWrapper === '') {
- let matchId = scoreBlock.href.split('&')[2].split('=')[1];
- renderMatchScore(matchId, scoreBlock);
- }
- }
- };
- const renderMatchScore = (matchId, matchBlock) => {
- const ajax = $.ajax({
- url: '/xml/match_info.php',
- type: 'GET',
- data: { sport_id: sports.indexOf(ajaxSport), match_id: matchId }
- });
- ajax.done((data) => {
- if (data.getElementsByTagName('ManagerZone_Error')[0]) {
- return;
- }
- let myTeamId = matchBlock.href.split('&')[3].split('=')[1];
- let score = {
- local: data.getElementsByTagName('Team')[0].getAttribute('goals') * 1,
- visitor: data.getElementsByTagName('Team')[1].getAttribute('goals') * 1
- };
- matchBlock.innerHTML = score.local + ' - ' + score.visitor;
- if (score.local == score.visitor) {
- matchBlock.className = 'yellow';
- } else if (myTeamId == data.getElementsByTagName('Team')[0].getAttribute('id')) {
- matchBlock.className = score.local > score.visitor ? 'green' : 'red';
- } else if (myTeamId == data.getElementsByTagName('Team')[1].getAttribute('id')) {
- matchBlock.className = score.local > score.visitor ? 'red' : 'green';
- }
- });
- };
- // End matches data
- // Cups and FL
- const renderCupCountryAndDivChecker = () => {
- const categories = [
- 'private_cup&sub',
- 'cup&sub',
- 'u18',
- 'u21',
- 'u23',
- 'world',
- 'u18_world',
- 'friendlyseries&sub'
- ];
- const url = window.location.href;
- let appliesIn = categories.filter((elem) => {
- return url.indexOf(elem) > -1;
- });
- if (appliesIn.length < 1) {
- return;
- }
- let containerSelector, clickedElementSelector, targetContainerSelector;
- if (url.indexOf('cup&sub') > -1) {
- containerSelector = '#cup-div';
- clickedElementSelector = '#ui-id-4';
- targetContainerSelector = '#group-stages';
- } else if (url.indexOf('friendlyseries&sub') > -1) {
- containerSelector = '#friendly-series-div';
- clickedElementSelector = '#ui-id-2';
- targetContainerSelector = '#ui-tabs-2';
- }
- if (typeof containerSelector === undefined) {
- return;
- }
- $(document).on('click', '.js-view-div-country', () => {
- renderDivAndCountry(targetContainerSelector);
- });
- if (typeof clickedElementSelector !== undefined) {
- $(containerSelector).on('click', clickedElementSelector, () => {
- setTimeout(() => {
- renderDivAndCountryButton();
- }, 1500);
- });
- }
- };
- const renderDivAndCountryButton = () => {
- let tableHeader = document.querySelectorAll('.nice_table thead tr.seriesHeader')[0];
- let firstCell = tableHeader.cells[0];
- firstCell.innerHTML =
- '<img class="js-view-div-country" src="https://i.imgur.com/IwaQRmF.png" title="Ver división y país" style="cursor:pointer;">';
- };
- const renderDivAndCountry = (containerSelector) => {
- if (containerSelector === '' || !containerSelector) {
- return;
- }
- let container = document.querySelector(containerSelector);
- if (!container) {
- return;
- }
- let rows = container.querySelectorAll('.nice_table tbody > tr');
- for (let i = 0; i < rows.length; i++) {
- let row = rows[i];
- let link = row.querySelectorAll('a')[0];
- let teamId = link.href.split('&')[1].replace('tid=', '');
- const ajax = $.ajax({
- url: '/xml/manager_data.php',
- type: 'GET',
- data: { sport_id: sports.indexOf(ajaxSport), team_id: teamId }
- });
- (function (container) {
- ajax.done((data) => {
- let index = sports.indexOf(ajaxSport) - 1;
- let divName = data.getElementsByTagName('Team')[index].getAttribute('seriesName'),
- country = data.getElementsByTagName('UserData')[0].getAttribute('countryShortname');
- let divId = data.getElementsByTagName('Team')[index].getAttribute('seriesId'),
- idTeam = data.getElementsByTagName('Team')[index].getAttribute('teamId');
- let countryHtml =
- '<img src="http://static.managerzone.com/nocache-581/img/flags/12/' +
- country.toLowerCase() +
- '.png"> ';
- let divHtml =
- ' - > <a href="?p=league&type=senior&sid=' +
- divId +
- '&tid=' +
- idTeam +
- '">' +
- divName +
- '</a>';
- container.insertAdjacentHTML('beforeend', divHtml);
- container.insertAdjacentHTML('afterbegin', countryHtml);
- });
- })(link.parentNode);
- }
- };
- // End cups and FL
- // Training
- const visualTrainingBalls = () => {
- setTimeout(() => {
- const container = document.querySelector('#training_report');
- if (!container) {
- return;
- }
- const table = container.childNodes[2],
- tbody = table.querySelector('tbody');
- for (let i = 0; i < tbody.rows.length; i++) {
- let cell = tbody.rows[i].cells[4];
- let balls = cell.querySelectorAll('img').length;
- cell.querySelector('div').innerHTML += '<b>(' + balls + ')</b>';
- }
- }, 2500);
- };
- // End training
- // General utils
- const onlyNumbers = (e) => {
- if (
- $.inArray(e.keyCode, [46, 8, 9, 27, 13]) !== -1 ||
- // Allow: Ctrl+A
- (e.keyCode == 65 && e.ctrlKey === true) ||
- // Allow: Ctrl+C
- (e.keyCode == 67 && e.ctrlKey === true) ||
- // Allow: Ctrl+X
- (e.keyCode == 88 && e.ctrlKey === true) ||
- // Allow: home, end, left, right
- (e.keyCode >= 35 && e.keyCode <= 39)
- ) {
- return;
- }
- if ((e.shiftKey || e.keyCode < 48 || e.keyCode > 57) && (e.keyCode < 96 || e.keyCode > 105)) {
- e.preventDefault();
- }
- };
- const formToJSONString = (form) => {
- let obj = {};
- let elements = form.querySelectorAll('input, select, textarea');
- for (let i = 0; i < elements.length; ++i) {
- if (elements[i].name) {
- obj[elements[i].name] = elements[i].value.trim();
- }
- }
- return JSON.stringify(obj);
- };
- const treatAsUTC = (date) => {
- let result = new Date(date);
- return result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
- };
- const reformatDate = (strDate) => {
- let splittedDate = strDate.split('-');
- return splittedDate[2] + '-' + splittedDate[1] + '-' + splittedDate[0];
- };
- const daysBetween = (startDate, endDate) => {
- let millisecondsPerDay = 24 * 60 * 60 * 1000;
- return (treatAsUTC(endDate) - treatAsUTC(startDate)) / millisecondsPerDay;
- };
- const toLocaleCurrency = (value, currency) => {
- const currencies = {
- USD: 7.4234,
- EUR: 9.1775,
- SEK: 1,
- MM: 1,
- UYU: 0.256963,
- R$: 2.62589,
- GBP: 13.35247,
- DKK: 1.23522,
- NOK: 1.07245,
- CHF: 5.86737,
- CAD: 5.70899,
- AUD: 5.66999,
- ILS: 1.6953,
- MXN: 0.68576,
- ARS: 2.64445,
- BOB: 0.939,
- PYG: 0.001309,
- RUB: 0.26313,
- PLN: 1.95278,
- ISK: 0.10433,
- BGL: 4.70738,
- BGN: 4.70738,
- ZAR: 1.23733,
- US$: 7.4234,
- THB: 0.17079,
- SIT: 0.03896,
- SKK: 0.24946,
- JPY: 0.06,
- INR: 0.17,
- MZ: 1
- };
- const toSEK = 1 / currencies[currency],
- cCurrency = localStorage.getItem('moneda');
- if (cCurrency) {
- return Math.round((1 / currencies[cMoneda]) * (value / toSEK));
- }
- return Math.round((1 / currencies['USD']) * (value / toSEK));
- };
- const formatMoney = (value) => {
- let result = '',
- number = value.toString();
- while (number.length > 3) {
- result = '.' + number.substr(number.length - 3) + result;
- number = number.substring(0, number.length - 3);
- }
- return number + result;
- };
- // end general utils
- // Taxes
- const calculateTaxes = (config) => {
- const days = daysBetween(reformatDate(config.boughtDate), reformatDate(config.soldDate));
- if (days < 0) {
- alert('Por favor revise las fechas ingresadas');
- return;
- }
- let tax = { value: 0, percentage: 0 },
- profit = config.soldPrice - config.boughtPrice;
- if (profit > 0) {
- tax.percentage = days > 69 ? 15 : days > 26 ? 50 : 95;
- if (config.originalPlayer) {
- tax.percentage = 15;
- } else if (config.exYouth) {
- tax.percentage = config.playerAge < 20 ? 25 : config.playerAge < 21 ? 20 : 15;
- }
- }
- tax.value = Math.round(profit * (tax.percentage / 100));
- return tax;
- };
- const calculateTaxesAction = (ev) => {
- ev.preventDefault();
- let form = ev.target;
- let jsonForm = formToJSONString(form);
- jsonForm = JSON.parse(jsonForm);
- let taxConfig = {
- originalPlayer: jsonForm.origin * 1 == 2,
- exYouth: jsonForm.origin * 1 == 1,
- playerAge: jsonForm.playerAge * 1,
- boughtDate: jsonForm.boughtDate,
- soldDate: jsonForm.soldDate,
- boughtPrice: jsonForm.origin * 1 === 0 ? jsonForm.boughtValue * 1 : jsonForm.playerValue,
- soldPrice: jsonForm.soldValue * 1
- };
- let taxes = calculateTaxes(taxConfig);
- let html =
- 'Se descuentan ' +
- formatMoney(taxes.value) +
- ' en impuestos (' +
- taxes.percentage +
- '%)<br>Recibes ' +
- formatMoney(taxConfig.soldPrice - taxes.value);
- document.querySelector('.js-tax-result').innerHTML = html;
- };
- const getTaxesForm = () => {
- return (
- '<article style="padding-left:5px;">' +
- '<h3>Calcular impuestos</h3>' +
- '<div>' +
- '<form class="js-calculate-tax">' +
- '<table style="width:100%;">' +
- '<tr>' +
- '<td><span>Origen jugador</span></td>' +
- '<td>' +
- '<select name="origin">' +
- '<option value="0">Comprado</option>' +
- '<option value="1">Ex juvenil</option>' +
- '<option value="2">Original del club</option>' +
- '</select>' +
- '</td>' +
- '</tr>' +
- '<tr>' +
- '<td><span>Valor jugador</span> <span style="color:#A3A30D;">*</span></td>' +
- '<td><input type="text" name="playerValue" value="0" class="js-only-numbers"></td>' +
- '</tr>' +
- '<tr>' +
- '<td><span>Edad jugador</span> <span style="color:#A3A30D;">*</span></td>' +
- '<td>' +
- '<select name="playerAge">' +
- '<option value="19">19</option>' +
- '<option value="20">20</option>' +
- '<option value="21">Más de 20</option>' +
- '</select>' +
- '</td>' +
- '</tr>' +
- '<tr>' +
- '<td><span>Valor compra</span> <span style="color:#FF043D;">*</span></td>' +
- '<td><input type="text" name="boughtValue" class="js-only-numbers"></td>' +
- '</tr>' +
- '<tr>' +
- '<td><span>Valor venta</span></td>' +
- '<td><input type="text" name="soldValue" class="js-only-numbers"></td>' +
- '</tr>' +
- '<tr>' +
- '<td><span>Fecha compra</span> <span style="color:#FF043D;">*</span></td>' +
- '<td><input type="text" name="boughtDate" placeholder="dd-mm-aaaa"></td>' +
- '</tr>' +
- '<tr>' +
- '<td><span>Fecha venta</span></td>' +
- '<td><input type="text" name="soldDate" placeholder="dd-mm-aaaa"></td>' +
- '</tr>' +
- '</table>' +
- '<div>' +
- '<span style="color:#FF043D;">*</span> <span>Si el jugador fue comprado</span><br>' +
- '<span style="color:#A3A30D;">*</span> <span>Si el jugador es original del club o ex juvenil</span>' +
- '</div>' +
- '<div style="margin-top:4px;">' +
- '<button type="submit" class="quicklink"><span class="buttonClassMiddle">Calcular</span></button>' +
- '</div>' +
- '<div>' +
- '<p class="js-tax-result"></p>' +
- '</div>' +
- '</form>' +
- '</div>' +
- '</article>'
- );
- };
- const renderTaxCalculation = (ev) => {
- ev.preventDefault();
- let html = getTaxesForm();
- let container = document.querySelector('.dg_playerview_info');
- container.insertAdjacentHTML('beforeend', html);
- };
- const renderTaxCalculationButton = () => {
- let parent = document.querySelector('.dg_playerview_info');
- let container = parent.querySelector('p');
- let html =
- '<a href="#" class="js-render-tax mzbtn buttondiv button_red">' +
- '<span class="buttonClassMiddle" style="white-space:nowrap;">Impuestos</span><span class="buttonClassRight"> </span>' +
- '</a>';
- container.insertAdjacentHTML('beforeend', html);
- };
- // End taxes
- // Forum
- const forumPagination = () => {
- const posts = document.querySelectorAll('#topics-list > dd');
- for (let i = 0; i < posts.length; i++) {
- let link = posts[i]
- .querySelector('.topics-col-title')
- .querySelector('a')
- .getAttribute('href');
- let counterDiv = posts[i].querySelector('.topics-col-counter');
- let text = (counterDiv.innerText || counterDiv.textContent).split(' / ');
- let messageCount = parseInt(text[1]);
- let pageQuantity = Math.floor(parseInt(messageCount) / 50);
- if (pageQuantity > 0 && messageCount > 50) {
- let html = '';
- let limit = pageQuantity > 5 ? 5 : pageQuantity + 1;
- for (let j = 2; j < limit; j++) {
- html +=
- '<a href="' +
- link +
- '&offset=' +
- (j - 1) * 50 +
- '" title="Ir a página ' +
- j +
- '">' +
- j +
- '</a> ';
- }
- }
- }
- };
- const getCCButtons = () => {
- return (
- '<div>' +
- '<div class="mzbtn buttondiv button_account" title="Borrar texto del area de mensaje">' +
- '<span class="buttonClassMiddle js-empty-post-textarea" style="white-space: nowrap">Vaciar</span><span class="buttonClassRight"> </span>' +
- '</div>' +
- '<div class="js-icons-container">' +
- '<img src="https://i.imgur.com/3YitWv3.gif" alt=">"/> ' +
- '<img src="https://i.imgur.com/Q3B4Dqz.gif" title="(y)" alt="(y)"/> ' +
- '<img src="https://i.imgur.com/vWFv3Gt.gif" title="(n)" alt="(n)"/> ' +
- '<img src="https://i.imgur.com/jaT1cb4.gif" height="20px" title="wtf" alt="wtf"/> ' +
- '<img src="https://i.imgur.com/VfbyDHO.gif" height="20px" title="fail" alt="fail"/> ' +
- '<img src="https://i.imgur.com/cheJFuk.gif" height="20px" title="repost" alt="repost"/> ' +
- '<img src="https://i.imgur.com/jDjyKTf.gif" title="cri" alt="cri"/> ' +
- '<img src="https://i.imgur.com/6PopX5q.gif" title="ha-ha" alt="ha-ha"/>' +
- '<img src="https://i.imgur.com/nRp5BpE.gif" title=":)" alt=":)"/> ' +
- '<img src="https://i.imgur.com/CcuKTNz.gif" title=":D" alt=":D"/> ' +
- '<img src="https://i.imgur.com/Dfl5ZGS.gif" title="D" alt="D"/> ' +
- '<img src="https://i.imgur.com/8t9ZJse.gif" title="xD" alt="xD"/> ' +
- '<img src="https://i.imgur.com/1kJhHCs.gif" title=":/" alt=":/"/> ' +
- '<img src="https://i.imgur.com/1ncAraF.gif" title=":(" alt=":("/> ' +
- '<img src="https://i.imgur.com/xp6xUJJ.gif" title=":*(" alt=":*("/> ' +
- '<img src="https://i.imgur.com/qOigaWi.png" title=":S" alt=":S"/> ' +
- '<img src="https://i.imgur.com/nITjZn5.gif" title="erm" alt="erm"/> ' +
- '<img src="https://i.imgur.com/rSqmTPO.gif" title="8-)" alt="8-)"/> ' +
- '<img src="https://i.imgur.com/qP1rAQ5.png" title="¬¬" alt="¬¬"/> ' +
- '<img src="https://i.imgur.com/HdNdWN0.png" title="porfi" alt="porfi"/> ' +
- '<img src="https://i.imgur.com/QuXS7fE.gif" title="O.O" alt="O.O"/> ' +
- '<img src="https://i.imgur.com/RUQN2Hy.gif" title="_hm" alt="_hm"/> ' +
- '<img src="https://i.imgur.com/QLCdFIE.gif" title=">:(" alt=">:("/> ' +
- '<img src="https://i.imgur.com/55sAO1r.gif" title=">:)" alt=">:)"/> ' +
- '<img src="https://i.imgur.com/KbQOSgw.gif" title="flirt" alt="flirt"/> ' +
- '<img src="https://i.imgur.com/t5dALqK.gif" title=":P" alt=":P"/> ' +
- '<img src="https://i.imgur.com/zpY2A6I.gif" title="|-(" alt="|-("/> ' +
- '<img src="https://i.imgur.com/yPtUjin.gif" title=";)" alt=";)"/> ' +
- '<img src="https://i.imgur.com/OOsLDaW.gif" title="(h)" alt="(h)"/> ' +
- '<img src="https://i.imgur.com/LdCQyai.png" title="u.u" alt="u.u"/> ' +
- '<img src="https://i.imgur.com/KnhAURP.gif" title="shh" alt="shh"/> ' +
- '<img src="https://i.imgur.com/BzPDfzF.gif" title="nana" alt="nana"/>' +
- '<img src="https://i.imgur.com/XEHiXuO.gif" height="23px" title="rock" alt="rock"/>' +
- '<img src="https://i.imgur.com/CsCrOnE.gif" title="grr" alt="grr"/> ' +
- '<img src="https://i.imgur.com/K2d1Mbv.gif" height="23px" title="jaja" alt="jaja"/>' +
- '<img src="https://i.imgur.com/SMcjsnf.gif" title="eah" alt="eah"/>' +
- '<img src="https://i.imgur.com/aaPvRo4.gif" title="clap" alt="clap"/>' +
- '<img src="https://i.imgur.com/av8bxvU.gif" title="bla" alt="bla"/>' +
- '<img src="https://i.imgur.com/oQYWBTO.gif" title="l" alt="l"/> ' +
- '<img src="https://i.imgur.com/z64hDgz.gif" title="grr" alt="grr"/> ' +
- '<img src="https://i.imgur.com/NA84WqF.gif" title="angel" alt="angel"/> ' +
- '<img src="https://i.imgur.com/N2cdFNy.gif" title="diablo" alt="diablo"/> ' +
- '<img src="https://i.imgur.com/YWe8hno.gif" title="baba" alt="baba"/>' +
- '<img src="https://i.imgur.com/1t7YpCo.gif" height="23px" title="x)" alt="x)"/> ' +
- '<img src="https://i.imgur.com/UR5t0o6.gif" title="plz" alt="plz"/> ' +
- '<img src="https://i.imgur.com/KKx3thu.gif" title="umm" alt="umm"/>' +
- '<img src="https://i.imgur.com/sC8Mgmi.gif" title="facepalm" alt="facepalm"/> ' +
- '<img src="https://i.imgur.com/gJw92DZ.gif title="zzz" alt="zzz"/>' +
- '<img src="https://i.imgur.com/RzjaSKr.gif" title="om" alt="om"/>' +
- '<img src="https://i.imgur.com/7iCxtYD.gif" title="uh" alt="uh"/>' +
- '</div>' +
- '</div>'
- );
- };
- const postItem = (html) => {
- let textarea = document.querySelector('.markItUpEditor');
- let scrollTop = textarea.scrollTop;
- let selectionStart = textarea.selectionStart;
- let selectionEnd = textarea.selectionEnd;
- textarea.value =
- textarea.value.substr(0, selectionStart) +
- html +
- textarea.value.substr(selectionEnd, textarea.value.length);
- textarea.scrollTop = scrollTop;
- };
- const postSmiley = (ev) => {
- let img = ev.target;
- let url = img.getAttribute('src');
- let html = '[image url=' + url + ']';
- postItem(html);
- };
- const emptyPostTextarea = (ev) => {
- let textarea = document.querySelector('#forum_form_message');
- textarea.value = '';
- };
- const renderCCBar = () => {
- setTimeout(() => {
- let container = document.querySelector('.bbcode');
- if (container) {
- let html = getCCButtons();
- container.insertAdjacentHTML('afterbegin', html);
- }
- }, 1500);
- };
- const renderPostQuicklinks = () => {
- const posts = document.querySelectorAll('.forum_body');
- const titles = ['Ir al GB', 'Posts recientes del usuario', 'Invitar amistoso'],
- texts = ['Guestbook', 'Posts', 'Amistosos'];
- const url = window.location.href;
- const forum = url[3].replace('forum_id=', '');
- for (let i = 0; i < posts.length; i++) {
- let author = posts[i].querySelector('.post-author');
- let authorContainer = author.querySelector('a');
- let authorId = authorContainer.href.split('&')[1].replace('uid=', '');
- let authorName = authorContainer.innerHTML;
- let badgeContainer = posts[i].querySelector('.forum-post-badges');
- let authorTeamId = badgeContainer
- .querySelector('img')
- .src.split('=')[1]
- .replace('&sport', '');
- let html =
- '<a class="quicklink" href="/?p=guestbook&uid=' +
- authorId +
- '" title="' +
- titles[0] +
- '">' +
- texts[0] +
- '</a>' +
- '<a class="quicklink" href="?p=forum&sub=search&search_keywords=&search_keyword_type=any&search_author=' +
- authorName +
- '&search_forum=' +
- forum +
- '&search_range=7&search_sort_by=post_date&search_sort_order=desc" title="' +
- titles[1] +
- '">' +
- texts[1] +
- '</a>' +
- '<a class="quicklink" href="?p=team&sub=challenge&tid=' +
- authorTeamId +
- '" title="' +
- titles[2] +
- '">' +
- texts[2] +
- '</a>';
- author.insertAdjacentHTML('beforeend', html);
- }
- };
- // End forum
- // General config
- const setPageFunctions = () => {
- const url = window.location.href;
- if (
- url.indexOf('topics&forum_id') > -1 ||
- url.indexOf('topic&topic_id') > -1 ||
- url.indexOf('guestbook') > -1
- ) {
- renderCCBar();
- renderSignatureDiv();
- renderPostQuicklinks();
- forumPagination();
- } else if (url.indexOf('p=match&sub=result') > -1) {
- linkToSeniorLeague();
- playersMatchValue();
- } else if (url.indexOf('training') > -1) {
- visualTrainingBalls();
- } else if (url.indexOf('sub=scheduled') > -1) {
- previewResultsButton();
- } else if (url.indexOf('players&pid') > -1) {
- renderTaxCalculationButton();
- } else if (url.indexOf('standings&fsid') > -1) {
- setTimeout(() => {
- renderDivAndCountryButton();
- }, 1500);
- }
- renderCupCountryAndDivChecker();
- };
- const addTeamBadgeToPlayers = () => {
- const currentPage = window.location.href;
- if (!currentPage.includes('p=players')) {
- return;
- } else if (currentPage.includes('&') && currentPage.indexOf('&pid=') < 0) {
- return;
- }
- const playerContainers = Array.prototype.slice.call(
- document.querySelectorAll('.player-image.soccer')
- );
- let teamID = null;
- let badgeHTML = '';
- for (let i = 0; i < playerContainers.length; i++) {
- const playerContainer = playerContainers[i];
- const playerLink = playerContainer
- .closest('.playerContainer')
- ?.querySelector('a.subheader')
- ?.getAttribute('href');
- if (!teamID) {
- teamID = playerLink.split('&')[2].replace(/\D+/, '');
- badgeHTML = `<div class="player-team-badge" style="background-image: url(dynimg/badge.php?team_id=${teamID}&sport=soccer&location=icon)"></div>`;
- }
- playerContainer.insertAdjacentHTML('afterbegin', badgeHTML);
- }
- };
- const setEvents = () => {
- $(document)
- .on('click', '.js-delete-signature', dropSignature)
- .on('click', '.js-empty-post-textarea', emptyPostTextarea)
- .on('click', '.js-icons-container img', postSmiley)
- .on('click', '.js-preview-results', getMatchesResults)
- .on('click', '.js-save-signature', saveSignature)
- .on('click', '.js-signature', putSignature)
- .on('click', '.js-render-tax', renderTaxCalculation)
- .on('click', '.training_report_header', visualTrainingBalls)
- .on('submit', '.js-calculate-tax', calculateTaxesAction)
- .on('keydown change', '.js-only-numbers', onlyNumbers);
- };
- return {
- init: init
- };
- })();
- window.addEventListener('load', () => {
- rzscript.init();
- });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址