NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name GI Match Ticker (Game section)
// @namespace https://grid-iron.org/
// @description Adds division-specific match ticker to league/AFLC games
// @include https://grid-iron.org/match/*
// @version 1
// @grant xttp
// @author daniel_bloodbeak
// @license MIT
// ==/UserScript==
// delete the line above "@license MIT" - it was only necessary to get the script uploaded to the website
window.setTimeout(function () {
var matchNums = 0;
var storeItem = ["match1", "match2", "match3", "match4", "match5", "match6", "match7", "match8"];
var divisionDetails = sessionStorage.getItem("leagueDetails");
var divisionArr = JSON.parse(divisionDetails);
var matchList = [];
var aflc = parseInt(sessionStorage.aflc);
var leagueHeader = sessionStorage.leagueHeader;
var bodyWidth = [380, 60, 420];
var timeArr = [
[18, 26, 1],
[11, 11, 0]
];
var playTimeArr = [
[10, 10],
[9, 25]
];
var bodyCellId = ["gameDiv", "clockDiv", "lastPlayDiv"];
var boxNameId = ["homeName", "awayName"];
var boxScoreId = ["homeScore", "awayScore"];
var playCellId = ["basics", "details"];
var timeBoxId = ["quarter", "toGo"];
var day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
if (aflc === 1) {
matchNums = 8;
}
else {
matchNums = 5;
}
for (var a = 0; a < matchNums; a++) {
var getMatch = sessionStorage.getItem(storeItem[a]);
matchList.push(getMatch);
}
var count = 0;
function spaceOut() {
var interval = setInterval(doEverything, 5500);
}
function resetColor() {
for (var dd = 0; dd < boxNameId.length; dd++) {
document.getElementById(boxNameId[dd]).style.background = "linear-gradient(#eeeeee, #aaaaaa)";
document.getElementById(boxScoreId[dd]).style.background = "linear-gradient(#eeeeee, #aaaaaa)";
}
}
var matchBox = document.createElement("div");
matchBox.setAttribute("id", "matchTicker");
matchBox.setAttribute("style", "margin-left: auto; margin-right: auto; margin-top: 1px; margin-bottom: 25px; visibility: hidden; background: transparent; width: 780px; height: 58px; position: relative;");
var divHeader = document.createElement("div");
divHeader.innerHTML = " " + leagueHeader.toUpperCase();
divHeader.setAttribute("style", "padding-bottom: 2px; margin-bottom: 1px; font-style: italic; position: relative; color: white; font-weight: bold; border-radius: 5px; left: 2px; width: 776px; height: 16px; background: linear-gradient(to right, #777777, #dddddd); font-size: 12px; text-shadow: 1px 1px #884400; ");
var linkButton = document.createElement("div");
linkButton.innerHTML = " GAME LINK";
linkButton.setAttribute("id", "linkButton");
linkButton.setAttribute("class", "gui_button2");
linkButton.setAttribute("style", "font-weight: bold; color: #222222; display: inline-flex; align-items: center; text-align: center; width: 78px; float: right; height: 12px; position: relative; top: 1px; left: -2px; color: #222222; text-shadow: 1px 0px #eeeeee;");
divHeader.appendChild(linkButton);
var gameTable = document.createElement("table");
var gameBody = document.createElement("tbody");
gameBody.setAttribute("style", "width: 770px; top: -1px; left: 0px; border: 2px transparent; border-radius: 5px; background: transparent; width: 660px; position: relative;");
var bodyRow = document.createElement("tr");
for (var b = 0; b < bodyWidth.length; b++) {
var bodyCell = document.createElement("td");
bodyCell.setAttribute("id", bodyCellId[b]);
bodyCell.setAttribute("style", "border: 2px solid; margin-right: 38px; border-radius: 5px; background: linear-gradient(#999999, #555555); width: " + bodyWidth[b] + "px; height: 44px; position: relative; top: 0px; left: 0px;");
bodyRow.appendChild(bodyCell);
}
gameBody.appendChild(bodyRow);
gameTable.appendChild(gameBody);
matchBox.appendChild(divHeader);
matchBox.appendChild(gameTable);
var iconContainer = document.getElementById("content_container");
iconContainer.insertBefore(matchBox, iconContainer.childNodes[0]);
var boxScore = document.createElement("table");
var boxScoreBody = document.createElement("tbody");
for (b = 0; b < 2; b++) {
var gameRow = document.createElement("tr");
var gameCell = document.createElement("td");
gameCell.setAttribute("id", boxNameId[b]);
gameCell.setAttribute("style", "text-shadow: 1px 1px #cccccc; font-weight: bold; font-size: 14px; width: 290px ; text-align: center; height: 20px; border: 1px solid; border-radius: 3px; background: linear-gradient(#eeeeee, #aaaaaa);");
var scoreCell = document.createElement("td");
scoreCell.setAttribute("id", boxScoreId[b]);
scoreCell.setAttribute("style", "text-shadow: 1px 1px #cccccc; font-weight: bold; font-size: 18px; width: 40px ; text-align: center; height: 20px; border: 1px solid; border-radius: 3px; background: linear-gradient(#eeeeee, #aaaaaa);");
gameRow.appendChild(gameCell);
gameRow.appendChild(scoreCell);
boxScoreBody.appendChild(gameRow);
}
boxScore.appendChild(boxScoreBody);
document.getElementById("gameDiv").appendChild(boxScore);
var timeBox = document.createElement("table");
var timeBody = document.createElement("tbody");
timeBody.setAttribute("id", "timeBody");
var timeRow, timeCell;
for (var c = 0; c < 2; c++) {
timeRow = document.createElement("tr");
timeCell = document.createElement("td");
timeCell.setAttribute("id", timeBoxId[c]);
timeCell.setAttribute("style", "text-shadow: 1px 1px #aaaaaa; position: relative; top: " + timeArr[c][2] + "px; font-weight: bold; font-size: " + timeArr[c][0] + "px; width: 55px ; text-align: center; height: " + timeArr[c][1] + "px; border: 1px solid; border-radius: 3px; background: linear-gradient(#eeeeee, #aaaaaa);");
timeRow.appendChild(timeCell);
timeBody.appendChild(timeRow);
}
timeBox.appendChild(timeBody);
document.getElementById("clockDiv").appendChild(timeBox);
var playBox = document.createElement("table");
var playBody = document.createElement("tbody");
var playRow, playCell;
for (c = 0; c < 2; c++) {
playRow = document.createElement("tr");
playCell = document.createElement("td");
playCell.setAttribute("id", playCellId[c]);
playCell.setAttribute("style", "text-shadow: 1px 1px #aaaaaa; font-weight: bold; font-size: " + playTimeArr[c][0] + "px; width: 365px ; text-align: center; height: " + playTimeArr[c][1] + "px; border: 1px solid; border-radius: 3px; background: linear-gradient(#eeeeee, #aaaaaa);");
playRow.appendChild(playCell);
playBody.appendChild(playRow);
}
playBox.appendChild(playBody);
document.getElementById("lastPlayDiv").appendChild(playBox);
spaceOut();
function doEverything() {
var homeName, awayName, homeFlag, awayFlag, homeScore, awayScore, qtr, possession, timeLeft, homeStatus, awayStatus, mins, playLine, lastPlay, playType;
var distance, yardLineFind, yardLineClean, yardLine, playLocate, playSort, playFilter, attendanceLocate, attendanceGather, attendance, weather;
var firstArr = [];
var secondArr = [];
var clockArr = [];
var dataArr = [];
var statusArr = [];
var playArr = [];
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var dataBlock = this.responseText.split("top_panel");
var testBlock = dataBlock[1].split("div");
var testItem = testBlock[2].slice(8, 20);
if (testItem.match(/match_review/i)) {
var teamHunt = testBlock[4].split(">");
homeName = teamHunt[7].slice(0, -4);
awayName = teamHunt[11].slice(0, -4);
for (var z = 0; z < divisionArr.length; z++) {
if (homeName === divisionArr[z][0]) {
homeFlag = divisionArr[z][1];
homeScore = divisionArr[z][3] + "-" + divisionArr[z][4];
}
if (awayName === divisionArr[z][0]) {
awayFlag = divisionArr[z][1];
awayScore = divisionArr[z][3] + "-" + divisionArr[z][4];
}
}
homeStatus = "";
awayStatus = "";
playLine = "";
lastPlay = "";
possession = "";
var dateHunt = new Date();
var yearHunt = dateHunt.getUTCFullYear();
var monthHunt = dateHunt.getUTCMonth();
var dayHunt = dateHunt.getUTCDay();
var dateNum = dateHunt.getUTCDate();
var gameMonth = parseInt(teamHunt[18].slice(5, -6));
var gameDate = parseInt(teamHunt[18].slice(8, -3));
var daysToGo;
if (gameMonth > (monthHunt + 1) || gameMonth < monthHunt) {
if (gameMonth === 3 && yearHunt / (yearHunt / 4) !== 4) {
gameDate += 28;
}
else if (gameMonth === 3 && yearHunt / (yearHunt / 4) === 4) {
gameDate += 29;
}
else if (gameMonth === 5 || gameMonth === 7 || gameMonth === 10 || gameMonth === 12) {
gameDate += 30;
}
else {
gameDate += 31;
}
}
daysToGo = gameDate - dateNum;
var actualDay = dayHunt + daysToGo;
if (actualDay > 6) {
actualDay -= 7;
}
qtr = day[actualDay];
timeLeft = teamHunt[20].slice(0, -3);
matchBox.style.visibility = "visible";
for (var de = 0; de < boxNameId.length; de++) {
document.getElementById(boxNameId[de]).style.background = "linear-gradient(#eeeeee, #aaaaaa)";
document.getElementById(boxScoreId[de]).style.background = "linear-gradient(#eeeeee, #aaaaaa)";
}
}
else {
var dataSplit = dataBlock[1].split("div");
var homeLocate = dataSplit[9].split(">");
homeName = homeLocate[3].slice(0, -3);
var homeHunt = homeLocate[1].split("png");
homeFlag = homeHunt[1].slice(1, -1);
var awayLocate = dataSplit[11].split(">");
awayName = awayLocate[3].slice(0, -3);
var awayHunt = awayLocate[1].split("png");
awayFlag = awayHunt[1].slice(1, -1);
var homeStatusLocate = dataSplit[17].split(">");
var awayStatusLocate = dataSplit[19].split(">");
homeStatus = homeStatusLocate[2].slice(0, -6);
awayStatus = awayStatusLocate[2].slice(0, -6);
var minFinder = dataSplit[28].slice(-4);
mins = minFinder.slice(0, 2);
homeScore = dataSplit[22].slice(17, -2);
awayScore = dataSplit[26].slice(17, -2);
var qLocate = dataBlock[1].split("comments");
var qtrLocate = qLocate[1].split(">");
qtr = qtrLocate[2].slice(6, 9);
var timeLocate = qtrLocate[4].split("<");
timeLeft = timeLocate[0].slice(-5);
possession = timeLocate[0].slice(6, -6);
var downLocate = qtrLocate[7].split("-");
var down = downLocate[0].slice(0, 3);
if (down === "\</d" || down === "&nb") {
down = "a";
}
if (down === "a") {
playType = qtrLocate[9].slice(0, 4);
}
else {
playType = qtrLocate[9].slice(0, 4);
distance = downLocate[1];
yardLineFind = downLocate[2].slice(0, 5);
yardLineClean = yardLineFind.replace(/\D/g, "");
yardLine = parseInt(yardLineClean);
}
playLocate = dataBlock[1].split("event_description");
playSort = playLocate[1].split("\</div>");
playFilter = playSort[0].split(",,");
lastPlay = playFilter[0].slice(2);
var fgSort = playLocate[2].split("\</div>");
var fgFilter = fgSort[0].slice(2);
var tdSort = playLocate[3].split("!");
var tdFilter = tdSort[0];
var lastTD = tdFilter.slice(2);
if (mins === "FT" && homeScore === awayScore) {
qtr = "OT";
var otBlock = dataBlock[1].split("quarter_5");
var possBlock = otBlock[2].split("owner_switch");
var possLocate = possBlock[possBlock.length - 1].split(">");
possession = possLocate[1].slice(6);
var lastPlayBlock = possBlock[possBlock.length - 1].split("event_down");
var lpbDetails = lastPlayBlock[lastPlayBlock.length - 1].split("event_");
var playDepth = lpbDetails[0].split("-");
down = playDepth[0].slice(-3);
if (down === "\</d" || down === "&nb") {
down = "a";
}
if (down === "a") {
playType = lpbDetails[1].slice(6, 10);
}
else {
distance = playDepth[1];
playType = lpbDetails[1].slice(6, 10);
yardLineFind = playDepth[2].slice(0, 5);
yardLineClean = yardLineFind.replace(/\D/g, "");
yardLine = parseInt(yardLineClean);
}
playLocate = possBlock[possBlock.length - 1].split("event_description");
playSort = playLocate[playLocate.length - 1].split("\</div>");
playFilter = playSort[0].split(",,");
lastPlay = playFilter[0].slice(2);
}
var weatherLocate = dataBlock[1].split("weather_icon");
var weatherClean = weatherLocate[1].split(".gif");
weather = parseInt(weatherClean[0].slice(-1));
if (weather === 0) {
weather = 1;
}
attendanceLocate = dataBlock[1].split("venue_info");
attendanceGather = attendanceLocate[1].split("\</div>");
attendance = attendanceGather[0].slice(2);
matchBox.style.visibility = "visible";
for (var d = 0; d < boxNameId.length; d++) {
document.getElementById(boxNameId[d]).style.background = "linear-gradient(#eeeeee, #aaaaaa)";
document.getElementById(boxScoreId[d]).style.background = "linear-gradient(#eeeeee, #aaaaaa)";
}
if (playType === "Kick") {
if (fgFilter.search(/field goal/i) === -1) {
lastPlay = lastTD + "! \<br></b>Extra point attempt is good.";
playType = "TOUCHDOWN";
}
else {
lastPlay = fgFilter;
playType = "FIELD GOAL";
}
if (homeName === possession) {
document.getElementById("homeName").style.background = "linear-gradient(#aaffaa, #eeeeee)";
document.getElementById("homeScore").style.background = "linear-gradient(#aaffaa, #eeeeee)";
document.getElementById("awayName").style.background = "linear-gradient(#eeeeee, #aaaaaa)";
document.getElementById("awayScore").style.background = "linear-gradient(#eeeeee, #aaaaaa)";
}
else if (awayName === possession) {
document.getElementById("awayName").style.background = "linear-gradient(#aaffaa, #eeeeee)";
document.getElementById("awayScore").style.background = "linear-gradient(#aaffaa, #eeeeee)";
document.getElementById("homeName").style.background = "linear-gradient(#eeeeee, #aaaaaa)";
document.getElementById("homeScore").style.background = "linear-gradient(#eeeeee, #aaaaaa)";
}
else {
resetColor();
}
}
if (playType === "Fiel") {
playType = "FIELD GOAL";
}
if (down === "a") {
playLine = possession.toUpperCase() + " " + playType.toUpperCase();
}
else {
playLine = "\<b>" + down.toUpperCase() + " AND " + distance + " - " + possession.toUpperCase() + "\</b> at the " + yardLine + " yard line";
if (yardLine > 79 && homeName === possession) {
document.getElementById("homeName").style.background = "linear-gradient(#ffaaaa, #eeeeee)";
document.getElementById("homeScore").style.background = "linear-gradient(#ffaaaa, #eeeeee)";
}
else if (yardLine > 79 && awayName === possession) {
document.getElementById("awayName").style.background = "linear-gradient(#ffaaaa, #eeeeee)";
document.getElementById("awayScore").style.background = "linear-gradient(#ffaaaa, #eeeeee)";
}
else {
resetColor();
}
}
}
matchBox.style.visibility = "visible";
clockArr.push(qtr, timeLeft);
statusArr.push(homeStatus, awayStatus);
playArr.push(playLine, lastPlay);
firstArr.push(homeName, homeScore, homeFlag, homeStatus);
secondArr.push(awayName, awayScore, awayFlag, awayStatus);
dataArr.push(firstArr, secondArr);
for (var b = 0; b < 2; b++) {
var gameCellUpdate = document.getElementById(boxNameId[b]);
var scoreCellUpdate = document.getElementById(boxScoreId[b]);
var playCellUpdate = document.getElementById(playCellId[b]);
gameCellUpdate.innerHTML = dataArr[b][0];
var flagImg = document.createElement("img");
flagImg.setAttribute("src", "https://grid-iron.org/images/flags/byid/png/" + dataArr[b][2] + ".png");
flagImg.setAttribute("style", "float: left; margin-left: 2px; margin-top: 1px;");
gameCellUpdate.appendChild(flagImg);
var statusImg = document.createElement("img");
if (testItem !== "match_review") {
if (statusArr[b] === "Online!") {
statusImg.setAttribute("src", "https://grid-iron.org/images/forum/online.png");
}
else {
statusImg.setAttribute("src", "https://grid-iron.org/images/forum/offline.png");
}
statusImg.setAttribute("style", "float: left; border: 1px solid; border-radius: 4px; margin-top: 3px; margin-left: 2px; border-color: #cccccc;");
gameCellUpdate.appendChild(statusImg);
}
scoreCellUpdate.innerHTML = dataArr[b][1];
if (testItem === "match_review") {
scoreCellUpdate.style.fontSize = "12px";
}
playCellUpdate.innerHTML = playArr[b];
}
var scoreHome = parseInt(dataArr[0][1]);
var scoreAway = parseInt(dataArr[1][1]);
var timeRow, timeCell;
if (mins === "FT" && qtr !== "OT") {
document.getElementById("timeBody").innerHTML = "";
timeRow = document.createElement("tr");
timeCell = document.createElement("td");
timeCell.innerHTML = "FINAL";
timeCell.setAttribute("id", timeBoxId[0]);
timeCell.setAttribute("style", "text-shadow: 1px 1px #aaaaaa; font-weight: bold; font-size: 14px; width: 55px ; text-align: center; height: 48px; border: 1px solid; border-radius: 3px; background: linear-gradient(#eeeeee, #aaaaaa);");
timeRow.appendChild(timeCell);
timeBody.appendChild(timeRow);
timeBox.appendChild(timeBody);
document.getElementById("clockDiv").appendChild(timeBox);
var newBasic;
var plural = "s";
if (scoreHome - scoreAway === 1 || scoreAway - scoreHome === 1) {
plural = "";
}
switch (true) {
case (scoreHome > scoreAway):
newBasic = document.getElementById("basics");
newBasic.innerHTML = homeName + " won by " + (scoreHome - scoreAway) + " point" + plural + ".";
break;
default:
newBasic = document.getElementById("basics");
newBasic.innerHTML = awayName + " won by " + (scoreAway - scoreHome) + " point" + plural + ".";
}
var weatherIcon = document.createElement("img");
weatherIcon.setAttribute("src", "https://grid-iron.org/images/icons/" + weather + ".gif");
weatherIcon.setAttribute("style", "float: left; height: 25px; width: 30px; padding-left: 5px;");
var wipeDetails = document.getElementById("details");
wipeDetails.innerHTML = "Played at " + attendance;
wipeDetails.appendChild(weatherIcon);
}
else if (mins === "FT" && qtr === "OT") {
document.getElementById("timeBody").innerHTML = "";
timeRow = document.createElement("tr");
timeCell = document.createElement("td");
timeCell.setAttribute("id", timeBoxId[0]);
timeCell.innerHTML = "OT";
timeCell.setAttribute("style", "text-shadow: 1px 1px #aaaaaa; font-weight: bold; font-size: 14px; width: 55px ; text-align: center; height: 48px; border: 1px solid; border-radius: 3px; background: linear-gradient(#eeeeee, #aaaaaa);");
timeRow.appendChild(timeCell);
timeBody.appendChild(timeRow);
timeBox.appendChild(timeBody);
document.getElementById("clockDiv").appendChild(timeBox);
}
else {
document.getElementById("timeBody").innerHTML = "";
for (var c = 0; c < 2; c++) {
timeRow = document.createElement("tr");
timeCell = document.createElement("td");
timeCell.setAttribute("id", timeBoxId[c]);
timeCell.setAttribute("style", "text-shadow: 1px 1px #aaaaaa; position: relative; top: " + timeArr[c][2] + "px; font-weight: bold; font-size: " + timeArr[c][0] + "px; width: 55px ; text-align: center; height: " + timeArr[c][1] + "px; border: 1px solid; border-radius: 3px; background: linear-gradient(#eeeeee, #aaaaaa);");
timeRow.appendChild(timeCell);
timeBody.appendChild(timeRow);
var timeCellUpdate = document.getElementById(timeBoxId[c]);
timeCellUpdate.innerHTML = clockArr[c].toUpperCase();
}
}
var hBall = document.createElement("img");
hBall.setAttribute("src", "https://grid-iron.org/images/match/ball.png");
hBall.setAttribute("style", "height: 10px; width: 15px; padding-top: 4px; padding-right: 4px; float: right; opacity: 0.7;");
var aBall = document.createElement("img");
aBall.setAttribute("src", "https://grid-iron.org/images/match/ball.png");
aBall.setAttribute("style", "height: 10px; width: 15px; padding-top: 4px; padding-right: 4px; float: right; opacity: 0;");
var homeBall = document.getElementById("homeName");
var awayBall = document.getElementById("awayName");
if (homeName === possession) {
homeBall.appendChild(hBall);
awayBall.appendChild(aBall);
}
if (awayName === possession) {
homeBall.appendChild(aBall);
awayBall.appendChild(hBall);
}
}
};
xhttp.open("GET", "https://grid-iron.org/match/" + matchList[count], true);
xhttp.send();
var addLink = document.getElementById("linkButton");
addLink.setAttribute("onclick", "document.location.href = 'https://grid-iron.org/match/match_id/" + matchList[count] + "'");
count += 1;
if (count > 7 && Number(aflc) === 1) {
count = 0;
}
if (count > 4 && Number(aflc) === 0) {
count = 0;
}
}
}, 100);