PageSourceSearch

https://federation.saskatoon.ca/adfs/ls/?SAMLRequest=fVNdk5owFH33V…2F%2Fwww.saskatoon.ca%3A8080%2Fsaml%2Flogin

html saskatoon.ca collected 2026-09-24 09:19:05 UTC 28,840 bytes, 720 lines download raw bytes

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">&#169; 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>&nbsp;<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>&nbsp;<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.