GLB Team Leaders Fix

By pabst Last update Apr 10, 2011 — Installed 5,987 times.

There are 9 previous versions of this script.

// ==UserScript==
// @name           teamleaders
// @namespace      potl
// @description    Add player positions to the team leaders pages.
// @include        http://goallineblitz.com/game/team_player_stats.pl?team_id=*
// @version        11.04.10
// ==/UserScript==

/*
 * writen by pabst 7/17/08+
 */

var names = new Array();

window.setTimeout( function() {
	var inetAddress = "http://goallineblitz.com/game/roster.pl?team_id=";
	var id = (window.location+"").indexOf("team_id=")+"team_id=".length;
	id = (window.location+"").slice(id);
	if (id.indexOf("&") != -1) {
		id = id.slice(0,id.indexOf("&"));
	}
	inetAddress += id;

	console.log("Downloading "+inetAddress);
	getPage(inetAddress);
}, 300);

function getPage(address) {
	var req = new XMLHttpRequest();
	req.open( 'GET', address, true );
	req.onload = function() {
		if (this.status != 200) {
			console.log("Error "+this.status+" loading "+address);
		}
		else {
			console.log("finished");
			handleRoster(this.responseText);
		}
	};
	
	req.send(null); 
	return req;
}

function handleRoster(html) {
	var div = document.createElement("div");
	div.innerHTML = html.replace(/<img/g,"<div").replace(/\/img/g,"/div>");

//console.log(div.innerHTML);
	var content = div.getElementsByClassName("content_container")[1];
	var nDiv = content.getElementsByClassName("player_name");
	var posDiv = content.getElementsByClassName("player_position");
	for (var i=0; i<nDiv.length; i++) {
		var p = nDiv[i];
		var name = p.getElementsByTagName("a")[0].innerHTML;
		var id = p.getElementsByTagName("a")[0].href.split("=")[1];
		var pos = posDiv[i].firstChild.innerHTML;

		names[id.toString()] = pos;
	}
	modifyPlayers();

	stripTables();
}

function modifyPlayers() {
	var players = document.getElementsByClassName("stat_column_player");
	for (var i=1; i < players.length; i++) {
		var p = players[i];
		if (p == null) continue;

		var id = p.firstChild.href.split("=")[1];
		var y = document.createElement("span");
		y.className = "cpu";
		y.innerHTML = names[id];
		while (y.innerHTML.length < 3) {
			y.innerHTML += " ";
		}

		players[i].insertBefore(y,players[i].firstChild);
	}
}

function stripTables() {
	var keepers = [];
	var players = document.getElementsByClassName("stat_column_player");
	for (var i=0; i<players.length; i++) {
		var player = players[i];
		if (player != null) {
			var parent = player.parentNode;
			var keep = 0;
			for each (var cell in parent.cells) {
				if ((cell.innerHTML != "0") && (cell.innerHTML != "0/0") && (cell.innerHTML != null)) {
					keep++;
					if (keep >= 3) {
						keepers.push(i);
						break;
					}
				}
			}
		}
	}
	for (var i=players.length-1; i>0; i--) {
		if (keepers.indexOf(i) == -1) {
			players[i].parentNode.parentNode.removeChild(players[i].parentNode);
		}
	}
	
	var players = document.getElementsByClassName("stat_column_player");
	var row = players[players.length-1].parentNode;
	var cls = row.getAttribute("class");
	cls = cls.split(" ")[1];
	cls = "alternating_color"+(players.length%2+1)+" "+cls;
	var cls = row.setAttribute("class",cls);
}