- // ==UserScript==
- // @name sckcovinfo
- // @namespace pbr/inf
- // @include http://goallineblitz.com/game/game.pl?game_id=*&mode=pbp
- // @copyright 2009, pabst
- // @license (CC) Attribution Share Alike; http://creativecommons.org/licenses/by-sa/3.0/
- // @version 09.11.02
- // @description sdfsdf
- // ==/UserScript==
-
- window.setTimeout(
- function() {
-
- var button = document.createElement("input");
- button.setAttribute("value","Run Coverage");
- button.setAttribute("type","button");
- button.setAttribute("id","coveragebutton");
- button.addEventListener("click",function() { main(); },false);
-
- var spn = document.createElement("span");
- spn.setAttribute("id","coveragespan");
- spn.appendChild(button);
-
- var tbl = document.getElementById("pbp");
- tbl.parentNode.insertBefore(spn, tbl);
-
- // addTeam();
- //main();
- }
- , 100);
-
- var playText = new Array();
- var coverages = new Array();
- var teamid = 604;
- var maxgames = 1;
- var season=14;
- var tdiv=1;
-
- function addTeam() {
- getInetPage("http://goallineblitz.com/game/team.pl?season="+season+"&team_id="+teamid, tmf);
- }
-
- function addGame(addr, page) {
- var div = document.createElement("div");
- div.innerHTML = page.responseText;
- document.body.appendChild(div);
- }
-
- function tmf(addr, page) {
- var div = document.createElement("div");
- div.innerHTML = page.responseText;
-
- var addr = 0;
- var a = div.getElementsByTagName("a");
- var current = window.location.toString().split("?")[1].split("&")[0];
- for (var i=0; i<a.length; i++) {
- if (a[i].href.toString().indexOf("game.pl") != -1) {
- addr++;
- if (a[i].href.toString().indexOf(current) == -1) {
- getInetPage(a[i].href.toString()+"&mode=pbp", addGame);
- }
- else {
- console.log("skipping "+addr);
- }
- }
- if (addr == maxgames) break;
- }
- }
-
- function Coverage() {
- this.id;
- this.player;
- this.position;
- this.attempts = 0;
- this.completions = 0;
- this.yards = 0;
- this.pd = 0;
- this.toString = function() {
- return this.id+" ("+this.position+") "+this.player+" "+this.completions+"/"+this.attempts+" - "+this.yards;
- }
- }
-
- function Rush() {
- this.id;
- this.player;
- this.hurry = 0;
- this.sack = 0;
- }
-
- function main() {
- // alert("I am main!");
- tdiv = document.getElementsByClassName("team_logo").length/2;
- console.log("tdiv is ="+tdiv);
- var p = document.getElementsByClassName("pbp_play");
- var plays = new Array();
- for (var i=0; i<p.length/tdiv; i++) {
- plays[i] = p[i];
- }
- console.log(p.length+" -- "+plays.length);
- var replays = document.getElementsByClassName("pbp_replay");
-
-
- var threads = document.createElement("div");
- threads.setAttribute("id","threads");
- threads.setAttribute("number",plays.length);
- document.getElementById("footer").appendChild(threads);
-
- var cnt = 0;
- for (var ri=0; ri<plays.length; ri++) {
- var p = plays[ri];
- // console.log(ri+") "+p.textContent.toString().slice(0,20));
- var t = document.createElement("div");
- t.id = replays[ri].childNodes[0].href;
- threads.appendChild(t);
-
- if ((p.textContent.indexOf(" pass to ") == -1) &&
- (p.textContent.indexOf(" sacked by ") == -1)) {
- var threads = document.getElementById("threads");
- t.innerHTML = "<div></div><div></div>";
- continue;
- }
- playText[replays[ri].childNodes[0].href] = p.textContent;
- getInetPage(replays[ri].childNodes[0].href, def);
- cnt++;
- }
- console.log("count="+cnt);
- setTimeout(function() { finish(); }, 500);
- }
-
- function finish(input) {
- console.log("input was "+input);
- var threads = document.getElementById("threads");
- var number = threads.getAttribute("number");
-
- var i = input;
- if (i == null) i = 0;
- for (; i<threads.childNodes.length; i++) {
- if (threads.childNodes[i].childNodes.length != 2) {
- // console.log("no children : "+i);
- document.getElementById("coveragespan").innerHTML = i +
- "/" + threads.childNodes.length;
- setTimeout(function() { finish(i); }, 3000);
- return;
- }
- }
-
- if (0 == 1) {
- }
- else {
- var spn = document.getElementById("coveragespan");
- spn.parentNode.removeChild(spn);
-
- var output = combine();
- coverages = output[0];
- // coverages = combineCoverage();
- console.log("done : "+coverages.length);
-
- var rows = new Array();
- for (var i=0; i<coverages.length; i++) {
- // console.log(coverages[i]);
- rows.push(coverages[i].player);
- }
- var table = getCoverageTable(0,rows);
- var tbl = document.getElementById("pbp");
- tbl.parentNode.insertBefore(table, tbl);
- for (var i=0; i<coverages.length; i++) {
- document.getElementById("cv-0-"+i+"-0").innerHTML = coverages[i].completions;
- document.getElementById("cv-1-"+i+"-0").innerHTML = coverages[i].attempts;
- var num = (100*coverages[i].completions / coverages[i].attempts).toFixed(0);
- if (isNaN(num) == true) {
- num = 0;
- }
-
- document.getElementById("cv-2-"+i+"-0").innerHTML = num + "%";
- document.getElementById("cv-3-"+i+"-0").innerHTML = coverages[i].yards;
- document.getElementById("cv-4-"+i+"-0").innerHTML = coverages[i].pd;
- }
-
- var blocking = output[1];
- // coverages = combineBlocking();
- var rows = new Array();
- for (var i=0; i<blocking.length; i++) {
- // console.log(blocking[i]);
- rows.push(blocking[i].player);
- }
- var table = getBlockingTable(0,rows);
- var tbl = document.getElementById("pbp");
- tbl.parentNode.insertBefore(table, tbl);
- for (var i=0; i<blocking.length; i++) {
- document.getElementById("bl-0-"+i+"-0").innerHTML = blocking[i].hurry;
- document.getElementById("bl-1-"+i+"-0").innerHTML = blocking[i].sack;
- }
- var t = document.getElementById("threads");
- // t.parentNode.removeChild(t);
- }
- }
-
- function combine() {
- var rush = new Array();
- var pass = new Array();
- var threads = document.getElementById("threads");
- // for (var cidx=0; cidx<threads.childNodes.length; cidx++) {
- // var child = threads.childNodes[cidx];
- var replays = document.getElementsByClassName("pbp_replay");
- for (var cidx=0; cidx<replays.length/tdiv; cidx++) {
- var child = document.getElementById(replays[cidx].childNodes[0].href);
- if (child == null) continue;
- if (child.childNodes.length == 0) continue;
-
- var p = child.childNodes[0].innerHTML;
- var t = p.split(" ",5);
- if (t.length >= 5) {
- var cov = new Coverage();
- cov.id = parseInt(t[0]);
- cov.completions = parseInt(t[1]);
- cov.attempts = 1;
- cov.yards = parseInt(t[2]);
- cov.pd = parseInt(t[3]);
- cov.player = p.slice(t[0].length+t[1].length+t[2].length+5);
- pass.push(cov);
- }
-
- if (child.childNodes.length > 1) {
- var bl = child.childNodes[1].innerHTML;
-
- var t = bl.split(" ",3);
- if (t.length >= 3) {
- var r = new Rush();
- r.id = parseInt(t[0]);
- if (t[1] == "0") r.hurry = 1;
- else r.sack = 1;
- r.player = bl.slice(t[0].length+3);
- rush.push(r);
- }
- }
- }
- // threads.parentNode.removeChild(threads);
- console.log("coverages == "+pass.length);
- console.log("rushes == "+rush.length);
-
- var out = new Array();
-
- c = pass;
- console.log("combine coverage "+c.length);
- var output = new Array();
- for (var j=0; j<c.length; j++) {
- var id = c[j].id;
- var idx = -1;
- for (var i=0; i<output.length; i++) {
- if (c[j].id == output[i].id) {
- idx = i;
- break;
- }
- }
- if (idx == -1) {
- output.push(c[j]);
- }
- else {
- output[idx].completions += c[j].completions;
- output[idx].attempts += c[j].attempts;
- output[idx].yards += c[j].yards;
- output[idx].pd += c[j].pd;
- }
- }
- out[0] = output;
-
- c = rush;
- console.log("combine blocking "+c.length);
- var output = new Array();
- for (var j=0; j<c.length; j++) {
- var id = c[j].id;
- var idx = -1;
- for (var i=0; i<output.length; i++) {
- if (c[j].id == output[i].id) {
- idx = i;
- break;
- }
- }
- if (idx == -1) {
- output.push(c[j]);
- }
- else {
- output[i].hurry += c[j].hurry;
- output[i].sack += c[j].sack;
- }
- }
- out[1] = output;
-
- return out;
- }
-
- function def(addr, page) {
- //console.log("pt-- "+playText[addr]);
- //console.log(page.responseText);
- var idx = page.responseText.indexOf("var players =");
- var p = page.responseText.slice(idx+"var players =".length);
- p = p.slice(0,p.indexOf("var play_data"));
- var pd = page.responseText.slice(page.responseText.indexOf("var play_data =")+"var play_data =".length);
- pd = pd.slice(0,pd.indexOf(";"));
- var pt = page.responseText.slice(page.responseText.indexOf("var ptid =")+"var ptid =".length);
- pt = pt.slice(0,pt.indexOf(";"));
- var newplayers = null;
- var newplay_data = null;
- eval("newplayers = "+p);
- newplay_data = eval(pd);
- eval("ptid = "+pt);
-
- // console.log(newplayers+" -- "+newplay_data.length);
- var res = defender_main(newplayers, newplay_data, playText[addr]);
- // console.log("def end");
-
- var t = document.getElementById(addr);
- if (t == null) console.log("t element missing : "+addr);
- for (var i=0; i<res.length; i++) {
- var div = document.createElement("div");
- div.innerHTML = res[i];
- t.appendChild(div);
- }
- for (var i=t.childNodes.length; i<2; i++) {
- t.innerHTML += "<div></div>";
- }
- }
-
- function defender_main(players, play_data, playText) {
- var output = new Array();
- output[0] = null;
- output[1] = null;
- var playerids = new Array();
- for (var i = 0; i < play_data[0].length; i++) {
- var data = play_data[0][i];
- if (data.id != 'ball') {
- playerids.push (data.id);
- }
- }
-
- var receiver = getReceiverName(playText);
- //console.log("receiver is : '"+receiver+"'");
- if (receiver != null) {
- var wrid = -1;
- for (var i = 0; i < playerids.length; i++) {
- var plyr = players[playerids[i]];
- //console.log("'"+plyr.name+"' -- '"+receiver+"'");
- if (plyr.name == receiver) {
- wrid = playerids[i];
- break;
- }
- }
- if (wrid == -1) {
- //console.log("no receiver : "+playText);
- return ["",""];
- }
-
- var min = 99999;
- var incY = 99999;
- var catchY = -1;
- var wridx = -1;
- for (var i=0; i<play_data[1].length; i++) {
- if (play_data[1][i].id == wrid) {
- wridx = i;
- break;
- }
- }
-
- for (var j = 0; j < play_data.length; j++) {
- var balldata = play_data[j][0];
- var snapdata = play_data[j][wridx];
-
- var ydepth = Math.abs(snapdata.y - balldata.y);
- var xdepth = Math.abs(snapdata.x - balldata.x);
- //???? xdepth = xdepth-3;
- var distance = Math.sqrt(ydepth*ydepth + xdepth*xdepth);
- if (distance < min) {
- incY = snapdata.y;
- min = distance;
- distY = balldata.y //added this
- }
- if (distance == 0) {
- catchY = balldata.y
- distY = balldata.y //added this
- break;
- }
- //console.log(min+" : "+balldata+" : "+snapdata+" : "+xdepth+" : "+ydepth);
- }
- var c = -1;
- for (var v=0; v<playerids.length; v++) {
- if (players[playerids[v]].position == "C") {
- for (var w=0; w<play_data[0].length; w++) {
- if (play_data[0][w].id == playerids[v]) {
- c = w;
- break;
- }
- }
- break;
- }
- }
- console.log(playText);
- console.log("C is : "+c+" -- "+(distY*3+40-6)+" : "+(play_data[0][c].y*3+40-6));
- console.log("Pass Length = "+parseInt(distY-play_data[0][c].y)/3);
-
- try {
- var defPlayers = findDefender(players, play_data, playText);
- if (defPlayers != null) {
- var max = findMax(defPlayers);
- var def = play_data[0][max];
- // console.log(max+"-"+def.id+"-"+players[def.id].position+"-"+players[def.id].name);
-
- var pd = 0;
- if (playText.indexOf("[deflected by ") != -1) pd = 1;
-
- var result = null;
- playText = playText.split("(");
- for (var i=0; i<playText.length; i++) {
- if (playText[i].indexOf("yd gain)") != -1) {
- result = parseFloat(playText[i]);
- break;
- }
- else if (playText[i].indexOf("yd loss)") != -1) {
- result = parseFloat(playText[i]);
- break;
- }
- else if (playText[i].indexOf("no gain)") != -1) {
- result = 0;
- break;
- }
- }
- //console.log("result is : "+players[def.id].position+"-"+players[def.id].name+" : "+result);
- var c = new Coverage();
- c.id = def.id;
- c.position = players[def.id].position;
- c.player = players[def.id].name;
- c.attempts = 1;
- c.completions = 0;
- c.yards = 0;
- if (result != null) {
- c.completions++;
- c.yards += result;
- }
- else {
- c.pd = pd;
- }
- // coverages.push(c);
- // console.log(c);
- output[0] = c.id+" "+c.completions+" "+c.yards+" "+c.pd+" "+c.player;
- }
- }
- catch (err) {
- console.log("yac defenders: "+err);
- output = "";
- }
- }
-
-
- try {
- var blockers = findBlocker(players, play_data, playText);
- if (blockers != null) {
- var max = findMax(blockers);
- //console.log(blockers);
- var def = play_data[0][max];
- // console.log(max+"-"+def.id);
- if (def.id == "ball") {
- max = findMax(blockers.slice(1));
- }
- var def = play_data[0][max];
- // console.log(max+"-"+def.id);
- // console.log(players[def.id].position+"-"+players[def.id].name);
-
- var sh = "0";
- if (playText.indexOf(" sacked by ") != -1) {
- sh = "1";
- }
-
- // console.log(def.id+" "+sh+" "+players[def.id].name);
- output[1] = def.id+" "+sh+" "+players[def.id].name;
- // addBlocker(players[def.id].position+"-"+players[def.id].name);
- }
- else {
- // console.log("no blockers : "+playText);
- }
- }
- catch (err) {
- console.log("yac blockers: "+err);
- output[1] = "";
- }
-
- return output;
- }
-
- function findDefender(players, play_data, outcome) {
- var playerids = new Array();
- for (var i = 1; i < play_data[0].length; i++) {
- var data = play_data[0][i];
- if (data.id != 'ball') {
- playerids.push (data.id);
- }
- }
-
- var playText = outcome;
- var receiver = getReceiverName(playText);
-
- var wrid = -1;
- for (var i = 0; i < playerids.length; i++) {
- var plyr = players[playerids[i]];
- if (plyr.name == receiver) {
- wrid = playerids[i];
- break;
- }
- }
- if (wrid == -1) return null;
-
- var wridx = -1;
- for (var i=0; i<play_data[1].length; i++) {
- if (play_data[1][i].id == wrid) {
- wridx = i;
- break;
- }
- }
-
- var defmin = 99999;
- var defPlayers = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
- var j;
- for (j = 0; j < play_data.length; j++) {
- var k=0;
- if (wridx <= 11) {
- k=1;
- }
- var fmin = 99999;
- var fidx = -1;
- for (var i=(k*11)+1; i<(k*11)+12; i++) {
- try{
- //console.log(wridx+" == "+i+" -- "+unsafeWindow.play_data[j][i]);
- var def = play_data[j][i];
- var defydepth = Math.abs(def.y - play_data[j][wridx].y);
- var defxdepth = Math.abs(def.x - play_data[j][wridx].x);
- var defdistance = Math.sqrt(defydepth*defydepth + defxdepth*defxdepth);
- if (defdistance < defmin) {
- defmin = defdistance;
- }
- if (defdistance < fmin) {
- fmin = defdistance;
- fidx = i;
- }
- defPlayers[i] = Math.max(0,defPlayers[i]-0.7);
- //console.log(unsafeWindow.players[def.id].name);
- if ((i != -1) && (defdistance < 18) && (j>5)) {
- defPlayers[i] += 1.35;
- }
- //console.log(unsafeWindow.play_data[j][i].id+" : "+defPlayers[i]);
- } catch(e) {}
- }
- if (fmin < 12) {
- defPlayers[fidx] += 0.35;
- }
- //console.log(j+" -- "+fmin+" : "+fidx+" -- "+defPlayers);
-
- try {
- var balldata = play_data[j+5][0];
- var wrdata = play_data[j+5][wridx];
- //console.log(balldata.x+" - "+wrdata.x+" : "+balldata.y+" - "+wrdata.y);
- if ((Math.abs(balldata.x - wrdata.x) < 15) && (Math.abs(balldata.y - wrdata.y) < 15)) {
- break;
- }
- }
- catch (e) {
- break;
- }
- if ((j == 0) && ((j+10) < (play_data.length-5))) {
- j += 9;
- }
- }
- //alert("defmin="+defmin);
- if (defmin > 11) {
- //console.log("HiZ");
- defPlayers = null;
- }
- return defPlayers;
- }
-
- function findBlocker(players,play_data, playText) {
- var outcome = playText.toString();
- var playerids = new Array();
- for (var i = 1; i < play_data[0].length; i++) {
- var data = play_data[0][i];
- if (data.id != 'ball') {
- playerids.push (data.id);
- }
- }
-
- var qbid = 0;
- for (var i = 0; i < playerids.length; i++) {
- var plyr = players[playerids[i]];
- //console.log(i+") "+plyr.position);
- if (plyr.position == "QB") {
- qbid = playerids[i];
- break;
- }
- }
-
- var qbidx = 0;
- for (var i=0; i<22; i++) {
- if (play_data[0][i].id == qbid) {
- qbidx = i;
- break;
- }
- }
-
- var lastFrame = play_data.length;
- var last = 32767;
- for (var f=0; f<play_data.length; f++) {
- var balldata = play_data[f][0];
- var qbdata = play_data[f][qbidx];
- var ydepth = Math.abs(qbdata.y - balldata.y);
- var xdepth = Math.abs(qbdata.x - balldata.x);
- var distance = Math.sqrt(ydepth*ydepth + xdepth*xdepth);
- //console.log(f+") "+distance+" --- "+last);
- if (distance > last) {
- lastFrame = f;
- break;
- }
- last = distance;
- }
-
- //console.log(qbid+" - "+qbidx+" : lf="+lastFrame);
-
- var rusher;
- var idx = outcome.indexOf(" sacked by ")+" sacked by ".length;
- if (idx != 10) {
- rusher = outcome.slice(idx,idx+outcome.slice(idx).indexOf(" ("));
- }
- else {
- idx = outcome.indexOf(", hurried by ")+", hurried by ".length;
- rusher = outcome.slice(idx,idx+outcome.slice(idx).indexOf(", "));
- }
-
- var rusheridx = -1;
- var rusherid = -1;
- for (var i=0; i<play_data[0].length; i++) {
- var id = play_data[0][i].id;
- if (players[id] != null) {
- if (players[id].name == rusher) {
- rusherid = id;
- rusheridx = i;
- break;
- }
- }
- }
- // console.log("rusher="+rusherid+" : "+rusheridx+" : "+players[rusherid].name);
- if (rusherid == -1) return null;
-
- var offmin = 99999;
- var offPlayers = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
- var offidx = -1;
- var j;
- for (j = 0; j < lastFrame; j++) {
- var k=0;
- if (rusherid <= 11) {
- k=1;
- }
- var offmin = 99999;
- var offidx = -1;
- //console.log(rusher+" - "+unsafeWindow.play_data[j][rusheridx].x+","+unsafeWindow.play_data[j][rusheridx].y);
- for (var i=(k*11)+1; i<(k*11)+12; i++) {
- var off = play_data[j][i];
- var offydist = Math.abs(off.y - play_data[j][rusheridx].y);
- var offxdist = Math.abs(off.x - play_data[j][rusheridx].x);
- var offdistance = Math.sqrt(offydist*offydist + offxdist*offxdist);
- if (offdistance < offmin) {
- offmin = offdistance;
- offidx = i;
- }
- //console.log(rusherid+"/"+rusheridx+" == "+i+" -- "+unsafeWindow.play_data[j][i].id+" = "+offdistance);
- offPlayers[i] = Math.max(0,offPlayers[i]-0.1);
- if (offdistance < 9) {
- //console.log(unsafeWindow.players[off.id].name+" -- "+offdistance+" :: "+off.x+","+off.y);
- offPlayers[i] += 1;
- }
- //console.log(offPlayers);
- }
- if (offmin < 6) {
- offPlayers[offidx] += 0.35;
- }
- if (j == 2) j += 7;
- }
- //console.log(offidx+"-"+offidx+"-"+offmin+"="+offPlayers);
- if (offmin > 15) {
- offidx = -1;
- offPlayers = null;
- }
- return offPlayers;
- }
-
- function findMax(arr) {
- if (arr == null) return -1;
- if (arr.length < 1) return -1;
-
- var idx = 0;
- var max = arr[idx];
- for (var i=1; i<arr.length; i++) {
- if (arr[i] > max) {
- idx = i;
- max = arr[i];
- }
- }
- return idx;
- }
-
- function getReceiverName(playText) {
- var sn = playText.indexOf('pass to ')+8;
- var en = 0;
-
- if (playText.indexOf(', hurried by')!=-1) {
- en = playText.indexOf(', hurried by');
- }
- else if (playText.indexOf(' up the')!=-1) {
- en = playText.indexOf(' up the');
- }
- else if (playText.indexOf(' over the')!= -1) {
- en = playText.indexOf(' over the');
- }
- else {
- return null;
- }
-
- var name = playText.slice(sn,en);
- return name;
- }
-
- function getInetPage(address, func, target) {
- // console.log("getInetPage : "+address);
- var req = new XMLHttpRequest();
- req.open( 'GET', address, true );
- req.onreadystatechange = function() {
- if (target != null) {
- var d = ["..","...","."];
- var str = target.innerHTML.split(" ");
- target.innerHTML = str[0]+" "+d[str[1].length-1];
- }
- };
- req.onload = function() {
- if (this.status != 200) {
- console.log("pbr gm script: Error "+this.status+" loading "+address);
- getInetPage(address, func, target);
- }
- else {
- // console.log("loaded: "+address)
- func(address,this);
- }
- };
-
- req.send(null);
- return req;
- }
-
- function getCoverageTable(index, rows) {
- var title = "Coverage";
- var columns = ["Name","Cmp", "Att","Pct","Yards", "PD"];
-
- var r = rows;
- if (rows == null) r = [];
- else if (rows.length == 0) r = [];
- return getTable(title,r,columns,index,"cv",true);
- }
-
- function getBlockingTable(index, rows) {
- var title = "Blocking";
- var columns = ["Name","Hurries","Sacks"];
-
- var r = rows;
- if (rows == null) r = [];
- else if (rows.length == 0) r = [];
- return getTable(title,r,columns,index,"bl",true);
- }
-
- function getTable(title, rows, columns, index, prefix, sortable) {
- var t = document.createElement("table");
- t.setAttribute("border","1");
- t.setAttribute("cellspacing","0");
- t.setAttribute("style","width: 485px;visibility: visible;");
- t.setAttribute('id','scout-'+prefix+""+index+'-table');
-
- var tr = document.createElement("tr");
- tr.setAttribute('class','nonalternating_color pbp_pbr_title');
-
- var td = document.createElement("td");
- td.setAttribute('id','team'+index+""+prefix);
- td.setAttribute('colspan',columns.length+1);
- td.setAttribute('align','center');
- td.appendChild(document.createTextNode(title));
- tr.appendChild(td);
- t.appendChild(tr);
-
- var tr2 = document.createElement("tr");
- tr2.setAttribute('class','nonalternating_color2 pbp_pbr_title');
- var first = document.createElement("td");
- first.setAttribute("align","left");
- first.appendChild(document.createTextNode(columns[0]));
- tr2.appendChild(first);
- if (sortable == true) {
- tr2.addEventListener("click",sortEvent,true);
- }
- for (var x=1; x<columns.length; x++) {
- var colname = document.createElement("td");
- var colname = document.createElement("td");
- colname.setAttribute('align','center');
- var tn = document.createTextNode(columns[x]);
- colname.appendChild(tn);
- tr2.appendChild(colname);
- }
- t.appendChild(tr2);
-
- for (var y=0; y<rows.length; y++) {
- var tr3 = document.createElement("tr");
- tr3.setAttribute('class','alternating_color'+(y%2+1)+' pbp_pbr_title_row');
- var rowname = document.createElement("td");
- rowname.appendChild(document.createTextNode(rows[y]));
- tr3.appendChild(rowname);
- for (var x=1; x<columns.length; x++) {
- var stat = document.createElement("td");
- stat.setAttribute('id',prefix+'-'+(x-1)+'-'+y+'-'+index);
- stat.setAttribute('align','center');
- stat.appendChild(document.createTextNode('('+(x-1)+','+y+')'));
- tr3.appendChild(stat);
- }
- t.appendChild(tr3);
- }
- return t;
- }
-
- function sortEvent(evt) {
- sortTable(evt.target.parentNode.parentNode,evt.target.cellIndex);
- return true;
- }
-
- function sortTable(table, column) {
- var rows = table.rows;
- var viz = table.getAttribute("style");
- table.setAttribute("style","visibility: hidden;");
- for (var i=2; i<rows.length-1; i++) {
- var idx = i;
- for (var j=i; j<rows.length-1; j++) {
- var lrow = rows.item(idx);
- var lcell = lrow.cells.item(column);
- var rrow = rows.item(j+1);
- var rcell = rrow.cells.item(column);
- var left = parseFloat(lcell.innerHTML);
- var right = parseFloat(rcell.innerHTML);
- if (isNaN(left) || isNaN(right)) {
- left = lcell.innerHTML.toLowerCase();
- right = rcell.innerHTML.toLowerCase();
- if (left > right) {
- idx = j+1;
- }
- }
- else {
- if (left < right) {
- idx = j+1;
- }
- }
- }
- if (idx != -1) {
- var r = table.rows.item(idx);
- table.deleteRow(idx);
- var newRow = table.insertRow(i);
- newRow.setAttribute("class","alternating_color"+(i%2+1)+" pbp_pbr_title_row");
- for (var x=0; x<r.cells.length; x++) {
- var cell = newRow.insertCell(x);
- cell.setAttribute("align",r.cells.item(x).getAttribute("align"));
- cell.setAttribute("id",r.cells.item(x).getAttribute("id"));
- cell.innerHTML = r.cells.item(x).innerHTML;
- }
- }
- }
- if (rows.length != 2) {
- var lastRow = table.rows.item(rows.length-1);
- lastRow.setAttribute("class","alternating_color"+((rows.length-1)%2+1)+" pbp_pbr_title_row");
- }
- table.setAttribute("style",viz);
- }
-
-