1 2 3 4<!DOCTYPE html> 5<html lang="en-US" data-lang="en-US" crm-lang="en-US" dir="ltr" crm-lcid="1033" 6 same-site-mode="None"> 7<head> 8 9 <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /> 10
10<script type="text/javascript" > 11 12 </script>
12 13 <title> 14 15 Home 16 · Skate Canada Membership Site 17</title> 18 19
19<script src="/_portal/d78574f9-20c3-4dcc-8d8d-85cf5b7ac141/Resources/ResourceManager?lang=en-US"></script>
19 20 21
21<script type="text/javascript"> 22 // Refresh all powerBI Iframes on Login in one Iframe 23 window.addEventListener('message', function (event) { 24 if (event && event.data && event.data == 'refreshPowerBI') { 25 $("iframe.powerbi").each(function () { 26 this.src = this.src; 27 }); 28 } 29 }); 30 31 // Fix for incorrect viewport width setting in IE 10 on Windows Phone 8. 32 if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 33 var msViewportStyle = document.createElement("style"); 34 msViewportStyle.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")); 35 document.getElementsByTagName("head")[0].appendChild(msViewportStyle); 36 } 37 </script>
37 38 39 40 41 <link href="/css/bootstrap.min.css" rel="stylesheet" /> 42 43 <link href="https://content.powerapps.com/resource/powerappsportal/dist/font-awesome.bundle-3d8a58a48f.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/font-awesome.bundle-3d8a58a48f.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 44 45 <link href="https://content.powerapps.com/resource/powerappsportal/dist/preform.bundle-b72a6ea21d.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/preform.bundle-b72a6ea21d.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 46 47 48 49 <link href="https://content.powerapps.com/resource/powerappsportal/dist/privatemode.bundle-049b12b66e.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/privatemode.bundle-049b12b66e.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 50 51 52 53 54 55 56 57 <link href="/theme.css?1660591221000" rel="stylesheet" /> 58<link href="/sccustom.css?1757515106000" rel="stylesheet" /> 59 60 <style type="text/css">body { 61 font-family: sans-serif 62} 63.dialog-overlay { 64 position: absolute; 65 top: 0; 66 left: 0; 67 right: 0; 68 bottom: 0; 69 background-color: rgba(0, 0, 0, 0.50); 70 z-index: 999999 71} 72.dialog-overlay .dialog { 73 width: 400px; 74 margin: 100px auto 0; 75 background-color: #fff; 76 box-shadow: 0 0 20px rgba(0,0,0,.2); 77 border-radius: 3px; 78 overflow: hidden 79} 80.dialog-overlay .dialog header { 81 padding: 10px 8px; 82 background-color: #f6f7f9; 83 border-bottom: 1px solid #e5e5e5 84} 85.dialog-overlay .dialog header h3 { 86 font-size: 14px; 87 margin: 0; 88 color: #555; 89 display: inline-block 90} 91.dialog-overlay .dialog header .fa-close { 92 float: right; 93 color: #c4c5c7; 94 cursor: pointer; 95 transition: all .5s ease; 96 padding: 0 2px; 97 border-radius: 1px 98} 99.dialog-overlay .dialog header .fa-close:hover { 100 color: #b9b9b9 101} 102.dialog-overlay .dialog header .fa-close:active { 103 box-shadow: 0 0 5px #673AB7; 104 color: #a2a2a2 105} 106.dialog-overlay .dialog .dialog-msg { 107 padding: 12px 10px 108} 109.dialog-overlay .dialog .dialog-msg p{ 110 margin: 0; 111 font-size: 15px; 112 color: #333 113} 114.dialog-overlay .dialog footer { 115 border-top: 1px solid #e5e5e5; 116 padding: 8px 10px 117} 118.dialog-overlay .dialog footer .controls { 119 direction: rtl 120} 121.dialog-overlay .dialog footer .controls .button { 122 padding: 5px 15px; 123 border-radius: 3px 124} 125.button { 126 cursor: pointer 127} 128.button-default { 129 background-color: rgb(248, 248, 248); 130 border: 1px solid rgba(204, 204, 204, 0.5); 131 color: #5D5D5D; 132} 133.button-danger { 134 background-color: #f44336; 135 border: 1px solid #d32f2f; 136 color: #f5f5f5 137} 138.link { 139 padding: 5px 10px; 140 cursor: pointer 141}</style> 142 143 144 145 146 147 148 <link href="https://content.powerapps.com/resource/powerappsportal/dist/pwa-style.bundle-55718a4c0d.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/pwa-style.bundle-55718a4c0d.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 149 150 </head> 151<body data-sitemap-state="/" 152 data-dateformat="M/d/yyyy" 153 data-timeformat="h:mm tt" 154 data-datetimeformat="M/d/yyyy h:mm tt" 155 data-app-path="/" 156 data-ckeditor-basepath="/js/BaseHtmlContentDesigner/Libs/msdyncrm_/libs/ckeditor/" 157 data-case-deflection-url="/_services/search/d78574f9-20c3-4dcc-8d8d-85cf5b7ac141"> 158 159 160 161 <link href="https://content.powerapps.com/resource/powerappsportal/dist/pcf-style.bundle-373a0f4982.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/pcf-style.bundle-373a0f4982.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 162 163 164 165 166 167 <div id="offlineNotificationBar" class="displayNone"> 168 <img alt="web" id="web" onerror="javascript: var target = event.target; var img = document.createElement('img'); img.src = '/css/images/web.png'; img.alt = 'web'; img.id = 'web' ; target.insertAdjacentElement('afterend',img); target.remove();" src="https://content.powerapps.com/resource/powerappsportal/img/web.png" /> 169 <div id="message">You’re offline. This is a read only version of the page.</div> 170 <div id="close" onclick="this.parentElement.style.display='none';"><img alt="close" onerror="javascript: var target = event.target; var img = document.createElement('img'); img.src = '/css/images/close.png'; img.alt = 'close'; img.id = '' ; target.insertAdjacentElement('afterend',img); target.remove();" src="https://content.powerapps.com/resource/powerappsportal/img/close.png" /></div> 171 </div> 172 173
174 175
175<script type="text/javascript"> 176 window.DisableCkEditor = window.DisableCkEditor || {}; 177 178 DisableCkEditor.Value = 'False'; 179 </script>
179 180 181
181<script type="text/javascript"> 182 var enableOmniChannelWidgetWithSiteCopilot = 'False'; 183 if (enableOmniChannelWidgetWithSiteCopilot === "True" || enableOmniChannelWidgetWithSiteCopilot === "true") { 184 const authUrl = window.location.origin + "/_services/auth/portalusertoken"; 185 const fetchWithRetries = async (url, options, retries) => { 186 try { 187 const authResponse = await fetch(url, options); 188 const token = await authResponse.text(); 189 sessionStorage['c2Token'] = token; 190 } catch (err) { 191 if (retries === 1) throw err; 192 return await fetchWithRetries(url, options, retries - 1); 193 } 194 }; 195 fetchWithRetries(authUrl, { method: "POST" }, 4); 196 197 // Enable/disable Omnichannel session refresh on auth state change 198 // When enabled, closeChat() is called when user logs in/out to start a fresh session 199 var enableOmniChannelSessionRefreshSetting = 'True'; 200 window.enableOmniChannelSessionRefresh = enableOmniChannelSessionRefreshSetting === 'True' || enableOmniChannelSessionRefreshSetting === 'true'; 201 } 202 </script>
202 203 204
204<script type="text/javascript"> 205 var isPvaBotAuthenticated = sessionStorage['isPvaBotAuthenticated']; 206 var isPortalUserLoggedIn = 'False'; 207 208 if ((isPvaBotAuthenticated != null || isPvaBotAuthenticated != undefined) && isPvaBotAuthenticated != isPortalUserLoggedIn) { 209 sessionStorage['triggerPvaBotSignOut'] = true; 210 sessionStorage.removeItem('c2Token'); 211 sessionStorage.removeItem('directLinetoken'); 212 sessionStorage.removeItem('conversation_Id'); 213 214 sessionStorage.removeItem('bot_c2Token'); 215 sessionStorage.removeItem('botdirectLinetoken'); 216 sessionStorage.removeItem('botconversation_Id'); 217 } 218 sessionStorage['isPvaBotAuthenticated'] = isPortalUserLoggedIn; 219 </script>
219 220 221
221<script type="text/javascript"> 222 window["CSPSettings"] = window["CSPSettings"] || {}; 223 window["CSPSettings"].nonce = ''; 224 window["FabricConfig"] = window["FabricConfig"] || {}; 225 window["FabricConfig"].mergeStyles = window["FabricConfig"].mergeStyles || {}; 226 window["FabricConfig"].mergeStyles.cspSettings = window["CSPSettings"]; 227 window["Microsoft"] = window["Microsoft"] || {}; 228 window["Microsoft"].Dynamic365 = { 229 Portal: { 230 231 User: { 232 userName: '', 233 firstName: '', 234 lastName: '', 235 email: '', 236 contactId: '', 237 userRoles: [], 238 }, 239 240 type: 'StarterPortal', 241 id: 'eb044534-7834-4d70-a3b9-9c591e3948a3', 242 geo: 'NAM', 243 tenant: '8d0ac5fd-9b51-4d16-ab34-ebdad8f3e554', 244 correlationId: 'ee2fb3e2-25b5-4a79-8f0f-663715c18e5f', 245 orgEnvironmentId: '8e9bf521-74af-4c00-878d-4064993e7459', 246 orgId: '82de2c0f-ca67-4785-9e35-86cece941d6d', 247 portalProductionOrTrialType: 'Production', 248 isTelemetryEnabled: 'True', 249 InstrumentationSettings: { 250 instrumentationKey: '197418c5cb8c4426b201f9db2e87b914-87887378-2790-49b0-9295-51f43b6204b1-7172', 251 collectorEndpoint: 'https://us-mobile.events.data.microsoft.com/OneCollector/1.0/' 252 }, 253 timerProfileForBatching: 'NEAR_REAL_TIME', 254 activeLanguages: ["fr-FR","en-US"], 255 isClientApiEnabled: 'True', 256 isSpaSite: 'False' 257 } 258 }; 259 260 window["Microsoft"].PowerPages = window["Microsoft"].PowerPages || {}; 261 window["Microsoft"].PowerPages.onPagesClientApiReady = (callback) => { 262 return new Promise((resolve, reject) => { 263 let isComplete = false; 264 let timeoutId; 265 const timeoutInterval = 10000; 266 267 function handleReady() { 268 if (!isComplete && window.$pages) { 269 isComplete = true; 270 clearTimeout(timeoutId); 271 try { 272 if (typeof callback === "function") { 273 callback(window.$pages); 274 } 275 } catch (e) { 276 console.error("onPagesClientApiReady callback error:", e); 277 } 278 resolve(window.$pages); // should we reject if callback throws an error 279 } 280 } 281 282 if (window.$pages) { 283 handleReady(); 284 return; 285 } 286 287 function sdkListener() { 288 handleReady(); 289 window.removeEventListener('pagesSDKInitialized', sdkListener); 290 } 291 292 window.addEventListener('pagesSDKInitialized', sdkListener); 293 294 timeoutId = setTimeout(() => { 295 if (!isComplete) { 296 window.removeEventListener('pagesSDKInitialized', sdkListener); 297 if (window.$pages) { 298 handleReady(); 299 } else { 300 isComplete = true; 301 reject(new Error('window.$pages not available.')); 302 } 303 } 304 }, timeoutInterval); 305 }); 306 }; 307 308 // Deprecated alias: Microsoft.Dynamic365.Portal.onPagesClientApiReady. 309 // Remove once telemetry shows no callers remain. 310 (function () { 311 var _impl = window["Microsoft"].PowerPages.onPagesClientApiReady; 312 var _logged = false; 313 314 window["Microsoft"].Dynamic365.Portal.onPagesClientApiReady = function (callback) { 315 if (!_logged) { 316 _logged = true; 317 try { 318 if (window.clientLogWrapper && typeof window.clientLogWrapper.traceWarning === "function") { 319 window.clientLogWrapper.traceWarning( 320 "Microsoft.Dynamic365.Portal.onPagesClientApiReady invoked (deprecated)", 321 "DeprecatedApi", 322 "ClientApiReady", 323 "Invoke", 324 "DeprecationTracker" 325 ); 326 } 327 if (typeof console !== "undefined" && console.warn) { 328 console.warn( 329 "[DEPRECATED] Microsoft.Dynamic365.Portal.onPagesClientApiReady is deprecated " + 330 "and will be removed in a future release. Use Microsoft.PowerPages.onPagesClientApiReady instead." 331 ); 332 } 333 } catch (_) { /* never break the caller */ } 334 } 335 336 return _impl(callback); 337 }; 338 })(); 339 340 // Mark request not cacheable if Dynamics365PortalAnalytics cookie is being refreshed by the server or if the cookie in request header is invali
340d 341 342 343 // For client side telemetry intializing Dynamics365PortalAnalytics cookie object 344 345 window["Microsoft"].Dynamic365.Portal.dynamics365PortalAnalytics = 'qpZT1KIgDn5AjhzlYtUZyAoYKM2crsoYcWpoHRJin2N5xoFTcJPIfBQ_0giL95Q_l95Vlet2Ov0NQKxVeN11Hqz3jmxwBSOE6X17nRJ6l03DC2-M300VwgFSGSms95012cHm_WZ3JZycA0DdaV4QZw2'; // CodeQL [SM00430] False Positive: only alphanumeric chars allowed, for non-alphanumeric char it will return INVALID_CHARACTERS_IN_COOKIE 346 347 348 </script>
348 349 350
350<script type="text/javascript"> 351 352 353 </script>
353 354 355 356
356<script type="text/javascript" src="~/membershipportal.js"></script>
356 357 358 359 360 361 362 363 364<input type="hidden" id="hdnusername" name="username" value=""> 365<div class="navbar navbar-inverse navbar-static-top" role="navigation"> 366 <div class="container"> 367 <div class="navbar-header"> 368 <div class="visible-xs-block"> 369 <div class="xrm-editable-html xrm-attribute" data-languageContext="English"><div class="xrm-attribute-value"><div><a class="navbar-brand" href="~/" tabindex="-1" title="Skate Canada Membership Site">Skate Canada Membership Site</a></div> 370 371 372</div></div> 373 </div> 374 <div class="visible-sm-block visible-md-block visible-lg-block navbar-brand"> 375 <div class="xrm-editable-html xrm-attribute" data-languageContext="English"><div class="xrm-attribute-value"><a href="/" title="Home"> 376 <img alt="Skate Canada Membership Site" src="/sclogo_en_dark.png" style="height: 90px; margin-top:50px;"> 377</a> 378 379</div></div> 380 </div> 381 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" onclick="setHeight();"> 382 <span class="sr-only">Toggle navigation</span> 383 <span class="icon-bar"></span> 384 <span class="icon-bar"></span> 385 <span class="icon-bar"></span> 386 </button> 387 </div> 388 <div id="navbar" class="navbar-collapse collapse"> 389 390 391 <div class="navbar-right menu-bar " data-weblinks-maxdepth="2"> 392 <ul class="nav navbar-nav weblinks"> 393 394 395 396 397 398 399 <li class="weblink "> 400 <a href="/en-US/" 401 title="Home"> 402 <span class="fa fa-home" aria-hidden="true"></span> 403 </a> 404 405 406 </li> 407 408 409 410 411 <li class="divider-vertical"></li> 412 413 <li class="dropdown"> 414 <a class="dropdown-toggle" href="#" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" title="English"> 415 <span class="drop_language">English</span> 416 <span class="caret"></span> 417 </a> 418 <ul class="dropdown-menu" role="menu">� � <li>� <a href="/fr-FR/" title="Français" data-code="fr-FR">Français</a>� </li>� � <li>� <a href="/en-US/" title="English" data-code="en-US">English</a>� </li>� �</ul> 419 </li> 420 <li class="divider-vertical"></li> 421 422 423 424 425 <li> 426 <a href="/en-US/SignIn?returnUrl=%2Fen-US%2F"> 427 Sign in 428 </a> 429 </li> 430 431 432 </ul> 433 434 </div> 435 436 <div class="navbar-right hidden-xs"> 437 <div class="xrm-editable-html xrm-attribute" data-languageContext="English"><div class="xrm-attribute-value">
437<script async="" src="https://cse.google.com/cse.js?cx=018049573713581560840:yaxmkx1tr74"></script>
437<div class="gcse-search"></div> 438<style> 439 div.navbar-right { 440 //max-width: 600px !important; 441 float: right !important; 442 clear: both; 443 } 444 div#___gcse_0 { 445 max-width: 400px; 446 } 447</style></div></div> 448 </div> 449 </div> 450 451 ����� � � � <div class="">� <div class="list-group weblinks">� � </div>� � </div>� � � 452 453 </div> 454</div> 455 456 457 458 459 460 461 462 463 464
465<script type="text/javascript"> 466function setHeight() { 467 var windowHeight = window.innerHeight - 140; 468 var navbar = document.getElementById("navbar"); 469 if (navbar) { 470 navbar.style.maxHeight = windowHeight + "px"; 471 } 472} 473 474window.addEventListener('resize', function (event) { 475 setHeight(); 476}); 477window.addEventListener("load", (event) => { 478 var username = $("#hdnusername").val(); 479 var useridentity = getUserIdentityFlag(username); 480 if (username != '' && username != null) { 481 if (useridentity == "AD") { 482 $("a[href*='ChangePassword']").remove(); 483 $("li.divider").hide(); 484 } else if (useridentity == "B2C") { 485 setb2Cchangepasswordurl(username) 486 } else if (useridentity == null) { 487 getUserIdentityUsingApi(username).then(response => { 488 var useridentityapi = JSON.parse(response).useridentity 489 setUserIdentityFlag(username, useridentityapi); 490 if (useridentityapi == "AD") { 491 $("a[href*='ChangePassword']").remove(); 492 $("li.divider").hide(); 493 } else if (useridentityapi == "B2C") { 494 setb2Cchangepasswordurl(username); 495 } 496 }); 497 } 498 } 499 500 $("a[title='Profile']").parent().hide(); 501 502}); 503function setb2Cchangepasswordurl(username) { 504 var clientid = 'e72b2f79-14ed-4734-9fc7-4bf23b8b9d3f'; 505 var tenantname = 'skatecanadab2c'; 506 var passwordchangepolicyid = 'b2c_1a_passwordchange'; 507 var currentURL = $(location).attr('href'); 508 var language = currentURL.contains('/fr-FR') ? 'fr-FR' : 'en-US'; 509 var hostname = $('<a>').prop('href', currentURL).prop('hostname'); 510 var url = 'https://' + tenantname + '.b2clogin.com/' + tenantname + '.onmicrosoft.com/oauth2/v2.0/authorize?p=' + passwordchangepolicyid + '&client_id=' + clientid + '&nonce=defaultNonce&redirect_uri=https%3A%2F%2F' + hostname + '%2F' + language + '&scope=openid&response_type=id_token&login_hint=' + username + '&ui_locales=' + language; 511 $("a[href*='ChangePassword']").attr("href", url); 512} 513 514</script>
514 515 516 517 <!-- add anti-forgery token--> 518 <div id="antiforgerytoken" data-url="/_layout/tokenhtml"></div> 519 520 521 <!-- Client Telemetry init if telemetry enabled--> 522
522<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/client-telemetry.bundle-d490766e4f.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/client-telemetry.bundle-d490766e4f.js" type="text/javascript"></script>
522 523 524 525 526 <!-- Client Telemetry Wrapper init --> 527
527<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/client-telemetry-wrapper.bundle-633e70f51b.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/client-telemetry-wrapper.bundle-633e70f51b.js" type="text/javascript"></script>
527 528 529
529<script> 530 window.clientLogWrapper = new ClientLogWrapper(); 531 </script>
531 532
532<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/preform.moment_2_29_4.bundle-750b699ecd.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/preform.moment_2_29_4.bundle-750b699ecd.js" type="text/javascript"></script>
532 533 534 535 536
536<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/pcf-dependency.bundle-805a1661b7.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/pcf-dependency.bundle-805a1661b7.js" type="text/javascript"></script>
536 537 538
538<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/pcf.bundle-60440c37cb.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/pcf.bundle-60440c37cb.js" type="text/javascript"></script>
538 539 540
540<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/pcf-extended.bundle-b0e01b5622.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/pcf-extended.bundle-b0e01b5622.js" type="text/javascript"></script>
540 541 542 543 <section class="page_section"> 544 <div class="layer_up"> </div> 545 <div class="container"> 546 <div class="content-home"> 547 <!--<h2 class="content-heading"><span class="xrm-editable-text xrm-attribute" data-languageContext="English"><span class="xrm-attribute-value">Skate Canada Membership Site</span></span></h2>--> 548 <div class="container"> 549 <img src="/parachute-image" style="width:100%;" /> 550 </div> 551 <div class="page-copy">� <div class="xrm-editable-html xrm-attribute"><div class="xrm-attribute-value"><p></p> 552 553<h2 class="content-header" style="color:#e4002b; font-weight:bold; font-size:28px!important;">Welcome!</h2> 554 555<p><span>Thank you for visiting the Skate Canada Membership Website. This site houses the information and resources needed to make the most out of your membership with Skate Canada and to assist all our community members in experiencing the joy of skating.</span> 556</p> 557 558<div style="display:flex; justify-content: center; align-items: center; margin-top:40px;"> 559 <div style="border-right:2px solid #e4002b; width:250px; text-align:center; padding:30px; position:relative;"> 560 <a href="clubschoolapplication-en.pdf" target="_blank"><span style="position:absolute; width:100%; height:100%; top: 0; left: 0; z-index: 1;"></span></a> 561 <img src="icon_apply.png"><br> 562 <h2 class="content-header" style="color:#e4002b; font-weight:bold; font-size:28px!important;">Apply</h2> 563 Become a Club<br>or Skating School. 564 </div> 565 <div style="width:250px; text-align:center; padding:30px; position:relative;"> 566 <a href="https://info.skatecanada.ca/" target="_blank"><span style="position:absolute; width:100%; height:100%; top: 0; left: 0; z-index: 1;"></span></a> 567 <img src="icon_infocentre.png"><br> 568 <h2 class="content-header" style="color:#e4002b; font-weight:bold; font-size:28px!important;">Info Centre</h2> 569 Rules, policies, procedures, and guides. 570 </div> 571 <div style="border-left:2px solid #e4002b; width:250px; text-align:center; padding:30px; position:relative;"> 572 <a href="https://noticeboard.skatecanada.ca/" target="_blank"><span style="position:absolute; width:100%; height:100%; top: 0; left: 0; z-index: 1;"></span></a> 573 <img src="icon_board.png"><br> 574 <h2 class="content-header" style="color:#e4002b; font-weight:bold; font-size:28px!important;">News</h2> 575 The latest updates<br>from Skate Canada. 576 </div> 577</div> 578 579<p></p> 580 581<p style="text-align:center;"><strong>Quick Links:</strong><br> 582 <a href="https://members.skatecanada.ca/en-US/coach-check/">Verify a Coach's Standing</a><br> 583 <a href="suspended-en.pdf" target="_blank">Individuals suspended/expelled from Skate Canada</a><br> 584 <a href="/national-ranking">National Ranking</a> 585</p> 586 587<div style="width:100%; background-image:url('background_map.jpg'); height:250px; margin-top:40px; display:flex; align-items:center; justify-content:center; padding:30px; flex-wrap: wrap;"> 588 <div style="flex-basis:100%; margin: 0 auto; display:flex; justify-content:center;"><img src="icon_pin.png" style="height:50px;"></div> 589 <div style="flex-basis:100%; margin: 0 auto; display:flex; justify-content:center;"><h2 style="color:#FFF; font-weight:bold;">Skate With Us</h2></div> 590 <div style="flex-basis:100%; margin: 0 auto; display:flex; justify-content:center;"><a href="https://skatecanada.ca/learn-to-skate/find-a-club/" target="_blank" style="display:flex; justify-content: center; align-items: center; width:150px; height:40px; border-radius:20px; background-color: #5b69d1; color: #FFFFFF; font-weight:bold;">Find a Club ></a></div> 591</div></div></div>�</div> 592 </div> 593 </div> 594</section> 595 596 597
597<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/pcf-loader.bundle-f4a0e619b8.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/pcf-loader.bundle-f4a0e619b8.js" type="text/javascript"></script>
597 598 599 600 601 602 603 604 <div id="pp-native-controls-react-root"></div>
605<script>window._nativeControlConfig = { "publicPath":"https://content.powerapps.com/resource/powerappsportal/controls", "versions": {"pcf_loader":"0.0.51","pcf_controls":"3.24.8","mf_shared":"0.2.32","host":"0.15.1","data_grid":"1.12.3","controls_fluent_v9":"0.0.54"}, "pvaEmbedded": { "defaultWidgetMode": "normal", "useCustomTypingIndicator": false, "skipSingleBotWelcomeScreen": false } }</script>
vendor: 1 bytes, line 605
605
606<script defer="defer" src="https://content.powerapps.com/resource/powerappsportal/controls/host/main.3ee2491f78.chunk.js"></script>
606 607 608 609 610 <section id="gethelp" class="page_section section-diagonal-right color-inverse home-section hidden-print"> 611 <div class="container"> 612 <div class="row"> 613 </div> 614 </div> 615</section> 616 617<footer role="contentinfo"> 618 <!--<div class="footer-top hidden-print"> 619 <div class="container"> 620 <div class="row"> 621 <div class="col-md-6 col-sm-12 col-xs-12 text-left"> 622 <div class="xrm-editable-html xrm-attribute no-value"><div class="xrm-attribute-value"></div></div> 623 </div> 624 <div class="col-md-6 col-sm-12 col-xs-12 text-right"> 625 <ul class="list-social-links"> 626 <li><a href="#"><span class="sprite sprite-facebook_icon"></span></a></li> 627 <li><a href="#"><span class="sprite sprite-twitter_icon"></span></a></li> 628 <li><a href="#"><span class="sprite sprite-email_icon"></span></a></li> 629 </ul> 630 </div> 631 </div> 632 </div> 633 </div>--> 634 635 <div class="footer-bottom hidden-print"> 636 <div class="container"> 637 <div class="row"> 638 <div class="col-md-4 col-sm-12 col-xs-12 text-left"> 639 <div class="xrm-editable-html xrm-attribute" data-languageContext="English"><div class="xrm-attribute-value"><div class="col-sm-3"><a href="http://skatecanada.ca/our-privacy-commitment/">Privacy Code</a> | <a href="/refund-policy/">Refund Policy</a> | <a href="#" onclick="window.open('https://skatecanada.wufoo.eu/forms/zfrjwxs0v5w9og/def/field104=' + encodeURI(window.location.href), '_blank');">Feedback</a> 640</div> 641<div class="col-sm-3"> </div> 642<div class="col-sm-6"> 643 <p class="pull-right">Copyright © 2026 Skate Canada | All Rights Reserved</p> 644</div>
645<script type="text/javascript"> 646 $(document).ready(function() { // if not logged in 647 var userobj = ""; 648 if (userobj != "") { // user is logged in 649 // add change password 650 $('ul.weblinks li a[title="Profile"]').closest('li').after('<li class=""><a href="/Account/Manage/ChangePassword" title="Change Password" aria-selected="false">Change Password</a></li>'); 651 } 652 //$('a[href*="SignIn"]').each(function() { 653 // $(this).attr('href', '/SignIn'); 654 //}); 655 $('a[href*="LogOff"]').each(function() { 656 $(this).attr('href', '/Account/Login/LogOff'); 657 }); 658 659 // javascript to fix display of dates across timezones 660 $("input.datetime").each(function() { 661 var a = moment($(this).val()); 662 if (a != "Invalid Date") { 663 //$(this).val(a.utc().format("M/D/YYYY")); 664 $(this).siblings(".datetimepicker").find("input").val(a.utc().format("M/D/YYYY")); 665 } 666 }); 667 668 $(".entity-grid").on("loaded", function() { 669 $("time").each(function() { 670 var tstamp = $(this).closest('td').attr('data-value'); 671 var regExp = /\(([^)]+)\)/; 672 var matches = regExp.exec(tstamp); 673 var time = parseInt(matches[1]); 674 var a = moment(time); 675 if (a != "Invalid Date") { 676 $(this).text(a.utc().format("M/D/YYYY")); 677 } 678 }); 679 }); 680 }); 681</script>
681 682<div id="portal-policies" style="display:none;"><span></span> 683
683<script type="text/javascript"> 684 /*var userobj = ""; 685var pathname = window.location.pathname; 686var cookieContent = getCookie('pacc'); 687if(pathname != '/policy-acceptance/') { 688 if(userobj != "") { // user is logged in 689 if(cookieContent == "") { 690 // check expiry date 691 //var mdate = $("#portal-policies span:first-child").text(); 692 var mdate = $("#portal-policies span").text(); 693 var doredir = true; 694 if(mdate.length) { 695 var m = moment(mdate).utc(); 696 var n = moment().utc(); 697 var isvalid = m.isValid(); 698 var isafter = m.isAfter(n); 699 if(isvalid && !isafter) 700 doredir = true; 701 else if(!isvalid) 702 doredir = true; 703 else 704 doredir = false; 705 } 706 if(doredir) 707 window.location.href = "/policy-acceptance/"; 708 } 709 } 710} 711 712function getCookie(cname) { 713 var name = cname + "="; 714 var decodedCookie = decodeURIComponent(document.cookie); 715 var ca = decodedCookie.split(';'); 716 for(var i = 0; i <ca.length; i++) { 717 var c = ca[i]; 718 while (c.charAt(0) == ' ') { 719 c = c.substring(1); 720 } 721 if (c.indexOf(name) == 0) { 722 return c.substring(name.length, c.length); 723 } 724 } 725 return ""; 726}*/ 727 </script>
727 728</div></div></div> 729 </div> 730 731 732 <div class="col-md-8 col-sm-12 col-xs-12 text-left " data-weblinks-maxdepth="2"> 733 <ul class="row list-unstyled"> 734 735 </ul> 736 737 </div> 738 739 </div> 740 </div> 741</footer> 742 743 744
744<script type="text/javascript"> 745 746 function trackCopilotCustomUsage(botSchema) { 747 const request = { 748 botSchemaName: botSchema 749 } 750 var json = JSON.stringify(request); 751 shell.ajaxSafePost({ 752 type: "POST", 753 contentType: "application/json", 754 url: "/_services/copilot/TrackUsage", 755 data: json 756 }).done(function () { 757 }).fail(function (jqXhr) { 758 }); 759 } 760 761 function findAndLogCustomCopilotUsage() { 762 const pageSource = document.documentElement.outerHTML; 763 const customPvaBotWebchatRegex = /api\.(preprod\.|test\.)?powerplatform\.(com|us|cn|appsplatform\.us)\/powervirtualagents\/botsbyschema\/([^/]+)\/directline\/token/; 764 const customPvaBotIframeRegex = /powerva\.microsoft\.com\/environments\/([0-9a-fA-F\-]+)\/bots\/([^/]+)\/webchat/; 765 const omniChannelRegex = /livechatwidget\/scripts\/LiveChatBootstrapper\.js/; 766 767 const matchPvaBotWebchat = pageSource.match(customPvaBotWebchatRegex); 768 if (matchPvaBotWebchat && matchPvaBotWebchat[3]) { 769 trackCopilotCustomUsage(matchPvaBotWebchat[3]); 770 } 771 772 const matchPvaBotIframe = pageSource.match(customPvaBotIframeRegex); 773 if (matchPvaBotIframe && matchPvaBotIframe[2]) { 774 trackCopilotCustomUsage(matchPvaBotIframe[2]); 775 } 776 777 const matchOmniChannel = pageSource.match(omniChannelRegex); 778 if (matchOmniChannel && matchOmniChannel[0]) { 779 trackCopilotCustomUsage("omnichannelWidget"); 780 } 781 } 782 783 window.addEventListener("load", function () { 784 findAndLogCustomCopilotUsage(); 785 }); 786 </script>
786 787 788 789 790 791 792 793 794
794<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/bootstrap.bundle-105a4995b8.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/bootstrap.bundle-105a4995b8.js" type="text/javascript"></script>
794 795 796
796<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/postpreform.bundle-4687dda8df.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/postpreform.bundle-4687dda8df.js" type="text/javascript"></script>
796 797 798
798<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/app.bundle-1e948af604.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/app.bundle-1e948af604.js" type="text/javascript"></script>
798 799 800
800<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/default-1033.moment_2_29_4.bundle-eda4e638fd.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/default-1033.moment_2_29_4.bundle-eda4e638fd.js" type="text/javascript"></script>
800 801 802 803 804 805
805<script type="text/javascript">$(document).ready(function () { 806 var username = ''; 807 getUserIdentity(username); 808 809}); 810function getUserIdentity(username) { 811 var useridentityflg = getUserIdentityFlag(username); 812 if (useridentityflg != null) { 813 redirectToUserMigrationPage(useridentityflg); 814 } else { 815 getUserIdentityUsingApi(username).then(response => { 816 var useridentityapi = JSON.parse(response).useridentity 817 redirectToUserMigrationPage(useridentityapi); 818 }); 819 } 820} 821function redirectToUserMigrationPage(useridentity) { 822 var forceexternalidentity = $("#forceexternalidentity").val(); 823 if (forceexternalidentity == 'true' && useridentity == "Local") { 824 var useremail = ''; 825 var isscemployee = isEmployee(useremail, $('#maildomain').val()); 826 if (isscemployee) 827 window.location.href = '/user-login-migration-staff/'; 828 else 829 window.location.href = '/user-login-migration/'; 830 } 831}</script>
831 832
832<script> 833 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 834 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 835 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 836 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 837 838 //console.log("User id found: " + window["Microsoft"].Dynamic365.Portal.User.contactId); 839 if (window["Microsoft"].Dynamic365.Portal.User.contactId) { 840 //console.log("Capturing User-ID to GA on create"); 841 ga('create', 'UA-48283714-5', 'auto', { 842 userId: window["Microsoft"].Dynamic365.Portal.User.contactId 843 }); 844 } else { 845 //console.log("Not Capturing to GA, but Creating PV Record, 5 second UID capture delay"); 846 ga('create', 'UA-48283714-5', 'auto'); 847 setTimeout(function() { 848 ga('set', 'userId', window["Microsoft"].Dynamic365.Portal.User.contactId); 849 },5000); 850 } 851 ga('send', 'pageview'); 852 853</script>
853 854<!-- Start of skatecanada Zendesk Widget script -->
855<script>/*<![CDATA[*/window.zEmbed||function(e,t){var n,o,d,i,s,a=[],r=document.createElement("iframe");window.zEmbed=function(){a.push(arguments)},window.zE=window.zE||window.zEmbed,r.src="javascript:false",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="display: none",d=document.getElementsByTagName("script"),d=d[d.length-1],d.parentNode.insertBefore(r,d),i=r.contentWindow,s=i.document;try{o=s}catch(e){n=document.domain,r.src='javascript:var d=document.open();d.domain="'+n+'";void(0);',o=s}o.open()._l=function(){var o=this.createElement("script");n&&(this.domain=n),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=t,this.zEQueue=a,this.body.appendChild(o)},o.write('<body onload="document._l();">'),o.close()}("https://assets.zendesk.com/embeddable_framework/main.js","skatecanada.zendesk.com"); 856/*]]>*/</script>
856 857<!-- End of skatecanada Zendesk Widget script --> 858
859<script type="text/javascript" src="https://lamp.skatecanada.ca/jq-md5/jquery.md5.min.js" /> 860
860<script> 861 //this event will update the title of the page based on active breadcrumb 862 $('.breadcrumb').ready(function () { 863 if ($('.breadcrumb').is(':visible')) { 864 document.querySelector('title').innerHTML = ($('.breadcrumb > li.active').text() + "· Skate Canada Membership Site"); 865 } 866 }); 867 868 function GoToNewEditor() { 869 var editCmsUrlSegment = "EditInCms"; 870 var currentUrl = window.location.href; 871 if (currentUrl.indexOf('?') > -1) { 872 var urlSegments = currentUrl.split("?"); 873 window.location.href = window.location.origin + '/' + editCmsUrlSegment + window.location.pathname + '?' + urlSegments[1]; 874 } 875 else { 876 window.location.href = window.location.origin + '/' + editCmsUrlSegment + window.location.pathname; 877 } 878 } 879 </script>
879 880 881 882 883 884 885
885<script> 886 if ('serviceWorker' in navigator) { 887 navigator.serviceWorker.getRegistrations().then(function (registrations) { 888 for (let registration of registrations) { 889 registration.unregister(); 890 } 891 }).catch(function (err) { 892 console.log('Service Worker unregister action failed: ', err); 893 }); 894 } 895 </script>
895 896 897 898 899 <!--Start Show Session Expire Warning Popup here --> 900 901
902<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"4258cbfb9cb04d36936d5c943d10e93e","r":1,"spa":2}' crossorigin="anonymous"></script>
902 903</body> 904</html> 905<!-- Generated at 10/2/2026 4:04:42 AM --> 906<!-- Page OK -->
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.