10 Hayden Latham
10 Hayden Latham
Height: 6-0
Year: Jr.
Hometown: Greenville, S.C.
High School: Christ Church Episcopal
Position: G
Major: Molecular, cellular and developmental biology
Residential College: Davenport
gp 26
pts/g 4.5
fg % 28.2
3pt % 36.2
ft % 74.5
reb/g 1.7
a/g 1.3

CAREER: Has appeared in 45 games in her Yale career with 14 starts ... She has averaged 19.2 minutes per game ... Scored 5.5 points per game, while shooting .319 from the field, .347 from three-point range and .796 from the free-throw line ... Averages 2.2 rebounds per game ... Tallied 64 assists, including a career-high 10 assists in her Yale debut, along with 32 steals and 12 blocks.

Career Highs

  • Points: 14, twice last vs. Sacred Heart, 11/16/13
  • FG Made: 4, six times last at Harvard, 3/7/14
  • FG Attempts: 10, vs. Princeton, 3/2/12
  • 3-Point FG Made: 3, twice last at Harvard, 3/7/14
  • 3-Point FG Attempts: 5, twice last vs. Bryant, 12/4/13
  • Free Throws Made: 8, vs. Boston University, 12/7/11
  • Free Throw Attempts: 9, vs. Boston University, 12/7/11
  • Rebounds: 8, at Houston, 11/25/11
  • Assists: 10, vs. Holy Cross, 11/11/11
  • Steals: 3, three times last at Fordham, 11/22/13
  • Blocked Shots: 2, twice last at Monmouth, 11/9/13
  • Minutes: 34, at Furman, 11/27/13

2013-14 Season: Appeared in 26 contests and started nine games ... Averaged 4.5 points and 1.7 rebounds per game ... Shot .362 from three-point range, .282 from the field overall and .745 from the foul line ... Scored a career-high 14 points with two blocked shots at Monmouth on Nov. 9 ... Matched career-high with 14 points against Sacred Heart on Nov. 16 ... Scored 12 points, hitting 3-of-4 three-pointers, with four rebounds at Harvard at March 7 ... Scored double-figures in five contests ... Played a season-high 34 minutes and gave out a season-high five assists with eight points, a steal and a blocked shot at Furman on Nov. 27 ... Collected a season-high five rebounds against UMass Lowell on Nov. 12 ... Made a season-high three steals at Fordham on Nov. 22 ... Finished the season with 33 assists, 15 steals and six blocked shots.

2013-14 Season Highs

  • Points: 14, twice last vs. Sacred Heart, 11/16/13
  • FG Made: 4, three times last at Harvard, 3/7/14
  • FG Attempts: 9, three times last vs. Army, 12/7/13
  • 3-Point FG Made: 3, twice last at Harvard, 3/7/14
  • 3-Point FG Attempts: 5, vs. Bryant, 12/4/13
  • Free Throws Made: 7, vs. Sacred Heart, 11/16/13
  • Free Throw Attempts: 8, at Monmouth, 11/9/13
  • Rebounds: 5, vs. UMass Lowell, 11/12/13
  • Assists: 5, at Furman, 11/27/13
  • Steals: 3, three times last at Fordham, 11/22/13
  • Blocked Shots: 2, at Monmouth, 11/9/13
  • Minutes: 34, at Furman, 11/27/13

2012-13 Season: Missed entire season due to injury.

2011-12 Season: Appeared in 19 games with five starts ... Missed nine games, including eight due to a concussion suffered during the game at Florida State on Dec. 28 ... Averaged 6.8 points, 2.8 rebounds and 1.6 assists per game ... Finished second on the team in free-throw shooting percentage (.843, 43-for-51) ... Named Ivy League Rookie of the Week on Feb. 20 after back-to-back 10-point games against Dartmouth (Feb. 17) and Harvard (Feb. 18) ... Matched a career-high 12 points behind 8-for-9 from the free-throw line in the loss vs. Boston University on Dec. 7 ... Recorded a career-high 12 points behind a perfect 7-for-7 from the free-throw line in the win at Houston on Nov. 25 ... Scored eight points and dished out a career-high 10 assists in her Yale debut vs. Holy Cross on Nov. 11.

2011-12 Season Highs

  • Points: 12, twice last vs. Boston University, 12/7/11
  • FG Made: 4, three times last vs. Princeton, 3/2/12
  • FG Attempts: 10, vs. Princeton, 3/2/12
  • 3-Point FG Made: 2, vs. Cornell, 2/10/12
  • 3-Point FG Attempts: 5, vs. Holy Cross, 11/11/11
  • Free Throws Made: 8, vs. Boston University, 12/7/11
  • Free Throw Attempts: 9, vs. Boston University, 12/7/11
  • Rebounds: 8, at Houston, 11/25/11
  • Assists: 10, vs. Holy Cross, 11/11/11
  • Steals: 3, twice last vs. Dartmouth, 2/17/12
  • Blocked Shots: 2, vs. Holy Cross, 11/11/11
  • Minutes: 27, twice last at Marist, 11/18/11

At Christ Church Episcopal School: Captained the Cavaliers in her junior and senior seasons ... Team's Most Valuable Player in her junior and senior seasons ... Led the Cavaliers to the South Carolina Class A state championship in 2009 and 2010 ... Averaged more than 27 points per game in her senior season ... Became first player in school history to record more than 2,000 career points ... Earned selection to the All-Region, All-County First Team, and All-State teams in her sophomore, junior and senior seasons ... S.C. Coaches Association of Womens' Sports A Player of the Year and All-Region Player of the Year in each of her final three seasons ... Greenville County Player of the Year as a senior ... Region 2-A Female Athlete of the Year as a senior.

Personal: Resident of Davenport College ... Daughter of Tom and Gina Latham ... Full name is Alexandra Hayden Latham ... Hayden's sister Katherine is a 2012 Yale graduate (Davenport College).

Recent Games
Feb 21 Cornell W, 60-52
Feb 22 Columbia W, 73-68
Feb 28 Princeton L, 85-63
Mar 1 Penn L, 62-48
Mar 7 at Harvard L, 69-65
Mar 8 at Dartmouth W, 57-41
Statistics category Overall Conf
Games 26 12
Games started 9 -
Minutes 486 193
Minutes per game 18.7 16.1
FG 33-117 12-45
FG Pct 28.2 26.7
3PT 17-47 8-21
3PT Pct 36.2 38.1
FT 35-47 10-12
FT Pct 74.5 83.3
Off rebounds 20 7
Def rebounds 24 5
Total rebounds 44 12
Rebounds per game 1.7 1.0
Personal fouls 34 15
Disqualifications 0 0
Assists 33 12
Turnovers 29 8
Assist to turnover ratio 1.1 1.5
Steals 15 6
Blocks 6 1
Points 118 42
Points per game 4.5 3.5
Points per 40 min 9.7 8.7
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 9 at Monmouth W, 64-55 1 28 4-8 50.0 2-3 66.7 4-8 50.0 14
Nov 12 UMass Lowell W, 90-77 1 20 0-1 0.0 0-0 - 2-3 66.7 2
Nov 16 Sacred Heart L, 67-54 1 25 3-7 42.9 1-2 50.0 7-7 100.0 14
Nov 19 at Boston University W, 78-68 - 20 0-1 0.0 0-0 - 6-6 100.0 6
Nov 22 at Fordham L, 80-52 1 28 4-9 44.4 1-3 33.3 1-2 50.0 10
Nov 25 at Miami (Fla.) L, 91-67 1 19 1-4 25.0 1-2 50.0 0-0 - 3
Nov 27 at Furman L, 66-61 1 34 3-9 33.3 0-3 0.0 2-4 50.0 8
Dec 4 Bryant W, 72-61 1 28 3-8 37.5 3-5 60.0 2-2 100.0 11
Dec 7 Army L, 68-56 1 30 1-9 11.1 0-2 0.0 1-2 50.0 3
Dec 10 Georgetown L, 66-65 1 10 0-3 0.0 0-1 0.0 0-0 - 0
Dec 19 Saint Peter's W, 66-35 - 17 1-5 20.0 1-2 50.0 0-0 - 3
Dec 29 at Kansas L, 79-63 - 17 0-5 0.0 0-2 0.0 0-0 - 0
Jan 5 at Maine W, 86-85 - 3 0-0 - 0-0 - 0-0 - 0
Jan 7 at New Hampshire L, 58-53 - 14 1-3 33.3 0-1 0.0 0-1 0.0 2
Jan 17 at Brown W, 70-53 - - - - - - - - -
Jan 24 Brown W, 73-52 - 15 3-5 60.0 2-3 66.7 0-0 - 8
Jan 31 at Columbia W, 76-51 - 22 1-5 20.0 1-2 50.0 2-3 66.7 5
Feb 1 at Cornell L, 65-56 - 10 1-2 50.0 0-1 0.0 0-0 - 2
Feb 7 Dartmouth W, 86-52 - 28 2-4 50.0 1-2 50.0 0-0 - 5
Feb 8 Harvard L, 58-57 - 22 0-6 0.0 0-2 0.0 3-4 75.0 3
Feb 14 at Penn L, 62-50 - 7 0-2 0.0 0-1 0.0 0-0 - 0
Feb 15 at Princeton L, 96-75 - 7 1-1 100.0 1-1 100.0 0-0 - 3
Feb 21 Cornell W, 60-52 - 22 0-3 0.0 0-1 0.0 2-2 100.0 2
Feb 22 Columbia W, 73-68 - 8 0-1 0.0 0-1 0.0 0-0 - 0
Feb 28 Princeton L, 85-63 - 17 0-6 0.0 0-2 0.0 0-0 - 0
Mar 1 Penn L, 62-48 - - - - - - - - -
Mar 7 at Harvard L, 69-65 - 19 4-8 50.0 3-4 75.0 1-1 100.0 12
Mar 8 at Dartmouth W, 57-41 - 16 0-2 0.0 0-1 0.0 2-2 100.0 2
Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 9 at Monmouth W, 64-55 1 28 0 2 2 1 3 0.3 0 2 0 0
Nov 12 UMass Lowell W, 90-77 1 20 2 3 5 2 1 2.0 0 1 4 0
Nov 16 Sacred Heart L, 67-54 1 25 2 0 2 1 3 0.3 1 1 0 0
Nov 19 at Boston University W, 78-68 - 20 0 3 3 0 1 0.0 1 0 0 0
Nov 22 at Fordham L, 80-52 1 28 3 1 4 3 2 1.5 3 0 1 0
Nov 25 at Miami (Fla.) L, 91-67 1 19 0 1 1 0 3 0.0 0 0 1 0
Nov 27 at Furman L, 66-61 1 34 3 1 4 5 3 1.7 1 1 2 0
Dec 4 Bryant W, 72-61 1 28 1 2 3 3 0 - 1 0 2 0
Dec 7 Army L, 68-56 1 30 1 0 1 2 1 2.0 1 0 1 0
Dec 10 Georgetown L, 66-65 1 10 0 1 1 0 1 0.0 0 0 2 0
Dec 19 Saint Peter's W, 66-35 - 17 1 1 2 1 1 1.0 0 0 1 0
Dec 29 at Kansas L, 79-63 - 17 0 2 2 3 1 3.0 1 0 1 0
Jan 5 at Maine W, 86-85 - 3 0 0 0 0 0 - 0 0 0 0
Jan 7 at New Hampshire L, 58-53 - 14 0 2 2 0 1 0.0 0 0 4 0
Jan 17 at Brown W, 70-53 - - - - - - - - - - - -
Jan 24 Brown W, 73-52 - 15 1 0 1 0 1 0.0 2 0 0 0
Jan 31 at Columbia W, 76-51 - 22 0 0 0 2 0 - 1 0 3 -
Feb 1 at Cornell L, 65-56 - 10 0 0 0 0 1 0.0 0 0 0 -
Feb 7 Dartmouth W, 86-52 - 28 0 1 1 3 0 - 1 0 2 0
Feb 8 Harvard L, 58-57 - 22 0 1 1 3 0 - 0 0 3 0
Feb 14 at Penn L, 62-50 - 7 1 0 1 0 0 - 0 0 0 -
Feb 15 at Princeton L, 96-75 - 7 0 0 0 0 0 - 0 0 1 -
Feb 21 Cornell W, 60-52 - 22 0 0 0 1 1 1.0 1 0 1 0
Feb 22 Columbia W, 73-68 - 8 1 0 1 1 2 0.5 0 0 1 0
Feb 28 Princeton L, 85-63 - 17 1 0 1 0 2 0.0 1 0 2 0
Mar 1 Penn L, 62-48 - - - - - - - - - - - -
Mar 7 at Harvard L, 69-65 - 19 3 1 4 1 0 - 0 0 1 -
Mar 8 at Dartmouth W, 57-41 - 16 0 2 2 1 1 1.0 0 1 1 -
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2013-14 26 9 18.7 1.3-4.5 28.2 0.7-1.8 36.2 1.3-1.8 74.5 4.5
Total 26 9 18.7 1.3-4.5 28.2 0.7-1.8 36.2 1.3-1.8 74.5 4.5
  gp gs min fg pct 3pt pct ft pct pts
2013-14 26 9 486 33-117 28.2 17-47 36.2 35-47 74.5 118
Total 26 9 486 33-117 28.2 17-47 36.2 35-47 74.5 118
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
2013-14 26 9 18.7 2.7-9.6 28.2 1.4-3.9 36.2 2.9-3.9 74.5 9.7
Total 26 9 18.7 2.7-9.6 28.2 1.4-3.9 36.2 2.9-3.9 74.5 9.7
  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
2013-14 26 9 18.7 0.8 0.9 1.7 1.3 0.0 1.3 1.1 1.1 0.6 0.2
Total 26 9 18.7 0.8 0.9 1.7 1.3 0.0 1.3 1.1 1.1 0.6 0.2
  gp gs min off def reb pf dq ast to a/to stl blk
2013-14 26 9 486 20 24 44 34 0 33 29 1.1 15 6
Total 26 9 486 20 24 44 34 0 33 29 1.1 15 6
  gp gs mpg off/40 def/40 reb/40 pf/40 dq/40 ast/40 to/40 a/to stl/40 blk/40
2013-14 26 9 18.7 1.6 2.0 3.6 2.8 0.0 2.7 2.4 1.1 1.2 0.5
Total 26 9 18.7 1.6 2.0 3.6 2.8 0.0 2.7 2.4 1.1 1.2 0.5
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Total 26 9 18.7 1.3-4.5 28.2 0.7-1.8 36.2 1.3-1.8 74.5 4.5
Conference 12 - 16.1 1.0-3.8 26.7 0.7-1.8 38.1 0.8-1.0 83.3 3.5
There was a problem with a Velocity script
Pagebio-template
ErrorVM #split: too few arguments to macro. Wanted 4 got 3 at bio-template[line 220, column 1]
Page source:
1: ## PICK UP OPTIONS
2: $website.include("options")
3: #set ($options = $request.getAttribute("options"))
4: #set ($locale = "en_us")
5: #set ($locale = $options.get("locale"))
6: 
7: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
8: #set ($bioObject = $page.getDataAsObject())
9: #set ($statsURL = $bioObject.statsURL)
10: 
11: #if ($statsURL.length() > 0)
12:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
13:   ## various settings to get the variables set
14:   #set ($events = $request.getAttribute("bio_events"))
15:   #set ($seasons = $request.getAttribute("bio_seasons"))
16:   #set ($career = $request.getAttribute("bio_career"))
17:   #set ($labels = $request.getAttribute("bio_labels"))
18:   #set ($briefs = $request.getAttribute("bio_briefs"))
19:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
20:   #set ($splits = $request.getAttribute("bio_splits"))
21:   #set ($statPosition = $request.getAttribute("bio_position"))
22:   #set ($positions = $request.getAttribute("bio_positions"))
23:   #set ($playerId = $request.getAttribute("bio_player_id"))
24:   #set ($highlights = $request.getAttribute("bio_highlights"))
25:   #set ($formats = $request.getAttribute("bio_formats"))
26:   #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
27:   #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
28:   #set ($gamesResults = $request.getAttribute("bio_games_results"))
29:   #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
30: #end
31: 
32: #set ($pos = "")
33: #set ($pos = $attributes.get("position"))
34: #set ($pos = $statPosition)
35: #set ($posVec = $pos.split("/"))
36: #set ($pos = $posVec[0])
37: #set ($pos = $pos.toLowerCase())
38: #set ($statPos = $positions.get($pos))
39: #set ($paramPos = $request.getParameter("pos"))
40: 
41: #set ($playerId = $attributes.get("playerId"))
42: #set ($stats = $splits.overall)
43: #set ($highlights = $highlights.get($statPos))
44: 
45: #set ($showHighlights = true)
46: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
47: 	#set ($showHighlights = false)
48: #end
49: 
50: #set ($showCareer = $wiki.valid() && $seasons)
51: #if ("yes" == $options.get("stats_show_career") && $seasons)
52:   #set ($showCareer = true)
53: #end
54: 
55: #set ($hasEvents = $events.size() > 0)
56: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
57: #set ($htmlStatsURL = "${page.url}-stats")
58: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
59: #set ($bioBriefURL = "${page.url}-brief")
60: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
61: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
62: #if ($options.get("bio_hide_roster") == true)
63:   #set ($showRoster = false)
64: #end
65: 
66: #set ($view = "")
67: #if ($hasSynopsis || $hasBioBrief)
68:   #set ($view = "bio")
69: #elseif ($statsURL.length() > 0)
70:   #set ($view = "profile")
71: #elseif ($hasHTMLStats)
72:   #set ($view = "htmlstats")
73: #elseif ($releases.size() > 0)
74:   #set ($view = "news")
75: #end
76: 
77: #if ($options.get("bio_default_view").length() > 0)
78:   #set ($checkView = $options.get("bio_default_view"))
79: #end
80: 
81: #if ($request.getParameter("view"))
82:   #set ($checkView = $request.getParameter("view"))
83: #end
84: 
85: #if ($checkView == "profile" && $statsURL.length() > 0)
86:   #set ($view = "profile")
87: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
88:   #set ($view = "bio")
89: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
90:   #set ($view = "gamelog")
91: #elseif ($checkView == "career" && $showCareer)
92:   #set ($view = "career")
93: #elseif ($checkView == "splits" && $statsURL.length() > 0)
94:   #set ($view = "splits")
95: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
96:   #set ($view = "htmlstats")
97: #elseif ($checkView == "news" && $releases.size() > 0)
98:   #set ($view = "news")
99: #end
100: 
101: #macro (gamelogData $p)
102: 
103: #set ($p = $positions.get($p))
104: #set ($gamelogs = $gamelogs.get($p))
105: 	
106: #if ($hasEvents)
107: <div class="stats-box full clearfix">
108: <div class="scrollable">
109: <div>
110: <table>
111:   <tr class="thead">
112:     <th class="text">Date</th>
113:     <th class="pinned-col text">Opponent</th>
114:     <th>Score</th>
115:     #foreach ($gamelog in $gamelogs)
116:       <th>$gamelog</th>
117:     #end
118:   </tr>
119: #foreach ($event in $events)
120:   <tr>
121:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
122:     <td class="pinned-col text">
123:       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
124:       $event.event.opponent.name
125:     </td>
126:     <td>
127:     #if ($event.event.statusCode >= 0)
128:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
129:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
130:       #else
131:       ${event.event.APResult}
132:       #end
133:     #else &nbsp; #end
134:     </td>
135:     #foreach ($gamelog in $gamelogs.keySet())
136:       #set ($value = "-")
137:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
138:       <td>$value</td>
139:     #end
140:   </tr>
141: #end
142: </table>
143: </div>
144: </div> ## scrollable
145: </div> ## stats-box
146: #end
147: 
148: #end ## macro gamelogData
149: 
150: #macro (split $statPosBriefs $label $stats)
151:   <tr>
152:     <td class="pinned-col text">${label}</td>
153:     #foreach ($brief in $statPosBriefs.keySet())
154:       #set ($value = "-")
155:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
156:       <td>#if ($value.length() > 0) $value #else - #end</td>
157:     #end
158:   </tr>
159: #end
160: 
161: #macro (careerData $p)
162: #set ($p = $positions.get($p))
163: #set ($statPosBriefs = $briefs.get($p))
164: 
165: <div class="stats-box full clearfix">
166: <div class="scrollable">
167: <div>
168: <table>
169: <tr class="thead">
170:   <th class="pinned-col">&nbsp;</th>
171:   #foreach ($brief in $statPosBriefs)
172:     <th>$brief</th>
173:   #end
174: </tr>
175: 
176: #set ($careerTotals = $request.getAttribute("careerTotals"))
177: #set ($careerMap = $request.getAttribute("careerMap"))
178: 
179: #foreach ($season in $seasons)
180:   ## Check if we did not get stats for this season
181:   #if ($careerMap.get($season.seasonName))
182:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName])
183:   #elseif ($wiki.valid())
184:     <tr>
185:       <td class="text">${season.seasonName}</td>
186:       <td colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
187:     </tr>
188:   #end
189: #end
190: 
191: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
192: 
193: </table>
194: </div>
195: </div> ## scrollable
196: </div> ## stats-box
197: 
198: #end ## macro careerData
199: 
200: #macro (splitsData $p)
201: 
202: #set ($p = $positions.get($p))
203: #set ($statPosBriefs = $briefs.get($p))
204: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))	
205: 	
206: #if ($statPosBriefs.size() > 0)
207: <div class="stats-box full clearfix">
208: <div class="scrollable">
209: <div>
210: <table>
211:   <tr>
212:     <th class="pinned-col">&nbsp;</th>
213:     #foreach ($brief in $statPosBriefs)
214:       <th>$brief</th>
215:     #end
216:   </tr>
217: 
218: #split($statPosBriefs, "Total", $splits.overall)
219: #split($statPosBriefs, "Conference", $splits.conference)
220: #split($statPosBriefs, "Exhibition", $splits.exhibition)
221: 
222: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
223: 
224: #split($statPosBriefs, "Home", $splits.home)
225: #split($statPosBriefs, "Away", $splits.away)
226: #split($statPosBriefs, "Neutral", $splits.neutral)
227: 
228: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
229: 
230: #foreach($gameResult in $gamesResults.entrySet())
231:   #if ($gameResult.key == "wins")
232:     #set ($splitGameResult = $splits.inWins)
233:   #elseif ($gameResult.key == "losses")
234:     #set ($splitGameResult = $splits.inLosses)
235:   #elseif ($gameResult.key == "ties")
236:     #set ($splitGameResult = $splits.inTies)
237:   #end
238: 	
239:   #split($statPosBriefs, $gameResult.value, $splitGameResult)
240: #end
241: 
242: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
243: 
244: #if ($monthsPlayed and $monthsPlayed.size() > 0)
245:   #foreach($month in $monthsPlayed)
246:     #if ($month == 'January')
247:       #set ($splitMonth = $splits.january)
248:     #elseif ($month == 'February')
249:       #set ($splitMonth = $splits.february)
250:     #elseif ($month == 'March')
251:       #set($splitMonth = $splits.march)
252:     #elseif ($month == 'April')
253:       #set($splitMonth = $splits.april)
254:     #elseif ($month == 'May')
255:       #set ($splitMonth = $splits.may)
256:     #elseif ($month == 'June')
257:       #set ($splitMonth = $splits.june)
258:     #elseif ($month == 'July')
259:       #set($splitMonth = $splits.july)
260:     #elseif ($month == 'August')
261:       #set ($splitMonth = $splits.august)
262:     #elseif ($month == 'September')
263:       #set($splitMonth = $splits.september)
264:     #elseif ($month == 'October')
265:       #set($splitMonth = $splits.october)
266:     #elseif ($month == 'November')
267:       #set ($splitMonth = $splits.november)
268:     #elseif ($month == 'December')
269:       #set($splitMonth = $splits.december)
270:     #end
271: 		
272:     #split($statPosBriefs, $month, $splitMonth)
273:   #end ## foreach
274: #end
275: </table>
276: </div>
277: </div> ## scrollable
278: </div> ## srollable-table
279: #end
280: 
281: #end ## macro splitsData
282: 
283: #macro (printRecentGames)
284: #if ($hasEvents)
285: <table>
286:   <tr class="thead"><th colspan="3">Recent Games</th></tr>
287:   
288: #set ($eventEnd = -1)
289: #foreach ($event in $events)
290:   #if ($event.event.result.resolved)
291:     #set ($eventEnd = $velocityCount)
292:   #end
293: #end
294: 
295: #set ($eventStart = $eventEnd - 5)
296: #if ($eventStart < 0) #set ($eventStart = 0) #end
297: 
298: #foreach ($event in $events)
299: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
300:   <tr>
301:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
302:     <td class="text">
303:       #if ($event.event.neutralSite.length() > 0) vs.
304:       #elseif (!$event.event.home) at
305:       #else ## nothing for a home game
306:       #end
307:       $event.event.opponent.name
308:     </td>
309:     <td class="text">
310:     #if ($event.event.statusCode >= 0)
311:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
312:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
313:       #else
314:       ${event.event.APResult}
315:       #end
316: 	#end
317: 	</td>
318:   </tr>
319: #end ## if
320: #end
321: </table>
322: #end
323: #end ## macro printRecentGames
324: 
325: #macro (printCategories $briefCategoryLabels $v)
326: 	
327: <div class="tab-container secondary clearfix" data-module="amd-tabs">
328: <div class="tab-nav" data-module="jscroll" data-momentum="false">
329: <div>
330: <ul class="clearfix">
331: #foreach($briefCat in $briefCategoryLabels.entrySet())
332:   #set ($briefCatLabel = $briefCat.value)
333:   #set ($briefCatKey = $briefCat.key)
334: 		
335:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
336:     #set ($briefCatLabel = "Defence")
337:   #end	
338: 	
339:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}">$briefCatLabel</a></li>
340: #end
341: </ul>
342: </div>
343: </div>
344: <div class="tab-panels">
345: #foreach ($briefCat in $briefCategoryLabels.entrySet())
346:   #set ($class = "tab-panel clearfix")
347:   #if ($briefCat.key == $activePos)
348:     #set ($class = "tab-panel active clearfix")
349:   #end
350:   <div class="$class">
351:     <div class="stats-wrap clearfix">
352:     #if ($v == "splits")
353:       #splitsData($briefCat.key)
354:     #elseif ($v == "career")
355:       #careerData($briefCat.key)
356:     #end
357:     </div>
358:   </div>
359: #end	
360: </div>
361: </div> ## tab-container
362: 
363: #end ## macro printCategories
364: 	
365: #macro (printHeadshot)
366: 
367: #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
368: 
369: #if ($headshot.url)
370:   <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
371: #else
372:   #if ($website.exists("/images/setup/headshot_default.jpg"))
373:     <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
374:   #else
375:     <img src="/info/images/default_headshot.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
376:   #end
377: #end
378: #end ## macro printHeadshot
379: 	
380: #macro (printBioInfo)
381: <div class="player-name">
382:   #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
383:   <span class="name">$fullName</span>
384: </div>	
385: 	
386: <table>
387: #foreach ($i in [1..10])
388:   #set ($stickyKey = "bio_custom${i}_sticky")
389:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
390:     <tr>
391:       <td class="label">$options.get($stickyKey): </td>
392:       <td class="value">$!attributes.get("custom${i}")</td>
393:     </tr>
394:   #end
395: #end
396: 
397: #foreach ($field in $fields)
398:   #if (!$field.key.startsWith("custom"))
399:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
400:       #if ($field.key == "phone1" || $field.key == "phone2")
401:         <tr>
402:           <td class="label">Phone: </td>
403:           <td class="value">$!attributes.get($field.key)</td>
404:         </tr>
405:       #elseif ($field.key == "email_address")
406:         #set ($emailAdd = $attributes.get($field.key))
407:         <tr>
408:           <td class="label">Email: </td>
409:           <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td>
410:         </tr>
411:       #else
412:         <tr>
413:           <td class="label">$field.value: </td>
414:           <td class="value">$!attributes.get($field.key)</td>
415:         </tr>
416:       #end
417:     #end
418:   #end
419: #end
420: 
421: #foreach ($i in [1..10])
422:   #set ($customKey = "bio_custom${i}")
423:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
424:     <tr>
425:       <td class="label">$options.get($customKey): </td>
426:       <td class="value">$!attributes.get("custom${i}")</td>
427:     </tr>
428:   #end
429: #end
430: </table>
431: #end ## macro printBioInfo
432: 	
433: #macro (printHighlights)
434: #foreach ($highlight in $highlights.keySet())
435:   #set ($value = "-")
436:   #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
437:   <div class="stat clearfix">
438:     <span class="stat-title">$!highlights.get($highlight)</span>
439:     <span class="stat-value">$value</span>
440:   </div>
441: #end
442: #end ## macro printHighlights
443: 	
444: #macro (printRoster)
445: #if ($page.contentType == "loki/bio")
446:   #set ($headlinesFeaturedSize = 0)
447:   #foreach ($featuredPage in $page.headlinesFeatured)
448:     #if ($featuredPage.contentType == "loki/headlines")
449:       #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
450:     #end
451:   #end
452:   #if ($headlinesFeaturedSize > 0)
453:     <select class="roster-select-list">
454:       <option selected="selected">Related Bios</option>
455:       #foreach ($featuredPage in $page.headlinesFeatured)
456:         #if ($featuredPage.contentType == "loki/headlines")
457:           $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
458: 		#end
459: 	  #end
460:     </select>
461:   #end
462: #elseif ($page.contentType == "loki/bio-network")
463:   #set ($relatedPlayers = $page.sectionPage.children)
464:   #set ($teamNames = {})
465:   #foreach ($relatedPlayer in $relatedPlayers)
466:     #if ($relatedPlayer.contentType == "loki/bio-network")
467:       #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
468:       #set ($teamName = $relatedPlayerObj.get("team"))
469:       #if ($teamName.length() > 0)
470:         #if (!$teamNames.containsValue($teamName))
471:           $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
472:         #end
473:       #end
474:     #end
475:   #end
476: 
477:   <select class="roster-select-list">
478:   #foreach ($i in [1..$teamNames.size()])
479:     #if ($teamNames.size() > 1)
480:       <optgroup label="$teamNames.get($i)">
481:     #end
482: 				
483:     #foreach ($relatedPlayer in $relatedPlayers)
484:       #if ($relatedPlayer.contentType == "loki/bio-network")
485:         #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
486:         #set ($teamName = $relatedPlayerObj.get("team"))
487:         #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
488:           #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
489:           #set ($playerLastName = $relatedPlayerObj.get("last_name"))
490:           #if ($page.url == $relatedPlayer.url)
491:             <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option>
492:           #else
493:             <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
494:           #end
495:         #end
496:       #end
497:     #end
498: 				
499:     #if ($teamNames.size() > 1)
500:       </optgroup>
501:     #end
502:   #end
503:   </select>
504: #end
505: #end ## macro printRoster
506: 	
507: ################################################## END MACROS  #############################################################
508: 
509: #if ($attributes.get("full_name").length() > 0)
510:   #set ($fullName = $attributes.get("full_name"))
511: #else
512:   #set ($firstName = $!attributes.get("first_name"))
513:   #set ($lastName = $!attributes.get("last_name"))
514:   #set ($fullName = "${firstName} ${lastName}")
515: #end
516: 
517: ## FULL ROSTER
518: <div class="bio-wrap clearfix">
519: 	
520: ## RELATED BIOS
521: #if ($showRoster)
522:   <div class="related-bios clearfix">#printRoster</div>
523: #end
524:   
525: <div class="head clearfix">
526: <div class="clearfix">
527:     
528: <div class="player-about clearfix">
529:   <div class="player-headshot">#printHeadshot</div>
530:   <div class="player-info">#printBioInfo</div>
531: </div>
532: 
533: #if ($highlights && $showHighlights)
534:   <div class="player-highlights clearfix">#printHighlights</div>
535: #end
536: 
537: </div>
538: </div> ## head
539: 
540: #if ($view.length() > 0)
541: <div class="body clearfix">
542:   
543: <div class="tab-container primary clearfix" data-module="amd-tabs">
544: <div class="tab-nav" data-module="jscroll" data-momentum="false">
545:   <div>
546:   <ul class="clearfix">
547:   #if ($hasSynopsis || $hasBioBrief)
548:     <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li>
549:   #end
550: 		
551:   #if ($statsURL.length() > 0)
552:     <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li>
553:     <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li>
554:     #if ($showCareer)
555:       <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li>
556:     #end
557:     <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li>
558:   #end
559: 
560:   #if ($hasHTMLStats)
561:     <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li>
562:   #end
563:  
564:   #if ($releases.size() > 0)
565: 	<li #if ($view == "news") class="active" #end><a href="${page.url}?view=news">News</a></li>
566:   #end
567:   </ul>
568:   </div>
569: </div> ## tab-nav
570: 
571: <div class="tab-panels clearfix">
572: 	
573: ## BIO
574: #if ($hasSynopsis || $hasBioBrief)
575: 
576: #set ($class = "tab-panel clearfix")
577: #if ($view == "bio")
578:   #set ($class = "tab-panel active clearfix")
579: #end
580: <div class="${class}">
581: 
582: <div class="synopsis clearfix">
583: #if ($hasSynopsis)
584:   $synopsis
585: #elseif ($hasBioBrief)
586:   $website.include("$bioBriefURL")
587: #end
588: </div>
589: 
590: </div> ## tab-panel
591: #end 
592: ## BIO
593: 
594: ## STATS
595: #if ($statsURL.length() > 0)
596: 
597: ## PROFILE
598: #set ($class = "tab-panel clearfix")
599: #if ($view == "profile")
600:   #set ($class = "tab-panel active clearfix")
601: #end
602: <div class="${class}">
603: <div class="stats-wrap clearfix">
604: 
605: ## LAST SIX GAMES
606: <div class="stats-box half">
607: #printRecentGames()
608: </div>
609: 
610: ## RANKING
611: <div class="stats-box half">
612: #if ($statPos.length() > 0)
613:   $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
614: #end
615: </div>
616: 
617: </div> ## stats-wrap	
618: </div> ## tab-content
619: ## PROFILE
620: 
621: ## GAMELOG
622: #set ($class = "tab-panel clearfix")
623: #if ($view == "gamelog")
624:   #set ($class = "tab-panel active clearfix")
625: #end
626: 
627: #set ($activePos = $statPos)
628: #if ($view == "gamelog" && $paramPos.length() > 0)
629:   #if ($positions.get($paramPos).length() > 0)
630:     #set ($activePos = $positions.get($paramPos))
631:   #end
632: #end
633: 
634: <div class="${class}">
635: 
636: #if ($gamelogsCategoriesLabels)
637: <div class="tab-container secondary clearfix" data-module="amd-tabs">
638:   <div class="tab-nav" data-module="jscroll" data-momentum="false">
639:     <div>
640:     <ul class="clearfix">
641:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
642:       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
643: 		
644:       #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
645:         #set($gamelogsCatLabelVal = "Defence")
646:       #end
647: 
648:       <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end><a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}">$gamelogsCatLabelVal</a></li>
649:     #end
650:     </ul>
651: 	</div>
652:   </div>
653:   <div class="tab-panels">
654:   #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
655:     #set ($class = "tab-panel clearfix")
656:     #if ($gamelogsCatLabel.key == $activePos)
657:       #set ($class = "tab-panel active clearfix")
658:     #end
659:     <div class="${class}">
660:       <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
661: 	</div>
662:   #end   
663:   </div>
664: </div>	
665: #else
666:   <div class="stats-wrap clearfix">#gamelogData($pos)</div>
667: #end
668: 	
669: </div> ## tab-panel
670: ## GAMELOG
671: 
672: 
673: ## CAREER
674: #if ($showCareer)
675: 
676: #set ($activePos = $statPos)
677: #if ($view == "career" && $paramPos.length() > 0)
678:   #if ($positions.get($paramPos).length() > 0)
679:     #set ($activePos = $positions.get($paramPos))
680:   #end
681: #end
682: 
683: #set ($class = "tab-panel clearfix")
684: #if ($view == "career")
685:   #set ($class = "tab-panel active clearfix")
686: #end
687: 
688: <div class="${class}">
689: 
690: #if ($briefsCategoriesLabels)
691:   #printCategories($briefsCategoriesLabels "career")
692: #else
693:   <div class="stats-wrap clearfix">#careerData($activePos)</div>
694: #end		
695: 
696: </div> ## tab-panel
697: #end
698: ## CAREER
699: 
700: ## SPLITS
701: #set ($class = "tab-panel clearfix")
702: #if ($view == "splits")
703: 	#set ($class = "tab-panel active clearfix")
704: #end
705: 
706: #set ($activePos = $statPos)
707: #if ($view == "splits" && $paramPos.length() > 0)
708:   #if ($positions.get($paramPos).length() > 0)
709:     #set ($activePos = $positions.get($paramPos))
710:   #end
711: #end
712: 
713: <div class="${class}">
714: 
715: #if ($briefsCategoriesLabels)
716:   #printCategories($briefsCategoriesLabels "splits")
717: #else
718:   <div class="stats-wrap clearfix">#splitsData($pos)</div>
719: #end		
720: 
721: </div> ## tab-panel
722: ## SPLITS
723: 
724: #end 
725: ## STATS
726: 
727: ## HTML STATS
728: #if ($hasHTMLStats)
729: 
730: #set ($class = "tab-panel clearfix")
731: #if ($view == "htmlstats")
732:   #set ($class = "tab-panel active clearfix")
733: #end
734: <div class="${class}">
735:   <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
736: </div>
737: 
738: #end
739: ## HTML STATS
740: 
741: ## NEWS
742: #set ($class = "tab-panel clearfix")
743: #if ($view == "news")
744:   #set ($class = "tab-panel active clearfix")
745: #end
746: <div class="bio-news ${class}">
747: 
748: #set ($counter = 0)
749: 
750: #foreach ($article in $releases)
751: #if ($article.title.length() > 0)
752: 
753: #set ($counter = $counter + 1)
754: 
755: #if ($counter == 1)
756:   <div class="row clearfix">
757: #end
758: 
759: <div class="item">
760: <div>
761: #if ($article.thumbnailURL)
762:   <img src="${article.thumbnailURL}?max_width=300" alt="" />
763: #else
764:   <img src="/images/setup/thumbnail_default.jpg" alt="" />
765: #end
766: 
767: <a href="$article.url" class="title">$article.title</a>
768: 
769: </div>
770: </div> ## item
771: 
772: #if ($counter == 3 || $velocityCount == $releases.size())
773:   </div> ## row
774:   #set ($counter = 0)
775: #end
776: 
777: #end
778: #end ## foreach
779: 
780: </div> ## tab-content
781: ## NEWS
782: 	
783: </div> ## tab-panels
784: </div> ## tab-container
785: </div> ## body
786: #end
787: 
788: $wiki
789: </div> ## ends bio-wrap