1$(document).ready(function () { 2 3 $('.first-button').on('click', function () { 4 $('.animated-icon1').toggleClass('open'); 5 }); 6 7 new WOW().init(); 8 9 jarallax(document.querySelectorAll('.jarallax'), { 10 speed: 0.4 11 }); 12 13 $(".filter .filter-nav .btn").on("click", function () { 14 var $filter = $(this).data('filter'); 15 $(".filter .filter-nav .active").removeClass('active'); 16 $(this).addClass('active'); 17 $(".filter .item").hide(); 18 $(".filter ." + $filter).show(); 19 }); 20 21 22 /* 2021-03-17 sa */ 23 $("a.softscroll[href^='#']").click(function () { 24 //console.log("1"); 25 if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') 26 && location.hostname == this.hostname) { 27 // this = der Merklisten-Link 28 29 /* location.hostname: www.qbeyond.de 30 location.pathname: /s4hana-transformation-launchpad/ 31 this.hostname: www.qbeyond.de */ 32 33 /* querying data-attribute is a compatibility hack for collapse script */ 34 if (this.hash.length && $(this).data('toggle') != 'collapse') { 35 var $target = $(this.hash); 36 // https://www.qbeyond.de/s4hana-transformation-launchpad/#konfigurieren 37 // $(this.hash) = jQuery-Element, dessen ID im Fragment angegeben ist 38 39 $target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']'); 40 if ($target.length) { 41 //console.log("2"); 42 var targetOffset = $target.offset().top - 95; 43 $('html,body').animate({ scrollTop: targetOffset }, 800); 44 // Folgeproblem: mit return false verhindert dieses Klick-Event die Dianlogeinblendung. Das Formular geht dann nicht mehr auf. 45 // ##### Lösung insgesamt: href="#" aus dem Link zur Merkliste entfernen, ersetzen durch javascript:void(0) ##### 46 return false; 47 } 48 } 49 } 50 }); 51 52 53}); 54 55/* 56// Funktioniert nicht, weil alle Elemente mit display: none ein offsetTop von 0 haben. 57// Kurzes Ein- und ausblenden des Elements klappt auch nicht, weil display: block dann inline 58// am Element hängt und ds AOS-Skript den Block nicht mehr einblenden kann. Vgl. Datenschutzseite 59 60$( window ).on( "load", function() { 61 console.log("window loaded"); 62 var $target = $(window.location.hash); 63 $target = $target.length && $target; 64 if ($target.length) { 65 var targetOffset = $target.offset().top-100; 66 $('html,body').animate({scrollTop: targetOffset}, 800); 67 console.log("scrolled to target: " + window.location.hash); 68 return false; 69 } 70 71}); */ 72 73function validateContact() { 74 var errors = 0; 75 76 var nameReg = /^[a-zA-Z\s,.'-\pL]+$/; 77 var specialReg = /[\<\<\$\\\/\;]/; // not allowed 78 79 var fn = $('#form_vorname').val(); 80 var ln = $('#form_nachname').val(); 81 var com = $('#form_company').val(); 82 //var pho = $('#form_phone').val(); 83 var em = $('#form_email').val(); 84 // var pos = $('#form_position').val(); 85 var mes = $('#form_message').val(); 86 //var st = $('#street').val(); 87 //var zi = $('#zip').val(); 88 //var ci = $('#city').val(); 89 var an = $('input:radio[name="formhandler[salutation]"]:checked').val(); 90 var doi = $('input:checkbox[name="formhandler[optinemailviaw2l]"]:checked').val(); 91 //console.log("doi value: "+doi); 92 // if ($('input:radio[name="formhandler[optinemailviaw2l]"]').is( ":checked")) { console.log("doi value: "+doi); } 93 // var tn = $('input:radio[name="formhandler[teilnahme]"]:checked').val(); 94 //var coun = $('#thiscland').val(); 95 96 if (fn == "" || specialReg.test(fn)) { errors++; $('#form_vorname').addClass("is-invalid"); console.log("vorname"); } else { $('#form_vorname').removeClass("is-invalid"); } 97 if (ln == "" || specialReg.test(ln)) { errors++; $('#form_nachname').addClass("is-invalid"); console.log("nachname"); } else { $('#form_nachname').removeClass("is-invalid"); } 98 if (com == "" || specialReg.test(com)) { errors++; $('#form_company').addClass("is-invalid"); console.log("firma"); } else { $('#form_company').removeClass("is-invalid"); } 99 //if(pos == "" || specialReg.test(pos)) {errors++; $('#form_position').addClass("is-invalid");console.log("position");} else {$('#form_position').removeClass("is-invalid");} 100 // if(pho == "" || specialReg.test(pho)) {errors++; $('#form_phone').addClass("is-invalid");console.log("telefon");} else {$('#form_phone').removeClass("is-invalid");} 101 if (em == "" || specialReg.test(em)) { errors++; $('#form_email').addClass("is-invalid"); console.log("email"); } else { $('#form_email').removeClass("is-invalid"); } 102 //if(mes == "" || specialReg.test(mes)) {errors++; $('#form_message').addClass("is-invalid");console.log("email");} else {$('#form_email').removeClass("is-invalid");} 103 //if(st == "" || specialReg.test(st)) {errors++; $('#street').addClass("is-invalid");console.log("street");} else {$('#street').removeClass("is-invalid");} 104 //if(zi == "" || specialReg.test(zi)) {errors++; $('#zip').addClass("is-invalid");console.log("zip");} else {$('#zip').removeClass("is-invalid");} 105 //if(ci == "" || specialReg.test(ci)) {errors++; $('#city').addClass("is-invalid");console.log("city");} else {$('#city').removeClass("is-invalid");} 106 if (an != "Herr" && an != "Frau" && an != "") { errors++; $('#form-anrede-label').addClass("is-invalid"); console.log("anrede"); } else { $('#form-anrede-label').removeClass("is-invalid"); } 107 if (doi != "1") { errors++; $('#form-einwilligung1-label').addClass("is-invalid"); console.log("DOI"); } else { $('#form-einwilligung1-label').removeClass("is-invalid"); } 108 // if(tn != "Ja" && tn != "Nein") {errors++;$('#teilnahme_label').addClass("is-invalid");console.log("teilnahme");} else {$('#teilnahme_label').removeClass("is-invalid");} 109 /* if(coun != "") {errors++;console.log("country");} */ 110 111 //console.log("an:"+an); 112 //console.log("tn:"+tn); 113 if (errors > 0) { 114 console.log("errors:" + errors); 115 $("#form-kontakt-reply").html("<div class='alert alert-danger'>
115Es sind leider Fehler aufgetreten. Bitte füllen Sie alle Pflichtfelder aus. (" + errors + ")</div>"); 116 return false; 117 } 118 else { 119 return true; 120 } 121 122} 123 124function validateNewsletter() { 125 var errors = 0; 126 var nameReg = /^[a-zA-Z\s,.'-\pL]+$/; 127 var specialReg = /[\<\<\$\\\/\;]/; // not allowed 128 129 var fn = $('#toolbar-newsletter-firstname').val(); 130 var ln = $('#toolbar-newsletter-lastname').val(); 131 var em = $('#toolbar-newsletter-email').val(); 132 //var sl = $('.anrede:checked').prop('id'); 133 134 // if (typeof (sl) == 'undefined') { 135 // errors++; 136 // $('#toolbar-newsletter-salutation').addClass("is-invalid"); 137 // console.log("anrede"); 138 // } 139 // else { 140 // $('#toolbar-newsletter-salutation').removeClass("is-invalid"); 141 // } 142 if (/*fn == "" || */ specialReg.test(fn)) { 143 errors++; 144 $('#toolbar-newsletter-firstname').addClass("is-invalid"); 145 console.log("vorname"); 146 } 147 else { 148 $('#toolbar-newsletter-firstname').removeClass("is-invalid"); 149 } 150 151 if (/*ln == "" || */ specialReg.test(ln)) { 152 errors++; 153 $('#toolbar-newsletter-lastname').addClass("is-invalid"); 154 console.log("nachname"); 155 } 156 else { 157 $('#toolbar-newsletter-lastname').removeClass("is-invalid"); 158 } 159 160 if (em == "" || specialReg.test(em)) { 161 errors++; 162 $('#toolbar-newsletter-email').addClass("is-invalid"); 163 console.log("email"); 164 } 165 else { 166 $('#toolbar-newsletter-email').removeClass("is-invalid"); 167 } 168 169 if (errors > 0) { 170 console.log("errors:" + errors); 171 $("#toolbar-newsletter-reply").html("<div class='alert alert-danger'>Es sind leider Fehler aufgetreten. Bitte füllen Sie alle Pflichtfelder aus. (" + errors + ")</div>"); 172 return false; 173 } 174 else { 175 return true; 176 } 177} 178 179function contactSubmit() { 180 181 $.ajaxSetup({ 182 type: "POST", 183 cache: false 184 }); 185 186 var ajax_load = "<img class='loading' src='/fileadmin/lps/img/icon_ajax-waiting-l.gif' alt='loading...' />"; 187 188 $("#form-kontakt-reply").html(ajax_load); 189 var jqxhr = $.post("contact.php", $("#form-kontakt").serialize(), function (returnData) { 190 var o = returnData; 191 o = o.replace(/\s+$/, ''); // remove trailing whitespace 192 193 if (!o.match("^\<\!--")) { 194 $("#form-content").slideUp("slow"); 195 $("#modal-footer").slideUp("slow"); 196 } 197 //erst checken ob o --> A:0 198 $("#form-kontakt-reply").html("<div class='alert alert-success' id='formSubmitSuccess' data-label='qbeyond.de - Kontakt - primary formSubmitSuccess'><b>Vielen Dank für ihre Anfrage</b><br>Sie erhalten in Kürze eine Bestätigungsnachricht an die von Ihnen angegebene E-Mail-Adresse. Bitte bestätigen Sie durch den Klick auf den Link in dieser Mail Ihre E-Mail-Adresse und die Einwilligung zur Speicherung Ihrer Daten. Wir werden dann schnellstmöglich Kontakt mit Ihnen aufnehmen.</div>"); 199 200 //$("#form-kontakt-reply").html(o); 201 // console.log("o ="+o); 202 // target = $("#intro"); 203 // $('html,body').animate({ scrollTop: target.offset().top -50 }, 500); 204 }) 205 206 .fail(function (jqXHR, textStatus, errorThrown) { 207 $("#form-kontakt-reply").html("<div class='alert alert-danger'>Es sind leider Fehler aufgetreten. Bitte füllen Sie alle Pflichtfelder aus. (2)</div>"); 208 // console.log("fail"); 209 }) 210} 211 212function newsletterSubmit() { 213 $.ajaxSetup({ 214 type: "POST", 215 encoding: "UTF-8", 216 cache: false 217 }); 218 $('#toolbar-newsletter-reply').show().css('height', $('#toolbar-newsletter').innerHeight() + 'px'); 219 $('#toolbar-newsletter').hide(); 220 $("#toolbar-newsletter-reply").html('<div class="float s-width-24 s-pad-1 m-pad-2"><p>Bitte warten...</p></div>'); 221 var jqxhr = $.post( 222 $('#toolbar-newsletter').attr('action'), 223 { 224 formhandler: { 225 token: $('#toolbar-newsletter-token').val(), 226 email: $('#toolbar-newsletter-email').val(), 227 mailaddress: $('#toolbar-newsletter-mailaddress').val(), 228 newslettertype: $('#toolbar-newsletter-type').val(), 229 salutation: $('.anrede:checked').val(), 230 firstname: $('#toolbar-newsletter-firstname').val(), 231 lastname: $('#toolbar-newsletter-lastname').val(), 232 referer: $('#toolbar-newsletter-referer').val(), 233 insurance: $('#toolbar-newsletter-insurance').val() 234 } 235 }, 236 function (response, status, xhr) { 237 if (status == 'success') { 238 if (response == 'A') { 239 $('#toolbar-newsletter-reply').html('<div class="alert alert-success" role="alert" id="formSubmitSuccess" data-label="Newsletter - Neue Anmeldung (Anzeige Vielen Dank)">Vielen Dank für Ihre Anmeldung! Sie erhalten unseren Newsletter ab sofort monatlich einmal an die von Ihnen angegebene E-Mail-Adresse.</div>'); 240 } 241 else if (response == 'E') { 242 $('#toolbar-newsletter-reply').html('<div class="alert alert-danger" role="alert">Es ist ein Fehler aufgetreten.</div>'); 243 } 244 else { 245 $('#toolbar-newsletter-reply').html('<div class="alert alert-warning" role="alert">
245Bitte geben Sie eine gültige E-Mail-Adresse an.</div>'); 246 } 247 $('#toolbar-newsletter-reply').delay(5000).hide(0, function () { 248 $('#toolbar-newsletter').show(); 249 }); 250 } else { 251 $('#toolbar-newsletter-reply').html('<div class="alert alert-danger" role="alert">Es ist ein Fehler aufgetreten.</div>'); 252 $('#toolbar-newsletter-reply').delay(5000).hide(0, function () { 253 $('#toolbar-newsletter').show(); 254 }); 255 } 256 } 257 ) 258 .fail(function (jqXHR, textStatus, errorThrown) { 259 $('#toolbar-newsletter-reply').html('<div class="alert alert-danger" role="alert">Es ist ein Fehler aufgetreten.</div>'); 260 }) 261 262} 263 264function contentIrNewsletterValidate(strFormIdentifier) { 265 var errors = 0; 266 var nameReg = /^[a-zA-Z\s,.'-\pL]+$/; 267 var specialReg = /[\<\<\$\\\/\;]/; // not allowed 268 269 var sl = $('.anrede:checked').prop('id'); 270 var fn = $('#' + strFormIdentifier + '-firstname').val(); 271 var ln = $('#' + strFormIdentifier + '-lastname').val(); 272 var em = $('#' + strFormIdentifier + '-email').val(); 273 274 /* if(typeof(sl)=='undefined') { 275 errors++; 276 $('#' + strFormIdentifier + '-salutation').addClass("is-invalid"); 277 console.log("anrede"); 278 } 279 else { 280 $('#' + strFormIdentifier + '-salutation').removeClass("is-invalid"); 281 } 282 if(fn == "" || specialReg.test(fn)) { 283 errors++; 284 $('#' + strFormIdentifier + '-firstname').addClass("is-invalid"); 285 console.log("vorname"); 286 } 287 else { 288 $('#' + strFormIdentifier + '-firstname').removeClass("is-invalid"); 289 } 290 291 if(ln == "" || specialReg.test(ln)) { 292 errors++; 293 $('#' + strFormIdentifier + '-lastname').addClass("is-invalid"); 294 console.log("nachname"); 295 } 296 else { 297 $('#' + strFormIdentifier + '-lastname').removeClass("is-invalid"); 298 } */ 299 300 if (em == "" || specialReg.test(em)) { 301 errors++; 302 $('#' + strFormIdentifier + '-email').addClass("is-invalid"); 303 console.log("email"); 304 } 305 else { 306 $('#' + strFormIdentifier + '-email').removeClass("is-invalid"); 307 } 308 309 if (errors > 0) { 310 console.log("errors:" + errors); 311 $('#' + strFormIdentifier + '-reply').html("<div class='alert alert-danger'>Es sind leider Fehler aufgetreten. Bitte füllen Sie alle Pflichtfelder aus. (" + errors + ")</div>"); 312 return false; 313 } 314 else { 315 return true; 316 } 317} 318 319function contentIrNewsletterSubmit(strFormIdentifier) { 320 $.ajaxSetup({ 321 type: "POST", 322 encoding: "UTF-8", 323 cache: false 324 }); 325 $('#' + strFormIdentifier + '-reply').show().css('height', $('#form-content-newsletterir').innerHeight() + 'px'); 326 $('#form-content-newsletterir').hide(); 327 $('#' + strFormIdentifier + '-reply').html('<div class="float s-width-24 s-pad-1 m-pad-2"><p>Bitte warten...</p></div>'); 328 329 var jqxhr = $.post( 330 $('#form-content-newsletterir').attr('action'), 331 $('#form-content-newsletterir').serialize(), 332 function (response, status, xhr) { 333 // strip trailing white spaces 334 response = response.replace(/\s+$/, ''); // remove trailing whitespace 335 if (status == 'success') { 336 if (response == 'A') { 337 $('#' + strFormIdentifier + '-reply').html('<div style="display: block" class="alert alert-success" role="alert" id="formSubmitSuccess" data-label="Main Website DE IR-Newsletter - primary formSubmitSuccess"><b>Vielen Dank für ihre Anfrage</b><br>Sie erhalten in Kürze eine Bestätigungsnachricht an die von Ihnen angegebene E-Mail-Adresse. Bitte bestätigen Sie durch den Klick auf den Link in dieser Mail Ihre E-Mail-Adresse.</div>'); 338 } 339 else if (response == 'C') { 340 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">Listbombing erkannt</div>'); 341 } 342 else if (response == 'D') { 343 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">Sie sind schon am Newsletter angemeldet</div>'); 344 } 345 else if (response == 'E') { 346 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">Es ist ein Fehler aufgetreten.</div>'); 347 } 348 else { 349 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-warning" role="alert">Bitte geben Sie eine gültige E-Mail-Adresse an.</div>'); 350 } 351 $('#' + strFormIdentifier + '-reply').delay(5000).hide(0, function () { 352 $('#form-content-newsletterir').show(); 353 $('#form-content-newsletterir').trigger("reset"); 354 }); 355 } 356 else { 357 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">Es ist ein Fehler aufgetreten.</div>'); 358 $('#' + strFormIdentifier + '-reply').delay(5000).hide(0, function () { 359 $('#form-content-newsletterir').show(); 360 }); 361 } 362 } 363 ) 364 .fail(function (jqXHR, textStatus, errorThrown) { 365 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">Es ist ein Fehler aufgetreten.</div>'); 366 }) 367 368} 369 370function contentIrEnNewsletterValidate(strFormIdentifier) { 371 var errors = 0; 372 var nameReg = /^[a-zA-Z\s,.'-\pL]+$/; 373 var specialReg = /[\<\<\$\\\/\;]/; // not allowed 374 375 var sl = $('.anrede:checked').prop('id'); 376 var fn = $('#' + strFormIdentifier + '-firstname').val(); 377 var ln = $('#' + strFormIdentifier + '-lastname').val(); 378 var em = $('#' + strFormIdentifier + '-email').val(); 379 380 if (em == "" || specialReg.test(em)) { 381 errors++; 382 $('#' + strFormIdentifier + '-email').addClass("is-invalid"); 383 console.log("email"); 384 } 385 else { 386 $('#' + strFormIdentifier + '-email').removeClass("is-invalid"); 387 } 388 389 if (errors > 0) { 390 console.log("errors:" + errors); 391 $('#' + strFormIdentifier + '-reply').html("<div class='alert alert-danger'>Errors have occurred. Please fill in all the required fields. (" + errors + ")</div>"); 392 return false;
393 } 394 else { 395 return true; 396 } 397} 398 399function contentIrEnNewsletterSubmit(strFormIdentifier) { 400 $.ajaxSetup({ 401 type: "POST", 402 encoding: "UTF-8", 403 cache: false 404 }); 405 $('#' + strFormIdentifier + '-reply').show().css('height', $('#form-content-newsletteriren').innerHeight() + 'px'); 406 $('#form-content-newsletteriren').hide(); 407 $('#' + strFormIdentifier + '-reply').html('<div class="float s-width-24 s-pad-1 m-pad-2"><p>Please wait...</p></div>'); 408 409 var jqxhr = $.post( 410 $('#form-content-newsletteriren').attr('action'), 411 $('#form-content-newsletteriren').serialize(), 412 function (response, status, xhr) { 413 // strip trailing white spaces 414 response = response.replace(/\s+$/, ''); // remove trailing whitespace 415 if (status == 'success') { 416 if (response == 'A') { 417 $('#' + strFormIdentifier + '-reply').html('<div style="display: block" class="alert alert-success" role="alert" id="formSubmitSuccess" data-label="Main Website EN IR-Newsletter - primary formSubmitSuccess"><b>Thank you for your request</b><br>You will receive an E-mail from us shortly. Please click on the link in that E-mail to confirm your subscription.</div>'); 418 } 419 else if (response == 'C') { 420 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">List bombing detected.</div>'); 421 } 422 else if (response == 'D') { 423 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">You are already subscribed to this newsletter.</div>'); 424 } 425 else if (response == 'E') { 426 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">An error has occurred.</div>'); 427 } 428 else { 429 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-warning" role="alert">Please specify a valid e-mail address.</div>'); 430 } 431 $('#' + strFormIdentifier + '-reply').delay(5000).hide(0, function () { 432 $('#form-content-newsletteriren').show(); 433 $('#form-content-newsletteriren').trigger("reset"); 434 }); 435 } 436 else { 437 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">An error has occurred.</div>'); 438 $('#' + strFormIdentifier + '-reply').delay(5000).hide(0, function () { 439 $('#form-content-newsletteriren').show(); 440 }); 441 } 442 } 443 ) 444 .fail(function (jqXHR, textStatus, errorThrown) { 445 $('#' + strFormIdentifier + '-reply').html('<div class="alert alert-danger" role="alert">An error has occurred.</div>'); 446 }) 447 448} 449/* ]]> */ 450 451$('#form-content-newsletterir').on('submit', function (e) { 452 e.preventDefault(); 453 var strFormIdentifier = $(this).data('identifier'); 454 if (contentIrNewsletterValidate(strFormIdentifier)) { 455 contentIrNewsletterSubmit(strFormIdentifier); 456 } 457}); 458 459$('#form-content-newsletteriren').on('submit', function (e) { 460 e.preventDefault(); 461 var strFormIdentifier = $(this).data('identifier'); 462 if (contentIrEnNewsletterValidate(strFormIdentifier)) { 463 contentIrEnNewsletterSubmit(strFormIdentifier); 464 } 465}); 466 467$('#toolbar-newsletter').on('submit', function (e) { 468 e.preventDefault(); 469 if (validateNewsletter()) { 470 newsletterSubmit(); 471 } 472}); 473 474$("#form-kontakt-submit").click(function () { 475 if (validateContact()) { 476 contactSubmit(); 477 } 478}); 479 480function _gtmEvent(category, action, label) { 481 /* var uc_GaTrackingAllowed = google_tag_manager['GTM-P46B3SZ'].dataLayer.get('Google Analytics'); 482 for(var i=0; i<dataLayer.length; i++) { 483 if(typeof(dataLayer[i].event) !== 'undefined' && dataLayer[i].event=='consents_initialized' || dataLayer[i].event=='consent_changed Google Analytics') { 484 uc_GaTrackingAllowed = true; 485 } 486 } */ 487 488 uc_GaTrackingAllowed = false; 489 if (typeof (window.usercentrics) != 'undefined') { 490 uc_GaTrackingAllowed = window.usercentrics.getConsents('xgd9k7PYj').consentStatus; 491 } 492 493 if (dataLayer && category && uc_GaTrackingAllowed) { 494 dataLayer.push({ 495 'event': 'gtm.evt_-_custom_event', 496 'eventInfo': { 497 'category': category, 498 'action': action, 499 'label': label, 500 'value': 0, 501 'nonInteraction': false 502 } 503 }); 504 //console.log('Category: ' + category + ', Action: ' + action + ', Label: ' + label); 505 } 506} 507 508/* Get Usercentrics consent status 509Use in combination with waitForGlobal to ensure usercentrics is loaded */ 510function getUCConsentStatus(strTemplateId) { 511 if (typeof (window.usercentrics) != 'undefined') { 512 uc_ServiceTrackingAllowed = window.usercentrics.getConsents(strTemplateId).consentStatus; 513 } 514 else uc_ServiceTrackingAllowed = false;
515 return uc_ServiceTrackingAllowed; 516} 517 518/* Load and run external javascript 519usage example: 520_loadExternalScript(pathtoscript, function() { 521 console.log('script ready!'); 522}); */ 523function _loadExternalScript(url, callback) { 524 var script = document.createElement("script") 525 script.type = "text/javascript"; 526 if (script.readyState) { // only required for IE <9 527 script.onreadystatechange = function () { 528 if (script.readyState === "loaded" || script.readyState === "complete") { 529 script.onreadystatechange = null; 530 callback(); 531 } 532 }; 533 } 534 else { //Others 535 script.onload = function () { 536 callback(); 537 }; 538 } 539 540 script.src = url; 541 document.getElementsByTagName("head")[0].appendChild(script); 542} 543 544/* Wait for global variable to be defined 545usage example: 546waitForGlobal("usercentrics", function() { 547 console.log('variable exists') 548}); */ 549function waitForGlobal(key, callback) { 550 if (window[key]) { 551 callback(); 552 } 553 else { 554 setTimeout(function () { 555 waitForGlobal(key, callback); 556 }, 100); 557 } 558}; 559 560/* Wait for dom element to appear 561usage example: 562waitForElement($('#element'), function() { 563 console.log('element exists') 564}); */ 565function waitForElement(selector, callback) { 566 if (jQuery(selector).length) { 567 callback(); 568 } 569 else { 570 setTimeout(function () { 571 waitForElement(selector, callback); 572 }, 100); 573 } 574}; 575 576/* Remove tags from argument text */ 577function stripTags(strText) { 578 if (typeof (strText) == 'string') { 579 return strText.replace(/(<([^>]+)>)/gi, ""); 580 } 581 else return ''; 582} 583 584// meta dropdown 585document.addEventListener("DOMContentLoaded", () => { 586 587 // ----- 1. Ebene (Dropdown) ----- 588 document.querySelectorAll(".dropdown > .dropdown-toggle").forEach(toggle => { 589 toggle.addEventListener("click", e => { 590 e.preventDefault(); 591 const parent = toggle.parentElement; 592 const menu = parent.querySelector(".dropdown-menu"); 593 594 // Toggle open class 595 parent.classList.toggle("open"); 596 597 // ARIA aktualisieren 598 const expanded = parent.classList.contains("open"); 599 toggle.setAttribute("aria-expanded", expanded); 600 601 // andere Dropdowns schlieÃen 602 document.querySelectorAll(".dropdown.open").forEach(other => { 603 if (other !== parent) { 604 other.classList.remove("open"); 605 other.querySelector(".dropdown-toggle").setAttribute("aria-expanded", "false"); 606 } 607 }); 608 }); 609 }); 610 611 612 // ----- 2. Ebene (Submenu) ----- 613 document.querySelectorAll(".dropdown-submenu > .submenu-toggle").forEach(subToggle => { 614 subToggle.addEventListener("click", e => { 615 e.preventDefault(); 616 e.stopPropagation(); // verhindert Ãffnen/SchlieÃen der 1. Ebene 617 618 const parent = subToggle.parentElement; 619 620 parent.classList.toggle("open"); 621 622 const expanded = parent.classList.contains("open"); 623 subToggle.setAttribute("aria-expanded", expanded); 624 625 // andere Untermenüs schlieÃen 626 parent.parentElement.querySelectorAll(".dropdown-submenu.open").forEach(other => { 627 if (other !== parent) { 628 other.classList.remove("open"); 629 const otherToggle = other.querySelector(".submenu-toggle"); 630 if (otherToggle) otherToggle.setAttribute("aria-expanded", "false"); 631 } 632 }); 633 }); 634 }); 635 636 637 // ----- Klick auÃerhalb schlieÃt alles ----- 638 document.addEventListener("click", e => { 639 if (!e.target.closest(".dropdown")) { 640 document.querySelectorAll(".dropdown.open").forEach(d => { 641 d.classList.remove("open"); 642 d.querySelector(".dropdown-toggle").setAttribute("aria-expanded", "false"); 643 }); 644 } 645 }); 646}); 647 648// video home 649// Scroll-Event für Navbar-Collapse 650// window.addEventListener('scroll', function () { 651// const navbar = document.getElementById('mainnav'); 652// const body = document.body; 653 654// if (window.scrollY > 50) { 655// navbar.classList.add('top-nav-collapse'); 656// body.classList.add('scrolled'); 657// } else { 658// navbar.classList.remove('top-nav-collapse'); 659// body.classList.remove('scrolled'); 660// } 661// }); 662 663// Video abspielen sicherstellen 664const video = document.getElementById('html5_video_p667x6041f'); 665const pauseBtn = document.getElementById('videoPauseBtn'); 666if (video && pauseBtn) { 667 // Pause/Play Button Funktionalität 668 pauseBtn.addEventListener('click', function () { 669 if (video.paused) { 670 video.play(); 671 pauseBtn.classList.remove('paused'); 672 pauseBtn.classList.add('playing'); 673 pauseBtn.setAttribute('aria-label', 'Video pausieren'); 674 pauseBtn.setAttribute('title', 'Video pausieren'); 675 } else { 676 video.pause(); 677 pauseBtn.classList.remove('playing'); 678 pauseBtn.classList.add('paused'); 679 pauseBtn.setAttribute('aria-label', 'Video abspielen'); 680 pauseBtn.setAttribute('title', 'Video abspielen'); 681 } 682 }); 683 684 // Keyboard Accessibility: Leertaste zum Pausieren 685 pauseBtn.addEventListener('keydown', function (e) { 686 if (e.key === ' ' || e.key === 'Enter') { 687 e.preventDefault(); 688 pauseBtn.click(); 689 } 690 }); 691 692 // Warten bis Video geladen ist 693 video.addEventListener('loadeddata', function () { 694 video.play().catch(error => { 695 console.log("Autoplay verhindert:", error); 696 // Button Status anpassen wenn Autoplay blockiert wurde 697 pauseBtn.classList.remove('playing'); 698 pauseBtn.classList.add('paused'); 699 pauseBtn.setAttribute('aria-label', 'Video abspielen'); 700 pauseBtn.setAttribute('title', 'Video abspielen'); 701 702 // Fallback: Play bei User-Interaktion 703 document.addEventListener('click', function playOnClick() { 704 video.play(); 705 pauseBtn.classList.remove('paused'); 706 pauseBtn.classList.add('playing'); 707 pauseBtn.setAttribute('aria-label', 'Video pausieren'); 708 document.removeEventListener('click', playOnClick); 709 }, { once: true }); 710 }); 711 }); 712 713 // Sofort versuchen zu starten (falls bereits geladen) 714 if (video.readyState >= 2) { 715 video.play().catch(error => { 716 console.log("Autoplay initial verhindert:", error); 717 pauseBtn.classList.remove('playing'); 718 pauseBtn.classList.add('paused'); 719 }); 720 } 721 722 // Optional: Video pausieren wenn nicht sichtbar (Performance) 723 const observer = new IntersectionObserver((entries) => {
724 entries.forEach(entry => { 725 if (entry.isIntersecting && !video.paused) { 726 video.play().catch(e => console.log(e)); 727 } else if (!entry.isIntersecting) { 728 video.pause(); 729 } 730 }); 731 }, { threshold: 0.5 }); 732 733 observer.observe(video); 734}
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.