5 Ben Stelzer
5 Ben Stelzer
Height: 6-1
Weight: 170
Year: So.
Hometown: Manitowoc, Wis./Roncalli
Position: G
gp 30
pts/g 12.1
fg % 45.2
3pt % 45.9
ft % 91.2
reb/g 1.9
a/g 1.7

College: 2012-13: Earned the Billy Gappy Most Improved Player Award and was named to the GLIAC All-Tournament Team ... Started all 30 games ... Averaged 12.1 points per game ... Ranked second in the league in free throw shooting at 91.2-percent (62-68) ... Ranked third in the GLIAC in 3-point shooting (.459) ... Made 84 3-pointers, most in the GLIAC ... Scored a season-high 25 points, including  six 3-pointers, in win over UW-Parkside in the NCAA Midwest Regional on March 16 ... Scored in double figures 18 times ... Drained a season-high seven 3-pointers at Grand Valley State on Jan. 12 2011-12: Earned the Bob Olson Award as the team's outstanding newcomer ... Appeared in all 28 games, starting final 25 ... averaged 7.3 points per game ... Scored in double figures six times, including a season-high 21 against Ferris State on Jan. 19th ... Ranked second on the team and 12th in the league in 3-pointers made (48) ... Finished eighth in the GLIAC in assist-to-turnover ratio (1.8) ... Grabbed a career-high eight rebounds against Lake Superior State on Feb. 11th.

High School:
Earned WBCA Div. III first team all-state honors as a sophomore and junior at Roncalli High School ... Two-time all-conference selection ... Conference player of the year as a senior ... Averaged 22.7 points per game as a senior ... Also helped the Jets to two conference championships and three final four appearances at the state tournament ... Earned first team all-conference honors as a quarterback his senior season ... Also participated in baseball ... Member of Lasallian Youth, peer counseling, National Honor Society and choir.

Personal: Enjoys reading, golf and fantasy football ... Son of John and Maureen Stelzer ... Has one brother and one sister, both younger ... Born Jan. 21, 1993 ... Carries a 3.76 cumulative grade point average in finance.

 

Stelzer's Career Statistics
  Total 3-Point Free Throw Rebounds  
Year G-GS Min/Avg FGM FGA FG% FGM FGA FG% FTM FTA FT% Off-Def Total Avg PF-FO Ast TO Blk Stl Pts/Avg
2011-12 28-25
785/28.0 64
158
.405 48
129
.372 29
37
.783 15-47
62
2.2
49-0 66
36
2
21 205/7.3
2012-13 30-30
992/33.1 109
241
.452 84
183
.459 62
68
.912 7-51
58
1.9
59-0 52
60
3
32
364/12.1
Total 58-55
1777/30.6 173
399
.434 132
312
.423 91
106
.858 22-98
120
2.1
108-0 118
96
5
53 569/9.8
Recent Games
Feb 23 Lake Superior State W, 79-78
Mar 2 Northern Michigan W, 72-48
Mar 6 Northwood W, 90-80
Mar 9 Findlay L, 54-51
Mar 16 vs. UW-Parkside W, 86-75
Mar 17 vs. Drury L, 76-62
Statistics category Overall Conf
Games 30 22
Games started 30 22
Minutes 992 722
Minutes per game 33.1 32.8
FG 109-241 75-172
FG Pct 45.2 43.6
3PT 84-183 58-132
3PT Pct 45.9 43.9
FT 62-68 47-53
FT Pct 91.2 88.7
Off rebounds 7 6
Def rebounds 51 36
Total rebounds 58 42
Rebounds per game 1.9 1.9
Personal fouls 59 44
Disqualifications 0 0
Assists 52 36
Turnovers 60 41
Assist to turnover ratio 0.9 0.9
Steals 32 23
Blocks 3 3
Points 364 255
Points per game 12.1 11.6
Points per 40 min 14.7 14.1
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 7 Finlandia W, 117-53 - 11 2-3 66.7 2-3 66.7 0-0 - 6
Nov 15 at Southwest Minn. St. W, 75-67 1 38 6-10 60.0 6-9 66.7 4-4 100.0 22
Nov 17 at Minnesota Duluth L, 70-58 1 28 2-7 28.6 1-5 20.0 2-2 100.0 7
Nov 20 Bemidji State W, 86-59 1 28 2-4 50.0 2-3 66.7 3-3 100.0 9
Nov 29 at Malone W, 71-58 1 22 1-5 20.0 1-3 33.3 1-2 50.0 4
Dec 1 at Walsh L, 84-75 1 39 5-13 38.5 2-9 22.2 0-0 - 12
Dec 6 Findlay W, 66-49 1 33 2-7 28.6 1-6 16.7 2-2 100.0 7
Dec 8 Hillsdale W, 73-55 1 29 3-9 33.3 3-6 50.0 2-2 100.0 11
Dec 13 at Ohio Dominican W, 75-56 1 32 2-5 40.0 1-3 33.3 0-0 - 5
Dec 15 at Tiffin W, 75-55 1 24 1-6 16.7 1-5 20.0 0-0 - 3
Dec 29 at UW-Parkside W, 69-51 1 34 2-10 20.0 1-6 16.7 0-0 - 5
Jan 3 Lake Erie W, 66-48 1 34 0-4 0.0 0-4 0.0 12-12 100.0 12
Jan 5 Ashland W, 81-59 1 32 3-7 42.9 3-6 50.0 0-0 - 9
Jan 10 at Ferris State L, 74-66 1 28 5-10 50.0 4-8 50.0 2-2 100.0 16
Jan 12 at Grand Valley State L, 70-65 1 39 7-9 77.8 7-8 87.5 0-0 - 21
Jan 17 Wayne State L, 70-59 1 40 3-6 50.0 3-6 50.0 2-2 100.0 11
Jan 19 Saginaw Valley State W, 77-54 1 31 4-8 50.0 2-6 33.3 6-6 100.0 16
Jan 24 at Northwood W, 79-65 1 35 4-8 50.0 3-6 50.0 4-4 100.0 15
Jan 26 at Lake Superior State W, 83-79 1 44 3-9 33.3 2-8 25.0 2-2 100.0 10
Feb 2 at Northern Michigan L, 59-55 1 36 2-8 25.0 2-7 28.6 0-0 - 6
Feb 7 Ferris State W, 64-55 1 32 6-10 60.0 4-6 66.7 0-1 0.0 16
Feb 9 Grand Valley State W, 69-51 1 35 7-11 63.6 5-8 62.5 2-2 100.0 21
Feb 14 at Wayne State W, 67-61 1 38 2-8 25.0 2-7 28.6 1-2 50.0 7
Feb 16 at Saginaw Valley State L, 53-50 1 29 3-9 33.3 2-4 50.0 2-2 100.0 10
Feb 21 Northwood W, 82-70 1 30 4-6 66.7 4-5 80.0 5-6 83.3 17
Feb 23 Lake Superior State W, 79-78 1 33 5-9 55.6 4-7 57.1 3-4 75.0 17
Mar 2 Northern Michigan W, 72-48 1 27 3-5 60.0 2-4 50.0 1-2 50.0 9
Mar 6 Northwood W, 90-80 1 40 5-9 55.6 4-7 57.1 0-0 - 14
Mar 9 Findlay L, 54-51 1 39 6-10 60.0 5-8 62.5 3-3 100.0 20
Mar 16 vs. UW-Parkside W, 86-75 1 33 8-11 72.7 6-8 75.0 3-3 100.0 25
Mar 17 vs. Drury L, 76-62 1 30 3-8 37.5 1-5 20.0 0-0 - 7
Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 7 Finlandia W, 117-53 - 11 0 0 0 2 0 - 1 0 0 0
Nov 15 at Southwest Minn. St. W, 75-67 1 38 1 1 2 1 1 1.0 3 0 1 0
Nov 17 at Minnesota Duluth L, 70-58 1 28 0 3 3 0 0 - 1 0 0 0
Nov 20 Bemidji State W, 86-59 1 28 0 1 1 2 2 1.0 0 0 1 0
Nov 29 at Malone W, 71-58 1 22 0 1 1 1 1 1.0 0 0 5 0
Dec 1 at Walsh L, 84-75 1 39 0 2 2 1 4 0.3 1 0 2 0
Dec 6 Findlay W, 66-49 1 33 0 2 2 1 3 0.3 1 0 1 0
Dec 8 Hillsdale W, 73-55 1 29 1 1 2 0 1 0.0 1 1 0 0
Dec 13 at Ohio Dominican W, 75-56 1 32 1 1 2 1 2 0.5 1 0 1 0
Dec 15 at Tiffin W, 75-55 1 24 0 1 1 3 2 1.5 2 0 1 0
Dec 29 at UW-Parkside W, 69-51 1 34 0 4 4 4 3 1.3 0 0 1 0
Jan 3 Lake Erie W, 66-48 1 34 0 3 3 2 0 - 2 0 1 0
Jan 5 Ashland W, 81-59 1 32 0 1 1 1 1 1.0 1 0 2 0
Jan 10 at Ferris State L, 74-66 1 28 0 4 4 0 2 0.0 0 0 3 0
Jan 12 at Grand Valley State L, 70-65 1 39 0 4 4 2 2 1.0 1 0 3 0
Jan 17 Wayne State L, 70-59 1 40 0 1 1 3 3 1.0 0 0 2 0
Jan 19 Saginaw Valley State W, 77-54 1 31 0 0 0 2 1 2.0 3 0 1 0
Jan 24 at Northwood W, 79-65 1 35 0 4 4 3 2 1.5 1 0 3 0
Jan 26 at Lake Superior State W, 83-79 1 44 0 1 1 3 4 0.8 0 0 3 0
Feb 2 at Northern Michigan L, 59-55 1 36 0 1 1 3 1 3.0 2 0 2 0
Feb 7 Ferris State W, 64-55 1 32 1 3 4 0 3 0.0 2 0 3 0
Feb 9 Grand Valley State W, 69-51 1 35 0 3 3 3 2 1.5 1 0 1 0
Feb 14 at Wayne State W, 67-61 1 38 0 1 1 2 2 1.0 1 2 1 0
Feb 16 at Saginaw Valley State L, 53-50 1 29 2 0 2 0 1 0.0 0 0 4 0
Feb 21 Northwood W, 82-70 1 30 1 1 2 0 0 - 1 0 2 0
Feb 23 Lake Superior State W, 79-78 1 33 0 0 0 2 0 - 1 0 1 0
Mar 2 Northern Michigan W, 72-48 1 27 0 1 1 3 4 0.8 1 0 2 0
Mar 6 Northwood W, 90-80 1 40 0 0 0 2 1 2.0 1 0 2 0
Mar 9 Findlay L, 54-51 1 39 0 2 2 1 6 0.2 2 0 3 0
Mar 16 vs. UW-Parkside W, 86-75 1 33 0 2 2 3 2 1.5 1 0 3 0
Mar 17 vs. Drury L, 76-62 1 30 0 2 2 3 4 0.8 1 0 4 0
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2011-12 28 25 28.1 2.3-5.6 40.5 1.7-4.6 37.2 1.0-1.3 78.4 7.3
2012-13 30 30 33.1 3.6-8.0 45.2 2.8-6.1 45.9 2.1-2.3 91.2 12.1
2013-14 32 32 30.5 5.5-12.5 43.6 3.8-8.8 42.6 3.1-3.5 86.7 17.8
2014-15 28 28 34.9 6.6-14.4 46.0 4.0-8.7 45.7 4.8-5.7 84.4 22.1
Total 118 115 31.6 4.5-10.2 44.4 3.1-7.1 43.4 2.7-3.2 85.7 14.9
  gp gs min fg pct 3pt pct ft pct pts
2011-12 28 25 787 64-158 40.5 48-129 37.2 29-37 78.4 205
2012-13 30 30 992 109-241 45.2 84-183 45.9 62-68 91.2 364
2013-14 32 32 975 175-401 43.6 120-282 42.6 98-113 86.7 568
2014-15 28 28 977 186-404 46.0 111-243 45.7 135-160 84.4 618
Total 118 115 3731 534-1204 44.4 363-837 43.4 324-378 85.7 1755
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
2011-12 28 25 28.1 3.3-8.0 40.5 2.4-6.6 37.2 1.5-1.9 78.4 10.4
2012-13 30 30 33.1 4.4-9.7 45.2 3.4-7.4 45.9 2.5-2.7 91.2 14.7
2013-14 32 32 30.5 7.2-16.5 43.6 4.9-11.6 42.6 4.0-4.6 86.7 23.3
2014-15 28 28 34.9 7.6-16.5 46.0 4.5-9.9 45.7 5.5-6.6 84.4 25.3
Total 118 115 31.6 5.7-12.9 44.4 3.9-9.0 43.4 3.5-4.1 85.7 18.8
  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
2011-12 28 25 28.1 0.5 1.7 2.2 1.8 0.0 2.4 1.3 1.8 0.8 0.1
2012-13 30 30 33.1 0.2 1.7 1.9 2.0 0.0 1.7 2.0 0.9 1.1 0.1
2013-14 32 32 30.5 0.9 2.8 3.8 2.1 0.0 2.5 1.5 1.6 0.8 0.1
2014-15 28 28 34.9 0.6 2.4 3.0 1.6 0.0 2.9 2.6 1.1 1.1 0.0
Total 118 115 31.6 0.6 2.2 2.7 1.9 0.0 2.4 1.9 1.3 0.9 0.1
  gp gs min off def reb pf dq ast to a/to stl blk
2011-12 28 25 787 15 47 62 49 0 66 36 1.8 21 2
2012-13 30 30 992 7 51 58 59 0 52 60 0.9 32 3
2013-14 32 32 975 29 91 120 67 1 79 49 1.6 27 3
2014-15 28 28 977 17 67 84 45 0 81 74 1.1 32 0
Total 118 115 3731 68 256 324 220 1 278 219 1.3 112 8
  gp gs mpg off/40 def/40 reb/40 pf/40 dq/40 ast/40 to/40 a/to stl/40 blk/40
2011-12 28 25 28.1 0.8 2.4 3.2 2.5 0.0 3.4 1.8 1.8 1.1 0.1
2012-13 30 30 33.1 0.3 2.1 2.3 2.4 0.0 2.1 2.4 0.9 1.3 0.1
2013-14 32 32 30.5 1.2 3.7 4.9 2.7 0.0 3.2 2.0 1.6 1.1 0.1
2014-15 28 28 34.9 0.7 2.7 3.4 1.8 0.0 3.3 3.0 1.1 1.3 0.0
Total 118 115 31.6 0.7 2.7 3.5 2.4 0.0 3.0 2.3 1.3 1.2 0.1
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Total 30 30 33.1 3.6-8.0 45.2 2.8-6.1 45.9 2.1-2.3 91.2 12.1
Conference 22 22 32.8 3.4-7.8 43.6 2.6-6.0 43.9 2.1-2.4 88.7 11.6
Exhibition 1 - 11.0 2.0-3.0 66.7 2.0-3.0 66.7 0.0-0.0 - 6.0
-
Home 14 14 33.1 3.8-7.5 50.5 3.0-5.9 51.2 2.9-3.2 91.1 13.5
Away 14 14 33.3 3.2-8.4 38.5 2.5-6.3 39.8 1.3-1.4 90.0 10.2
Neutral 2 2 31.5 5.5-9.5 57.9 3.5-6.5 53.8 1.5-1.5 100.0 16.0
-
Wins 21 21 32.6 3.5-7.7 45.3 2.7-5.9 46.3 2.4-2.7 89.5 12.1
Losses 9 9 34.2 4.0-8.9 45.0 3.0-6.7 45.0 1.2-1.2 100.0 12.2
-
November 4 4 29.0 2.8-6.5 42.3 2.5-5.0 50.0 2.5-2.8 90.9 10.5
December 6 6 31.8 2.5-8.3 30.0 1.5-5.8 25.7 0.7-0.7 100.0 7.2
January 8 8 35.4 3.6-7.6 47.5 3.0-6.5 46.2 3.5-3.5 100.0 13.8
February 7 7 33.3 4.1-8.7 47.5 3.3-6.3 52.3 1.9-2.4 76.5 13.4
March 5 5 33.8 5.0-8.6 58.1 3.6-6.4 56.3 1.4-1.6 87.5 15.0
  gp gs min fg pct 3pt pct ft pct pts
Total 30 30 992 109-241 45.2 84-183 45.9 62-68 91.2 364
Conference 22 22 722 75-172 43.6 58-132 43.9 47-53 88.7 255
Exhibition 1 - 11 2-3 66.7 2-3 66.7 0-0 - 6
-
Home 14 14 463 53-105 50.5 42-82 51.2 41-45 91.1 189
Away 14 14 466 45-117 38.5 35-88 39.8 18-20 90.0 143
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 222, 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: #end
74: 
75: #if ($options.get("bio_default_view").length() > 0)
76:   #set ($checkView = $options.get("bio_default_view"))
77: #end
78: 
79: #if ($request.getParameter("view"))
80:   #set ($checkView = $request.getParameter("view"))
81: #end
82: 
83: #if ($checkView == "profile" && $statsURL.length() > 0)
84:   #set ($view = "profile")
85: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
86:   #set ($view = "bio")
87: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
88:   #set ($view = "gamelog")
89: #elseif ($checkView == "career" && $showCareer)
90:   #set ($view = "career")
91: #elseif ($checkView == "splits" && $statsURL.length() > 0)
92:   #set ($view = "splits")
93: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
94:   #set ($view = "htmlstats")
95: #end
96: 
97: #macro (gamelogData $p)
98: 
99: #set ($p = $positions.get($p))
100: #set ($gamelogs = $gamelogs.get($p))
101: 	
102: #if ($hasEvents)
103: <div class="stats-box full clearfix">
104: <div class="scrollable">
105: <div>
106: <table>
107:   <tr class="thead">
108:     <th class="text">Date</th>
109:     <th class="pinned-col text">Opponent</th>
110:     <th>Score</th>
111:     #foreach ($gamelog in $gamelogs)
112:       <th>$gamelog</th>
113:     #end
114:   </tr>
115: #foreach ($event in $events)
116:   <tr>
117:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
118:     <td class="pinned-col text">
119:       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
120:       $event.event.opponent.name
121:     </td>
122:     <td>
123:     #if ($event.event.statusCode >= 0)
124:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
125:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
126:       #else
127:       ${event.event.APResult}
128:       #end
129:     #else &nbsp; #end
130:     </td>
131:     #foreach ($gamelog in $gamelogs.keySet())
132:       #set ($value = "-")
133:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
134:       <td>$value</td>
135:     #end
136:   </tr>
137: #end
138: </table>
139: </div>
140: </div> ## scrollable
141: </div> ## stats-box
142: #end
143: 
144: #end ## macro gamelogData
145: 
146: #macro (split $statPosBriefs $label $stats)
147:   <tr>
148:     <td class="pinned-col text">${label}</td>
149:     #foreach ($brief in $statPosBriefs.keySet())
150:       #set ($value = "-")
151:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
152:       <td>#if ($value.length() > 0) $value #else - #end</td>
153:     #end
154:   </tr>
155: #end
156: 
157: #macro (careerData $p)
158: #set ($p = $positions.get($p))
159: #set ($statPosBriefs = $briefs.get($p))
160: 
161: <div class="stats-box full clearfix">
162: <div class="scrollable">
163: <div>
164: <table>
165: <tr class="thead">
166:   <th class="pinned-col">&nbsp;</th>
167:   #foreach ($brief in $statPosBriefs)
168:     <th>$brief</th>
169:   #end
170: </tr>
171: 
172: #set ($careerTotals = $request.getAttribute("careerTotals"))
173: #set ($careerMap = $request.getAttribute("careerMap"))
174: 
175: #foreach ($season in $seasons)
176:   ## Check if we did not get stats for this season
177:   #if ($careerMap.get($season.seasonName))
178:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName])
179:   #elseif ($wiki.valid())
180:     <tr>
181:       <td class="text">${season.seasonName}</td>
182:       <td colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
183:     </tr>
184:   #end
185: #end
186: 
187: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
188: 
189: </table>
190: </div>
191: </div> ## scrollable
192: </div> ## stats-box
193: 
194: #end ## macro careerData
195: 
196: #macro (splitsData $p)
197: 
198: #set ($p = $positions.get($p))
199: #set ($statPosBriefs = $briefs.get($p))
200: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))	
201: 	
202: #if ($statPosBriefs.size() > 0)
203: <div class="stats-box full clearfix">
204: <div class="scrollable">
205: <div>
206: <table>
207:   <tr>
208:     <th class="pinned-col">&nbsp;</th>
209:     #foreach ($brief in $statPosBriefs)
210:       <th>$brief</th>
211:     #end
212:   </tr>
213: 
214: #split($statPosBriefs, "Total", $splits.overall)
215: #split($statPosBriefs, "Conference", $splits.conference)
216: #split($statPosBriefs, "Exhibition", $splits.exhibition)
217: 
218: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
219: 
220: #split($statPosBriefs, "Home", $splits.home)
221: #split($statPosBriefs, "Away", $splits.away)
222: #split($statPosBriefs, "Neutral", $splits.neutral)
223: 
224: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
225: 
226: #foreach($gameResult in $gamesResults.entrySet())
227:   #if ($gameResult.key == "wins")
228:     #set ($splitGameResult = $splits.inWins)
229:   #elseif ($gameResult.key == "losses")
230:     #set ($splitGameResult = $splits.inLosses)
231:   #elseif ($gameResult.key == "ties")
232:     #set ($splitGameResult = $splits.inTies)
233:   #end
234: 	
235:   #split($statPosBriefs, $gameResult.value, $splitGameResult)
236: #end
237: 
238: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
239: 
240: #if ($monthsPlayed and $monthsPlayed.size() > 0)
241:   #foreach($month in $monthsPlayed)
242:     #if ($month == 'January')
243:       #set ($splitMonth = $splits.january)
244:     #elseif ($month == 'February')
245:       #set ($splitMonth = $splits.february)
246:     #elseif ($month == 'March')
247:       #set($splitMonth = $splits.march)
248:     #elseif ($month == 'April')
249:       #set($splitMonth = $splits.april)
250:     #elseif ($month == 'May')
251:       #set ($splitMonth = $splits.may)
252:     #elseif ($month == 'June')
253:       #set ($splitMonth = $splits.june)
254:     #elseif ($month == 'July')
255:       #set($splitMonth = $splits.july)
256:     #elseif ($month == 'August')
257:       #set ($splitMonth = $splits.august)
258:     #elseif ($month == 'September')
259:       #set($splitMonth = $splits.september)
260:     #elseif ($month == 'October')
261:       #set($splitMonth = $splits.october)
262:     #elseif ($month == 'November')
263:       #set ($splitMonth = $splits.november)
264:     #elseif ($month == 'December')
265:       #set($splitMonth = $splits.december)
266:     #end
267: 		
268:     #split($statPosBriefs, $month, $splitMonth)
269:   #end ## foreach
270: #end
271: </table>
272: </div>
273: </div> ## scrollable
274: </div> ## srollable-table
275: #end
276: 
277: #end ## macro splitsData
278: 
279: #macro (printRecentGames)
280: #if ($hasEvents)
281: <table>
282:   <tr class="thead"><th colspan="3">Recent Games</th></tr>
283:   
284: #set ($eventEnd = -1)
285: #foreach ($event in $events)
286:   #if ($event.event.result.resolved)
287:     #set ($eventEnd = $velocityCount)
288:   #end
289: #end
290: 
291: #set ($eventStart = $eventEnd - 5)
292: #if ($eventStart < 0) #set ($eventStart = 0) #end
293: 
294: #foreach ($event in $events)
295: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
296:   <tr>
297:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
298:     <td class="text">
299:       #if ($event.event.neutralSite.length() > 0) vs.
300:       #elseif (!$event.event.home) at
301:       #else ## nothing for a home game
302:       #end
303:       $event.event.opponent.name
304:     </td>
305:     <td class="text">
306:     #if ($event.event.statusCode >= 0)
307:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
308:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
309:       #else
310:       ${event.event.APResult}
311:       #end
312: 	#end
313: 	</td>
314:   </tr>
315: #end ## if
316: #end
317: </table>
318: #end
319: #end ## macro printRecentGames
320: 
321: #macro (printCategories $briefCategoryLabels $v)
322: 	
323: <div class="tab-container secondary clearfix">
324: <div class="tab-nav" data-jscroll="true" data-momentum="false">
325: <div>
326: <ul class="clearfix">
327: #foreach($briefCat in $briefCategoryLabels.entrySet())
328:   #set ($briefCatLabel = $briefCat.value)
329:   #set ($briefCatKey = $briefCat.key)
330: 		
331:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
332:     #set ($briefCatLabel = "Defence")
333:   #end	
334: 	
335:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}">$briefCatLabel</a></li>
336: #end
337: </ul>
338: </div>
339: </div>
340: <div class="tab-panels">
341: #foreach ($briefCat in $briefCategoryLabels.entrySet())
342:   #set ($class = "tab-panel clearfix")
343:   #if ($briefCat.key == $activePos)
344:     #set ($class = "tab-panel active clearfix")
345:   #end
346:   <div class="$class">
347:     <div class="stats-wrap clearfix">
348:     #if ($v == "splits")
349:       #splitsData($briefCat.key)
350:     #elseif ($v == "career")
351:       #careerData($briefCat.key)
352:     #end
353:     </div>
354:   </div>
355: #end	
356: </div>
357: </div> ## tab-container
358: 
359: #end ## macro printCategories
360: 	
361: #macro (printHeadshot)
362: 
363: #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
364: 
365: #if ($headshot.url)
366:   <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
367: #else
368:   #if ($website.exists("/images/setup/headshot_default.jpg"))
369:     <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
370:   #else
371:     <img src="/info/images/default_headshot.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
372:   #end
373: #end
374: #end ## macro printHeadshot
375: 	
376: #macro (printBioInfo)
377: <div class="player-name">
378:   #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
379:   <span class="name">$fullName</span>
380: </div>	
381: 	
382: <table>
383: #foreach ($i in [1..10])
384:   #set ($stickyKey = "bio_custom${i}_sticky")
385:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
386:     <tr>
387:       <td class="label">$options.get($stickyKey): </td>
388:       <td class="value">$!attributes.get("custom${i}")</td>
389:     </tr>
390:   #end
391: #end
392: 
393: #foreach ($field in $fields)
394:   #if (!$field.key.startsWith("custom"))
395:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
396:       #if ($field.key == "phone1" || $field.key == "phone2")
397:         <tr>
398:           <td class="label">Phone: </td>
399:           <td class="value">$!attributes.get($field.key)</td>
400:         </tr>
401:       #elseif ($field.key == "email_address")
402:         #set ($emailAdd = $attributes.get($field.key))
403:         <tr>
404:           <td class="label">Email: </td>
405:           <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td>
406:         </tr>
407:       #else
408:         <tr>
409:           <td class="label">$field.value: </td>
410:           <td class="value">$!attributes.get($field.key)</td>
411:         </tr>
412:       #end
413:     #end
414:   #end
415: #end
416: 
417: #foreach ($i in [1..10])
418:   #set ($customKey = "bio_custom${i}")
419:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
420:     <tr>
421:       <td class="label">$options.get($customKey): </td>
422:       <td class="value">$!attributes.get("custom${i}")</td>
423:     </tr>
424:   #end
425: #end
426: </table>
427: #end ## macro printBioInfo
428: 	
429: #macro (printHighlights)
430: #foreach ($highlight in $highlights.keySet())
431:   #set ($value = "-")
432:   #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
433:   <div class="stat clearfix">
434:     <span class="stat-title">$!highlights.get($highlight)</span>
435:     <span class="stat-value">$value</span>
436:   </div>
437: #end
438: #end ## macro printHighlights
439: 	
440: #macro (printRoster)
441: #if ($page.contentType == "loki/bio")
442:   #set ($headlinesFeaturedSize = 0)
443:   #foreach ($featuredPage in $page.headlinesFeatured)
444:     #if ($featuredPage.contentType == "loki/headlines")
445:       #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
446:     #end
447:   #end
448:   #if ($headlinesFeaturedSize > 0)
449:     <select class="roster-select-list">
450:       <option selected="selected">Related Bios</option>
451:       #foreach ($featuredPage in $page.headlinesFeatured)
452:         #if ($featuredPage.contentType == "loki/headlines")
453:           $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
454: 		#end
455: 	  #end
456:     </select>
457:   #end
458: #elseif ($page.contentType == "loki/bio-network")
459:   #set ($relatedPlayers = $page.sectionPage.children)
460:   #set ($teamNames = {})
461:   #foreach ($relatedPlayer in $relatedPlayers)
462:     #if ($relatedPlayer.contentType == "loki/bio-network")
463:       #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
464:       #set ($teamName = $relatedPlayerObj.get("team"))
465:       #if ($teamName.length() > 0)
466:         #if (!$teamNames.containsValue($teamName))
467:           $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
468:         #end
469:       #end
470:     #end
471:   #end
472: 
473:   <select class="roster-select-list">
474:   #foreach ($i in [1..$teamNames.size()])
475:     #if ($teamNames.size() > 1)
476:       <optgroup label="$teamNames.get($i)">
477:     #end
478: 				
479:     #foreach ($relatedPlayer in $relatedPlayers)
480:       #if ($relatedPlayer.contentType == "loki/bio-network")
481:         #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
482:         #set ($teamName = $relatedPlayerObj.get("team"))
483:         #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
484:           #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
485:           #set ($playerLastName = $relatedPlayerObj.get("last_name"))
486:           #if ($page.url == $relatedPlayer.url)
487:             <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option>
488:           #else
489:             <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
490:           #end
491:         #end
492:       #end
493:     #end
494: 				
495:     #if ($teamNames.size() > 1)
496:       </optgroup>
497:     #end
498:   #end
499:   </select>
500: #end
501: #end ## macro printRoster
502: 	
503: ################################################## END MACROS  #############################################################
504: 
505: #if ($attributes.get("full_name").length() > 0)
506:   #set ($fullName = $attributes.get("full_name"))
507: #else
508:   #set ($firstName = $!attributes.get("first_name"))
509:   #set ($lastName = $!attributes.get("last_name"))
510:   #set ($fullName = "${firstName} ${lastName}")
511: #end
512: 
513: ## FULL ROSTER
514: <div class="bio-wrap clearfix">
515: 	
516: ## RELATED BIOS
517: #if ($showRoster)
518:   <div class="related-bios clearfix">#printRoster</div>
519: #end
520:   
521: <div class="head clearfix">
522: <div class="clearfix">
523:     
524: <div class="player-about clearfix">
525:   <div class="player-headshot">#printHeadshot</div>
526:   <div class="player-info">#printBioInfo</div>
527: </div>
528: 
529: #if ($highlights && $showHighlights)
530:   <div class="player-highlights clearfix">#printHighlights</div>
531: #end
532: 
533: </div>
534: </div> ## head
535: 
536: #if ($view.length() > 0)
537: <div class="body clearfix">
538:   
539: <div class="tab-container primary clearfix">
540:   
541: <div class="tab-nav" data-jscroll="true" data-momentum="false">
542:   <div>
543:   <ul class="clearfix">
544:   #if ($hasSynopsis || $hasBioBrief)
545:     <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li>
546:   #end
547: 		
548:   #if ($statsURL.length() > 0)
549:     <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li>
550:     <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li>
551:     #if ($showCareer)
552:       <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li>
553:     #end
554:     <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li>
555:   #end
556: 
557:   #if ($hasHTMLStats)
558:     <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li>
559:   #end
560:   </ul>
561:   </div>
562: </div> ## tab-nav
563: 
564: <div class="tab-panels clearfix">
565: 	
566: ## BIO
567: #if ($hasSynopsis || $hasBioBrief)
568: 
569: #set ($class = "tab-panel clearfix")
570: #if ($view == "bio")
571:   #set ($class = "tab-panel active clearfix")
572: #end
573: <div class="${class}">
574: 
575: <div class="synopsis clearfix">
576: #if ($hasSynopsis)
577:   $synopsis
578: #elseif ($hasBioBrief)
579:   $website.include("$bioBriefURL")
580: #end
581: </div>
582: 
583: </div> ## tab-panel
584: #end 
585: ## BIO
586: 
587: ## STATS
588: #if ($statsURL.length() > 0)
589: 
590: ## PROFILE
591: #set ($class = "tab-panel clearfix")
592: #if ($view == "profile")
593:   #set ($class = "tab-panel active clearfix")
594: #end
595: <div class="${class}">
596: <div class="stats-wrap clearfix">
597: 
598: ## LAST SIX GAMES
599: <div class="stats-box half">
600: #printRecentGames()
601: </div>
602: 
603: ## RANKING
604: <div class="stats-box half">
605: #if ($statPos.length() > 0)
606:   $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
607: #end
608: </div>
609: 
610: </div> ## stats-wrap	
611: </div> ## tab-content
612: ## PROFILE
613: 
614: ## GAMELOG
615: #set ($class = "tab-panel clearfix")
616: #if ($view == "gamelog")
617:   #set ($class = "tab-panel active clearfix")
618: #end
619: 
620: #set ($activePos = $statPos)
621: #if ($view == "gamelog" && $paramPos.length() > 0)
622:   #if ($positions.get($paramPos).length() > 0)
623:     #set ($activePos = $positions.get($paramPos))
624:   #end
625: #end
626: 
627: <div class="${class}">
628: 
629: #if ($gamelogsCategoriesLabels)
630: <div class="tab-container secondary clearfix">
631:   <div class="tab-nav" data-jscroll="true" data-momentum="false">
632:     <div>
633:     <ul class="clearfix">
634:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
635:       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
636: 		
637:       #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
638:         #set($gamelogsCatLabelVal = "Defence")
639:       #end
640: 
641:       <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end><a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}">$gamelogsCatLabelVal</a></li>
642:     #end
643:     </ul>
644: 	</div>
645:   </div>
646:   <div class="tab-panels">
647:   #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
648:     #set ($class = "tab-panel clearfix")
649:     #if ($gamelogsCatLabel.key == $activePos)
650:       #set ($class = "tab-panel active clearfix")
651:     #end
652:     <div class="${class}">
653:       <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
654: 	</div>
655:   #end   
656:   </div>
657: </div>	
658: #else
659:   <div class="stats-wrap clearfix">#gamelogData($pos)</div>
660: #end
661: 	
662: </div> ## tab-panel
663: ## GAMELOG
664: 
665: 
666: ## CAREER
667: #if ($showCareer)
668: 
669: #set ($activePos = $statPos)
670: #if ($view == "career" && $paramPos.length() > 0)
671:   #if ($positions.get($paramPos).length() > 0)
672:     #set ($activePos = $positions.get($paramPos))
673:   #end
674: #end
675: 
676: #set ($class = "tab-panel clearfix")
677: #if ($view == "career")
678:   #set ($class = "tab-panel active clearfix")
679: #end
680: 
681: <div class="${class}">
682: 
683: #if ($briefsCategoriesLabels)
684:   #printCategories($briefsCategoriesLabels "career")
685: #else
686:   <div class="stats-wrap clearfix">#careerData($activePos)</div>
687: #end		
688: 
689: </div> ## tab-panel
690: #end
691: ## CAREER
692: 
693: ## SPLITS
694: #set ($class = "tab-panel clearfix")
695: #if ($view == "splits")
696: 	#set ($class = "tab-panel active clearfix")
697: #end
698: 
699: #set ($activePos = $statPos)
700: #if ($view == "splits" && $paramPos.length() > 0)
701:   #if ($positions.get($paramPos).length() > 0)
702:     #set ($activePos = $positions.get($paramPos))
703:   #end
704: #end
705: 
706: <div class="${class}">
707: 
708: #if ($briefsCategoriesLabels)
709:   #printCategories($briefsCategoriesLabels "splits")
710: #else
711:   <div class="stats-wrap clearfix">#splitsData($pos)</div>
712: #end		
713: 
714: </div> ## tab-panel
715: ## SPLITS
716: 
717: #end 
718: ## STATS
719: 
720: ## HTML STATS
721: #if ($hasHTMLStats)
722: 
723: #set ($class = "tab-panel clearfix")
724: #if ($view == "htmlstats")
725:   #set ($class = "tab-panel active clearfix")
726: #end
727: <div class="${class}">
728:   <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
729: </div>
730: 
731: #end
732: ## HTML STATS
733: 	
734: </div> ## tab-panels
735: </div> ## tab-container
736: </div> ## body
737: #end
738: 
739: $wiki
740: </div> ## ends bio-wrap