1<!DOCTYPE html> 2<!--[if lt IE 7]> 3<html lang="de" class="no-js lt-ie9 lt-ie8 lt-ie7"> 4<![endif]--> 5<!--[if IE 7]> 6<html lang="de" class="no-js lt-ie9 lt-ie8"> 7<![endif]--> 8<!--[if IE 8]> 9<html lang="de" class="no-js lt-ie9"> 10<![endif]--> 11<!--[if gt IE 8]><!--> 12<html lang="de" class="no-js"> 13<!--<![endif]--> 14<head> 15 16 17 18 19 20<title>Konto erstellen | FCG Immobilien GmbH</title> 21<meta charset="utf-8"> 22<base href="https://fcggmbh.de/" /> 23<meta http-equiv="X-UA-Compatible" content="IE=edge"> 24<meta name="description" content=""> 25<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 26 27<meta name="google-site-verification" content="WfR0PnMkJxxrbzgKnB4SqUw46OKHEP974MVGRRY6QSw" /> 28<meta name="facebook-domain-verification" content="5g4xn0nxo1k2crdud84wrres7raw7b" /> 29<meta name="twitter:url" property="og:url" content="https://fcggmbh.de/konto-erstellen.html"> 30<meta name="twitter:title" property="og:title" content="Konto erstellen"> 31<meta name="twitter:description" property="og:description" content=""> 32 33 34 35 36 37 38<link rel="shortcut icon" href="https://fcggmbh.de//data/logo/fcg_favicon.png"> 39 40<link rel="stylesheet" type="text/css" href="/assets/components/modxminify/cache/styles-4-1587545226.min.css"> 41 42 43<link rel="stylesheet" type="text/css" href="https://fcggmbh.de/assets/themes/fcg/css/toastr.min.css"> 44 45 46 47<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 48<!--[if lt IE 9]>
49<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
vendor: 1 bytes, line 49
49
50<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
50 51<![endif]--> 52 53 54 55<style> 56 57 .subline { 58 content: ''; 59 display: block; 60 width: 150px; 61 border-radius: 5px; 62 height: 5px; 63 background: #2b4193; 64 margin-left: 0px; 65 margin-top: 20px; 66 margin-bottom: 30px; 67 } 68 69 .error { 70 color: red; 71 } 72 .card .card-image{ 73 background-color:transparent; 74 } 75 76 77 78 .blend-outline-out-in{ 79 width:100%; 80 height:100%; 81 position:absolute; 82 transition:all 0.3s linear; 83 pointer-events:none; 84 z-index:1; 85 opacity:0; 86 outline:10px solid #ffffff99; 87 } 88 .card:hover>.card-image .blend-outline-out-in{ 89 opacity:1; 90 outline-offset:-10px; 91 } 92 .card-image img{ 93 width:100%; 94 height:100%; 95 } 96 .circle-element, 97 .testimonial-carousel{ 98 margin:30px auto; 99 } 100 .image-slider{ 101 margin-top:0; 102 margin-bottom:60px; 103 } 104 .image-slider img{ 105 object-fit:contain; 106 padding:10px; 107 } 108 .testimonial-carousel .owl-stage{ 109 height:250px; 110 } 111 .testimonial-carousel .owl-item{ 112 height:100%; 113 position:relative; 114 } 115 .testimonial-carousel .client-image{ 116 width:100px; 117 border-radius:50%; 118 border:2px solid white; 119 height:100px; 120 overflow:hidden; 121 padding:0; 122 } 123 .testimonial-carousel .client-image img{ 124 width:100%; 125 height:100%; 126 object-fit:cover; 127 } 128 .testimonial-content .font-sm{ 129 font-size:1.2rem; 130 position:relative; 131 } 132 .testimonial-content .font-sm i{ 133 position:absolute; 134 left:-30px; 135 top:50%; 136 transform:translate(-50%, -50%); 137 } 138 .inner-page .container .row .col-sm-4 img{ 139 width:100%; 140 height:100%; 141 object-fit:contain; 142 } 143 .testimonial-content{ 144 position:absolute; 145 padding:30px; 146 color:white; 147 top:50%; 148 left:50%; 149 transform: translate(-50%, -50%); 150 } 151 .testimonial-carousel .carousel-overlay{ 152 background-color:#2b4193aa; 153 } 154 .half-half .card{ 155 min-height:490px; 156 } 157 #footer .adress a{ 158 color:#2b4193; 159 } 160 #footer .col-sm-3{ 161 margin-bottom:0px; 162 } 163 #footer .col-sm-2{ 164 margin-top:0px; 165 } 166 .reference{ 167 padding-bottom:30px; 168 position:relative; 169 } 170 .reference-download{ 171 position:absolute; 172 bottom:10px; 173 left:15px; 174 } 175 @media (max-width:1400px){ 176 .testimonial-content .font-sm{ 177 font-size: 1rem; 178 } 179 } 180 @media (max-width:767px){ 181 .nav-background{ 182 background-color:#2b4193; 183 } 184 .testimonial-carousel .owl-stage{ 185 height:300px; 186 } 187 .testimonial-content .font-sm i{ 188 left:-40px; 189 } 190 .nav-background a{ 191 color:white !important; 192 } 193 #Navbar{ 194 width:100%; 195 } 196 #footer .col-sm-3{ 197 margin-bottom:20px; 198 margin-left:50px; 199 } 200 #footer .col-sm-2{ 201 margin-top:20px; 202 } 203 .testimonial-carousel .client-image{ 204 width:80%; 205 height:80%; 206 } 207 .testimonial-content .font-sm{ 208 font-size: 0.8rem; 209 } 210 } 211 @media (max-width:450px){ 212 .testimonial-carousel .owl-stage{ 213 height:400px; 214 } 215 .testimonial-content{ 216 padding:30px 0px; 217 } 218</style> 219</head> 220<body> 221 222<div class="loader2"> 223 <div class="loader-box"> 224 <img src="assets/themes/fcg/images/fcg_logo.svg"> 225 </div> 226</div> 227 228 229<style> 230.loader2{ 231 z-index: 999; 232 background-color: white; 233 width:100%; 234 height:100%; 235 position: fixed; 236 top: 0; 237 left: 0; 238} 239.loader2 .loader-box{ 240 transform:translate(-50%, -50%); 241 width: 50%; 242 height: 50vh; 243 position:fixed; 244 top:50%; 245 left:50%; 246} 247.loader2 img{ 248 object-fit:contain; 249 width:100%; 250 animation: preload2 linear 2s infinite; 251 height:100%; 252} 253@keyframes preload2{ 254 0%{transform:scale(1);} 255 50%{transform:scale(1.2);} 256 100%{transform:scale(1);} 257} 258@media(max-width:768px){ 259 .loader2 .loader-box{ 260 261 } 262} 263</style> 264 265 <div class="wrapper"> 266
267<script> 268 var luxGrecaptchaSucced = ''; 269</script>
269 270<style> 271 .overlay{ 272 background-attachment:fixed !important; 273 background: center center / cover no-repeat; 274 } 275 @meadia(max-width:768px){ 276 .navbar-header{ 277 padding:0; 278 } 279 } 280</style> 281 282<header> 283 <div class="top-bar bg-light hidden-xs"> 284 <div class="container"> 285 <div class="row"> 286 <div class="col-sm-6 list-inline list-unstyled no-margin hidden-xs"> 287 <p class="no-margin"> 288 <strong><a class="luxphonelink" href="tel:02841 65 63 100">02841 65 63 100</a></strong> oder <strong><a class="luxmaillink" href="mailto:[email protected]">[email protected]</a></strong> 289 </p> 290 </div> 291 292 <div class="xcol-sm-3 col-sm-4 col-sm-offset-2"> 293 <ul class="list-inline list-unstyled pull-right"> 294 295 <li class="nav-background"><a href="anmelden.html">Login</a></li> 296 <li class="nav-background"><a href="konto-erstellen.html">Registrieren</a></li> 297 </ul> 298 </div> 299 </div> 300 </div> 301 </div> 302 <div id="nav-wrap"> 303 <div class="nav-wrap-holder"> 304 <div class="container" id="nav_wrapper"> 305 <nav class="navbar navbar-static-top nav-white"> 306 <div class="navbar-header"> 307 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#Navbar"> 308 <span class="sr-only"> 309 Toggle navigation 310 </span> 311 <span class="icon-bar"> 312 </span> 313 <span class="icon-bar"> 314 </span> 315 <span class="icon-bar"> 316 </span> 317 </button> 318 319 <a class="navbar-brand" id="navbar-brand-lg" href="https://fcggmbh.de/"> 320 <img src="/data/logo/fcg_logo.svg" alt="logo" class="img-responsive"> 321 </a> 322 </div> 323 <div class="collapse navbar-collapse" id="Navbar"> 324 <ul class="nav navbar-nav navbar-right"> 325 <li><a href="immobilien/">Immobilien</a></li><li><a href="referenzimmobilien/">Referenzen</a></li><li><a href="ueber-uns.html">Ãber uns</a></li><li><a href="teammitglieder/">Team</a></li><li><a href="finanzierungen.html">Finanzierungen</a></li><li><a href="kontakt.html">Kontakt</a></li> 326 <li class="visible-xs nav-background"><a href="anmelden.html">Login</a></li> 327 <li class="visible-xs nav-background"><a href="konto-erstellen.html">Registrieren</a></li> 328 </ul> 329 </div> 330 </nav> 331 </div> 332 </div> 333 </div> 334</header> 335 336 <div class="bg-color-dark"> 337 <div class="bg-image overlay" data-image-src="data/header.jpg" > 338 <div class="hero-caption space-xl"> 339 <div class="container"> 340 <div class="row"> 341 <div class="col-sm-12"> 342 <h1 class="font-white" style="text-transform: uppercase; color: white;">Konto erstellen</h1> 343 </div> 344 </div> 345 </div> 346 </div> 347 </div> 348</div> 349 <div class="inner-page"> 350 <div class="container half-half"> 351 <div class="row"> 352 <div class="col-md-6"> 353 <div class="card pad-all"> 354 <h3>Registrierung</h3> 355<div class="subline"></div> 356 357<p><br />Die Registrierung ist <strong>schnell, einfach und für Sie kostenlos</strong>.</p> 358<p>Als registrierter Nutzer haben Sie die Möglichkeit, bequem alle unsere Arbeitsschritte beim Verkauf Ihrer Immobilie einzusehen - <strong>transparent und immer aktuell</strong>.</p> 359<p>Nach Eingabe Ihrer gewünschten Login-Daten, <strong>schalten wir Sie zügig frei</strong> und zeigen Ihnen die ersten Schritte mit unserem System, falls nötig.</p> 360 </div> 361 </div> 362 <div class="col-md-6"> 363 <div class="card pad-all"> 364 365 366<div class="register"> 367 368 <form class="form jqueryValidate" action="konto-erstellen.html" method="post"> 369 <input type="hidden" name="nospam:blank" value="" /> 370 371 <div class="form-group "> 372 <label for="gender">Ihr Geschlecht</label> 373 <select class="form-control required" name="gender" id="gender" placeholder="Bitte auswählen" required> 374 <option value="">Bitte auswählen</option> 375 <option value="1">männlich</option> 376 <option value="2">weiblich</option> 377 <option value="3">divers</option> 378 </select> 379 380 </div> 381 382 <div class="form-group "> 383 <label for="fullname">Ihr Name <span class="text-danger">*</span></label> 384 <input type="text" class="form-control required" name="fullname" id="fullname" value="" placeholder="Vorname Nachname" required /> 385 386 </div> 387 388 <div class="form-group "> 389 <label for="email">Benutzername | E-Mail Adresse <span class="text-danger">*</span></label> 390 <input type="text" class="form-control required email" name="email" id="email" value="" placeholder="[email protected]" required /> 391 392 </div> 393 394 <div class="form-group "> 395 <label for="email">Telefonnummer <span class="text-danger">*</span></label> 396 <input type="text" class="form-control required" name="phone" id="phone" value="" placeholder="Telefonnummer" required /> 397 398 </div> 399 400 <div class="form-group "> 401 <label for="email">Ich bin <span class="text-danger">*</span></label> 402 <select class="form-control required" name="group" id="group" placeholder="Bitte auswählen" required> 403 <option value="">Bitte auswählen</option> 404 <option value="buyer">Kaufinteressent</option> 405 <option value="seller">Verkaufsinteressent</option> 406 </select> 407 408 </div> 409 410 <div class="form-group "> 411 <input type="checkbox" class="required" name="privacy_policy" id="privacy_policy" value="1" required /> 412 <label for="privacy_policy">Ich akzeptiere die Datenschutzvereinbarung <span class="text-danger">*</span></label> 413 414 </div> 415 416 <div class="form-group "> 417 <input type="checkbox" name="subscribe" id="subscribe" value="1" checked /> 418 <label for="subscribe">Zum Newsletter anmelden und exklusive Immobilienangebote zuerst bekommen</label> 419 420 </div> 421 422 423 424 <br class="clear" />
vendor: 70 bytes, lines 424-426
424 425 426 <script src="https://www.google.com/recaptcha/api.js?render=
4266LctRPUUAAAAANhrU5ALYwmUHIBvKd-Zu05KVcH6
vendor: 18 bytes, line 426
426&hl=de"></script>
427<input type="hidden" name="recaptcha-token"> 428<input type="hidden" name="recaptcha-action" value="kontoerstellenhtml">
429<script> 430 grecaptcha.ready(function() { 431 grecaptcha.execute('6LctRPUUAAAAANhrU5ALYwmUHIBvKd-Zu05KVcH6', {action: 'kontoerstellenhtml'}).then(function(token) { 432 document.querySelector('[name="recaptcha-token"]').value = token; 433 }); 434 }); 435</script>
435 436 437 438 439 <div class="form-buttons"> 440 <button type="submit" class="btn btn-default btn-block" name="login-register-btn" value="Zugang beantragen">Zugang beantragen</button> 441 </div> 442 </form> 443</div> 444 </div> 445 </div> 446 </div> 447 </div> 448</div> 449 <style> 450.st0{fill:#D3D3D3;} 451.st1{fill:#FFFFFF;} 452 453#lux-cookie-show-modal-dialog svg{ 454 height:30px; 455 width:30px; 456} 457#lux-cookie-show-modal-dialog span{ 458 display:block; 459 line-height:20px; 460 font-size:10px; 461} 462dialog { 463 position: absolute; 464 left: 0; right: 0; 465 width: -moz-fit-content; 466 width: -webkit-fit-content; 467 width: fit-content; 468 height: -moz-fit-content; 469 height: -webkit-fit-content; 470 height: fit-content; 471 margin: auto; 472 border: solid; 473 padding: 1em; 474 background: white; 475 color: black; 476 display: block; 477} 478 479dialog:not([open]) { 480 display: none; 481} 482 483dialog + .backdrop { 484 position: fixed; 485 top: 0; right: 0; bottom: 0; left: 0; 486 background: rgba(0,0,0,0.1); 487} 488 489._dialog_overlay { 490 position: fixed; 491 top: 0; right: 0; bottom: 0; left: 0; 492} 493 494dialog.fixed { 495 position: fixed; 496 top: 50%; 497 transform: translate(0, -50%); 498} 499 500#lux-cookie-show-modal-dialog { 501 border-radius: 3px; 502 padding: 5px; 503 font-size: 0.95em; 504 border:3px solid #1c2225; 505 color: white; 506 position: fixed; 507 z-index: 1001; 508 bottom: -30px; 509 left: 20px; 510 font-weight: 700; 511 cursor: pointer; 512 font-family: 'Source Sans Variable', 'system-ui', sans-serif; 513 background-color: #1c2225; 514 border-top-color: #ff6600; 515 margin: 0 10px; 516 transition: all .2s ease-in-out; 517 text-shadow: 0 1px 1px rgba(0,0,0,0.2); 518} 519#lux-cookie-show-modal-dialog:hover { 520 bottom: 0px; 521 transition: 0.5s; 522} 523#lux-cookie-dialog { 524 border-radius: 3px; 525 z-index: 1001; 526 position: fixed; 527 top: 0; 528 justify-content: center; 529 align-items: center; 530 width: 100%; 531 background-color: rgba(0, 0, 0, 0.719); 532 height: 100%; 533} 534#lux-cookie-dialog-content { 535 border-radius: 5px; 536 position: absolute; 537 top: calc(50% - 150px); 538 height: 300px; 539 display: flex; 540 justify-content: center; 541 align-items: center; 542 flex-direction: column; 543 left: calc(50% - 325px); 544 background-color: white; 545 width: 650px; 546} 547@media only screen and (max-width: 599px) { 548 #lux-cookie-dialog-content { 549 width: 95%; 550 height: auto; 551 left: 2.5%; 552 } 553 #lux-cookie-dialog { 554 width: 100%; 555 height: 100%; 556 } 557 #lux-cookie-dialog .btn { 558 white-space: unset; 559 } 560 561} 562#lux-cookie-dialog-content h2 { 563 font-family: "Lato"; 564 text-align: center; 565 font-size: 2.142em; 566 font-family: "Lato", sans-serif; 567 letter-spacing: -0.13px; 568 color: #444f50; 569 font-weight: 600; 570 line-height: 1.5; 571 margin: 0 0 15px; 572 text-rendering: optimizeLegibility; 573} 574#lux-cookie-dialog-content p { 575 font-family: "Lato"; 576 padding: 10px 30px; 577 line-height: 26px; 578} 579#lux-cookie-dialog-content div { 580 font-family: "Lato"; 581 display: flex; 582 flex-direction: row; 583 width: 100%; 584 justify-content: space-between; 585} 586#lux-cookie-deny-dialog { 587 border-radius: 3px; 588 padding: 0; 589 height:100%; 590 font-size: 0.95em; 591 color: black; 592 margin: 0 30px; 593 font-family: 'Source Sans Variable', 'system-ui', sans-serif; 594 cursor: pointer; 595 font-weight: 200; 596 transition: all .2s ease-in-out; 597 background-color: white; 598 outline: none; 599} 600#lux-cookie-deny-dialog:hover {
601 color: #ff6600; 602} 603#lux-cookie-accept-dialog { 604 font-family: "Lato"; 605 border-radius: 3px; 606 padding: 10px 0; 607 height:100%; 608 font-size:0.95em; 609 margin: 0 30px; 610 color: white; 611 cursor: pointer; 612 font-weight: 700; 613 outline: none; 614 border:1px solid #ff6600; 615 background-color: #ff6600; 616 transition: all .2s ease-in-out; 617 letter-spacing: 1px; 618 text-transform: uppercase; 619} 620#lux-cookie-accept-dialog:hover { 621 background-color: #ca5100; 622 border:1px solid #ca5100; 623} 624 625@media(max-width:1007px) { 626 #lux-cookie-show-modal-dialog{ 627 bottom: 0px; 628 border-right-color:#ff6600 ; 629 border-left-color:#ff6600 ; 630 } 631 #lux-cookie-show-modal-dialog span{ 632 display:none; 633} 634 #lux-cookie-deny-dialog{ 635 font-size:0.7em; 636 } 637 #lux-cookie-accept-dialog{ 638 font-size:0.7em; 639 } 640} 641</style> 642<dialog id="lux-cookie-dialog"> 643 <div id="lux-cookie-dialog-content"> 644 <h2>Cookie Einstellungen</h2> 645 <p>Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu.</p> 646 <div> 647 <button class="btn btn-primary" id="lux-cookie-accept-dialog">alle Cookies akzeptieren</button> 648 <a id="lux-cookie-deny-dialog">nur notwendige Cookies akzeptieren</a> 649 </div> 650 </div> 651</dialog> 652<button id="lux-cookie-show-modal-dialog"> 653 <svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 654 viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve"> 655 <style type="text/css"> 656 .st0{fill:#D3D3D3;} 657 .st1{fill:#FFFFFF;} 658 </style> 659 <g> 660 <path class="st0" d="M44.17,11.65c-0.03,0.03-0.04,0.06-0.07,0.09c-0.28,0.29-0.63,0.29-0.63,0.29l-0.62,0.1L42.23,12l-0.25-0.18 661 c-0.18-0.12-0.32-0.27-0.43-0.44l-0.03-0.03c-0.01-0.03-0.03-0.04-0.04-0.07c0.56,0.27,1.24,0.43,1.96,0.43 662 C43.69,11.71,43.94,11.69,44.17,11.65z"/> 663 <path class="st0" d="M36.11,10.05c0,0.02-0.02,0.05-0.05,0.07c-0.28,0.3-0.67,0.3-0.67,0.3l-0.62,0.11l-0.64-0.14l-0.25-0.18 664 c-0.18-0.11-0.32-0.28-0.44-0.46L33.4,9.73c-0.14-0.21-0.23-0.44-0.23-0.67l-0.02-0.14C33.92,9.52,34.96,9.91,36.11,10.05z"/> 665 <path class="st1" d="M41.52,3.41C41.5,3.42,41.5,3.44,41.5,3.44s0-0.02-0.02-0.02C41.5,3.41,41.5,3.41,41.52,3.41z"/> 666 <path class="st0" d="M46.26,11.7c-0.07,0.02-0.11,0.02-0.11,0.02l-0.32,0.07l-0.3-0.07l-0.14-0.09c-0.07-0.05-0.14-0.11-0.16-0.18 667 C45.54,11.56,45.89,11.65,46.26,11.7z"/> 668 <path class="st0" d="M42.45,26.77c-0.7-0.38-2.22-1.14-4.71-2.05c-3.48,0.3-5.3,1.25-11.22-3.57c-7.65,0.17-9.09-8.39-9.09-8.39 669 c-2.92-0.17-3.87-2.56-3.87-2.56h-3.02c1.17-0.65,2.35-1.24,3.05-1.49c0.56-0.19,1.27-0.4,2.08-0.6c0.94,1.52,2.51,2.54,4.25,2.76 670 c0.03,0.44,0.11,0.87,0.24,1.3c1.05,3.51,4.7,5.51,8.2,4.52c1.06,3.49,4.73,5.49,8.25,4.46c0.43-0.13,0.84-0.3,1.22-0.51 671 c0.95,1.14,2.32,1.87,3.79,2.03c0.16,0.56,0.29,1.13,0.4,1.7L42.45,26.77z"/> 672 <path class="st1" d="M42.75,28.51l-0.3-1.73c-0.7-0.38-2.22-1.14-4.71-2.05c-3.48,0.3-5.3,1.25-11.22-3.57 673 c-7.65,0.17-9.09-8.4-9.09-8.4c-2.92-0.17-3.87-2.55-3.87-2.55h-3.02c-1.38,0.76-2.78,1.6-3.59,2.08 674 c-0.41,0.25-0.67,0.41-0.67,0.41c-1.06,0.57-1.89,1.48-2.36,2.57l-2.14,4.84l-0.13,0.6L0,28.28l0.14,2.48l0.02,0.17 675 c0.08,1.44,0.36,2.86,0.84,4.21c0.54,1.57,1.33,3.05,2.35,4.36l0.41,0.52c0.89,1.38,1.94,2.65,3.11,3.78 676 c0.79,0.76,1.67,1.48,2.57,2.11l2.62,1.83c0,0,0.6,0.47,0.83,0.57c1.3,0.56,5.53,1.2,5.53,1.2c1.74,0.38,3.54,0.41,5.3,0.09 677 l5.56-1.01c0.13,0,1.81-0.02,3.89-0.81c1.44-0.54,3.08-1.46,4.54-3.02c0.4-0.41,0.75-0.9,1.05-1.41c0.6-0.98,1.09-2.09,1.46-3.11 678 c0-0.02,0.02-0.03,0.02-0.06c0.59-1.65,0.86-2.98,0.86-2.98s0.03-0.03,0.06-0.08c0.35-0.38,1.87-2.25,2.09-4.7 679 C43.29,32,42.82,28.86,42.75,28.51z M10.82,16.54c0.94-0.81,2.35-0.7,3.16,0.24c0.81,0.94,0.71,2.35-0.22,3.16 680 c-0.94,0.81-2.36,0.71-3.17-0.22C9.78,18.78,9.89,17.35,10.82,16.54z M11.71,34.79c-2.81,0.66-5.23-1.8-4.55-4.58 681 c0.32-1.3,1.39-2.37,2.69-2.69c2.78-0.68,5.24,1.74,4.58,4.55C14.12,33.4,13.03,34.48,11.71,34.79z M17.42,44.11 682 c-1.03,0.9-2.6,0.78-3.51-0.25c-0.89-1.03-0.78-2.6,0.25-3.51c1.05-0.89,2.62-0.78,3.51,0.25C18.58,41.65,18.46,43.22,17.42,44.11z 683 M23.92,28.59c-0.65,0.57-1.65,0.51-2.21-0.16c-0.57-0.65-0.51-1.65,0.16-2.21c0.65-0.57,1.63-0.51,2.21,0.16 684 C24.65,27.03,24.57,28.03,23.92,28.59z M31.78,40.55c-1.8,1.89-4.81,1.67-6.31-0.45c-1.01-1.43-0.98-3.44,0.09-4.83 685 c1.81-2.35,5.37-2.08,6.83,0.5C33.25,37.29,32.98,39.28,31.78,40.55z M35.01,30.16c-0.94,0.81-2.35,0.7-3.16-0.24 686 c-0.83-0.94-0.71-2.35,0.22-3.16c0.94-0.81,2.35-0.71,3.16,0.24C36.04,27.94,35.94,29.35,35.01,30.16z"/> 687 <path class="st1" d="M41.52,3.41C41.5,3.42,41.5,3.44,41.5,3.44s0-0.02-0.02-0.02C41.5,3.41,41.5,3.41,41.52,3.41z"/> 688 <path class="st1" d="M41.52,3.41c-0.02,0-0.02,0-0.03,0.02c0.02,0,0.02,0.02,0.02,0.02c-0.05,0.05-0.07,0.07-0.07,0.07 689 s-0.1,0.57-0.37,0.85c-0.27,0.3-0.59,0.39-0.77,0.4c-0.02,0.02-0.02,0.02-0.03,0c-0.37-0.02-0.72-0.08-1.06-0.2 690 c-0.27-0.07-0.54-0.17-0.77-0.28c-0.69-0.35-1.22-0.84-1.56-1.41c0-0.02,0-0.02,0-0.02c0-0.02,0-0.02,0-0.03l-0.02-0.28V2.52 691 l0.2-0.9l0.23-0.55c0.05-0.12,0.15-0.22,0.27-0.28c0,0,0.59-0.37,0.8-0.44c0.22-0.08,0.69-0.17,0.92-0.17c0.02,0,0.05,0,0.05,0.02
692 c0.08,0.02,0.17,0.03,0.25,0.07c0.49,0.12,0.92,0.33,1.32,0.6C40.95,0.9,40.98,0.91,41,0.95l0.25,0.4c0.15,0.22,0.25,0.47,0.3,0.74 693 l0.07,0.47c0.02,0.03,0.07,0.39,0.07,0.44C41.67,3.17,41.59,3.32,41.52,3.41z"/> 694 <path class="st1" d="M36.47,9.17c-0.02,0.21-0.16,0.37-0.16,0.37s-0.05,0.32-0.21,0.51c-1.15-0.14-2.18-0.53-2.96-1.13V8.85 695 l0.14-0.62l0.16-0.39c0.05-0.07,0.11-0.14,0.18-0.18c0,0,0.41-0.25,0.57-0.32c0.14-0.05,0.46-0.11,0.62-0.11 696 c0.02,0,0.05,0.02,0.05,0.02c0.39,0.07,0.76,0.23,1.08,0.46c0.02,0.02,0.05,0.05,0.07,0.07l0.16,0.28 697 c0.11,0.14,0.18,0.32,0.21,0.51l0.07,0.32C36.45,8.9,36.5,9.13,36.47,9.17z"/> 698 <path class="st1" d="M33.72,3.62c-0.02,0.21-0.16,0.37-0.16,0.37s-0.09,0.39-0.28,0.6c-0.21,0.23-0.48,0.28-0.6,0.28 699 c-0.41-0.02-0.83-0.11-1.19-0.25c-0.25-0.07-0.51-0.16-0.73-0.28c-0.05-0.02-0.07-0.07-0.09-0.11l-0.02-0.05 700 c-0.14-0.18-0.23-0.41-0.25-0.67V3.3l0.14-0.62l0.16-0.37c0.05-0.09,0.09-0.16,0.18-0.21c0,0,0.41-0.25,0.55-0.3 701 c0.16-0.07,0.48-0.14,0.64-0.11c0,0,0.02,0,0.05,0c0.39,0.09,0.76,0.25,1.08,0.46c0.02,0.02,0.05,0.05,0.07,0.07l0.11,0.21 702 l0.05,0.07c0.09,0.16,0.16,0.32,0.21,0.51l0.05,0.32C33.69,3.34,33.72,3.59,33.72,3.62z"/> 703 <path class="st0" d="M32.68,4.86c-0.02,0.02-0.05,0.02-0.05,0.02L32,4.99l-0.57-0.14h-0.05l-0.25-0.18 704 c-0.14-0.11-0.28-0.21-0.37-0.34c0.23,0.11,0.48,0.21,0.73,0.28C31.86,4.74,32.27,4.83,32.68,4.86z"/> 705 <path class="st0" d="M40.26,4.76c-0.07,0.02-0.12,0.02-0.13,0.02l-0.92,0.17l-0.3-0.07l-0.6-0.13l-0.35-0.22L37.92,4.5 706 c-0.25-0.18-0.47-0.4-0.64-0.67l-0.05-0.05c-0.2-0.27-0.32-0.59-0.35-0.9c0.33,0.57,0.87,1.06,1.56,1.41 707 c0.23,0.12,0.5,0.22,0.77,0.28C39.54,4.68,39.89,4.75,40.26,4.76z"/> 708 <path class="st1" d="M41.52,3.41C41.5,3.42,41.5,3.44,41.5,3.44s0-0.02-0.02-0.02C41.5,3.41,41.5,3.41,41.52,3.41z"/> 709 <path class="st1" d="M44.51,10.81c-0.01,0.21-0.16,0.37-0.16,0.37s-0.01,0.1-0.07,0.24c-0.03,0.07-0.06,0.16-0.1,0.24 710 c-0.24,0.04-0.49,0.06-0.74,0.06c-0.72,0-1.4-0.16-1.96-0.43c-0.12-0.18-0.19-0.37-0.21-0.57V10.5l0.13-0.6l0.15-0.37 711 c0.04-0.09,0.1-0.15,0.19-0.19c0,0,0.4-0.25,0.54-0.29c0.1-0.04,0.28-0.07,0.43-0.1c0.07-0.01,0.15-0.01,0.19-0.01 712 c0,0,0.03,0,0.03,0.01c0.09,0.01,0.18,0.04,0.27,0.07c0.28,0.07,0.54,0.22,0.8,0.38c0.03,0.01,0.04,0.03,0.06,0.06l0.16,0.27 713 c0.1,0.15,0.18,0.31,0.21,0.49l0.06,0.31C44.48,10.55,44.51,10.78,44.51,10.81z"/> 714 <path class="st1" d="M46.67,11.13c-0.02,0.09-0.09,0.18-0.09,0.18s-0.02,0.18-0.11,0.28c-0.07,0.07-0.14,0.09-0.18,0.11h-0.02 715 c-0.37-0.05-0.71-0.14-1.03-0.25H45.2c0,0-0.02-0.02-0.02-0.05l-0.02-0.02c-0.05-0.07-0.09-0.16-0.11-0.25v-0.07l-0.02-0.09 716 l0.07-0.32l0.09-0.18c0.02-0.02,0.05-0.07,0.09-0.09c0,0,0.21-0.11,0.28-0.14c0.07-0.05,0.23-0.07,0.3-0.07c0.02,0,0.02,0,0.02,0 717 c0.21,0.05,0.39,0.14,0.55,0.23c0,0.02,0,0.02,0.02,0.05l0.02,0.05l0.05,0.09c0.07,0.07,0.09,0.16,0.11,0.23l0.02,0.16 718 C46.65,10.99,46.67,11.1,46.67,11.13z"/> 719 <path class="st1" d="M50,5.73c-0.02,0.21-0.16,0.37-0.16,0.37s-0.05,0.16-0.11,0.32c-0.41,0-0.83-0.05-1.22-0.14V6.26 720 c-0.67-0.09-1.29-0.32-1.84-0.62V5.41l0.14-0.64l0.16-0.37c0.05-0.09,0.09-0.16,0.18-0.21c0,0,0.41-0.25,0.55-0.3 721 c0.16-0.05,0.48-0.11,0.64-0.11c0,0,0.02,0,0.05,0.02c0.39,0.07,0.76,0.23,1.08,0.46l0.07,0.07l0.16,0.25 722 c0.09,0.16,0.16,0.34,0.21,0.53l0.05,0.32C49.98,5.45,50,5.68,50,5.73z"/> 723 <path class="st0" d="M49.72,6.42c-0.05,0.09-0.09,0.18-0.16,0.25c-0.28,0.3-0.64,0.3-0.64,0.3L48.6,7.04l-0.32,0.05l-0.62-0.14 724 l-0.28-0.18c-0.16-0.11-0.32-0.28-0.44-0.46l-0.02-0.02c-0.14-0.21-0.23-0.41-0.25-0.64c0.55,0.3,1.17,0.53,1.84,0.62v0.02 725 C48.9,6.37,49.31,6.42,49.72,6.42z"/> 726 </g> 727 </svg> 728 <span>Cookie Einstellungen</span> 729</button>
730<script> 731(function (global, factory) { 732 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 733 typeof define === 'function' && define.amd ? define(factory) : 734 (global = global || self, global.dialogPolyfill = factory()); 735}(this, function () { 'use strict'; 736 737 // nb. This is for IE10 and lower _only_. 738 var supportCustomEvent = window.CustomEvent; 739 if (!supportCustomEvent || typeof supportCustomEvent === 'object') { 740 supportCustomEvent = function CustomEvent(event, x) { 741 x = x || {}; 742 var ev = document.createEvent('CustomEvent'); 743 ev.initCustomEvent(event, !!x.bubbles, !!x.cancelable, x.detail || null); 744 return ev; 745 }; 746 supportCustomEvent.prototype = window.Event.prototype; 747 } 748 749 /** 750 * @param {Element} el to check for stacking context 751 * @return {boolean} whether this el or its parents creates a stacking context 752 */ 753 function createsStackingContext(el) { 754 while (el && el !== document.body) { 755 var s = window.getComputedStyle(el); 756 var invalid = function(k, ok) { 757 return !(s[k] === undefined || s[k] === ok); 758 }; 759 760 if (s.opacity < 1 || 761 invalid('zIndex', 'auto') || 762 invalid('transform', 'none') || 763 invalid('mixBlendMode', 'normal') || 764 invalid('filter', 'none') || 765 invalid('perspective', 'none') || 766 s['isolation'] === 'isolate' || 767 s.position === 'fixed' || 768 s.webkitOverflowScrolling === 'touch') { 769 return true; 770 } 771 el = el.parentElement; 772 } 773 return false; 774 } 775 776 /** 777 * Finds the nearest <dialog> from the passed element. 778 * 779 * @param {Element} el to search from 780 * @return {HTMLDialogElement} dialog found 781 */ 782 function findNearestDialog(el) { 783 while (el) { 784 if (el.localName === 'dialog') { 785 return /** @type {HTMLDialogElement} */ (el); 786 } 787 el = el.parentElement; 788 } 789 return null; 790 } 791 792 /** 793 * Blur the specified element, as long as it's not the HTML body element. 794 * This works around an IE9/10 bug - blurring the body causes Windows to 795 * blur the whole application. 796 * 797 * @param {Element} el to blur 798 */ 799 function safeBlur(el) { 800 if (el && el.blur && el !== document.body) { 801 el.blur(); 802 } 803 } 804 805 /** 806 * @param {!NodeList} nodeList to search 807 * @param {Node} node to find 808 * @return {boolean} whether node is inside nodeList 809 */ 810 function inNodeList(nodeList, node) { 811 for (var i = 0; i < nodeList.length; ++i) { 812 if (nodeList[i] === node) { 813 return true; 814 } 815 } 816 return false; 817 } 818 819 /** 820 * @param {HTMLFormElement} el to check 821 * @return {boolean} whether this form has method="dialog" 822 */ 823 function isFormMethodDialog(el) { 824 if (!el || !el.hasAttribute('method')) { 825 return false; 826 } 827 return el.getAttribute('method').toLowerCase() === 'dialog'; 828 } 829 830 /** 831 * @param {!HTMLDialogElement} dialog to upgrade 832 * @constructor 833 */ 834 function dialogPolyfillInfo(dialog) { 835 this.dialog_ = dialog; 836 this.replacedStyleTop_ = false; 837 this.openAsModal_ = false; 838 839 // Set a11y role. Browsers that support dialog implicitly know this already. 840 if (!dialog.hasAttribute('role')) { 841 dialog.setAttribute('role', 'dialog'); 842 } 843 844 dialog.show = this.show.bind(this); 845 dialog.showModal = this.showModal.bind(this); 846 dialog.close = this.close.bind(this); 847 848 if (!('returnValue' in dialog)) { 849 dialog.returnValue = ''; 850 } 851 852 if ('MutationObserver' in window) { 853 var mo = new MutationObserver(this.maybeHideModal.bind(this)); 854 mo.observe(dialog, {attributes: true, attributeFilter: ['open']}); 855 } else { 856 // IE10 and below support. Note that DOMNodeRemoved etc fire _before_ removal. They also 857 // seem to fire even if the element was removed as part of a parent removal. Use the removed 858 // events to force downgrade (useful if removed/immediately added). 859 var removed = false; 860 var cb = function() { 861 removed ? this.downgradeModal() : this.maybeHideModal(); 862 removed = false;
863 }.bind(this); 864 var timeout; 865 var delayModel = function(ev) { 866 if (ev.target !== dialog) { return; } // not for a child element 867 var cand = 'DOMNodeRemoved'; 868 removed |= (ev.type.substr(0, cand.length) === cand); 869 window.clearTimeout(timeout); 870 timeout = window.setTimeout(cb, 0); 871 }; 872 ['DOMAttrModified', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument'].forEach(function(name) { 873 dialog.addEventListener(name, delayModel); 874 }); 875 } 876 // Note that the DOM is observed inside DialogManager while any dialog 877 // is being displayed as a modal, to catch modal removal from the DOM. 878 879 Object.defineProperty(dialog, 'open', { 880 set: this.setOpen.bind(this), 881 get: dialog.hasAttribute.bind(dialog, 'open') 882 }); 883 884 this.backdrop_ = document.createElement('div'); 885 this.backdrop_.className = 'backdrop'; 886 this.backdrop_.addEventListener('click', this.backdropClick_.bind(this)); 887 } 888 889 dialogPolyfillInfo.prototype = { 890 891 get dialog() { 892 return this.dialog_; 893 }, 894 895 /** 896 * Maybe remove this dialog from the modal top layer. This is called when 897 * a modal dialog may no longer be tenable, e.g., when the dialog is no 898 * longer open or is no longer part of the DOM. 899 */ 900 maybeHideModal: function() { 901 if (this.dialog_.hasAttribute('open') && document.body.contains(this.dialog_)) { return; } 902 this.downgradeModal(); 903 }, 904 905 /** 906 * Remove this dialog from the modal top layer, leaving it as a non-modal. 907 */ 908 downgradeModal: function() { 909 if (!this.openAsModal_) { return; } 910 this.openAsModal_ = false; 911 this.dialog_.style.zIndex = ''; 912 913 // This won't match the native <dialog> exactly because if the user set top on a centered 914 // polyfill dialog, that top gets thrown away when the dialog is closed. Not sure it's 915 // possible to polyfill this perfectly. 916 if (this.replacedStyleTop_) { 917 this.dialog_.style.top = ''; 918 this.replacedStyleTop_ = false; 919 } 920 921 // Clear the backdrop and remove from the manager. 922 this.backdrop_.parentNode && this.backdrop_.parentNode.removeChild(this.backdrop_); 923 dialogPolyfill.dm.removeDialog(this); 924 }, 925 926 /** 927 * @param {boolean} value whether to open or close this dialog 928 */ 929 setOpen: function(value) { 930 if (value) { 931 this.dialog_.hasAttribute('open') || this.dialog_.setAttribute('open', ''); 932 } else { 933 this.dialog_.removeAttribute('open'); 934 this.maybeHideModal(); // nb. redundant with MutationObserver 935 } 936 }, 937 938 /** 939 * Handles clicks on the fake .backdrop element, redirecting them as if 940 * they were on the dialog itself. 941 * 942 * @param {!Event} e to redirect 943 */ 944 backdropClick_: function(e) { 945 if (!this.dialog_.hasAttribute('tabindex')) { 946 // Clicking on the backdrop should move the implicit cursor, even if dialog cannot be 947 // focused. Create a fake thing to focus on. If the backdrop was _before_ the dialog, this 948 // would not be needed - clicks would move the implicit cursor there. 949 var fake = document.createElement('div'); 950 this.dialog_.insertBefore(fake, this.dialog_.firstChild); 951 fake.tabIndex = -1; 952 fake.focus(); 953 this.dialog_.removeChild(fake); 954 } else { 955 this.dialog_.focus(); 956 } 957 958 var redirectedEvent = document.createEvent('MouseEvents'); 959 redirectedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, window, 960 e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, 961 e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget); 962 this.dialog_.dispatchEvent(redirectedEvent); 963 e.stopPropagation(); 964 }, 965 966 /** 967 * Focuses on the first focusable element within the dialog. This will always blur the current 968 * focus, even if nothing within the dialog is found. 969 */ 970 focus_: function() { 971 // Find element with `autofocus` attribute, or fall back to the first form/tabindex control. 972 var target = this.dialog_.querySelector('[autofocus]:not([disabled])'); 973 if (!target && this.dialog_.tabIndex >= 0) { 974 target = this.dialog_; 975 } 976 if (!target) { 977 // Note that this is 'any focusable area'. This list is probably not exhaustive, but the 978 // alternative involves stepping through and trying to focus everything. 979 var opts = ['button', 'input', 'keygen', 'select', 'textarea']; 980 var query = opts.map(function(el) { 981 return el + ':not([disabled])'; 982 }); 983 // TODO(samthor): tabindex values that are not numeric are not focusable.
984 query.push('[tabindex]:not([disabled]):not([tabindex=""])'); // tabindex != "", not disabled 985 target = this.dialog_.querySelector(query.join(', ')); 986 } 987 safeBlur(document.activeElement); 988 target && target.focus(); 989 }, 990 991 /** 992 * Sets the zIndex for the backdrop and dialog. 993 * 994 * @param {number} dialogZ 995 * @param {number} backdropZ 996 */ 997 updateZIndex: function(dialogZ, backdropZ) { 998 if (dialogZ < backdropZ) { 999 throw new Error('dialogZ should never be < backdropZ'); 1000 } 1001 this.dialog_.style.zIndex = dialogZ; 1002 this.backdrop_.style.zIndex = backdropZ; 1003 }, 1004 1005 /** 1006 * Shows the dialog. If the dialog is already open, this does nothing. 1007 */ 1008 show: function() { 1009 if (!this.dialog_.open) { 1010 this.setOpen(true); 1011 this.focus_(); 1012 } 1013 }, 1014 1015 /** 1016 * Show this dialog modally. 1017 */ 1018 showModal: function() { 1019 if (this.dialog_.hasAttribute('open')) { 1020 throw new Error('Failed to execute \'showModal\' on dialog: The element is already open, and therefore cannot be opened modally.'); 1021 } 1022 if (!document.body.contains(this.dialog_)) { 1023 throw new Error('Failed to execute \'showModal\' on dialog: The element is not in a Document.'); 1024 } 1025 if (!dialogPolyfill.dm.pushDialog(this)) { 1026 throw new Error('Failed to execute \'showModal\' on dialog: There are too many open modal dialogs.'); 1027 } 1028 1029 if (createsStackingContext(this.dialog_.parentElement)) { 1030 console.warn('A dialog is being shown inside a stacking context. ' + 1031 'This may cause it to be unusable. For more information, see this link: ' + 1032 'https://github.com/GoogleChrome/dialog-polyfill/#stacking-context'); 1033 } 1034 1035 this.setOpen(true); 1036 this.openAsModal_ = true; 1037 1038 // Optionally center vertically, relative to the current viewport. 1039 if (dialogPolyfill.needsCentering(this.dialog_)) { 1040 dialogPolyfill.reposition(this.dialog_); 1041 this.replacedStyleTop_ = true; 1042 } else { 1043 this.replacedStyleTop_ = false; 1044 } 1045 1046 // Insert backdrop. 1047 this.dialog_.parentNode.insertBefore(this.backdrop_, this.dialog_.nextSibling); 1048 1049 // Focus on whatever inside the dialog. 1050 this.focus_(); 1051 }, 1052 1053 /** 1054 * Closes this HTMLDialogElement. This is optional vs clearing the open 1055 * attribute, however this fires a 'close' event. 1056 * 1057 * @param {string=} opt_returnValue to use as the returnValue 1058 */ 1059 close: function(opt_returnValue) { 1060 if (!this.dialog_.hasAttribute('open')) { 1061 throw new Error('Failed to execute \'close\' on dialog: The element does not have an \'open\' attribute, and therefore cannot be closed.'); 1062 } 1063 this.setOpen(false); 1064 1065 // Leave returnValue untouched in case it was set directly on the element 1066 if (opt_returnValue !== undefined) { 1067 this.dialog_.returnValue = opt_returnValue; 1068 } 1069 1070 // Triggering "close" event for any attached listeners on the <dialog>. 1071 var closeEvent = new supportCustomEvent('close', { 1072 bubbles: false, 1073 cancelable: false 1074 }); 1075 1076 // If we have an onclose handler assigned and it's a function, call it 1077 if(this.dialog_.onclose instanceof Function) { 1078 this.dialog_.onclose(closeEvent); 1079 } 1080 1081 // Dispatch the event as normal 1082 this.dialog_.dispatchEvent(closeEvent); 1083 1084 } 1085 1086 }; 1087 1088 var dialogPolyfill = {}; 1089 1090 dialogPolyfill.reposition = function(element) { 1091 var scrollTop = document.body.scrollTop || document.documentElement.scrollTop; 1092 var topValue = scrollTop + (window.innerHeight - element.offsetHeight) / 2; 1093 element.style.top = Math.max(scrollTop, topValue) + 'px'; 1094 }; 1095 1096 dialogPolyfill.isInlinePositionSetByStylesheet = function(element) { 1097 for (var i = 0; i < document.styleSheets.length; ++i) { 1098 var styleSheet = document.styleSheets[i]; 1099 var cssRules = null; 1100 // Some browsers throw on cssRules. 1101 try { 1102 cssRules = styleSheet.cssRules; 1103 } catch (e) {} 1104 if (!cssRules) { continue; } 1105 for (var j = 0; j < cssRules.length; ++j) { 1106 var rule = cssRules[j]; 1107 var selectedNodes = null;
vendor: 10,770 bytes, lines 1108-1418
1108 // Ignore errors on invalid selector texts. 1109 try { 1110 selectedNodes = document.querySelectorAll(rule.selectorText); 1111 } catch(e) {} 1112 if (!selectedNodes || !inNodeList(selectedNodes, element)) { 1113 continue; 1114 } 1115 var cssTop = rule.style.getPropertyValue('top'); 1116 var cssBottom = rule.style.getPropertyValue('bottom'); 1117 if ((cssTop && cssTop !== 'auto') || (cssBottom && cssBottom !== 'auto')) { 1118 return true; 1119 } 1120 } 1121 } 1122 return false; 1123 }; 1124 1125 dialogPolyfill.needsCentering = function(dialog) { 1126 var computedStyle = window.getComputedStyle(dialog); 1127 if (computedStyle.position !== 'absolute') { 1128 return false; 1129 } 1130 1131 // We must determine whether the top/bottom specified value is non-auto. In 1132 // WebKit/Blink, checking computedStyle.top == 'auto' is sufficient, but 1133 // Firefox returns the used value. So we do this crazy thing instead: check 1134 // the inline style and then go through CSS rules. 1135 if ((dialog.style.top !== 'auto' && dialog.style.top !== '') || 1136 (dialog.style.bottom !== 'auto' && dialog.style.bottom !== '')) { 1137 return false; 1138 } 1139 return !dialogPolyfill.isInlinePositionSetByStylesheet(dialog); 1140 }; 1141 1142 /** 1143 * @param {!Element} element to force upgrade 1144 */ 1145 dialogPolyfill.forceRegisterDialog = function(element) { 1146 if (window.HTMLDialogElement || element.showModal) { 1147 console.warn('This browser already supports <dialog>, the polyfill ' + 1148 'may not work correctly', element); 1149 } 1150 if (element.localName !== 'dialog') { 1151 throw new Error('Failed to register dialog: The element is not a dialog.'); 1152 } 1153 new dialogPolyfillInfo(/** @type {!HTMLDialogElement} */ (element)); 1154 }; 1155 1156 /** 1157 * @param {!Element} element to upgrade, if necessary 1158 */ 1159 dialogPolyfill.registerDialog = function(element) { 1160 if (!element.showModal) { 1161 dialogPolyfill.forceRegisterDialog(element); 1162 } 1163 }; 1164 1165 /** 1166 * @constructor 1167 */ 1168 dialogPolyfill.DialogManager = function() { 1169 /** @type {!Array<!dialogPolyfillInfo>} */ 1170 this.pendingDialogStack = []; 1171 1172 var checkDOM = this.checkDOM_.bind(this); 1173 1174 // The overlay is used to simulate how a modal dialog blocks the document. 1175 // The blocking dialog is positioned on top of the overlay, and the rest of 1176 // the dialogs on the pending dialog stack are positioned below it. In the 1177 // actual implementation, the modal dialog stacking is controlled by the 1178 // top layer, where z-index has no effect. 1179 this.overlay = document.createElement('div'); 1180 this.overlay.className = '_dialog_overlay'; 1181 this.overlay.addEventListener('click', function(e) { 1182 this.forwardTab_ = undefined; 1183 e.stopPropagation(); 1184 checkDOM([]); // sanity-check DOM 1185 }.bind(this)); 1186 1187 this.handleKey_ = this.handleKey_.bind(this); 1188 this.handleFocus_ = this.handleFocus_.bind(this); 1189 1190 this.zIndexLow_ = 100000; 1191 this.zIndexHigh_ = 100000 + 150; 1192 1193 this.forwardTab_ = undefined; 1194 1195 if ('MutationObserver' in window) { 1196 this.mo_ = new MutationObserver(function(records) { 1197 var removed = []; 1198 records.forEach(function(rec) { 1199 for (var i = 0, c; c = rec.removedNodes[i]; ++i) { 1200 if (!(c instanceof Element)) { 1201 continue; 1202 } else if (c.localName === 'dialog') { 1203 removed.push(c); 1204 } 1205 removed = removed.concat(c.querySelectorAll('dialog')); 1206 } 1207 }); 1208 removed.length && checkDOM(removed); 1209 }); 1210 } 1211 }; 1212 1213 /** 1214 * Called on the first modal dialog being shown. Adds the overlay and related 1215 * handlers. 1216 */ 1217 dialogPolyfill.DialogManager.prototype.blockDocument = function() { 1218 document.documentElement.addEventListener('focus', this.handleFocus_, true); 1219 document.addEventListener('keydown', this.handleKey_); 1220 this.mo_ && this.mo_.observe(document, {childList: true, subtree: true}); 1221 }; 1222 1223 /** 1224 * Called on the first modal dialog being removed, i.e., when no more modal 1225 * dialogs are visible. 1226 */ 1227 dialogPolyfill.DialogManager.prototype.unblockDocument = function() { 1228 document.documentElement.removeEventListener('focus', this.handleFocus_, true); 1229 document.removeEventListener('keydown', this.handleKey_); 1230 this.mo_ && this.mo_.disconnect(); 1231 }; 1232 1233 /** 1234 * Updates the stacking of all known dialogs. 1235 */ 1236 dialogPolyfill.DialogManager.prototype.updateStacking = function() { 1237 var zIndex = this.zIndexHigh_; 1238 1239 for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) { 1240 dpi.updateZIndex(--zIndex, --zIndex); 1241 if (i === 0) { 1242 this.overlay.style.zIndex = --zIndex; 1243 } 1244 } 1245 1246 // Make the overlay a sibling of the dialog itself. 1247 var last = this.pendingDialogStack[0]; 1248 if (last) { 1249 var p = last.dialog.parentNode || document.body; 1250 p.appendChild(this.overlay); 1251 } else if (this.overlay.parentNode) { 1252 this.overlay.parentNode.removeChild(this.overlay); 1253 } 1254 }; 1255 1256 /** 1257 * @param {Element} candidate to check if contained or is the top-most modal dialog 1258 * @return {boolean} whether candidate is contained in top dialog 1259 */ 1260 dialogPolyfill.DialogManager.prototype.containedByTopDialog_ = function(candidate) { 1261 while (candidate = findNearestDialog(candidate)) { 1262 for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) { 1263 if (dpi.dialog === candidate) { 1264 return i === 0; // only valid if top-most 1265 } 1266 } 1267 candidate = candidate.parentElement; 1268 } 1269 return false; 1270 }; 1271 1272 dialogPolyfill.DialogManager.prototype.handleFocus_ = function(event) { 1273 if (this.containedByTopDialog_(event.target)) { return; } 1274 1275 if (document.activeElement === document.documentElement) { return; } 1276 1277 event.preventDefault(); 1278 event.stopPropagation(); 1279 safeBlur(/** @type {Element} */ (event.target)); 1280 1281 if (this.forwardTab_ === undefined) { return; } // move focus only from a tab key 1282 1283 var dpi = this.pendingDialogStack[0]; 1284 var dialog = dpi.dialog; 1285 var position = dialog.compareDocumentPosition(event.target); 1286 if (position & Node.DOCUMENT_POSITION_PRECEDING) { 1287 if (this.forwardTab_) { 1288 // forward 1289 dpi.focus_(); 1290 } else if (event.target !== document.documentElement) { 1291 // backwards if we're not already focused on <html> 1292 document.documentElement.focus(); 1293 } 1294 } 1295 1296 return false; 1297 }; 1298 1299 dialogPolyfill.DialogManager.prototype.handleKey_ = function(event) { 1300 this.forwardTab_ = undefined; 1301 if (event.keyCode === 27) { 1302 event.preventDefault(); 1303 event.stopPropagation(); 1304 var cancelEvent = new supportCustomEvent('cancel', { 1305 bubbles: false, 1306 cancelable: true 1307 }); 1308 var dpi = this.pendingDialogStack[0]; 1309 if (dpi && dpi.dialog.dispatchEvent(cancelEvent)) { 1310 dpi.dialog.close(); 1311 } 1312 } else if (event.keyCode === 9) { 1313 this.forwardTab_ = !event.shiftKey; 1314 } 1315 }; 1316 1317 /** 1318 * Finds and downgrades any known modal dialogs that are no longer displayed. Dialogs that are 1319 * removed and immediately readded don't stay modal, they become normal. 1320 * 1321 * @param {!Array<!HTMLDialogElement>} removed that have definitely been removed 1322 */ 1323 dialogPolyfill.DialogManager.prototype.checkDOM_ = function(removed) { 1324 // This operates on a clone because it may cause it to change. Each change also calls 1325 // updateStacking, which only actually needs to happen once. But who removes many modal dialogs 1326 // at a time?! 1327 var clone = this.pendingDialogStack.slice(); 1328 clone.forEach(function(dpi) { 1329 if (removed.indexOf(dpi.dialog) !== -1) { 1330 dpi.downgradeModal(); 1331 } else { 1332 dpi.maybeHideModal(); 1333 } 1334 }); 1335 }; 1336 1337 /** 1338 * @param {!dialogPolyfillInfo} dpi 1339 * @return {boolean} whether the dialog was allowed 1340 */ 1341 dialogPolyfill.DialogManager.prototype.pushDialog = function(dpi) { 1342 var allowed = (this.zIndexHigh_ - this.zIndexLow_) / 2 - 1; 1343 if (this.pendingDialogStack.length >= allowed) { 1344 return false; 1345 } 1346 if (this.pendingDialogStack.unshift(dpi) === 1) { 1347 this.blockDocument(); 1348 } 1349 this.updateStacking(); 1350 return true; 1351 }; 1352 1353 /** 1354 * @param {!dialogPolyfillInfo} dpi 1355 */ 1356 dialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) { 1357 var index = this.pendingDialogStack.indexOf(dpi); 1358 if (index === -1) { return; } 1359 1360 this.pendingDialogStack.splice(index, 1); 1361 if (this.pendingDialogStack.length === 0) { 1362 this.unblockDocument(); 1363 } 1364 this.updateStacking(); 1365 }; 1366 1367 dialogPolyfill.dm = new dialogPolyfill.DialogManager(); 1368 dialogPolyfill.formSubmitter = null; 1369 dialogPolyfill.useValue = null; 1370 1371 /** 1372 * Installs global handlers, such as click listers and native method overrides. These are needed 1373 * even if a no dialog is registered, as they deal with <form method="dialog">. 1374 */ 1375 if (window.HTMLDialogElement === undefined) { 1376 1377 /** 1378 * If HTMLFormElement translates method="DIALOG" into 'get', then replace the descriptor with 1379 * one that returns the correct value. 1380 */ 1381 var testForm = document.createElement('form'); 1382 testForm.setAttribute('method', 'dialog'); 1383 if (testForm.method !== 'dialog') { 1384 var methodDescriptor = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, 'method'); 1385 if (methodDescriptor) { 1386 // nb. Some older iOS and older PhantomJS fail to return the descriptor. Don't do anything 1387 // and don't bother to update the element. 1388 var realGet = methodDescriptor.get; 1389 methodDescriptor.get = function() { 1390 if (isFormMethodDialog(this)) { 1391 return 'dialog'; 1392 } 1393 return realGet.call(this); 1394 }; 1395 var realSet = methodDescriptor.set; 1396 methodDescriptor.set = function(v) { 1397 if (typeof v === 'string' && v.toLowerCase() === 'dialog') { 1398 return this.setAttribute('method', v); 1399 } 1400 return realSet.call(this, v); 1401 }; 1402 Object.defineProperty(HTMLFormElement.prototype, 'method', methodDescriptor); 1403 } 1404 } 1405 1406 /** 1407 * Global 'click' handler, to capture the <input type="submit"> or <button> element which has 1408 * submitted a <form method="dialog">. Needed as Safari and others don't report this inside 1409 * document.activeElement. 1410 */ 1411 document.addEventListener('click', function(ev) { 1412 dialogPolyfill.formSubmitter = null; 1413 dialogPolyfill.useValue = null; 1414 if (ev.defaultPrevented) { return; } // e.g. a submit which prevents default submission 1415 1416 var target = /** @type {Element} */ (ev.target); 1417 if (!target || !isFormMethodDialog(target.form)) { return; } 1418
1419 var valid = (target.type === 'submit' && ['button', 'input'].indexOf(target.localName) > -1); 1420 if (!valid) { 1421 if (!(target.localName === 'input' && target.type === 'image')) { return; } 1422 // this is a <input type="image">, which can submit forms 1423 dialogPolyfill.useValue = ev.offsetX + ',' + ev.offsetY; 1424 } 1425 1426 var dialog = findNearestDialog(target); 1427 if (!dialog) { return; } 1428 1429 dialogPolyfill.formSubmitter = target; 1430 1431 }, false); 1432 1433 /** 1434 * Replace the native HTMLFormElement.submit() method, as it won't fire the 1435 * submit event and give us a chance to respond. 1436 */ 1437 var nativeFormSubmit = HTMLFormElement.prototype.submit; 1438 var replacementFormSubmit = function () { 1439 if (!isFormMethodDialog(this)) { 1440 return nativeFormSubmit.call(this); 1441 } 1442 var dialog = findNearestDialog(this); 1443 dialog && dialog.close(); 1444 }; 1445 HTMLFormElement.prototype.submit = replacementFormSubmit; 1446 1447 /** 1448 * Global form 'dialog' method handler. Closes a dialog correctly on submit 1449 * and possibly sets its return value. 1450 */ 1451 document.addEventListener('submit', function(ev) { 1452 if (ev.defaultPrevented) { return; } // e.g. a submit which prevents default submission 1453 1454 var form = /** @type {HTMLFormElement} */ (ev.target); 1455 if (!isFormMethodDialog(form)) { return; } 1456 ev.preventDefault(); 1457 1458 var dialog = findNearestDialog(form); 1459 if (!dialog) { return; } 1460 1461 // Forms can only be submitted via .submit() or a click (?), but anyway: sanity-check that 1462 // the submitter is correct before using its value as .returnValue. 1463 var s = dialogPolyfill.formSubmitter; 1464 if (s && s.form === form) { 1465 dialog.close(dialogPolyfill.useValue || s.value); 1466 } else { 1467 dialog.close(); 1468 } 1469 dialogPolyfill.formSubmitter = null; 1470 1471 }, false); 1472 } 1473 1474 return dialogPolyfill; 1475 1476})); 1477</script>
vendor: 1 bytes, line 1477
1477
1478<script> 1479(function() { 1480 function getCookie(name) { 1481 var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); 1482 return v ? v[2] : null; 1483 } 1484 1485 function setCookie(name, value, days) { 1486 var d = new Date; 1487 d.setTime(d.getTime() + 24*60*60*1000*days); 1488 document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString(); 1489 } 1490 1491 function deleteCookie(name) { setCookie(name, '', -1); } 1492 1493 const lux_cookie_consent_status = getCookie('lux_cookie_consent_status'); 1494 var lux_cookie_dialog = document.getElementById("lux-cookie-dialog"); 1495 1496 dialogPolyfill.registerDialog(lux_cookie_dialog); 1497 1498 if ( lux_cookie_consent_status === null || lux_cookie_consent_status === 'unset') { 1499 if ( lux_cookie_consent_status === null ) { 1500 setCookie('lux_cookie_consent_status', 'unset', 365); 1501 } 1502 lux_cookie_dialog.showModal(); 1503 } 1504 1505 lux_cookie_dialog.addEventListener('cancel', function(ev) { 1506 ev.preventDefault(); 1507 }); 1508 1509 document.getElementById("lux-cookie-show-modal-dialog").addEventListener("click", () => { 1510 lux_cookie_dialog.showModal(); 1511 }); 1512 document.getElementById("lux-cookie-accept-dialog").addEventListener("click", () => { 1513 setCookie('lux_cookie_consent_status', 'accept', 365); 1514 lux_cookie_dialog.close(); 1515 location.reload(); 1516 }); 1517 document.getElementById("lux-cookie-deny-dialog").addEventListener("click", () => { 1518 setCookie('lux_cookie_consent_status', 'deny', 365); 1519 lux_cookie_dialog.close(); 1520 location.reload(); 1521 }); 1522 1523})(); 1524</script>
1524 1525 1526<footer id="footer"> 1527 <div class="container"> 1528 <div class="row"> 1529 <div class="col-sm-3 adress"> 1530 FCG Immobilien GmbH<br> 1531 ElenastraÃe 11<br> 1532 47441 Moers<br> 1533 Tel: <a class="luxphonelink" href="tel:02841 65 63 100">02841 65 63 100</a><br> 1534 Fax: <a href="fax:02841 65 63 111">02841 65 63 111</a><br> 1535 E-Mail: <a class="luxmaillink" href="mailto:[email protected]">[email protected]</a> 1536 </div> 1537 1538 1539 <div class="col-sm-3"> 1540 <ul class="list-unstyled"> 1541 <li><a href="lp/immobilien-duesseldorf.html">Immobilien Düsseldorf</a></li> 1542<li><a href="lp/immobilien-moers.html">Immobilien Moers</a></li> 1543<li><a href="lp/immobilien-neukirchen-vluyn.html">Immobilien Neukirchen-Vluyn</a></li> 1544<li><a href="lp/immobilien-niederrhein.html">Immobilien Niederrhein</a></li> 1545<li><a href="lp/immobilien-in-kempen.html">Immobilien in Kempen</a></li> 1546 </ul> 1547 </div> 1548 1549 <div class="col-sm-3"> 1550 <ul class="list-unstyled"> 1551 <li><a href="lp/immobilienbewertung.html">Immobilienbewertung</a></li> 1552<li><a href="lp/immobilienangebote.html">Immobilienangebote</a></li> 1553<li><a href="lp/wohnung-guenstig-erwerben.html">Günstige Wohnung</a></li> 1554<li><a href="lp/haus-verkaufen.html">Haus verkaufen</a></li> 1555<li><a href="lp/bauernhof-kaufen.html">Bauernhof kaufen</a></li> 1556 </ul> 1557 </div> 1558 1559 <div class="col-sm-3"> 1560 <ul class="list-unstyled"> 1561 <li><a href="lp/anwesen-finden.html">Anwesen finden</a></li> 1562<li><a href="lp/haussuche.html">Haussuche</a></li> 1563<li><a href="lp/maklervertrag.html">Maklervertrag</a></li> 1564<li><a href="lp/wohngemeinschaften.html">Wohngemeinschaften</a></li> 1565<li><a href="lp/gewerbeimmobilien.html">Gewerbeimmobilien</a></li> 1566 </ul> 1567 </div> 1568 1569 </div> 1570 1571 <div class="row ma-top"> 1572 <div class="col-sm-12"> 1573 1574 </div> 1575 </div> 1576 </div> 1577 <div class="btmFooter" style="color: #fff; background-color: #2b4193 !important; border: 0px"> 1578 <div class="container"> 1579 <div class="col-sm-10"> 1580 <p style="color: #fff;"> 1581 © 2026 <strong><a class="white" href="https://fcggmbh.de/">FCG Immobilien GmbH</a></strong> | <a style="color: #fff;" href="impressum.html">Impressum</a> | <a style="color: #fff;" href="datenschutzerklaerung.html">Datenschutzerklärung</a> | <a style="color: #fff;" href="agb.html">AGB</a> | <a style="color: #fff;" href="kontakt.html">Kontakt</a> 1582 </p> 1583 </div> 1584 <div class="col-sm-2 text-center"> 1585 <a class="col-sm-6" href="https://www.facebook.com/pages/FCG-Finanz-Home-Consulting-GmbH/294947387201545" target="_blank"><i class="fa fa-facebook fa-2x"></i></a> 1586 <a class="col-sm-6" href="https://twitter.com/FCGImmobilien" target="_blank"><i class="fa fa-twitter fa-2x"></i></a> 1587 1588 </div> 1589 </div> 1590 </div> 1591</footer> 1592 1593 </div> 1594 1595
1596<script type="text/javascript" src="assets/themes/fcg/js/jquery.js"></script>
vendor: 1 bytes, line 1596
1596
1597<script src="assets/themes/fcg/js/jquery.matchHeight.js"></script>
1597 1598 1599 1600
1601<script src="assets/themes/fcg/js/lozad.min.js"></script>
1601 1602
1603<script> 1604 var luxlozad; 1605 const observer = lozad('.lozad', { 1606 loaded: function(el) { 1607 el.classList.add('loaded'); 1608 if (typeof callbackLozad !== 'undefined' && typeof callbackLozad === 'function') { 1609 clearTimeout(luxlozad); 1610 luxlozad = setTimeout(function(){ 1611 callbackLozad(); 1612 }, 500); 1613 } 1614 } 1615 }); 1616 observer.observe(); 1617</script>
1617 1618 1619
1620<script src="assets/themes/fcg/js/owl.carousel.min.js"></script>
vendor: 1 bytes, line 1620
1620
1621<script src="assets/themes/fcg/js/owl.carousel2.thumbs.min.js"></script>
vendor: 1 bytes, line 1621
1621
1622<script src="assets/themes/fcg/js/bootstrap.min.js"></script>
vendor: 1 bytes, line 1622
1622
1623<script src="assets/themes/fcg/js/scripts.js"></script>
vendor: 1 bytes, line 1623
1623
1624<script src="assets/themes/fcg/js/init.js"></script>
1624 1625
1626<script type="text/javascript" src="assets/themes/fcg/js/jquery-validation/jquery.validate.min.js"></script>
vendor: 1 bytes, line 1626
1626
1627<script type="text/javascript" src="assets/themes/fcg/js/jquery-validation/additional-methods.min.js"></script>
vendor: 1 bytes, line 1627
1627
1628<script type="text/javascript" src="assets/themes/fcg/js/jquery-validation/localization/messages_de.min.js"></script>
1628 1629
1630<script src="assets/themes/fcg/js/toastr.min.js"></script>
1630 1631
1632<script> 1633toastr.options = { 1634 "closeButton": false, 1635 "debug": false, 1636 "newestOnTop": true, 1637 "progressBar": false, 1638 "positionClass": "toast-top-right", 1639 "preventDuplicates": true, 1640 "onclick": null, 1641 "timeOut": "0", 1642 "extendedTimeOut": "0", 1643 "showEasing": "swing", 1644 "hideEasing": "linear", 1645 "tapToDismiss": true, 1646 "hideDuration": 50, 1647 "showDuration": 50, 1648 "closeDuration": 50 1649}; 1650 1651function luxGrecaptcha(form) { 1652 grecaptcha.ready(function() { 1653 grecaptcha.execute("6LctRPUUAAAAANhrU5ALYwmUHIBvKd-Zu05KVcH6", {action: "directMessage"}).then(function (token) { 1654 document.getElementById("recaptcha-token").value = token; 1655 console.log('grecaptcha.execute has succeded'); 1656 window[luxGrecaptchaSucced](form); 1657 }, function (reason) { 1658 /* error */ 1659 console.log('grecaptcha.execute has failed'); 1660 console.log(reason); 1661 }); 1662 }); 1663} 1664 1665$(function() { 1666 1667 1668 1669 $('#welcome-carousel').owlCarousel({ 1670 loop : true, 1671 dots : false, 1672 nav : true, 1673 smartSpeed : 400, 1674 autoplaySpeed : 3500, 1675 autoplay : true, 1676 navText : ["<i class='fa fa-angle-left'></i>","<i class='fa fa-angle-right'></i>"], 1677 responsiveRefreshRate : 10, 1678 items:1, 1679 thumbs: false, 1680 thumbImage: true, 1681 thumbContainerClass: 'owl-thumbs', 1682 thumbItemClass: 'owl-thumb-item' 1683 }); 1684 1685 $('.property-carousel').owlCarousel({ 1686 items: 1, 1687 thumbs: true, 1688 thumbImage: false, 1689 thumbsPrerendered: true, 1690 thumbContainerClass: 'owl-thumbs', 1691 thumbItemClass: 'owl-thumb-item', 1692 animateOut: 'fadeOut', 1693 animateIn: 'fadeIn', 1694 }); 1695 1696 $(".testimonial-carousel").owlCarousel({ 1697 loop : true, 1698 dots: false, 1699 smartSpeed : 200, 1700 autoplayTimeout : 8000, 1701 autoplaySpeed : 2000, 1702 autoplay : true, 1703 autoplayHoverPause: true, 1704 responsiveRefreshRate : 5, 1705 responsive:{ 1706 0:{ 1707 items:1 1708 }, 1709 400:{ 1710 items:1 1711 }, 1712 1000:{ 1713 items:1 1714 } 1715 } 1716 }); 1717 1718 $(".image-slider").owlCarousel({ 1719 loop : true, 1720 dots: false, 1721 smartSpeed : 200, 1722 autoplayTimeout : 4000, 1723 autoplaySpeed : 2000, 1724 autoplay : true, 1725 autoplayHoverPause: true, 1726 responsiveRefreshRate : 5, 1727 responsive:{ 1728 0:{ 1729 items:1 1730 }, 1731 400:{ 1732 items:3 1733 }, 1734 1000:{ 1735 items:5 1736 } 1737 } 1738 }); 1739 1740 $(".partner").owlCarousel({ 1741 loop : true, 1742 dots: false, 1743 smartSpeed : 400, 1744 autoplaySpeed : 3500, 1745 autoplay : true, 1746 responsiveRefreshRate : 10, 1747 responsive:{ 1748 0:{ 1749 items:1 1750 }, 1751 400:{ 1752 items:3 1753 }, 1754 1000:{ 1755 items:5 1756 } 1757 } 1758 }); 1759 1760 owl = $(".image-slider,.partner,.testimonial-carousel,.property-carousel,#welcome-carousel"); 1761 owl.on('changed.owl.carousel', function(event) { 1762 owl.find('.cloned img.lozad').each(function( index ) { 1763 if ( $(this).data('src') ) { 1764 $(this).attr('src', $(this).data('src')); 1765 $(this).data('src', ''); 1766 } 1767 }); 1768 }); 1769 1770 1771 $('form.jqueryValidate').each(function () { 1772 $(this).validate({ 1773 1774 submitHandler: function(form) { 1775 if ( $(form).data('fkt') && $(form).data('fkt') !== '' ) { 1776 var fkt = $(form).data('fkt'); 1777 window[fkt](form); 1778 } 1779 else { 1780 form.submit(); 1781 } 1782 }, 1783 1784 onkeyup: function (element, event) { if (event.which === 9 && this.elementValue(element) === "") { return; } else { this.element(element); } }, 1785 onfocusout: function (element, event) { if (event.which === 9 && this.elementValue(element) === "") { return; } else { this.element(element); } }, 1786 focusInvalid: true, 1787 focusCleanup: false, 1788 errorClass: "has-error help-block", 1789 validClass: "valid", 1790 errorElement: "span", 1791 errorPlacement: function(error, element) { 1792 1793 1794 if ( $( '#' + error[0].id ).length != 0 ) { 1795 $( '#' + error[0].id).remove(); 1796 } 1797 element.parents('.form-group').append(error); 1798 element.parents('.form-group').removeClass("has-success").addClass("has-error"); 1799 }, 1800 success: function (element) { 1801 $(element).parents('.form-group').removeClass("has-error").addClass("has-success"); 1802 $(element).remove(); 1803 }, 1804 1805 highlight: function(element) { 1806 $(element).css('background', '#ffdddd'); 1807 }, 1808 1809 unhighlight: function(element) { 1810 $(element).css('background', '#ffffff'); 1811 } 1812 }); 1813 }); 1814}); 1815</script>
1815 1816 1817 1818 1819 1820 1821 1822<!-- Tracking disabled due to user preference. -->
1823<script> 1824function ga() { 1825 console.log('ga disabled due to cookie consent disabled'); 1826} 1827 1828function gtag() { 1829 console.log('gtag disabled due to cookie consent disabled'); 1830} 1831</script>
1831 1832</body> 1833</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.