// ==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);
}