44 - J.D. Ey
J.D. Ey
Height: 6-6
Weight: 215
Year: Sr.
Hometown: Charlotte, N.C.
High School: Myers Park
Position: F
gp 26
pts/g 10.2
fg % 48.0
3pt % 13.6
ft % 56.0
reb/g 9.7
a/g 3.1

2012-13: A three-year letterwinner and returning all-conference performer ... will be one of the team's go-to players, and a top player in the ODAC.

2011-12: Named Second Team All-ODAC after starting all 27 games for the Generals ... earned the ODAC Player of the Week honor once (11/22) ... led the conference in rebounds (243), rebounds per game (9.0) and blocks (62) ... finished sixth in the league in assists (85), fourth in minutes per game (30.9) and 14th in points per game (12.6) ... was one of five players to play in every game for W&L, but the only one to start each contest ... shot 47.6 percent (138-290) from the field and 68.8 percent (55-80) from the charity stripe ... recorded nine double-doubles and had at least 15 points in nine contests ... tied a career-high with 26 points in the season-opening win at Dickinson (11/15) and totaled 10 boards ... grabbed a career-high 21 rebounds at Elms (11/18), which was the first time a W&L had at least 20 rebounds since 2000 ... almost had a triple-double in the contest at Elms adding 16 points and seven assists ... the seven assists marked a career-high, which he equaled against Wesley (11/26) and versus Ferrum (1/21) ... notched 22 points, six rebounds, four assists and a career-high seven blocks in 93-89 double-overtime victory over Juniata (12/20) ... recorded 14 points and 17 rebounds in an upset 78-56 win over 21st-ranked Randolph-Macon (2/4).
 
2010-11:
Lettered in his second season ... was one of just two players to start all 27 games ... earned Honorable Mention All-ODAC accolades after averaging 9.6 points, 7.1 rebounds (5th in the ODAC), 2.0 assists, 1.3 blocks (2nd in the ODAC), 1.1 steals per game and shooting 54.6 percent (110-195) from the field (2nd in the ODAC) ... recorded four double-doubles and grabbed at least 10 rebounds on eight occasions .. opened the season with eight points, six rebounds, four assists, four blocks and three steals in a 74-72 win over Dickinson (11/15) ... had 14 points, six boards, three steals and two blocks in a 67-62 win at Haverford (11/19) ... scored eight points, grabbed 10 rebounds and dished out six assists in the Generals' 87-78 win over Averett (11/27) ... scored 21 points on 9-of-11 shooting and grabbed four rebounds in a 93-92 win over then-No. 10 Eastern Mennonite (1/5) ... registered 13 points, seven rebounds and four assists in a 66-72 loss to Hampden-Sydney (1/19) ... tallied 19 points and 12 boards in a 79-64 loss at Hampden-Sydney (2/14) and followed that with a 26-point (12-15 shooting), 10-rebound, 4-block, 4-assist performance in a 94-82 loss at Eastern Mennonite. 

2009-10: Made 19 starts among 27 appearances as a first-year … averaged 5.9 points and 5.7 rebounds … ranked among the league leaders in overall rebounding (5.7 rpg) and offensive rebounding (2.0 orpg) … also added 24 assists, 23 steals and 15 blocks … scored a season-high 14 points and grabbed nine rebounds in a 75-71 win over Bridgewater (2/13) … scored 12 points and had three steals in a 68-65 win against Otterbein … tallied 11 points and snared eight boards in a 76-65 win over Emory (1/3) … grabbed a season-high 11 rebounds to go with eight points in a 92-60 victory over Emory & Henry.

High School: Three-year letterwinner in basketball and baseball and Myers Park … helped lead the basketball team to a pair of regular season conference championships and one conference tournament title ... named all-conference and all-district in basketball as a senior … baseball team captured the conference tournament during senior season … named all-conference in baseball as a senior.

Off the court: Accounting and business administration major.

Recent Games
Feb 2 Hampden-Sydney L, 77-67
Feb 6 Emory & Henry W, 74-44
Feb 9 at Randolph L, 64-59
Feb 13 at Roanoke W, 75-56
Feb 16 Shenandoah W, 61-60
Feb 19 Eastern Mennonite L, 58-52
Statistics category Overall Conf
Games 26 16
Games started 26 16
Minutes 773 487
Minutes per game 29.7 30.4
FG 107-223 72-154
FG Pct 48.0 46.8
3PT 3-22 0-12
3PT Pct 13.6 0.0
FT 47-84 28-57
FT Pct 56.0 49.1
Off rebounds 78 48
Def rebounds 173 111
Total rebounds 251 159
Rebounds per game 9.7 9.9
Personal fouls 63 35
Disqualifications 0 0
Assists 80 48
Turnovers 61 30
Assist to turnover ratio 1.3 1.6
Steals 44 29
Blocks 55 34
Points 264 172
Points per game 10.2 10.8
Points per 40 min 13.7 14.1
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 16 vs. Tufts W, 79-68 1 26 5-9 55.6 0-1 0.0 0-0 - 10
Nov 17 at Rutgers-Newark L, 78-73 1 34 5-9 55.6 1-2 50.0 4-4 100.0 15
Nov 20 at Methodist W, 102-73 1 26 2-4 50.0 0-0 - 1-2 50.0 5
Nov 24 at Shenandoah W, 68-63 1 30 10-14 71.4 0-0 - 2-3 66.7 22
Dec 1 Randolph L, 67-52 1 31 3-12 25.0 0-3 0.0 0-3 0.0 6
Dec 3 at Ferrum L, 65-50 1 27 5-8 62.5 0-0 - 1-2 50.0 11
Dec 5 Averett W, 87-71 1 23 0-5 0.0 0-1 0.0 2-2 100.0 2
Dec 19 vs. Bates L, 66-61 1 27 3-7 42.9 1-2 50.0 6-8 75.0 13
Dec 21 vs. Marymount (Va.) W, 70-57 1 29 7-7 100.0 1-1 100.0 2-2 100.0 17
Jan 2 Kenyon W, 59-53 1 25 1-2 50.0 0-0 - 2-3 66.7 4
Jan 3 Mary Washington L, 72-71 1 34 2-6 33.3 0-2 0.0 0-2 0.0 4
Jan 5 Lynchburg L, 68-67 1 30 3-9 33.3 0-1 0.0 1-3 33.3 7
Jan 9 at Eastern Mennonite L, 91-84 1 27 3-7 42.9 0-0 - 2-4 50.0 8
Jan 12 at Hampden-Sydney L, 61-41 1 27 2-7 28.6 0-1 0.0 1-3 33.3 5
Jan 14 at Emory & Henry W, 78-65 1 26 4-7 57.1 0-0 - 0-0 - 8
Jan 16 Roanoke W, 61-48 1 26 6-10 60.0 0-0 - 3-5 60.0 15
Jan 19 Guilford W, 62-58 1 36 4-11 36.4 0-1 0.0 1-2 50.0 9
Jan 23 at Randolph-Macon L, 74-39 1 33 3-9 33.3 0-1 0.0 2-4 50.0 8
Jan 26 Virginia Wesleyan W, 69-68 1 36 8-11 72.7 0-0 - 4-7 57.1 20
Jan 30 at Bridgewater W, 2-0 1 44 4-12 33.3 0-0 - 2-5 40.0 10
Feb 2 Hampden-Sydney L, 77-67 1 28 5-7 71.4 0-1 0.0 1-3 33.3 11
Feb 6 Emory & Henry W, 74-44 1 22 2-4 50.0 0-0 - 0-0 - 4
Feb 9 at Randolph L, 64-59 1 32 3-8 37.5 0-2 0.0 0-2 0.0 6
Feb 13 at Roanoke W, 75-56 1 26 4-10 40.0 0-1 0.0 2-4 50.0 10
Feb 16 Shenandoah W, 61-60 1 33 8-16 50.0 0-1 0.0 7-9 77.8 23
Feb 19 Eastern Mennonite L, 58-52 1 35 5-12 41.7 0-1 0.0 1-2 50.0 11
Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 16 vs. Tufts W, 79-68 1 26 5 2 7 4 5 0.8 0 4 1 0
Nov 17 at Rutgers-Newark L, 78-73 1 34 4 3 7 3 2 1.5 3 1 3 0
Nov 20 at Methodist W, 102-73 1 26 4 5 9 3 0 - 2 2 4 0
Nov 24 at Shenandoah W, 68-63 1 30 6 6 12 2 1 2.0 1 1 1 0
Dec 1 Randolph L, 67-52 1 31 4 5 9 1 1 1.0 1 1 2 0
Dec 3 at Ferrum L, 65-50 1 27 1 5 6 2 3 0.7 0 0 2 0
Dec 5 Averett W, 87-71 1 23 2 4 6 6 1 6.0 0 4 4 0
Dec 19 vs. Bates L, 66-61 1 27 4 10 14 1 3 0.3 2 2 4 0
Dec 21 vs. Marymount (Va.) W, 70-57 1 29 2 7 9 0 2 0.0 1 2 3 0
Jan 2 Kenyon W, 59-53 1 25 1 6 7 2 6 0.3 1 2 3 0
Jan 3 Mary Washington L, 72-71 1 34 3 12 15 5 3 1.7 4 3 2 0
Jan 5 Lynchburg L, 68-67 1 30 3 4 7 2 2 1.0 1 3 1 0
Jan 9 at Eastern Mennonite L, 91-84 1 27 1 6 7 2 1 2.0 4 2 5 0
Jan 12 at Hampden-Sydney L, 61-41 1 27 1 5 6 0 2 0.0 0 2 1 0
Jan 14 at Emory & Henry W, 78-65 1 26 1 5 6 4 1 4.0 1 5 2 0
Jan 16 Roanoke W, 61-48 1 26 2 9 11 2 2 1.0 5 4 1 0
Jan 19 Guilford W, 62-58 1 36 4 8 12 2 0 - 2 3 3 0
Jan 23 at Randolph-Macon L, 74-39 1 33 1 9 10 2 1 2.0 1 2 3 0
Jan 26 Virginia Wesleyan W, 69-68 1 36 3 5 8 4 3 1.3 2 3 3 0
Jan 30 at Bridgewater W, 2-0 1 44 7 14 21 4 5 0.8 2 2 1 0
Feb 2 Hampden-Sydney L, 77-67 1 28 2 4 6 3 2 1.5 3 1 4 0
Feb 6 Emory & Henry W, 74-44 1 22 4 9 13 4 1 4.0 0 1 0 0
Feb 9 at Randolph L, 64-59 1 32 1 7 8 11 4 2.8 1 1 3 0
Feb 13 at Roanoke W, 75-56 1 26 4 8 12 4 3 1.3 3 2 1 0
Feb 16 Shenandoah W, 61-60 1 33 4 7 11 1 1 1.0 2 1 4 0
Feb 19 Eastern Mennonite L, 58-52 1 35 4 8 12 6 6 1.0 2 1 2 0
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2012-13 26 26 29.7 4.1-8.6 48.0 0.1-0.8 13.6 1.8-3.2 56.0 10.2
Total 26 26 29.7 4.1-8.6 48.0 0.1-0.8 13.6 1.8-3.2 56.0 10.2
  gp gs min fg pct 3pt pct ft pct pts
2012-13 26 26 773 107-223 48.0 3-22 13.6 47-84 56.0 264
Total 26 26 773 107-223 48.0 3-22 13.6 47-84 56.0 264
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
2012-13 26 26 29.7 5.5-11.5 48.0 0.2-1.1 13.6 2.4-4.3 56.0 13.7
Total 26 26 29.7 5.5-11.5 48.0 0.2-1.1 13.6 2.4-4.3 56.0 13.7
  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
2012-13 26 26 29.7 3.0 6.7 9.7 2.4 0.0 3.1 2.3 1.3 1.7 2.1
Total 26 26 29.7 3.0 6.7 9.7 2.4 0.0 3.1 2.3 1.3 1.7 2.1
  gp gs min off def reb pf dq ast to a/to stl blk
2012-13 26 26 773 78 173 251 63 0 80 61 1.3 44 55
Total 26 26 773 78 173 251 63 0 80 61 1.3 44 55
  gp gs mpg off/40 def/40 reb/40 pf/40 dq/40 ast/40 to/40 a/to stl/40 blk/40
2012-13 26 26 29.7 4.0 9.0 13.0 3.3 0.0 4.1 3.2 1.3 2.3 2.8
Total 26 26 29.7 4.0 9.0 13.0 3.3 0.0 4.1 3.2 1.3 2.3 2.8
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Total 26 26 29.7 4.1-8.6 48.0 0.1-0.8 13.6 1.8-3.2 56.0 10.2
Conference 16 16 30.4 4.5-9.6 46.8 0.0-0.8 0.0 1.8-3.6 49.1 10.8
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -

Home 12 12 29.9 3.9-8.8 44.8 0.0-0.9 0.0 1.8-3.4 53.7 9.7
Away 11 11 30.2 4.1-8.6 47.4 0.1-0.6 14.3 1.5-3.0 51.5 9.8
Neutral 3 3 27.3 5.0-7.7 65.2 0.7-1.3 50.0 2.7-3.3 80.0 13.3

Wins 14 14 29.1 4.6-8.7 53.3 0.1-0.4 16.7 2.0-3.1 63.6 11.4
Losses 12 12 30.4 3.5-8.4 41.6 0.2-1.3 12.5 1.6-3.3 47.5 8.8

November 4 4 29.0 5.5-9.0 61.1 0.2-0.8 33.3 1.8-2.2 77.8 13.0
December 5 5 27.4 3.6-7.8 46.2 0.4-1.4 28.6 2.2-3.4 64.7 9.8
January 11 11 31.3 3.6-8.3 44.0 0.0-0.5 0.0 1.6-3.5 47.4 8.9
February 6 6 29.3 4.5-9.5 47.4 0.0-1.0 0.0 1.8-3.3 55.0 10.8
  gp gs min fg pct 3pt pct ft pct pts
Total 26 26 773 107-223 48.0 3-22 13.6 47-84 56.0 264
Conference 16 16 487 72-154 46.8 0-12 0.0 28-57 49.1 172
Exhibition - - - 0-0 - 0-0 - 0-0 - 0

Home 12 12 359 47-105 44.8 0-11 0.0 22-41 53.7 116
Away 11 11 332 45-95 47.4 1-7 14.3 17-33 51.5 108
Neutral 3 3 82 15-23 65.2 2-4 50.0 8-10 80.0 40

Wins 14 14 408 65-122 53.3 1-6 16.7 28-44 63.6 159
Losses 12 12 365 42-101 41.6 2-16 12.5 19-40 47.5 105

November 4 4 116 22-36 61.1 1-3 33.3 7-9 77.8 52
December 5 5 137 18-39 46.2 2-7 28.6 11-17 64.7 49
January 11 11 344 40-91 44.0 0-6 0.0 18-38 47.4 98
February 6 6 176 27-57 47.4 0-6 0.0 11-20 55.0 65
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
Total 26 26 29.7 5.5-11.5 48.0 0.2-1.1 13.6 2.4-4.3 56.0 13.7
Conference 16 16 30.4 5.9-12.6 46.8 0.0-1.0 0.0 2.3-4.7 49.1 14.1
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -

Home 12 12 29.9 5.2-11.7 44.8 0.0-1.2 0.0 2.5-4.6 53.7 12.9
Away 11 11 30.2 5.4-11.4 47.4 0.1-0.8 14.3 2.0-4.0 51.5 13.0
Neutral 3 3 27.3 7.3-11.2 65.2 1.0-2.0 50.0 3.9-4.9 80.0 19.5

Wins 14 14 29.1 6.4-12.0 53.3 0.1-0.6 16.7 2.7-4.3 63.6 15.6
Losses 12 12 30.4 4.6-11.1 41.6 0.2-1.8 12.5 2.1-4.4 47.5 11.5

November 4 4 29.0 7.6-12.4 61.1 0.3-1.0 33.3 2.4-3.1 77.8 17.9
December 5 5 27.4 5.3-11.4 46.2 0.6-2.0 28.6 3.2-5.0 64.7 14.3
January 11 11 31.3 4.7-10.6 44.0 0.0-0.7 0.0 2.1-4.4 47.4 11.4
February 6 6 29.3 6.1-13.0 47.4 0.0-1.4 0.0 2.5-4.5 55.0 14.8
  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
Total 26 26 29.7 3.0 6.7 9.7 2.4 0.0 3.1 2.3 1.3 1.7 2.1
Conference 16 16 30.4 3.0 6.9 9.9 2.2 0.0 3.0 1.9 1.6 1.8 2.1
Exhibition - - - - - - - - - - - - -

Home 12 12 29.9 3.0 6.8 9.8 2.4 0.0 3.2 2.3 1.4 1.9 2.2
Away 11 11 30.2 2.8 6.6 9.5 2.4 0.0 3.4 2.1 1.6 1.6 1.8
Neutral 3 3 27.3 3.7 6.3 10.0 2.7 0.0 1.7 3.3 0.5 1.0 2.7

Wins 14 14 29.1 3.5 6.8 10.3 2.2 0.0 3.0 2.2 1.4 1.6 2.6
Losses 12 12 30.4 2.4 6.5 8.9 2.7 0.0 3.2 2.5 1.3 1.8 1.6

November 4 4 29.0 4.8 4.0 8.8 2.2 0.0 3.0 2.0 1.5 1.5 2.0
December 5 5 27.4 2.6 6.2 8.8 3.0 0.0 2.0 2.0 1.0 0.8 1.8
January 11 11 31.3 2.5 7.5 10.0 2.3 0.0 2.6 2.4 1.1 2.1 2.8
February 6 6 29.3 3.2 7.2 10.3 2.3 0.0 4.8 2.8 1.7 1.8 1.2
  gp gs min off def reb pf dq ast to a/to stl blk
Total 26 26 773 78 173 251 63 0 80 61 1.3 44 55
Conference 16 16 487 48 111 159 35 0 48 30 1.6 29 34
Exhibition - - - - - - - - - - - - -

Home 12 12 359 36 81 117 29 0 38 28 1.4 23 27
Away 11 11 332 31 73 104 26 0 37 23 1.6 18 20
Neutral 3 3 82 11 19 30 8 0 5 10 0.5 3 8

Wins 14 14 408 49 95 144 31 0 42 31 1.4 22 36
Losses 12 12 365 29 78 107 32 0 38 30 1.3 22 19

November 4 4 116 19 16 35 9 0 12 8 1.5 6 8
December 5 5 137 13 31 44 15 0 10 10 1.0 4 9
January 11 11 344 27 83 110 25 0 29 26 1.1 23 31
February 6 6 176 19 43 62 14 0 29 17 1.7 11 7
  gp gs mpg off/40 def/40 reb/40 pf/40 dq/40 ast/40 to/40 a/to stl/40 blk/40
Total 26 26 29.7 4.0 9.0 13.0 3.3 0.0 4.1 3.2 1.3 2.3 2.8
There was a problem with a Velocity script
Pagebio-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($gamelogsCategoriesLabels)
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($gamelogsCategoriesLabels)
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: #macro (careerData $p)
144: 
145: #set ($p = $positions.get($p))
146: #set ($statPosBriefs = $briefs.get($p))
147: 
148: ## SECONDARY TAB CONTENT.
149: #if($briefsCategoriesLabels)
150:   #set ($class = "sub-tab-content")
151:   #if ($activePos == $p)
152:     #set ($class = "sub-tab-content active")
153:   #end
154:   #if ($isMobile)
155: 	<div class="mobile-bios-subtab-panel mobile-stats-panel-wrapper #if ($activePos == $p) active #end">
156:   #else
157: 	<div class="$class">
158:   #end
159: #end
160: 
161: 
162: #if (! $isMobile) 
163: 	<div class="stats-fullbox clearfix">
164: #else
165: 	<div class="mobile-stats-panel-container">
166: #end
167: <table>
168:   <tr>
169:     <th #if ($isMobile) class="mobile-stats-fixed-column" #end>&nbsp;</th>
170:     #foreach ($brief in $statPosBriefs)
171:       <th>$brief</th>
172:     #end
173:   </tr>
174: 
175: #set ($careerTotals = $request.getAttribute("careerTotals"))
176: #set ($careerMap = $request.getAttribute("careerMap"))
177: 
178: #foreach ($season in $seasons)
179:   ## Check if we did not get stats for this season
180:   #if ($careerMap.get($season.seasonName))
181:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName], '')
182:   #elseif ($wiki.valid())
183:     <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>
184:   #end
185: 
186: #end
187: 
188: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall, '')
189: 
190: 
191: </table>
192: 
193: </div> ## stats-fullbox
194: 
195: #if($briefsCategoriesLabels)
196: 	</div>
197: #end
198: #end ## macro splitsData
199: 
200: 
201: 
202: 
203: 
204: 
205: 
206: 
207: #macro (splitsData $p)
208: 
209: #set ($p = $positions.get($p))
210: #set ($statPosBriefs = $briefs.get($p))
211: 
212: ## SECONDARY TAB CONTENT.
213: #if($briefsCategoriesLabels)
214:   #set ($class = "sub-tab-content")
215:   #if ($activePos == $p)
216:     #set ($class = "sub-tab-content active")
217:   #end
218:   #if ($isMobile)
219: 	<div class="mobile-bios-subtab-panel mobile-stats-panel-wrapper #if ($activePos == $p) active #end">
220:   #else
221: 	<div class="$class">
222:   #end
223: #end	
224: 	
225: #if (! $isMobile) 
226: 	<div class="stats-fullbox clearfix">
227: #else
228: 	<div class="mobile-stats-panel-container">
229: #end
230: <table>
231:   <tr>
232:     <th #if ($isMobile) class="mobile-stats-fixed-column" #end>&nbsp;</th>
233:     #foreach ($brief in $statPosBriefs)
234:       <th>$brief</th>
235:     #end
236:   </tr>
237: 
238: #split($statPosBriefs, "Total", $splits.overall, "odd")
239: #split($statPosBriefs, "Conference", $splits.conference, "even")
240: #split($statPosBriefs, "Exhibition", $splits.exhibition, "odd")
241: 
242: #printSplitsHr()
243: 
244: #split($statPosBriefs, "Home", $splits.home, "odd")
245: #split($statPosBriefs, "Away", $splits.away, "even")
246: #split($statPosBriefs, "Neutral", $splits.neutral, "odd")
247: 
248: #printSplitsHr()
249: 
250: #set($isOddOrEven = 'odd')
251: 
252: #foreach($gameResult in $gamesResults.entrySet())
253: 	
254: 	#if($gameResult.key == "wins")
255: 		#set($splitGameResult = $splits.inWins)
256: 	#elseif($gameResult.key == "losses")
257: 		#set($splitGameResult = $splits.inLosses)
258: 	#elseif($gameResult.key == "ties")
259: 		#set($splitGameResult = $splits.inTies)
260: 	#end
261: 	
262: 	#split($statPosBriefs, $gameResult.value, $splitGameResult, $isOddOrEven)
263: 	
264: 	#if($isOddOrEven == 'even')
265: 		#set($isOddOrEven = 'odd')
266: 	#else
267: 		#set($isOddOrEven = 'even')
268: 	#end
269: #end
270: 
271: #printSplitsHr()
272: 
273: #if($monthsPlayed and $monthsPlayed.size() > 0)
274: 	
275: 	#set($isOddOrEven = 'odd')
276: 	
277: 	#foreach($month in $monthsPlayed)
278: 		#if($month == 'January')
279: 			#set($splitMonth =  $splits.january)
280: 		#elseif($month == 'February')
281: 			#set($splitMonth =  $splits.february)
282: 		#elseif($month == 'March')
283: 			#set($splitMonth =  $splits.march)
284: 		#elseif($month == 'April')
285: 			#set($splitMonth =  $splits.april)
286: 		#elseif($month == 'May')
287: 			#set($splitMonth =  $splits.may)
288: 		#elseif($month == 'June')
289: 			#set($splitMonth =  $splits.june)
290: 		#elseif($month == 'July')
291: 			#set($splitMonth =  $splits.july)
292: 		#elseif($month == 'August')
293: 			#set($splitMonth =  $splits.august)
294: 		#elseif($month == 'September')
295: 			#set($splitMonth =  $splits.september)
296: 		#elseif($month == 'October')
297: 			#set($splitMonth =  $splits.october)
298: 		#elseif($month == 'November')
299: 			#set($splitMonth =  $splits.november)
300: 		#elseif($month == 'December')
301: 			#set($splitMonth =  $splits.december)
302: 		#end
303: 		
304: 		#split($statPosBriefs, $month, $splitMonth, $isOddOrEven)
305: 		
306: 		#if($isOddOrEven == 'odd')
307: 			#set($isOddOrEven = 'even')
308: 		#else
309: 			#set($isOddOrEven = 'odd')
310: 		#end
311: 	#end	
312: #end	
313: 
314: </table>
315: 
316: </div> ## stats-fullbox
317: 
318: #if($briefsCategoriesLabels)
319: 	</div>
320: #end
321: 
322: #end ## macro splitsData
323: 
324: #macro (printRecentGames)
325: <table>
326: <tr><th colspan="3">Recent Games</th></tr>
327: #set ($eventEnd = -1)
328: #foreach ($event in $events)
329:   #if ($event.event.result.resolved)
330:     #set ($eventEnd = $velocityCount)
331:   #end
332: #end
333: #set ($eventStart = $eventEnd - 5)
334: #if ($eventStart < 0) #set ($eventStart = 0) #end
335: 
336: #set ($counter = 0)
337: #foreach ($event in $events)
338: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
339: 
340:  #set ($counter = $counter + 1)
341:  #if ($counter % 2 == 0)
342:   #set ($row = "even")
343:  #else
344:   #set ($row = "odd")
345:  #end
346: 
347:   <tr class="${row}">
348:     <td>$formatter.formatDate($event.event.date, "MMM d")</td>
349:     <td>
350:     #if ($event.event.neutralSite.length() > 0) vs.
351:     #elseif (!$event.event.home) at
352:     #else ## nothing for a home game
353:     #end
354:     $event.event.opponent.name</td>
355:     <td>
356:     #if ($event.event.statusCode >= 0)
357:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
358:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
359:       #else
360:       ${event.event.APResult}
361:       #end
362:     #end
363:   </tr>
364: #end ## if
365: #end
366: </table>
367: #end
368: 
369: #macro (printSubTab $pos $label $activePos $view)
370: 	<option #if ($activePos == $pos) selected="selected" #end value="${bioURL}?view=${view}&pos=${pos}">$!label</option>
371: #end
372: 
373: 	
374: #macro(printCategories $briefCategoryLabels $viewReport)
375: 	
376: 	#if ($isMobile)
377: 		<select class="mobile-bios-subtabs clearfix">
378: 	#else
379: 		<div class="stats-tabs-secondary clearfix">
380: 		  <ul class="clearfix">
381: 	#end
382: 			
383: 	#foreach($briefCat in $briefCategoryLabels.entrySet())
384: 		#set($briefCatLabel = $briefCat.value)
385: 		#set($briefCatKey = $briefCat.key)
386: 		
387: 		#if($locale == "en_gb" && $briefCatLabel == "Defense")
388: 			#set($briefCatLabel = "Defence")
389: 		#end	
390: 		
391: 		#if ($isMobile)
392: 			#printSubTab($briefCatKey, $briefCatLabel, $activePos, $viewReport)
393: 		#else
394: 			#if ($activePos == $briefCatKey)<li class="active">#else <li> #end<a href="${bioURL}?view=${viewReport}&pos=${briefCatKey}">$briefCatLabel</a></li>
395: 		#end
396: 	#end
397: 	
398: 	#if ($isMobile)
399: 		</select>
400: 	#else
401: 		   </ul>
402: 		</div> ## stats-tabs-secondary
403: 		<div class="sub-tab-panels">
404: 	#end	
405: 	
406: 	#foreach($briefCat in $briefCategoryLabels.entrySet())
407: 		#if($viewReport == "splits")
408: 			#splitsData($briefCat.key)
409: 		#elseif($viewReport == "career")
410: 			#careerData($briefCat.key)
411: 		#end	
412: 	#end
413: 	
414: 	#if (!$isMobile)
415: 		</div>
416: 	#end
417: 	
418: #end
419: 
420: 
421: 
422: #if ($isMobile)
423: 
424: #set ($activePos = $statPos)
425: #if ($request.getParameter("view") == "gamelog" && $positions.get($request.getParameter("pos")).length() > 0)
426: 	#set ($activePos = $positions.get($request.getParameter("pos")))
427: #end
428: 
429: <div id="tab-gamelog">
430: 
431: #if($gamelogsCategoriesLabels)
432: 
433: 	<select class="mobile-bios-subtabs clearfix">
434:     	#foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
435:     		#set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
436:     		
437:     		#if($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
438:     			#set($gamelogsCatLabelVal = "Defence")
439:     		#end
440:     
441:     		#printSubTab($gamelogsCatLabel.key, $gamelogsCatLabelVal, $activePos, 'gamelog')			
442:     	#end	
443:     </select> ## stats-tabs-secondary
444: 
445:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
446:     	#gamelogData($gamelogsCatLabel.key)
447:     #end
448: 
449: #else
450: 	#gamelogData($pos)
451: #end 
452: 	
453: </div> ## tab-content
454: ## END GAMELOG
455: 
456: 
457: 
458: 
459: 
460: 
461: 
462: 
463: 
464: ## CAREER
465: #set ($activePos = $statPos)
466: #if ($request.getParameter("view") == "career" && $positions.get($request.getParameter("pos")).length() > 0)
467: 	#set ($activePos = $positions.get($request.getParameter("pos")))
468: #end
469: 
470: 
471: <div id="tab-career">
472: 	
473: #if($briefsCategoriesLabels)
474: 	#printCategories($briefsCategoriesLabels, "career")
475: #else
476: 	#careerData($statPos)
477: #end
478: 
479: </div> ## tab-content
480: ## CAREER
481: 
482: 
483: 
484: 
485: 
486: 
487: 
488: 
489: 
490: 
491: 
492: 
493: ## SPLITS
494: #set ($activePos = $statPos)
495: #if ($request.getParameter("view") == "splits" && $positions.get($request.getParameter("pos")).length() > 0)
496: 	#set ($activePos = $positions.get($request.getParameter("pos")))
497: #end
498: 
499: 
500: <div id="tab-splits">
501: 	
502: #if($briefsCategoriesLabels)
503: 	#printCategories($briefsCategoriesLabels, "splits")
504: #else
505: 	#splitsData($statPos)
506: #end
507: 
508: </div> ## tab-content
509: ## SPLITS
510: 
511: 
512: 
513: 
514: 
515: #else
516: 
517: 
518: 
519: ## PROFILE
520: #set ($class = "tab-content clearfix")
521: #if ($view == "profile")
522: 	#set ($class = "tab-content clearfix active")
523: #end
524: <div class="${class}">
525: <div class="stats-wrapper clearfix">
526: 
527: ## LAST SIX GAMES
528: <div class="stats-halfbox-left">
529: #printRecentGames()
530: </div>
531: 
532: ## RANKING
533: $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
534: 
535: </div> ## stats-wrapper	
536: </div> ## tab-content
537: ## PROFILE
538: 
539: ## GAMELOG
540: #set ($class = "tab-content clearfix")
541: #if ($view == "gamelog")
542: 	#set ($class = "tab-content clearfix active")
543: #end
544: 
545: #set ($activePos = $statPos)
546: #if ($request.getParameter("view") == "gamelog" && $positions.get($request.getParameter("pos")).length() > 0)
547: 	#set ($activePos = $positions.get($request.getParameter("pos")))
548: #end
549: 
550: <div class="${class}">
551: <div class="stats-wrapper clearfix">
552: 
553: #if($gamelogsCategoriesLabels)
554: <div class="stats-tabs-secondary clearfix">
555: <ul class="clearfix">
556: 	#foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
557: 		#set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
558: 		
559: 		#if($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
560: 			#set($gamelogsCatLabelVal = "Defence")
561: 		#end
562: 
563: 		#if ($activePos == $$gamelogsCatLabel.key)<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=${gamelogsCatLabel.key}">$gamelogsCatLabelVal</a></li>
564: 	#end
565: </ul>
566: </div> ## stats-tabs-secondary
567: #end
568: 
569: #if($gamelogsCategoriesLabels)
570: 	<div class="sub-tab-panels">
571: 	#foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
572: 		#gamelogData($gamelogsCatLabel.key)
573: 	#end
574: 	</div>	
575: #else
576: 	
577:   #gamelogData($pos)
578:   
579: #end
580: 	
581: </div> ## stats-wrapper
582: </div> ## tab-content
583: ## GAMELOG
584: 
585: 
586: 
587: 
588: 
589: 
590: 
591: 
592: ## CAREER
593: #if ($showCareer)
594: #set ($class = "tab-content clearfix")
595: #if ($view == "career")
596: 	#set ($class = "tab-content clearfix active")
597: #end
598: 
599: #set ($activePos = $statPos)
600: #if ($request.getParameter("view") == "career" && $positions.get($request.getParameter("pos")).length() > 0)
601: 	#set ($activePos = $positions.get($request.getParameter("pos")))
602: #end
603: 
604: <div class="${class}">
605: <div class="stats-wrapper clearfix">
606: 
607: #if($briefsCategoriesLabels)
608: 	#printCategories($briefsCategoriesLabels, "career")
609: #else
610: 	#careerData($statPos)
611: #end		
612: 
613: </div> ## stats-wrapper
614: </div> ## tab-content
615: #end ## show career
616: ## CAREER
617: 
618: 
619: 
620: 
621: 
622: 
623: 
624: 
625: 
626: ## SPLITS
627: #set ($class = "tab-content clearfix")
628: #if ($view == "splits")
629: 	#set ($class = "tab-content clearfix active")
630: #end
631: 
632: #set ($activePos = $statPos)
633: #if ($request.getParameter("view") == "splits" && $positions.get($request.getParameter("pos")).length() > 0)
634: 	#set ($activePos = $positions.get($request.getParameter("pos")))
635: #end
636: 
637: <div class="${class}">
638: <div class="stats-wrapper clearfix">
639: 
640: #if($briefsCategoriesLabels)
641: 	#printCategories($briefsCategoriesLabels, "splits")
642: #else
643: 	#splitsData($statPos)
644: #end		
645: 
646: </div> ## stats-wrapper
647: </div> ## tab-content
648: ## SPLITS
649: 
650: #end ## MOBILE / DESKTOP STATS
651: 
652: #else
653: ## BIO
654: 
655: ## CHANGES FOR STATS
656: 
657: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
658: #set ($bioObject = $page.getDataAsObject())
659: #set ($statsURL = $bioObject.statsURL)
660: ## END OF HACK
661: 
662: #if ($statsURL.length() > 0)
663:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
664:   ## various settings to get the variables set
665:   #set ($events = $request.getAttribute("bio_events"))
666:   #set ($seasons = $request.getAttribute("bio_seasons"))
667:   #set ($career = $request.getAttribute("bio_career"))
668:   #set ($labels = $request.getAttribute("bio_labels"))
669:   #set ($briefs = $request.getAttribute("bio_briefs"))
670:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
671:   #set ($splits = $request.getAttribute("bio_splits"))
672:   #set ($statPosition = $request.getAttribute("bio_position"))
673:   #set ($positions = $request.getAttribute("bio_positions"))
674:   #set ($playerId = $request.getAttribute("bio_player_id"))
675:   #set ($highlights = $request.getAttribute("bio_highlights"))
676:   #set ($formats = $request.getAttribute("bio_formats"))
677: #end
678: 
679: ## END CHANGES FOR STATS
680: 
681: #set ($pos = "")
682: #set ($pos = $attributes.get("position"))
683: #set ($pos = $statPosition)
684: #set ($pos = $pos.toLowerCase())
685: #set ($posVec = $pos.split("/"))
686: #set ($pos = $posVec[0])
687: #set ($pos = $positions.get($pos))
688: #set ($highlights = $highlights.get($pos))
689: 
690: #set ($showHighlights = true)
691: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
692: 	#set ($showHighlights = false)
693: #end
694: #set ($showCareer = $wiki.valid() && $seasons)
695: #if ("yes" == $options.get("stats_show_career") && $seasons)
696:   #set ($showCareer = "yes")
697: #end
698: 
699: #set ($labels = $labels.get($pos))
700: #set ($briefs = $briefs.get($pos))
701: #set ($gamelogs = $gamelogs.get($pos))
702: #set ($stats = $splits.overall)
703: #set ($hasEvents = $events.size() > 0)
704: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
705: #set ($htmlStatsURL = "${page.url}-stats")
706: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
707: #set ($bioBriefURL = "${page.url}-brief")
708: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
709: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
710: #if ($options.get("bio_hide_roster") == true)
711: 	#set ($showRoster = false)
712: #end
713: 
714: ## Always default to the bio page if available
715: #set ($view = "bio")
716: 
717: #if ($hasSynopsis || $hasBioBrief)
718: 	#set ($view = "bio")
719: #elseif ($statsURL.length() > 0)
720: 	#set ($view = "profile")
721: #elseif ($hasHTMLStats)
722: 	#set ($view = "htmlstats")
723: #else
724: 	#set ($view = "")
725: #end
726: 
727: #if ($options.get("bio_default_view").length() > 0)
728: 	#set ($checkView = $options.get("bio_default_view"))
729: #end
730: 
731: #if ($request.getParameter("view"))
732: 	#set ($checkView = $request.getParameter("view"))
733: #end
734: 
735: #if ($checkView == "profile" && $statsURL.length() > 0)
736: 	#set ($view = "profile")
737: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
738: 	#set ($view = "bio")
739: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
740: 	#set ($view = "gamelog")
741: #elseif ($checkView == "career" && $showCareer)
742: 	#set ($view = "career")
743: #elseif ($checkView == "splits" && $statsURL.length() > 0)
744: 	#set ($view = "splits")
745: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
746: 	#set ($view = "htmlstats")
747: #end
748: 
749: #if ($attributes.get("full_name"))
750: 	#set ($fullName = $attributes.get("full_name"))
751: #else
752: 	#set ($firstName = $!attributes.get("first_name"))
753: 	#set ($lastName = $!attributes.get("last_name"))
754: 	#set ($fullName = "${firstName} ${lastName}")
755: #end
756: 
757: #macro (printHeadshot $width $height)
758: 	#if ($headshot.url)
759: 		<img src="$headshot.url?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
760: 	#else
761: 		#if ($website.exists("/images/setup/headshot_default.jpg"))
762: 			<img src="/images/setup/headshot_default.jpg?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
763: 		#else
764: 			<img src="/info/images/default_headshot.jpg?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
765: 		#end
766: 	#end
767: #end
768: 
769: #if ($isMobile)
770: 
771: #set ($hasBioTab = false)
772: #if ($hasSynopsis || $hasBioBrief)
773: 	#set ($hasBioTab = true)
774: #end
775: 
776: #set ($hasProfileTab = false)
777: #if (($highlights && $showHighlights) || $events.size() > 0 || $website.exists("$statsURL/../players"))
778: 	#set ($hasProfileTab = true)
779: #end
780: 
781: <script type="text/javascript">
782: 	window.mobileConf = {
783: 		page : 'bios',
784: 		pageParams : {
785: 			view : '$!view'
786: 		}
787: 	}
788: </script>
789: 
790: <div class="bios">
791: 	<div class="profile">
792: 		<div class="images">
793: 			<div class="photo">
794: 				#printHeadshot(81, 116)
795: 			</div>				
796: 			#if ($attributes.get("number"))	<div class="number"> $!attributes.get("number") </div> #end
797: 		</div>
798: 		<div class="texts">
799: 			<div class="name">$!attributes.get("first_name") $!attributes.get("last_name")</div>
800: 			<div class="data">
801: 				#foreach ($field in $fields)
802: 					#if (! $field.key.startsWith("custom"))
803: 						#if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
804: 
805: 							#if ($field.key == "phone1" || $field.key == "phone2")
806: 								Phone: $!attributes.get($field.key) <br />
807: 							#elseif ($field.key == "email_address")
808: 								#set ($emailAdd = $attributes.get($field.key))
809: 								Email: <a href="mailto:${emailAdd}">$emailAdd</a> <br />
810: 							#else
811: 								$field.value: $!attributes.get($field.key) <br />
812: 							#end
813: 
814: 							#set ($counter = $counter + 1)
815: 						#end
816: 					#end
817: 				#end
818: 					
819: 				#foreach ($i in [1..10])
820: 					#set ($customKey = "bio_custom${i}")
821: 					#if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
822: 						$options.get($customKey): </td><td class="val">$!attributes.get("custom${i}") <br />
823: 						#set ($counter = $counter + 1)
824: 					#end
825: 				#end
826: 				
827: 			</div>
828: 		</div>
829: 	</div>	
830: 
831: 	#if ($hasBioTab || $hasProfileTab)
832: 	<div class="details mobile-tabs mobile-stats" id="mobile-bios-tabs-container">
833: 		<ul class="mobile-bios-tabs">
834: 			#if ($hasBioTab)
835: 				<li><a data-view="bio" href="#tab-bios">Bio</a></li>
836: 			#end
837: 			#if ($hasProfileTab)
838: 				<li><a data-view="profile" href="#tab-profile">Profile</a></li>
839: 			#end
840: 			#if ($statsURL.length() > 0)
841: 				<li><a data-view="gamelog" href="#tab-gamelog">Game Log</a></li>
842: 				#if ($showCareer)
843: 				    <li><a data-view="career" href="#tab-career">Career</a></li>
844: 				#end
845: 				<li><a data-view="splits" href="#tab-splits">Splits</a></li>
846: 			#end
847: 		</ul>
848: 		
849: 		#if ($hasBioTab)
850: 		<div id="tab-bios">
851: 			#if ($hasSynopsis)
852: 				$synopsis
853: 			#elseif ($hasBioBrief)
854: 				<p>$website.include("$bioBriefURL")</p>
855: 			#end
856: 		</div>
857: 		#end
858: 		
859: 		#if ($hasProfileTab)
860: 		#set ($cellWidth = $tool.math.toInteger($tool.math.div(100, $highlights.size())))
861: 			
862: 		<div id="tab-profile">
863: 			## HIGHLIGHTS
864: 			#if ($highlights && $showHighlights)
865: 				<div class="bios-stat-wrapper">
866: 					<h4>Highlights</h4>
867: 					<table width="100%"><tr>
868: 					#foreach ($highlight in $highlights.keySet())
869: 						<th #if (! $isMobile) width="18%" #else width="${cellWidth}%" #end>$!highlights.get($highlight)</th>
870: 					#end
871: 					</tr><tr>
872: 					#foreach ($highlight in $highlights.keySet())
873: 						<td>
874: 						#set ($value = "-")
875: 						#set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
876: 						#if ($value.length() > 0)
877: 							<span class="value">$value</span>
878: 						#else
879: 							<span class="value">-</span>
880: 						#end	
881: 						</td>
882: 					#end
883: 					</tr></table>
884: 				</div>
885: 			#end
886: 			
887: 			## RECENT GAMES
888: 			#if ($events.size() > 0)
889: 			<div class="bios-stat-wrapper">
890: 				##<h4>Recent Games</h4>
891: 				#printRecentGames()
892: 			</div>
893: 			#end
894: 			
895: 			<div class="bios-stat-wrapper">
896: 				$website.include("$statsURL/../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${pos}")
897: 			</div>
898: 			
899: 		</div>
900: 		#end
901: 		
902: 		## STATS TABS
903: 		#if ($statsURL.length() > 0)
904: 			$website.includeAgain("${statsURL}?tmpl=bio-template&stats=1&biourl=${tool.esc.url($page.url)}&view=${view}&pos=${request.getParameter('pos')}")
905: 			
906: 			<div id="tab-splits"></div>
907: 			
908: 		#end
909: 		
910: 	</div>
911: 	#end
912: </div>   
913:    
914:    
915: #else
916: ## NOT MOBILE
917: 
918: <head>
919: 	<title>$fullName #if ($attributes.get("team")) | $attributes.get("team")#end</title>
920: 	<link rel="stylesheet" type="text/css" href="/info/bio-styles.css" />
921: </head>
922: 
923: ## FULL ROSTER
924: <div class="bio-wrap clearfix">
925: 
926: <div class="head clearfix">
927: 
928: <div class="bio-title">#if ($attributes.get("number"))<span class="number">$!attributes.get("number") - #end</span><span class="name">$fullName</span></div>
929: 
930: <div class="about">
931: 
932: <div class="clearfix">
933: 
934: #printHeadshot(150, 200)
935: 
936: #set ($counter = 0)
937: <table cellpadding="5" cellspacing="5" border="0">
938: 
939: #foreach ($i in [1..10])
940: 	#set ($stickyKey = "bio_custom${i}_sticky")
941: 	#if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
942: 		<tr><td class="lbl">$options.get($stickyKey): </td><td class="val">$!attributes.get("custom${i}")</td></tr>
943: 		#set ($counter = $counter + 1)
944: 	#end
945: #end
946: 
947: #foreach ($field in $fields)
948: 	#if (! $field.key.startsWith("custom"))
949: 		#if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
950: 
951: 			#if ($field.key == "phone1" || $field.key == "phone2")
952: 				<tr><td class="lbl">Phone: </td><td class="val">$!attributes.get($field.key)</td></tr>
953: 			#elseif ($field.key == "email_address")
954: 				#set ($emailAdd = $attributes.get($field.key))
955: 				<tr><td class="lbl">Email: </td><td class="val"><a href="mailto:${emailAdd}">$emailAdd</a></td></tr>
956: 			#else
957: 				<tr><td class="lbl">$field.value: </td><td class="val">$!attributes.get($field.key)</td></tr>
958: 			#end
959: 
960: 			#set ($counter = $counter + 1)
961: 		#end
962: 	#end
963: #end
964: 
965: #foreach ($i in [1..10])
966: 	#set ($customKey = "bio_custom${i}")
967: 	#if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
968: 		<tr><td class="lbl">$options.get($customKey): </td><td class="val">$!attributes.get("custom${i}")</td></tr>
969: 		#set ($counter = $counter + 1)
970: 	#end
971: #end
972: 
973: </table>
974: 
975: </div> ## clearfix
976: </div> ## ends about
977: 
978: #if ($highlights && $showHighlights)
979: <div class="headstats">
980: 	#foreach ($highlight in $highlights.keySet())
981: 		<div class="hst">
982: 		<span class="title" title="$!highlights.get($highlight)">$!highlights.get($highlight)</span>
983: 		#set ($value = "-")
984: 		#set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
985: 		#if ($value.length() > 0)
986: 			<span class="value">$value</span>
987: 		#else
988: 			<span class="value">-</span>
989: 		#end
990: 		</div>
991: 	#end
992: </div>
993: #end ## if-highlights
994: 
995: </div> ## ends head
996: 
997: #if ($hasSynopsis || $hasBioBrief || $statsURL.length() > 0 || $hasHTMLStats || $showRoster)
998: <div class="stats-tabs clearfix">
999: 	#if (($hasSynopsis || $hasBioBrief || $statsURL.length() > 0 || $hasHTMLStats) && $view.length() > 0)
1000: 	<ul class="clearfix">
1001: 		#if ($hasSynopsis || $hasBioBrief)
1002: 			#if ($view == "bio")<li class="active">#else<li>#end<a href="${page.url}?view=bio">Bio</a></li>
1003: 		#end
1004: 		
1005: 		#if ($statsURL.length() > 0)
1006: 			#if ($view == "profile")<li class="active">#else<li>#end<a href="${page.url}?view=profile">Player Profile</a></li>
1007: 			#if ($view == "gamelog")<li class="active">#else<li>#end<a href="${page.url}?view=gamelog">Game Log</a></li>
1008: 			#if ($showCareer)
1009:   			    #if ($view == "career")<li class="active">#else<li>#end<a href="${page.url}?view=career">Career Stats</a></li>
1010:   			#end
1011: 			#if ($view == "splits")<li class="active">#else<li>#end<a href="${page.url}?view=splits">Split Stats</a></li>
1012: 		#end
1013: 
1014: 		#if ($hasHTMLStats)
1015: 			#if ($view == "htmlstats")<li class="active">#else<li>#end<a href="${page.url}?view=htmlstats">HTML Stats</a></li>
1016: 		#end
1017: 	</ul>
1018: 	#end
1019: 	#if ($showRoster)
1020: 		#if ($page.contentType == "loki/bio")
1021: 			#set ($headlinesFeaturedSize = 0)
1022: 			#foreach ($featuredPage in $page.headlinesFeatured)
1023: 				#if ($featuredPage.contentType == "loki/headlines")
1024: 					#set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
1025: 				#end
1026: 			#end
1027: 			#if ($headlinesFeaturedSize > 0)
1028: 				<select class="roster-select-list">
1029: 					<option selected="selected" class="bold">Related Bios</option>
1030:     			#foreach ($featuredPage in $page.headlinesFeatured)
1031:     				#if ($featuredPage.contentType == "loki/headlines")
1032:     					$website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
1033:     				#end
1034: 				#end
1035: 				</select>
1036: 			#end
1037: 		#elseif ($page.contentType == "loki/bio-network")
1038: 			#set ($relatedPlayers = $page.sectionPage.children)
1039: 			#set ($teamNames = {})
1040: 			#foreach ($relatedPlayer in $relatedPlayers)
1041: 				#if ($relatedPlayer.contentType == "loki/bio-network")
1042: 					#set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
1043: 					## <span class="none relatedplayeratt">$relatedPlayerObj</span>
1044: 					#set ($teamName = $relatedPlayerObj.get("team"))
1045: 					#if ($teamName.length() > 0)
1046:     					#if (!$teamNames.containsValue($teamName))
1047:     						$!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
1048:     					#end
1049: 					#end
1050: 				#end
1051: 			#end
1052: 			##<span class="none teamnames">$teamNames</span>
1053: 			<select class="roster-select-list">
1054: 			#foreach ($i in [1..$teamNames.size()])
1055: 				#if ($teamNames.size() > 1)
1056: 					<optgroup label="$teamNames.get($i)">
1057: 				#end
1058: 				
1059: 				#foreach ($relatedPlayer in $relatedPlayers)
1060: 					#if ($relatedPlayer.contentType == "loki/bio-network")
1061: 						#set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
1062: 						#set ($teamName = $relatedPlayerObj.get("team"))
1063: 						#if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
1064: 							#set ($playerFirstName = $relatedPlayerObj.get("first_name"))
1065: 							#set ($playerLastName = $relatedPlayerObj.get("last_name"))
1066: 							#if ($page.url == $relatedPlayer.url)
1067: 								<option value="$relatedPlayer.url" selected="selected" class="bold">${playerFirstName} ${playerLastName}</option>
1068: 							#else
1069: 								<option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
1070: 							#end
1071: 						#end
1072: 					#end
1073: 				#end
1074: 				
1075: 				#if ($teamNames.size() > 1)
1076: 					</optgroup>
1077: 				#end
1078: 			#end
1079: 			</select>
1080: 		#end
1081: 	#end
1082: </div>
1083: #end
1084: 
1085: #if ($hasSynopsis || $hasBioBrief || $statsURL.length() > 0 || $hasHTMLStats)
1086: 	<div class="tab-content-panels">
1087: #end
1088: 
1089: ## BIO TAB
1090: #if ($hasSynopsis || $hasBioBrief)
1091: 
1092: #set ($class = "tab-content clearfix")
1093: #if ($view == "bio")
1094: 	#set ($class = "tab-content clearfix active")
1095: #end
1096: <div class="${class}">
1097: 
1098: <div class="synopsis clearfix">
1099: #if ($hasSynopsis)
1100: 	$synopsis
1101: #elseif ($hasBioBrief)
1102: 	$website.include("$bioBriefURL")
1103: #end
1104: </div>
1105: 
1106: </div> ## tab-content
1107: #end ## BIO TAB ENDS
1108: 
1109: ## STATS TABS
1110: #if ($statsURL.length() > 0)
1111:   $website.includeAgain("${statsURL}?tmpl=bio-template&stats=1&biourl=${tool.esc.url($page.url)}&view=${view}&pos=${request.getParameter('pos')}")
1112: #end
1113: 
1114: ## HTML TAB
1115: #if ($hasHTMLStats)
1116: 
1117: #set ($class = "tab-content clearfix")
1118: #if ($view == "htmlstats")
1119: 	#set ($class = "tab-content clearfix active")
1120: #end
1121: <div class="${class}">
1122: 	<a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
1123: </div>
1124: 
1125: #end
1126: 
1127: #if ($hasSynopsis || $hasBioBrief || $statsURL.length() > 0 || $hasHTMLStats)
1128: 	</div>
1129: #end
1130: 
1131: </div> ## ends bio-wrap
1132: 
1133: #if ($request.getAttribute("bioScriptCalled"))
1134:   #set ($scriptCalled = true)
1135: #else
1136:   #set ($scriptCalled = false)
1137: #end
1138: 
1139: #if (!$scriptCalled)
1140: 	
1141: $!request.setAttribute("bioScriptCalled", true)
1142: <script type="text/javascript" src="$website.cdn("/info/jquery.address-1.5.min.js")"></script>
1143: <script type="text/javascript">
1144: 
1145: jQuery.address.strict(false).state('${page.url}').init(function() {
1146: 	$('.bio-wrap .stats-tabs a').address();
1147: 	$('.bio-wrap .stats-tabs-secondary a').address();
1148: });
1149: 
1150: $(function() {
1151: 
1152: $('.bio-wrap .stats-tabs li').click(function(e) {
1153: 	e.preventDefault();
1154: 	if (!$(this).hasClass('active')) {
1155: 		$(this).addClass('active').siblings().removeClass('active');
1156: 		$(this).parent().parent('.stats-tabs').next('.tab-content-panels').children('.tab-content').removeClass('active').eq($(this).index()).addClass('active');
1157: 	}
1158: });
1159: 
1160: $('.bio-wrap .stats-tabs-secondary li').click(function(e) {
1161: 	e.preventDefault();
1162: 	if (!$(this).hasClass('active')) {
1163: 		$(this).addClass('active').siblings().removeClass('active');
1164: 		$(this).parent().parent('.stats-tabs-secondary').next('.sub-tab-panels').children('.sub-tab-content').removeClass('active').eq($(this).index()).addClass('active');
1165: 	}
1166: });
1167: 
1168: #if ($showRoster)
1169: 	$('.bio-wrap .roster-select-list').change(function() {
1170: 		window.location.href = $(this).val();
1171: 	});
1172: #end
1173: 
1174: #if ($hasHTMLStats)
1175: 	$('.bio-htmlstats-identifier').each(function() {
1176: 		var targetElement = $(this);
1177: 		jQuery.get($(this).attr('href'), function(data) {
1178: 			var htmlStats = $(data).find('center').first();
1179: 			htmlStats.add(htmlStats.siblings('center'));
1180: 			if (htmlStats.children().length > 0) {
1181: 				targetElement.replaceWith(htmlStats);
1182: 			}
1183: 		});
1184: 	});
1185: #end
1186: 
1187: });
1188: </script>
1189: #end
1190: 
1191: #end ## MOBILE CHECK
1192: #end ## STATS PARAMETER
1193: 
1194: $wiki