1<!DOCTYPE html> 2<html lang="de-DE"> 3 <head> 4 <title>Kundenportal Stadtwerke Schwentinental</title> 5 <meta charset="UTF-8"/> 6 <meta content="width=device-width, initial-scale=1.0" name="viewport"/> 7 <!-- Favorite icon --> 8 <link rel="apple-touch-icon" sizes="180x180" href="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/favicons/apple-touch-icon.png"> 9 <link rel="icon" type="image/png" sizes="32x32" href="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/favicons/favicon-32x32.png"> 10 <link rel="icon" type="image/png" sizes="16x16" href="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/favicons/favicon-16x16.png"> 11 <link rel="manifest" href="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/favicons/site.webmanifest"> 12 <link rel="mask-icon" href="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/favicons/safari-pinned-tab.svg" color="#fff"> 13 <link rel="shortcut icon" href="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/favicons/favicon.ico"> 14 <meta name="msapplication-TileColor" content="#ffffff"> 15 <meta name="msapplication-config" content="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/favicons/browserconfig.xml"> 16 <meta name="theme-color" content="#ffffff"> 17 <link rel="stylesheet" type="text/css" href="/powercommerce/ivu/fo/portal/resources/css/i18n/ivu.css?v=21"/> 18 <!-- Java Script --> 19 20 21<!-- ITC -->
22<script type="text/javascript"> 23 var flowUrl = ''; 24var generalNoResponseMessage = 'Ihre Anfrage konnte nicht verarbeitet werden. Wenn Sie über längere Zeit keine Aktion ausgeführt haben, wurde Ihre Benutzersitzung beendet. Melden Sie sich ggf. vom Portal ab und führen Sie anschlieÃend Ihre Eingabe erneut aus.'; 25var errorTitle = 'Fehler'; 26var warningTitle = 'Hinweis'; 27var infoTitle = 'Information'; 28var buttonCloseTitle = 'SchlieÃen'; 29 30var datepickerLocale = 'de'; 31</script>
31 32 33
34<script type="text/javascript" src="/powercommerce/ivu/fo/portal/resources/js/vendor.min.js"></script>
34 35
35<script type="text/javascript" src="/powercommerce/ivu/fo/portal/resources/js/core/cockpit.js"></script>
35 36
37<script type="text/javascript" src="/powercommerce/ivu/fo/portal/resources/js/ivu.min.js?v=21"></script>
37 38 39 40 </head> 41 42 <body class=" cockpit ivu "> 43 <a class="osp-link--skip" href="#main">Zum Inhalt</a> 44 <div id="browser-notification"> 45 Sie verwenden einen veralteten Browser, mit dem nicht alle Inhalte des Kundenportals korrekt wiedergegeben werden können. Um unser Kundenportal in Aussehen und Funktion in vollem Umfang nutzen zu können, empfehlen wir Ihnen eine neue Version Ihres Browsers zu installieren. </div> 46 47 <header class="osp-header"> 48 <div class="osp-header__inner"> 49 <div class="headblock"> 50 <span class="redline"></span> 51 <div id="logo"> 52 <a href="https://www.stadtwerke-schwentinental.de/home" target="_blank"> 53 <img class="osp-header__logo" src="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/logo.svg" alt="Stadtwerke Schwentinental" /> 54 </a> 55 </div> 56 </div> 57 <div id="metaBox"> 58 <h1>Kundenportal</h1> 59 <nav aria-label="header-nav" class="navbar metanav" role="navigation"> 60 <span id="kontakt"><a href="https://www.stadtwerke-schwentinental.de/kontakt" title="Kontakt" class="active"><span>Kontakt</span></a></span> 61 <span id="stoerung"><a href="https://www.stadtwerke-schwentinental.de/stoerung" title="Störung"><span>Störung</span></a></span> 62 <span id="kundenportal"><a href="https://kunden.stadtwerke-schwentinental.de/powercommerce/ivu/fo/portal/" target="_blank" title="Kundenportal"><span>Kundenportal</span></a></span> 63 <span id="netzportal"> 64 <a href="https://www.stadtwerke-schwentinental.de/netze/netzportal" target="_blank" title="Netzportal"> 65 <span>Netzportal</span> 66 </a> 67 </span> 68 </nav> 69 </div> 70 </div> 71</header> 72 73 74 75
76<script type="text/javascript"> 77 var errorsExists = false; 78 var warningsExists = false; 79 var infosExists = false; 80</script>
80 81 82<div id="cockpitMessageContainer" class="alert alert-danger fade" data-dismiss="alert" role="alert"> 83 <button class="btn btn-close" data-dismiss="alert" type="button" aria-label="SchlieÃen"> 84 <svg class="osp-icon cancel osp-icon--medium " aria-hidden="true" role="presentation"> 85 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#cancel" /> 86 </svg> 87 </button> 88 <h2 class="font-bold">Fehler</h2> 89 <p> 90 </p> 91</div> 92
93<script type="text/javascript"> 94 jQuery("#cockpitMessageContainer button").click(function() { 95 jQuery("#cockpitMessageContainer").removeClass("in"); 96 }); 97</script>
97 98 99 100 101 102 103 <main id="main"> 104 105 <section class="osp-hero"> 106 <picture class="osp-hero__picture"> 107 <source type="image/avif" sizes="100vw" srcset="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/hero.avif" /> 108 <img src="/powercommerce/ivu/fo/portal/resources/images/i18n/stt/hero.jpg" alt="" aria-hidden="true" /> 109 </picture> 110 111 <div class="osp-hero__inner"> 112 <div class="osp-hero__claim"> 113 <h2 class="osp-hero__claim-text">Willkommen bei den Stadtwerken Schwentinental</h2> 114 <nav class="btn__line osp-hero__claim-actions" aria-label="Schnelle Links zu Funktionen"> 115 116 <a id="directCustomerRequest" href="/powercommerce/ivu/fo/portal/directCustomerRequest" class="btn btn-default" 117 > 118 <svg class="osp-icon customer-service osp-icon--medium " aria-hidden="true" role="presentation"> 119 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#customer-service" /> 120 </svg> 121 Kundenservice kontaktieren 122 123 </a> 124 125 <a class="btn btn-default osp-enwg-contract-cancellation" href="#"> 126 <svg class="osp-icon contract-cancel osp-icon--medium " aria-hidden="true" role="presentation"> 127 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#contract-cancel" /> 128 </svg> 129 Vertrag kündigen 130 </a> 131 132 <a class="btn btn-default osp-contract-revocation" href="#"> 133 <svg class="osp-icon contract-cancel osp-icon--medium " aria-hidden="true" role="presentation"> 134 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#contract-cancel" /> 135 </svg> 136 Vertrag widerrufen 137 </a> 138 139 140 <a id="directAdvancePaymentUpdate" href="/powercommerce/ivu/fo/portal/directAdvancePaymentUpdate" class="btn btn-default" 141 > 142 <svg class="osp-icon prepayment osp-icon--medium " aria-hidden="true" role="presentation"> 143 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18
143n/iconsprite.svg?v=2#prepayment" /> 144 </svg> 145 Abschlag ändern 146 </a> 147 148</nav> 149 </div> 150 151 152 <div id="loginWidget" class="card login opened-sm widget" /> 153 <form id="loginProcessForm" action="/powercommerce/ivu/fo/portal/loginProcess" method="post" > 154 <div class="card-header" > 155 <h2 class="card-title"> 156 <svg class="osp-icon login osp-icon--large " aria-hidden="true" role="presentation"> 157 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#login" /> 158 </svg> 159 <span class="card-title-text">Anmeldung</span> 160 </h2> 161 162 </div> 163 <div class="card-body d-md-block" > 164 <div id="loginWidgetCredentialsContainer" class="osp-credentials" > 165 <div class="card-text" > 166 Sie sind bereits registriert? Dann können Sie sich hier mit Ihrem Benutzernamen und Ihrem Passwort anmelden. 167 </div> 168 169 170 171 172 173 <div class=""> 174 <div class="osp-float-input "> 175 176 <input id="login" type="text" name="login" value="" 177 class="form-control " 178 maxlength="40" required aria-required="true" /> 179 <label for="login">Benutzername</label> 180 </div> 181 </div> 182 183 184 <div class="osp-float-input"> 185 <input id="password" type="password" name="password" class="form-control has-addon" title="Passwort" required> 186 <label for="password">Passwort</label> 187 <button id="passwordReveal" class="input-group-append" aria-label="Passwort anzeigen"> 188 <svg class="osp-icon visibility osp-icon--medium " aria-hidden="true" role="presentation"> 189 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#visibility" /> 190 </svg> 191 <svg class="osp-icon visibility-off osp-icon--medium hidden " aria-hidden="true" role="presentation"> 192 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18
192n/iconsprite.svg?v=2#visibility-off" /> 193 </svg> 194 </button> 195 </div> 196 197 </div> 198 199 <div id="loginWidgetOneTimePasswordContainer" class="osp-credentials " style="display:none"> 200 <p class="widget-formline-text"> Sie haben die 2-Faktor-Authentifizierung aktiviert, ein Einmalpasswort wurde Ihnen per SMS zugesendet. </p> 201 <div class="osp-float-input"> 202 <input id="oneTimePassword" name="oneTimePassword" type="text" autocomplete="one-time-code" 203 aria-placeholder="Einmalpasswort" class="form-control has-addon" maxlength="40" /> 204 <label for="oneTimePassword">Einmalpasswort</label> 205 <div class="input-group-append"> <svg class="osp-icon login osp-icon--medium " aria-hidden="true" role="presentation"> 206 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#login" /> 207 </svg> 208 </div> 209 </div> 210 211 </div> 212 213 214 </div> 215 216 <div class="card-footer d-md-block" > 217 <div class="card-button-line" > 218 219 220 221 222 <button id="loginButton" type="submit" name="button.login.widget" 223 class="btn btn-primary btn-block" title="Anmelden" 224 225 onclick="return submitFormRequired('loginButton');" 226 value=""> 227 Jetzt Anmelden </button> 228 229 </div> 230 <div class="card-links" > 231 232 <a id="loginUserAuthDataRetrieval" href="/powercommerce/ivu/fo/portal/userAuthDataRetrieval" class="card-link" 233 > 234 Zugangsdaten vergessen oder Konto gesperrt? 235 </a> 236 237 </div> 238 239 <div class="clearfix"></div> 240 241 </div> 242 243 </form> 244 <div class="osp-card-loader" aria-hidden="true"> 245 <svg class="osp-icon cog osp-icon--rotate osp-icon--max " aria-hidden="true" role="presentation"> 246 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#cog" /> 247 </svg> 248 </div> 249 </div> 250
251<script type="text/javascript"> 252 document.querySelector("#password").addEventListener('keyup', checkCapsLockpassword); 253 document.querySelector("#password").addEventListener('mousedown', checkCapsLockpassword); 254 /** 255 * @function check if capslock is active 256 * @param {Event} e 257 */ 258 function checkCapsLockpassword(e) { 259 if (!e.getModifierState) return; 260 const capsLockOn = e.getModifierState('CapsLock'); 261 const _msg = jQuery("#loginMessage"); 262 if(capsLockOn === true && !_msg.is(":visible")) 263 { 264 showWidgetWarning('login', 'Die Feststelltaste ist aktiviert.'); 265 } 266 else if(capsLockOn === false && _msg.is(":visible")) 267 { 268 hideWidgetMessage('login'); 269 } 270 } 271 272 /** 273 * @function jQuery click handler for password reveal 274 */ 275 jQuery("#passwordReveal").click(function(ev) { 276 ev.preventDefault(); 277 const _password = jQuery("#password"); 278 const _trigger = jQuery(this); 279 const _iconShow = _trigger.find(".visibility"); 280 const _iconHide = _trigger.find(".visibility-off"); 281 _iconShow.removeClass("hidden"); 282 _iconHide.removeClass("hidden"); 283 if (_password.attr("type") === "password") { 284 _password.attr("type", "text"); 285 _iconShow.addClass("hidden"); 286 } else { 287 _password.attr("type", "password"); 288 _iconHide.addClass("hidden"); 289 } 290 }); 291 292</script>
292 293 294
294<script type="text/javascript"> 295 var login = null; 296var password = null; 297 298$(document).ready(function() 299{ 300 }); 301 302$('#loginButton').click(function() 303{ 304 loginSubmitRequest('/powercommerce/ivu/fo/portal/loginWidget.json'); 305 return false; 306}); 307 308function loginSubmitRequest(url) 309{ 310 // reset error formatting on submit 311 resetWidgetErrors(); 312 if(typeof meterReadingInit == 'function') 313 { 314 meterReadingInit(); 315 } 316 if(typeof productSearchInit == 'function') 317 { 318 productSearchInit(); 319 } 320 if(typeof userRegistrationInit == 'function') 321 { 322 userRegistrationInit(); 323 } 324 325 jQuery.ajax( 326 { 327 url : url, 328 type : 'POST', 329 dataType : 'json', 330 data : $('#loginProcessForm').serialize(), 331 332 // show IVU loader 333 beforeSend: function() { 334 jQuery( "#loginWidget .osp-card-loader" ).addClass("show"); 335 }, 336 337 // perform login, if no errors occurs 338 success : function(data, textStatus, jqXHR) 339 { 340 // $('#loginButton').showWidgetButtonLoader('login', 300000); 341 $('#loginProcessForm').submit(); 342 }, 343 error : function(data) 344 { 345 var jsonData = jQuery.parseJSON(data.responseText); 346 jQuery( "#loginWidget .osp-card-loader" ).removeClass("show"); 347 348 // exception 349 if (jsonData == null || jsonData.exception != null) 350 { 351 var message = null; 352 if(jsonData == null) 353 { 354 message = 'Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten.'; 355 } 356 else 357 { 358 message = jsonData.exception; 359 } 360 showWidgetError('login', message); 361 return; 362 } 363 364 $('#login').val(trimToUndefined(jsonData.model.login)); 365 $('#password').val(trimToUndefined(jsonData.model.password)); 366 367 // global errors 368 if (jsonData.hasGlobalErrors) 369 { 370 showWidgetError('login', jsonData.globalerrors[0]); 371 } 372 373 // field errors 374 if (jsonData.hasFieldErrors) 375 { 376 jQuery.each(jsonData.fielderrors, function(key, value) 377 { 378 if (key === "oneTimePassword") 379 { 380 if (value.indexOf("ONE_TIME_PASSWORD_MANDATORY_BUT_MISSING") != -1) 381 { 382 retrieveOneTimePassword(); 383 } 384 else if (value.indexOf("WRONG_ONE_TIME_PASSWORD") != -1) 385 { 386 //loginInit(); 387 } 388 } 389 else 390 { 391 showWidgetFieldError(key, value); 392 } 393 }); 394 } 395 } 396 397 }); 398} 399 400function retrieveOneTimePassword() 401{ 402 jQuery( "#loginWidget .osp-card-loader" ).addClass("show"); 403 jQuery.ajax( 404 { 405 url: "/powercommerce/ivu/fo/portal/oneTimePasswordRequest.json", 406 type: 'POST', 407 dataType: 'json', 408 data: { 409 login: $('#login').val() 410 }, 411 412 // perform login, if no errors occurs 413 success: function (data, textStatus, jqXHR) 414 { 415 jQuery( "#loginWidget .osp-card-loader" ).removeClass("show"); 416 $('#loginWidgetCredentialsContainer, #loginFooterProcessLinks').fadeOut('fast', function () 417 { 418 $('#loginWidgetOneTimePasswordContainer').fadeIn('fast'); 419 jQuery("#oneTimePassword").focus(); 420 }) 421 }, 422 error: function (data) 423 { 424 var jsonData = jQuery.parseJSON(data.responseText); 425 jQuery( "#loginWidget .osp-card-loader" ).removeClass("show"); 426 427 // exception 428 if (jsonData == null || jsonData.exception != null) 429 { 430 console.log("no json data"); 431 var message = null; 432 if (jsonData == null) 433 { 434 message = 'Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten.'; 435 } 436 else 437 { 438 message = jsonData.exception; 439 } 440 showWidgetError('login', message); 441 return; 442 } 443 444 if (jsonData.hasGlobalErrors && jsonData.globalerrors.length) { 445 showWidgetError('login', jsonData.globalerrors[0]); 446 } 447 } 448 }); 449} 450 451function loginInit() 452{ 453 resetWidgetErrors(); 454 $('#login, #password').reset(); 455} 456 457 </script>
457 458 </div> 459 </section> 460 <div id="main-cockpit-panorama-cage" class="d-flex justify-content-between"> 461 <div class="osp-cockpit-overlay"> 462 <svg class="osp-icon cog osp-icon--rotate osp-icon--max inner " aria-hidden="true" role="presentation"> 463 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#cog" /> 464 </svg> 465 </div> 466 467 468 469 470 <div id="userRegistrationWidget" class="card userRegistration widget" /> 471 <form id="userRegistrationForm" action="/powercommerce/ivu/fo/portal/userRegistration" method="post" > 472 <div class="card-header" > 473 <h2 class="card-title"> 474 <svg class="osp-icon customer osp-icon--large " aria-hidden="true" role="presentation"> 475 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#customer" /> 476 </svg> 477 <span class="card-title-text">Registrierung</span> 478 </h2> 479 480 </div> 481 <div class="card-body d-md-block" > 482 <div class="card-text" > 483 <p> Sie sind Kunde von uns und möchten unseren Online-Service nutzen? Registrieren Sie sich hier mit Ihrer Kunden- und einer Zählernummer. </p> 484 485 </div> 486 <div class="osp-float-input"> 487 <input id="userRegistrationCustomerNo" type="text" name="customerNo" class="form-control has-addon" maxlength="14" required aria-required="true" /> 488 <label for="userRegistrationCustomerNo">Kundennummer</label> 489 <div class="input-group-append"> <svg class="osp-icon customer osp-icon--medium " aria-hidden="true" role="presentation"> 490 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#customer" /> 491 </svg> 492 </div> 493 </div> 494 495 <div class="osp-float-input"> 496 <input id="userRegistrationMeterNo" type="text" name="meterNo" class="form-control has-addon" maxlength="18" required aria-required="true" /> 497 <label for="userRegistrationMeterNo">Zählernummer</label> 498 <div class="input-group-append"> <svg class="osp-icon meter osp-icon--medium " aria-hidden="true" role="presentation"> 499 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18
499n/iconsprite.svg?v=2#meter" /> 500 </svg> 501 </div> 502 </div> 503 504 505 </div> 506 507 <div class="card-footer d-md-block" > 508 <div class="card-button-line" > 509 510 511 512 513 <button id="userRegistrationButton" type="submit" name="button.userRegistration.widget" 514 class="btn btn-primary btn-block" title="Registrieren" 515 516 onclick="return submitFormRequired('userRegistrationButton');" 517 value=""> 518 Registrieren </button> 519 520 </div> 521 522 <div class="clearfix"></div> 523 524 </div> 525 526 </form> 527 <div class="osp-card-loader" aria-hidden="true"> 528 <svg class="osp-icon cog osp-icon--rotate osp-icon--max " aria-hidden="true" role="presentation"> 529 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#cog" /> 530 </svg> 531 </div> 532 </div> 533
534<script type="text/javascript"> 535 $("#userRegistrationForm").submit(function () { 536 userRegistrationSubmitRequest( 537 '/powercommerce/ivu/fo/portal/userRegistrationWidget.json' 538 ); 539 return false; 540}); 541 542function userRegistrationSubmitRequest(url) { 543 jQuery.ajax({ 544 url: url, 545 type: "POST", 546 dataType: "json", 547 data: $("#userRegistrationForm").serialize(), 548 549 // reset error formatting on submit 550 beforeSend: function () { 551 resetWidgetErrors(); 552 if (typeof meterReadingInit == "function") { 553 meterReadingInit(); 554 } 555 if (typeof productSearchInit == "function") { 556 productSearchInit(); 557 } 558 if (typeof loginInit == "function") { 559 loginInit(); 560 } 561 jQuery("#userRegistrationWidget .osp-card-loader").addClass("show"); // show IVU loader 562 }, 563 // start user registration process, if no errors occurs 564 success: function (data, textStatus, jqXHR) { 565 // $('#userRegistrationButton').showWidgetButtonLoader('userRegistration', 300000); 566 startProcess( 567 '/powercommerce/ivu/fo/portal/userRegistration' + 568 "?customerNo=" + 569 trim($("#userRegistrationCustomerNo").val()) + 570 "&meterNo=" + 571 trim($("#userRegistrationMeterNo").val()) 572 ); 573 }, 574 error: function (data) { 575 var jsonData = jQuery.parseJSON(data.responseText); 576 577 jQuery("#userRegistrationWidget .osp-card-loader").removeClass( 578 "show" 579 ); // hide IVU loader 580 581 // exception 582 if (jsonData == null || jsonData.exception != null) { 583 var message = null; 584 if (jsonData == null) { 585 message = 'Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten.'; 586 } else { 587 message = jsonData.exception; 588 } 589 showWidgetError("userRegistration", message); 590 return; 591 } 592 $("#userRegistrationCustomerNo").val( 593 trimToUndefined(jsonData.model.customerNo) 594 ); 595 $("#userRegistrationMeterNo").val( 596 trimToUndefined(jsonData.model.meterNo) 597 ); 598 599 // global errors 600 if (jsonData.hasGlobalErrors) { 601 showWidgetError("userRegistration", jsonData.globalerrors[0]); 602 } 603 604 // field errors 605 if (jsonData.hasFieldErrors) { 606 jQuery.each(jsonData.fielderrors, function (key, value) { 607 fieldName = 608 "userRegistration" + 609 key.charAt(0).toUpperCase() + 610 key.substring(1); 611 showWidgetFieldError(fieldName, value); 612 }); 613 } 614 } 615 }); 616} 617 618function userRegistrationInit() { 619 resetWidgetErrors(); 620 $("#userRegistrationCustomerNo, #userRegistrationMeterNo").reset(); 621} 622 623</script>
623 624 625 626 <div id="productSearchWidget" class="card product-calculator widget" /> 627 <form id="productSearchForm" action="/powercommerce/ivu/fo/portal/productSearch" method="post" > 628 <div class="card-header" > 629 <h2 class="card-title"> 630 <svg class="osp-icon product-calculator osp-icon--large " aria-hidden="true" role="presentation"> 631 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#product-calculator" /> 632 </svg> 633 <span class="card-title-text">Jetzt Kunde werden</span> 634 </h2> 635 636 </div> 637 <div class="card-body d-md-block" > 638 <fieldset class="osp-radio-group"> 639 <legend>Kundentyp</legend> 640 <input id="productSearchCustomerTypePRIVATE" type="radio" name="customerType" value="PRIVATE" checked /> 641 <label for="productSearchCustomerTypePRIVATE"> 642 <svg class="osp-icon customer osp-icon--medium " aria-hidden="true" role="presentation"> 643 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#customer" /> 644 </svg> 645 <span>Privat</span> 646 </label> 647 <input id="productSearchCustomerTypeBUSINESS" type="radio" name="customerType" value="BUSINESS" /> 648 <label for="productSearchCustomerTypeBUSINESS"> 649 <svg class="osp-icon business osp-icon--medium " aria-hidden="true" role="presentation"> 650 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#business" /> 651 </svg> 652 <span>Geschäftlich</span> 653 </label> 654 </fieldset> 655 <fieldset class="osp-radio-group"> 656 <legend>Energieart</legend> 657 <input id="productSearchMediaTextPOWER" type="checkbox" name="power" value="true"> 658 <label for="productSearchMediaTextPOWER"> 659 <svg class="osp-icon power osp-icon--medium " aria-hidden="true" role="presentation"> 660 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18
660n/iconsprite.svg?v=2#power" /> 661 </svg> 662 <span>Strom</span> 663 </label> 664 <input id="productSearchMediaTextGAS" type="checkbox" name="gas" value="true"> 665 <label for="productSearchMediaTextGAS"> 666 <svg class="osp-icon gas osp-icon--medium " aria-hidden="true" role="presentation"> 667 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#gas" /> 668 </svg> 669 <span>Gas</span> 670 </label> 671 </fieldset> 672 <div class="osp-float-input"> 673 <input id="productSearchPostalCode" type="text" name="postalCode" class="form-control has-addon" maxlength="5" required aria-required="true" /> 674 <label for="productSearchPostalCode">Postleitzahl</label> 675 <div class="input-group-append"> <svg class="osp-icon location osp-icon--medium " aria-hidden="true" role="presentation"> 676 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#location" /> 677 </svg> 678 </div> 679 </div> 680 681 682 </div> 683 <div class="card-footer d-md-block" > 684 <div class="card-button-line" > 685 686 687 688 689 <button id="productSearchButton" type="submit" name="button.productSearch.widget" 690 class="btn btn-primary btn-block" title="Produkte bestimmen" 691 692 onclick="return submitFormRequired('productSearchButton');" 693 value=""> 694 Produkte bestimmen </button> 695 696 </div> 697 698 <div class="clearfix"></div> 699 700 </div> 701 702 </form> 703 <div class="osp-card-loader" aria-hidden="true"> 704 <svg class="osp-icon cog osp-icon--rotate osp-icon--max " aria-hidden="true" role="presentation"> 705 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#cog" /> 706 </svg> 707 </div> 708 </div> 709 710 711
712<script type="text/javascript"> 713 $("#productSearchForm").submit(function () { 714 productSearchSubmitRequest( 715 '/powercommerce/ivu/fo/portal/productSearchWidget.json' 716 ); 717 return false; 718}); 719 720function productSearchSubmitRequest(url) { 721 jQuery.ajax({ 722 url: url, 723 type: "POST", 724 dataType: "json", 725 data: $("#productSearchForm").serialize(), 726 727 // reset error formatting on submit 728 beforeSend: function () { 729 productSearchResetErrors(); 730 if (typeof meterReadingInit == "function") { 731 meterReadingInit(); 732 } 733 if (typeof loginInit == "function") { 734 loginInit(); 735 } 736 if (typeof userRegistrationInit == "function") { 737 userRegistrationInit(); 738 } 739 jQuery("#productSearchWidget .osp-card-loader").addClass("show"); // show IVU loader 740 injectFilterData(); 741 }, 742 // start product search process, if no errors occurs 743 success: function (data, textStatus, jqXHR) { 744 // $('#productSearchButton').showWidgetButtonLoader('productSearch', 300000); 745 startProcess( 746 '/powercommerce/ivu/fo/portal/productSearch' + 747 "?customerType=" + 748 data.model.customerType + 749 "&power=" + 750 data.model.power + 751 "&gas=" + 752 data.model.gas + 753 "&water=" + 754 data.model.water + 755 "&thermal=" + 756 data.model.thermal + 757 "&postalCode=" + 758 trim(data.model.postalCode) 759 ); 760 }, 761 error: function (data) { 762 var jsonData = jQuery.parseJSON(data.responseText); 763 jQuery("#productSearchWidget .osp-card-loader").removeClass("show"); // hide IVU loader 764 765 // exception 766 if (jsonData == null || jsonData.exception != null) { 767 var message = null; 768 if (jsonData == null) { 769 message = 'Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten.'; 770 } else { 771 message = jsonData.exception; 772 } 773 showWidgetError("productSearch", message); 774 return; 775 } 776 777 // global errors 778 if (jsonData.hasGlobalErrors) { 779 showWidgetError("productSearch", jsonData.globalerrors[0]); 780 } 781 782 // field errors 783 if (jsonData.hasFieldErrors) { 784 var customerTypeError; 785 var mediaTypesError; 786 var postalCodeError; 787 jQuery.each(jsonData.fielderrors, function (key, value) { 788 fieldName = 789 "productSearch" + 790 key.charAt(0).toUpperCase() + 791 key.substring(1); 792 if (key == "customerType") { 793 customerTypeError = value; 794 $('input[id^="productSearchCustomerType"]').addClass( 795 "alert-danger" 796 ); 797 } 798 if (key == "mediaTypes") { 799 mediaTypesError = value; 800 $('input[id^="productSearchMedia"]').addClass( 801 "alert-danger" 802 ); 803 } else if (key == "postalCode") { 804 showWidgetFieldError(fieldName, value, false); 805 } 806 }); 807 var message = ""; 808 if (customerTypeError != null) { 809 message += customerTypeError; 810 } 811 if (mediaTypesError != null) { 812 if (message != "") { 813 message += "<br/>"; 814 } 815 message += mediaTypesError; 816 } 817 if (message != "") { 818 showWidgetError("productSearch", message); 819 } 820 } 821 } 822 }); 823} 824 825function productSearchResetErrors() { 826 resetWidgetErrors(); 827} 828 829function productSearchInit() { 830 productSearchResetErrors(); 831 $(
832 'input[id^="productSearchCustomerType"],input[id^="productSearchMedia"],#productSearchPostalCode' 833 ).reset(); 834 $( 835 'input[id^="productSearchCustomerType"],input[id^="productSearchMedia"]' 836 ).removeClass("alert-danger"); 837} 838 839</script>
839 840 841 842 843 <div id="meterReadingWidget" class="card meter-reading widget" /> 844 <form id="meterReadingForm" action="/powercommerce/ivu/fo/portal/meterReading" method="post" > 845 <div class="card-header" > 846 <h2 class="card-title"> 847 <svg class="osp-icon meter osp-icon--large " aria-hidden="true" role="presentation"> 848 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#meter" /> 849 </svg> 850 <span class="card-title-text">Zählerstandsmeldung</span> 851 </h2> 852 853 </div> 854 855 <div class="card-body d-md-block" > 856 <div class="card-text" > 857 <p> Sie wollen uns Ihren Zählerstand mitteilen? Bitte geben Sie hier Ihre Kunden- und Zählernummer ein. </p> 858 859 </div> 860 <div class="osp-float-input"> 861 <input id="meterReadingCustomerNo" type="text" name="customerNo" class="form-control has-addon" maxlength="14" required aria-required="true" /> 862 <label for="meterReadingCustomerNo">Kundennummer</label> 863 <div class="input-group-append"> <svg class="osp-icon customer osp-icon--medium " aria-hidden="true" role="presentation"> 864 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#customer" /> 865 </svg> 866 </div> 867 </div> 868 869 <div class="osp-float-input"> 870 <input id="meterReadingMeterNo" type="text" name="meterNo" class="form-control has-addon" maxlength="18" required aria-required="true" /> 871 <label for="meterReadingMeterNo">Zählernummer</label> 872 <div class="input-group-append"> <svg class="osp-icon meter osp-icon--medium " aria-hidden="true" role="presentation"> 873 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#meter" /> 874 </svg> 875 </div> 876 </div> 877 878 879 880 </div> 881 882 <div class="card-footer d-md-block" > 883 <div class="card-button-line" > 884 885 886 887 888 <button id="meterReadingButton" type="submit" name="button.meterReading.widget" 889 class="btn btn-primary btn-block" title="Zählerstandsmeldung" 890 891 onclick="return submitFormRequired('meterReadingButton');" 892 value=""> 893 Zählerstandsmeldung </button> 894 895 </div> 896 897 <div class="clearfix"></div> 898 899 </div> 900 901 </form> 902 <div class="osp-card-loader" aria-hidden="true"> 903 <svg class="osp-icon cog osp-icon--rotate osp-icon--max " aria-hidden="true" role="presentation"> 904 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18
904n/iconsprite.svg?v=2#cog" /> 905 </svg> 906 </div> 907 </div> 908
909<script type="text/javascript"> 910 $("#meterReadingForm").submit(function () { 911 meterReadingSubmitRequest( 912 '/powercommerce/ivu/fo/portal/meterReadingWidget.json' 913 ); 914 return false; 915}); 916 917function meterReadingSubmitRequest(url) { 918 jQuery.ajax({ 919 url: url, 920 type: "POST", 921 dataType: "json", 922 data: $("#meterReadingForm").serialize(), 923 924 // reset error formatting on submit 925 beforeSend: function () { 926 resetWidgetErrors(); 927 if (typeof loginInit == "function") { 928 loginInit(); 929 } 930 if (typeof productSearchInit == "function") { 931 productSearchInit(); 932 } 933 if (typeof userRegistrationInit == "function") { 934 userRegistrationInit(); 935 } 936 jQuery("#meterReadingWidget .osp-card-loader").addClass("show"); // show IVU loader 937 }, 938 939 // perform login, if no errors occurs 940 success: function (data, textStatus, jqXHR) { 941 // $('#meterReadingButton').showWidgetButtonLoader('meterReading', 300000); 942 startProcess( 943 '/powercommerce/ivu/fo/portal/directMeterReading' + 944 "?customerNo=" + 945 trim($("#meterReadingCustomerNo").val()) + 946 "&meterNo=" + 947 trim($("#meterReadingMeterNo").val()) 948 ); 949 }, 950 error: function (data) { 951 var jsonData = jQuery.parseJSON(data.responseText); 952 953 jQuery("#meterReadingWidget .osp-card-loader").removeClass("show"); // hide IVU loader 954 955 // exception 956 if (jsonData == null || jsonData.exception != null) { 957 var message = null; 958 if (jsonData == null) { 959 message = 'Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten.'; 960 } else { 961 message = jsonData.exception; 962 } 963 showWidgetError("meterReading", message); 964 return; 965 } 966 $("#meterReadingCustomerNo").val( 967 trimToUndefined(jsonData.model.customerNo) 968 ); 969 $("#meterReadingMeterNo").val( 970 trimToUndefined(jsonData.model.meterNo) 971 ); 972 973 // global errors 974 if (jsonData.hasGlobalErrors) { 975 showWidgetError("meterReading", jsonData.globalerrors[0]); 976 } 977 978 // field errors 979 if (jsonData.hasFieldErrors) { 980 jQuery.each(jsonData.fielderrors, function (key, value) { 981 fieldName = 982 "meterReading" + 983 key.charAt(0).toUpperCase() + 984 key.substring(1); 985 showWidgetFieldError(fieldName, value); 986 }); 987 } 988 }, 989 complete: function (jqXHR, textStatus) { 990 $("#meterReadingCaptcha").val(""); 991 } 992 }); 993} 994 995function meterReadingInit() { 996 resetWidgetErrors(); 997 $("#meterReadingCustomerNo, #meterReadingMeterNo").reset(); 998} 999 1000</script>
1000 1001 1002 1003
1004<script type="text/javascript"> 1005 1006</script>
1006 1007 1008
1008<script type="text/javascript"> 1009 ( function() { 1010 function getQueryVariable( variable ) { // extract Query Variable from URL 1011 var query = window.location.search.substring(1); 1012 var vars = query.split("&"); 1013 for ( var i = 0 ; i < vars.length ; i++ ) { 1014 var pair = vars[i].split( "=" ); 1015 if ( pair[0] == variable ){ 1016 return pair[1]; 1017 } 1018 } 1019 return false; 1020 } 1021 function cleanUrl() { // clean up URL without page refresh if history.replaceState is available 1022 var shortUrl = top.location.href.substring( 0, top.location.href.indexOf( "?" ) ); 1023 if ( history.replaceState ) { 1024 var windowTitle = jQuery( document ).prop( "title" ); 1025 history.replaceState( "string", windowTitle, shortUrl ); 1026 } 1027 } 1028 // get action and url without query params 1029 var data = { 1030 power: parseInt(getQueryVariable( "consumptionPowerHt" ), 10) || 0, 1031 powerNt: parseInt(getQueryVariable( "consumptionPowerNt" ), 10) || 0, 1032 gas: parseInt(getQueryVariable( "consumptionGas" ), 10) || 0, 1033 water: parseInt(getQueryVariable( "consumptionWater" ), 10) || 0, 1034 thermal: parseInt(getQueryVariable( "consumptionThermal" ), 10) || 0, 1035 } 1036 1037 Cookies.remove("OSPContractCancellationEnWG"); 1038 Cookies.remove("OSPContractRevocation"); 1039 if ( getQueryVariable( "action" ) === "contractCancellation" ) { 1040 cleanUrl(); 1041 jQuery(document).ready(function() { 1042 jQuery(".osp-enwg-contract-cancellation").trigger("click"); 1043 }); 1044 } 1045 1046 jQuery( "#loginWidget, #userRegistrationWidget, #productSearchWidget, #meterReadingWidget" ).css( "opacity", "1" ); 1047 if ( getQueryVariable( "action" ) === "productSearch" ) { 1048 jQuery( "#productSearchPostalCode" ).val( getQueryVariable( "pocode" ) ); 1049 if ( getQueryVariable( "type" ) === "business" ) { 1050 jQuery( "#productSearchCustomerTypeBUSINESS" ).trigger( "click" ); 1051 } else { 1052 jQuery( "#productSearchCustomerTypePRIVATE" ).trigger( "click" ); 1053 } 1054 if (getQueryVariable( "consumptionPowerHt" ) && (data.power > 0 || data.powerNt > 0)) { 1055 jQuery( "#productSearchMediaTextPOWER" ).trigger( "click" ); 1056 } 1057 if ( getQueryVariable( "consumptionGas" ) && (data.gas > 0) ) { 1058 jQuery( "#productSearchMediaTextGAS" ).trigger( "click" ); 1059 } 1060 cleanUrl(); 1061 Cookies.set("OSPproductSearchData", JSON.stringify(data)); 1062 jQuery( "#loginWidget, #userRegistrationWidget, #meterReadingWidget" ).css( "opacity", "0.2" ); 1063 jQuery( "#productSearchButton" ).trigger( "click" ); 1064 } 1065 } )(); 1066 </script>
1066 1067 1068<div id="widgetInfoLinkTemplate" class="hide"> 1069 <a tabindex="0" class="osp-link-info" role="button" data-bs-toggle="popover" data-bs-trigger="focus"> <svg class="osp-icon info osp-icon--medium " aria-hidden="true" role="presentation"> 1070 <use xlink:href="/powercommerce/ivu/fo/portal/resources/images/i18n/iconsprite.svg?v=2#info" /> 1071 </svg> 1072 </a> 1073</div> 1074 1075 1076 </div> 1077 1078 </main> 1079 1080 <footer class="osp-footer"> 1081 <div class="addressbox"> 1082 <div class="container"> 1083 <div class="row form-row"> 1084 <div class="col-md-4"> 1085 <div class="footercontact"> 1086 <h2 class="addresstitel">Stadtwerke Schwentinental</h2> 1087 <p class="address">Seebrooksberg 1</p> 1088 <p class="address2">24222 Schwentinental</p> 1089 <h3 class="fonhead">Telefon</h3> 1090 <p class="fon"><a href="tel:+4943122082410">0431-220 8241-0</a></p> 1091 <h3 class="fonhead">Telefax</h3> 1092 <p class="fon">0431-220 8241-157</p> 1093 <h3 class="e-mail">E-Mail</h3> 1094 <p class="link-mail">[email protected]</p> 1095 </div> 1096 </div> 1097 <div class="col-md-8"> 1098 </div> 1099 </div> 1100 </div> 1101 </div> 1102 <div class="linkbox"> 1103 <div class="container"> 1104 <div class="row form-row"> 1105 <div class="col-md-12"> 1106 <h3 class="linktitel">Das Wichtigste auf einen Blick</h3> 1107 </div> 1108 </div> 1109 <div class="row form-row"> 1110 <div class="col-md-4"> 1111 <h3 class="stoerunghead">Störungsdienst</h3> 1112 <p class="stoerung">Strom / Wasser / Fernwärme</p> 1113 <p class="stoerung2"><a href="tel:+494312208241140">0431-220 8241-140</a></p> 1114 <p class="gashead">Gas</p> 1115 <p class="gas"><a href="tel:+494312208241160">0431-220 8241-160</a></p> 1116 </div> 1117 <div class="col-md-4"> 1118 <nav aria-label="footer-nav" class="navbar footernavigation middle" role="navigation"> 1119 <ul class="footernav"> 1120 <li class="first page-4"> 1121 <a href="https://www.stadtwerke-schwentinental.de//impressum" title="Impressum">Impressum</a> 1122 </li> 1123 <li class="page-5"><a href="https://www.stadtwerke-schwentinental.de/datenschutz" title="Datenschutz">Datenschutz</a></li> 1124 <li class="page-6"><a href="https://www.stadtwerke-schwentinental.de//sitemap" title="Sitemap">Sitemap</a></li> 1125 <li class="page-91"><a href="https://kunden.stadtwerke-schwentinental.de/powercommerce/ivu/fo/portal/" target="_blank" rel="noreferrer">Kundenportal</a></li> 1126 <li class="last page-141"><a href="https://www.stadtwerke-schwentinental.de//impressum/barrierefreiheit" title="Barrierefreiheit">Barrierefreiheit</a></li></ul> 1127 </nav> 1128 <a class="facebook" target="_blank" href="https://www.facebook.com/Stadtwerke-Schwentinental-GmbH-191270821515656/">Facebook</a> 1129 </div> 1130 <div class="col-md-4"></div> 1131 </div> 1132 </div> 1133 </div> 1134 <div class="bottombox"> 1135 <div class="container"> 1136 <div class="row form-row"> 1137 <div class="col-12"> 1138 <div class="copyright"> 1139 <img class="footerlogo" title="Stadtwerke Schwentinental Homepage" alt="Stadtwerke Schwentinental" src="/powercommerce/ivu/fo/portal/resources/images/i18
1139n/stt/footer-logo.jpg" width="104" height="104"> 1140 </div> 1141 </div> 1142 </div> 1143 </div> 1144 </div> 1145</footer> 1146
1147<script type="text/javascript"> 1148 jQuery(".osp-enwg-contract-cancellation").click(function(ev) { 1149 ev.preventDefault(); 1150 Cookies.set("OSPContractCancellationEnWG", 1); 1151 location.href = "/powercommerce/ivu/fo/portal/directCustomerRequest"; 1152 }); 1153 jQuery(".osp-contract-revocation").click(function(ev) { 1154 console.log("clicked"); 1155 ev.preventDefault(); 1156 Cookies.set("OSPContractRevocation", 1); 1157 location.href = "/powercommerce/ivu/fo/portal/directCustomerRequest"; 1158 }); 1159</script>
1159 1160 1161 1162
1162<script type="text/javascript"> 1163 1164 </script>
1164 1165 <noscript> 1166 <p id="noScriptInfo">Bitte aktivieren Sie JavaScript, um das Online-Portal nutzen zu können.</p> 1167 </noscript> 1168 1169 </body> 1170</html> 1171
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.