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 City of Saskatoon'/> 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=18802B82F024018CB47377C4C80E55740C5A453BE69FBEC8E42FE4C7C31FF69D" /><style>.illustrationClass {background-image:url(/adfs/portal/illustration/illustration.png?id=06C021C548BD848BCF94B6DFF034F621964B5E89CB1E30FC680FB159500EC27C);}</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=843A9D50EB9D48D82BACFBDE3B66A4947B49E965A2014F1594233204652F1C02' alt='City of Saskatoon'/> 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">Sign in</div> 187 188 <form method="post" id="loginForm" autocomplete="off" novalidate="novalidate" onKeyPress="if (event && event.keyCode == 13) Login.submitLoginRequest();" action="/adfs/ls/?SAMLRequest=fVNdk5owFH33Vzi8K0FthYwyY7UfzlhllO1DXzohXLqZQkJzQ3H%2FfUNwq7vTNS%2FAzTkn59xcFsiqsqarxjzKI%2FxuAM1gaNe5KiVSt7n0Gi2pYiiQSlYBUsPpafV1RydjQmutjOKq9F7R7rMYImgjlOxp283SO%2Bw%2F7g6ft%2FsfEckBsmIewDQg2ZyFLIxm83fTICQwi2Z5mJE5CTPWU7%2BBRquz9KysN%2BjVEBvYSjRMGlsnk%2FcjEo0ms5RENIgomX7vqRsbVkhmHP3RmBqp7xeQg3a1MTL8xYyyb5z5LC%2FQL9Hvqckl9QchcyF%2F3g%2Bb9SCkX9I0GSWHU9qLrJ6bsFYSmwr0CfQfweHhuLv6adv2pZGuuT7j6MVOZNF9UxdZx2%2BRFv4t6sqr6d663W4SVQr%2B5Ord%2BqR0xczboYJx4CoiHxUOShuJNXBRCMi9fzKrslTtWgMzsPSMbsAb%2Bi8Ovwwc5G78bBcMnM1wraqaaYHdrcCZcXNJek17C1%2BXdpaOUMR3x41T3uFsObGPVum8u0Hg9uxUM2teaXNp0n%2FFe9f%2BHdvx4Hn79l%2BK%2FwI%3D&RelayState=http%3A%2F%2Fwww.saskatoon.ca%3A8080%2Fsaml%2Flogin&client-request-id=48c68493-2e9a-4640-780e-0080020000fb" > 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://federation.saskatoon.ca:443/adfs/ls/?SAMLRequest=fVNdk5owFH33Vzi8K0FthYwyY7UfzlhllO1DXzohXLqZQkJzQ3H%2FfUNwq7vTNS%2FAzTkn59xcFsiqsqarxjzKI%2FxuAM1gaNe5KiVSt7n0Gi2pYiiQSlYBUsPpafV1RydjQmutjOKq9F7R7rMYImgjlOxp283SO%2Bw%2F7g6ft%2FsfEckBsmIewDQg2ZyFLIxm83fTICQwi2Z5mJE5CTPWU7%2BBRquz9KysN%2BjVEBvYSjRMGlsnk%2FcjEo0ms5RENIgomX7vqRsbVkhmHP3RmBqp7xeQg3a1MTL8xYyyb5z5LC%2FQL9Hvqckl9QchcyF%2F3g%2Bb9SCkX9I0GSWHU9qLrJ6bsFYSmwr0CfQfweHhuLv6adv2pZGuuT7j6MVOZNF9UxdZx2%2BRFv4t6sqr6d663W4SVQr%2B5Ord%2BqR0xczboYJx4CoiHxUOShuJNXBRCMi9fzKrslTtWgMzsPSMbsAb%2Bi8Ovwwc5G78bBcMnM1wraqaaYHdrcCZcXNJek17C1%2BXdpaOUMR3x41T3uFsObGPVum8u0Hg9uxUM2teaXNp0n%2FFe9f%2BHdvx4Hn79l%2BK%2FwI%3D&RelayState=http%3A%2F%2Fwww.saskatoon.ca%3A8080%2Fsaml%2Flogin&client-request-id=48c68493-2e9a-4640-780e-0080020000fb"> 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 <p><a id='createaccountlink' href='https://apps5.saskatoon.ca/app/IDSrvAnon/AcctCreateU.aspx'>Create Account</a></p><p><a href='https://apps5.saskatoon.ca/app/IDSrvAnon/PwdForgot.aspx'>Forgot your password?</a></p><p><a href='https://apps5.saskatoon.ca/app/IDSrvAnon/AcctForgot.aspx'>Forgot your username?</a></p><p style='padding-top:15px;font-size:10pt;'>* Please do not bookmark or favorite this page. Instead, bookmark or favorite www.saskatoon.ca. 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="privacy" class="pageLink footerLink" href="https://www.saskatoon.ca/privacy-policy">Privacy Policy</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 499function getParameterByName(name) { 500 name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 501 var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 502 results = regex.exec(location.search); 503 return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 504} 505 506var wReply = getParameterByName('wreply'); 507var wa = getParameterByName('wa'); 508if (wReply != '' && wa == 'wsignout1.0') { 509 window.location.assign(wReply); 510} 511 512var nLandInventory = wReply.indexOf('saskatoon.ca/lapp/aLandInventory'); 513if (nLandInventory > 0) 514{ 515 var link = document.getElementById("createaccountlink"); 516 link.innerHTML = "Create Builder Account"; 517 link.setAttribute('href', "http://apps5.saskatoon.ca/app/IDSrvAnon/AcctCreateB.aspx"); 518} 519 520var errorText = document.getElementById('errorText'); 521errorText.style.color = '#D3080C'; 522if (errorText.innerHTML.indexOf('Incorrect user ID or password') >= 0) {
523 errorText.innerHTML = 'You have entered an incorrect username or password. Please try again.<br /><br />'; 524}; 525 526 527//var formsAuthenticationArea = document.getElementById('formsAuthenticationArea'); 528//var sformsAuthenticationArea = formsAuthenticationArea.innerHTML 529//formsAuthenticationArea.innerHTML = '<strong class="required">*</strong> <span class="control-label" style="line-height:32px;margin-bottom:10px;">Username and Password</span> <strong class="required">(Required)</strong>' + sformsAuthenticationArea; 530 531//errorTextLabel.innerHTML = '<strong class="required">*</strong> <span class="control-label">Username and Password</span> <strong class="required">(Required)</strong><br />' + errorTextLabel.innerHTML; 532 533 534// iPhone email friendly keyboard does not include "\" key, use regular keyboard instead. 535// Note change input type does not work on all versions of all browsers. 536if (navigator.userAgent.match(/iPhone/i) != null) { 537 var emails = document.querySelectorAll("input[type='email']"); 538 if (emails) { 539 for (var i = 0; i < emails.length; i++) { 540 emails[i].type = 'text'; 541 } 542 } 543} 544 545// In the CSS file we set the ms-viewport to be consistent with the device dimensions, 546// which is necessary for correct functionality of immersive IE. 547// However, for Windows 8 phone we need to reset the ms-viewport's dimension to its original 548// values (auto), otherwise the viewport dimensions will be wrong for Windows 8 phone. 549// Windows 8 phone has agent string 'IEMobile 10.0' 550if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 551 var msViewportStyle = document.createElement("style"); 552 msViewportStyle.appendChild( 553 document.createTextNode( 554 "@-ms-viewport{width:auto!important}" 555 ) 556 ); 557 msViewportStyle.appendChild( 558 document.createTextNode( 559 "@-ms-viewport{height:auto!important}" 560 ) 561 ); 562 document.getElementsByTagName("head")[0].appendChild(msViewportStyle); 563} 564 565// If the innerWidth is defined, use it as the viewport width. 566if (window.innerWidth && window.outerWidth && window.innerWidth !== window.outerWidth) { 567 var viewport = document.querySelector("meta[name=viewport]"); 568 viewport.setAttribute('content', 'width=' + window.innerWidth + 'px; initial-scale=1.0; maximum-scale=1.0'); 569} 570 571// Gets the current style of a specific property for a specific element. 572function getStyle(element, styleProp) { 573 var propStyle = null; 574 575 if (element && element.currentStyle) { 576 propStyle = element.currentStyle[styleProp]; 577 } 578 else if (element && window.getComputedStyle) { 579 propStyle = document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProp); 580 } 581 582 return propStyle; 583} 584 585// The script below is used for downloading the illustration image 586// only when the branding is displaying. This script work together 587// with the code in PageBase.cs that sets the html inline style 588// containing the class 'illustrationClass' with the background image. 589var computeLoadIllustration = function () { 590 var branding = document.getElementById("branding"); 591 var brandingDisplay = getStyle(branding, "display"); 592 var brandingWrapperDisplay = getStyle(document.getElementById("brandingWrapper"), "display"); 593 594 if (brandingDisplay && brandingDisplay !== "none" && 595 brandingWrapperDisplay && brandingWrapperDisplay !== "none") { 596 var newClass = "illustrationClass"; 597 598 if (branding.classList && branding.classList.add) { 599 branding.classList.add(newClass); 600 } else if (branding.className !== undefined) { 601 branding.className += " " + newClass; 602 } 603 if (window.removeEventListener) { 604 window.removeEventListener('load', computeLoadIllustration, false); 605 window.removeEventListener('resize', computeLoadIllustration, false); 606 } 607 else if (window.detachEvent) { 608 window.detachEvent('onload', computeLoadIllustration); 609 window.detachEvent('onresize', computeLoadIllustration); 610 } 611 } 612}; 613 614if (window.addEventListener) { 615 window.addEventListener('resize', computeLoadIllustration, false); 616 window.addEventListener('load', computeLoadIllustration, false); 617} 618else if (window.attachEvent) { 619 window.attachEvent('onresize', computeLoadIllustration); 620 window.attachEvent('onload', computeLoadIllustration); 621} 622 623// Sample code to change �Sign in with organizational account� string. 624// Check whether the loginMessage element is present on this page. 625var loginMessage = document.getElementById('loginMessage'); 626if (loginMessage) { 627 // loginMessage element is present, modify its properties. 628 loginMessage.innerHTML = '<h2><b>Please enter your username and password</b></h2>'; 629} 630 631 632var userNameInput = document.getElementById('userNameInput'); 633var passwordInput = document.getElementById('passwordInput'); 634var ua = navigator.userAgent; 635 636if (ua != null && 637 (ua.match(/MSIE 9.0/) != null || 638 ua.match(/MSIE 8.0/) != null || 639 ua.match(/MSIE 7.0/) != null)) { 640 641 var oInputs = new Array(); 642 oInputs = document.getElementsByTagName('input') 643 644 var num = 0; 645 for (i = 0; i < oInputs.length; i++) { 646 if (oInputs[i].value == '[email protected]') { 647
648 //oInputs[i].value == 'Username'; 649 oInputs[i].style.visibility = 'hidden'; 650 } 651 652 //if (oInputs[i].value == 'Password') { 653 // oInputs[i].hidden = true; 654 //} 655 656 } 657 658} 659else { 660 userNameInput.placeholder = 'Username'; 661 passwordInput.placeholder = 'Password'; 662 userNameInput.focus(); 663} 664 665if (userNameInput.value && userNameInput.value.indexOf("public\\") > -1) { 666 var userNameValue = userNameInput.value.replace("public\\", ""); 667 document.forms['loginForm'].UserName.value = userNameValue; 668} 669 670 671if (Login) { 672 Login.submitLoginRequest = function () { 673 674 var u = new InputUtil(); 675 var e = new LoginErrors(); 676 var userName = document.getElementById(Login.userNameInput); 677 var password = document.getElementById(Login.passwordInput); 678 679 var userNameValue = userName.value; 680 if (userName.value && !userName.value.indexOf("corporate_city\\") > -1) { 681 if (userName.value && !userName.value.match('[@\\\\]')) { 682 userNameValue = 'public\\' + userNameValue; 683 document.forms['loginForm'].UserName.value = userNameValue; 684 } 685 } 686 687 if (userNameInput.value && userNameInput.value.indexOf("@") > -1) { 688 if (userNameInput.value && userNameInput.value.indexOf("@public.city.saskatoon.sk.ca") < 0) { 689 userNameValue = userNameValue + "@public.city.saskatoon.sk.ca" 690 document.forms['loginForm'].UserName.value = userNameValue; 691 } 692 } 693 694 if (!userName.value) { 695 //u.setError(userName, e.userNameFormatError); 696 u.setError(userName, "Please provide your username.<br /><br />"); 697 return false; 698 } 699 700 701 if (!password.value) { 702 //u.setError(password, e.passwordEmpty); 703 u.setError(password, "Please provide your password.<br /><br />"); 704 return false; 705 } 706 707 document.forms['loginForm'].submit(); 708 709 return false; 710 }; 711 712} 713 714//]]> 715</script>
715 716 717 718 </body> 719</html> 720
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.