1 <!DOCTYPE html> 2<html lang="en-US"> 3 <head> 4 <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=1"/> 6 <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> 7 <meta http-equiv="cache-control" content="no-cache,no-store"/> 8 <meta http-equiv="pragma" content="no-cache"/> 9 <meta http-equiv="expires" content="-1"/> 10 <meta name='mswebdialog-title' content='Connecting to Sign in / Se connecter'/> 11 12 <title>Sign In</title> 13
13<script type='text/javascript'> 14//<![CDATA[ 15function LoginErrors(){this.userNameFormatError = 'Enter your user ID in the format \u0026quot;domain\\user\u0026quot; or \u0026quot;user@domain\u0026quot;.'; this.passwordEmpty = 'Enter your password.'; this.passwordTooLong = 'Password is too long (\u0026gt; 128 characters).';}; var maxPasswordLength = 128; 16//]]> 17</script>
17 18
19<script type='text/javascript'> 20//<![CDATA[ 21// Copyright (c) Microsoft Corporation. All rights reserved. 22function InputUtil(errTextElementID, errDisplayElementID) { 23 24 if (!errTextElementID) errTextElementID = 'errorText'; 25 if (!errDisplayElementID) errDisplayElementID = 'error'; 26 27 this.hasFocus = false; 28 this.errLabel = document.getElementById(errTextElementID); 29 this.errDisplay = document.getElementById(errDisplayElementID); 30}; 31InputUtil.prototype.canDisplayError = function () { 32 return this.errLabel && this.errDisplay; 33} 34InputUtil.prototype.checkError = function () { 35 if (!this.canDisplayError){ 36 throw new Error ('Error element not present'); 37 } 38 if (this.errLabel && this.errLabel.innerHTML) { 39 this.errDisplay.style.display = ''; 40 var cause = this.errLabel.getAttribute('for'); 41 if (cause) { 42 var causeNode = document.getElementById(cause); 43 if (causeNode && causeNode.value) { 44 causeNode.focus(); 45 this.hasFocus = true; 46 } 47 } 48 } 49 else { 50 this.errDisplay.style.display = 'none'; 51 } 52}; 53InputUtil.prototype.setInitialFocus = function (input) { 54 if (this.hasFocus) return; 55 var node = document.getElementById(input); 56 if (node) { 57 if ((/^\s*$/).test(node.value)) { 58 node.focus(); 59 this.hasFocus = true; 60 } 61 } 62}; 63InputUtil.prototype.setError = function (input, errorMsg) { 64 if (!this.canDisplayError) { 65 throw new Error('Error element not present'); 66 } 67 input.focus(); 68 69 if (errorMsg) { 70 this.errLabel.innerHTML = errorMsg; 71 } 72 this.errLabel.setAttribute('for', input.id); 73 this.errDisplay.style.display = ''; 74}; 75InputUtil.makePlaceholder = function (input) { 76 var ua = navigator.userAgent; 77 78 if (ua != null && 79 (ua.match(/MSIE 9.0/) != null || 80 ua.match(/MSIE 8.0/) != null || 81 ua.match(/MSIE 7.0/) != null)) { 82 var node = document.getElementById(input); 83 if (node) { 84 var placeholder = node.getAttribute("placeholder"); 85 if (placeholder != null && placeholder != '') { 86 var label = document.createElement('input'); 87 label.type = "text"; 88 label.value = placeholder; 89 label.readOnly = true; 90 label.style.position = 'absolute'; 91 label.style.borderColor = 'transparent'; 92 label.className = node.className + ' hint'; 93 label.tabIndex = -1; 94 label.onfocus = function () { this.nextSibling.focus(); }; 95 96 node.style.position = 'relative'; 97 node.parentNode.style.position = 'relative'; 98 node.parentNode.insertBefore(label, node); 99 node.onkeyup = function () { InputUtil.showHint(this); }; 100 node.onblur = function () { InputUtil.showHint(this); }; 101 node.style.background = 'transparent'; 102 103 node.setAttribute("placeholder", ""); 104 InputUtil.showHint(node); 105 } 106 } 107 } 108}; 109InputUtil.focus = function (inputField) { 110 var node = document.getElementById(inputField); 111 if (node) node.focus(); 112}; 113InputUtil.hasClass = function(node, clsName) { 114 return node.className.match(new RegExp('(\\s|^)' + clsName + '(\\s|$)')); 115}; 116InputUtil.addClass = function(node, clsName) { 117 if (!this.hasClass(node, clsName)) node.className += " " + clsName; 118}; 119InputUtil.removeClass = function(node, clsName) { 120 if (this.hasClass(node, clsName)) { 121 var reg = new RegExp('(\\s|^)' + clsName + '(\\s|$)'); 122 node.className = node.className.replace(reg, ' '); 123 } 124}; 125InputUtil.showHint = function (node, gotFocus) { 126 if (node.value && node.value != '') { 127 node.previousSibling.style.display = 'none'; 128 } 129 else { 130 node.previousSibling.style.display = ''; 131 } 132}; 133InputUtil.updatePlaceholder = function (input, placeholderText) { 134 var node = document.getElementById(input); 135 if (node) { 136 var ua = navigator.userAgent; 137 if (ua != null && 138 (ua.match(/MSIE 9.0/) != null || 139 ua.match(/MSIE 8.0/) != null || 140 ua.match(/MSIE 7.0/) != null)) { 141 var label = node.previousSibling; 142 if (label != null) { 143 label.value = placeholderText; 144 } 145 } 146 else { 147 node.placeholder = placeholderText; 148 } 149 } 150}; 151 152//]]> 153</script>
153 154 155 156 157 <link rel="stylesheet" type="text/css" href="/adfs/portal/css/style.css?id=3C9CE04072F799763BE51A75249E7CCED9BF40523A85C70656D6BA929C9BCAD1" /><style>.illustrationClass {background-image:url(/adfs/portal/illustration/illustration.jpg?id=A4CE5E411C2C3006B702A11BAAD4221C783DCABC0BCA4D6EF4C0FEE9BABC7028);}</style> 158 159 </head> 160 <body dir="ltr" class="body"> 161 <div id="noScript" style="position:static; width:100%; height:100%; z-index:100"> 162 <h1>JavaScript required</h1> 163 <p>JavaScript is required. This web browser does not support JavaScript or JavaScript in this web browser is not enabled.</p> 164 <p>To find out if your web browser supports JavaScript or to enable JavaScript, see web browser help.</p> 165 </div> 166
166<script type="text/javascript" language="JavaScript"> 167 document.getElementById("noScript").style.display = "none"; 168 </script>
168 169 <div id="fullPage"> 170 <div id="brandingWrapper" class="float"> 171 <div id="branding"></div> 172 </div> 173 <div id="contentWrapper" class="float"> 174 <div id="content"> 175 <div id="header"> 176 <img class='logoImage' id='companyLogo' src='/adfs/portal/logo/logo.png?id=CAD1148A3A6AB4E40124C3D9646F60977B5FFE4190002C4954DF611E1CD62F38' alt='Sign in / Se connecter'/> 177 </div> 178 <main> 179 <div id="workArea"> 180 181 <div id="authArea" class="groupMargin"> 182 183 184 185 <div id="loginArea"> 186 <div id="loginMessage" class="groupMargin"> </div> 187 188 <form method="post" id="loginForm" autocomplete="off" novalidate="novalidate" onKeyPress="if (event && event.keyCode == 13) Login.submitLoginRequest();" action="/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2faccount.cmc.ca%2f&wctx=rm%3d0%26id%3dpassive%26ru%3dhttps%253a%252f%252faccount.cmc.ca%253a443%252fen%252fMyAccount%252fSignIn.aspx&wct=2026-09-24T10%3a04%3a35Z&wauth=urn%3aoasis%3anames%3atc%3aSAML%3a1.0%3aam%3apassword&wreply=https%3a%2f%2faccount.cmc.ca%2fMyAccount%2fSignIn.aspx&client-request-id=98ac5ffa-e106-4f06-4579-00800000000d" > 189 <div id="error" class="fieldMargin error smallText"> 190 <span id="errorText" for="" aria-live="assertive" role="alert"></span> 191 </div> 192 193 <div id="formsAuthenticationArea"> 194 <div id="userNameArea"> 195 <label id="userNameInputLabel" for="userNameInput" class="hidden">User Account</label> 196 <input id="userNameInput" name="UserName" type="email" value="" tabindex="1" class="text fullWidth" 197 spellcheck="false" placeholder="[email protected]" autocomplete="off"/> 198 </div> 199 200 <div id="passwordArea"> 201 <label id="passwordInputLabel" for="passwordInput" class="hidden">Password</label> 202 <input id="passwordInput" name="Password" type="password" tabindex="2" class="text fullWidth" 203 placeholder="Password" autocomplete="off"/> 204 </div> 205 <div id="kmsiArea" style="display:none"> 206 <input type="checkbox" name="Kmsi" id="kmsiInput" value="true" tabindex="3" /> 207 <label for="kmsiInput">Keep me signed in</label> 208 </div> 209 <div id="submissionArea" class="submitMargin"> 210 <span id="submitButton" class="submit" tabindex="4" role="button" 211 onKeyPress="if (event && event.keyCode == 32) Login.submitLoginRequest();" 212 onclick="return Login.submitLoginRequest();">Sign in</span> 213 </div> 214 </div> 215 <input id="optionForms" type="hidden" name="AuthMethod" value="FormsAuthentication"/> 216 </form> 217 218 <div id="authOptions"> 219 <form id="options" method="post" action="https://login.cmc.ca:443/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2faccount.cmc.ca%2f&wctx=rm%3d0%26id%3dpassive%26ru%3dhttps%253a%252f%252faccount.cmc.ca%253a443%252fen%252fMyAccount%252fSignIn.aspx&wct=2026-09-24T10%3a04%3a35Z&wauth=urn%3aoasis%3anames%3atc%3aSAML%3a1.0%3aam%3apassword&wreply=https%3a%2f%2faccount.cmc.ca%2fMyAccount%2fSignIn.aspx&client-request-id=98ac5ffa-e106-4f06-4579-00800000000d"> 220
220<script type="text/javascript"> 221 function SelectOption(option) { 222 var w = document.getElementById('waitingWheelDiv'); 223 if(w) w.style.display = 'inline'; 224 var i = document.getElementById('optionSelection'); 225 i.value = option; 226 document.forms['options'].submit(); 227 return false; 228 } 229 </script>
229 230 <input id="optionSelection" type="hidden" name="AuthMethod" /> 231 <input id="userNameInputOptionsHolder" name="UserName" value="" type="hidden"/> 232 <div id='authOptionLinks' class='groupMargin'><div id="waitingWheelDiv" style="display: none;"><div id="WaitingWheel"> 233 <!-- NOTE: This style portion is identical to cookie pull page, they are not in shared css file because of legacy dependancies for custom themes--> 234 <!-- CSS for small "waiting" wheel --> 235 <style> 236 #floatingCirclesG { 237 position: relative; 238 width: 125px; 239 height: 125px; 240 margin: auto; 241 transform: scale(0.4); 242 -o-transform: scale(0.4); 243 -ms-transform: scale(0.4); 244 -webkit-transform: scale(0.4); 245 -moz-transform: scale(0.4); 246 } 247 248 .f_circleG { 249 position: absolute; 250 height: 22px; 251 width: 22px; 252 border-radius: 12px; 253 -o-border-radius: 12px; 254 -ms-border-radius: 12px; 255 -webkit-border-radius: 12px; 256 -moz-border-radius: 12px; 257 animation-name: f_fadeG; 258 -o-animation-name: f_fadeG; 259 -ms-animation-name: f_fadeG; 260 -webkit-animation-name: f_fadeG; 261 -moz-animation-name: f_fadeG; 262 animation-duration: 1.2s; 263 -o-animation-duration: 1.2s; 264 -ms-animation-duration: 1.2s; 265 -webkit-animation-duration: 1.2s; 266 -moz-animation-duration: 1.2s; 267 animation-iteration-count: infinite; 268 -o-animation-iteration-count: infinite; 269 -ms-animation-iteration-count: infinite; 270 -webkit-animation-iteration-count: infinite; 271 -moz-animation-iteration-count: infinite; 272 animation-direction: normal; 273 -o-animation-direction: normal; 274 -ms-animation-direction: normal; 275 -webkit-animation-direction: normal; 276 -moz-animation-direction: normal; 277 } 278 279 #frotateG_01 { 280 left: 0; 281 top: 51px; 282 animation-delay: 0.45s; 283 -o-animation-delay: 0.45s; 284 -ms-animation-delay: 0.45s; 285 -webkit-animation-delay: 0.45s; 286 -moz-animation-delay: 0.45s; 287 } 288 289 #frotateG_02 { 290 left: 15px; 291 top: 15px; 292 animation-delay: 0.6s; 293 -o-animation-delay: 0.6s; 294 -ms-animation-delay: 0.6s; 295 -webkit-animation-delay: 0.6s; 296 -moz-animation-delay: 0.6s; 297 } 298 299 #frotateG_03 { 300 left: 51px; 301 top: 0; 302 animation-delay: 0.75s; 303 -o-animation-delay: 0.75s; 304 -ms-animation-delay: 0.75s; 305 -webkit-animation-delay: 0.75s; 306 -moz-animation-delay: 0.75s; 307 } 308 309 #frotateG_04 { 310 right: 15px; 311 top: 15px; 312 animation-delay: 0.9s; 313 -o-animation-delay: 0.9s; 314 -ms-animation-delay: 0.9s; 315 -webkit-animation-delay: 0.9s; 316 -moz-animation-delay: 0.9s; 317 } 318 319 #frotateG_05 { 320 right: 0; 321 top: 51px; 322 animation-delay: 1.05s; 323 -o-animation-delay: 1.05s; 324 -ms-animation-delay: 1.05s; 325 -webkit-animation-delay: 1.05s; 326 -moz-animation-delay: 1.05s; 327 } 328 329 #frotateG_06 { 330 right: 15px; 331 bottom: 15px; 332 animation-delay: 1.2s; 333 -o-animation-delay: 1.2s; 334 -ms-animation-delay: 1.2s; 335 -webkit-animation-delay: 1.2s; 336 -moz-animation-delay: 1.2s; 337 } 338 339 #frotateG_07 { 340 left: 51px; 341 bottom: 0; 342 animation-delay: 1.35s; 343 -o-animation-delay: 1.35s; 344 -ms-animation-delay: 1.35s; 345 -webkit-animation-delay: 1.35s; 346 -moz-animation-delay: 1.35s; 347 } 348 349 #frotateG_08 { 350 left: 15px; 351 bottom: 15px; 352 animation-delay: 1.5s; 353 -o-animation-delay: 1.5s; 354 -ms-animation-delay: 1.5s; 355 -webkit-animation-delay: 1.5s; 356 -moz-animation-delay: 1.5s; 357 } 358 359 @keyframes f_fadeG { 360 0% { 361 background-color: rgb(47, 146, 212); 362 } 363 364 100% { 365 background-color: rgb(255, 255, 255); 366 } 367 } 368 369 @-o-keyframes f_fadeG { 370 0% { 371 background-color: rgb(47, 146, 212); 372 } 373 374 100% { 375 background-color: rgb(255, 255, 255); 376 } 377 } 378 379 @-ms-keyframes f_fadeG { 380 0% { 381 background-color: rgb(47, 146, 212); 382 } 383 384 100% { 385 background-color: rgb(255, 255, 255); 386 } 387 } 388 389 @-webkit-keyframes f_fadeG { 390 0% { 391 background-color: rgb(47, 146, 212); 392 } 393 394 100% { 395 background-color: rgb(255, 255, 255); 396 } 397 } 398 399 @-moz-keyframes f_fadeG { 400 0% { 401 background-color: rgb(47, 146, 212); 402 } 403 404 100% { 405 background-color: rgb(255, 255, 255); 406 } 407 } 408 </style> 409 410 <!-- Div containing small "waiting" wheel --> 411 <div id="floatingCirclesG"> 412 <div class="f_circleG" id="frotateG_01"></div> 413 <div class="f_circleG" id="frotateG_02"></div> 414 <div class="f_circleG" id="frotateG_03"></div> 415 <div class="f_circleG" id="frotateG_04"></div> 416 <div class="f_circleG" id="frotateG_05"></div> 417 <div class="f_circleG" id="frotateG_06"></div> 418 <div class="f_circleG" id="frotateG_07"></div> 419 <div class="f_circleG" id="frotateG_08"></div> 420 </div> 421</div></div></div> 422 </form> 423 </div> 424 425 <div id="introduction" class="groupMargin">
426 <span><ul> <li> <a href='https://fabricinnovation.ca/member/' target='_blank'>Join FABrIC</a>     / <a href='https://fabricinnovation.ca/fr/member/' target='_blank'>Rejoindre FABrIC</a></li><li> <a href='https://account.cmc.ca/MyAccount/GetAccount.aspx' target='_blank'>Get a CMC Account / Obtenir un compte CMC</a></li><li> <a href='https://www.cmc.ca/password-assistance/' target='_blank'>Reset Password</a>  / <a href='https://www.cmc.ca/fr/soutien-2/' target='_blank'>Réinitialiser le mot de passe </a></li><br>Assistance / Aide:   <a href='mailto:[email protected]?subject=Forgot username'>CMC</a>   <a href='mailto:[email protected]?subject=Forgot username'>FABrIC</a></ul><br></span> 427 </div> 428 429
429<script type="text/javascript"> 430 //<![CDATA[ 431 432 function Login() { 433 } 434 435 Login.userNameInput = 'userNameInput'; 436 Login.passwordInput = 'passwordInput'; 437 438 Login.initialize = function () { 439 440 var u = new InputUtil(); 441 442 u.checkError(); 443 u.setInitialFocus(Login.userNameInput); 444 u.setInitialFocus(Login.passwordInput); 445 }(); 446 447 Login.submitLoginRequest = function () { 448 var u = new InputUtil(); 449 var e = new LoginErrors(); 450 451 var userName = document.getElementById(Login.userNameInput); 452 var password = document.getElementById(Login.passwordInput); 453 454 if (!userName.value || !userName.value.match('[@\\\\]')) { 455 u.setError(userName, e.userNameFormatError); 456 return false; 457 } 458 459 if (!password.value) { 460 u.setError(password, e.passwordEmpty); 461 return false; 462 } 463 464 if (password.value.length > maxPasswordLength) { 465 u.setError(password, e.passwordTooLong); 466 return false; 467 } 468 469 document.forms['loginForm'].submit(); 470 return false; 471 }; 472 473 InputUtil.makePlaceholder(Login.userNameInput); 474 InputUtil.makePlaceholder(Login.passwordInput); 475 //]]> 476 </script>
476 477 </div> 478 479 </div> 480 481 </div> 482 </main> 483 <div id="footerPlaceholder"></div> 484 </div> 485 <footer id="footer"> 486 <div id="footerLinks" class="floatReverse"> 487 <div><span id="copyright">© 2018 Microsoft</span><a id="home" class="pageLink footerLink " href="https://www.cmc.ca/">Home</a><a id="privacy" class="pageLink footerLink" href="https://www.cmc.ca/privacy-policy/">Privacy Policy</a><a id="helpDesk" class="pageLink footerLink" href="https://www.cmc.ca/support/">Support</a></div> 488 </div> 489 </footer> 490 </div> 491 </div> 492
492<script type='text/javascript'> 493//<![CDATA[ 494// Copyright (c) Microsoft Corporation. All rights reserved. 495 496// This file contains several workarounds on inconsistent browser behaviors that administrators may customize. 497"use strict"; 498 499// iPhone email friendly keyboard does not include "\" key, use regular keyboard instead. 500// Note change input type does not work on all versions of all browsers. 501if (navigator.userAgent.match(/iPhone/i) != null) { 502 var emails = document.querySelectorAll("input[type='email']"); 503 if (emails) { 504 for (var i = 0; i < emails.length; i++) { 505 emails[i].type = 'text'; 506 } 507 } 508} 509 510// In the CSS file we set the ms-viewport to be consistent with the device dimensions, 511// which is necessary for correct functionality of immersive IE. 512// However, for Windows 8 phone we need to reset the ms-viewport's dimension to its original 513// values (auto), otherwise the viewport dimensions will be wrong for Windows 8 phone. 514// Windows 8 phone has agent string 'IEMobile 10.0' 515if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 516 var msViewportStyle = document.createElement("style"); 517 msViewportStyle.appendChild( 518 document.createTextNode( 519 "@-ms-viewport{width:auto!important}" 520 ) 521 ); 522 msViewportStyle.appendChild( 523 document.createTextNode( 524 "@-ms-viewport{height:auto!important}" 525 ) 526 ); 527 document.getElementsByTagName("head")[0].appendChild(msViewportStyle); 528} 529 530// If the innerWidth is defined, use it as the viewport width. 531if (window.innerWidth && window.outerWidth && window.innerWidth !== window.outerWidth) { 532 var viewport = document.querySelector("meta[name=viewport]"); 533 viewport.setAttribute('content', 'width=' + window.innerWidth + ', initial-scale=1.0, user-scalable=1'); 534} 535 536// Gets the current style of a specific property for a specific element. 537function getStyle(element, styleProp) { 538 var propStyle = null; 539 540 if (element && element.currentStyle) { 541 propStyle = element.currentStyle[styleProp]; 542 } 543 else if (element && window.getComputedStyle) { 544 propStyle = document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProp); 545 } 546 547 return propStyle; 548} 549 550// The script below is used for downloading the illustration image 551// only when the branding is displaying. This script work together 552// with the code in PageBase.cs that sets the html inline style 553// containing the class 'illustrationClass' with the background image. 554var computeLoadIllustration = function () { 555 var branding = document.getElementById("branding"); 556 var brandingDisplay = getStyle(branding, "display"); 557 var brandingWrapperDisplay = getStyle(document.getElementById("brandingWrapper"), "display"); 558 559 if (brandingDisplay && brandingDisplay !== "none" && 560 brandingWrapperDisplay && brandingWrapperDisplay !== "none") { 561 var newClass = "illustrationClass"; 562 563 if (branding.classList && branding.classList.add) { 564 branding.classList.add(newClass); 565 } else if (branding.className !== undefined) { 566 branding.className += " " + newClass; 567 } 568 if (window.removeEventListener) { 569 window.removeEventListener('load', computeLoadIllustration, false); 570 window.removeEventListener('resize', computeLoadIllustration, false); 571 } 572 else if (window.detachEvent) { 573 window.detachEvent('onload', computeLoadIllustration); 574 window.detachEvent('onresize', computeLoadIllustration); 575 } 576 } 577}; 578 579if (window.addEventListener) { 580 window.addEventListener('resize', computeLoadIllustration, false); 581 window.addEventListener('load', computeLoadIllustration, false); 582} 583else if (window.attachEvent) { 584 window.attachEvent('onresize', computeLoadIllustration); 585 window.attachEvent('onload', computeLoadIllustration); 586} 587 588// Function to change illustration image. Usage example below. 589function SetIllustrationImage(imageUri) { 590 var illustrationImageClass = '.illustrationClass {background-image:url(' + imageUri + ');}'; 591 592 var css = document.createElement('style'); 593 css.type = 'text/css'; 594 595 if (css.styleSheet) css.styleSheet.cssText = illustrationImageClass; 596 else css.appendChild(document.createTextNode(illustrationImageClass)); 597 598 document.getElementsByTagName("head")[0].appendChild(css); 599} 600 601// Example to change illustration image on HRD page after adding the image to active theme: 602// PSH> Set-AdfsWebTheme -TargetName <activeTheme> -AdditionalFileResource @{uri='/adfs/portal/images/hrd.jpg';path='.\hrd.jpg'} 603// 604//if (typeof HRD != 'undefined') { 605// SetIllustrationImage('/adfs/portal/images/hrd.jpg'); 606//} 607//]]> 608</script>
608 609 610 611 </body> 612</html> 613
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.