ACADEMIC INTEGRATION COMPETITIVE EXCELLENCE

IN DIVISION I ATHLETICS

 
30 - Kyle Casey
Kyle Casey
Height: 6-7
Weight: 225
Year: Senior
Hometown: Medway, Mass.
High School: Brimmer & May
Position: Forward
Major: Sociology
House Affiliation: Currier

Career Stats

Career Highs
Points:
 27, twice
FG made: 10 vs. Saint Joseph's (12/31/11)
FG attempts: 16, twice
3FG made: 3, 3 times
3FG attempts: 7 at Appalachian State (3/17/10)
FT made: 13 at Santa Clara (1/4/10)
FT attempts: 16 at Santa Calra (1/4/10)
Rebounds: 15 at George Washington (1/15/11)
Assists: 4, twice
Blocks: 4, twice
Steals: 4 at Columbia (3/2/12)

Career Highlights:
Four-time All-Ivy League (2013-14 honorable mention, 2011-12 first team, 2010-11 second team, 2009-10 honorable mention) ... 2009-10 Ivy League Rookie of the Year ... Has earned eight Ivy League weekly awards (4 POW, 4 ROW) ... Ranks 13th in Harvard history with 1,242 points ... Ranks 10th in Harvard history with 654 rebounds ... Ranks third in Harvard history with 127 blocks.

Senior (2013-14):
Named All-Ivy League honorable mention ... Grabbed seven rebounds against Holy Cross (Nov. 10) ... Scored 11 points, pulled down seven rebounds and notched three steals against MIT (Nov. 12) ... Contributed 14 points on 5-of-9 shooting against Howard (Nov. 15) ... Recorded 14 points, five rebounds and three assists against Bryant (Nov. 20) ... Netted 11 pionts and added two assists at Colorado (Nov. 24) ... Turned in 10 points, eight rebounds and two assists versus Denver (Nov. 28) ... Scored eight points to go over 1,000 for his career against Green Bay (Nov. 29) ... Chipped in six rebounds and four assists versus TCU (Nov. 30) ... Tallied 17 points on 6-of-11 shooting at Northeastern (Dec. 4) ... Registered a double-double with 19 points on 7-of-13 shooting and 12 rebounds at Boston University (Dec. 7) ... Contributed 11 points, four rebounds and two blocks versus Vermont (Dec. 21) ... Totaled 17 points on 7-of-11 shooting and came down with nine rebounds at Fordham (Dec. 28) ... Registered a double-double with 11 points and 10 rebounds against Boston College (Jan. 1) while also contributing four assists and three blocks ... Notched 14 points, six rebounds and two assists at Rice (Jan. 4) ... Notched 14 points, six rebounds and two assists at Rice (Jan. 4) ... Chipped in 10 points and nine boards at UConn (Jan. 8) ... Grabbed six rebounds at Florida Atlantic (Jan. 21) ... Recorded 11 points, five rebounds and three blocks versus Princeton (Jan. 31) ... Contributed a 15-point, 11-rebound effort versus Penn (Feb. 1) while shooting 5-of-7 from the field and grabbing three steals ... Turned in nine rebounds and three assists against Brown (Feb. 7) ... Blocked four shots while also notching eight points and six rebounds against Yale (Feb. 8) ... Tallied eight points at Columbia (Feb. 14) ... Registered seven points and three boards at Cornell (Feb. 15). ... Scored 12 points, grabbed three rebounds and blocked two shots at Penn (Feb. 21) ... Chipped in seven points and three boards at Princeton (Feb. 22) ... Scored 10 points and grabbed four rebounds against Cornell (Feb. 28) ... Totaled 10 points and four boards against Columbia (March 1) ... Turned in six points, five rebounds and three blocks at Yale (March 7) ... Went for 16 points, 10 rebounds and four assists at Brown (March 8) ... Turned in five points and three rebounds vs. Cincinnati (March 20) ... Grabbed five rebounds and scored three points versus Michigan State (March 22).

Junior (2011-12):
Recipient of Harvard's Raymond Lavietes Most Valuable Player Award ... Named to College Sports Madness Preseason All-Ivy League second team ... Tabbed to Rivals.com Preseason All-Ivy League second team ... Selected to CBS Sports Preseason All-Ivy League first team and named conference Preseason Player of the Year ... Named as one of College Basketball’s Top 100 Players by CBS Sports ... Selected to Lindy’s Preseason All-Ivy League second team ... Named to the USBWA All-District Team ... Honored on All-Ivy League first team ... Tabbed to College Sports Madness All-Ivy Third Team ... Selected to NABC All-District Second Team ... Ranks fifth in program history with 90 career blocks ... Started all 31 games during junior season ... Led the Crimson with 11.4 points per game and is second with 5.5 rebounds per contest ... Averaged a team-high 11.7 points and adding 5.4 boards per game in Ivy action ... Reached double figures in scoring in 18 games ... Recorded one double-double on the season ... Blocked three shots and tallied 11 points against MIT (Nov. 11) ... Led Harvard with 16 points on 6-of-10 shooting, including 2-of-2 from long range, at Holy Cross (Nov. 15) ... Made six baskets, scoring 14 points, and came down with six rebounds at Loyola Marymount (Nov. 19) ... Netted 11 points and grabbed seven boards in only 18 minutes against Utah at Battle 4 Atlantis (Nov. 24) ... Led Harvard with 15 points and nine rebounds in win over Central Florida at Battle 4 Atlantis championship (Nov. 26) ... Scored eight points in only 10 minutes against Seattle (Dec. 4) ... Hit four baskets, including two from long distance, and led Harvard with 12 points at No. 9 Connecticut (Dec. 8) ... Paced the Crimson with 20 points and came down with nine boards at Boston University (Dec. 10) ... Named Ivy League Co-Player of the Week Dec. 12 ... Came down with seven boards in win at Boston College (Dec. 29) ... Made a career-high 10 field goals and earned first double-double of the year, scoring a season-high 26 points and grabbing 10 boards against Saint Joseph’s (Dec. 31) ... Sank nine baskets for 20 points, while coming down with eight rebounds at Brown (Jan. 28) ... Went 6-of-7 from the line and sank three baskets for 13 points against Cornell (Feb. 3) ... Tallied 17 points, sinking seven shots, at Penn (Feb. 10) ... Sank five baskets and amassed 12 points and eight boards at Princeton (Feb. 11) ... Connected on seven buckets, scoring 20 points and collecting eight boards against Princeton (Feb. 24) ... Added 12 points and six rebounds against Penn (Feb. 25) ... Sank seven baskets, including two triples, for 19 points and made four steals at Columbia (March 2) ... Tallied 11 points in the regular-season finale at Cornell (March 3) ... Tabbed Ivy League Co-Player of the Week March 5 ... Went 6-of-6 from the charity stripe and had 13 points against Vanderbilt in second round of NCAA tournament (March 15).

Sophomore (2010-11):
All-Ivy League second team ... Honored on preseason All-Ivy League team by Athlon Sports, Lindy’s and The Sporting News ... Named by Blue Ribbon College Basketball Yearbook to preseason All-Ivy team ... Tabbed to Rivals.com preseason All-Ivy League second team ... Missed first three games because of foot injury ... Played in 26 games, starting 20 ... Recorded two double-doubles on the season ... Averaged 10.7 ppg and 6.0 rpg overall with 13.4 ppg and 6.4 rpg during Ivy contests ... Reached double figures in scoring 16 times, including eight straight from Jan. 28-Feb. 19 ... Ranked second on the Crimson with 28 blocks ... Finished with 13 points, shooting 3-of-3 from beyond the arc, and grabbed six rebounds against Fordham (Dec. 1) ... Collected six boards, including four offensive and scored eight points at No. 4 Connecticut (Dec. 22) ... Made 5-of-9 shots, scored 11 points and grabbed five rebounds against Monmouth (Dec. 29) ... Scored a season-best 15 points on 6-of-10 shooting, came down with six rebounds, blocked two shots and made two steals against MIT (Dec. 31) ... Grabbed nine rebounds and tallied 13 points in Ivy opener at Dartmouth (Jan. 8) ... Came down with a career-high 15 rebounds and scored 10 points for a double-double at George Washington (Jan. 15) ... Earned his second double-double, tallying 17 points and grabbing 13 boards against Columbia (Jan. 28) ... Was one rebound short of a double-double, scoring 16 and collecting nine rebounds in win over Cornell (Jan. 29) ... Tabbed Ivy Co-Player of the Week Jan. 31 ... Tallied 11 points, swatted away three shots and made two steals at Princeton (Feb. 4) ... Made 6-of-9 shots and was 6-of-8 from the foul line for 18 points and blocked a shot with one second remaining in double overtime to help the Crimson to an 83-82 win at Penn (Feb. 5) ... Connected on 8-of-13 shots for 18 points and made three steals against Yale (Feb. 11) ... Sank 8-of-11 baskets for a season-high 19 points and blocked three shots in comeback victory over Brown (Feb. 12) ... Notched 11 points and corralled seven rebounds in victory at Cornell (Feb. 18) .. Connected on all six foul shots, scoring 10 points and pulled down nine rebounds at Columbia (Feb. 19) ... Shot 5-of-7 from the floor and was 3-of-3 from the foul line for 13 points and grabbed eight boards at Yale (Feb. 26) ... Netted a team-high and season-best 24 points on 9-of-13 shooting in Harvard’s Ivy clinching win over Princeton (March 5) ... Led Harvard with 13 points and seven rebounds at Oklahoma State in NIT (March 15).

Freshman (2009-10):
Co-recipient of Hamilton Fish '10 Award, presented to Harvard's Most Improved Player ... Named by Blue Ribbon College Basketball Yearbook as the Ivy League’s Preseason Newcomer of the Year ... Named by the coaches as the Ivy League Rookie of the Year following the regular season ... Sporting News Freshman of the Year ... Freshman of the Year by RushTheCourt ... Sixth Man of the Year by RushTheCourt ... All-Freshman Team by RushTheCourt ... Rookie of the Year and Second Team All-Ivy League selection by Basketball-U.com ... Four-time Ivy League Rookie of the Week by the Ivy League and one-time Player of the Week ... Played in all 29 games, starting 10 ... Ranked second on the Crimson with 10.4 points per game, while leading the team with 5.1 boards per contest ... Scored 12 points (4-6 FG) in collegiate debut at Holy Cross (11/13) ... Grabbed seven rebounds against Bryant (11/20) ... Had six points, four rebounds and two blocks in 15 minutes against Rice (12/2) ... Had a big game against George Washington (12/30) with 15 points coming on 11-of-13 free throws and five rebounds in 28 minutes off the bench ... Scored 19 points (7-10 FG) with six rebounds and three assists in 23 minutes at Seattle (1/02) ... Scored 27 points in 26 minutes, making all six shots and 13 free throws with eight rebounds at Santa Clara (1/04) ... Ivy league Rookie of the Week on Jan. 5 and 25 ... Had 19 points and 10 rebounds at Dartmouth on 1/23, hitting a 3-pointer at the buzzer in the first half ... Named Ivy Rookie of the Week Feb. 8 ... Made his first start against Princeton on 2/05 ... Had 10 points and six rebounds against Penn (2/06) ... Ivy league Player and Rookie of the Week on Feb. 15, becoming the first rookie to win top player honors since 2002 ... Had 20 points, hitting his first three 3-pointers, and seven rebounds in 41 minutes in a win at Yale (2/12) ... Was 8-9 from the floor and the FT line for 27 points at Brown on 2/13 ... Was 10-of-11 from the FT line against Cornell (2/19) ... Had 10 points and seven boards in 19 minutes against Columbia (2/20) ... Had 13 points in 14 minutes against Yale (2/27) ... Hit two free throws with 11.6 seconds left at Penn in a 67-66 win (3/5) ... Grabbed five rebounds, handed out four assists and scored five points at Princeton (3/6) ... Netted 14 points against Appalachian State at CollegeInsider.com Tournament (3/17).

Background:
Son of Sharon Casey ... Three-year starter at forward for Brimmer and May School in nearby Chestnut Hill, Mass. ... Averaged five blocks per game as a senior along with nearly 20 points and 12 rebounds per game ... Also earned a basketball letter while at Medway High School as a freshman ... Three-time captain at B&M ... 2008 Reebok All-America selection ... Three-time Greater Boston first team pick ... Three-time New England Prep School Athletic Conference selection ... Three-time team Most Valuable Player award ... Played for a conference championship team as a sophomore ... Earned MVP honors at the 2009 St. Sebastian's Tournament ... McDonald's All-America nominee ... Scholar-Athlete honoree ... Mother, Sharon, ran track & field at Texas Southern and in high school alongside Jackie-Joyner-Kersee ... Older brother, Randy, has played basketball at nearby Wheaton College and Dean College ... Enjoys poetry, singing and spending time with friends.

Kyle Casey with Laura Johnson, Allston Burr Resident Dean of Currier House, in the courtyard outside of Currier.

Recent Games
Feb 28 Cornell W, 72-47
Mar 1 Columbia W, 80-47
Mar 7 at Yale W, 70-58
Mar 8 at Brown W, 98-93
Mar 20 vs. Cincinnati W, 61-57
Mar 22 vs. Michigan State L, 80-73
Statistics category Overall Conf
Games 32 14
Games started 32 14
Minutes 703 301
Minutes per game 22.0 21.5
FG 117-254 48-89
FG Pct 46.1 53.9
3PT 7-26 4-11
3PT Pct 26.9 36.4
FT 68-100 23-35
FT Pct 68.0 65.7
Off rebounds 41 11
Def rebounds 138 57
Total rebounds 179 68
Rebounds per game 5.6 4.9
Personal fouls 108 47
Disqualifications 6 3
Assists 42 13
Turnovers 46 18
Assist to turnover ratio 0.9 0.7
Steals 22 10
Blocks 37 18
Points 309 123
Points per game 9.7 8.8
Points per 40 min 17.6 16.3
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 10 vs. Holy Cross W, 82-72 1 16 2-7 28.6 0-0 - 0-0 - 4
Nov 12 MIT W, 79-37 1 15 5-11 45.5 0-1 0.0 1-3 33.3 11
Nov 15 Howard W, 76-44 1 13 5-9 55.6 0-1 0.0 4-6 66.7 14
Nov 20 Bryant W, 86-68 1 23 6-10 60.0 0-1 0.0 2-3 66.7 14
Nov 24 at Colorado L, 70-62 1 19 4-13 30.8 1-2 50.0 2-2 100.0 11
Nov 28 vs. Denver W, 68-60 1 26 4-12 33.3 0-0 - 2-4 50.0 10
Nov 29 vs. Wis.-Green Bay W, 76-64 1 18 2-7 28.6 0-0 - 4-4 100.0 8
Nov 30 vs. TCU W, 71-50 1 24 3-8 37.5 0-0 - 0-0 - 6
Dec 4 at Northeastern W, 72-64 1 27 6-11 54.5 0-0 - 5-6 83.3 17
Dec 7 at Boston University W, 79-68 1 36 7-13 53.8 1-2 50.0 4-4 100.0 19
Dec 21 Vermont W, 74-68 1 26 5-11 45.5 1-2 50.0 0-0 - 11
Dec 28 at Fordham W, 94-86 1 23 7-11 63.6 0-3 0.0 3-6 50.0 17
Jan 1 Boston College W, 73-58 1 28 1-7 14.3 0-0 - 9-10 90.0 11
Jan 4 at Rice W, 69-54 1 30 4-8 50.0 0-0 - 6-10 60.0 14
Jan 8 at Connecticut L, 61-56 1 29 5-15 33.3 0-2 0.0 0-0 - 10
Jan 11 Dartmouth W, 61-45 1 24 2-5 40.0 0-0 - 2-4 50.0 6
Jan 21 at Florida Atlantic L, 68-53 1 16 0-3 0.0 0-1 0.0 1-2 50.0 1
Jan 26 at Dartmouth W, 80-50 1 12 1-1 100.0 0-0 - 0-0 - 2
Jan 31 Princeton W, 82-76 1 24 4-7 57.1 0-0 - 3-4 75.0 11
Feb 1 Penn W, 80-50 1 26 5-7 71.4 2-2 100.0 3-4 75.0 15
Feb 7 Brown W, 52-45 1 26 1-4 25.0 0-1 0.0 3-5 60.0 5
Feb 8 Yale L, 74-67 1 24 3-6 50.0 0-1 0.0 2-3 66.7 8
Feb 14 at Columbia W, 88-84 1 12 4-6 66.7 0-1 0.0 0-0 - 8
Feb 15 at Cornell W, 67-44 1 20 3-5 60.0 0-0 - 1-3 33.3 7
Feb 21 at Penn W, 83-63 1 19 4-7 57.1 0-1 0.0 4-5 80.0 12
Feb 22 at Princeton W, 59-47 1 17 3-9 33.3 1-2 50.0 0-0 - 7
Feb 28 Cornell W, 72-47 1 23 3-6 50.0 1-1 100.0 3-3 100.0 10
Mar 1 Columbia W, 80-47 1 24 4-7 57.1 0-0 - 2-2 100.0 10
Mar 7 at Yale W, 70-58 1 26 3-5 60.0 0-1 0.0 0-2 0.0 6
Mar 8 at Brown W, 98-93 1 24 8-14 57.1 0-1 0.0 0-0 - 16
Mar 20 vs. Cincinnati W, 61-57 1 20 2-4 50.0 0-0 - 1-2 50.0 5
Mar 22 vs. Michigan State L, 80-73 1 13 1-5 20.0 0-0 - 1-3 33.3 3
Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 10 vs. Holy Cross W, 82-72 1 16 2 5 7 1 0 - 0 1 5 1
Nov 12 MIT W, 79-37 1 15 2 5 7 2 0 - 3 1 2 0
Nov 15 Howard W, 76-44 1 13 2 1 3 1 0 - 1 1 4 0
Nov 20 Bryant W, 86-68 1 23 1 4 5 3 1 3.0 1 2 3 0
Nov 24 at Colorado L, 70-62 1 19 1 2 3 2 1 2.0 1 1 4 0
Nov 28 vs. Denver W, 68-60 1 26 3 5 8 2 1 2.0 1 0 4 0
Nov 29 vs. Wis.-Green Bay W, 76-64 1 18 3 2 5 1 2 0.5 1 1 3 0
Nov 30 vs. TCU W, 71-50 1 24 0 6 6 4 1 4.0 0 0 2 0
Dec 4 at Northeastern W, 72-64 1 27 0 3 3 1 2 0.5 1 1 5 1
Dec 7 at Boston University W, 79-68 1 36 2 10 12 1 2 0.5 1 1 3 0
Dec 21 Vermont W, 74-68 1 26 1 3 4 2 2 1.0 0 2 4 0
Dec 28 at Fordham W, 94-86 1 23 4 5 9 1 3 0.3 0 0 3 0
Jan 1 Boston College W, 73-58 1 28 2 8 10 4 2 2.0 0 3 3 0
Jan 4 at Rice W, 69-54 1 30 1 5 6 2 3 0.7 1 1 4 0
Jan 8 at Connecticut L, 61-56 1 29 0 9 9 0 2 0.0 1 1 2 0
Jan 11 Dartmouth W, 61-45 1 24 0 1 1 2 2 1.0 1 1 4 0
Jan 21 at Florida Atlantic L, 68-53 1 16 3 3 6 1 2 0.5 0 1 5 1
Jan 26 at Dartmouth W, 80-50 1 12 1 2 3 0 4 0.0 0 1 4 0
Jan 31 Princeton W, 82-76 1 24 1 4 5 1 1 1.0 1 3 5 1
Feb 1 Penn W, 80-50 1 26 0 11 11 0 1 0.0 3 0 3 0
Feb 7 Brown W, 52-45 1 26 2 7 9 3 0 - 0 1 3 -
Feb 8 Yale L, 74-67 1 24 2 4 6 0 2 0.0 1 4 5 1
Feb 14 at Columbia W, 88-84 1 12 0 1 1 0 1 0.0 0 1 5 1
Feb 15 at Cornell W, 67-44 1 20 1 2 3 1 1 1.0 0 0 0 0
Feb 21 at Penn W, 83-63 1 19 1 2 3 0 0 - 1 2 2 0
Feb 22 at Princeton W, 59-47 1 17 0 3 3 1 0 - 1 0 4 0
Feb 28 Cornell W, 72-47 1 23 0 4 4 0 1 0.0 1 1 2 0
Mar 1 Columbia W, 80-47 1 24 1 3 4 1 0 - 1 0 3 0
Mar 7 at Yale W, 70-58 1 26 0 5 5 1 3 0.3 0 3 3 0
Mar 8 at Brown W, 98-93 1 24 2 8 10 3 2 1.5 0 1 4 -
Mar 20 vs. Cincinnati W, 61-57 1 20 2 1 3 1 0 - 0 1 3 0
Mar 22 vs. Michigan State L, 80-73 1 13 1 4 5 0 4 0.0 0 1 2 0
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2009-10 13 7 23.9 3.2-6.5 50.0 0.7-1.5 45.0 3.4-3.8 88.0 10.5
2010-11 26 20 26.6 4.0-8.0 50.5 0.1-0.9 13.0 2.5-3.2 78.6 10.7
2011-12 31 31 24.4 4.1-7.9 51.2 0.6-1.6 35.3 2.7-3.7 72.2 11.4
2013-14 32 32 22.0 3.7-7.9 46.1 0.2-0.8 26.9 2.1-3.1 68.0 9.7
Total 102 90 24.1 3.8-7.8 49.2 0.4-1.2 30.8 2.6-3.4 74.8 10.6
  gp gs min fg pct 3pt pct ft pct pts
2009-10 13 7 311 42-84 50.0 9-20 45.0 44-50 88.0 137
2010-11 26 20 692 105-208 50.5 3-23 13.0 66-84 78.6 279
2011-12 31 31 755 126-246 51.2 18-51 35.3 83-115 72.2 353
2013-14 32 32 703 117-254 46.1 7-26 26.9 68-100 68.0 309
Total 102 90 2461 390-792 49.2 37-120 30.8 261-349 74.8 1078
  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
2009-10 13 7 23.9 1.2 4.0 5.2 3.7 0.2 1.2 1.3 0.9 0.4 1.1
2010-11 26 20 26.6 1.5 4.5 6.0 3.2 0.2 1.0 1.7 0.6 0.8 1.1
2011-12 31 31 24.4 1.1 4.4 5.5 3.2 0.1 0.8 1.8 0.4 0.8 1.1
2013-14 32 32 22.0 1.3 4.3 5.6 3.4 0.2 1.3 1.4 0.9 0.7 1.2
Total 102 90 24.1 1.3 4.4 5.6 3.3 0.1 1.1 1.6 0.7 0.7 1.1
  gp gs min off def reb pf dq ast to a/to stl blk
2009-10 13 7 311 16 52 68 48 2 15 17 0.9 5 14
2010-11 26 20 692 38 117 155 83 4 26 45 0.6 21 28
2011-12 31 31 755 34 137 171 99 3 25 57 0.4 25 35
2013-14 32 32 703 41 138 179 108 6 42 46 0.9 22 37
Total 102 90 2461 129 444 573 338 15 108 165 0.7 73 114
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Total 32 32 22.0 3.7-7.9 46.1 0.2-0.8 26.9 2.1-3.1 68.0 9.7
Conference 14 14 21.5 3.4-6.4 53.9 0.3-0.8 36.4 1.6-2.5 65.7 8.8
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -

Home 12 12 23.0 3.7-7.5 48.9 0.3-0.8 40.0 2.8-3.9 72.3 10.5
Away 14 14 22.1 4.2-8.6 48.8 0.2-1.1 18.8 1.9-2.9 65.0 10.5
Neutral 6 6 19.5 2.3-7.2 32.6 0.0-0.0 - 1.3-2.2 61.5 6.0

Wins 27 27 22.3 3.9-7.9 49.1 0.2-0.7 30.0 2.3-3.3 68.9 10.2
Losses 5 5 20.2 2.6-8.4 31.0 0.2-1.2 16.7 1.2-2.0 60.0 6.6

November 8 8 19.2 3.9-9.6 40.3 0.1-0.6 20.0 1.9-2.8 68.2 9.8
December 4 4 28.0 6.2-11.5 54.3 0.5-1.8 28.6 3.0-4.0 75.0 16.0
January 7 7 23.3 2.4-6.6 37.0 0.0-0.4 0.0 3.0-4.3 70.0 7.9
February 8 8 20.9 3.2-6.2 52.0 0.5-1.1 44.4 2.0-2.9 69.6 9.0
March 5 5 21.4 3.6-7.0 51.4 0.0-0.4 0.0 0.8-1.8 44.4 8.0
  gp gs min fg pct 3pt pct ft pct pts
Total 32 32 703 117-254 46.1 7-26 26.9 68-100 68.0 309
There was a problem with a Velocity script
Page/bio-template
ErrorVM #split: too many arguments to macro. Wanted 3 got 4 at bio-template[line 239, column 1]
Page source:
1: #if ($browser.getIphone() || $browser.getMobile())
2: 	#set ($isMobile = true)
3: #else
4: 	#set ($isMobile = false)
5: #end
6: 
7: ## PICK UP OPTIONS
8: $website.include("options")
9: #set ($options = $request.getAttribute("options"))
10: #set ($locale = "en_us")
11: #set ($locale = $options.get("locale"))
12: 
13: ## STATS DATA
14: #if ($request.getParameter("stats"))
15: 
16: #set ($showCareer = $wiki.valid() && $seasons)
17: #if ("yes" == $options.get("stats_show_career") && $seasons)
18:   #set ($showCareer = "yes")
19: #end
20: 	
21: ## FETCH THE BIO URL FROM THE PARAMETER
22: #set ($bioURL = $request.getParameter("biourl"))
23: 
24: ## VIEW IS AVAILABLE PROVIDED WHEN REACHED HERE
25: #set ($view = $request.getParameter("view"))
26: 
27: #set ($pos = "")
28: #set ($pos = $attributes.get("position"))
29: #set ($posVec = $pos.split("/"))
30: #set ($pos = $posVec[0])
31: #set ($pos = $pos.toLowerCase())
32: #set ($statPos = $positions.get($pos))
33: 
34: #set ($playerId = $attributes.get("playerId"))
35: #set ($stats = $splits.overall)
36: 
37: #if ($locale == "en_us")
38: #set ($defLabel = 'Defense')
39: #elseif ($locale == "en_gb") 
40: #set ($defLabel = 'Defence')
41: #end
42: 
43: #macro (gamelogData $p)
44: 
45: #set ($p = $positions.get($p))
46: #set ($gamelogs = $gamelogs.get($p))
47: 
48: ## SECONDARY TAB CONTENT FOR ONLY FOOTBALL,  BASEBALL, SOFTBALL AND BASKETBALL
49: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
50:   #set ($class = "sub-tab-content")
51:   #if ($activePos == $p)
52:     #set ($class = "sub-tab-content active")
53:   #end
54:   #if ($isMobile)
55: 	<div class="mobile-bios-subtab-panel mobile-stats-panel-wrapper #if ($activePos == $p) active #end">
56:   #else
57: 	<div class="$class">
58:   #end
59: #end
60: 	
61: #if (! $isMobile)
62: 	<div class="stats-fullbox clearfix">
63: #else
64: 	<div class="mobile-stats-panel-container">
65: #end
66: <table>
67:   <tr>
68:     <th #if ($isMobile) width="10%" #end>Date</th>
69:     <th #if ($isMobile) class="mobile-stats-fixed-column" #*width="20%"*# #end>Opponent</th>
70:     <th>Score</th>
71:     #foreach ($gamelog in $gamelogs)
72:       <th>$gamelog</th>
73:     #end
74:   </tr>
75: 
76: #set ($counter = 0)
77: #foreach ($event in $events)
78:  #set ($counter = $counter + 1)
79:  #if ($counter % 2 == 0)
80:   #set ($row = "even")
81:  #else
82:   #set ($row = "odd")
83:  #end
84:   <tr class="${row}">
85:     <td>$formatter.formatDate($event.event.date, "MMM d")</td>
86:     <td #if ($isMobile) class="mobile-stats-fixed-column" #end>
87:     #if ($event.event.neutralSite.length() > 0) vs.
88:     #elseif (!$event.event.home) at
89:     #else ## nothing for a home game
90:     #end
91:     $event.event.opponent.name</td>
92:     <td class="align-center">
93:     #if ($event.event.statusCode >= 0)
94:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
95:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
96:       #else
97:       ${event.event.APResult}
98:       #end
99:     #else &nbsp; #end
100:     </td>
101:     #foreach ($gamelog in $gamelogs.keySet())
102:       #set ($value = "-")
103:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
104:       <td class="align-center">
105:       #if ($value.length() > 0)$value#else - #end
106:       </td>
107:     #end
108:   </tr>
109: #end
110: </table>
111: </div>
112: 
113: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
114:   </div>
115: #end
116: 
117: #end ## macro gamelogData
118: 
119: #macro (split $statPosBriefs $label $stats $class)
120:   <tr class="$!{class}">
121:     <td #if ($isMobile) class="mobile-stats-fixed-column" #end>${label}</td>
122:     #foreach ($brief in $statPosBriefs.keySet())
123:       #set ($value = "-")
124:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
125:       <td class="align-center">#if ($value.length() > 0) $value #else - #end</td>
126:     #end
127:   </tr>
128: #end
129: 
130: #set ($colspan = $statPosBriefs.size() + 1)
131: #macro (printSplitsHr)
132: 	#if ($isMobile)
133: 		<tr>
134: 			<td class="mobile-stats-fixed-column">&nbsp;</td>
135: 			<td colspan="$statPosBriefs.size()">&nbsp;</td>
136: 		</tr>
137: 	#else
138: 		<tr><td colspan="${colspan}"><hr /></td></tr>
139: 	#end
140: #end
141: 
142: 
143: 
144: 
145: 
146: #macro (careerData $p)
147: 
148: #set ($p = $positions.get($p))
149: #set ($statPosBriefs = $briefs.get($p))
150: 
151: ## SECONDARY TAB CONTENT FOR ONLY FOOTBALL,  BASEBALL, SOFTBALL AND BASKETBALL
152: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
153:   #set ($class = "sub-tab-content")
154:   #if ($activePos == $p)
155:     #set ($class = "sub-tab-content active")
156:   #end
157:   #if ($isMobile)
158: 	<div class="mobile-bios-subtab-panel mobile-stats-panel-wrapper #if ($activePos == $p) active #end">
159:   #else
160: 	<div class="$class">
161:   #end
162: #end
163: 	
164: #if (! $isMobile) 
165: 	<div class="stats-fullbox clearfix">
166: #else
167: 	<div class="mobile-stats-panel-container">
168: #end
169: <table>
170:   <tr>
171:     <th #if ($isMobile) class="mobile-stats-fixed-column" #end>&nbsp;</th>
172:     #foreach ($brief in $statPosBriefs)
173:       <th>$brief</th>
174:     #end
175:   </tr>
176: 
177: #set ($careerTotals = $request.getAttribute("careerTotals"))
178: #set ($careerMap = $request.getAttribute("careerMap"))
179: 
180: #foreach ($season in $seasons)
181:   ## Check if we did not get stats for this season
182:   #if ($careerMap.get($season.seasonName))
183:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName], '')
184:   #elseif ($wiki.valid())
185:     <tr><td class="${mobileNS}fixed-column">${season.seasonName}</td><td colspan="${briefs.size()}" align="center">We could not find the "players" page in the ${season.seasonName} section.</td></tr>
186:   #end
187: 
188: #end
189: 
190: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall, '')
191: 
192: 
193: </table>
194: 
195: </div> ## stats-fullbox
196: 
197: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
198:   </div>
199: #end
200: 
201: #end ## macro splitsData
202: 
203: 
204: 
205: 
206: 
207: 
208: 
209: 
210: #macro (splitsData $p)
211: 
212: #set ($p = $positions.get($p))
213: #set ($statPosBriefs = $briefs.get($p))
214: 
215: ## SECONDARY TAB CONTENT FOR ONLY FOOTBALL,  BASEBALL AND BASKETBALL
216: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 2)
217:   #set ($class = "sub-tab-content")
218:   #if ($activePos == $p)
219:     #set ($class = "sub-tab-content active")
220:   #end
221:   #if ($isMobile)
222: 	<div class="mobile-bios-subtab-panel mobile-stats-panel-wrapper #if ($activePos == $p) active #end">
223:   #else
224: 	<div class="$class">
225:   #end
226: #end
227: 	
228: #if (! $isMobile) 
229: 	<div class="stats-fullbox clearfix">
230: #else
231: 	<div class="mobile-stats-panel-container">
232: #end
233: <table>
234:   <tr>
235:     <th #if ($isMobile) class="mobile-stats-fixed-column" #end>&nbsp;</th>
236:     #foreach ($brief in $statPosBriefs)
237:       <th>$brief</th>
238:     #end
239:   </tr>
240: 
241: #split($statPosBriefs, "Total", $splits.overall, "odd")
242: #split($statPosBriefs, "Conference", $splits.conference, "even")
243: #split($statPosBriefs, "Exhibition", $splits.exhibition, "odd")
244: 
245: #printSplitsHr()
246: 
247: #split($statPosBriefs, "Home", $splits.home, "odd")
248: #split($statPosBriefs, "Away", $splits.away, "even")
249: #split($statPosBriefs, "Neutral", $splits.neutral, "odd")
250: 
251: #printSplitsHr()
252: 
253: #split($statPosBriefs, "Wins", $splits.inWins, "odd")
254: #split($statPosBriefs, "Losses", $splits.inLosses, "even")
255: #if ($sport.enumCode == 5) ## Ice hockey
256:   #split($statPosBriefs, "Ties", $splits.inTies, "odd")
257: #end
258: 
259: #printSplitsHr()
260: 
261: ## Going to need to replace this with sound logic that does not use the sport to determine dates
262: #if ($sport.enumCode == 5) ## Ice hockey
263:  #split($statPosBriefs, "September", $splits.september, "odd")
264:  #split($statPosBriefs, "October", $splits.october, "even")
265:  #split($statPosBriefs, "November", $splits.november, "odd")
266:  #split($statPosBriefs, "December", $splits.december, "even")
267:  #split($statPosBriefs, "January", $splits.january, "odd")
268:  #split($statPosBriefs, "February", $splits.february, "even")
269:  #split($statPosBriefs, "March", $splits.march, "odd")
270:  #split($statPosBriefs, "April", $splits.april, "even")
271: #elseif ($sport.enumCode == 2) ## Basketball
272:  #split($statPosBriefs, "November", $splits.november, "odd")
273:  #split($statPosBriefs, "December", $splits.december, "even")
274:  #split($statPosBriefs, "January", $splits.january, "odd")
275:  #split($statPosBriefs, "February", $splits.february, "even")
276:  #split($statPosBriefs, "March", $splits.march, "odd")
277: #elseif ($sport.enumCode == 3 or $sport.enumCode == 9) ## Soccer or field hockey
278:  #split($statPosBriefs, "September", $splits.september, "odd")
279:  #split($statPosBriefs, "October", $splits.october, "even")
280:  #split($statPosBriefs, "November", $splits.november, "odd")
281:  #split($statPosBriefs, "December", $splits.december, "even")
282: #elseif ($sport.enumCode == 0) ## Football
283:  #split($statPosBriefs, "August", $splits.august, "odd")
284:  #split($statPosBriefs, "September", $splits.september, "even")
285:  #split($statPosBriefs, "October", $splits.october, "odd")
286:  #split($statPosBriefs, "November", $splits.november, "even")
287:  #split($statPosBriefs, "December", $splits.december, "odd")
288: #elseif ($sport.enumCode == 6 or $sport.enumCode == 10) ## Men's or women's lacrosse
289:  #split($statPosBriefs, "January", $splits.january, "odd")
290:  #split($statPosBriefs, "February", $splits.february, "even")
291:  #split($statPosBriefs, "March", $splits.march, "odd")
292:  #split($statPosBriefs, "April", $splits.april, "even")
293:  #split($statPosBriefs, "May", $splits.may, "odd")
294: #end
295: </table>
296: 
297: </div> ## stats-fullbox
298: 
299: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
300:   </div>
301: #end
302: 
303: #end ## macro splitsData
304: 
305: #macro (printRecentGames)
306: <table>
307: <tr><th colspan="3">Recent Games</th></tr>
308: #set ($eventEnd = -1)
309: #foreach ($event in $events)
310:   #if ($event.event.result.resolved)
311:     #set ($eventEnd = $velocityCount)
312:   #end
313: #end
314: #set ($eventStart = $eventEnd - 5)
315: #if ($eventStart < 0) #set ($eventStart = 0) #end
316: 
317: #set ($counter = 0)
318: #foreach ($event in $events)
319: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
320: 
321:  #set ($counter = $counter + 1)
322:  #if ($counter % 2 == 0)
323:   #set ($row = "even")
324:  #else
325:   #set ($row = "odd")
326:  #end
327: 
328:   <tr class="${row}">
329:     <td>$formatter.formatDate($event.event.date, "MMM d")</td>
330:     <td>
331:     #if ($event.event.neutralSite.length() > 0) vs.
332:     #elseif (!$event.event.home) at
333:     #else ## nothing for a home game
334:     #end
335:     $event.event.opponent.name</td>
336:     <td>
337:     #if ($event.event.statusCode >= 0)
338:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
339:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
340:       #else
341:       ${event.event.APResult}
342:       #end
343:     #end
344:   </tr>
345: #end ## if
346: #end
347: </table>
348: #end
349: 
350: #macro (printSubTab $pos $label $activePos $view)
351: 	<option #if ($activePos == $pos) selected="selected" #end value="${bioURL}?view=${view}&pos=${pos}">$!label</option>
352: #end
353: 
354: 
355: #if ($isMobile)
356: 
357: #set ($activePos = $statPos)
358: #if ($request.getParameter("view") == "gamelog" && $positions.get($request.getParameter("pos")).length() > 0)
359: 	#set ($activePos = $positions.get($request.getParameter("pos")))
360: #end
361: 
362: <div id="tab-gamelog">
363: 
364: ## SECONDARY TABS FOR ONLY FOOTBALL,  BASEBALL, SOFTBALL AND BASKETBALL
365: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
366: 	
367: <select class="mobile-bios-subtabs clearfix">
368: 
369: #if ($sport.enumCode == 0) ## Football
370: 
371: #printSubTab('gb', 'Passing', $activePos, 'gamelog')
372: #printSubTab('rb', 'Rushing', $activePos, 'gamelog')
373: #printSubTab('wr', 'Receiving', $activePos, 'gamelog')
374: #printSubTab('k', 'Kicking', $activePos, 'gamelog')
375: #printSubTab('p', 'Punting', $activePos, 'gamelog')
376: #printSubTab('kr', 'Returns', $activePos, 'gamelog')
377: #printSubTab('d', $defLabel, $activePos, 'gamelog')
378: 
379: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
380: 
381: #printSubTab('h', 'Hitting', $activePos, 'gamelog')
382: #printSubTab('p', 'Pitching', $activePos, 'gamelog')
383: #printSubTab('f', 'Fielding', $activePos, 'gamelog')
384: 
385: #elseif ($sport.enumCode == 2) ## Basketball
386: 
387: #printSubTab('sh', 'Shooting', $activePos, 'gamelog')
388: #printSubTab('bc', 'Ball control', $activePos, 'gamelog')
389: 
390: #end
391: 
392: </select> ## stats-tabs-secondary
393: 
394: #end ## sport check for secondary tabs
395: 
396: #if ($sport.enumCode == 0) ## Football
397: 
398:   #gamelogData("qb") ## PASSING
399:   #gamelogData("rb") ## RUSHING
400:   #gamelogData("wr") ## RECEIVING
401:   #gamelogData("k") ## KICKING
402:   #gamelogData("p") ## PUNTING
403:   #gamelogData("kr") ## RETURNS
404:   #gamelogData("d") ## DEFENSE
405:   
406: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
407: 
408:   #gamelogData("h") ## HITTING
409:   #gamelogData("p") ## PITCHING
410:   #gamelogData("f") ## FIELDING
411:   
412: #elseif ($sport.enumCode == 2)
413: 
414:   #gamelogData("sh") ## SHOOTING
415:   #gamelogData("bc") ## BALL CONTROL
416:   
417: #else
418: 	
419:   #gamelogData($pos)
420:   
421: #end
422: 	
423: </div> ## tab-content
424: ## END GAMELOG
425: 
426: 
427: 
428: 
429: 
430: 
431: 
432: 
433: 
434: ## CAREER
435: #set ($activePos = $statPos)
436: #if ($request.getParameter("view") == "career" && $positions.get($request.getParameter("pos")).length() > 0)
437: 	#set ($activePos = $positions.get($request.getParameter("pos")))
438: #end
439: 
440: 
441: <div id="tab-career">
442: 
443: ## SECONDARY TABS FOR ONLY FOOTBALL,  BASEBALL, SOFTBALL AND BASKETBALL
444: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
445: 	<select class="mobile-bios-subtabs clearfix">
446: 		#if ($sport.enumCode == 0) ## Football
447: 
448: 			#printSubTab('gb', 'Passing', $activePos, 'career')
449: 			#printSubTab('rb', 'Rushing', $activePos, 'career')
450: 			#printSubTab('wr', 'Receiving', $activePos, 'career')
451: 			#printSubTab('k', 'Kicking', $activePos, 'career')
452: 			#printSubTab('p', 'Punting', $activePos, 'career')
453: 			#printSubTab('kr', 'Returns', $activePos, 'career')
454: 			#printSubTab('d', $defLabel, $activePos, 'career')
455: 
456: 		#elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
457: 
458: 			#printSubTab('h', 'Hitting', $activePos, 'career')
459: 			#printSubTab('p', 'Pitching', $activePos, 'career')
460: 			#printSubTab('f', 'Fielding', $activePos, 'career')
461: 
462: 		#elseif ($sport.enumCode == 2) ## Basketball
463: 
464: 			#printSubTab('sh', 'Shooting per game', $activePos, 'career')
465: 			#printSubTab('st', 'Shooting', $activePos, 'career')
466: 			#printSubTab('bc', 'Ball control per game', $activePos, 'career')
467: 			#printSubTab('bt', 'Ball control', $activePos, 'career')
468: 
469: 		#end
470: 	</select>
471: #end ## sport check for secondary tabs
472: 	
473: #if ($sport.enumCode == 0) ## Football
474: 
475: ## <div class="sub-tab-panels">
476: 	#careerData("qb") ## PASSING
477: 	#careerData("rb") ## RUSHING
478: 	#careerData("wr") ## RECEIVING
479: 	#careerData("k") ## KICKING
480: 	#careerData("p") ## PUNTING
481: 	#careerData("kr") ## RETURNS
482: 	#careerData("d") ## DEFENSE
483: ## </div>
484: 	
485: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
486: 
487: ## <div class="sub-tab-panels">
488: 	#careerData("h") ## HITTING
489: 	#careerData("p") ## PITCHING
490: 	#careerData("f") ## FIELDING
491: ## </div>
492: 	
493: #elseif ($sport.enumCode == 2) ## Basketball
494: 	
495: ## <div class="sub-tab-panels">
496: 	#careerData("sh") ## SHOOTING PER GAME
497: 	#careerData("st") ## SHOOTING
498: 	#careerData("bc") ## BALL CONTROL PER GAME
499: 	#careerData("bt") ## BALL CONTROL
500: ## </div>
501: 
502: #else
503: 
504: 	#careerData($pos)
505: 
506: #end
507: 
508: </div> ## tab-content
509: ## CAREER
510: 
511: 
512: 
513: 
514: 
515: 
516: 
517: 
518: 
519: 
520: 
521: 
522: ## SPLITS
523: #set ($activePos = $statPos)
524: #if ($request.getParameter("view") == "splits" && $positions.get($request.getParameter("pos")).length() > 0)
525: 	#set ($activePos = $positions.get($request.getParameter("pos")))
526: #end
527: 
528: 
529: <div id="tab-splits">
530: 
531: ## SECONDARY TABS FOR ONLY FOOTBALL,  BASEBALL, SOFTBALL AND BASKETBALL
532: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
533: 	<select class="mobile-bios-subtabs clearfix">
534: 		#if ($sport.enumCode == 0) ## Football
535: 
536: 			#printSubTab('gb', 'Passing', $activePos, 'splits')
537: 			#printSubTab('rb', 'Rushing', $activePos, 'splits')
538: 			#printSubTab('wr', 'Receiving', $activePos, 'splits')
539: 			#printSubTab('k', 'Kicking', $activePos, 'splits')
540: 			#printSubTab('p', 'Punting', $activePos, 'splits')
541: 			#printSubTab('kr', 'Returns', $activePos, 'splits')
542: 			#printSubTab('d', $defLabel, $activePos, 'splits')
543: 
544: 		#elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
545: 
546: 			#printSubTab('h', 'Hitting', $activePos, 'splits')
547: 			#printSubTab('p', 'Pitching', $activePos, 'splits')
548: 			#printSubTab('f', 'Fielding', $activePos, 'splits')
549: 
550: 		#elseif ($sport.enumCode == 2) ## Basketball
551: 
552: 			#printSubTab('sh', 'Shooting per game', $activePos, 'splits')
553: 			#printSubTab('st', 'Shooting', $activePos, 'splits')
554: 			#printSubTab('bc', 'Ball control per game', $activePos, 'splits')
555: 			#printSubTab('bt', 'Ball control', $activePos, 'splits')
556: 
557: 		#end
558: 	</select>
559: #end ## sport check for secondary tabs
560: 	
561: #if ($sport.enumCode == 0) ## Football
562: 
563: ## <div class="sub-tab-panels">
564: 	#splitsData("qb") ## PASSING
565: 	#splitsData("rb") ## RUSHING
566: 	#splitsData("wr") ## RECEIVING
567: 	#splitsData("k") ## KICKING
568: 	#splitsData("p") ## PUNTING
569: 	#splitsData("kr") ## RETURNS
570: 	#splitsData("d") ## DEFENSE
571: ## </div>
572: 	
573: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
574: 
575: ## <div class="sub-tab-panels">
576: 	#splitsData("h") ## HITTING
577: 	#splitsData("p") ## PITCHING
578: 	#splitsData("f") ## FIELDING
579: ## </div>
580: 	
581: #elseif ($sport.enumCode == 2) ## Basketball
582: 	
583: ## <div class="sub-tab-panels">
584: 	#splitsData("sh") ## SHOOTING PER GAME
585: 	#splitsData("st") ## SHOOTING
586: 	#splitsData("bc") ## BALL CONTROL PER GAME
587: 	#splitsData("bt") ## BALL CONTROL
588: ## </div>
589: 
590: #else
591: 	
592: 	#splitsData($pos)
593: 	
594: #end
595: 
596: </div> ## tab-content
597: ## SPLITS
598: 
599: 
600: 
601: 
602: 
603: #else
604: 
605: 
606: 
607: ## PROFILE
608: #set ($class = "tab-content clearfix")
609: #if ($view == "profile")
610: 	#set ($class = "tab-content clearfix active")
611: #end
612: <div class="${class}">
613: <div class="stats-wrapper clearfix">
614: 
615: ## LAST SIX GAMES
616: <div class="stats-halfbox-left">
617: #printRecentGames()
618: </div>
619: 
620: ## RANKING
621: $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
622: 
623: </div> ## stats-wrapper	
624: </div> ## tab-content
625: ## PROFILE
626: 
627: ## GAMELOG
628: #set ($class = "tab-content clearfix")
629: #if ($view == "gamelog")
630: 	#set ($class = "tab-content clearfix active")
631: #end
632: 
633: #set ($activePos = $statPos)
634: #if ($request.getParameter("view") == "gamelog" && $positions.get($request.getParameter("pos")).length() > 0)
635: 	#set ($activePos = $positions.get($request.getParameter("pos")))
636: #end
637: 
638: <div class="${class}">
639: <div class="stats-wrapper clearfix">
640: 
641: ## SECONDARY TABS FOR ONLY FOOTBALL,  BASEBALL, SOFTBALL AND BASKETBALL
642: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
643: 	
644: <div class="stats-tabs-secondary clearfix">
645: <ul class="clearfix">
646: 
647: #if ($sport.enumCode == 0) ## Football
648: 
649: #if ($activePos == "qb")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=qb">Passing</a></li>
650: 
651: #if ($activePos == "rb")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=rb">Rushing</a></li>
652: 
653: #if ($activePos == "wr")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=wr">Receiving</a></li>
654: 
655: #if ($activePos == "k")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=k">Kicking</a></li>
656: 
657: #if ($activePos == "p")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=p">Punting</a></li>
658: 
659: #if ($activePos == "kr")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=kr">Returns</a></li>
660: 
661: #if ($activePos == "d")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=d">#if ($locale == "en_us")Defense #elseif ($locale == "en_gb") Defence #end</a></li>
662: 
663: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
664: 
665: #if ($activePos == "h")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=h">Hitting</a></li>
666: 
667: #if ($activePos == "p")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=p">Pitching</a></li>
668: 
669: #if ($activePos == "f")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=f">Fielding</a></li>
670: 
671: #elseif ($sport.enumCode == 2) ## Basketball
672: 
673: #if ($activePos == "sh")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=sh">Shooting</a></li>
674: 
675: #if ($activePos == "bc")<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=bc">Ball control</a></li>
676: 
677: #end
678: 
679: </ul>
680: </div> ## stats-tabs-secondary
681: 
682: #end ## sport check for secondary tabs
683: 
684: #if ($sport.enumCode == 0) ## Football
685: 
686: <div class="sub-tab-panels">
687:   #gamelogData("qb") ## PASSING
688:   #gamelogData("rb") ## RUSHING
689:   #gamelogData("wr") ## RECEIVING
690:   #gamelogData("k") ## KICKING
691:   #gamelogData("p") ## PUNTING
692:   #gamelogData("kr") ## RETURNS
693:   #gamelogData("d") ## DEFENSE
694: </div>
695:   
696: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
697: 
698: <div class="sub-tab-panels">
699:   #gamelogData("h") ## HITTING
700:   #gamelogData("p") ## PITCHING
701:   #gamelogData("f") ## FIELDING
702: </div>
703:   
704: #elseif ($sport.enumCode == 2)
705: 
706: <div class="sub-tab-panels">
707:   #gamelogData("sh") ## SHOOTING
708:   #gamelogData("bc") ## BALL CONTROL
709: </div>
710:   
711: #else
712: 	
713:   #gamelogData($pos)
714:   
715: #end
716: 	
717: </div> ## stats-wrapper
718: </div> ## tab-content
719: ## GAMELOG
720: 
721: 
722: 
723: 
724: 
725: 
726: 
727: 
728: ## CAREER
729: #if ($showCareer)
730: #set ($class = "tab-content clearfix")
731: #if ($view == "career")
732: 	#set ($class = "tab-content clearfix active")
733: #end
734: 
735: #set ($activePos = $statPos)
736: #if ($request.getParameter("view") == "career" && $positions.get($request.getParameter("pos")).length() > 0)
737: 	#set ($activePos = $positions.get($request.getParameter("pos")))
738: #end
739: 
740: <div class="${class}">
741: <div class="stats-wrapper clearfix">
742: 
743: ## SECONDARY TABS FOR ONLY FOOTBALL,  BASEBALL, SOFTBALL AND BASKETBALL
744: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
745: 	
746: <div class="stats-tabs-secondary clearfix">
747: <ul class="clearfix">
748: 
749: #if ($sport.enumCode == 0) ## Football
750: 
751: #if ($activePos == "qb")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=qb">Passing</a></li>
752: 
753: #if ($activePos == "rb")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=rb">Rushing</a></li>
754: 
755: #if ($activePos == "wr")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=wr">Receiving</a></li>
756: 
757: #if ($activePos == "k")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=k">Kicking</a></li>
758: 
759: #if ($activePos == "p")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=p">Punting</a></li>
760: 
761: #if ($activePos == "kr")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=kr">Returns</a></li>
762: 
763: #if ($activePos == "d")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=d">#if ($locale == "en_us")Defense #elseif ($locale == "en_gb") Defence #end</a></li>
764: 
765: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
766: 
767: #if ($activePos == "h")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=h">Hitting</a></li>
768: 
769: #if ($activePos == "p")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=p">Pitching</a></li>
770: 
771: #if ($activePos == "f")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=f">Fielding</a></li>
772: 
773: #elseif ($sport.enumCode == 2) ## Basketball
774: 
775: #if ($activePos == "sh")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=sh">Shooting per game</a></li>
776: 
777: #if ($activePos == "st")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=st">Shooting</a></li>
778: 
779: #if ($activePos == "bc")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=bc">Ball control per game</a></li>
780: 
781: #if ($activePos == "bt")<li class="active">#else <li> #end<a href="${bioURL}?view=career&pos=bt">Ball control</a></li>
782: 
783: #end
784: </ul>
785: </div> ## stats-tabs-secondary
786: #end ## sport check for secondary tabs
787: 	
788: #if ($sport.enumCode == 0) ## Football
789: 
790: <div class="sub-tab-panels">
791: 	#careerData("qb") ## PASSING
792: 	#careerData("rb") ## RUSHING
793: 	#careerData("wr") ## RECEIVING
794: 	#careerData("k") ## KICKING
795: 	#careerData("p") ## PUNTING
796: 	#careerData("kr") ## RETURNS
797: 	#careerData("d") ## DEFENSE
798: </div>
799: 	
800: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
801: 
802: <div class="sub-tab-panels">
803: 	#careerData("h") ## HITTING
804: 	#careerData("p") ## PITCHING
805: 	#careerData("f") ## FIELDING
806: </div>
807: 	
808: #elseif ($sport.enumCode == 2) ## Basketball
809: 	
810: <div class="sub-tab-panels">
811: 	#careerData("sh") ## SHOOTING PER GAME
812: 	#careerData("st") ## SHOOTING
813: 	#careerData("bc") ## BALL CONTROL PER GAME
814: 	#careerData("bt") ## BALL CONTROL
815: </div>
816: 
817: #else
818: 	
819: 	#careerData($pos)
820: 	
821: #end
822: 
823: </div> ## stats-wrapper
824: </div> ## tab-content
825: #end ## show career
826: ## CAREER
827: 
828: 
829: 
830: 
831: 
832: 
833: 
834: 
835: 
836: ## SPLITS
837: #set ($class = "tab-content clearfix")
838: #if ($view == "splits")
839: 	#set ($class = "tab-content clearfix active")
840: #end
841: 
842: #set ($activePos = $statPos)
843: #if ($request.getParameter("view") == "splits" && $positions.get($request.getParameter("pos")).length() > 0)
844: 	#set ($activePos = $positions.get($request.getParameter("pos")))
845: #end
846: 
847: <div class="${class}">
848: <div class="stats-wrapper clearfix">
849: 
850: ## SECONDARY TABS FOR ONLY FOOTBALL,  BASEBALL AND BASKETBALL
851: #if ($sport.enumCode == 0 || $sport.enumCode == 1 || $sport.enumCode == 11 || $sport.enumCode == 2)
852: 	
853: <div class="stats-tabs-secondary clearfix">
854: <ul class="clearfix">
855: 
856: #if ($sport.enumCode == 0) ## Football
857: 
858: #if ($activePos == "qb")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=qb">Passing</a></li>
859: 
860: #if ($activePos == "rb")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=rb">Rushing</a></li>
861: 
862: #if ($activePos == "wr")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=wr">Receiving</a></li>
863: 
864: #if ($activePos == "k")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=k">Kicking</a></li>
865: 
866: #if ($activePos == "p")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=p">Punting</a></li>
867: 
868: #if ($activePos == "kr")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=kr">Returns</a></li>
869: 
870: #if ($activePos == "d")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=d">#if ($locale == "en_us")Defense #elseif ($locale == "en_gb") Defence #end</a></li>
871: 
872: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
873: 
874: #if ($activePos == "h")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=h">Hitting</a></li>
875: 
876: #if ($activePos == "p")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=p">Pitching</a></li>
877: 
878: #if ($activePos == "f")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=f">Fielding</a></li>
879: 
880: #elseif ($sport.enumCode == 2) ## Basketball
881: 
882: #if ($activePos == "sh")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=sh">Shooting per game</a></li>
883: 
884: #if ($activePos == "st")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=st">Shooting</a></li>
885: 
886: #if ($activePos == "bc")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=bc">Ball control per game</a></li>
887: 
888: #if ($activePos == "bt")<li class="active">#else <li> #end<a href="${bioURL}?view=splits&pos=bt">Ball control</a></li>
889: 
890: #end
891: </ul>
892: </div> ## stats-tabs-secondary
893: #end ## sport check for secondary tabs
894: 	
895: #if ($sport.enumCode == 0) ## Football
896: 
897: <div class="sub-tab-panels">
898: 	#splitsData("qb") ## PASSING
899: 	#splitsData("rb") ## RUSHING
900: 	#splitsData("wr") ## RECEIVING
901: 	#splitsData("k") ## KICKING
902: 	#splitsData("p") ## PUNTING
903: 	#splitsData("kr") ## RETURNS
904: 	#splitsData("d") ## DEFENSE
905: </div>
906: 	
907: #elseif ($sport.enumCode == 1 || $sport.enumCode == 11) ## Baseball or Softball
908: 
909: <div class="sub-tab-panels">
910: 	#splitsData("h") ## HITTING
911: 	#splitsData("p") ## PITCHING
912: 	#splitsData("f") ## FIELDING
913: </div>
914: 	
915: #elseif ($sport.enumCode == 2) ## Basketball
916: 	
917: <div class="sub-tab-panels">
918: 	#splitsData("sh") ## SHOOTING PER GAME
919: 	#splitsData("st") ## SHOOTING
920: 	#splitsData("bc") ## BALL CONTROL PER GAME
921: 	#splitsData("bt") ## BALL CONTROL
922: </div>
923: 
924: #else
925: 	
926: 	#splitsData($pos)
927: 	
928: #end
929: 
930: </div> ## stats-wrapper
931: </div> ## tab-content
932: ## SPLITS
933: 
934: #end ## MOBILE / DESKTOP STATS
935: 
936: #else
937: ## BIO
938: 
939: ## CHANGES FOR STATS
940: 
941: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
942: #set ($bioObject = $page.getDataAsObject())
943: #set ($statsURL = $bioObject.statsURL)
944: ## END OF HACK
945: 
946: #if ($statsURL.length() > 0)
947:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
948:   ## various settings to get the variables set
949:   #set ($events = $request.getAttribute("bio_events"))
950:   #set ($seasons = $request.getAttribute("bio_seasons"))
951:   #set ($career = $request.getAttribute("bio_career"))
952:   #set ($labels = $request.getAttribute("bio_labels"))
953:   #set ($briefs = $request.getAttribute("bio_briefs"))
954:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
955:   #set ($splits = $request.getAttribute("bio_splits"))
956:   #set ($statPosition = $request.getAttribute("bio_position"))
957:   #set ($positions = $request.getAttribute("bio_positions"))
958:   #set ($playerId = $request.getAttribute("bio_player_id"))
959:   #set ($highlights = $request.getAttribute("bio_highlights"))
960:   #set ($formats = $request.getAttribute("bio_formats"))
961: #end
962: 
963: ## END CHANGES FOR STATS
964: 
965: #set ($pos = "")
966: #set ($pos = $attributes.get("position"))
967: #set ($pos = $statPosition)
968: #set ($pos = $pos.toLowerCase())
969: #set ($posVec = $pos.split("/"))
970: #set ($pos = $posVec[0])
971: #set ($pos = $positions.get($pos))
972: #set ($highlights = $highlights.get($pos))
973: 
974: #set ($showHighlights = true)
975: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
976: 	#set ($showHighlights = false)
977: #end
978: #set ($showCareer = $wiki.valid() && $seasons)
979: #if ("yes" == $options.get("stats_show_career") && $seasons)
980:   #set ($showCareer = "yes")
981: #end
982: 
983: #set ($labels = $labels.get($pos))
984: #set ($briefs = $briefs.get($pos))
985: #set ($gamelogs = $gamelogs.get($pos))
986: #set ($stats = $splits.overall)
987: #set ($hasEvents = $events.size() > 0)
988: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
989: #set ($htmlStatsURL = "${page.url}-stats")
990: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
991: #set ($bioBriefURL = "${page.url}-brief")
992: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
993: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
994: #if ($options.get("bio_hide_roster") == true)
995: 	#set ($showRoster = false)
996: #end
997: 
998: ## Always default to the bio page if available
999: #set ($view = "bio")
1000: 
1001: #if ($hasSynopsis || $hasBioBrief)
1002: 	#set ($view = "bio")
1003: #elseif ($hasEvents)
1004: 	#set ($view = "profile")
1005: #elseif ($hasHTMLStats)
1006: 	#set ($view = "htmlstats")
1007: #else
1008: 	#set ($view = "")
1009: #end
1010: 
1011: #if ($options.get("bio_default_view").length() > 0)
1012: 	#set ($checkView = $options.get("bio_default_view"))
1013: #end
1014: 
1015: #if ($request.getParameter("view"))
1016: 	#set ($checkView = $request.getParameter("view"))
1017: #end
1018: 
1019: #if ($checkView == "profile" && $hasEvents)
1020: 	#set ($view = "profile")
1021: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
1022: 	#set ($view = "bio")
1023: #elseif ($checkView == "gamelog" && $hasEvents)
1024: 	#set ($view = "gamelog")
1025: #elseif ($checkView == "career" && $showCareer)
1026: 	#set ($view = "career")
1027: #elseif ($checkView == "splits" && $hasEvents)
1028: 	#set ($view = "splits")
1029: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
1030: 	#set ($view = "htmlstats")
1031: #end
1032: 
1033: #if ($attributes.get("full_name"))
1034: 	#set ($fullName = $attributes.get("full_name"))
1035: #else
1036: 	#set ($firstName = $!attributes.get("first_name"))
1037: 	#set ($lastName = $!attributes.get("last_name"))
1038: 	#set ($fullName = "${firstName} ${lastName}")
1039: #end
1040: 
1041: #macro (printHeadshot $width $height)
1042: 	#if ($headshot.url)
1043: 		<img src="$headshot.url?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
1044: 	#else
1045: 		#if ($website.exists("/images/setup/headshot_default.jpg"))
1046: 			<img src="/images/setup/headshot_default.jpg?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
1047: 		#else
1048: 			<img src="/info/images/default_headshot.jpg?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
1049: 		#end
1050: 	#end
1051: #end
1052: 
1053: #if ($isMobile)
1054: 
1055: #set ($hasBioTab = false)
1056: #if ($hasSynopsis || $hasBioBrief)
1057: 	#set ($hasBioTab = true)
1058: #end
1059: 
1060: #set ($hasProfileTab = false)
1061: #if (($highlights && $showHighlights) || $events.size() > 0 || $website.exists("$statsURL/../players"))
1062: 	#set ($hasProfileTab = true)
1063: #end
1064: 
1065: <script type="text/javascript">
1066: 	window.mobileConf = {
1067: 		page : 'bios',
1068: 		pageParams : {
1069: 			view : '$!view'
1070: 		}
1071: 	}
1072: </script>
1073: 
1074: <div class="bios">
1075: 	<div class="profile">
1076: 		<div class="images">
1077: 			<div class="photo">
1078: 				#printHeadshot(81, 116)
1079: 			</div>				
1080: 			#if ($attributes.get("number"))	<div class="number"> $!attributes.get("number") </div> #end
1081: 		</div>
1082: 		<div class="texts">
1083: 			<div class="name">$!attributes.get("first_name") $!attributes.get("last_name")</div>
1084: 			<div class="data">
1085: 				#foreach ($field in $fields)
1086: 					#if (! $field.key.startsWith("custom"))
1087: 						#if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
1088: 
1089: 							#if ($field.key == "phone1" || $field.key == "phone2")
1090: 								Phone: $!attributes.get($field.key) <br />
1091: 							#elseif ($field.key == "email_address")
1092: 								#set ($emailAdd = $attributes.get($field.key))
1093: 								Email: <a href="mailto:${emailAdd}">$emailAdd</a> <br />
1094: 							#else
1095: 								$field.value: $!attributes.get($field.key) <br />
1096: 							#end
1097: 
1098: 							#set ($counter = $counter + 1)
1099: 						#end
1100: 					#end
1101: 				#end
1102: 					
1103: 				#foreach ($i in [1..10])
1104: 					#set ($customKey = "bio_custom${i}")
1105: 					#if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
1106: 						$options.get($customKey): </td><td class="val">$!attributes.get("custom${i}") <br />
1107: 						#set ($counter = $counter + 1)
1108: 					#end
1109: 				#end
1110: 				
1111: 			</div>
1112: 		</div>
1113: 	</div>	
1114: 
1115: 	#if ($hasBioTab || $hasProfileTab)
1116: 	<div class="details mobile-tabs mobile-stats" id="mobile-bios-tabs-container">
1117: 		<ul class="mobile-bios-tabs">
1118: 			#if ($hasBioTab)
1119: 				<li><a data-view="bio" href="#tab-bios">Bio</a></li>
1120: 			#end
1121: 			#if ($hasProfileTab)
1122: 				<li><a data-view="profile" href="#tab-profile">Profile</a></li>
1123: 			#end
1124: 			#if ($hasEvents)
1125: 				<li><a data-view="gamelog" href="#tab-gamelog">Game Log</a></li>
1126: 				#if ($showCareer)
1127: 				    <li><a data-view="career" href="#tab-career">Career</a></li>
1128: 				#end
1129: 				<li><a data-view="splits" href="#tab-splits">Splits</a></li>
1130: 			#end
1131: 		</ul>
1132: 		
1133: 		#if ($hasBioTab)
1134: 		<div id="tab-bios">
1135: 			#if ($hasSynopsis)
1136: 				$synopsis
1137: 			#elseif ($hasBioBrief)
1138: 				<p>$website.include("$bioBriefURL")</p>
1139: 			#end
1140: 		</div>
1141: 		#end
1142: 		
1143: 		#if ($hasProfileTab)
1144: 		#set ($cellWidth = $tool.math.toInteger($tool.math.div(100, $highlights.size())))
1145: 			
1146: 		<div id="tab-profile">
1147: 			## HIGHLIGHTS
1148: 			#if ($highlights && $showHighlights)
1149: 				<div class="bios-stat-wrapper">
1150: 					<h4>Highlights</h4>
1151: 					<table width="100%"><tr>
1152: 					#foreach ($highlight in $highlights.keySet())
1153: 						<th #if (! $isMobile) width="18%" #else width="${cellWidth}%" #end>$!highlights.get($highlight)</th>
1154: 					#end
1155: 					</tr><tr>
1156: 					#foreach ($highlight in $highlights.keySet())
1157: 						<td>
1158: 						#set ($value = "-")
1159: 						#set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
1160: 						#if ($value.length() > 0)
1161: 							<span class="value">$value</span>
1162: 						#else
1163: 							<span class="value">-</span>
1164: 						#end	
1165: 						</td>
1166: 					#end
1167: 					</tr></table>
1168: 				</div>
1169: 			#end
1170: 			
1171: 			## RECENT GAMES
1172: 			#if ($events.size() > 0)
1173: 			<div class="bios-stat-wrapper">
1174: 				##<h4>Recent Games</h4>
1175: 				#printRecentGames()
1176: 			</div>
1177: 			#end
1178: 			
1179: 			<div class="bios-stat-wrapper">
1180: 				$website.include("$statsURL/../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${pos}")
1181: 			</div>
1182: 			
1183: 		</div>
1184: 		#end
1185: 		
1186: 		## STATS TABS
1187: 		#if ($hasEvents)
1188: 			$website.includeAgain("${statsURL}?tmpl=bio-template&stats=1&biourl=${tool.esc.url($page.url)}&view=${view}&pos=${request.getParameter('pos')}")
1189: 			
1190: 			<div id="tab-splits"></div>
1191: 			
1192: 		#end
1193: 		
1194: 	</div>
1195: 	#end
1196: </div>   
1197:    
1198:    
1199: #else
1200: ## NOT MOBILE
1201: 
1202: <head>
1203: 	<title>$fullName #if ($attributes.get("team")) | $attributes.get("team")#end</title>
1204: 	<link rel="stylesheet" type="text/css" href="/info/bio-styles.css" />
1205: </head>
1206: 
1207: ## FULL ROSTER
1208: <div class="bio-wrap clearfix">
1209: 
1210: <div class="head clearfix">
1211: 
1212: <div class="bio-title">#if ($attributes.get("number"))<span class="number">$!attributes.get("number") - #end</span><span class="name">$fullName</span></div>
1213: 
1214: <div class="about">
1215: 
1216: <div class="clearfix">
1217: 
1218: #printHeadshot(150, 200)
1219: 
1220: #set ($counter = 0)
1221: <table cellpadding="5" cellspacing="5" border="0">
1222: 
1223: #foreach ($i in [1..10])
1224: 	#set ($stickyKey = "bio_custom${i}_sticky")
1225: 	#if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
1226: 		<tr><td class="lbl">$options.get($stickyKey): </td><td class="val">$!attributes.get("custom${i}")</td></tr>
1227: 		#set ($counter = $counter + 1)
1228: 	#end
1229: #end
1230: 
1231: #foreach ($field in $fields)
1232: 	#if (! $field.key.startsWith("custom"))
1233: 		#if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
1234: 
1235: 			#if ($field.key == "phone1" || $field.key == "phone2")
1236: 				<tr><td class="lbl">Phone: </td><td class="val">$!attributes.get($field.key)</td></tr>
1237: 			#elseif ($field.key == "email_address")
1238: 				#set ($emailAdd = $attributes.get($field.key))
1239: 				<tr><td class="lbl">Email: </td><td class="val"><a href="mailto:${emailAdd}">$emailAdd</a></td></tr>
1240:                         #elseif ($field.key == 'college')
1241: 				<tr><td class="lbl">Alma Mater: </td><td class="val">$!attributes.get($field.key)</td></tr>
1242: 			#else
1243: 				<tr><td class="lbl">$field.value: </td><td class="val">$!attributes.get($field.key)</td></tr>
1244: 			#end
1245: 
1246: 			#set ($counter = $counter + 1)
1247: 		#end
1248: 	#end
1249: #end
1250: 
1251: #foreach ($i in [1..10])
1252: 	#set ($customKey = "bio_custom${i}")
1253: 	#if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
1254: 		<tr><td class="lbl">$options.get($customKey): </td><td class="val">$!attributes.get("custom${i}")</td></tr>
1255: 		#set ($counter = $counter + 1)
1256: 	#end
1257: #end
1258: 
1259: </table>
1260: 
1261: </div> ## clearfix
1262: </div> ## ends about
1263: 
1264: #if ($highlights && $showHighlights)
1265: <div class="headstats">
1266: 	#foreach ($highlight in $highlights.keySet())
1267: 		<div class="hst">
1268: 		<span class="title" title="$!highlights.get($highlight)">$!highlights.get($highlight)</span>
1269: 		#set ($value = "-")
1270: 		#set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
1271: 		#if ($value.length() > 0)
1272: 			<span class="value">$value</span>
1273: 		#else
1274: 			<span class="value">-</span>
1275: 		#end
1276: 		</div>
1277: 	#end
1278: </div>
1279: #end ## if-highlights
1280: 
1281: </div> ## ends head
1282: 
1283: #if ($hasSynopsis || $hasBioBrief || $hasEvents || $hasHTMLStats || $showRoster)
1284: <div class="stats-tabs clearfix">
1285: 	#if (($hasSynopsis || $hasBioBrief || $hasEvents || $hasHTMLStats) && $view.length() > 0)
1286: 	<ul class="clearfix">
1287: 		#if ($hasSynopsis || $hasBioBrief)
1288: 			#if ($view == "bio")<li class="active">#else<li>#end<a href="${page.url}?view=bio">Bio</a></li>
1289: 		#end
1290: 		
1291: 		#if ($hasEvents)
1292: 			#if ($view == "profile")<li class="active">#else<li>#end<a href="${page.url}?view=profile">Player Profile</a></li>
1293: 			#if ($view == "gamelog")<li class="active">#else<li>#end<a href="${page.url}?view=gamelog">Game Log</a></li>
1294: 			#if ($showCareer)
1295:   			    #if ($view == "career")<li class="active">#else<li>#end<a href="${page.url}?view=career">Career Stats</a></li>
1296:   			#end
1297: 			#if ($view == "splits")<li class="active">#else<li>#end<a href="${page.url}?view=splits">Split Stats</a></li>
1298: 		#end
1299: 
1300: 		#if ($hasHTMLStats)
1301: 			#if ($view == "htmlstats")<li class="active">#else<li>#end<a href="${page.url}?view=htmlstats">HTML Stats</a></li>
1302: 		#end
1303: 	</ul>
1304: 	#end
1305: 	#if ($showRoster)
1306: 		#if ($page.contentType == "loki/bio")
1307: 			#set ($headlinesFeaturedSize = 0)
1308: 			#foreach ($featuredPage in $page.headlinesFeatured)
1309: 				#if ($featuredPage.contentType == "loki/headlines")
1310: 					#set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
1311: 				#end
1312: 			#end
1313: 			#if ($headlinesFeaturedSize > 0)
1314: 				<select class="roster-select-list">
1315: 					<option selected="selected" class="bold">Related Bios</option>
1316:     			#foreach ($featuredPage in $page.headlinesFeatured)
1317:     				#if ($featuredPage.contentType == "loki/headlines")
1318:     					$website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
1319:     				#end
1320: 				#end
1321: 				</select>
1322: 			#end
1323: 		#elseif ($page.contentType == "loki/bio-network")
1324: 			#set ($relatedPlayers = $page.sectionPage.children)
1325: 			#set ($teamNames = {})
1326: 			#foreach ($relatedPlayer in $relatedPlayers)
1327: 				#if ($relatedPlayer.contentType == "loki/bio-network")
1328: 					#set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
1329: 					## <span class="none relatedplayeratt">$relatedPlayerObj</span>
1330: 					#set ($teamName = $relatedPlayerObj.get("team"))
1331: 					#if ($teamName.length() > 0)
1332:     					#if (!$teamNames.containsValue($teamName))
1333:     						$!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
1334:     					#end
1335: 					#end
1336: 				#end
1337: 			#end
1338: 			##<span class="none teamnames">$teamNames</span>
1339: 			<select class="roster-select-list">
1340: 			#foreach ($i in [1..$teamNames.size()])
1341: 				#if ($teamNames.size() > 1)
1342: 					<optgroup label="$teamNames.get($i)">
1343: 				#end
1344: 				
1345: 				#foreach ($relatedPlayer in $relatedPlayers)
1346: 					#if ($relatedPlayer.contentType == "loki/bio-network")
1347: 						#set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
1348: 						#set ($teamName = $relatedPlayerObj.get("team"))
1349: 						#if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
1350: 							#set ($playerFirstName = $relatedPlayerObj.get("first_name"))
1351: 							#set ($playerLastName = $relatedPlayerObj.get("last_name"))
1352: 							#if ($page.url == $relatedPlayer.url)
1353: 								<option value="$relatedPlayer.url" selected="selected" class="bold">${playerFirstName} ${playerLastName}</option>
1354: 							#else
1355: 								<option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
1356: 							#end
1357: 						#end
1358: 					#end
1359: 				#end
1360: 				
1361: 				#if ($teamNames.size() > 1)
1362: 					</optgroup>
1363: 				#end
1364: 			#end
1365: 			</select>
1366: 		#end
1367: 	#end
1368: </div>
1369: #end
1370: 
1371: #if ($hasSynopsis || $hasBioBrief || $hasEvents || $hasHTMLStats)
1372: 	<div class="tab-content-panels">
1373: #end
1374: 
1375: ## BIO TAB
1376: #if ($hasSynopsis || $hasBioBrief)
1377: 
1378: #set ($class = "tab-content clearfix")
1379: #if ($view == "bio")
1380: 	#set ($class = "tab-content clearfix active")
1381: #end
1382: <div class="${class}">
1383: 
1384: <div class="synopsis clearfix">
1385: #if ($hasSynopsis)
1386: 	$synopsis
1387: #elseif ($hasBioBrief)
1388: 	$website.include("$bioBriefURL")
1389: #end
1390: </div>
1391: 
1392: </div> ## tab-content
1393: #end ## BIO TAB ENDS
1394: 
1395: ## STATS TABS
1396: #if ($hasEvents)
1397:   $website.includeAgain("${statsURL}?tmpl=bio-template&stats=1&biourl=${tool.esc.url($page.url)}&view=${view}&pos=${request.getParameter('pos')}")
1398: #end
1399: 
1400: ## HTML TAB
1401: #if ($hasHTMLStats)
1402: 
1403: #set ($class = "tab-content clearfix")
1404: #if ($view == "htmlstats")
1405: 	#set ($class = "tab-content clearfix active")
1406: #end
1407: <div class="${class}">
1408: 	<a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
1409: </div>
1410: 
1411: #end
1412: 
1413: #if ($hasSynopsis || $hasBioBrief || $hasEvents || $hasHTMLStats)
1414: 	</div>
1415: #end
1416: 
1417: </div> ## ends bio-wrap
1418: 
1419: #if ($request.getAttribute("bioScriptCalled"))
1420:   #set ($scriptCalled = true)
1421: #else
1422:   #set ($scriptCalled = false)
1423: #end
1424: 
1425: #if (!$scriptCalled)
1426: 	
1427: $!request.setAttribute("bioScriptCalled", true)
1428: <script type="text/javascript" src="$website.cdn("/info/jquery.address-1.5.min.js")"></script>
1429: <script type="text/javascript">
1430: 
1431: jQuery.address.strict(false).state('${page.url}').init(function() {
1432: 	$('.bio-wrap .stats-tabs a').address();
1433: 	$('.bio-wrap .stats-tabs-secondary a').address();
1434: });
1435: 
1436: $(function() {
1437: 
1438: $('.bio-wrap .stats-tabs li').click(function(e) {
1439: 	e.preventDefault();
1440: 	if (!$(this).hasClass('active')) {
1441: 		$(this).addClass('active').siblings().removeClass('active');
1442: 		$(this).parent().parent('.stats-tabs').next('.tab-content-panels').children('.tab-content').removeClass('active').eq($(this).index()).addClass('active');
1443: 	}
1444: });
1445: 
1446: $('.bio-wrap .stats-tabs-secondary li').click(function(e) {
1447: 	e.preventDefault();
1448: 	if (!$(this).hasClass('active')) {
1449: 		$(this).addClass('active').siblings().removeClass('active');
1450: 		$(this).parent().parent('.stats-tabs-secondary').next('.sub-tab-panels').children('.sub-tab-content').removeClass('active').eq($(this).index()).addClass('active');
1451: 	}
1452: });
1453: 
1454: #if ($showRoster)
1455: 	$('.bio-wrap .roster-select-list').change(function() {
1456: 		window.location.href = $(this).val();
1457: 	});
1458: #end
1459: 
1460: #if ($hasHTMLStats)
1461: 	$('.bio-htmlstats-identifier').each(function() {
1462: 		var targetElement = $(this);
1463: 		jQuery.get($(this).attr('href'), function(data) {
1464: 			var htmlStats = $(data).find('center').first();
1465: 			htmlStats.add(htmlStats.siblings('center'));
1466: 			if (htmlStats.children().length > 0) {
1467: 				targetElement.replaceWith(htmlStats);
1468: 			}
1469: 		});
1470: 	});
1471: #end
1472: 
1473: });
1474: </script>
1475: #end
1476: 
1477: #end ## MOBILE CHECK
1478: #end ## STATS PARAMETER
1479: 
1480: $wiki