pbr Game Scout statslib

description

This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greatest.deepsurf.us/scripts/1373/3538/pbr%20Game%20Scout%20statslib.js

  1. // ==UserScript==
  2. // @name pbr Game Scout statslib
  3. // @description description
  4. // @namespace pbr
  5. // @copyright 2008, pabst
  6. // @license (CC) Attribution Share Alike; http://creativecommons.org/licenses/by-sa/3.0/
  7. // @version 09.11.04
  8. // ==/UserScript==
  9.  
  10. function Stats() {
  11. this.toString = function() {
  12. return this.team_name[0]+" ("+this.team_id[0]+") vs. "+this.team_name[1]+" ("+this.team_id[1]+")";
  13. }
  14. this.team_name = [];
  15. this.team_id = [];
  16. this.team_possession = [0,0,0,0,0,0,0,0,0,0,0,0];
  17. this.team_penalty = [0,0,0,0,0,0,0,0,0,0,0,0];
  18. this.team_att = [0,0,0,0,0,0,0,0,0,0];
  19. this.team_yards = [0,0,0,0,0,0,0,0,0,0];
  20. this.team_success = [0,0,0,0,0,0,0,0,0,0];
  21. this.team_firsts = [0,0,0,0,0,0,0,0,0,0];
  22. this.team_lyards = [0,0,0,0,0,0,0,0,0,0];
  23. this.team_pass_att = [0,0,0,0,0,0];
  24. this.team_pass_comp = [0,0,0,0,0,0];
  25. this.team_pass_yards = [0,0,0,0,0,0];
  26. this.team_pass_firsts = [0,0,0,0,0,0];
  27.  
  28. this.team_att_down = [0,0,0,0,0,0,0,0];
  29. this.team_yards_down = [0,0,0,0,0,0,0,0];
  30. this.team_success_down = [0,0,0,0,0,0,0,0];
  31. this.team_firsts_down = [0,0,0,0,0,0,0,0];
  32. this.team_lyards_down = [0,0,0,0,0,0,0,0];
  33.  
  34. this.team_pass_att_down = [0,0,0,0,0,0,0,0];
  35. this.team_pass_comp_down = [0,0,0,0,0,0,0,0];
  36. this.team_pass_yards_down = [0,0,0,0,0,0,0,0];
  37. this.team_pass_firsts_down = [0,0,0,0,0,0,0,0];
  38. this.team_pass_pressure_down = [0,0,0,0,0,0,0,0];
  39.  
  40. this.team_quarter_totals = new Array(6);
  41. for (var i=0; i<6; i++) {
  42. this.team_quarter_totals[i] = [0,0,0,0,0,0,0,0,0,0,0,0,0,0];
  43. }
  44.  
  45. this.playerRushingName = [[],[]];
  46. this.playerRushingStats = [[],[]]; //[att,yard,long,succ,fd,brtk]
  47. this.playerRushingStatsCombine = [true,true,false,true,true,true];
  48.  
  49. this.playerPassingName = [[],[]];
  50. this.playerPassingStats = [[],[]]; //[comp,att,yard,td,int,pd,drop,bad,hurry]
  51. this.playerPassingStatsCombine = [true,true,true,true,true,true,true,true,true];
  52.  
  53. this.playerReceivingName = [[],[]];
  54. this.playerReceivingStats = [[],[]]; //[comp,att,drop,yard,long,yac,pd,fd,brtk.kl]
  55. this.playerReceivingStatsCombine = [true,true,true,true,false,true,true,true,true,true];
  56.  
  57. this.playerDefensiveName = [[],[]];
  58. this.playerDefensiveStats = [[],[]]; //[tot,rtack,rmiss,ptack,pmiss,sttack,stmiss]
  59. this.playerDefensiveStatsCombine = [true,true,true,true,true,true,true,true];
  60.  
  61. this.playerDefensiveRushName = [[],[]];
  62. this.playerDefensiveRushStats = [[],[]]; //tack,miss,yards,stop,defeat,ff
  63. this.playerDefensivePassName = [[],[]];
  64. this.playerDefensivePassStats = [[],[]]; //tack,miss,yards,stop,defeat,ff,int,pd,kl
  65. this.playerDefensiveSTName = [[],[]];
  66. this.playerDefensiveSTStats = [[],[]]; //tack,miss,yards,ff
  67. this.playerKickingName = [[],[]];
  68. this.playerKickingStats = [[],[]]; //[ko,yards,long,tb,in20,net]
  69. this.playerKickingStatsCombine = [true,true,false,true,true,true];
  70.  
  71. this.playerPuntingName = [[],[]];
  72. this.playerPuntingStats = [[],[]]; //[p,yards,long,tb,in20,net]
  73. this.playerPuntingStatsCombine = [true,true,false,true,true,true];
  74.  
  75. this.playerKickReturnStats = [[],[]];
  76. this.playerKickReturnName = [[],[]]; //[kr,yards,long,td,brtk,dst]
  77. this.playerKickReturnStatsCombine = [true,true,false,true,true,true];
  78.  
  79. this.playerPuntReturnStats = [[],[]];
  80. this.playerPuntReturnName = [[],[]]; //[pr,yards,long,td,brtk,dst]
  81. this.playerPuntReturnStatsCombine = [true,true,false,true,true,true];
  82.  
  83. this.playerPenaltyName = [[],[]];
  84. this.playerPenaltyStats = [[],[]]; //[false start, offsides, encroachment]
  85. this.playerPenaltyStatsCombine = [true,true,true];
  86. this.distanceStats = new Array(4);
  87. for (var i=0; i<4; i++) {
  88. this.distanceStats[i]=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
  89. //>0cay - >5cay - >15cay
  90. }
  91.  
  92. this.driveList = [[],[]];
  93. }
  94.  
  95. function Drive() {
  96. this.teamName;
  97. this.quarter;
  98. this.startTime;
  99. this.endTime;
  100. this.driveBegan;
  101. this.driveEnded;
  102. this.numOfPlays = 0;
  103. this.netYards = 0;
  104. this.result;
  105.  
  106. this.toString = function() {
  107. return this.quarter+" : "+this.startTime+" : "+this.endTime+" : " +
  108. this.timePoss+" : "+this.driveBegan+" : " +
  109. this.driveEnded+" : "+this.numOfPlays+" : " +
  110. yardDiff(this.driveBegan,this.driveEnded) +
  111. " : "+this.result;
  112. }
  113. }
  114.  
  115. function addition(left,right) {
  116. var stats = new Stats();
  117. var aligned = false;
  118.  
  119. //console.log("addition start");
  120. /*
  121. if ((left.team_id[0] == right.team_id[0]) ||
  122. (left.team_id[1] == right.team_id[1])) {
  123. aligned = true;
  124. }
  125. else if ((left.team_name[0] == right.team_name[0]) ||
  126. (left.team_name[1] == right.team_name[1])) {
  127. aligned = true;
  128. }
  129. else {
  130. aligned = false;
  131. }
  132. */
  133. try {
  134. //if (left.team_id[0].indexOf(parseFloat(right.team_id[0])) != -1) {
  135. if (parseFloat(left.team_id[0]) == parseFloat(right.team_id[0])) {
  136. aligned = true;
  137. }
  138. else if ((left.team_name[0] == right.team_name[0]) ||
  139. (left.team_name[1] == right.team_name[1])) {
  140. aligned = true;
  141. }
  142. //else if (left.team_id[1].indexOf(parseFloat(right.team_id[1])) != -1) {
  143. else if (parseFloat(left.team_id[1]) == parseFloat(right.team_id[1])) {
  144. aligned = true;
  145. }
  146. else {
  147. aligned = false;
  148. }
  149. }
  150. catch (err) {
  151. //console.log("addition() says: "+err);
  152. if ((left.team_id[0] == right.team_id[0]) ||
  153. (left.team_id[1] == right.team_id[1])) {
  154. aligned = true;
  155. }
  156. else if ((left.team_name[0] == right.team_name[0]) ||
  157. (left.team_name[1] == right.team_name[1])) {
  158. aligned = true;
  159. }
  160. else {
  161. aligned = false;
  162. }
  163. }
  164.  
  165. //console.log(left.team_id+" -- "+right.team_id+" -- "+aligned);
  166.  
  167. var len = left.team_possession.length
  168. for (var i=0; i<len; i++) {
  169. if (aligned == true) idx = i;
  170. else idx = (i+len/2)%len;
  171. stats.team_possession[i] = left.team_possession[i] +
  172. right.team_possession[idx];
  173. }
  174. len = left.team_penalty.length
  175. for (var i=0; i<len; i++) {
  176. if (aligned == true) idx = i;
  177. else idx = (i+len/2)%len;
  178. stats.team_penalty[i] = left.team_penalty[i] +
  179. right.team_penalty[idx];
  180. }
  181. len = left.team_att.length;
  182. for (var i=0; i<len; i++) {
  183. if (aligned == true) idx = i;
  184. else idx = (i+len/2)%len;
  185. stats.team_att[i] = left.team_att[i] +
  186. right.team_att[idx];
  187. stats.team_yards[i] = left.team_yards[i] +
  188. right.team_yards[idx];
  189. stats.team_success[i] = left.team_success[i] +
  190. right.team_success[idx];
  191. stats.team_firsts[i] = left.team_firsts[i] +
  192. right.team_firsts[idx];
  193. stats.team_lyards[i] = left.team_lyards[i] +
  194. right.team_lyards[idx];
  195. }
  196. len = left.team_pass_comp.length;
  197. for (var i=0; i<len; i++) {
  198. if (aligned == true) idx = i;
  199. else idx = (i+len/2)%len;
  200. stats.team_pass_comp[i] = left.team_pass_comp[i] +
  201. right.team_pass_comp[idx];
  202. stats.team_pass_att[i] = left.team_pass_att[i] +
  203. right.team_pass_att[idx];
  204. stats.team_pass_yards[i] = left.team_pass_yards[i] +
  205. right.team_pass_yards[idx];
  206. stats.team_pass_firsts[i] = left.team_pass_firsts[i] +
  207. right.team_pass_firsts[idx];
  208. }
  209. len = left.team_att_down.length;
  210. for (var i=0; i<len; i++) {
  211. if (aligned == true) idx = i;
  212. else idx = (i+len/2)%len;
  213. stats.team_att_down[i] = left.team_att_down[i] +
  214. right.team_att_down[idx];
  215. stats.team_yards_down[i] = left.team_yards_down[i] +
  216. right.team_yards_down[idx];
  217. stats.team_success_down[i] = left.team_success_down[i] +
  218. right.team_success_down[idx];
  219. stats.team_firsts_down[i] = left.team_firsts_down[i] +
  220. right.team_firsts_down[idx];
  221. stats.team_lyards_down[i] = left.team_lyards_down[i] +
  222. right.team_lyards_down[idx];
  223. }
  224. len = left.team_pass_comp_down.length;
  225. for (var i=0; i<len; i++) {
  226. if (aligned == true) idx = i;
  227. else idx = (i+len/2)%len;
  228. stats.team_pass_comp_down[i] = left.team_pass_comp_down[i] +
  229. right.team_pass_comp_down[idx];
  230. stats.team_pass_att_down[i] = left.team_pass_att_down[i] +
  231. right.team_pass_att_down[idx];
  232. stats.team_pass_yards_down[i] = left.team_pass_yards_down[i] +
  233. right.team_pass_yards_down[idx];
  234. stats.team_pass_firsts_down[i] = left.team_pass_firsts_down[i] +
  235. right.team_pass_firsts_down[idx];
  236. stats.team_pass_pressure_down[i] = left.team_pass_pressure_down[i] +
  237. right.team_pass_pressure_down[idx];
  238. }
  239. for (var i=0; i<6; i++) {
  240. len = left.team_quarter_totals[i].length;
  241. for (var j=0; j<len; j++) {
  242. if (aligned == true) idx = j;
  243. else idx = (j+len/2)%len;
  244. stats.team_quarter_totals[i][j] = left.team_quarter_totals[i][j] +
  245. right.team_quarter_totals[i][idx];
  246. }
  247. }
  248. for (var i=0; i<4; i++) {
  249. len = left.distanceStats[i].length;
  250. for (var j=0; j<len; j++) {
  251. if (aligned == true) idx = j;
  252. else idx = (j+len/2)%len;
  253. stats.distanceStats[i][j] = left.distanceStats[i][j] +
  254. right.distanceStats[i][idx];
  255. }
  256. }
  257.  
  258. var x = left;
  259. if (x.team_id[0] == null) {
  260. x = right;
  261. }
  262. //console.log(left.team_id+" -- "+right.team_id+" -- "+x.team_id);
  263. //console.log(left.team_id+":"+left.team_name+" -- "+right.team_id+":"+right.team_name);
  264. stats.team_name[0] = x.team_name[0];
  265. stats.team_id[0] = x.team_id[0];
  266. stats.team_name[1] = x.team_name[1];
  267. stats.team_id[1] = x.team_id[1];
  268.  
  269. var i=0;
  270. if (aligned == false) {
  271. i++;
  272. }
  273. stats.driveList[0] = right.driveList[i];
  274. stats.driveList[1] = right.driveList[(i+1)%2];
  275. stats.playerRushingName = [[],[]];
  276. stats.playerRushingStats = [[],[]];
  277. combineRushing(stats,left,right,aligned);
  278.  
  279. stats.playerReceivingName = [[],[]];
  280. stats.playerReceivingStats = [[],[]];
  281. combineReceiving(stats,left,right,aligned);
  282.  
  283. stats.playerPassingName = [[],[]];
  284. stats.playerPassingStats = [[],[]];
  285. combinePassing(stats,left,right,aligned);
  286.  
  287. stats.playerDefensiveName = [[],[]];
  288. stats.playerDefensiveStats = [[],[]];
  289. combineDefensive(stats,left,right,aligned);
  290.  
  291. stats.playerKickingName = [[],[]];
  292. stats.playerKickingStats = [[],[]];
  293. combineKicking(stats,left,right,aligned);
  294.  
  295. stats.playerPuntingName = [[],[]];
  296. stats.playerPuntingStats = [[],[]];
  297. combinePunting(stats,left,right,aligned);
  298.  
  299. stats.playerKickReturnName = [[],[]];
  300. stats.playerKickReturnStats = [[],[]];
  301. combineKickReturn(stats,left,right,aligned);
  302.  
  303. stats.playerPuntReturnName = [[],[]];
  304. stats.playerPuntReturnStats = [[],[]];
  305. combinePuntReturn(stats,left,right,aligned);
  306.  
  307. stats.playerPenaltyName = [[],[]];
  308. stats.playerPenaltyStats = [[],[]];
  309. combinePenalty(stats,left,right,aligned);
  310.  
  311. //console.log("addition end");
  312. return stats;
  313. }
  314.  
  315. function combineRushing(total, left, right, align) {
  316. combineArrays(total.playerRushingName,total.playerRushingStats,
  317. left.playerRushingName, left.playerRushingStats,
  318. right.playerRushingName,right.playerRushingStats,
  319. align,total.playerRushingStatsCombine);
  320. }
  321.  
  322. function combineReceiving(total, left, right, align) {
  323. combineArrays(total.playerReceivingName,total.playerReceivingStats,
  324. left.playerReceivingName, left.playerReceivingStats,
  325. right.playerReceivingName,right.playerReceivingStats,
  326. align,total.playerReceivingStatsCombine);
  327. }
  328.  
  329. function combinePassing(total, left, right, align) {
  330. combineArrays(total.playerPassingName,total.playerPassingStats,
  331. left.playerPassingName, left.playerPassingStats,
  332. right.playerPassingName,right.playerPassingStats,
  333. align,total.playerPassingStatsCombine);
  334. }
  335.  
  336. function combineDefensive(total, left, right, align) {
  337. combineArrays(total.playerDefensiveRushName,total.playerDefensiveRushStats,
  338. left.playerDefensiveRushName, left.playerDefensiveRushStats,
  339. right.playerDefensiveRushName,right.playerDefensiveRushStats,
  340. align,total.playerDefensiveStatsCombine);
  341. combineArrays(total.playerDefensivePassName,total.playerDefensivePassStats,
  342. left.playerDefensivePassName, left.playerDefensivePassStats,
  343. right.playerDefensivePassName,right.playerDefensivePassStats,
  344. align,total.playerDefensiveStatsCombine);
  345. combineArrays(total.playerDefensiveSTName,total.playerDefensiveSTStats,
  346. left.playerDefensiveSTName, left.playerDefensiveSTStats,
  347. right.playerDefensiveSTName,right.playerDefensiveSTStats,
  348. align,total.playerDefensiveStatsCombine);
  349. //console.log(total.playerDefensivePassStats+"=="+left.playerDefensivePassStats+"++"+right.playerDefensivePassStats);
  350. }
  351.  
  352. function combineKicking(total, left, right, align) {
  353. combineArrays(total.playerKickingName,total.playerKickingStats,
  354. left.playerKickingName, left.playerKickingStats,
  355. right.playerKickingName,right.playerKickingStats,
  356. align,total.playerKickingStatsCombine);
  357. }
  358.  
  359. function combinePunting(total, left, right, align) {
  360. combineArrays(total.playerPuntingName,total.playerPuntingStats,
  361. left.playerPuntingName, left.playerPuntingStats,
  362. right.playerPuntingName,right.playerPuntingStats,
  363. align,total.playerPuntingStatsCombine);
  364. }
  365.  
  366. function combineKickReturn(total, left, right, align) {
  367. combineArrays(total.playerKickReturnName,total.playerKickReturnStats,
  368. left.playerKickReturnName, left.playerKickReturnStats,
  369. right.playerKickReturnName,right.playerKickReturnStats,
  370. align,total.playerKickReturnStatsCombine);
  371. }
  372.  
  373. function combinePuntReturn(total, left, right, align) {
  374. combineArrays(total.playerPuntReturnName,total.playerPuntReturnStats,
  375. left.playerPuntReturnName, left.playerPuntReturnStats,
  376. right.playerPuntReturnName,right.playerPuntReturnStats,
  377. align,total.playerPuntReturnStatsCombine);
  378. }
  379.  
  380. function combinePenalty(total, left, right, align) {
  381. combineArrays(total.playerPenaltyName,total.playerPenaltyStats,
  382. left.playerPenaltyName, left.playerPenaltyStats,
  383. right.playerPenaltyName,right.playerPenaltyStats,
  384. align, total.playerPenaltyStatsCombine);
  385. }
  386.  
  387. function combineArrays(totalName, totalStats, leftName, leftStats,
  388. rightName, rightStats, align, combine) {
  389. for (var t=0; t<leftName.length; t++) {
  390. for (var i=0; i<leftName[t].length; i++) {
  391. totalName[t].push(leftName[t][i]);
  392. totalStats[t].push(leftStats[t][i]);
  393. }
  394. }
  395.  
  396. for (var t=0; t<2; t++) {
  397. if (align == true) tidx = t;
  398. else tidx = (t+1)%2;
  399.  
  400. if (rightName[tidx] == null) continue;
  401. for (var i=0; i<rightName[tidx].length; i++) {
  402. var idx = totalName[t].indexOf(rightName[tidx][i]);
  403. if (idx == -1) {
  404. totalName[t].push(rightName[tidx][i]);
  405. totalStats[t].push(rightStats[tidx][i]);
  406. }
  407. else {
  408. for (var j=0; j<rightStats[tidx][i].length; j++) {
  409. if (combine[j] == true) {
  410. totalStats[t][idx][j] += rightStats[tidx][i][j];
  411. }
  412. else {
  413. totalStats[t][idx][j] = Math.max(totalStats[t][idx][j],
  414. rightStats[tidx][i][j]);
  415. }
  416. }
  417. }
  418. }
  419. try {
  420. if (showEverything == false) return;
  421. }
  422. catch (err) {
  423. }
  424. }
  425. }