1 2 3<!doctype html> 4<html lang="sv-SE"> 5<head>
5<script src="Presentation/lib/jquery/jquery-3.7.1.min.js"></script>
5<script src="Presentation/ScreenUtil.js"></script>
5<title> 6 EMS Lokalbokningssystem 7</title><meta name="viewport" content="width=device-width, initial-scale=1" /> 8
8<script> 9 $(function () { 10 var isSmallSize = ScreenUtil.isSmallScreen(); 11 $('body').toggleClass('saSmallScreen saSmallScreenJs', isSmallSize); 12 $('body').toggleClass('saLargeScreen', !isSmallSize); 13 addMaintenanceWarnings(); 14 15 $('#YesScript').show(); 16 var firstInput = $('input:visible:first').get(0); 17 if (firstInput) { 18 try { 19 firstInput.focus(); 20 firstInput.select(); 21 } catch (e) { } 22 } 23 }); 24 25 function addMaintenanceWarnings() { 26 var holder = $('.saMessageBannerHolderJs'); 27 var initData = holder.attr('data-sa-init'); 28 holder.removeAttr('data-sa-init'); 29 var wrapper = document.createElement('div'); 30 wrapper.classList = 'saMessageBanners'; 31 holder.append(wrapper); 32 var maintenanceWarnings = JSON.parse(initData); 33 var warnings = maintenanceWarnings.banners; 34 var phrases = maintenanceWarnings.phrases; 35 for (let index = 0; index < warnings.length; index++) { 36 addMaintenanceWarning(warnings[index], phrases, wrapper); 37 } 38 } 39 40 function addMaintenanceWarning(data, phrases, wrapper) { 41 var status = data.status.toLowerCase(); 42 var element = document.createElement('div'); 43 element.className = 'saMessageBanner saWarning'; 44 element.setAttribute('aria-live', 'polite'); 45 element.setAttribute('role', 'alert'); 46 47 var messageWrapper = document.createElement('div'); 48 messageWrapper.className = 'saBannerMessageWrapper'; 49 element.appendChild(messageWrapper); 50 51 var message = document.createElement('div'); 52 message.className = 'saBannerMessage'; 53 messageWrapper.appendChild(message); 54 55 var icon = document.createElement('i'); 56 icon.className = 'saIcon fas fa-triangle-exclamation'; 57 message.appendChild(icon); 58 59 var text = document.createElement('span'); 60 message.appendChild(text); 61 62 wrapper.appendChild(element); 63 64 var baseText = phrases[status].replace('{ExpectedDurationTimeSpan}', formatTimeString(data.expectedDurationMinutes, phrases)); 65 if (data.extraText) { 66 baseText = baseText + ' ' + data.extraText; 67 } 68 69 if (status === 'countdown') { 70 var tickingNumber = data.countDownMinutes + 1; 71 updateWarningText(text, baseText, '{CountDownTimeSpan}', tickingNumber, phrases); 72 } else { 73 text.innerText = baseText; 74 setTimeout(() => window.location.reload(), 60 * 1000); 75 } 76 } 77 78 function updateWarningText(element, baseText, replacementTarget, tickingNumber, phrases) { 79 tickingNumber--; 80 if (tickingNumber > 0) { 81 element.innerText = baseText.replace(replacementTarget, formatTimeString(tickingNumber, phrases)); 82 setTimeout(() => updateWarningText(element, baseText, replacementTarget, tickingNumber, phrases), 60 * 1000); 83 } else { 84 window.location.reload(); 85 } 86 } 87 88 function formatTimeString(minutes, phrases) { 89 var hours = Math.floor(minutes / 60); 90 var remainingMinutes = minutes % 60; 91 var getMinuteUnitPhrase = function(isPlural) { 92 return isPlural ? phrases.minutePlural : phrases.minuteSingular; 93 }; 94 95 if (hours > 0) { 96 var hourString = hours + ' ' + (hours !== 1 ? phrases.hourPlural : phrases.hourSingular); 97 return remainingMinutes > 0 98 ? hourString + ' ' + phrases.and + ' ' + remainingMinutes + ' ' + getMinuteUnitPhrase(remainingMinutes !== 1) 99 : hourString; 100 } 101 102 return remainingMinutes + ' ' + getMinuteUnitPhrase(remainingMinutes !== 1); 103 } 104 105 </script>
105 106 <link href="Presentation/Icons/FontAwesome/Css/all.css?c=XZ972Gyj" rel="stylesheet" type="text/css" /><link href="Presentation/Icons/Custom/Style.css?c=knlEu_tc" rel="stylesheet" type="text/css" /><link href="Presentation/css/screen.css?c=XGxZM22B" rel="stylesheet" type="text/css" /><meta name="apple-itunes-app" content="app-id=1189533959" /></head> 107<body id="loginBody" class="saStandard saLogin"> 108 <div id="MaintenanceWarnings" class="saMessageBannerHolderJs" data-sa-init="{"phrases":{"close":"Stäng meddelande","countdown":"Systemet kommer att genomgÃ¥ underhÃ¥ll om {CountDownTimeSpan}. UnderhÃ¥llet förväntas pÃ¥gÃ¥ i {ExpectedDurationTimeSpan}.","ongoing":"Systemet genomgÃ¥r underhÃ¥ll. Det förväntas att vara färdigt om {ExpectedDurationTimeSpan}.","exceeded":"Systemet genomgÃ¥r underhÃ¥ll. UnderhÃ¥llet har tagit längre tid än väntat.","minuteSingular":"minut","minutePlural":"minuter","hourSingular":"timme","hourPlural":"timmar","and":"och"},"banners":[]}"></div> 109 <div class="saLoginOuter"> 110 <img id="CompanyLogotypeLarge" class="saCustomerLoginLogo" src="../Content.ashx?h=9RCq2muV1lcFGqyyt2yZIlR8APE" alt="EMS Lokalbokningssystem logotyp" style="border-width:0px;" /> 111 <div class="saLoginInner"> 112 <div> 113 <h1 id="PageHeader">EMS Lokalbokningssystem</h1> 114 115 </div> 116 117 <noscript> 118 <div class="infotext"> 119 <p id="NoScriptLabel">Detta system kräver att din webbläsare har inställningen för JavaScript påslagen. Vänligen tala med din systemadministratör för mer information. </p> 120 </div> 121 </noscript> 122 123 124 125 126 127 128 129 <div id="YesScript" style="display: none;"> 130 131 <form name="LoginForm" method="post" action="./login.aspx" id="LoginForm"> 132<div> 133<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="k1Ra/l/++3y1+mXdJKSnqZsVbN5eBEeDD3r+XAdEJWBIC8+g732bCxQWO0rTmvqlwhd+K8GGKtWbEIL2YPphSOAdpAyY0XryFS/wNHSSN+w=" /> 134</div> 135 136<div> 137 138 <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="82312306" /> 139 <input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" /> 140 <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="QRTdMXuI2qVWFpR8Dud+MxfmLAYMRBstQ/TR8YnKwYjHNb4QVmt39GIWtOFYsPuaBKlWonagTO4asQUo2VxzNEQlw1/yZoKrjz1NpqpAPS8qrOaI8SZYUzjAxVF7SdZvZI0CNvYb6O8sI1n720MYvw==" /> 141</div> 142 <div id="UsernameWrapper" class="saControlCol"> 143 <label id="UsernameLabel" for="UsernameTextBox">Användarnamn</label> 144 <div class="saInputTextWrapper"> 145 <input name="ctl00$ContentPlaceHolder$UsernameTextBox" type="text" id="UsernameTextBox" tabindex="1" class="saInputText" autocomplete="username" /> 146 </div> 147 </div> 148 <div id="PasswordWrapper" class="saControlCol saPasswordWrapper"> 149 <div class="saLabelWrapper"> 150 <label id="PasswordLabel" for="PasswordTextBox">Lösenord</label> 151 <a id="ForgotPasswordLink" tabindex="6" class="saForgotPassword" href="ForgotPassword.aspx?languageid=1">Glömt lösenordet?</a> 152 </div> 153 <div class="saInputTextWrapper saHasTrailingIcons"> 154 <input name="ctl00$ContentPlaceHolder$PasswordTextBox" type="password" id="PasswordTextBox" tabindex="2" class="saInputText" autocomplete="current-password" /> 155 <div class="saTrailingIconsWrapper"> 156 <button id="RevealPassword" class="saIcon saActionIcon far fa-eye-slash" tabindex="-1" type="button" aria-hidden="true"></button> 157 </div> 158 </div> 159 </div> 160 <button id="LoginSubmit" class="saButtonPrimary saLoginButton saLoginPageButton" type="submit" tabindex="3">Logga in</button> 161 162 </form> 163 164 165
165<script> 166 function updateLoginButtonStatus() { 167 // Chrome does not trigger an event until the user interacts with 168 // the page when password fields are autocompleted this is why 169 // the button is not disabled when there is not text in the password field. 170 $('.saLoginButton').prop('disabled', !$('#UsernameTextBox').val()); 171 } 172 173 $(function () { 174 updateLoginButtonStatus(); 175 176 $("input").on('input', function () { 177 updateLoginButtonStatus(); 178 }); 179 180 var revealPassword = document.getElementById('RevealPassword'); 181 if (revealPassword) { 182 revealPassword.addEventListener('click', function () { 183 var passwordField = document.getElementById('PasswordTextBox'); 184 var toggleButton = document.getElementById('RevealPassword'); 185 if (passwordField.type === 'password') { 186 passwordField.type = 'input'; 187 toggleButton.classList.add('saActive'); 188 toggleButton.classList.add('fa-eye'); 189 toggleButton.classList.remove('fa-eye-slash'); 190 } else { 191 passwordField.type = 'password'; 192 toggleButton.classList.remove('saActive'); 193 toggleButton.classList.remove('fa-eye'); 194 toggleButton.classList.add('fa-eye-slash'); 195 } 196 }); 197 } 198 199 $(".saLoginButton").on('click', function () { 200 // Disable input fields and login button while trying to log in. 201 // Use setTimeout(..., 0) to allow the browser to post the fields before disabling them. 202 setTimeout(function () { 203 $('.saLoginButton, input').prop('disabled', true); 204 }, 0); 205 206 // Show spinner after a delay. 207 setTimeout(function () { 208 $('.saLoginButton').each(function () { 209 var spinner = document.createElement('i'); 210 $(spinner).addClass('icon fas fa-spinner fa-spin'); 211 $(this).append(spinner); 212 }); 213 }, 1000); 214 }); 215 }); 216 </script>
216 217 218 </div> 219 </div> 220 <a href="https://www.multisoft.se/softadmin/" id="SoftadminLogotype" target="_blank" class="saSoftadminLogo" rel="noopener noreferrer"> 221 <span class="saLogo"></span> 222 <span class="saWordMark"> 223 <div class="saSweep"> 224 <div class="saSweepText"> 225 <span>SOFTADMIN</span> 226 <span class="saSweepR">®</span> 227 <span class="saSweep8">8</span> 228 </div> 229 <div class="saSweepEffect"> 230 <div> 231 <span>SOFTADMIN</span> 232 <span class="saSweepR">®</span> 233 <span class="saSweep8">8</span> 234 </div> 235 <div> 236 <span>SOFTADMIN</span> 237 <span class="saSweepR">®</span> 238 <span class="saSweep8">8</span> 239 </div> 240 <div> 241 <span>SOFTADMIN</span> 242 <span class="saSweepR">®</span> 243 <span class="saSweep8">8</span> 244 </div> 245 </div> 246 </div> 247 </span> 248 </a> 249 </div> 250 <div class="saLoginCover"></div> 251</body> 252</html>
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.