- // ==UserScript==
- // @name Player Value To League Page
- // @namespace pbr
- // @include http://goallineblitz.com/game/league.pl?league_id=*
- // @include http://glb.warriorgeneral.com/game/league.pl?league_id=*
- // @copyright 2010, pabst
- // @license (CC) Attribution Share Alike; http://creativecommons.org/licenses/by-sa/3.0/
- // @version 13.12.29
- // @description Add player value info to GLB league pages.
- // ==/UserScript==
-
- window.setTimeout( function() {
- var button = document.createElement("input");
- button.setAttribute("value","Get Eff Levels");
- button.setAttribute("type","button");
- button.addEventListener("click", main, true);
- button.setAttribute("id","levelbutton");
-
- var endorsements = document.getElementById("endorsements");
- endorsements.parentNode.insertBefore(button, endorsements);
- }, 100);
-
- var numTeams;
- var data = new Array();
-
- function main() {
- document.getElementById("levelbutton").disabled = "true";
-
- var conferences = document.getElementsByClassName("conference_table");
- numTeams = conferences.length*16;
- for (var c=0; c<conferences.length; c++) {
- var teams = conferences[c].getElementsByTagName("a");
- for (var t=0; t<teams.length; t++) {
- // console.log(teams[t].href.toString());
- if (teams[t].href.toString().indexOf("team.pl") != -1) {
- getInetPage(teams[t].href.toString().replace("team","roster"), handleTeam);
- }
- }
- }
- setTimeout(finish, 2000);
- }
-
- function tsort(arr, col) {
- for (var i=0; i<arr.length-1; i++) {
- for (var j=i; j<arr.length; j++) {
- if (parseFloat(arr[i][col]) < parseFloat(arr[j][col])) {
- var temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- }
- }
- }
- }
-
- function finish() {
- if (data.length != numTeams) {
- setTimeout(finish, 2000);
- return;
- }
-
- tsort(data,4);
-
- var text = "";
-
- var str = "<table><tbody>";
- var hdr = "<tr class='nonalternating_color'>";
- var titles = ["Rank","Team","Players","Age","Level","Value","Eff Level","Salary"];
- for (var i=0; i<titles.length; i++) {
- hdr += "<td>"+titles[i]+"</td>";
- }
- hdr += "</tr>";
-
- var cap = document.getElementsByClassName("info_item")[0].lastChild.textContent;
- cap = parseFloat(cap.replace(/\$/g,"").replace(/\,/g,""));
- var output = str+hdr;
- var t = "";
- for (var i=0; i<data.length; i++) {
- output += "<tr class='alternating_color"+(i%2+1)+"'>";
- output += "<td>"+(i+1)+"</td>";
-
- if ((i+1) < 10) text += ".";
- text += (i+1)+" ... ";
-
- for (var j=0; j<data[i].length; j++) {
- output += "<td";
- if (j == 6) {
- output += " style='text-align: right;";
- if (parseFloat(data[i][j].replace(/\$/g,"").replace(/\,/g,"")) > cap) {
- output += " color:red;";
- }
- output += "'";
- }
- else if (j > 0) {
- output += " style='text-align: center'";
- }
- output += ">"+data[i][j]+"</td>";
-
- if (j == 0) {
- t = data[i][j].slice(data[i][j].indexOf(">")+1, data[i][j].indexOf("</a"));
- t = t.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
- }
- else {
- var d = [null, 2, 3, 2, 7, 2, 11];
- if (isNaN(data[i][j].toString().slice(-1)) == true) data[i][j] = 0;
- while (data[i][j].toString().length < d[j]) data[i][j] = "."+data[i][j];
- text += data[i][j] + " ... ";
- }
-
- if (j == 6) {
- text += t + " ... ";
- }
- }
- output += "</tr>";
- text = text.slice(0,text.length-4) + "\n";
- }
- output += "</tbody></table>";
- console.log(text);
-
- var btn = document.getElementById("levelbutton");
- btn.style.visibility = "hidden";
- btn.style.display = "none";
-
- var div = document.createElement("div");
- div.innerHTML = output;
-
- var end = document.getElementById("endorsements");
- end.parentNode.insertBefore(div,end);
- }
-
- var processed=0;
-
- function handleTeam(address, page) {
- processed++;
- var pr = page.responseText.replace(/<img/g,"<div").replace(/\/img/g,"/div>");
- var team = pr.split('"big_head subhead_head">')[1].split("<")[0];
- team = team.split("(")[0].replace(/\s+$/g,"");;
-
- var color="#ff0000";
- if (processed > 16) color = "#0000ff";
- team = "<a style=color:"+color+" href="+address+">"+team+"</a>";
-
- var text = page.responseText.split("Count:")[1].split("Roster")[0];
- var salary = "$"+text.split("($")[1].split("/yr)")[0];
- var numPlayers = parseInt(text.split(">")[2]);
- var avgLevel = parseInt(text.split("Avg Lv ")[1]);
- var avgValue = parseFloat(text.split('margin-bottom: 6px;">')[3].split("</div>"));
- var effLevel = parseInt(text.split("Effective Lv ")[1]);
-
- text = page.responseText.split("content_contracts")[0];
- text = text.split("content_rosters")[1];
- // console.log(text);
-
- var cpuPlayers = text.split('class="cpu"').length - 1;
- numPlayers -= cpuPlayers;
-
- var avgAge = 0;
- // td class name bug here
- var ages = text.split("player_level\">");
- if (ages.length > 0) {
- for (var i=2; i<ages.length; i=i+2) {
- var tmp = ages[i].split("<")[0];
- if (isNaN(parseInt(tmp)) == false) {
- avgAge += parseInt(ages[i]);
- }
- }
- }
- avgAge = avgAge / numPlayers;
- // console.log(team+") "+numPlayers+" - "+cpuPlayers+" - "+avgLevel+" - "+avgValue+" - "+avgAge+" - "+effLevel+" - "+salary);
- data.push([team,numPlayers,avgAge.toFixed(0),avgLevel,avgValue.toFixed(2),effLevel,salary]);
- document.getElementById("levelbutton").value += ".";
- }
-
- function getInetPage(address, func) {
- // console.log("getInetPage : "+address);
- var req = new XMLHttpRequest();
- req.open( 'GET', address, true );
- req.onload = function() {
- if (this.status != 200) {
- alert("pbr gm script: Error "+this.status+" loading "+address);
- }
- else {
- // console.log("loaded: "+address)
- func(address,this);
- }
- };
-
- req.send(null);
- return req;
- }
-
-