1 2<!doctype html> 3<html id="ng-app" ng-app="usssa" class="ng-app:usssa" xmlns:ng="http://angularjs.org"> 4 5<head id="htmlHead"><meta name="pbstck_context:site_name" content="usssa.com" /><meta name="pbstck_context:website" content="usssa.com" /> 6 7 <!-- Google Tag Manager --> 8
8<script>
vendor: 335 bytes, lines 8-12
8(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 9 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 10 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 11 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 12 })(window,document,'script','dataLayer','
12GTM-PM359KC
vendor: 3 bytes, line 12
12');
12</script>
12 13 <!-- End Google Tag Manager --> 14 15 <meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1" /> 16 <!--[if lte IE 8]> 17
17<script src="/js/json2.js"></script>
17 18 <![endif]--> 19 <title> 20 USSSA - United States Specialty Sports Association 21</title><link rel="shortcut icon" href="https://v11.usssa.net/ico/favicon.png" /> 22 <!-- build:css --> 23 <link href="/css/_lib/_1_bootstrap.css" rel="stylesheet" /><link href="/css/_lib/_2_font-awesome.css" rel="stylesheet" /><link href="/css/_lib/_3_ui-select.css" rel="stylesheet" /><link href="/css/_lib/_4_select2.css" rel="stylesheet" /><link href="/css/_lib/_5_selectize.default.css" rel="stylesheet" /><link href="/css/_lib/_6_angular-dropdowns.css" rel="stylesheet" /><link href="/css/_lib/_7_ngNotificationsBar.min.css" rel="stylesheet" /><link href="/css/_lib/angular-responsive-tables.css" rel="stylesheet" /><link href="/css/main.css" rel="stylesheet" /><link href="/css/header.css" rel="stylesheet" /><link href="/css/footer.css" rel="stylesheet" /><link href="/css/sidebar.css" rel="stylesheet" /><link rel="stylesheet" href="/css/print.css" media="print" type="text/css" /><link href="/css/launch_banner.css" rel="stylesheet" /> 24 <!-- endbuild --> 25 26 <!-- build:js --> 27
27<script src="/js/_lib/__0_jquery.js"></script>
27 28
28<script src="/js/_lib/__01_jquery-maskedinput.js" type="text/javascript"></script>
28 29
29<script src="/js/_lib/__1_modernizr.js"></script>
29 30
30<script src="/js/_lib/__2_moment.js"></script>
30 31
31<script src="/js/_lib/__3_popper.js"></script>
31 32
32<script src="/js/_lib/__4_bootstrap.js"></script>
32 33 34
34<script src="/js/_lib/_-5_angular.js"></script>
34 35
35<script src="/js/_lib/_-6_angular-animate.js"></script>
35 36
36<script src="/js/_lib/_-7_angular-sanitize.js"></script>
36 37
37<script src="/js/_lib/_-8_ui-bootstrap.js"></script>
37 38
38<script src="/js/_lib/_-9_ui-select.js"></script>
38 39
39<script src="/js/_lib/_-10_ui-bootstrap-custom-tpls-2.0.0.js"></script>
39 40
40<script src="/js/_lib/_datepicker.js"></script>
40 41
41<script src="/js/_lib/ui-bootstrap-tpls.js"></script>
41 42 43 44 <!-- endbuild --> 45
45<script src="/js/app.js"></script>
45 46
46<script src="/js/pagination.js"></script>
46 47
47<script src="/js/ng-plugins/angular-dropdowns.js"></script>
47 48
48<script src="/js/ng-plugins/ngNotificationsBar.js"></script>
48 49
49<script src="/js/_lib/angular-responsive-tables.js"></script>
49 50 51 <!-- Intercome Agent Manager --> 52
52<script src="/js/controllers/intercomCtrl.js"></script>
52 53 <!-- End Intercome Agent Manager --> 54 55 56 <!-- build:ngModules --> 57
57<script src="/js/services/1_jsLib.js"></script>
57 58
58<script src="/js/services/2_api.js?v1.012"></script>
58 59
59<script src="/js/services/21_coreApi.js"></script>
59 60
60<script src="/js/services/3_storage.js"></script>
60 61
61<script src="/js/services/4_paging.js"></script>
61 62
62<script src="/js/services/5_boostrapBreakpointSvc.js"></script>
62 63
63<script src="/js/services/6_scoriApiSvc.js"></script>
63 64
64<script src="/js/services/22_searchSvc.js"></script>
64 65
65<script src="/js/filters/propsFilter.js"></script>
65 66
66<script src="/js/filters/unique-filter.js"></script>
66 67
67<script src="/js/filters/dateFormat.js"></script>
67 68
68<script src="/js/filters/phoneFilter.js"></script>
68 69
69<script src="/js/filters/absoluteValue.js"></script>
69 70
70<script src="/js/filters/trustHtml.js"></script>
70 71
71<script src="/js/directives/loading.js"></script>
71 72
72<script src="/js/directives/mapDirective.js"></script>
72 73
73<script src="/js/directives/fontAwesomeDirective.js"></script>
73 74
74<script src="/js/directives/cssButtonDirective.js"></script>
74 75
75<script src="/js/directives/calendarDayDirective.js"></script>
75 76
76<script src="/js/directives/lwcTableDirective.js"></script>
76 77
77<script src="/js/directives/tooltip.js"></script>
77 78
78<script src="/js/directives/dropdown.js"></script>
78 79
79<script src="/js/directives/uiColorpicker.js"></script>
79 80 81 82 <!-- endbuild --> 83 <link href="https://fonts.googleapis.com/css?family=Abel|Pragati+Narrow:700|Coda+Caption:800" rel="stylesheet" /> 84 85 86
86<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3590908160751907" crossorigin="anonymous"></script>
86 87 88 <!-- STRIPE SDK --> 89
89<script src="https://js.stripe.com/v3/"></script>
89 90 91 <!--SNACK MEDIA SCRIPT --> 92
92<script type="text/javascript">!(function(b,_name){b[_name]=b[_name]||function V(){(V.q=V.q||[]).push(arguments)},b[_name].v=b[_name].v||2,b[_name].s="1";!(function(b,V,H,r){function x(H,r){try{x=b.localStorage,(H=JSON.parse(x[decodeURI(decodeURI('%67%2565t%25%349%2574%25%365%256%64'))]("_aQS01RURFNzIxODNCRDkxODFGQUMyOTBCOTMtMTEw")).lgk||[])&&(r=b[V].pubads())&&H.forEach((function(b){b&&b[0]&&r.setTargeting(b[0],b[1]||"")}))}catch(C){}var x}try{(r=b[V]=b[V]||{}).cmd=r.cmd||[],typeof r.pubads===H?x():typeof r.cmd.unshift===H?r.cmd.unshift(x):r.cmd.push(x)}catch(C){}})(window,decodeURI(decodeURI('%2567%25%36%66ogl%256%35%74%256%31%67')),"function");;!(function(b){b.__admiral_getConsentForGTM=function(V){function H(b,H){V((function(b,V){const H=b&&b.purpose&&b.purpose.consents||{};return{adConsentGranted:V||!!H[1],adUserData:V||!!H[7],adPersonalization:V||!!H[3],analyticsConsentGranted:V||!!H[1],personalizationConsentGranted:V||!!H[5],functionalityConsentGranted:V||!1,securityConsentGranted:V||!0}})(b,!H))}b[_name]("after","cmp.loaded",(function(V){V&&V.tcData&&V.tcData.gdprApplies?(V.consentKnown&&H(V.tcData,!0),b[_name]("after","cmp.updated",(function(b){H(b.tcData,!0)}))):H({},!1)}))}})(window);})(window,decodeURI(decodeURI('%25%361dmi%25%37%32%25%361%256%63')));!(function(b,V,H,r){H=b.createElement(V),b=b.getElementsByTagName(V)[0],H.async=1,H.src="https://nowaymail.com/files/ppq86m/4rvafk1gjf-prod.js",(r=0)&&r(H),b.parentNode.insertBefore(H,b)})(document,"script");;;!(function(b,V,H,r,x){function C(){for(var b=[],H=0;H<arguments.length;H++)b.push(arguments[H]);if(!b.length)return x;"ping"===b[0]?b[2]({gdprAppliesGlobally:!!V[decodeURI(decodeURI('%5f_c%256%64pG%64%70r%25%34%31%257%30p%256ci%25%36%35s%47%25%36c%6fb%25%361%6cly'))],cmpLoaded:!1,cmpStatus:"stub"}):b.length>0&&x.push(b)}function Y(b){if(b&&b.data&&b.source){var r,x=b.source,C="__tcfapiCall",Y="string"==typeof b.data&&b.data.indexOf(C)>=0;(r=Y?((function(b){try{return JSON.parse(b)}catch(V){}})(b.data)||{})[C]:(b.data||{})[C])&&V[H](r.command,r.version,(function(b,V){var H={__tcfapiReturn:{returnValue:b,success:V,callId:r.callId}};x&&x.postMessage(Y?JSON.stringify(H):H,"*")}),r.parameter)}}!(function G(){if(!V.frames[r]){var H=b.body;if(H){var x=b.createElement("iframe");x.style.display="none",x.name=r,H.appendChild(x)}else setTimeout(G,5)}})(),C.v=1,"function"!=typeof V[H]&&(V[H]=V[H]||C,V.addEventListener?V.addEventListener("message",Y,!1):V.attachEvent&&V.attachEvent("onmessage",Y))})(document,window,"__tcfapi","__tcfapiLocator",[]);;;!(function(b,V,H,r,x,C,Y,G,f,J,W){function w(){for(var b=[],V=arguments.length,H=0;H<V;H++)b.push(arguments[H]);var r,x=b[1],C=typeof x===Y,G=b[2],w={gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["7:usnat"].reduce((function(b,V){return V&&b.push(V),b}),[]),cmpId:9,sectionList:[],applicableSections:[0],gppString:"",parsedSections:{}};function A(b){C&&x(b,!0)}switch(b[0]){case"ping":return A(w);case"queue":return f;case"events":return J;case"addEventListener":return C&&(r=++W,J.push({id:r,callback:x,parameter:G})),A({eventName:"listenerRegistered",listenerId:r,data:!0,pingData:w});case"removeEventListener":for(r=!1,H=0;H<J.length;H++)if(J[H].id===G){J.splice(H,1),r=!0;break}return A(r);case"hasSection":case"getSection":case"getField":return A(null);default:return void f.push(b)}}w.v=2,typeof V[H]!==Y&&(V[H]=V[H]||w,V[G]&&V[G]("message",(function(b,r){var Y="string"==typeof b.data;(r=Y?((function(b){try{return JSON.parse(b)}catch(V){}})(b.data)||{})[x]:(b.data||{})[x])&&V[H](r.command,(function(V,H){var x={__gppReturn:{returnValue:V,success:H,callId:r.callId}};b.source.postMessage(Y?JSON.stringify(x):x,"*")}),C in r?r[C]:null,r.version||1)}),!1),(function A(){if(!V.frames[r]){var H=b.body;if(H){var x=b.createElement("iframe");x.style.display="none",x.name=r,H.appendChild(x)}else setTimeout(A,5)}})())})(document,window,"__gpp","__gppLocator","__gppCall","parameter","function","addEventListener",[],[],0);</script>
92 93
93<script src="https://ats-wrapper.privacymanager.io/ats-modules/50d077b7-1c57-45ce-bb1f-820397be7b56/ats.js"></script>
93 94 95<!-- Add CryptoJS Library CDN before your script -->
96<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/crypto-js.js"></script>
96
97<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
97 98
99<script> 100 // Wait until the page has fully loaded to initialize the hashes 101 window.addEventListener('DOMContentLoaded', function () { 102 var email = localStorage.getItem("email"); 103 104 if (!email) { 105 console.log("Email not found. Script halted."); 106 return; // Stop execution if email is not found 107 } 108 109 // Function to normalize email (for example: removing dots, case normalization, etc.) 110 function normalizeEmail(email) { 111 if (typeof email !== 'string') return null; 112 let normalized = email.trim().toLowerCase(); 113 const atIndex = normalized.indexOf('@'); 114 if (atIndex !== -1) { 115 const localPart = normalized.substring(0, atIndex); 116 const plusIndex = localPart.indexOf('+'); 117 if (plusIndex !== -1) { 118 normalized = localPart.substring(0, plusIndex) + normalized.substring(atIndex); 119 } 120 } 121 if (normalized.endsWith("@gmail.com")) { 122 const atIndex = normalized.indexOf('@'); 123 const localPart = normalized.substring(0, atIndex); 124 const withoutDots = localPart.replace(/\./g, ""); 125 normalized = withoutDots + normalized.substring(atIndex); 126 } 127 return normalized; 128 } 129 130 // Hashing functions 131 function sha1Hash(email) { 132 const normalized = normalizeEmail(email); 133 if (!normalized) return null; 134 return CryptoJS.SHA1(normalized).toString(CryptoJS.enc.Hex); 135 } 136 137 function sha256Hash(email) { 138 const normalized = normalizeEmail(email); 139 if (!normalized) return null; 140 return CryptoJS.SHA256(normalized).toString(CryptoJS.enc.Hex); 141 } 142 143 function md5Hash(email) { 144 const normalized = normalizeEmail(email); 145 if (!normalized) return null; 146 return CryptoJS.MD5(normalized).toString(CryptoJS.enc.Hex); 147 } 148 149 function generateEmailHashes(email) { 150 return { 151 sha1: sha1Hash(email), 152 sha256: sha256Hash(email), 153 md5: md5Hash(email) 154 }; 155 } 156 157 const hashes = generateEmailHashes(email); 158 159 window.addEventListener("envelopeModuleReady", function () { 160 atsenvelopemodule.setAdditionalData({ 161 'type': 'emailHashes', 162 'id': [hashes.sha1, hashes.sha256, hashes.md5] 163 }); 164 }); 165 }); 166</script>
166 167 168
168<script> 169 var bannerController = usssa.controller('bannerCntrl', ['$scope', 'storage', function ($scope, storage) { 170 171 var isHome = document.URL.includes("/home"); 172 $scope.bannerClass = "launch-banner-content hide"; 173 var element = document.getElementById("bannerDiv"); 174 element.style.display = "none"; 175 $scope.line01 = $scope.line02 = $scope.line03 = ""; 176 $scope.line11 = $scope.line12 = $scope.line13 = ""; 177 $scope.bannerText1 = $scope.bannerText2 = false; 178 179 if(isHome) { 180 $scope.bannerClass = "launch-banner-content show"; 181 element.style.display = "inline"; 182 183 var d = new Date(); 184 var year = d.getYear(); 185 var month = d.getMonth() 186 var day = d.getDate(); 187 var hour = d.getHours(); 188 var m = d.getMinutes(); 189 190 // console.log('%here% --------------------------------------------'); 191 // console.log('year ' + year + ' month ' + month); 192 // console.log('%here% day ' + day + ' hour ' + hour + ' m ' + m); 193 // console.log('day >= 23 ' + (day >= 23)); 194 // console.log('hour >= 2 ' + (hour >= 2)); 195 // console.log('day <= 24 ' + (day <= 24)); 196 // console.log('hour >= 2 ' + (hour >= 2)); 197 // console.log('(day >= 23 && hour >= 2) ' + (day >= 23 && hour >= 2)); 198 // console.log('(day <= 24 && hour <= 7) ' + (day <= 24 && hour <= 7)); 199 // if (year <= 124 && month >= 0 && ) 200 // console.log('%here% --------------------------------------------'); 201 202 var yellowTime = false; 203 if((day >= 23 && hour >= 2) && (day <= 24 && hour <= 7)) { 204 yellowTime = true; 205 } else { 206 yellowTime = false; 207 } 208 yellowTime = true; 209 if(yellowTime) { 210 $scope.bannerText1 = true; 211 $scope.bannerText2 = false; 212 var el = document.getElementById('bannerWrapper'); 213 el.style.backgroundColor = 'lightblue'; 214 // $scope.line11 = "On 10/31 from 3:30am-7am EST routine maintenance will be performed,"; 215 // $scope.line11 = "PAYMENT PROCESSING: On 2/28 from 10:00am-11:00am EST routine maintenance will be performed."; 216 // $scope.line12 = "Please refrain from submitting payments on usssa.com as they will not process during this time."; 217 // $scope.line11 = "As a result of scheduled maintenance, usssa.com may be temporarily unavailable on"; 218 // $scope.line12 = "Tuesday October 24th from 3:30am - 7am EST."; 219 //" (8/3 11pm - 8/4 5am CST | 8/3 9pm - 8/4 3am PST)."; 220 // $scope.line12 = "between the hours of 5am-6am EST on Monday 5/14-Thurs 5/15."; 221 // $scope.line13 = "We appreciate your patience."; 222 } else { 223 $scope.bannerText1 = true; 224 $scope.bannerText2 = false; 225 $scope.line01 = "The 2024 baseball and fastpitch season is now open for registration."; 226 $scope.line02 = `Team insurance is available for purchase by team managers through your USSSA account.`; 227 $scope.line03 = "Use the Login button to get started."; 228 } 229 } 230 231 }]); 232 </script>
232 233 234
234<script> 235 function closeBanner(){ 236 var element = document.getElementById("bannerDiv"); 237 element.style.display = "none"; 238 } 239 </script>
239 240 241 <!-- Snack Media Footer Bidding --> 242
242<script type="text/javascript" async src="https://btloader.com/tag?o=5180208835985408&upapi=true" defer></script>
242 243 244 <style> 245 .showBanner { 246 -webkit-animation: fadein 1s; /* Safari, Chrome and Opera > 12.1 */ 247 -moz-animation: fadein 1s; /* Firefox < 16 */ 248 -ms-animation: fadein 1s; /* Internet Explorer */ 249 -o-animation: fadein 1s; /* Opera < 12.1 */ 250 animation: fadein 1s; 251 color:'black'; 252 } 253 254 @keyframes fadein { 255 from { opacity: 0; } 256 to { opacity: 1; } 257 } 258 259 /* Firefox < 16 */ 260 @-moz-keyframes fadein { 261 from { opacity: 0; } 262 to { opacity: 1; } 263 } 264 265 /* Safari, Chrome and Opera > 12.1 */ 266 @-webkit-keyframes fadein { 267 from { opacity: 0; } 268 to { opacity: 1; } 269 } 270 271 /* Internet Explorer */ 272 @-ms-keyframes fadein { 273 from { opacity: 0; } 274 to { opacity: 1; } 275 } 276 277 /* Opera < 12.1 */ 278 @-o-keyframes fadein { 279 from { opacity: 0; } 280 to { opacity: 1; } 281 } 282 .buttonBcg { 283 background-color: rgb(24, 178, 230); 284 color:black; 285 } 286 .textWhite { 287 color:white; 288 } 289 .textBlack { 290 color:black; 291 } 292 </style> 293 294 <!-- NEW SNACK MEDIA SCRIPT LP-4876 --> 295
295<script async src="https://boot.pbstck.com/v1/adm/fbfb0bff-d7b8-4f68-be8b-04b24040f87a"></script>
295 296
296<script src="https://geohb.b-cdn.net/inteintiq/IIQUniversalID.js" async></script>
296 297 298 <link rel="stylesheet" href="/css/_lib/angular-advanced-searchbox.css"> 299</head> 300 301<body id="bdy"> 302 <!-- INTERCOM INITIALIZATION --> 303 <div ng-controller="intercomCtrl"></div> 304 305 <!-- LEGACY BANNER PAYMENTS DOWN --> 306 307 <!--<div ng-controller="bannerCntrl"> 308 <div id="bannerDiv" ng-class="[bannerClass]"> 309 <div id="bannerWrapper" class="q-banner-wrapper" role="alert"> 310 <div class="q-banner-content"> 311 <div class="q-banner-content-row"> 312 <div class="copy"> 313 <p> 314 <span class="showBanner textBlack"> 315 *THE 2027 BASEBALL AND FASTPITCH SEASON IS NOW OPEN FOR REGISTRATION.*<br> 316 TEAM INSURANCE IS AVAILABLE FOR PURCHASE BY TEAM MANAGERS THROUGH YOUR USSSA ACCOUNT.<br> 317 LOG IN OR CREATE AN ACCOUNT TO GET STARTED! 318 </span> 319 320 <a class="showBanner buttonBcg" href class="btn btn-info" onclick="closeBanner()">Close</a> 321 </p> 322 </div> 323 </div> 324 </div> 325 </div> 326 </div> 327 </div>--> 328 329 <!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 329-330
329 330 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
330GTM-PM359KC
vendor: 87 bytes, lines 330-332
330" 331 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 332
332<!-- End Google Tag Manager (noscript) --> 333
333<script> 334 var controller = usssa.controller('pageCntrl', ['$scope', function ($scope) { 335 $scope.sideBarVisible = true; 336 $scope.toggleSideBar = function(){ 337 $scope.sideBarVisible = !$scope.sideBarVisible; 338 } 339 }]); 340 </script>
340 341 <form method="post" action="/home/" id="frm"> 342<div class="aspNetHidden"> 343<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="LtuzJflBqoNz6TUEuu3r5qGsMji7k0HPMbui/XV5TZ/Hm0Zmt5LbHD4XsSGmkyNXuai/CRvXTbyzXiR9/DJ5aVPR6Z2vDGrQ6dHES6/lTXRARUfr0h5IIjSWWAFInQESVCwvTeHWR3Tv5Cm8QM3I3hg7x5DsXK/JnrREZRpUx84=" /> 344</div> 345 346<div class="aspNetHidden"> 347 348 <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="CA0B0334" /> 349 <input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" /> 350</div> 351 <div class="container ctContent" ng-cloak ng-controller="pageCntrl"> 352 353 354 355<!-- Header --> 356<nav class="header-v11 navbar navbar-light navbar-expand-lg noPrint"> 357 <button class="navbar-toggler btnSideBar mr-2" type="button" data-toggle="collapse" data-target="#sideBar" aria-controls="sideBar" aria-expanded="false" aria-label="Sidebar" style="display:none;"><span class="navbar-toggler-icon" ></span></button> 358 359 <div class="navbar-brand"> 360 <a class="logo" href=" https://usssa.com"> 361 <div id="logo-header" alt="USSSA"></div></a> 362 363 </div> 364 365 <div style="flex-grow: 1;"></div> 366 367 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#topMenu" aria-controls="topMenu" aria-expanded="false" aria-label="Menu"> 368 <span class="lblMenu4People">Menu</span> <span class="navbar-toggler-icon"></span> 369 </button> 370 371 <div class="navbar-collapse navbar-responsive-collapse collapse" id="topMenu"> 372
373<script> 374 usssa.controller('sportMenuCtrl', ['$scope', '$filter', '$http', '$location', 'jsLib', 'API', 'storage', function($scope, $filter, $http, $location, jsLib, API, storage) { 375 376 function init() { 377 $scope.loading = true; 378 $scope.jsLib = jsLib; 379 var page = null; 380 var tmp = document.URL.split('/'); 381 if (tmp.length > 0){ 382 page = tmp[4]; 383 } 384 385 API.post({ action: 'v11GetTopMenu', sport: jsLib.getSportName(), page: page }, 24) 386 .then(function(data) { 387 $scope.menu = data; 388 $scope.loading = false; 389 }, 390 function(error) { 391 console.log('error', error); 392 $scope.loading = false; 393 } 394 ); 395 } 396 397 $scope.hasGrandChildren = function(item){ 398 if (item.children){ 399 if (item.children[0]){ 400 if (item.children[0].children) 401 return true; 402 } 403 } 404 return false; 405 } 406 407 init(); 408 }]); 409</script>
409 410 411<div class="secondBg" ng-controller="sportMenuCtrl"> 412 <ul class="navbar-nav float-lg-right topMenu" ng-hide="loading"> 413 414 <li class="nav-item hidden-md hidden-lg hidden-xl"> 415 <a class="nav-link" href="/login">Login</a> 416 </li> 417 418 <li class="nav-item" ng-class="{'dropdown': item.children}" ng-repeat="item in menu.items"> 419 <a class="nav-link" ng-if="!item.children" href="{{item.url}}" ng-attr-target="{{(item.target != '') ? '_blank' : undefined}}" ng-bind-html="jsLib.trustedHtml(item.title)"></a> 420 <a class="nav-link dropdown-toggle" ng-if="item.children" href="#" id="sportDropdownMenu{{item.id}}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 421 <span ng-if="item.title != '---'">{{item.title}}</span> 422 <i class="fa fa-bars" aria-hidden="true" ng-if="item.title == '---'"></i> 423 </a> 424 <div class="dropdown-menu row" ng-class="{'sport-menu': hasGrandChildren(item), '{{item.classes}}': item.classes, 'row': item.classes}" aria-labelledby="sportDropdownMenu{{item.id}}" ng-if="item.children"> 425 <a class="dropdown-item" ng-class="{'col':item.classes}" href="{{child1.url}}" ng-if="!hasGrandChildren(item)" ng-repeat="child1 in item.children" ng-bind-html="jsLib.trustedHtml(child1.title)"></a> 426 427 <div class="sport-menu-section col-lg-3 col-md-6 col-sm-6 col-6" ng-repeat="child1 in item.children" ng-if="hasGrandChildren(item)"> 428 <h5 ng-if="child1.children" ng-bind-html="jsLib.trustedHtml(child1.title)"></h5> 429 <ul class="submenu-list" ng-if="child1.children"> 430 <li ng-repeat="child2 in child1.children"><a href="{{child2.url}}" ng-attr-target="{{(child2.target != '') ? '_blank' : undefined}}" ng-bind-html="jsLib.trustedHtml(child2.title)"></a></li> 431 </ul> 432 </div> 433 </div> 434 </li> 435 </ul> 436</div> 437 </div> 438</nav> 439 440 441<div class="row no-gutters"> 442 443 444<!-- Sidebar Start --> 445<div class="dvSideBar noPrint" ng-show="sideBarVisible"> 446 <div class="mobile-sideBar-ad"> 447 <div id="snack-mobile-top-leaderboard"></div> 448 </div> 449 <div id="sideBar" class="sideBar navbar-collapse navbar-responsive-collapse"> 450 451 452 <!-- Favorites Module --> 453 454
455<script src="/js/controllers/mostRecentCtrl.js"></script>
455 456<div class="dvRecently transBox-desktop" ng-controller="mostRecentCtrl" style="padding-bottom: 15px"> 457 <h5 class="hidden-md hidden-lg hidden-xl">Recently Visited</h5> 458 <h3 class="hidden-xs hidden-sm">Recently Visited</h3> 459 <ul class="nav nav-tabs marginB5 marginT5"> 460 <li class="nav-item"><a class="nav-link" ng-class="currentTab == 'event' ? 'active':''" title="Events" href ng-click="setTab('event')">Events</a></li> 461 <li class="nav-item"><a class="nav-link" ng-class="currentTab == 'team' ? 'active':''" title="Teams" href ng-click="setTab('team')">Teams</a></li> 462 <li class="nav-item"><a class="nav-link" ng-class="currentTab == 'player' ? 'active':''" title="Players" href ng-click="setTab('player')">Players</a></li> 463 <!-- <li class="nav-item"><a class="nav-link" ng-class="currentTab == 'searche' ? 'active':''" title="Searches" href ng-click="setTab('searche')">Searches</a></li> --> 464 </ul> 465 <span class="badge badge-secondary hidden-xs hidden-sm" ng-hide="currentTab"><fa icon="arrow-up"></fa> Select an Option</span> 466 <loading-bar ng-show="loading"></loading-bar> 467 <div class="padding10" ng-hide="loading || !currentTab"> 468 <div class="text-right"><a href ng-click="closeTab()"><fa icon="window-close"></fa> Close</a></div> 469 <strong style="text-transform: capitalize;">{{currentTab}}s:</strong> 470 <a ng-repeat-start="t in teams" ng-if="currentTab == 'team'" href="/{{t.folder}}/teamHome/?teamID={{t.id}}" class="badge" ng-class="t.owner?'badge-primary':'badge-secondary'" ng-hide="$index > 4 && !showAll">{{t.name}}</a><a href ng-click="deleteItem(t.id, 'team')" ng-hide="$index > 4 && !showAll"><fa icon="trash"></fa></a><br ng-repeat-end ng-hide="$index > 4 && !showAll"> 471 472 <a ng-repeat-start="e in events" ng-if="currentTab == 'event'" href="/{{e.folder}}/event_home/?eventID={{e.id}}" class="badge" ng-class="e.entered?'badge-primary':'badge-secondary'" ng-hide="$index > 4 && !showAll">{{e.name}}</a><a ng-repeat-end href ng-click="deleteItem(e.id, 'event')" ng-hide="$index > 4 && !showAll"><fa icon="trash"></fa></a><!-- <br ng-hide="$index > 4 && !showAll"> --> 473 474 <a ng-repeat-start="p in players" ng-if="currentTab == 'player'" href="/{{p.folder}}/PlayerLocker/?playerID={{p.id}}" class="badge" ng-class="p.entered?'badge-primary':'badge-secondary'" ng-hide="$index > 4 && !showAll">{{p.name}}</a><a href ng-click="deleteItem(p.id, 'event')" ng-hide="$index > 4 && !showAll"><fa icon="trash"></fa></a><br ng-repeat-end ng-hide="$index > 4 && !showAll"> 475 476 <a href ng-click="showAllItems()" class="badge badge-danger" ng-if="teams.length > 5 && !showAll">Show All</a> 477 <span class="badge badge-secondary" ng-if="currentTab == 'team' && teams.length == 0">No Team Found!</span> 478 <span class="badge badge-secondary" ng-if="currentTab == 'event' && events.length == 0">No Event Found!</span> 479 <span class="badge badge-secondary" ng-if="currentTab == 'player' && players.length == 0">No Player Found!</span> 480 <center><a href ng-click="clearList()" class="badge badge-danger" ng-if="(teams.length > 0 && currentTab=='team')||(events.length > 0 && currentTab == 'event')|| (players.length > 0 && currentTab == 'player')" style="display: block;">Clear the List</a></center> 481 </div> 482 <div class="hidden-md hidden-lg hidden-xl" style="margin-bottom: -30px"></div> 483</div> 484 <!-- /Favorites Module --> 485 486 487 488 489 <div class="sidebar-ad" style="margin:10px auto 0px auto; text-align:center; width:100%; overflow:hidden; min-height: 250px;"> 490 <div id="snack-gutter-top-left"></div> 491 </div> 492 493 494 495 <div class="sideBar-teamManager mt-1"> 496
497<script src="/js/controllers/teamManagerSidebarCtrl.js"></script>
497
498<script src="/js/filters/getReceiptLink.js"></script>
498 499<div class="transBox dvTeamManagerSidebar" ng-controller="teamManagerSidebarCtrl" ng-show="1 == 0"> 500 <h3>Team Manager</h3> 501 502 <nav class="nav-sidebar"> 503 <ul class="nav flex-column"> 504 <li class="nav-item"><a class="nav-link" href="/{{sport}}ISTSMenu"><fa icon="home"></fa> Dashboard</a></li> 505 <li class="nav-item"><a class="nav-link" href="/{{sport}}ISTSMyAccount"><fa icon="id-badge"></fa> Your Account</a></li> 506 <li class="nav-item"><a class="nav-link" href="/{{sport}}ISTSBillingInfo"><fa icon="address-card-o"></fa> Billing Info</a></li> 507 <li class="nav-item"><a class="nav-link" href="/payments"><fa icon="credit-card"></fa> Your Payments</a></li> 508 <li class="nav-item"><a class="nav-link" href="/{{sport}}ISTSYourPlayers"><fa icon="users"></fa> Your Players</a></li> 509 <!-- <li class="nav-item"><a class="nav-link" href="https://sports.athpro360.com/Ists/remoteLogin/?managerID=={{AthPro.managerID}}&chksum={{AthPro.chksum}}&page=dashboard"><fa icon="trash"></fa> AthClub</a></li> --> 510 <li class="nav-item"><a class="nav-link" href="/{{sport}}ISTSCreateTeam"><fa icon="plus"></fa> Create a New Team</a></li> 511 <li class="nav-item"><a class="nav-link" href="/{{sport}}ISTSCreateTeam"><fa icon="plus"></fa> Register Existing Team for New Season</a></li> 512 513 <li class="nav-item"><a class="nav-link" ng-click="logout()" style="cursor:pointer"><fa icon="power-off"></fa> Logout</a></li> 514 </ul> 515 </nav> 516 <div ng-if="payments.length > 0"> 517 <h3>Online Payments</h3> 518 <nav class="nav-sidebar" style="max-height: 400px;overflow-y: auto"> 519 <loading ng-show="loading"></loading> 520 <ul class="nav flex-column" ng-hide="loading"> 521 <li class="nav-item" ng-repeat="p in payments"> 522 <a class="nav-link" href="{{p| getReceiptLink}}" ng-class="{'text_green':p.transamount > 0, 'text_red': p.transamount < 0}"> 523 <b>{{p.date | date: "MM/dd/yyyy"}} | #{{p.orderNum}} | ${{p.amount}}</b><br> 524 <b>{{p.descrP1}}</b><br> 525 {{p.descrP2}} 526 </a> 527 </li> 528 </ul> 529 </nav> 530 <!-- <div class="text-right">Show All</div> --> 531 </div> 532</div> 533 <div class="sideBar-shoppingCart mt-md-3"> 534 <!-- #checkout# --> 535 536<!-- shoppie -->
537<script> 538 usssa.controller('ShoppingCartWidgetController', ['$scope', '$rootScope', '$filter', '$http', '$location', 'jsLib', 'API', 'storage', '$window', function($scope, $rootScope, $filter, $http, $location, jsLib, API, storage, $window) { 539 540 $scope.cartLimit = 8000; 541 542 $rootScope.$on('updateCart', function(event, args) { 543 getCartItems(); 544 }); 545 546 function getCartItems(){ 547 $scope.loading = true; 548 API.post({ action: 'getCartItemsV11'}) 549 .then(function(data) { 550 $scope.loading = false; 551 data.cartTotal = 0; 552 angular.forEach(data.cart, function(team){ 553 team.total = 0; 554 angular.forEach(team.items, function(div){ 555 div.total = 0; 556 angular.forEach(div.items, function(item){ 557 div.total += item.amount; 558 }); 559 team.total =+ div.total; 560 data.cartTotal += team.total; 561 }); 562 }); 563 564 $scope.cartData = data; 565 $scope.cartAmount = data.cartTotal; 566 }, 567 function(error) { 568 console.log('http error'); 569 $scope.loading = false; 570 }); 571 } 572 573 $scope.changeStatus = function(item, status){ 574 var _params = { action: 'shoppingcart-changeStatusV11', teamID: item.team_id, status: status}; 575 if (item.payment_type != 6){ 576 _params.seqNo = item.seqno; 577 } else { 578 _params.divisionID = item.division_id; 579 } 580 API.post(_params) 581 .then(function(data) { 582 $scope.loading = false; 583 getCartItems(); 584 }, 585 function(error) { 586 //console.log('http error'); 587 getCartItems(); 588 $scope.loading = false 589 }); 590 } 591 592 $scope.remove = function(item){ 593 if (confirm((item.payment_type == 6)?"Removing this item will remove other fee items from your cart, do you want to continue?":"Are you sure?")){ 594 if (confirm('Removing this item from your Shopping Cart does NOT mean that your team is removed from the event. To do this you must contact the Event Director.')){ 595 var _params = { action: 'shoppingcart-removeV11', teamID: item.team_id}; 596 if (item.payment_type != 6){ 597 _params.seqNo = item.seqno; 598 } else { 599 _params.divisionID = item.division_id; 600 } 601 602 API.post(_params) 603 .then(function(data) { 604 $scope.loading = false; 605 getCartItems(); 606 }, 607 function(error) { 608 $scope.loading = false; 609 console.log('http error'); 610 }); 611 } 612 } 613 } 614 615 $scope.checkoutCart = function(){ 616 if ($scope.cartAmount >= $scope.cartLimit) 617 alert("Total Cart amount can't be more than $8000, please move some items to \"Saved for Later\" to proceed."); 618 else{ 619 //Update cart items amount for stuff in the cart. 620 var cartItems = []; 621 var cartIDs = []; 622 angular.forEach($scope.cartData.cart, function(team){ 623 angular.forEach(team.items, function(div){ 624 angular.forEach(div.items, function(item){ 625 cartItems.push({seqno: item.seqno, amount: item.amount}); 626 cartIDs.push(item.seqno); 627 }); 628 }); 629 }); 630 631 API.post({ action: 'updateCartItemsBeforeCheckoutV11', json: encodeURIComponent(angular.toJson(cartItems))}) 632 .then(function(data) { 633 $scope.loading = false; 634 if (data.success){ 635 checkoutStripe('', $scope.cartAmount, 'USSSA Shopping Cart Payment', 60, 60, 0, '', 0, 'https://www.usssa.com/' + jsLib.getSportName($scope.sportID, document.URL) + '/ISTSMenu/?gdSport=' + $scope.sportID, '', angular.toJson(cartIDs)); 636 } else { 637 alert('An event in your shopping cart is not available because the max teams have already entered. This event has been removed from your cart, please contact the tournament host regarding entry into this event.'); 638 getCartItems(); 639 } 640 }, 641 function(error) { 642 console.log('http error'); 643 $scope.loading = false; 644 }); 645 } 646 } 647 if ('' != '') 648 getCartItems(); 649 }]); 650 651 function checkoutStripe(customerid, transamount, transdesc, trans_type_id, org_id, team_id, tournament_id, season_id, return_URL, paymentMemo, cartIDs) { 652 $("#customerid").val(customerid); 653 $("#transamount").val(transamount); 654 $("#transdesc").val(transdesc);
655 $("#trans_type_id").val(trans_type_id); 656 $("#org_id").val(org_id); 657 $("#team_id").val(team_id); 658 $("#tournament_id").val(tournament_id); 659 $("#season_id").val(season_id); 660 $("#cartIDs").val(cartIDs); 661 $("#return_URL").val(return_URL); 662 $("#paymentMemo").val(paymentMemo); 663 // Shopping cart payments are tournament entry fees 664 $("#category").val("event_reg"); 665 666 if (window.location.hostname === 'localhost') { 667 668 $("#frm").attr('action', 'http://localhost:22227/stripePreparePayment'); 669 670 } 671 else if (window.location.hostname === 'qa.usssa.com') { 672 673 $("#frm").attr('action', 'https://qa.usssa.com/stripePreparePayment'); 674 675 } 676 else if (window.location.hostname === 'prod-lns-mainsite.usssa.com') { 677 678 $("#frm").attr('action', 'https://prod-lns-mainsite.usssa.com/stripePreparePayment'); 679 680 } 681 else { 682 683 $("#frm").attr('action', 'https://www.usssa.com/stripePreparePayment'); 684 685 } 686 687 $(".aspNetHidden").remove(); 688 $("#frm").submit(); 689 } 690 691 function cleanItem(item) { 692 var result = ""; 693 if (item === null) { 694 console.info(item + ' is null ==='); 695 return result; 696 } else if (item == null) { 697 console.info(item + ' is null =='); 698 return result; 699 } else if (item == '') { 700 console.info(item + ' is \'\''); 701 return result; 702 } else if (item == "") { 703 console.info(item + ' is \'\''); 704 return result; 705 } else if (item === undefined) { 706 console.info(item + ' is undefined'); 707 return result; 708 } else if (item == "\"\"") { 709 console.info(item + ' is ""'); 710 return null; 711 } else { 712 console.info(item + ' is not null'); 713 return item.toString(); 714 } 715 } 716 717 function checkout(purchase) { 718 $("#customerid").val(purchase.customerid || ''); 719 $("#transamount").val(purchase.transamount || ''); 720 $("#transdesc").val(purchase.transdesc || ''); 721 $("#trans_type_id").val(purchase.trans_type_id || ''); 722 $("#org_id").val(purchase.org_id || ''); 723 $("#team_id").val(purchase.team_id || ''); 724 $("#tournament_id").val(purchase.tournament_id || ''); 725 $("#season_id").val(purchase.season_id || ''); 726 $("#cartIDs").val(purchase.cartIDs || ''); 727 $("#return_URL").val(purchase.return_URL || ''); 728 $("#paymentMemo").val(purchase.paymentMemo || ''); 729 $("#category").val(purchase.category || ''); 730 731 if (window.location.hostname === 'localhost') { 732 $("#frm").attr('action', 'http://localhost:22227/stripePreparePayment'); 733 } else if (window.location.hostname === 'qa.usssa.com') { 734 $("#frm").attr('action', 'https://qa.usssa.com/stripePreparePayment'); 735 } else if (window.location.hostname === 'prod-lns-mainsite.usssa.com') { 736 $("#frm").attr('action', 'https://prod-lns-mainsite.usssa.com/stripePreparePayment'); 737 } else { 738 $("#frm").attr('action', 'https://www.usssa.com/stripePreparePayment'); 739 } 740 741 $(".aspNetHidden").remove(); 742 $("#frm").submit(); 743 } 744</script>
744 745 746<div ng-controller="ShoppingCartWidgetController"> 747 <div style="display:none"> 748 <input type="hidden" id="customerid" name="customerid" value="" /> 749 <input type="hidden" id="transamount" name="transamount" value="" /> 750 <input type="hidden" id="transdesc" name="transdesc" value="" /> 751 <input type="hidden" id="trans_type_id" name="trans_type_id" value="" /> 752 <input type="hidden" id="org_id" name="org_id" value="" /> 753 <input type="hidden" id="team_id" name="team_id" value="" /> 754 <input type="hidden" id="tournament_id" name="tournament_id" value="" /> 755 <input type="hidden" id="season_id" name="season_id" value="" /> 756 <input type="hidden" id="cartIDs" name="cartIDs" value="" /> 757 <input type="hidden" id="return_URL" name="return_URL" value="" /> 758 <input type="hidden" id="paymentMemo" name="paymentMemo" value="" /> 759 <input type="hidden" id="from" name="from" value="v11" /> 760 <input type="hidden" id="category" name="category" value="" /> 761 </div> 762 763</div> 764 765 </div> 766 </div> 767 768 <div class="d-none d-lg-block mt-2" style="flex-grow: 1"> 769 770 771<style> 772.watch-live-container { 773 background-color: #cccccc; 774 background-size: 100% 100%; 775 background-image: url('/img/usssalive-cta-ad.jpg'); 776 width: 300px; 777 height: 100px; 778} 779.watch-live-container .watch-live-link { 780 display: inline-block; 781 width: 100%; 782 height: 100%; 783} 784 785</style> 786 787<div class="watch-live-container"> 788 <a class="watch-live-link" href="https://www.usssalive.com"> </a> 789</div> 790 791<hr class="d-block d-md-none"> 792 <div class="sticky-wrapper position-sticky"> 793 <div style="margin:16px auto 10px auto; text-align:center; width:100%; overflow:hidden; min-height: 250px;"> 794 <div id="snack-gutter-top"></div> 795 </div> 796 </div> 797 </div> 798 799 800 <div class="sideBarFooter d-block d-md-none"></div> 801 </div> 802</div> 803<style> 804 .mobile-sideBar-ad { 805 display: none; 806 } 807 @media (max-width: 768px) { 808 .sidebar-ad { 809 display: none; 810 } 811 .mobile-sideBar-ad { 812 display: block; 813 margin: 10px auto 0px auto; 814 text-align: center; 815 width: 100%; 816 overflow: hidden; 817 min-height: 50px; 818 } 819 } 820 821 .sticky-wrapper { 822 top: 20px; 823 height: 600px; 824 } 825</style> 826<!-- /Sidebar --> 827 828 <div class="col dvContent"> 829 830
831<script src="/js/controllers/superEventSearchCtrl.js"></script>
831 832<style> 833.leaderboard-ad { 834 display: block; 835} 836@media (max-width: 768px) { 837 .leaderboard-ad { 838 display: none; 839 } 840 } 841</style> 842<div class="leaderboard-ad text-center" style="padding-top:15px"> 843 <div style="margin:10px auto 10px auto; text-align:center; width:100%; overflow:hidden; min-height: 90px;"> 844 <div id="snack-desktop-top-leaderboard"></div> 845 </div> 846</div> 847<div ng-controller="superEventSearchCtrl" class="superSearch"> 848 <div ng-if="!program" class="bg-white searchWidget ng-cloak noPrint"> 849 850 <div class="marginB15" ng-if="!onEventSearch"> 851 <h4 class="h4 hh hh-dk-gray">Quick Search</h4> 852 <ul class="nav nav-tabs"> 853 <li class="nav-item"><a class="nav-link" ng-class="currentTab == 'event' ? 'active':''" title="Event Search" href ng-click="setTab('event')">Event<span class="hidden-xs"> Search</span></a></li> 854 <li class="nav-item" ng-if="searchSystem != 'scori'"><a class="nav-link" ng-class="currentTab == 'team' ? 'active':''" title="Team Search" href ng-click="setTab('team')">Team<span class="hidden-xs"> Search</span></a></li> 855 <li class="nav-item" ng-if="searchSystem != 'scori'"><a class="nav-link" ng-class="currentTab == 'player' ? 'active':''" title="Player Search" href ng-click="setTab('player')">Player<span class="hidden-xs"> Search</span></a></li> 856 <li class="nav-item" ng-if="searchSystem != 'scori'"><a class="nav-link" ng-class="currentTab == 'ranking' ? 'active':''" title="Ranking" href ng-click="setTab('ranking')">Ranking</a></li> 857 <li class="nav-item" ng-if="searchSystem != 'scori'"><a class="nav-link" title="Points Race" href ng-click="pointsRaceClicked()">Points Race</a></li> 858 </ul> 859 </div> 860 </div> 861 862 863 <h4 ng-if="onEventSearch" class="h4 hh hh-dk-gray noPrint">Event Search Parameters</h4> 864 <hr class="marginB15"> 865 <div class="noPrint" ng-if="currentTab == 'event'"> 866 <h3 ng-if="onHome">Event S<a href ng-click="hiddenFields()" style="color: #dd2109;cursor: text;">e</a>arch</h3> 867 <div ng-if="searchSystem != 'scori'" class="row"> 868 <!-- Sport dropdown --> 869 870 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="inSpecificSport == 32"> 871 <h4 class="text_red" style="border: none;">Sport:</h4> 872 <ui-select ng-disabled="loadingSports" ng-model="searchParams.sportID" theme="select2" on-select="selectSport($item)" close-on-select="true" skip-focusser="true"> 873 <ui-select-match allow-clear="true" placeholder="{{loadingSports ? 'Loading Sports...' : 'Select a sport 2 start' }}">{{$select.selected.name}}</ui-select-match> 874 <ui-select-choices repeat="sport in searchFields.sports | propsFilter: {name: $select.search}" position='bottom'> 875 <div ng-bind-html="sport.name | highlight: $select.search"></div> 876 </ui-select-choices> 877 </ui-select> 878 </div> 879 <!-- Season dropdown --> 880 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchParams.sportID"> 881 <h4 class="text_red" style="border: none;">Season:</h4> 882 <ui-select ng-disabled="loadingSeasons" ng-model="searchParams.seasonID" theme="select2" on-select="selectSeason($item)" close-on-select="true" skip-focusser="true"> 883 <ui-select-match allow-clear="true" placeholder="{{loadingSeasons ? 'Loading Seasons...' : 'Select a season' }}">{{$select.selected.name}}</ui-select-match> 884 <ui-select-choices repeat="season in searchFields.seasons | propsFilter: {name: $select.search}" position='bottom'> 885 <div ng-bind-html="season.name | highlight: $select.search"></div> 886 </ui-select-choices> 887 </ui-select> 888 </div> 889 <!-- Age dropdown --> 890 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchFields.ages"> 891 <h4 class="text_red" style="border: none;">Age:</h4> 892 <ui-select multiple ng-model="searchParams.age" theme="select2" close-on-select="true" skip-focusser="true"> 893 <ui-select-match allow-clear="true" placeholder="All ages">{{$item.name}}</ui-select-match> 894 <ui-select-choices repeat="age in searchFields.ages | propsFilter: {name: $select.search}" position='bottom'> 895 <div ng-bind-html="age.name | highlight: $select.search"></div> 896 </ui-select-choices> 897 </ui-select> 898 </div> 899 <!-- Period dropdown --> 900 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchFields.searchPeriods" close-on-select="true" skip-focusser="true"> 901 <h4 class="text_red" style="border: none;">Start Date:</h4> 902 <ui-select ng-model="searchParams.period" theme="select2"> 903 <ui-select-match allow-clear="true" placeholder="Pick a start date">{{$select.selected.name}}</ui-select-match> 904 <ui-select-choices group-by="'group'" repeat="period in searchFields.searchPeriods | propsFilter: {name: $select.search}" position='bottom'> 905 <div ng-bind-html="period.name | highlight: $select.search"></div> 906 </ui-select-choices> 907 </ui-select> 908 </div> 909 <!-- Class dropdown --> 910 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchFields.
910classes"> 911 <h4 class="text_red" style="border: none;">Class:</h4> 912 <ui-select multiple ng-model="searchParams.class" theme="select2" close-on-select="true" skip-focusser="true"> 913 <ui-select-match allow-clear="true" placeholder="All classes">{{$item.name}}</ui-select-match> 914 <ui-select-choices repeat="class in searchFields.classes | propsFilter: {name: $select.search}" position='bottom'> 915 <div ng-bind-html="class.name | highlight: $select.search"></div> 916 </ui-select-choices> 917 </ui-select> 918 </div> 919 <!-- Stature dropdown --> 920 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchFields.statures"> 921 <h4 class="text_red" style="border: none;">Stature:</h4> 922 <ui-select multiple ng-model="searchParams.stature" theme="select2" close-on-select="true" skip-focusser="true"> 923 <ui-select-match allow-clear="true" placeholder="All statures">{{$item.name}}</ui-select-match> 924 <ui-select-choices repeat="stature in searchFields.statures | propsFilter: {name: $select.search}" position='bottom'> 925 <div ng-bind-html="stature.name | highlight: $select.search"></div> 926 </ui-select-choices> 927 </ui-select> 928 </div> 929 <!-- State dropdown --> 930 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchFields.states" close-on-select="true" skip-focusser="true"> 931 <h4 class="text_red" style="border: none;">State:</h4> 932 <ui-select ng-model="searchParams.region" theme="select2" on-select="selectState($item)"> 933 <ui-select-match allow-clear="true" placeholder="Select a state">{{$select.selected.name}}</ui-select-match> 934 <ui-select-choices repeat="state in searchFields.states | propsFilter: {name: $select.search}" position='bottom'> 935 <div ng-bind-html="state.name | highlight: $select.search"></div> 936 </ui-select-choices> 937 </ui-select> 938 </div> 939 <!-- Director dropdown --> 940 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-show="whichDirectorList('all')" close-on-select="true" skip-focusser="true"> 941 <h4 class="text_red" style="border: none;">Director:</h4> 942 <ui-select ng-model="searchParams.director" theme="select2"> 943 <ui-select-match allow-clear="true" placeholder="Select a director!">{{$select.selected.name}}</ui-select-match> 944 <ui-select-choices group-by="'state'" repeat="director in searchFields.directors | propsFilter: {name: $select.search}" position='bottom'> 945 <div ng-bind-html="director.name | highlight: $select.search"></div> 946 </ui-select-choices> 947 </ui-select> 948 </div> 949 <!-- Selected State Directors dropdown --> 950 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-show="whichDirectorList('singleRegion')" close-on-select="true" skip-focusser="true"> 951 <h4 class="text_red" style="border: none;">Director:</h4> 952 <ui-select ng-model="searchParams.director" ng-disabled="searchFields.selectedStateDirectors.length == 0" theme="select2"> 953 <ui-select-match allow-clear="true" placeholder="{{searchFields.selectedStateDirectors.length > 0 ? 'Select a director' : 'No directors found'}}">{{$select.selected.name}}</ui-select-match> 954 <ui-select-choices repeat="director in searchFields.selectedStateDirectors | propsFilter: {name: $select.search}" position='bottom'> 955 <div ng-bind-html="director.name | highlight: $select.search"></div> 956 </ui-select-choices> 957 </ui-select> 958 </div> 959 <!-- Zipcode --> 960 <div class="col-xl-2 col-lg-2 col-md-2 col-sm-2 col-6" ng-hide="!searchFields.states" close-on-select="true" skip-focusser="true"> 961 <h4 class="text_red" style="border: none;">Zip Code:</h4> 962 <input autocomplete="off" type="text" id="zipCode" ng-model="searchParams.zipCode" placeholder="Enter a zip code" class="form-control"> 963 </div> 964 <!-- Miles dropdown --> 965 <div class="col-xl-2 col-lg-2 col-md-2 col-sm-2 col-6" ng-hide="!searchFields.states" close-on-select="true" skip-focusser="true"> 966 <h4 class="text_red" style="border: none;">Range:</h4> 967 <ui-select ng-model="searchParams.zipRadius" theme="select2"> 968 <ui-select-match allow-clear="true" placeholder="Within range of">{{$select.selected.name}}</ui-select-match> 969 <ui-select-choices repeat="mile in searchFields.miles | propsFilter: {name: $select.search}" position='bottom'> 970 <div ng-bind-html="mile.name | highlight: $select.search"></div> 971 </ui-select-choices> 972 </ui-select> 973 </div> 974 <!-- Selected State Parks dropdown --> 975 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-show="searchParams.region && searchFields.selectedStateParks" close-on-select="true" skip-focusser="true"> 976 <h4 class="text_red" style="border: none;">Park:</h4> 977 <ui-select ng-model="searchParams.park" theme="select2"> 978 <ui-select-match allow-clear="true" placeholder="Select a park">{{$select.selected.name}}</ui-select-match> 979 <ui-select-choices repeat="park in searchFields.selectedStateParks | propsFilter: {name: $select.search}" position='bottom'> 980 <div ng-bind-html="park.name | highlight: $select.search"></div> 981 </ui-select-choices> 982 </ui-select> 983 </div> 984 <!-- EventID 4 BJ --> 985 <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-6" ng-show="fields4BJ" close-on-select="true" skip-focusser="true"> 986 <h4 class="text_red" style="border: none;">EventID:</h4> 987 <input autocomplete="off" type="text" id="eventID" ng-model="searchParams.eventID4BJ" placeholder="Event ID" class="form-control" ng-class="{'hiddenField': fields4BJ == 'false'}"> 988 </div> 989 <!-- DivisionID 4 BJ --> 990 <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-6" ng-show="fields4BJ" close-on-select="true" skip-focusser="true"> 991 <h4 class="text_red" style="border: none;">DivisionID:</h4> 992 <input autocomplete="off" type="text" id="divisionID" ng-model="searchParams.divisionID4BJ" placeholder="Division ID" class="form-control" ng-class="{'hiddenField': fields4BJ == 'false'}"> 993 </div> 994 </div> 995 <div ng-if="searchSystem == 'scori'" class="row"> 996 <!-- Sport dropdown --> 997 998 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="inSpecificSport == 32"> 999 <h4 class="text_red" style="border: none;">Sport:</h4> 1000 <ui-select ng-disabled="loadingSports" ng-model="searchParams.sportID" theme="select2" on-select="selectSport($item)" close-on-select="true" skip-focusser="true"> 1001 <ui-select-match allow-clear="true" placeholder="{{loadingSports ? 'Loading Sports...' : 'Select a sport 2 start' }}">{{$select.selected.name}}</ui-select-match> 1002 <ui-select-choices repeat="sport in searchFields.sports | propsFilter: {name: $select.search}" position='bottom'> 1003 <div ng-bind-html="sport.name | highlight: $select.search"></div> 1004 </ui-select-choices> 1005 </ui-select> 1006 </div> 1007 <!-- Season dropdown --> 1008 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchParams.sportID"> 1009 <h4 class="text_red" style="border: none;">Season:</h4> 1010 <ui-select ng-disabled="loadingSeasons" ng-model="searchParams.seasonID" theme="select2" on-select="selectSeason($item)" close-on-select="true" skip-focusser="true"> 1011 <ui-select-match allow-clear="true" placeholder="{{loadingSeasons ? 'Loading Seasons...' : 'Select a season' }}">{{$select.selected.name}}</ui-select-match> 1012 <ui-select-choices repeat="season in searchFields.seasons | propsFilter: {name: $select.search}" position='bottom'> 1013 <div ng-bind-html="season.name | highlight: $select.search"></div> 1014 </ui-select-choices> 1015 </ui-select> 1016 </div> 1017 <!-- Stature dropdown --> 1018 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchFields.statures"> 1019 <h4 class="text_red" style="border: none;">Stature:</h4> 1020 <ui-select multiple ng-disabled="loadingDropdowns" ng-model="searchParams.stature" theme="select2" close-on-select="true" skip-focusser="true"> 1021 <ui-select-match allow-clear="true" placeholder="{{loadingDropdowns ? 'Loading...' : 'All statures'}}">{{$item.name}}</ui-select-match> 1022 <ui-select-choices repeat="stature in searchFields.statures | propsFilter: {name: $select.search}" position='bottom'> 1023 <div ng-bind-html="stature.name | highlight: $select.search"></div> 1024 </ui-select-choices> 1025 </ui-select> 1026 </div> 1027 <div class="w-100"> 1028 </div> 1029 <!-- Zipcode --> 1030 <div class="col-xl-2 col-lg-2 col-md-2 col-sm-2 col-6" close-on-select="true" skip-focusser="true"> 1031 <h4 class="text_red" style="border: none;">Zip Code:</h4> 1032 <input autocomplete="off" type="text" id="zipCode" ng-model="searchParams.zipCode" placeholder="Enter a zip code" class="form-control"> 1033 </div> 1034 <!-- Miles dropdown --> 1035 <div class="col-xl-2 col-lg-2 col-md-2 col-sm-2 col-6" close-on-select="true" skip-focusser="true"> 1036 <h4 class="text_red" style="border: none;">Range:</h4> 1037 <ui-select ng-model="searchParams.zipRadius" theme="select2"> 1038 <ui-select-match allow-clear="true" placeholder="Within range of">{{$select.selected.name}}</ui-select-match> 1039 <ui-select-choices repeat="mile in searchFields.miles | propsFilter: {name: $select.search}" position='bottom'> 1040 <div ng-bind-html="mile.name | highlight: $select.search"></div> 1041 </ui-select-choices> 1042 </ui-select> 1043 </div> 1044 <!-- State dropdown --> 1045 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchFields.states" close-on-select="true" skip-focusser="true"> 1046 <h4 class="text_red" style="border: none;">State:</h4> 1047 <ui-select ng-model="searchParams.state" theme="select2"> 1048 <ui-select-match allow-clear="true" placeholder="Select a state">{{$select.selected.name}}</ui-select-match> 1049 <ui-select-choices repeat="state in searchFields.states | propsFilter: {name: $select.search}" position='bottom'> 1050 <div ng-bind-html="state.name | highlight: $select.search"></div> 1051 </ui-select-choices> 1052 </ui-select> 1053 </div> 1054 <!-- Org dropdown --> 1055 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-4 col-6" ng-hide="!searchFields.organizations" close-on-select="true" skip-focusser="true"> 1056 <h4 class="text_red" style="border: none;">Organization:</h4> 1057 <ui-select ng-model="searchParams.organization" theme="select2"> 1058 <ui-select-match allow-clear="true" placeholder="Select an organization">{{$select.selected.name}}</ui-select-match> 1059 <ui-select-choices repeat="org in searchFields.organizations | propsFilter: {name: $select.search}" position='bottom'> 1060 <div ng-bind-html="org.name | highlight: $select.search"></div> 1061 </ui-select-choices> 1062 </ui-select> 1063 </div> 1064 </div> 1065 1066 <!-- Search/Reset Buttons --> 1067 <div class="row"> 1068 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-6 col-sm-6 col-md-6 col-lg-6 col-lg-6 col-xl-6 md-text-right sm-text-center xs-text-right noPrint"> 1069 <a href ng-click="clearAll()" class="btn btn-warning" style="width: 100%">Reset Form</a><br> 1070 </div> 1071 <div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-6 col-sm-6 col-md-6 col-lg-6 col-lg-6 col-xl-6 md-text-right sm-text-center xs-text-right noPrint"> 1072 <button ng-disabled="!(searchParams.sportID && searchParams.seasonID)" ng-click="searchEvents($event)" class="btn btn-primary" style="width: 100%">Search</button><br> 1073 </div> 1074 1075 <div class="col-12 alert alert-danger" ng-show="error" style="padding-left: 20px;">{{error}}</div> 1076 </div> 1077 </div> 1078 1079 1080 1081 <div ng-if="currentTab == 'team'"> 1082 1083 1084 1085 1086<div ng-controller="teamSearchCtrl"> 1087 <h3 ng-if="onHome">Team S<a href ng-click="hiddenFields()" style="color: #dd2109;cursor: text;">e</a>arch</h3> 1088 1089 1090 <div class="row marginT15 marginB15"> 1091 1092 <!--Sport Dropdown--> 1093 <div ng-show="onHome" class="col-6 col-sm-6 col-md-4" ng-class="{'has-error':validation4teamSearch.sport, 'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}"> 1094 <h4 class="text_red" style="border: none;">Sport</h4> 1095 <ui-select ng-model="teamSearchParams.sport" theme="select2" on-select="selectSport($item)"> 1096 <ui-select-match allow-clear="true" placeholder="Select a Sport">{{$select.selected.sport}}</ui-select-match> 1097 <ui-select-choices repeat="sport in sportsWithFolder | propsFilter: {sport: $select.search}" position='bottom'> 1098 <div ng-bind-html="sport.sport | highlight: $select.search"></div> 1099 </ui-select-choices> 1100 </ui-select> 1101 <span class="help-block">{{validation4teamSearch.sport}}</span> 1102 </div> 1103 1104 <!--Team Name--> 1105 <div class="col-6 col-sm-6 col-md-4" ng-show="teamSearchParams.sport || !onHome" ng-class="{'has-error':validation4teamSearch.teamName, 'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}"> 1106 <h4 class="text_red" style="border: none;">Team Name</h4> 1107 <input ng-model="teamSearchParams.teamName" class="form-control" type="search" placeholder="Enter a Team Name Here..."> 1108 <span class="help-block">{{validation4teamSearch.teamName}}</span> 1109 </div> 1110 1111 <!--Class Dropdown--> 1112 <div class="col-6 col-sm-6 col-md-4" ng-show="teamSearchParams.sport || !onHome" ng-class="{'has-error':validation4teamSearch.teamName, 'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}"> 1113 <h4 class="text_red" style="border: none;">Class</h4> 1114 <ui-select ng-model="teamSearchParams.class" theme="select2"> 1115 <ui-select-match allow-clear="true" placeholder="Select a Class">{{$select.selected.ClassName}}</ui-select-match> 1116 <ui-select-choices repeat="class.ClassID as class in teamClasses | propsFilter: {ClassName: $select.search}" position='bottom'> 1117 <div ng-bind-html="class.ClassName | highlight: $select.search"></div> 1118 </ui-select-choices> 1119 </ui-select> 1120 </div> 1121 <!--/Class Dropdown--> 1122 1123 <!--State Dropdown--> 1124 <div class="col-6 col-sm-6 col-md-4" ng-show="teamSearchParams.sport || !onHome" ng-class="{'has-error':validation4teamSearch.teamName, 'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}"> 1125 <h4 class="text_red" style="border: none;">State</h4> 1126 <ui-select ng-model="teamSearchParams.region" theme="select2"> 1127 <ui-select-match allow-clear="true" placeholder="Select a State">{{$select.selected.name}}</ui-select-match> 1128 <ui-select-choices repeat="state.value as state in searchFields.states | propsFilter: {name: $select.search}" position='bottom'> 1129 <div ng-bind-html="state.name | highlight: $select.search"></div> 1130 </ui-select-choices> 1131 </ui-select> 1132 </div> 1133 <!--/State Dropdown--> 1134 1135 <!--Season Dropdown--> 1136 <div class="col-6 col-sm-6 col-md-4" ng-show="teamSearchParams.sport || !onHome" ng-class="{'has-error':validation4teamSearch.season, 'col
1136-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}"> 1137 <h4 class="text_red" style="border: none;">Season</h4> 1138 <ui-select ng-model="teamSearchParams.season" theme="select2" on-select="selectSeason($item)"> 1139 <ui-select-match allow-clear="true" placeholder="Select a Season">{{$select.selected.name}}</ui-select-match> 1140 <ui-select-choices repeat="season.value as season in searchFields.seasons | propsFilter: {name: $select.search}" position='bottom'> 1141 <div ng-bind-html="season.name | highlight: $select.search"></div> 1142 </ui-select-choices> 1143 </ui-select> 1144 <span class="help-block">{{validation4teamSearch.season}}</span> 1145 </div> 1146 <!--/Season Dropdown--> 1147 1148 <!-- TeamID 4 BJ --> 1149 <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-6" ng-show="fields4BJ" close-on-select="true" skip-focusser="true"> 1150 <h4 class="text_red" style="border: none;">TeamID:</h4> 1151 <input type="text" id="teamID" ng-model="teamSearchParams.teamID4BJ" placeholder="Team ID" class="form-control" ng-class="{'hiddenField': fields4BJ == 'false'}"> 1152 </div> 1153 1154 1155 <div class="col-6 col-sm-6 col-md-4 noPrint text-right" style="padding-top:28px" ng-class="onHome? 'col-lg-4 col-xl-4': 'col-lg-3 col-xl-3'"> 1156 <a style="width:100%" href ng-click="teamSearch()" class="btn btn-danger btn-sm"><i class="fa fa-search" aria-hidden="true"></i> Search</a> 1157 </div> 1158 1159 </div> 1160 1161 1162</div> 1163
1164<script> 1165 1166 usssa.controller('teamSearchCtrl', ['$scope', '$rootScope', '$filter', '$http', '$location', 'jsLib', 'API', 'storage','$window', function($scope, $rootScope, $filter, $http, $location, jsLib, API, storage,$window) { 1167 1168 function init() { 1169 $scope.loading = true; 1170 $scope.onHome = document.URL.indexOf('home')>-1; 1171 $scope.fields4BJ = false; 1172 1173 1174 $scope.teamSearchParams ={}; 1175 1176 if(jsLib.getVal('teamname') || jsLib.getVal('classID') || jsLib.getVal('stateID') || jsLib.getVal('seasonID')){ 1177 $scope.teamSearchParams.teamName = jsLib.getVal('teamname'); 1178 $scope.teamSearchParams.class = jsLib.getVal('classID')*1; 1179 $scope.teamSearchParams.state = jsLib.getVal('stateID')*1; 1180 $scope.teamSearchParams.region = jsLib.getVal('regionID')*1; 1181 $scope.teamSearchParams.season = jsLib.getVal('seasonID'); 1182 } else { 1183 var savedParams = storage.get('teamSearchParams'); 1184 if(savedParams){ 1185 $scope.teamSearchParams = savedParams; 1186 if ($scope.teamSearchParams.sport) 1187 loadClasses(); 1188 } 1189 } 1190 1191 if($scope.onHome){ 1192 //console.log('$scope.onHome', $scope.onHome); 1193 getSportsWithFolder(); 1194 } else{ 1195 loadClasses(); 1196 } 1197 1198 if(!$scope.onHome){ 1199 getSearchFields(jsLib.getSportID()); 1200 } 1201 1202 $scope.availableSearchParams = [ 1203 { key: "name", name: "Team Name", placeholder: "Team Name..." }, 1204 // { key: "class", name: "Class", placeholder: "Class..." , restrictToSuggestedValues: true, suggestedValues: ['Berlin', 'London', 'Paris']}, 1205 { key: "city", name: "City", placeholder: "City..." , suggestedValues: [{name:'Berlin', value:1}, {name:'London', value:2}, {name:'Paris', value:3}]}, 1206 { key: "country", name: "Country", placeholder: "Country..." }, 1207 { key: "emailAddress", name: "E-Mail", placeholder: "E-Mail...", allowMultiple: true }, 1208 { key: "job", name: "Job", placeholder: "Job..." } 1209 ]; 1210 } 1211 1212 $scope.hiddenFields = function(){ 1213 $scope.fields4BJ = true; 1214 } 1215 1216 $scope.selectSport = function($item) { 1217 $scope.teamSearchParams.class = null; 1218 $scope.fields4BJ = false; 1219 1220 loadClasses(); 1221 if($scope.onHome){ 1222 getSearchFields($scope.teamSearchParams.sport.sportID); 1223 } 1224 1225 }; 1226 1227 function getSearchFields(_sportID){ 1228 API.post({ action: 'getBasicEventSearchFieldsV11', sportID: _sportID}, 24*3) 1229 .then( 1230 function(data) { 1231 $scope.searchFields = data; 1232 $scope.loading = false; 1233 $scope.teamSearchParams.season = data.seasons[1].value; 1234 }, 1235 function(error) { 1236 console.log('error', error); 1237 $scope.loading = false; 1238 $scope.error = true; 1239 } 1240 ); 1241 } 1242 1243 function getSportsWithFolder(){ 1244 API.post({ action: 'getSportsWithFolder'}) 1245 .then( 1246 function(data) { 1247 $scope.sportsWithFolder = data; 1248 $scope.loading = false; 1249 }, 1250 function(error) { 1251 console.log('error', error); 1252 $scope.loading = false; 1253 $scope.error = true; 1254 } 1255 ); 1256 } 1257 1258 $scope.teamSearch = function(){ 1259 1260 if($scope.teamSearchParams.teamID4BJ){ 1261 1262 location.assign('/' + 'teamHome/?teamID=' + $scope.teamSearchParams.teamID4BJ); 1263 1264 } else { 1265 1266 $scope.validation4teamSearch = { 1267 error: false, 1268 messages: [] 1269 }; 1270 1271 if($scope.onHome){ 1272 1273 if (!$scope.teamSearchParams.sport || $scope.teamSearchParams.sport === '') { 1274 $scope.validation4teamSearch.sport = 'Sport is required'; 1275 $scope.validation4teamSearch.error = true; 1276 } 1277 } 1278 1279 1280 if ((!$scope.teamSearchParams.teamName || $scope.teamSearchParams.teamName === '') && (!$scope.teamSearchParams.class || $scope.teamSearchParams.class === '') && (!$scope.teamSearchParams.state || $scope.teamSearchParams.state === '')){ 1281 $scope.validation4teamSearch.teamName = 'At least one search parameter is required'; 1282 $scope.validation4teamSearch.error = true; 1283 } 1284 1285 if (!$scope.teamSearchParams.season || $scope.teamSearchParams.season === '') { 1286 $scope.validation4teamSearch.season = 'Season is required'; 1287 $scope.validation4teamSearch.error = true; 1288 } 1289 1290 if (!$scope.validation4teamSearch.error) { 1291 var params = "teamname=" + $scope.teamSearchParams.teamName + 1292 "®ionID=" + $scope.teamSearchParams.region + 1293 "&classID=" + $scope.teamSearchParams.class + 1294 "&seasonID=" + $scope.teamSearchParams.season; 1295 1296 storage.save('teamSearchParams', $scope.teamSearchParams); 1297 location.assign(location.origin + '/' + ($scope.teamSearchParams.sport ? $scope.teamSearchParams.sport.folder : jsLib.getSportName()) + '/TeamSearchResults/?' + params) 1298 } 1299 } 1300 } 1301 1302 function loadClasses() { 1303 if ($location.absUrl().indexOf("gsl") > -1) 1304 loadGSLClasses(); 1305 else { 1306 $scope.loading = true; 1307 console.log('sport',$scope.teamSearchParams.sport); 1308 API.post({ action: 'StatsGetClass',gdSport:($scope.teamSearchParams.sport ? $scope.teamSearchParams.sport.sportID : jsLib.getSportID())}) 1309 .then(function(data) { 1310 $scope.loading = false; 1311 $scope.teamClasses = data; 1312 }, 1313 function(error) { 1314 $scope.loading = false; 1315 $scope.error = true; 1316 }); 1317 } 1318 } 1319 1320 function loadGSLClasses() { 1321 $scope.loading = true;
1322 API.post({ action: 'StatsGetClass',gsl_only:1,gdSport:34}) 1323 .then(function(data) { 1324 $scope.loading = false; 1325 $scope.teamClasses = data; 1326 }, 1327 function(error) { 1328 $scope.loading = false; 1329 $scope.error = true; 1330 }); 1331 } 1332 1333 init(); 1334 }]); 1335 1336</script>
1336 1337 </div> 1338 1339 1340 <div ng-if="currentTab == 'player'"> 1341 1342 1343<div ng-controller="playerSearchCtrl"> 1344 <h3 class="noPrint">Player Search</h3> 1345 <div class="row marginT15 marginB15 noPrint"> 1346 <!--Player Name--> 1347 <div class="col-6 col-sm-6 col-md-3 col-lg-3 col-xl-3" ng-class="{'has-error':validation4playerSearch.firstName}"> 1348 <h4 class="text_red" style="border: none;">First Name</h4> 1349 <input ng-model="playerSearchParams.firstName" class="form-control" type="search" placeholder="First Name"> 1350 <span class="help-block">{{validation4playerSearch.firstName}}</span> 1351 </div> 1352 <!--Player Last Name--> 1353 <div class="col-6 col-sm-6 col-md-3 col-lg-3 col-xl-3" ng-class="{'has-error':validation4playerSearch.firstName}"> 1354 <h4 class="text_red" style="border: none;">Last Name</h4> 1355 <input ng-model="playerSearchParams.lastName" class="form-control" type="search" placeholder="Last Name"> 1356 1357 </div> 1358 <!--State Dropdown--> 1359 <div class="col-6 col-sm-6 col-md-3 col-lg-3 col-xl-3"> 1360 <h4 class="text_red" style="border: none;">State</h4> 1361 <ui-select ng-model="playerSearchParams.state" theme="select2"> 1362 <ui-select-match allow-clear="true" placeholder="Select a State">{{$select.selected.StateName}}</ui-select-match> 1363 <ui-select-choices repeat="state.StateID as state in states | propsFilter: {StateName: $select.search}" position='bottom'> 1364 <div ng-bind-html="state.StateName | highlight: $select.search"></div> 1365 </ui-select-choices> 1366 </ui-select> 1367 1368 </div> 1369 <div class="col-6 col-sm-6 col-md-3 col-lg-3 col-xl-3" ng-class="{'has-error':validation4playerSearch.sport}"> 1370 <h4 class="text_red" style="border: none;">Sport</h4> 1371 <ui-select ng-model="playerSearchParams.sport" theme="select2"> 1372 <ui-select-match allow-clear="true" placeholder="Select a Sport">{{$select.selected.sport}}</ui-select-match> 1373 <ui-select-choices repeat="sport.folder as sport in sportsWithFolder | propsFilter: {sport: $select.search}" position='bottom'> 1374 <div ng-bind-html="sport.sport | highlight: $select.search"></div> 1375 </ui-select-choices> 1376 </ui-select> 1377 <span class="help-block">{{validation4playerSearch.sport}}</span> 1378 </div> 1379 <!--/State Dropdown--> 1380 </div> 1381 <div class="row"> 1382 <div class="col-12 noPrint text-center"> 1383 <a href ng-click="playerSearch()" class="btn btn-danger btn-md"><i class="fa fa-search" aria-hidden="true"></i> Search</a> 1384 </div> 1385 </div> 1386 <div ng-hide="onPlayerSearch || onHome" class="noPrint"> 1387 <hr> 1388 <ul> 1389 <li>You can search for any player that has been added to an online USSSA roster.</li> 1390 <li>View the roster history of any player. Example <a class="text-danger" href="//PlayerLocker/?gdSport={{sportID}}&PlaID=88">Click Here</a>.</li> 1391 <li>Career stats can now be tracked. Tools are available for each coach to track player stats. 1392 <br /> Those stats will show up on a players individual page.</li> 1393 <li>You can enter partial first or last names. For example : to find "Eddie Kutz" typing "KUT" in last name and "ED" in first name will work.</li> 1394 <li>Why can't I find myself? Your coach has not entered your teams roster online or your name has been mispelled.</li> 1395 </ul> 1396 </div> 1397</div>
1398<script> 1399usssa.controller('playerSearchCtrl', ['$scope', '$rootScope', '$filter', '$http', '$location', 'jsLib', 'API', 'storage', '$window', function($scope, $rootScope, $filter, $http, $location, jsLib, API, storage, $window) { 1400 1401 function init() { 1402 $scope.loading = true; 1403 $scope.onPlayerSearch = document.URL.indexOf('playerSearchResults') > -1; 1404 $scope.onHome = document.URL.indexOf('home') > -1; 1405 $scope.playerSearchParams = { 1406 sport: null 1407 }; 1408 1409 if (jsLib.getVal('firstname') || jsLib.getVal('lastname') || jsLib.getVal('stateID')) { 1410 $scope.playerSearchParams.firstName = jsLib.getVal('firstname'); 1411 $scope.playerSearchParams.lastName = jsLib.getVal('lastname'); 1412 $scope.playerSearchParams.state = jsLib.getVal('stateID') * 1; 1413 $scope.playerSearchParams.sport = jsLib.getSportName(); 1414 } else { 1415 var savedParams = storage.get('playerSearchParams'); 1416 if (savedParams) 1417 $scope.playerSearchParams = savedParams; 1418 } 1419 getStates(); 1420 1421 // if($scope.onHome){ 1422 getSportsWithFolder(); 1423 //} 1424 1425 API.post({ action: 'getBasicEventSearchFieldsV11', sportID: jsLib.getSportID() }, 24 * 3) 1426 .then( 1427 function(data) { 1428 $scope.searchFields = data; 1429 $scope.loading = false; 1430 }, 1431 function(error) { 1432 console.log('error', error); 1433 $scope.loading = false; 1434 $scope.error = true; 1435 } 1436 ); 1437 } 1438 1439 function getStates() { 1440 $scope.loading2 = true; 1441 API.post({ action: 'getStatesNoSplit', gdSport: jsLib.getSportID() }). 1442 then(function(data) { 1443 $scope.states = data; 1444 $scope.loading2 = false; 1445 }); 1446 } 1447 1448 function getSportsWithFolder() { 1449 API.post({ action: 'getSportsWithFolder' }, 24 * 30) 1450 .then( 1451 function(data) { 1452 $scope.sportsWithFolder = data; 1453 if (jsLib.getSportID()) 1454 $scope.playerSearchParams.sport = jsLib.getSportName(); 1455 $scope.loading = false; 1456 }, 1457 function(error) { 1458 console.log('error', error); 1459 $scope.loading = false; 1460 $scope.error = true; 1461 } 1462 ); 1463 1464 } 1465 1466 $scope.playerSearch = function() { 1467 $scope.validation4playerSearch = { 1468 error: false, 1469 messages: [] 1470 }; 1471 1472 if ((!$scope.playerSearchParams.firstName || $scope.playerSearchParams.firstName === '') && (!$scope.playerSearchParams.lastName || $scope.playerSearchParams.lastName === '')) { 1473 $scope.validation4playerSearch.firstName = 'At least one search parameter is required'; 1474 $scope.validation4playerSearch.error = true; 1475 } 1476 1477 if ($scope.onHome) { 1478 1479 if (!$scope.playerSearchParams.sport || $scope.playerSearchParams.sport === '') { 1480 $scope.validation4playerSearch.sport = 'Sport is required'; 1481 $scope.validation4playerSearch.error = true; 1482 } 1483 } 1484 1485 if (!$scope.validation4playerSearch.error) { 1486 1487 var params = 1488 "firstname=" + $scope.playerSearchParams.firstName + 1489 "&lastname=" + $scope.playerSearchParams.lastName + 1490 "&stateID=" + $scope.playerSearchParams.state; 1491 1492 storage.save('playerSearchParams', $scope.playerSearchParams); 1493 location.assign(location.origin + '/' + ($scope.playerSearchParams.sport ? $scope.playerSearchParams.sport : jsLib.getSportName()) + '/playerSearchResults/?' + params); 1494 } 1495 } 1496 1497 init(); 1498}]); 1499</script>
1499 1500 </div> 1501 1502 1503 <div ng-if="currentTab == 'ranking'"> 1504
1505<script src="/js/controllers/ISTSRank1Ctrl.js"></script>
1505 1506<div ng-controller="ISTSRank1Ctrl"> 1507 1508 <h3>Rankings</h3> 1509 <!-- Spinner --> 1510 <loading ng-show="loading"></loading> 1511 <!-- Error --> 1512 <div ng-if="error"> 1513 <div class="alert danger">{{errorMsg}}</div> 1514 </div> 1515 1516 <div class="row marginT20"> 1517 1518 <div ng-show="onHome" class="col-6 col-sm-6 col-md-4" ng-class="{'has-error':validation4rankings.sport, 'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}"> 1519 <h4 class="text_red" style="border: none;">Sport</h4> 1520 <ui-select ng-model="searchFields.sport" theme="select2" on-select="selectSport2($item)"> 1521 <ui-select-match allow-clear="true" placeholder="Select a Sport">{{$select.selected.sport}}</ui-select-match> 1522 <ui-select-choices repeat="sport in sportsWithFolder | propsFilter: {sport: $select.search}" position='bottom'> 1523 <div ng-bind-html="sport.sport | highlight: $select.search"></div> 1524 </ui-select-choices> 1525 </ui-select> 1526 <span class="help-block">{{validation4rankings.sport}}</span> 1527 </div> 1528 1529 <div ng-show="searchFields.sport || !onHome" ng-class="{'has-error':validation4rankings.classID, 'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}" class="col-6 col-sm-6 col-md-4"> 1530 <h4 class="text_red" style="border: none;">Class</h4> 1531 <ui-select ng-model="searchFields.classID" theme="select2"> 1532 <ui-select-match allow-clear="true" placeholder="Select a Class">{{$select.selected.ClassName}}</ui-select-match> 1533 <ui-select-choices repeat="class.ClassID as class in formData.classes | propsFilter: {ClassName: $select.search}" position='bottom'> 1534 <div ng-bind-html="class.ClassName | highlight: $select.search"></div> 1535 </ui-select-choices> 1536 </ui-select> 1537 <span class="help-block">{{validation4rankings.classID}}</span> 1538 </div> 1539 1540 <div ng-show="searchFields.sport || !onHome" ng-class="{'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}" class="col-6 col-sm-6 col-md-4"> 1541 <h4 class="text_red" style="border: none;">State</h4> 1542 <ui-select ng-model="searchFields.regionID" theme="select2"> 1543 <ui-select-match allow-clear="true" placeholder="State">{{$select.selected.name}}</ui-select-match> 1544 <ui-select-choices repeat="state.value as state in formData.states | propsFilter: {name: $select.search}" position='bottom'> 1545 <div ng-bind-html="state.name | highlight: $select.search"></div> 1546 </ui-select-choices> 1547 </ui-select> 1548 <span class="help-block">{{validation4rankings.state}}</span> 1549 1550 </div> 1551 1552 <div ng-show="searchFields.sport || !onHome" ng-class="{'has-error':validation4rankings.season, 'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}" class="col-6 col-sm-6 col-md-4"> 1553 <h4 class="text_red" style="border: none;">Season</h4> 1554 <ui-select ng-model="searchFields.seasonID" theme="select2"> 1555 <ui-select-match allow-clear="true" placeholder="Season">{{$select.selected.season_description}}</ui-select-match> 1556 <ui-select-choices repeat="season.season_id as season in formData.seasons | propsFilter: {season_description: $select.search}" position='bottom'> 1557 <div ng-bind-html="season.season_description | highlight: $select.search"></div> 1558 </ui-select-choices> 1559 </ui-select> 1560 <span class="help-block">{{validation4rankings.season}}</span> 1561 </div> 1562 1563 <div ng-show="searchFields.sport || !onHome" ng-class="{'has-error':validation4rankings.rank, 'col-lg-4 col-xl-4': onHome,'col-lg-3 col-xl-3':!onHome}" class="col-6 col-sm-6 col-md-4"> 1564 <h4 class="text_red" style="border: none;">Ranking</h4> 1565 <ui-select ng-model="searchFields.rank" theme="select2"> 1566 <ui-select-match allow-clear="true" placeholder="Ranking">{{$select.selected.name}}</ui-select-match> 1567 <ui-select-choices repeat="rank.value as rank in formData.ranks | propsFilter: {name: $select.search}"> 1568 <div ng-bind-html="rank.name | highlight: $select.search"></div> 1569 </ui-select-choices> 1570 </ui-select> 1571 <span class="help-block">{{validation4rankings.rank}}</span> 1572 </div> 1573 <!-- SUBMIT --> 1574 <div class="col-6 col-sm-6 col-md-4 noPrint text-right" style="padding-top:35px" ng-class="onHome? 'col-lg-4 col-xl-4': 'col-lg-3 col-xl-3'"> 1575 <a style="width:100%" href class="margintop20 btn btn-danger btn-md" ng-click="findRankings()">Search <fa icon="search" style="color:#fff"></fa></a> 1576 </div> 1577 </div> 1578 <hr class="marginB20"> 1579</div> 1580 </div> 1581 1582 <div style="margin-top: 36px"> 1583 <div id="snack-video-player"></div> 1584
1584<script> 1585 function loadSnackScript(src) { 1586 const script = document.createElement('script'); 1587 script.src = src; 1588 script.async = true; 1589 const snackvideo = document.getElementById('snack-video-player'); 1590 if (snackvideo) { 1591 snackvideo.appendChild(script); 1592 } 1593 } 1594 1595 if (Math.random() < 0.05) { 1596 loadSnackScript('https://videohb.snack-media.com/config/usssa.com-pubstack.min.js'); 1597 console.log('loading snack player'); 1598 } else { 1599 loadSnackScript('https://live.primis.tech/live/liveView.php?s=118351&schain=1.0,1!snack-media.com,SNM_4050,1'); 1600 console.log('loading primis player'); 1601 } 1602 1603 var $vvv = $vvv || {}; 1604 $vvv.queue = $vvv.queue || []; 1605 $vvv.queue.push(function () { 1606 let snackIsMobile = window.innerWidth < 768; 1607 if (snackIsMobile){ 1608 //console.log("Snack Video Player mobile"); 1609 $vvvInit( 1610 'snack-video-player', 'snackmedia-videoplayer-instream/usssa.com-instream-mobile', [ 1611 'https://1733451806.rsc.cdn77.org/usssa/dea2ea68-ee36-4b41-9c6d-b47a4a2f7a48/dea2ea68-ee36-4b41-9c6d-b47a4a2f7a48_original.mp4', 1612 'https://1733451806.rsc.cdn77.org/usssa/000d945f-ca65-4ae6-969c-54ca6f689ff0/000d945f-ca65-4ae6-969c-54ca6f689ff0_hd.mp4'], 1613 'companion', 1614 ['https://v11.usssa.net/images/VideoAdPlaceholder_1056x594.jpg' 1615 ]); 1616 } else { 1617 //console.log("Snack Video Player desktop"); 1618 $vvvInit( 1619 'snack-video-player', 'snackmedia-videoplayer-instream/usssa.com-instream', [ 1620 'https://1733451806.rsc.cdn77.org/usssa/dea2ea68-ee36-4b41-9c6d-b47a4a2f7a48/dea2ea68-ee36-4b41-9c6d-b47a4a2f7a48_original.mp4', 1621 'https://1733451806.rsc.cdn77.org/usssa/000d945f-ca65-4ae6-969c-54ca6f689ff0/000d945f-ca65-4ae6-969c-54ca6f689ff0_hd.mp4'], 1622 'companion', 1623 ['https://v11.usssa.net/images/VideoAdPlaceholder_1056x594.jpg' 1624 ] 1625 ); 1626 } 1627 }); 1628 </script>
1628 1629 </div> 1630</div> 1631 1632 1633 <div id="snack-mrec" class="text-center d-lg-none noPrint pt-3"></div> 1634
1635<script src="/js/controllers/newsCtrl.js"></script>
1635 1636<div class="dvNews marginT15" ng-controller="newsCtrl"> 1637 <loading ng-show="loading"></loading> 1638 <div ng-hide="loading" ng-repeat="sport in newsSports"> 1639 <div id="{{getLeaderboardId($index, false)}}" ng-if="!isMobile && shouldShowLeaderboard($index, false)" class="text-center pt-3"></div> 1640 <div id="{{getLeaderboardId($index, true)}}" ng-if="isMobile && shouldShowLeaderboard($index, true)" class="text-center pt-3"></div> 1641 <div class="row"> 1642 <div class="col-lg-12 no-padding sport-header"> 1643 <h3><span class="title">{{sport.name}} News</span> 1644 <a href="/{{sport.folder}}/news" ng-if="!jsLib.getSportID()"><span class="all">Show All</span></a> 1645 <br class="clearfix"> 1646 </h3> 1647 </div> 1648 </div> 1649 <div ng-class="{'longNewsList': sport.showAll}"> 1650 <loading ng-show="sport.loading"></loading> 1651 <div class="row no-gutters news-item" ng-repeat="news in sport.news" ng-hide="sport.loading"> 1652 <div class="col-lg-3" style="--aspect-ratio: 3/2;"> 1653 <img class="news-item--preview-img" ng-src="{{news.imageUrl}}"> 1654 <div class="news-item--type-overlay" ng-if="shouldShowTypeIcon(news)"> 1655 <i class="fa fa-play"></i> 1656 </div> 1657 </div> 1658 <div class="col-lg-9 pl-3 pt-3 pt-lg-0"> 1659 <a href="/{{jsLib.getSportName(sport.id)}}/newsRead/?id={{news.id}}"> 1660 <h4 ng-bind-html="news.title"></h4> 1661 <p ng-bind-html="jsLib.trustedHtml(news.content)"></p> 1662 </a> 1663 </div> 1664 </div> 1665 </div> 1666 </div> 1667</div> 1668 </div> 1669</div> 1670<div ng-controller="sportHomeCtrl"></div>
1671<script> 1672usssa.controller('sportHomeCtrl', ['pageTitle', function(pageTitle) { 1673 pageTitle.set('Home', true); 1674}]); 1675</script>
1675 1676 1677
1678<script src="/js/directives/u3SocialDirective.js"></script>
1678 1679<!-- Footer --> 1680<div id="footer-v1" class="footer-v1 noPrint"> 1681 <div class="footer"> 1682 1683 1684<div class="container"> 1685 <div class="div-sponsors footer-v1"> 1686 <div class="headline"><h2>National Sponsors</h2></div> 1687 <ul class="sponsors row" style="margin-left: -30px; margin-right: 0;"> 1688 <li class="col"><a class="d-block" href="http://www.demarini.com/en-us/" title="Demarini" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Demarini')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_demarini.jpg" alt="Demarini"></a></li> 1689 <li class="col"><a class="d-block" href="http://www.dudleysports.com/" title="Dudley" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Dudley')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_Dudley.jpg" alt="Dudley"></a></li> 1690 <li class="col"><a class="d-block" href="https://easton.rawlings.com/" title="Easton" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Easton')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_easton.png" alt="Easton"></a></li> 1691 <li class="col"><a class="d-block" href="http://www.slugger.com/" title="Louisville Slugger" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Louisville Slugger')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_louisville.jpg" alt="Louisville Slugger"></a></li> 1692 <li class="col"><a class="d-block" href="https://maruccisports.com/" title="Marucci" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Marucci')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_marucci.jpg" alt="Marucci"></a></li> 1693 1694 <!-- <li class="col"><a class="d-block" href="https://www.dickssportinggoods.com/" title="Dicks" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Dicks')"><img src="https://usssa.com/img/logos/sponsor_dicks.jpg" alt="Dicks"></a></li> --> 1695 </ul> 1696 <ul class="sponsors row" style="margin-left: -30px; margin-right: 0;"> 1697 <!-- <li class="col"><a class="d-block" style="align-items: center; justify-content: center; padding-top: 5%; display: flex !important;" href=" https://www.newbalance.com/" title="New Balance" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'New Balance')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_new_balance.png" alt="New Balance"></a></li> --> 1698 <!-- <li class="col"><a class="d-block" href="http://www.neweracap.com" title="New Era" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'New Era')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_new_era.jpg" alt="New Era"></a></li> --> 1699 <li class="col"><a class="d-block" href="https://miken.rawlings.com/" title="Miken" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Miken')"><img src="/img/logos/sponsor_miken_2021082401.png" alt="Miken"></a></li> 1700 <li class="col"><a class="d-block" href="https://www.rawlings.com/" title="Rawlings" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Rawlings')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_rawlings.jpg" alt="Rawlings"></a></li> 1701 <li class="col"><a class="d-block" style="align-items: center; justify-content: center; display: flex !important; height: 100%;" href="https://signaturepins.com/usssa?lid=JVT" title="Signature Pins" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Signature Pins')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_sig_pins.png" alt="Signature Pins"></a></li> 1702 <li class="col"><a class="d-block " href="http://www.worthsports.com/" title="Worth" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Worth')"><img src="/img/logos/sponsor_worth_2021082401.png" alt="Worth"></a></li> 1703 <li class="col">
1703<a class="d-block" href="https://www.wilson.com/en-us/" title="Wilson" onclick="ga('send', 'event', 'Footer Logo-Clicked', 'Wilson')"><img src="https://v11.usssa.net/images/logos/footer_logos/sponsor_wilson.png" alt="Wilson"></a></li> 1704 </ul> 1705 </div> 1706</div> 1707 1708 <div class="container"> 1709 <div> 1710 <div class="headline"><h2>Social Media</h2></div> 1711 <div class="social_items"> 1712 <u3-social></u3-social> 1713 </div> 1714 </div> 1715 <div class="row" style="margin-top: 15px"> 1716 <!-- Latest --> 1717 <div class="col-md-8 md-margin-bottom-40"> 1718 <div class="posts"> 1719 <div class="headline"><h2>Useful Links</h2></div> 1720 <div class="row"> 1721 <div class="col-6"> 1722 <ul class="list-unstyled link-list"> 1723 <!-- original --> 1724 <li><a href="http://usssatoday.com"><i class="fa fa-angle-right"></i> News</a></li> 1725 <li><a href="https://support.usssa.com"><i class="fa fa-angle-right"></i> Help Center</a></li> 1726 <li><a href="http://media.usssa.com"><i class="fa fa-angle-right"></i> Media Center</a></li> 1727 <li><a href="http://hof.usssa.com/"><i class="fa fa-angle-right"></i> Hall of Fame</a></li> 1728 <li><a href="https://usssa.com/contact"><i class="fa fa-angle-right"></i> Contact</a></li> 1729 <li><a href="https://storage.googleapis.com/prod-mainsite-docs/v11/general/ByLaws.pdf"><i class="fa fa-angle-right"></i> Bylaws</a></li> 1730 <li><a href="https://usssa.com/baseball_events"><i class="fa fa-angle-right"></i> USSSA Baseball Events</a></li> 1731 <!--PROD <li><a href="http://usssatoday.com"><i class="fa fa-angle-right"></i> News</a></li> 1732 <li><a href="https://hq.usssa.com/faqs"><i class="fa fa-angle-right"></i> Questions</a></li> 1733 <li><a href="http://media.usssa.com"><i class="fa fa-angle-right"></i> Media Center</a></li> 1734 <li><a href="http://hof.usssa.com/"><i class="fa fa-angle-right"></i> Hall of Fame</a></li> 1735 <li><a href="https://hq.usssa.com/contact"><i class="fa fa-angle-right"></i> Contact</a></li> 1736 <li><a href="https://www.usssa.com/docs/general/Bylaws.pdf"><i class="fa fa-angle-right"></i> Bylaws</a></li> 1737 <li><a href="/baseball_events"><i class="fa fa-angle-right"></i> USSSA Baseball Events</a></li> --> 1738 <!-- QA <li><a href="http://usssatoday.com"><i class="fa fa-angle-right"></i> News</a></li> 1739 <li><a href="https://dev-next.usssa.com/faqs"><i class="fa fa-angle-right"></i> Questions</a></li> 1740 <li><a href="http://media.usssa.com"><i class="fa fa-angle-right"></i> Media Center</a></li> 1741 <li><a href="http://hof.usssa.com/"><i class="fa fa-angle-right"></i> Hall of Fame</a></li> 1742 <li><a href="https://dev-next.usssa.com/contact"><i class="fa fa-angle-right"></i> Contact</a></li> 1743 <li><a href="https://www.usssa.com/docs/general/Bylaws.pdf"><i class="fa fa-angle-right"></i> Bylaws</a></li> 1744 <li><a href="/baseball_events"><i class="fa fa-angle-right"></i> USSSA Baseball Events</a></li> QA--> 1745 </ul> 1746 </div> 1747 <div class="col-6"> 1748 <ul class="list-unstyled link-list"> 1749 <li><a href="https://usssa.com/abusemolestation"><i class="fa fa-angle-right"></i> Abuse/ Molestation</a></li> 1750 <li><a href="https://usssa.com/athlete-safety"><i class="fa fa-angle-right"></i> Athlete Safety</a></li> 1751 <li><a href="https://usssa.com/terms-of-use"><i class="fa fa-angle-right"></i> Terms of Use</a></li> 1752 <li><a href="https://usssa.com/privacy"><i class="fa fa-angle-right"></i> Privacy</a></li> 1753 <li><a href="https://usssa.com/jobs"><i class="fa fa-angle-right"></i> Careers</a></li> 1754 <li><a href="https://storage.googleapis.com/prod-mainsite-docs/v11/general/Policy%26Procedures.pdf"><i class="fa fa-angle-right"></i> Policies & Procedures</a></li> 1755 <li><a href="https://usssa.com/fastpitch_events"><i class="fa fa-angle-right"></i> USSSA Fastpitch Events</a></li> 1756 </ul> 1757 </div> 1758 </div> 1759 </div> 1760 </div> 1761 <!-- End Latest --> 1762 1763 <!-- Address --> 1764 <div class="col-md-4 map-img md-margin-bottom-40"> 1765 <div class="headline"><h2>United States Specialty Sports Association</h2></div> 1766 <address class="md-margin-bottom-40"> 1767 <i class="fa fa-home" aria-hidden="true"></i> <span class="lbl-adress">5800 Stadium Pkwy<br/>Melbourne, FL 32940</span> 1768 </address> 1769 </div> 1770 <!-- End Address --> 1771 </div> 1772 </div> 1773 </div><!--/footer--> 1774 1775 <div class="copyrightV11"> 1776 <div class="container"> 1777 <div class="row"> 1778 <div class="col-md-6 text-left xs-text-center"> 1779 <p> 1780 1996 - 2026 © All Rights Reserved. 1781 </p> 1782 </div> 1783 <!-- Social Links --> 1784 <div class="col-md-6 text-right xs-text-center"> 1785 <ul class="social-icons"> 1786 <li><a href="https://www.facebook.com/playusssa/" data-original-title="Facebook" class="rounded-x social_facebook"></a></li> 1787 <li><a href="http://twitter.com/usssa" data-original-title="Twitter" class="rounded-x social_twitter"></a></li> 1788 <li><a href="https://www.youtube.com/user/usssatoday" data-original-title="YouTube" class="rounded-x social_youtube"></a></li> 1789 <li><a href="https://www.instagram.com/playusssa/" data-original-title="Instagram" class="rounded-x social_instagram"></a></li> 1790 </ul> 1791 </div> 1792 <!-- End Social Links --> 1793 </div> 1794 </div> 1795 </div><!--/copyright--> 1796</div> 1797 </div> 1798 1799 </form> 1800 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 66 bytes, lines 1800-1801
1800 1801 <script async src="https://www.googletagmanager.com/gtag/js?id=
1801UA-97468231-8
vendor: 14 bytes, lines 1801-1802
1801"></script> 1802
1802<script> 1803
vendor: 144 bytes, lines 1803-1807
1803window.dataLayer = window.dataLayer || []; 1804 function gtag(){dataLayer.push(arguments);} 1805 gtag('js', new Date()); 1806 1807 gtag('config', '
1807UA-97468231-8
vendor: 6 bytes, lines 1807-1808
1807'); 1808
1808</script>
1808 1809 1810 1811
1811<script type="text/javascript"> 1812 window.onUsersnapCXLoad = function(api) { api.init(); } 1813 var script = document.createElement('script'); 1814 script.defer = 1; 1815 script.src = 'https://widget.usersnap.com/global/load/e34b6a1b-cba7-4a37-8fa0-90cc8d03faee?onload=onUsersnapCXLoad'; 1816 document.getElementsByTagName('head')[0].appendChild(script); 1817 </script>
1817 1818 1819 <!-- SNACK MEDIA SCRIPTS --> 1820 <div id="snack-sticky"></div> 1821</body> 1822</html> 1823
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.