19 Josh Malkemes
19 - Josh Malkemes
Bats/Throws: R/R
Year: Sophomore
Hometown: Mountain Top, PA
High School: Crestwood Area HS
Position: Utility
Major: Psychology/Kinesiology
gp 21
avg .185
hr 0
rbi 5
r 7
sb 3
Recent Games
Apr 15 vs. King's College
Apr 16 Penn State Schuylkill L, 14-0
Apr 17 at Penn State Wilkes-Barre L, 8-2
Apr 17 at Penn State Wilkes-Barre L, 7-6
Apr 22 at Penn State York L, 10-7
Apr 22 at Penn State York L, 6-5
Statistics category Overall Conf
Games 21 13
Plate appearances 68 43
At Bats 54 35
Runs 7 5
Hits 10 8
Doubles 1 1
Triples 0 0
Home Runs 0 0
Runs Batted In 5 4
Total bases 11 9
Walks 10 6
Hit by pitch 2 1
Strikeouts 13 7
Sacrifice Flies 2 1
Sacrifice Hits 0 0
Hit into double play 1 1
Stolen Bases 3 2
Caught Stealing 2 1
Batting Average .185 .229
On Base Percentage .324 .349
Slugging Percentage .204 .257
Appearances 0 0
Games started 0 0
Wins 0 0
Losses 0 0
Saves 0 0
Complete Games - -
Shutouts - -
Innings Pitched 0.0 0.0
Hits - -
Runs - -
Earned Runs - -
Walks - -
Strikeouts - -
Strikeouts per Game .00 .00
Doubles Allowed - -
Triples Allowed - -
Home Runs Allows - -
At Bats Against - -
Batting Average Against - -
Earned Run Average 0.00 0.00
Wild pitches - -
Hit Batters - -
Balks - -
Sacrifice Flies Allowed - -
Sacrifice Hits Allowed - -
Total Chances 22 14
Put Outs 18 11
Assists 1 1
Errors 3 2
Fielding Percentage .864 .857
Double Plays 1 1
Stolen Bases Allowed 0 0
Runners Caught Stealing 0 0
Runners Caught Stealing Percentage - -
Passed Balls 0 0
Catcher's Interference 0 0
Date Opponent Score ab r h 2b 3b hr rbi bb k sb cs
Mar 4 vs. Hannibal LaGrange   - - - - - - - - - - -
Mar 6 vs. St. Cloud Tech L, 11-2 - - - - - - - - - - -
Mar 6 vs. Niagara County Community College L, 13-1 - - - - - - - - - - -
Mar 8 vs. Erie Community College L, 6-2 - - - - - - - - - - -
Mar 12 at Williamson W, 2-0 1 1 0 - - - 0 2 1 - -
Mar 13 at Lebanon Valley College   - - - - - - - - - - -
Mar 14 vs. Southern Maine CC L, 11-7 4 0 0 - - - 0 - 3 - -
Mar 14 vs. Southern Maine CC L, 26-0 1 0 0 - - - 0 - 1 - -
Mar 16 vs. Williamson L, 1-0 2 0 0 - - - 0 - - - -
Mar 16 vs. Williamson L, 11-4 3 0 0 - - - 1 - - - -
Mar 24 at Wilson College L, 10-2 2 0 0 - - - 0 - 1 - -
Mar 24 at Wilson College L, 11-4 1 0 1 - - - 0 2 - - 1
Mar 26 Penn State Wilkes-Barre L, 8-3 4 1 3 1 - - 0 - 1 - 1
Mar 30 Penn State Scranton W, 10-0 3 0 1 - - - 1 - - 2 -
Mar 30 Penn State Scranton W, 14-4 3 1 0 - - - 0 1 1 - -
Apr 2 at Penn State Scranton W, 11-1 2 0 0 - - - 0 2 - - -
Apr 4 at Penn State Brandywine L, 9-4 3 0 1 - - - 1 - - - -
Apr 7 Penn State Brandywine L, 11-7 3 1 0 - - - 0 1 2 - -
Apr 7 Penn State Brandywine W, 4-3 2 0 0 - - - 1 - - - -
Apr 9 at Luzerne County Community College L, 12-11 5 1 1 - - - 0 - - 1 -
Apr 12 at Penn State Schuylkill L, 13-3 4 0 0 - - - 0 - 1 - -
Apr 13 Penn State Schuylkill W, 2-1 0 1 0 - - - 0 - - - -
Apr 15 vs. King's College   - - - - - - - - - - -
Apr 16 Penn State Schuylkill L, 14-0 - - - - - - - - - - -
Apr 17 at Penn State Wilkes-Barre L, 8-2 2 1 1 - - - 0 1 - - -
Apr 17 at Penn State Wilkes-Barre L, 7-6 3 0 0 - - - 1 - 2 - -
Apr 22 at Penn State York L, 10-7 3 0 2 0 0 0 0 1 0 0 0
Apr 22 at Penn State York L, 6-5 3 0 0 0 0 0 0 0 0 0 0
Apr 24 Penn State York   - - - - - - - - - - -
Date Opponent Score hbp sf sh tb xbh hdp go fo go/fo pa
Mar 4 vs. Hannibal LaGrange   - - - - - - - - - -
Mar 6 vs. St. Cloud Tech L, 11-2 - - - - - - - - - -
Mar 6 vs. Niagara County Community College L, 13-1 - - - - - - - - - -
Mar 8 vs. Erie Community College L, 6-2 - - - - - - - - - -
Mar 12 at Williamson W, 2-0 - - - 0 0 - - - - 3
Mar 13 at Lebanon Valley College   - - - - - - - - - -
Mar 14 vs. Southern Maine CC L, 11-7 - - - 0 0 - - - - 4
Mar 14 vs. Southern Maine CC L, 26-0 - - - 0 0 - - - - 1
Mar 16 vs. Williamson L, 1-0 - - - 0 0 - 1 - - 2
Mar 16 vs. Williamson L, 11-4 - 1 - 0 0 - 2 1 2.00 4
Mar 24 at Wilson College L, 10-2 1 - - 0 0 - - 1 - 3
Mar 24 at Wilson College L, 11-4 - - - 1 0 - - - - 3
Mar 26 Penn State Wilkes-Barre L, 8-3 - - - 4 1 - - - - 4
Mar 30 Penn State Scranton W, 10-0 - - - 1 0 - 1 1 1.00 3
Mar 30 Penn State Scranton W, 14-4 - - - 0 0 - - 2 - 4
Apr 2 at Penn State Scranton W, 11-1 - - - 0 0 - - 2 - 4
Apr 4 at Penn State Brandywine L, 9-4 1 - - 1 0 - 2 - - 4
Apr 7 Penn State Brandywine L, 11-7 - - - 0 0 - 1 - - 4
Apr 7 Penn State Brandywine W, 4-3 - 1 - 0 0 - 1 1 1.00 3
Apr 9 at Luzerne County Community College L, 12-11 - - - 1 0 - 1 1 1.00 5
Apr 12 at Penn State Schuylkill L, 13-3 - - - 0 0 1 2 - - 4
Apr 13 Penn State Schuylkill W, 2-1 - - - 0 0 - - - - 0
Apr 15 vs. King's College   - - - - - - - - - -
Apr 16 Penn State Schuylkill L, 14-0 - - - - - - - - - -
Apr 17 at Penn State Wilkes-Barre L, 8-2 - - - 1 0 - - - - 3
Apr 17 at Penn State Wilkes-Barre L, 7-6 - - - 0 0 - - - - 3
Apr 22 at Penn State York L, 10-7 0 0 0 2 0 - 0 - - 4
Apr 22 at Penn State York L, 6-5 0 0 0 0 0 - 0 - - 3
Apr 24 Penn State York   - - - - - - - - - -
Date Opponent Score gs w l sv ip h r er era bb k hr
Mar 4 vs. Hannibal LaGrange   - - - - - - - - - - - -
Mar 6 vs. St. Cloud Tech L, 11-2 - - - - - - - - - - - -
Mar 6 vs. Niagara County Community College L, 13-1 - - - - - - - - - - - -
Mar 8 vs. Erie Community College L, 6-2 - - - - - - - - - - - -
Mar 12 at Williamson W, 2-0 0 0 0 0 0.0 - - - 0.00 - - -
Mar 13 at Lebanon Valley College   - - - - - - - - - - - -
Mar 14 vs. Southern Maine CC L, 11-7 0 0 0 0 0.0 - - - 0.00 - - -
Mar 14 vs. Southern Maine CC L, 26-0 0 0 0 0 0.0 - - - 0.00 - - -
Mar 16 vs. Williamson L, 1-0 0 0 0 0 0.0 - - - 0.00 - - -
Mar 16 vs. Williamson L, 11-4 0 0 0 0 0.0 - - - 0.00 - - -
Mar 24 at Wilson College L, 10-2 0 0 0 0 0.0 - - - 0.00 - - -
Mar 24 at Wilson College L, 11-4 0 0 0 0 0.0 - - - 0.00 - - -
Mar 26 Penn State Wilkes-Barre L, 8-3 0 0 0 0 0.0 - - - 0.00 - - -
Mar 30 Penn State Scranton W, 10-0 0 0 0 0 0.0 - - - 0.00 - - -
Mar 30 Penn State Scranton W, 14-4 0 0 0 0 0.0 - - - 0.00 - - -
Apr 2 at Penn State Scranton W, 11-1 0 0 0 0 0.0 - - - 0.00 - - -
Apr 4 at Penn State Brandywine L, 9-4 0 0 0 0 0.0 - - - 0.00 - - -
Apr 7 Penn State Brandywine L, 11-7 0 0 0 0 0.0 - - - 0.00 - - -
Apr 7 Penn State Brandywine W, 4-3 0 0 0 0 0.0 - - - 0.00 - - -
Apr 9 at Luzerne County Community College L, 12-11 0 0 0 0 0.0 - - - 0.00 - - -
Apr 12 at Penn State Schuylkill L, 13-3 0 0 0 0 0.0 - - - 0.00 - - -
Apr 13 Penn State Schuylkill W, 2-1 0 0 0 0 0.0 - - - 0.00 - - -
Apr 15 vs. King's College   - - - - - - - - - - - -
Apr 16 Penn State Schuylkill L, 14-0 - - - - - - - - - - - -
Apr 17 at Penn State Wilkes-Barre L, 8-2 0 0 0 0 0.0 - - - 0.00 - - -
Apr 17 at Penn State Wilkes-Barre L, 7-6 0 0 0 0 0.0 - - - 0.00 - - -
Apr 22 at Penn State York L, 10-7 0 0 0 0 0.0 - - - 0.00 - - -
Apr 22 at Penn State York L, 6-5 0 0 0 0 0.0 - - - 0.00 - - -
Apr 24 Penn State York   - - - - - - - - - - - -
Date Opponent Score tc po a e fpct dp sba rcs rcs% pb ci
Mar 4 vs. Hannibal LaGrange   - - - - - - - - - - -
Mar 6 vs. St. Cloud Tech L, 11-2 - - - - - - - - - - -
Mar 6 vs. Niagara County Community College L, 13-1 - - - - - - - - - - -
Mar 8 vs. Erie Community College L, 6-2 - - - - - - - - - - -
Mar 12 at Williamson W, 2-0 1 1 0 0 1.000 - - - - - -
Mar 13 at Lebanon Valley College   - - - - - - - - - - -
Mar 14 vs. Southern Maine CC L, 11-7 1 1 0 0 1.000 - - - - - -
Mar 14 vs. Southern Maine CC L, 26-0 0 0 0 0 - - - - - - -
Mar 16 vs. Williamson L, 1-0 0 0 0 0 - - - - - - -
Mar 16 vs. Williamson L, 11-4 0 0 0 0 - - - - - - -
Mar 24 at Wilson College L, 10-2 3 3 0 0 1.000 - - - - - -
Mar 24 at Wilson College L, 11-4 1 1 0 0 1.000 - - - - - -
Mar 26 Penn State Wilkes-Barre L, 8-3 2 2 0 0 1.000 - - - - - -
Mar 30 Penn State Scranton W, 10-0 1 0 0 1 .000 - - - - - -
Mar 30 Penn State Scranton W, 14-4 1 1 0 0 1.000 - - - - - -
Apr 2 at Penn State Scranton W, 11-1 2 1 1 0 1.000 - - - - - -
Apr 4 at Penn State Brandywine L, 9-4 4 4 0 0 1.000 1 - - - - -
Apr 7 Penn State Brandywine L, 11-7 0 0 0 0 - - - - - - -
Apr 7 Penn State Brandywine W, 4-3 1 1 0 0 1.000 - - - - - -
Apr 9 at Luzerne County Community College L, 12-11 2 1 0 1 .500 - - - - - -
Apr 12 at Penn State Schuylkill L, 13-3 3 2 0 1 .667 - - - - - -
Apr 13 Penn State Schuylkill W, 2-1 0 0 0 0 - - - - - - -
Apr 15 vs. King's College   - - - - - - - - - - -
Apr 16 Penn State Schuylkill L, 14-0 - - - - - - - - - - -
Apr 17 at Penn State Wilkes-Barre L, 8-2 0 0 0 0 - - - - - - -
Apr 17 at Penn State Wilkes-Barre L, 7-6 0 0 0 0 - - - - - - -
Apr 22 at Penn State York L, 10-7 0 0 0 0 - 0 0 0 - 0 0
Apr 22 at Penn State York L, 6-5 0 0 0 0 - 0 0 0 - 0 0
Apr 24 Penn State York   - - - - - - - - - - -
  g ab r h 2b 3b hr rbi bb k sb cs avg obp slg
2018-19 21 54 7 10 1 0 0 5 10 13 3 2 .185 .324 .204
Total 21 54 7 10 1 0 0 5 10 13 3 2 .185 .324 .204
  g hbp sf sh tb xbh hdp go fo go/fo pa
2018-19 21 2 2 0 11 1 1 11 9 1.22 68
Total 21 2 2 0 11 1 1 11 9 1.22 68
  app gs w l sv cg ip h r er bb k k/9 hr era
2018-19 0 0 0 0 0 - 0.0 - - - - - .00 - 0.00
Total 0 0 0 0 0 - 0.0 - - - - - .00 - 0.00
  g tc po a e fpct dp sba rcs rcs% pb ci
2018-19 21 22 18 1 3 .864 1 0 0 - 0 0
Total 21 22 18 1 3 .864 1 0 0 - 0 0
  g ab r h 2b 3b hr rbi bb k sb cs avg obp slg
Total 21 54 7 10 1 0 0 5 10 13 3 2 .185 .324 .204
Conference 13 35 5 8 1 0 0 4 6 7 2 1 .229 .349 .257
Exhibition - - - - - - - - - - - - - - -
-
Home 6 15 4 4 1 - - 2 2 4 2 1 .267 .333 .333
Away 11 29 3 6 0 0 0 2 8 5 1 1 .207 .410 .207
Neutral 4 10 0 0 - - - 1 - 4 - - .000 .000 .000
-
Wins 6 11 3 1 - - - 2 5 2 2 - .091 .353 .091
Losses 15 43 4 9 1 0 0 3 5 11 1 2 .209 .314 .233
-
March 10 24 3 5 1 - - 2 5 8 2 2 .208 .355 .250
April 11 30 4 5 0 0 0 3 5 5 1 0 .167 .297 .167
  g hbp sf sh tb xbh hdp go fo go/fo pa
Total 21 2 2 0 11 1 1 11 9 1.22 68
Conference 13 1 1 0 9 1 1 7 6 1.17 43
Exhibition - - - - 0 0 - - - - 0
-
Home 6 - 1 - 5 1 - 3 4 0.75 18
There was a problem with a Velocity script
Pagebio-template
ErrorVM #split: too few arguments to macro. Wanted 5 got 3 at bio-template[line 300, column 1]
Page source:
1: $website.addCss($website.cdn("/info/photo-gallery.css"))
2: <script src="${website.cdn("/info/klass.min.js")}"></script>
3: <script src="${website.cdn("/info/code.photoswipe.jquery-3.0.5.min.js")}"></script>
4: <script src="${website.cdn("/info/masonry.pkgd.min.js")}"></script>
5: <script src="${website.cdn("/info/imagesloaded.pkgd.min.js")}"></script>
6: <script src="${website.cdn("/info/photogallery/photogallery.js")}"></script>
7: 
8: ## PICK UP OPTIONS
9: $website.include("options")
10: #set ($options = $request.getAttribute("options"))
11: #set ($locale = "en_us")
12: #set ($locale = $options.get("locale"))
13: 
14: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
15: #set ($bioObject = $page.getDataAsObject())
16: #set ($statsURL = $bioObject.statsURL)
17: 
18: #if ($statsURL.length() > 0)
19:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
20:   ## various settings to get the variables set
21:   #set ($events = $request.getAttribute("bio_events"))
22:   #set ($seasons = $request.getAttribute("bio_seasons"))
23:   #set ($career = $request.getAttribute("bio_career"))
24:   #set ($labels = $request.getAttribute("bio_labels"))
25:   #set ($briefs = $request.getAttribute("bio_briefs"))
26:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
27:   #set ($splits = $request.getAttribute("bio_splits"))
28:   #set ($statPosition = $request.getAttribute("bio_position"))
29:   #set ($positions = $request.getAttribute("bio_positions"))
30:   #set ($playerId = $request.getAttribute("bio_player_id"))
31:   #set ($highlights = $request.getAttribute("bio_highlights"))
32:   #set ($formats = $request.getAttribute("bio_formats"))
33:   #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
34:   #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
35:   #set ($gamesResults = $request.getAttribute("bio_games_results"))
36:   #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
37: #end
38: 
39: #set ($pos = "")
40: #set ($pos = $attributes.get("position"))
41: #set ($pos = $statPosition)
42: #set ($posVec = $pos.split("/"))
43: #set ($pos = $posVec[0])
44: #set ($pos = $pos.toLowerCase())
45: #set ($statPos = $positions.get($pos))
46: #set ($paramPos = $request.getParameter("pos"))
47: 
48: #set ($playerId = $attributes.get("playerId"))
49: #set ($stats = $splits.overall)
50: #set ($highlights = $highlights.get($statPos))
51: 
52: #set ($showHighlights = true)
53: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
54: 	#set ($showHighlights = false)
55: #end
56: 
57: #set ($enhancedLayout = false)
58: #if (($options.get("bio_enhanced_layout") == "yes") || ($request.getParameter("bio_enhanced_layout") == true))
59: 	#set ($enhancedLayout = true)
60: 	$website.addCss($website.cdn("/info/bio-styles-enhanced.css"))
61: #end
62: 
63: #set ($showActionShots = true)
64: #if ($options.get("bio_show_action_shots") && $options.get("bio_show_action_shots") == false)
65: 	#set ($showActionShots = false)
66: #end
67: 
68: #set ($actionShotsLimit = 5)
69: #set ($actionShotsLimit = $tool.math.toInteger($options.get("bio_action_shots_limit")))
70: 
71: #set ($showCareer = $wiki.valid() && $seasons)
72: #if ("yes" == $options.get("stats_show_career") && $seasons)
73:   #set ($showCareer = true)
74: #end
75: 
76: #set ($hasEvents = $events.size() > 0)
77: #set ($hasSynopsis = $synopsis.trim().length() > 0)
78: #set ($htmlStatsURL = "${page.url}-stats")
79: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
80: #set ($bioBriefURL = "${page.url}-brief")
81: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
82: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
83: #if ($options.get("bio_hide_roster") == true)
84:   #set ($showRoster = false)
85: #end
86: 
87: #set ($view = "")
88: #if ($hasSynopsis || $hasBioBrief)
89:   #set ($view = "bio")
90: #elseif ($statsURL.length() > 0)
91:   #set ($view = "profile")
92: #elseif ($hasHTMLStats)
93:   #set ($view = "htmlstats")
94: #elseif ($releases.size() > 0)
95:   #set ($view = "news")
96: #elseif ($playerPhotos.size() > 0)
97:   #set ($view = "photos")
98: #elseif ($playerVideos.size() > 0)
99:   #set ($view = "videos")
100: #end
101: 
102: #if ($options.get("bio_default_view").length() > 0)
103:   #set ($checkView = $options.get("bio_default_view"))
104: #end
105: 
106: #if ($request.getParameter("view"))
107:   #set ($checkView = $request.getParameter("view"))
108: #end
109: 
110: #if ($checkView == "profile" && $statsURL.length() > 0)
111:   #set ($view = "profile")
112: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
113:   #set ($view = "bio")
114: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
115:   #set ($view = "gamelog")
116: #elseif ($checkView == "career" && $showCareer)
117:   #set ($view = "career")
118: #elseif ($checkView == "splits" && $statsURL.length() > 0)
119:   #set ($view = "splits")
120: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
121:   #set ($view = "htmlstats")
122: #elseif ($checkView == "news" && $releases.size() > 0)
123:   #set ($view = "news")
124: #elseif ($checkView == "photos" && $playerPhotos.size() > 0)
125:   #set ($view = "photos")
126: #elseif ($checkView == "videos" && $playerVideos.size() > 0)
127:     #set ($view = "videos")
128: #end
129: 
130: #macro (printResultAriaLabel $event)
131:     #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
132:     #if ($event.neutralSite.length() > 0 || $event.home)
133:     	#set ($ariaLabel = "${ariaLabel} vs.")
134:     #else
135:     	#set ($ariaLabel = "${ariaLabel} at")
136:     #end
137:     #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
138:     #if ($event.neutralSite.length() > 0)
139:     	#set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
140:     #end
141:     #set ($ariaLabel = "${ariaLabel} Box Score")
142:     aria-label="$ariaLabel"
143: #end
144: 
145: #macro (printGrid $items $type)
146: <div class="news-layout grid">
147:     <div class="stories">
148:         <ul>
149:         #foreach ($item in $items)
150:             #if ($item.title.length() > 0)
151: 
152:                 <li class="story ${type}">
153:                 	<div class="clearfix">
154:                 	<a href="$item.url" class="title-box">
155:                         <span class="thumb">
156:                         #if ($item.thumbnailURL)
157:                         	<img src="$website.cdn("/info/images/spacer.gif")" data-src="${item.thumbnailURL}?max_width=300" alt="" class="lazyload" />
158: 						#elseif ($item.contentType == "loki/youtube")
159: 							<img src="$website.cdn("/info/images/spacer.gif")" data-src="http://img.youtube.com/vi/${item.dataAsString}/0.jpg" alt="" class="lazyload" />
160:                         #else
161:                         	<img src="$website.cdn("/info/images/spacer.gif")" data-src="/images/setup/thumbnail_default.jpg?max_width=300" alt="" class="lazyload" />
162:                         #end
163:                         </span>
164:                 		<span class="title">$item.title</span>
165:                 	</a>
166:                 	</div>
167:                 </li>
168:             #end
169:         #end ## foreach
170:         </ul>
171:     </div>
172: </div>
173: #end ## ends macro
174: 
175: #macro (gamelogData $p)
176: 
177: #set ($p = $positions.get($p))
178: #set ($gamelogs = $gamelogs.get($p))
179: 
180: #if ($hasEvents)
181: <div class="stats-box full clearfix">
182: <div class="scrollable">
183: <div>
184: <table>
185:   <tr class="thead">
186:     <th class="text">Date</th>
187:     <th class="pinned-col text">Opponent</th>
188:     <th>Score</th>
189:     #foreach ($gamelog in $gamelogs)
190:       <th>$gamelog</th>
191:     #end
192:   </tr>
193: #foreach ($event in $events)
194:   <tr>
195:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
196:     <td class="pinned-col text">
197:       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
198:       $event.event.opponent.name
199:     </td>
200:     <td>
201:     #if ($event.event.statusCode >= 0)
202:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
203:           <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
204:       #else
205:       ${event.event.APResult}
206:       #end
207:     #else &nbsp; #end
208:     </td>
209:     #foreach ($gamelog in $gamelogs.keySet())
210:       #set ($value = "-")
211:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
212:       <td>$value</td>
213:     #end
214:   </tr>
215: #end
216: </table>
217: </div>
218: </div> ## scrollable
219: </div> ## stats-box
220: #end
221: 
222: #end ## macro gamelogData
223: 
224: #macro (split $statPosBriefs $label $stats)
225:   <tr>
226:     <td class="pinned-col text">${label}</td>
227:     #foreach ($brief in $statPosBriefs.keySet())
228:       #set ($value = "-")
229:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
230:       <td>#if ($value.length() > 0) $value #else - #end</td>
231:     #end
232:   </tr>
233: #end
234: 
235: #macro (careerData $p)
236: #set ($p = $positions.get($p))
237: #set ($statPosBriefs = $briefs.get($p))
238: 
239: <div class="stats-box full clearfix">
240: <div class="scrollable">
241: <div>
242: <table>
243: <tr class="thead">
244:   <th class="pinned-col">&nbsp;</th>
245:   #foreach ($brief in $statPosBriefs)
246:     <th>$brief</th>
247:   #end
248: </tr>
249: 
250: #set ($careerTotals = $request.getAttribute("careerTotals"))
251: #set ($careerMap = $request.getAttribute("careerMap"))
252: 
253: #foreach ($season in $seasons)
254:   ## Check if we did not get stats for this season
255:   #if ($careerMap.get($season.seasonName))
256:     #set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>")
257:     #split($statPosBriefs, $label, $careerMap[$season.seasonName])
258:   #elseif ($wiki.valid())
259:     <tr>
260:       <td class="text">${season.seasonName}</td>
261:       <td colspan="${statPosBriefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
262:     </tr>
263:   #end
264: #end
265: 
266: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
267: 
268: </table>
269: </div>
270: </div> ## scrollable
271: </div> ## stats-box
272: 
273: #end ## macro careerData
274: 
275: #macro (splitsData $p)
276: 
277: #set ($p = $positions.get($p))
278: #set ($statPosBriefs = $briefs.get($p))
279: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))
280: 
281: #if ($statPosBriefs.size() > 0)
282: <div class="stats-box full clearfix">
283: <div class="scrollable">
284: <div>
285: <table>
286:   <tr>
287:     <th class="pinned-col">&nbsp;</th>
288:     #foreach ($brief in $statPosBriefs)
289:       <th>$brief</th>
290:     #end
291:   </tr>
292: 
293: #split($statPosBriefs, "Total", $splits.overall)
294: #split($statPosBriefs, "Conference", $splits.conference)
295: #split($statPosBriefs, "Exhibition", $splits.exhibition)
296: 
297: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
298: 
299: #split($statPosBriefs, "Home", $splits.home)
300: #split($statPosBriefs, "Away", $splits.away)
301: #split($statPosBriefs, "Neutral", $splits.neutral)
302: 
303: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
304: 
305: #foreach($gameResult in $gamesResults.entrySet())
306:   #if ($gameResult.key == "wins")
307:     #set ($splitGameResult = $splits.inWins)
308:   #elseif ($gameResult.key == "losses")
309:     #set ($splitGameResult = $splits.inLosses)
310:   #elseif ($gameResult.key == "ties")
311:     #set ($splitGameResult = $splits.inTies)
312:   #end
313: 
314:   #split($statPosBriefs, $gameResult.value, $splitGameResult)
315: #end
316: 
317: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
318: 
319: #if ($monthsPlayed and $monthsPlayed.size() > 0)
320:   #foreach($month in $monthsPlayed)
321:     #if ($month == 'January')
322:       #set ($splitMonth = $splits.january)
323:     #elseif ($month == 'February')
324:       #set ($splitMonth = $splits.february)
325:     #elseif ($month == 'March')
326:       #set($splitMonth = $splits.march)
327:     #elseif ($month == 'April')
328:       #set($splitMonth = $splits.april)
329:     #elseif ($month == 'May')
330:       #set ($splitMonth = $splits.may)
331:     #elseif ($month == 'June')
332:       #set ($splitMonth = $splits.june)
333:     #elseif ($month == 'July')
334:       #set($splitMonth = $splits.july)
335:     #elseif ($month == 'August')
336:       #set ($splitMonth = $splits.august)
337:     #elseif ($month == 'September')
338:       #set($splitMonth = $splits.september)
339:     #elseif ($month == 'October')
340:       #set($splitMonth = $splits.october)
341:     #elseif ($month == 'November')
342:       #set ($splitMonth = $splits.november)
343:     #elseif ($month == 'December')
344:       #set($splitMonth = $splits.december)
345:     #end
346: 
347:     #split($statPosBriefs, $month, $splitMonth)
348:   #end ## foreach
349: #end
350: </table>
351: </div>
352: </div> ## scrollable
353: </div> ## srollable-table
354: #end
355: 
356: #end ## macro splitsData
357: 
358: #macro (printRecentGames)
359: #if ($hasEvents)
360: <table>
361:   <tr class="thead accent-bg"><th colspan="3">Recent Games</th></tr>
362: 
363: #set ($eventEnd = -1)
364: #foreach ($event in $events)
365:   #if ($event.event.result.resolved)
366:     #set ($eventEnd = $velocityCount)
367:   #end
368: #end
369: 
370: #set ($eventStart = $eventEnd - 5)
371: #if ($eventStart < 0) #set ($eventStart = 0) #end
372: 
373: #foreach ($event in $events)
374: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
375:   <tr>
376:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
377:     <td class="text">
378:       #if ($event.event.neutralSite.length() > 0) vs.
379:       #elseif (!$event.event.home) at
380:       #else ## nothing for a home game
381:       #end
382:       $event.event.opponent.name
383:     </td>
384:     <td class="text">
385:     #if ($event.event.statusCode >= 0)
386:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
387:           <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
388:       #else
389:       ${event.event.APResult}
390:       #end
391: 	#end
392: 	</td>
393:   </tr>
394: #end ## if
395: #end
396: </table>
397: #end
398: #end ## macro printRecentGames
399: 
400: #macro (printCategories $briefCategoryLabels $v $ariaLabel)
401: 
402: <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary">
403: <div class="tab-nav" data-module="jscroll" data-momentum="false">
404: <div>
405: <ul class="clearfix">
406: #foreach($briefCat in $briefCategoryLabels.entrySet())
407:   #set ($briefCatLabel = $briefCat.value)
408:   #set ($briefCatKey = $briefCat.key)
409: 
410:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
411:     #set ($briefCatLabel = "Defence")
412:   #end
413: 
414:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}" role="button" aria-label="${ariaLabel}: ${briefCatLabel}">$briefCatLabel</a></li>
415: #end
416: </ul>
417: </div>
418: </div>
419: <div class="tab-panels">
420: #foreach ($briefCat in $briefCategoryLabels.entrySet())
421:   #set ($class = "tab-panel clearfix")
422:   #if ($briefCat.key == $activePos)
423:     #set ($class = "tab-panel active clearfix")
424:   #end
425:   <div class="$class">
426:     <div class="stats-wrap clearfix">
427:     #if ($v == "splits")
428:       #splitsData($briefCat.key)
429:     #elseif ($v == "career")
430:       #careerData($briefCat.key)
431:     #end
432:     </div>
433:   </div>
434: #end
435: </div>
436: </div> ## tab-container
437: 
438: #end ## macro printCategories
439: 
440: #macro (printHeadshot)
441: #if ($enhancedLayout)
442: 
443:   #if ($headshot.url)
444:     <img src="$headshot.url?max_width=300&max_height=400" alt="$fullName" />
445:   #else
446:     #if ($website.exists("/images/setup/headshot_default.jpg"))
447:       <img src="/images/setup/headshot_default.jpg?max_width=300&max_height=400" alt="$fullName" />
448:     #else
449:       <img src="$website.cdn("/info/images/default_headshot.jpg?max_width=300&max_height=400")" alt="$fullName" />
450:     #end
451:   #end
452: 
453: #else
454: 
455:   #if ($!attributes.get("number").length() > 0)<span class="number">$!attributes.get("number")</span>#end
456: 
457:   #if ($headshot.url)
458:     <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" />
459:   #else
460:     #if ($website.exists("/images/setup/headshot_default.jpg"))
461:       <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="" />
462:     #else
463:       <img src="$website.cdn("/info/images/default_headshot.jpg?max_width=160&max_height=210")" alt="" />
464:     #end
465:   #end
466: 
467: #end ## ## enhancedLayout check
468: #end ## macro printHeadshot
469: 
470: #macro (printBioInfo)
471: #if ($enhancedLayout)
472: 
473: <h2 class="player-heading">
474:   #if ($!attributes.get("number").length() > 0)<span class="number accent-bg">$!attributes.get("number")</span>#end
475:   <span class="name">$fullName</span>
476: </h2>
477: 
478: <ul>
479: #foreach ($i in [1..10])
480:   #set ($stickyKey = "bio_custom${i}_sticky")
481:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
482:     <li>
483:       <dl>
484:         <dt class="label">$options.get($stickyKey): </dt>
485:         <dd class="value">$!attributes.get("custom${i}")</dd>
486:       </dl>
487:     </li>
488:   #end
489: #end
490: 
491: #foreach ($field in $fields)
492:   #if (!$field.key.startsWith("custom"))
493:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
494:       #if ($field.key == "phone1" || $field.key == "phone2")
495:         <li>
496:           <dl>
497:             <dt class="label">Phone: </dt>
498:             <dd class="value">$!attributes.get($field.key)</dd>
499:           </dl>
500:         </li>
501:       #elseif ($field.key == "email_address")
502:         #set ($emailAdd = $attributes.get($field.key))
503:         <li>
504:           <dl>
505:             <dt class="label">Email: </dt>
506:             <dd class="value"><a href="mailto:${emailAdd}">$emailAdd</a></dd>
507:           </dl>
508:         </li>
509:       #elseif ($field.key == "weight_class")
510:         <li>
511:           <dl>
512:             <dt class="label">Class: </dt>
513:             <dd class="value">$!attributes.get($field.key)</dd>
514:           </dl>
515:         </li>
516:       #elseif ($field.key != "position_abbr")
517:         <li>
518:           <dl>
519:             <dt class="label">$field.value: </dt>
520:             <dd class="value">$!attributes.get($field.key)</dd>
521:           </dl>
522:         </li>
523:       #end
524:     #end
525:   #end
526: #end
527: 
528: #foreach ($i in [1..10])
529:   #set ($customKey = "bio_custom${i}")
530:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
531:     <li>
532:       <dl>
533:         <dt class="label">$options.get($customKey): </dt>
534:         <dd class="value">$!attributes.get("custom${i}")</dd>
535:       </dl>
536:     </li>
537:   #end
538: #end
539: </ul>
540: 
541: #else
542: ## default layout
543: 
544: <div class="player-name">
545:   #if ($!attributes.get("number").length() > 0)<span class="number">$!attributes.get("number")</span><span class="sep"> - </span>#end
546:   <span class="name">$fullName</span>
547: </div>
548: 
549: <table role="presentation">
550: #foreach ($i in [1..10])
551:   #set ($stickyKey = "bio_custom${i}_sticky")
552:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
553:     <tr>
554:       <td class="label">$options.get($stickyKey): </td>
555:       <td class="value">$!attributes.get("custom${i}")</td>
556:     </tr>
557:   #end
558: #end
559: 
560: #foreach ($field in $fields)
561:   #if (!$field.key.startsWith("custom"))
562:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
563:       #if ($field.key == "phone1" || $field.key == "phone2")
564:         <tr>
565:           <td class="label">Phone: </td>
566:           <td class="value">$!attributes.get($field.key)</td>
567:         </tr>
568:       #elseif ($field.key == "email_address")
569:         #set ($emailAdd = $attributes.get($field.key))
570:         <tr>
571:           <td class="label">Email: </td>
572:           <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td>
573:         </tr>
574:       #elseif ($field.key == "weight_class")
575:         <tr>
576:           <td class="label">Class: </td>
577:           <td class="value">$!attributes.get($field.key)</td>
578:         </tr>
579:       #elseif ($field.key != "position_abbr")
580:         <tr>
581:           <td class="label">$field.value: </td>
582:           <td class="value">$!attributes.get($field.key)</td>
583:         </tr>
584:       #end
585:     #end
586:   #end
587: #end
588: 
589: #foreach ($i in [1..10])
590:   #set ($customKey = "bio_custom${i}")
591:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
592:     <tr>
593:       <td class="label">$options.get($customKey): </td>
594:       <td class="value">$!attributes.get("custom${i}")</td>
595:     </tr>
596:   #end
597: #end
598: </table>
599: #end ## enhancedLayout check
600: #end ## macro printBioInfo
601: 
602: #macro (printActionShots)
603: #if ($showActionShots)
604: 	## BANNERS SLIDER
605:     #set ($slickSettings = {
606: 		"autoplay": true,
607:         "fade": true,
608:         "arrows": false,
609:         "slidesToShow": 1,
610:         "slidesToScroll": 1,
611:         "lazyLoad": "ondemand",
612:         "responsive": "none"
613:     })
614:     #set ($slickSettings = $slickSettings.toString().replace("=", ":"))
615:     <div class="action-shots clearfix" data-player-photo-count="$playerPhotos.size()">
616:         <div class="slider" data-module="slick-slider-init" data-slick-settings="$slickSettings">
617:             #set ($playerPhotos = $tool.sorter.sort($playerPhotos, "lastUpdated:desc"))
618:             #foreach ($photo in $playerPhotos)
619: 				#if ($velocityCount <= $actionShotsLimit)
620:                     #set ($imgAlt = "Action shot for ${page.title} image ${velocityCount}")
621:                     #if ($photo.altText.length() > 0)
622:                         #set ($imgAlt = $photo.altText)
623:                     #elseif( $photo.title.length() > 0 )
624:                         #set ($imgAlt = $photo.title)
625:                     #end
626:             		<div class="image">
627:             			<img data-lazy="$photo.url" alt="$imgAlt" data-lastupdated="$photo.lastUpdated"/>
628:             	    </div>
629: 				#end
630:     	    #end
631: 	    </div>
632:     </div>
633: #end
634: #end ## macro printActionShots
635: 
636: #macro (printHighlights)
637: #if ($highlights && $showHighlights)
638:   <div class="highlights #if ($enhancedLayout) highlights-bio-enhanced #else highlights-bio #end clearfix">
639:     #foreach ($highlight in $highlights.keySet())
640:       #set ($value = "-")
641:       #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
642:       <div class="stat clearfix">
643:         <span class="stat-title">$!highlights.get($highlight)</span>
644:         <span class="stat-value">$value</span>
645:       </div>
646:     #end
647:   </div>
648: #end
649: #end ## macro printHighlights
650: #macro (printRoster)
651: #if ($enhancedLayout)
652:   $website.includeAgain("${page.url}?tmpl=roster-switcher-template&id=roster-list")
653: #else
654: #if ($page.contentType == "loki/bio")
655:   #set ($headlinesFeaturedSize = 0)
656:   #foreach ($featuredPage in $page.headlinesFeatured)
657:     #if ($featuredPage.contentType == "loki/headlines")
658:       #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
659:     #end
660:   #end
661:   #if ($headlinesFeaturedSize > 0)
662:       <select class="roster-select-list" aria-label="Select a player to view its full bio from the list of options below.">
663:         <option selected="selected">Related Bios</option>
664:         #foreach ($featuredPage in $page.headlinesFeatured)
665:           #if ($featuredPage.contentType == "loki/headlines")
666:             $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
667: 		  #end
668: 	    #end
669:       </select>
670:   #end
671: #elseif ($page.contentType == "loki/bio-network")
672:   #set ($relatedPlayers = $page.sectionPage.children)
673:   #set ($teamNames = {})
674:   #foreach ($relatedPlayer in $relatedPlayers)
675:     #if ($relatedPlayer.contentType == "loki/bio-network")
676:       #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
677:       #set ($teamName = $relatedPlayerObj.get("team"))
678:       #if ($teamName.length() > 0)
679:         #if (!$teamNames.containsValue($teamName))
680:           $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
681:         #end
682:       #end
683:     #end
684:   #end
685: 
686:   <select class="roster-select-list" aria-label="Select a player to view its full bio from the list of options below.">
687:   #foreach ($i in [1..$teamNames.size()])
688:     #if ($teamNames.size() > 1)
689:       <optgroup label="$teamNames.get($i)">
690:     #end
691: 
692:     #foreach ($relatedPlayer in $relatedPlayers)
693:       #if ($relatedPlayer.contentType == "loki/bio-network")
694:         #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
695:         #set ($teamName = $relatedPlayerObj.get("team"))
696:         #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
697:           #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
698:           #set ($playerLastName = $relatedPlayerObj.get("last_name"))
699:           #if ($page.url == $relatedPlayer.url)
700:             <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option>
701:           #else
702:             <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
703:           #end
704:         #end
705:       #end
706:     #end
707: 
708:     #if ($teamNames.size() > 1)
709:       </optgroup>
710:     #end
711:   #end
712:   </select>
713: #end
714: #end ## enhancedLayout check
715: #end ## macro printRoster
716: 
717: ################################################## END MACROS  #############################################################
718: 
719: #if ($attributes.get("full_name").length() > 0)
720:   #set ($fullName = $attributes.get("full_name"))
721: #else
722:   #set ($firstName = $!attributes.get("first_name"))
723:   #set ($lastName = $!attributes.get("last_name"))
724:   #set ($fullName = "${firstName} ${lastName}")
725: #end
726: 
727: #set ($actionShots = false)
728: #if ($enhancedLayout && $playerPhotos.size() > 0)
729:   #set ($actionShots = true)
730: #end
731: 
732: #if ($enhancedLayout)
733:   #set ($rootClass = "bio-enhanced")
734:   #if ($actionShots && $showActionShots)
735:   	#set ($rootClass = "${rootClass} action")
736:   #else
737:   	#set ($rootClass = "${rootClass} plain")
738:   #end
739: #else
740:   #set ($rootClass = "bio-wrap")
741: #end
742: 
743: ## FULL ROSTER
744: <div class="${rootClass} #if ($highlights) bio-wrap-has-highlights #end clearfix" data-module="stats/responsive-container">
745: 
746: ## RELATED BIOS
747: #if ($showRoster)
748:   <div class="related-bios clearfix">#printRoster</div>
749: #end
750: 
751: #if ($actionShots)
752:   #printActionShots
753: #end
754: 
755: <div class="head clearfix">
756: <div class="clearfix">
757: 
758: <div class="player-about clearfix">
759:   <div class="player-headshot">#printHeadshot</div>
760:   <div class="player-info">#printBioInfo</div>
761: </div>
762: 
763: #printHighlights
764: 
765: </div>
766: </div> ## head
767: 
768: #if ($view.length() > 0)
769: <div class="body clearfix">
770: 
771: <div class="tab-container primary clearfix" data-module="stats/tabs" data-type="primary">
772: <div class="tab-nav" data-module="jscroll" data-momentum="false">
773:   <div>
774:   <ul class="clearfix">
775:   #if ($hasSynopsis || $hasBioBrief)
776:     <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li>
777:   #end
778: 
779:   #if ($statsURL.length() > 0)
780:     <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li>
781:     <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li>
782:     #if ($showCareer)
783:       <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li>
784:     #end
785:     <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li>
786:   #end
787: 
788:   #if ($hasHTMLStats)
789:     <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li>
790:   #end
791: 
792:   #if ($releases.size() > 0)
793: 	<li #if ($view == "news") class="active" #end><a href="${page.url}?view=news">News</a></li>
794:   #end
795: 
796:   #if ($playerPhotos.size() > 0)
797: 	<li #if ($view == "photos") class="active" #end><a href="${page.url}?view=photos">Photos</a></li>
798:   #end
799: 
800:   #if ($playerVideos.size() > 0)
801:     <li #if ($view == "videos") class="active" #end><a href="${page.url}?view=videos">Videos</a></li>
802:   #end
803:   </ul>
804:   </div>
805: </div> ## tab-nav
806: 
807: <div class="tab-panels clearfix">
808: 
809: ## BIO
810: #if ($hasSynopsis || $hasBioBrief)
811: 
812: #set ($class = "tab-panel clearfix")
813: #if ($view == "bio")
814:   #set ($class = "tab-panel active clearfix")
815: #end
816: <div class="${class}">
817: 
818: <div class="synopsis clearfix">
819: #if ($hasSynopsis)
820:   $synopsis
821: #elseif ($hasBioBrief)
822:   $website.include("$bioBriefURL")
823: #end
824: </div>
825: 
826: </div> ## tab-panel
827: #end
828: ## BIO
829: 
830: ## STATS
831: #if ($statsURL.length() > 0)
832: 
833: ## PROFILE
834: #set ($class = "tab-panel clearfix")
835: #if ($view == "profile")
836:   #set ($class = "tab-panel active clearfix")
837: #end
838: <div class="${class}">
839: <div class="stats-wrap clearfix">
840: 
841: ## LAST SIX GAMES
842: <div class="stats-box half">
843: #printRecentGames()
844: </div>
845: 
846: ## RANKING
847: <div class="stats-box half">
848: #if ($statPos.length() > 0)
849:   $website.include("players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
850: #end
851: </div>
852: 
853: </div> ## stats-wrap
854: </div> ## tab-content
855: ## PROFILE
856: 
857: ## GAMELOG
858: #set ($class = "tab-panel clearfix")
859: #if ($view == "gamelog")
860:   #set ($class = "tab-panel active clearfix")
861: #end
862: 
863: #set ($activePos = $statPos)
864: #if ($view == "gamelog" && $paramPos.length() > 0)
865:   #if ($positions.get($paramPos).length() > 0)
866:     #set ($activePos = $positions.get($paramPos))
867:   #end
868: #end
869: 
870: <div class="${class}">
871: 
872: #if ($gamelogsCategoriesLabels)
873: <div class="tab-container clearfix secondary" data-module="stats/tabs" data-type="secondary">
874:   <div class="tab-nav" data-module="jscroll" data-momentum="false">
875:     <div>
876:     <ul class="clearfix">
877:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
878:       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
879: 
880:       #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
881:         #set($gamelogsCatLabelVal = "Defence")
882:       #end
883: 
884:       <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end><a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}" role="button" aria-label="Game Log: ${gamelogsCatLabelVal}">$gamelogsCatLabelVal</a></li>
885:     #end
886:     </ul>
887: 	</div>
888:   </div>
889:   <div class="tab-panels">
890:   #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
891:     #set ($class = "tab-panel clearfix")
892:     #if ($gamelogsCatLabel.key == $activePos)
893:       #set ($class = "tab-panel active clearfix")
894:     #end
895:     <div class="${class}">
896:       <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
897: 	</div>
898:   #end
899:   </div>
900: </div>
901: #else
902:   <div class="stats-wrap clearfix">#gamelogData($pos)</div>
903: #end
904: 
905: </div> ## tab-panel
906: ## GAMELOG
907: 
908: 
909: ## CAREER
910: #if ($showCareer)
911: 
912: #set ($activePos = $statPos)
913: #if ($view == "career" && $paramPos.length() > 0)
914:   #if ($positions.get($paramPos).length() > 0)
915:     #set ($activePos = $positions.get($paramPos))
916:   #end
917: #end
918: 
919: #set ($class = "tab-panel clearfix")
920: #if ($view == "career")
921:   #set ($class = "tab-panel active clearfix")
922: #end
923: 
924: <div class="${class}">
925: 
926: #if ($briefsCategoriesLabels)
927:   #printCategories($briefsCategoriesLabels "career" "Career Stats")
928: #else
929:   <div class="stats-wrap clearfix">#careerData($activePos)</div>
930: #end
931: 
932: </div> ## tab-panel
933: #end
934: ## CAREER
935: 
936: ## SPLITS
937: #set ($class = "tab-panel clearfix")
938: #if ($view == "splits")
939: 	#set ($class = "tab-panel active clearfix")
940: #end
941: 
942: #set ($activePos = $statPos)
943: #if ($view == "splits" && $paramPos.length() > 0)
944:   #if ($positions.get($paramPos).length() > 0)
945:     #set ($activePos = $positions.get($paramPos))
946:   #end
947: #end
948: 
949: <div class="${class}">
950: 
951: #if ($briefsCategoriesLabels)
952:   #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
953: #else
954:   <div class="stats-wrap clearfix">#splitsData($pos)</div>
955: #end
956: 
957: </div> ## tab-panel
958: ## SPLITS
959: 
960: #end
961: ## STATS
962: 
963: ## HTML STATS
964: #if ($hasHTMLStats)
965: 
966: #set ($class = "tab-panel clearfix")
967: #if ($view == "htmlstats")
968:   #set ($class = "tab-panel active clearfix")
969: #end
970: <div class="${class}">
971:   <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
972: </div>
973: 
974: #end
975: ## HTML STATS
976: 
977: ## NEWS
978: #if ($releases.size() > 0)
979: #set ($class = "tab-panel clearfix")
980: #if ($view == "news")
981:   #set ($class = "tab-panel active clearfix")
982: #end
983: <div class="${class}">
984: 	#printGrid($releases, "article")
985: </div> ## tab-content
986: #end
987: ## NEWS
988: 
989: ## PHOTOS
990: #if ($playerPhotos.size() > 0)
991: #set ($class = "tab-panel clearfix")
992: #if ($view == "photos")
993:   #set ($class = "tab-panel active clearfix")
994: #end
995: <div class="${class}">
996:     $website.includeAgain("${page.url}?tmpl=bio-photos-template")
997: </div> ## tab-content
998: #end
999: ## PHOTOS
1000: 
1001: ## VIDEOS
1002: #if ($playerVideos.size() > 0)
1003:   #set ($class = "tab-panel clearfix")
1004:   #if ($view == "videos")
1005:     #set ($class = "tab-panel active clearfix")
1006:   #end
1007: <div class="${class}">
1008: 	#printGrid($playerVideos, "video")
1009: </div> ## tab-content
1010: #end
1011: ## VIDEOS
1012: 
1013: </div> ## tab-panels
1014: </div> ## tab-container
1015: </div> ## body
1016: #end
1017: 
1018: $wiki
1019: </div> ## ends bio-wrap
1020: 
1021: ## GLOBAL ADS SERVER
1022: #if ($website.ads.isAdvertisingEnabled('BIOS'))
1023:         $website.includeAgain("global-adserver-slots?adSlot=bios")
1024: #end