1function number_format (number, decimals, dec_point, thousands_sep) { 2 // Strip all characters but numerical ones. 3 number = (number + '').replace(/[^0-9+\-Ee.]/g, ''); 4 var n = !isFinite(+number) ? 0 : +number, 5 prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), 6 sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, 7 dec = (typeof dec_point === 'undefined') ? '.' : dec_point, 8 s = '', 9 toFixedFix = function (n, prec) { 10 var k = Math.pow(10, prec); 11 return '' + Math.round(n * k) / k; 12 }; 13 // Fix for IE parseFloat(0.55).toFixed(0) = 0; 14 s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); 15 if (s[0].length > 3) { 16 s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); 17 } 18 if ((s[1] || '').length < prec) { 19 s[1] = s[1] || ''; 20 s[1] += new Array(prec - s[1].length + 1).join('0'); 21 } 22 return s.join(dec); 23} 24 25function formatNumbers(number){ 26 if(number % 1 != 0){ 27 return number_format(number , 2 ,".","'"); 28 }else{ 29 return number_format ( number , 0 ,".","'" ) 30 } 31 32} 33 34/** 35 * Liest Netto-/Brutto-Preis und Metadaten der gewählten Ticket-Variante (gleiche Logik wie beim change-Handler). 36 * @param {JQuery} $radio jQuery-Objekt des Variant-Radios 37 * @returns {object|null} 38 */ 39function resolveVariantPricingFromRadio($radio) { 40 if (!$radio || !$radio.length) { 41 return null; 42 } 43 var currency, variantprice, variantpricetaxed, productid, variantid, multipleeventid, productname, variantname, formattedvariantprice, formattedpricetaxed; 44 if ($radio.parent().children('.altproduct').length) { 45 var currentcountry = $('#billingadress').is(':checked') ? $('#additionalcountry').val() : $('#country').val(); 46 var country; 47 switch (currentcountry) { 48 case '1': 49 country = 'DE'; 50 break; 51 case '3': 52 country = 'CH'; 53 break; 54 case '119': 55 country = 'CH'; 56 break; 57 default: 58 country = 'INT'; 59 } 60 var found = false; 61 $radio.parent().children('.altproduct').each(function () { 62 if ($(this).data('region') == country) { 63 found = true; 64 currency = $(this).data("currency"); 65 variantprice = $(this).children('.hiddenvariant').data('variant-price'); 66 productid = $(this).data("productid"); 67 multipleeventid = $(this).data("eventid"); 68 variantid = $(this).children('.hiddenvariant').data("variantid"); 69 productname = $(this).data("productname"); 70 variantname = $(this).children('.hiddenvariant').data("variantname"); 71 formattedvariantprice = $(this).children('.hiddenvariant').data("formatted-price"); 72 formattedpricetaxed = $(this).children('.hiddenvariant').data("formatted-pricetaxed"); 73 variantpricetaxed = $(this).children('.hiddenvariant').data("variant-pricetaxed"); 74 } 75 }); 76 if (!found) { 77 var $fallback = $radio.parent().children('.altproduct').first(); 78 currency = $fallback.data("currency"); 79 variantprice = $fallback.children('.hiddenvariant').data('variant-price'); 80 productid = $fallback.data("productid"); 81 multipleeventid = $fallback.data("eventid"); 82 variantid = $fallback.children('.hiddenvariant').data("variantid"); 83 productname = $fallback.data("productname"); 84 variantname = $fallback.children('.hiddenvariant').data("variantname"); 85 formattedvariantprice = $fallback.children('.hiddenvariant').data("formatted-price"); 86 formattedpricetaxed = $fallback.children('.hiddenvariant').data("formatted-pricetaxed"); 87 variantpricetaxed = $fallback.children('.hiddenvariant').data("variant-pricetaxed"); 88 } 89 } else { 90 currency = $radio.data("currency"); 91 variantprice = $radio.data("price"); 92 productid = $radio.data("productid"); 93 multipleeventid = $radio.data("eventid"); 94 variantid = $radio.data("variantid"); 95 productname = $radio.data("productname"); 96 variantname = $radio.data("variantname");
97 formattedvariantprice = $radio.data("formatted-price"); 98 formattedpricetaxed = $radio.data("formatted-pricetaxed"); 99 variantpricetaxed = $radio.data("taxed-price"); 100 } 101 var net = parseFloat(variantprice); 102 var taxed = parseFloat(variantpricetaxed); 103 if (!isFinite(net) || !isFinite(taxed)) { 104 return null; 105 } 106 return { 107 currency: currency, 108 priceNetto: net, 109 variantpricetaxed: taxed, 110 productid: productid, 111 variantid: variantid, 112 multipleeventid: multipleeventid, 113 productname: productname, 114 variantname: variantname, 115 formattedvariantprice: formattedvariantprice, 116 formattedpricetaxed: formattedpricetaxed 117 }; 118} 119 120$(function() { 121 122 $(".esb-tooltip").each(function () { 123 tippy(this, { 124 content: $(this).data('tooltip'), 125 zIndex: 999999999 126 }); 127 }); 128 129}); 130 131$(function() { 132 if($("#eventregistrationbox .femanager_error").length){ 133 $("#registernowbutton").click(); 134 } 135 if($("#eventregistrationbox .femanager_error").length){ 136 $(".pricebutton-esb-partner").click(); 137 } 138 if($("#eventregistrationbox .typo3-message .message-body").length){ 139 var message = $("#eventregistrationbox .typo3-message .message-body").html(); 140 $.fancybox.open('<div class="text-center"><h2 class="ce--title" style="margin-top: 15px;margin-bottom: 15px;">Ihre Registrierung war erfolgreich</h2></div>'); 141 142 } 143 144 145 146 147 $('#billingadress').on('change', function() { 148 $('.billing-col').toggleClass('hidden'); 149 if ($('#billingadress').is(':checked')) { 150 $('.billing-col input').each(function(){ 151 $(this).prop('required',true); 152 }) 153 }else{ 154 $('.billing-col input').each(function(){ 155 $(this).prop('required',false); 156 }) 157 } 158 }); 159 160 $('#country').on('change', function() { 161 162 163 $(".variantwrapper input[type=radio][name=variant]:checked").change(); 164 165 }); 166 $('#billingadress').on('change', function() { 167 $(".variantwrapper input[type=radio][name=variant]:checked").change(); 168 }); 169 $('#additionalcountry').on('change', function() { 170 $(".variantwrapper input[type=radio][name=variant]:checked").change(); 171 }); 172 173 174 $('.variantwrapper input[type=radio][name=variant]').on('change', function() { 175 176 if($('.form-fields-signup').hasClass('hidden')){ 177 $('.form-fields-signup').removeClass('hidden'); 178 if($('.form-fields-signup-dont-forget ').hasClass('hidden')){ 179 180 }else{ 181 $('.form-fields-signup-dont-forget ').addClass('hidden'); 182 } 183 } 184 185 if($(this).parent().parent().parent().parent().parent().children('.card-footer').hasClass('partner-card-footer')){ 186 $(this).parent().parent().parent().parent().parent().children('.card-footer').removeClass('partner-card-footer'); 187 } 188 if($(this).parent().children('.altproduct').length){ 189 190 if($('#billingadress').is(':checked')){ 191 192 var currentcountry = $('#additionalcountry').val(); 193 }else{ 194 var currentcountry = $('#country').val(); 195 196 } 197 198 var country; 199 200 switch(currentcountry) { 201 case '1': 202 country = 'DE'; 203 break; 204 case '3': 205 country = 'CH'; 206 break; 207 case '119': 208 country = 'CH'; 209 break; 210 default: 211 country = 'INT'; 212 break; 213 } 214 console.log(country); 215 var price; 216 var formattedprice; 217 var multipleeventid; 218 var multiplecurrency; 219 var productid; 220 var variantid; 221 var productname; 222 var variantname; 223 var variantprice; 224 var formattedvariantprice; 225 var formattedpricetaxed; 226 var variantpricetaxed; 227 var currency; 228 229 var found = false;
230 $( $(this).parent().children('.altproduct') ).each(function( index ) { 231 if($(this).data('region') == country){ 232 found = true; 233 currency = $(this).data("currency"); 234 price = $(this).children('.hiddenvariant').data('variant-price'); 235 formattedprice = $(this).children('.hiddenvariant').data("formatted-price"); 236 $(this).parent().parent().parent().parent().parent().children('.card-footer').children('strong').children('.number-price').text(formattedprice+ ' ' + currency) 237 productid = $(this).data("productid"); 238 multipleeventid = $(this).data("eventid"); 239 240 multiplecurrency = $(this).data("productcurrency"); 241 variantid = $(this).children('.hiddenvariant').data("variantid"); 242 productname = $(this).data("productname"); 243 variantname = $(this).children('.hiddenvariant').data("variantname"); 244 variantprice = $(this).children('.hiddenvariant').data('variant-price'); 245 formattedvariantprice = $(this).children('.hiddenvariant').data("formatted-price"); 246 formattedpricetaxed = $(this).children('.hiddenvariant').data("formatted-pricetaxed"); 247 variantpricetaxed = $(this).children('.hiddenvariant').data("variant-pricetaxed"); 248 } 249 }); 250 if (!found) { 251 var $fallback = $(this).parent().children('.altproduct').first(); 252 currency = $fallback.data("currency"); 253 price = $fallback.children('.hiddenvariant').data('variant-price'); 254 formattedprice = $fallback.children('.hiddenvariant').data("formatted-price"); 255 $fallback.parent().parent().parent().parent().parent().children('.card-footer').children('strong').children('.number-price').text(formattedprice + ' ' + currency); 256 productid = $fallback.data("productid"); 257 multipleeventid = $fallback.data("eventid"); 258 multiplecurrency = $fallback.data("productcurrency"); 259 variantid = $fallback.children('.hiddenvariant').data("variantid"); 260 productname = $fallback.data("productname"); 261 variantname = $fallback.children('.hiddenvariant').data("variantname"); 262 variantprice = $fallback.children('.hiddenvariant').data('variant-price'); 263 formattedvariantprice = $fallback.children('.hiddenvariant').data("formatted-price"); 264 formattedpricetaxed = $fallback.children('.hiddenvariant').data("formatted-pricetaxed"); 265 variantpricetaxed = $fallback.children('.hiddenvariant').data("variant-pricetaxed"); 266 } 267 268 269 }else{ 270 271 currency = $(this).data("currency"); 272 price = $(this).data('price'); 273 formattedprice = $(this).data('formatted-price'); 274 $(this).parent().parent().parent().parent().parent().children('.card-footer').children('strong').children('.number-price').text(formattedprice+ ' ' + currency) 275 productid = $(this).data("productid"); 276 multipleeventid = $(this).data("eventid"); 277 278 multiplecurrency = $(this).data("productcurrency"); 279 variantid = $(this).data("variantid"); 280 productname = $(this).data("productname"); 281 variantname = $(this).data("variantname"); 282 variantprice = $(this).data("price"); 283 formattedvariantprice = $(this).data("formatted-price"); 284 formattedpricetaxed = $(this).data("formatted-pricetaxed"); 285 variantpricetaxed = $(this).data("taxed-price"); 286 287 } 288 289 $('#productid').val(productid); 290 $('#eventid').val(multipleeventid); 291 292 293 294 $('input[name="tx_eventbooking_eventsignup[newEventSubscription][currenci]"]').val(currency); 295 $('#productattributid').val(variantid); 296 $('.bestell-uebersicht ul li.ticket').html(productname + "<br>" + variantname + " " + formattedvariantprice + " " + currency); 297 $('.finalprice').html(formattedvariantprice+" "+currency + " zzgl. MwSt."); 298 $('.finalpriceinklmwst').html("Gesamt: "+formattedpricetaxed+" "+currency + " inkl. MwSt."); 299 var scriptTag = $('script[data-academy-update="updateCurrency"]'); 300 var oldSrc = scriptTag.attr('src'); 301 var newSrc = oldSrc.replace(/currency=[A-Z]{3}/, 'currency=' + currency); 302 scriptTag.attr('src', newSrc); 303 $('#billableprice').html(variantpricetaxed); 304 $('#pricepaid').val(variantpricetaxed); 305 306 }); 307 $('.ticket-card .btn').on('click', function() { 308 if($(this).parent('.ticket-card').hasClass('block-expand')){ 309 310 }else{ 311 $('.variantwrapper').each(function() { 312 if($(this).hasClass('hidden')){ 313 314 }else{ 315 316 } 317 }); 318 if($(this).parent('.ticket-card ').children('.form-group').children('.variantwrapper').length){ 319 320 } 321 } 322 323 324 }); 325 if($('#gutschein').val()){ 326 $('#checkgutschein').trigger(click); 327 } 328 if(($('#productid').val()) && ($('#productattributid').val())){ 329 $('input[name=variant]').trigger('change'); 330 } 331 $('#checkgutschein').on( 'click', function() { 332 333 var code = $('#gutschein').val(); 334 var settings = { 335 "async": true, 336 "crossDomain": true, 337 "url": "https://crm.esb-online.com/api/v1.0/cms/voucher", 338 "method": "POST", 339 "headers": { 340 "X-Authorization": "ESB-PROD-CMS-30520aff3baf019a2fd2227779801e8e42c252e1eba9673f13e628446625fba03aefc87685d3c5dc", 341 "Content-Type": "application/x-www-form-urlencoded", 342 "Accept": "application/json", 343 "Cache-Control": "no-cache" 344 345 }, 346 "data": { 347 "voucher": code 348 } 349 } 350 351 $.ajax(settings).done(function (response) { 352 const responseEventId = (response && response.product_data_info && typeof response.product_data_info.productable_id !== 'undefined') 353 ? response.product_data_info.productable_id 354 : ''; 355 let relatedEventIdsRaw = $('#gutschein').attr('data-events'); 356 let relatedEventIds = relatedEventIdsRaw ? relatedEventIdsRaw.split(',').map(id =>
356 id.trim()).filter(Boolean) : []; 357 if ( 358 response['message'] == 'Code valid' 359 && responseEventId !== '' 360 && relatedEventIds.includes(responseEventId.toString()) 361 && relatedEventIds.length > 0 362 && response['product_data_info'] != null 363 || response['message'] == 'Code valid' 364 && relatedEventIds.length === 0 365 && response['product_data_info'] != null 366 ){ 367 if($('.voucher-notice').hasClass('failure')){ 368 $('.voucher-notice').removeClass('failure') 369 } 370 $('.voucher-notice').addClass('success'); 371 var responsemessage = "Dein Gutscheincode für das Ticket | "+response['product_data_info']['product_name']+" | "+response['product_data_info']['attribute_name']+" | wurde erfolgreich eingelöst! Du erhälst das Ticket zum Preis von "+formatNumbers(response['price_netto_discount'])+" "+response['currency']+". Die Auswahl der Ticketoptionen wurde gemäss deines Gutscheins eingeschränkt."; 372 373 if(formatNumbers(response['price_netto_discount']) == '0') { 374 $('.payment .options input').each(function(){ 375 if($(this).val() == "Partner"){ 376 $(this).prop('checked', true); 377 }else{ 378 $(this).prop('checked', false); 379 } 380 }); 381 $(".payment .options .checkcontainer.payment-option").css("display", "none"); 382 $('.checkcontainer.gender-container.online-payment-container.payment-option').after("<div class=\"payment-partner-notice\">Als ESB Partner ist dieses Event für Dich kostenlos.</div>"); 383 } else { 384 $('.payment .options input').each(function(){ 385 $(this).prop('checked', false); 386 }); 387 $(".payment .options .checkcontainer.payment-option").css("display", "block"); 388 $(".payment-partner-notice").remove(); 389 } 390 391 var voucher = $('#gutschein').val(); 392 var pid = response['product_data_info']['pid']; 393 var paid = response['product_data_info']['paid']; 394 var multipleeventid = $(".checkcontainer input").data("eventid"); 395 var ticketfound = 0; 396 $('.tx-eventbooking .header input:radio[name=variant]').each(function () { 397 if(($(this).data('productid') == pid) && ($(this).data('variantid') == paid)){ 398 $(this).prop('checked', true); 399 $(this).trigger('change'); 400 if($(this).parent().parent().parent().hasClass('hidden')){ 401 $(this).parent().parent().parent().toggleClass('hidden'); 402 } 403 $('.finalprice').html(formatNumbers(response['price_netto_discount'])+" "+response['currency'] + " zzgl. MwSt."); 404 var discount = response['price_netto_discount']; 405 var discountaxed = response['price_taxed_discount']; 406 $('#billableprice').html(discountaxed); 407 $('#pricepaid').val(discountaxed); 408 409 410 ticketfound = 1; 411 $(this).prop('disabled', true); 412 $(this).prop('required', false); 413 }else{ 414 $(this).prop('checked', false); 415 $(this).prop('disabled', true); 416 $(this).prop('required', false); 417 } 418 }); 419 if(ticketfound == 1){ 420 $( ".ticket-card" ).each(function() { 421 $( this ).addClass( "block-expand" ); 422 }); 423 $('.ticket').html(""); 424 $('li.voucher').html("Gutschein: " + response['product_name'] + "<br>Reduzierter Preis: " + formatNumbers(response['price_netto_discount'])+ " " + response['product_data_info']['currency']); 425 $('.finalpriceinklmwst').html("Gesamt: "+formatNumbers(response['price_taxed_discount'])+" CHF inkl. MwSt.") 426 if($('.form-fields-signup').hasClass('hidden')){ 427 $('.form-fields-signup').removeClass('hidden'); 428 if($('.form-fields-signup-dont-forget ').hasClass('hidden')){ 429 430 }else{ 431 $('.form-fields-signup-dont-forget ').addClass('hidden'); 432 } 433 } 434 }else{ 435 436 var notregisteredvariantvalid = 1; 437 438 if(notregisteredvariantvalid >= 1){ 439 $('.finalprice').html(formatNumbers(response['price_netto_discount'])+" "+response['currency'] + " zzgl. MwSt."); 440 $('.finalpriceinklmwst').html("Gesamt: "+formatNumbers(response['price_taxed_discount'])+" "+response['currency'] + " inkl. MwSt."); 441 var discount = response['price_netto_discount']; 442 var discountaxed = response['price_taxed_discount']; 443 $("#currenci").val(response['currency']) 444 $('#productid').val(pid); 445 $('#eventid').val(multipleeventid); 446 $('#productattributid').val(paid); 447 448 449 450 $('#billableprice').html(discountaxed.toFixed(2)); 451 $('#pricepaid').val(discountaxed.toFixed(2)); 452 var responsemessage = "Dein Gutscheincode für das Ticket | "+response['product_data_info']['product_name']+" | "+response['product_data_info']['attribute_name']+" | wurde erfolgreich eingelöst! Du erhälst das Ticket zum Preis von "+formatNumbers(response['price_netto_discount'])+" "+response['currency']+". Die Auswahl der Ticketoptionen wurde gemäss deines Gutscheins eingeschränkt."; 453 454 if($('.form-fields-signup').hasClass('hidden')){ 455 $('.form-fields-signup').removeClass('hidden'); 456 457 if($('.form-fields-signup-dont-forget ').hasClass('hidden')){ 458 459 }else{ 460 $('.form-fields-signup-dont-forget ').addClass('hidden'); 461 } 462 } 463 $('li.ticket').html(""); 464 $('li.voucher').html("Gutschein: " + response['product_name'] + "<br>Reduzierter Preis: " + formatNumbers(response['price_netto_discount'])+ " " + response['product_data_info']['currency']); 465 $( ".ticket-card" ).each(function() { 466 $( this ).addClass( "block-expand" ); 467 }); 468 activateStep2(); 469 $('.step-1').removeClass("current-step"); 470 $('.step-2').addClass("current-step"); 471 $('.bread-step-1').removeClass('active'); 472 $('.bread-step-1').addClass('completed'); 473 474 }else{ 475 $('.voucher-notice').addClass('failure'); 476 var responsemessage = "Es konnte kein passendes Ticket zu deinem Gutschein gefunden werden, bitte kontaktiere uns unter [email protected]"; 477 478 } 479 480 481 } 482 483 } else if ( 484 response['message'] == 'Code valid' 485 && response['product_data_info'] == null 486 && response['discount'] != null 487 && isFinite(Number(response['discount'])) 488 ) { 489 var responsemessage; 490 var $vRadio = $('.tx-eventbooking .header input:radio[name=variant]:checked'); 491 if (!$vRadio.length) { 492 $vRadio = $('.tx-eventbooking .header input:radio[name=variant]').first(); 493 $vRadio.prop('checked', true); 494 } 495 var pricing = resolveVariantPricingFromRadio($vRadio); 496 var pageEventId = pricing ? pricing.multipleeventid : null; 497 var eventOkForUnbound = (relatedEventIds.length === 0) 498 || (pageEventId != null && pageEventId !== '' && relatedEventIds.includes(String(pageEventId))); 499 500 if (!pricing || !eventOkForUnbound) { 501 if ($('.voucher-notice').hasClass('success')) { 502 $('.voucher-notice').removeClass('success'); 503 } 504 $('.voucher-notice').addClass('failure');
505 responsemessage = "Der Gutscheincode scheint ungültig zu sein, bitte überprüfe deine Eingabe oder kontaktiere uns unter [email protected]"; 506 } else { 507 var rawDiscount = Number(response['discount']); 508 var discountRate = rawDiscount > 1 ? rawDiscount / 100 : rawDiscount; 509 if (!isFinite(discountRate)) { 510 discountRate = 0; 511 } 512 discountRate = Math.min(1, Math.max(0, discountRate)); 513 var factor = 1 - discountRate; 514 var priceNettoDiscount = pricing.priceNetto * factor; 515 var priceTaxedDiscount = pricing.variantpricetaxed * factor; 516 517 if ($('.voucher-notice').hasClass('failure')) { 518 $('.voucher-notice').removeClass('failure'); 519 } 520 $('.voucher-notice').addClass('success'); 521 522 if (formatNumbers(priceNettoDiscount) == '0') { 523 $('.payment .options input').each(function () { 524 if ($(this).val() == "Partner") { 525 $(this).prop('checked', true); 526 } else { 527 $(this).prop('checked', false); 528 } 529 }); 530 $(".payment .options .checkcontainer.payment-option").css("display", "none"); 531 $('.checkcontainer.gender-container.online-payment-container.payment-option').after("<div class=\"payment-partner-notice\">Als ESB Partner ist dieses Event für Dich kostenlos.</div>"); 532 } else { 533 $('.payment .options input').each(function () { 534 $(this).prop('checked', false); 535 }); 536 $(".payment .options .checkcontainer.payment-option").css("display", "block"); 537 $(".payment-partner-notice").remove(); 538 } 539 540 var displayCurrency = pricing.currency || ''; 541 $('input[name="tx_eventbooking_eventsignup[newEventSubscription][currenci]"]').val(displayCurrency); 542 $("#currenci").val(displayCurrency); 543 $('#productid').val(pricing.productid); 544 $('#eventid').val(pricing.multipleeventid); 545 $('#productattributid').val(pricing.variantid); 546 547 $('.finalprice').html(formatNumbers(priceNettoDiscount) + " " + displayCurrency + " zzgl. MwSt."); 548 $('.finalpriceinklmwst').html("Gesamt: " + formatNumbers(priceTaxedDiscount) + " " + displayCurrency + " inkl. MwSt."); 549 $('#billableprice').html(priceTaxedDiscount.toFixed(2)); 550 $('#pricepaid').val(priceTaxedDiscount.toFixed(2)); 551 552 var scriptTagVoucher = $('script[data-academy-update="updateCurrency"]'); 553 if (scriptTagVoucher.length && displayCurrency) { 554 var oldSrcV = scriptTagVoucher.attr('src'); 555 if (oldSrcV && oldSrcV.indexOf('currency=') !== -1) { 556 scriptTagVoucher.attr('src', oldSrcV.replace(/currency=[A-Z]{3}/, 'currency=' + displayCurrency)); 557 } 558 } 559 560 $('.bestell-uebersicht ul li.ticket').html(pricing.productname + "<br>" + pricing.variantname + " " + formatNumbers(priceNettoDiscount) + " " + displayCurrency); 561 $('li.voucher').html("Gutschein: " + response['product_name'] + "<br>Reduzierter Preis: " + formatNumbers(priceNettoDiscount) + " " + displayCurrency); 562 563 $(".ticket-card").each(function () { 564 $(this).addClass("block-expand"); 565 }); 566 567 if ($('.form-fields-signup').hasClass('hidden')) { 568 $('.form-fields-signup').removeClass('hidden'); 569 if ($('.form-fields-signup-dont-forget ').hasClass('hidden')) { 570 571 } else { 572 $('.form-fields-signup-dont-forget ').addClass('hidden'); 573 } 574 } 575 576 var pctOff = Math.round(discountRate * 1000) / 10; 577 responsemessage = "Dein Gutscheincode (" + response['product_name'] + ") wurde eingelöst! Du erhältst " + pctOff + "% Rabatt auf den gewählten Ticketpreis (reduziert auf " + formatNumbers(priceNettoDiscount) + " " + displayCurrency + " zzgl. MwSt.)."; 578 } 579 } else { 580 if($('.voucher-notice').hasClass('success')){ 581 $('.voucher-notice').removeClass('success') 582 } 583 $('.voucher-notice').addClass('failure');
584 var responsemessage = "Der Gutscheincode scheint ungültig zu sein, bitte überprüfe deine Eingabe oder kontaktiere uns unter [email protected]"; 585 } 586 587 $('.voucher-notice').text(responsemessage); 588 }); 589 }); 590 $('#finalsubmit').on('click', function(e) { 591 // Only prepare the form here. Do NOT call .submit() manually: 592 // #finalsubmit is already a submit button, so a second submit would 593 // run the AJAX/PayPal flow twice and render duplicate PayPal buttons. 594 var $paymentInputs = $("input[name='tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]']"); 595 var $visibleInputs = $paymentInputs.filter(function() { 596 var $container = $(this).closest('.checkcontainer'); 597 return $container.length === 0 || ($container.is(":visible") && $container.css('display') !== 'none'); 598 }); 599 if ($visibleInputs.length === 0) { 600 var $partnerInput = $paymentInputs.filter("[value='Partner']"); 601 if ($partnerInput.length) { 602 $partnerInput.prop("checked", true).trigger('change'); 603 } 604 } 605 }); 606 607 608 609 610 $('#eventsignupform').submit(function(e){ 611 if(($('#eventsignupform').hasClass('crmapproved') && $('#eventsignupform').hasClass('paymentbilling')) || ($('#eventsignupform').hasClass('crmapproved') && $('#eventsignupform').hasClass('paymentonline') && $('#eventsignupform').hasClass('paymentcompleted'))){ 612 613 }else{ 614 e.preventDefault(); 615 if(document.querySelector('input[name="tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]"]:checked').value != null){ 616 $('.crm-errors ul').removeClass(); 617 618 $.ajax({ 619 url: 'index.php?eID=getsignupinfo', 620 type: "POST", 621 data : $("#eventsignupform").serialize(), 622 dataType: 'json', 623 624 success: function(data) { 625 626 if(data['errors']){ 627 $('.crm-errors ul').html(''); 628 if($(".crm-errors ul").hasClass('activewarnings')){ 629 $(".crm-errors ul").removeClass('activewarnings'); 630 } 631 $('.crm-errors ul').addClass('activeerrors'); 632 $.each(data['errors'] , function(index, val) { 633 634 $('.crm-errors ul').append('<li>Feld: '+val+'</li>'); 635 636 }); 637 638 }else{ 639 if(data['status'] >= 422){ 640 $('.crm-errors ul').html(''); 641 if($(".crm-errors ul").hasClass('activeerrors')){ 642 $(".crm-errors ul").removeClass('activeerrors'); 643 } 644 $('.crm-errors ul').addClass('activewarnings'); 645 $('.crm-errors ul').html('<li>'+data['message']+'</li>'); 646 }else if(data['status'] == 200){ 647 $('.crm-errors ul').html(''); 648 $('#eventsignupform').addClass('crmapproved'); 649 650 if(data[0]['payment'] == "Online"){ 651 $('#eventsignupform').addClass('paymentonline'); 652 if($('#paypal-button-container').hasClass('hidden')){ 653 $('#paypal-button-container').removeClass('hidden'); 654 $('.submit-wrapper').addClass('hidden'); 655 } 656 657 // Prevent duplicate PayPal buttons on repeated submit/AJAX success 658 if ($('#paypal-button-container').data('paypal-rendered')) { 659 return; 660 } 661 $('#paypal-button-container').data('paypal-rendered', true); 662 663 paypal.Buttons({ 664 createOrder: function(data, actions) { 665 var amount = parseFloat($('#billableprice').text()); 666 if (!isFinite(amount) || amount <= 0) { 667 throw new Error('Ungueltiger Betrag fuer PayPal'); 668 } 669 670 return actions.order.create({ 671 application_context: { 672 shipping_preference: 'NO_SHIPPING' 673 }, 674 purchase_units: [{ 675 description: 'ESB Event Registrierung', 676 amount: { 677 currency_code: $('#currenci').val(), 678 value: amount.toFixed(2) 679 } 680 }], 681 }); 682 }, 683 onApprove: function(data, actions) { 684 685 return actions.order.capture().then(function(details) { 686 var captureId = ''; 687 if (details && details.purchase_units && details.purchase_units[0] && details.purchase_units[0].payments && details.purchase_units[0].payments.captures && details.purchase_units[0].payments.captures[0]) { 688 captureId = details.purchase_units[0].payments.captures[0].id; 689 } 690 691 if (!captureId) { 692 throw new Error('Keine Capture-ID von PayPal erhalten'); 693 } 694 695 $('#transcode').val(captureId); 696 $('#paypal-order-id').val(data.orderID || ''); 697 $('#paypal-capture-id').val(captureId); 698 $('#payment-verified').val('1'); 699 700 $('#eventsignupform').addClass('paymentcompleted'); 701 $('#eventsignupform').submit(); 702 // This function shows a transaction success message to your buyer. 703 704 }); 705 }, 706 onError: function (err) { 707 console.log(err); 708 return false;
709 } 710 }).render('#paypal-button-container'); 711 }else{ 712 $('#eventsignupform').addClass('paymentbilling'); 713 $('#eventsignupform').submit(); 714 } 715 716 } 717 } 718 719 720 721 }, 722 error: function(error) { 723 724 } 725 }); 726 } 727 728 729 } 730 731 732 }); 733 $(".payment input").change( function() { 734 if($("#eventsignupform").hasClass('crmapproved') && $("#eventsignupform").hasClass('paymentonline')){ 735 $("#eventsignupform").removeClass('crmapproved'); 736 $("#eventsignupform").removeClass('paymentonline'); 737 $("#eventsignupform").removeClass('paymentcompleted'); 738 $('#transcode').val(''); 739 $('#paypal-order-id').val(''); 740 $('#paypal-capture-id').val(''); 741 $('#payment-verified').val('0'); 742 743 if($('.submit-wrapper').hasClass('hidden')){ 744 $('.submit-wrapper').removeClass('hidden'); 745 $('#paypal-button-container').addClass('hidden'); 746 } 747 748 } 749 }); 750 751 $( "input[name='variant']" ).change(function() { 752 753 if(($("#billableprice").html() == 0) || ($("#billableprice").html() == 0.00)){ 754 755 $('.payment .options input').each(function(){ 756 if($(this).val() == "Partner"){ 757 $(this).prop('checked', true); 758 }else{ 759 $(this).prop('checked', false); 760 } 761 }); 762 if(($("#eventsignupform .payment").hasClass('hidden') || $(".payment .options .checkcontainer.payment-option").css("display") == 'none')){ 763 764 }else{ 765 $(".payment .options .checkcontainer.payment-option").css("display", "none"); 766 767 $('.checkcontainer.gender-container.online-payment-container.payment-option').after("<div class=\"payment-partner-notice\">Als ESB Partner ist dieses Event für Dich kostenlos.</div>"); 768 769 770 } 771 }else{ 772 $('.payment .options input').each(function(){ 773 if($(this).val() == "Partner"){ 774 $(this).prop('checked', false); 775 } 776 }); 777 778 if($("#eventsignupform .payment").hasClass('hidden')){ 779 $("#eventsignupform .payment").removeClass('hidden'); 780 } 781 } 782 }); 783 784 785 var getUrlParameter = function getUrlParameter(sParam) { 786 var sPageURL = window.location.search.substring(1), 787 sURLVariables = sPageURL.split('&'), 788 sParameterName, 789 i; 790 791 for (i = 0; i < sURLVariables.length; i++) { 792 sParameterName = sURLVariables[i].split('='); 793 794 if (sParameterName[0] === sParam) { 795 return typeof sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); 796 } 797 } 798 return false; 799 }; 800 var layerpush = getUrlParameter('ticketordersuccess'); 801 802 if(layerpush == 1){ 803 804 805 806 window.dataLayer = window.dataLayer || []; 807 window.dataLayer.push({ 808 event: 'purchase', 809 ecommerce: { 810 currency: getUrlParameter('currency'), 811 value: getUrlParameter('value'), // order total (+ taxes) 812 transaction_id: getUrlParameter('transaction_id'), // maybe invoice number? 813 items: [{ 814 item_name: getUrlParameter('item_name'), // dynamic 815 item_id: getUrlParameter('item_id'), // dynamic 816 price: getUrlParameter('price'), // dynamic 817 item_category: 'Event Ticket', // please set dynamic values 818 quantity: '1' // dynamic 819 }] 820 } 821 }); 822 823 824 } 825 826 827 828 $('input[name="tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]"]').change(function() { 829 if($("#paypal-button-container").children("div").length){ 830 $("#paypal-button-container").children("div").remove(); 831 } 832 $('#paypal-button-container').removeData('paypal-rendered'); 833 $('#transcode').val(''); 834 $('#paypal-order-id').val(''); 835 $('#paypal-capture-id').val(''); 836 $('#payment-verified').val('0'); 837 838 }); 839 840 function activateStep2(){ 841 $('.payment .options input').each(function(){ 842 if($(this).val() == "Partner"){ 843 $(this).prop('checked', false); 844 } 845 }); 846 if($('input[name="tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]"]').prop('checked', true)){ 847 $('input[name="tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]"]').prop('checked', false); 848 } 849 850 $('.step-1').removeClass("current-step"); 851 $('.step-2').addClass("current-step"); 852 $('.bread-step-1').removeClass('active'); 853 $('.bread-step-1').addClass('completed'); 854 $('.bread-step-1 a').append($('.bread-step-0').find('img').clone()); 855 $('.bread-step-2').addClass('active'); 856 } 857 function activateStep3(){ 858 $('.payment .options input').each(function(){ 859 if($(this).val() == "Partner"){ 860 $(this).prop('checked', false); 861 } 862 }); 863 if($('input[name="tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]"]').prop('checked', true)){ 864 $('input[name="tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]"]').prop('checked', false); 865 } 866 if($('.bread-step-2').hasClass('completed')){ 867 $('.bread-step-2').removeClass('completed'); 868 $('.bread-step-2').children("a").children("img").remove(); 869 } 870 $('.step-2').removeClass("current-step"); 871 $('.step-3').addClass("current-step"); 872 $('.bread-step-2').removeClass('active'); 873 $('.bread-step-2').addClass('completed'); 874 $('.bread-step-2 a').append("<img src=\"fileadmin/user_upload/Check.svg\">"); 875 $('.bread-step-3').addClass('active'); 876 $('.weiterbutton').hide(); 877 878 } 879 880 881 882 883 $('.weiterbutton').on('click', function() { 884 885 //Step forward 886 if($('.step-1').hasClass("current-step")){ 887 if($('#productattributid').val() != ""){ 888 activateStep2(); 889 } 890 891 }else if($('.step-2').hasClass("current-step")){ 892 if($('#eventsignupform').hasClass('crmapproved')){ 893 894 }else{ 895 $.ajax({ 896 url: 'index.php?eID=getsignupinfo', 897 type: "POST", 898 data : $("#eventsignupform").serialize(), 899 dataType: 'json', 900 901 success: function(data) { 902 903 if(data['errors']){ 904 $('.crm-errors ul').html(''); 905 if($(".crm-errors ul").hasClass('activewarnings')){ 906 $(".crm-errors ul").removeClass('activewarnings'); 907 } 908 $('.crm-errors ul').addClass('activeerrors'); 909 $.each(data['errors'] , function(index, val) { 910 911 $('.crm-errors ul').append('<li>Feld: '+val+'</li>'); 912 913 }); 914 915 }else{ 916 if(data['status'] >= 422){ 917 $('.crm-errors ul').html(''); 918 if($(".crm-errors ul").hasClass('activeerrors')){ 919 $(".crm-errors ul").removeClass('activeerrors'); 920 } 921 $('.crm-errors ul').addClass('activewarnings'); 922 $('.crm-errors ul').html('<li>'+data['message']+'</li>'); 923 }else if(data['status'] == 200){ 924 $('.crm-errors ul').html(''); 925 926 if(($('#termscondition').is(':checked')) && ($('#dataprivacy').is(':checked'))){ 927 if(($('#billingadress').prop('checked') == false) || 928 ($('input[name="tx_eventbooking_eventsignup[newEventSubscription][additionalcompany]"]').val() != '' && $('input[name="tx_eventbooking_eventsignup[newEventSubscription][additionalfirstname]"]').val() != '' && $('input[name="tx_eventbooking_eventsignup[newEventSubscription][additionallastname]"]').val() != '' && $('input[name="tx_eventbooking_eventsignup[newEventSubscription][additionalstreet]"]').val() != '' && $('input[name="tx_eventbooking_eventsignup[newEventSubscription][additionalpostcode]"]').val() != '' && $('input[name="tx_eventbooking_eventsignup[newEventSubscription][additionalcity]"]').val() != '' && $('input[name="tx_eventbooking_eventsignup[newEventSubscription][additionalcountry]"]').val() != '')){ 929 930 931 932 if($('#coronastatus').length){ 933 if(($('#datacorona').is(':checked')) && ($("#coronastatus :selected").val() >= 1)){ 934 $('#eventsignupform').addClass('crmapproved'); 935 activateStep3(); 936 }else{ 937 $('.crm-errors ul').addClass('activewarnings'); 938 $('.crm-errors ul').html('<li>Bitte akzeptieren Sie die Coronabedingten Zutrittregeln und wählen Sie einen 3G Nachweis.</li>'); 939 } 940 }else{ 941 if($("#managementstrecke").length){ 942 if($("#managementstrecke").val() && $("#managementday").val() && $("#managementmonth").val() && $("#managementyear").val()){ 943 $('#eventsignupform').addClass('crmapproved'); 944 activateStep3(); 945 }else{ 946 $('.crm-errors ul').addClass('activewarnings'); 947 $('.crm-errors ul').html('<li>Bitte überprüfen Sie die ausgewählte Strecke und das Geburtsdatum</li>'); 948 949 } 950 }else{ 951 $('#eventsignupform').addClass('crmapproved'); 952 activateStep3(); 953 } 954 955 } 956 957 }else{ 958 $('.crm-errors ul').addClass('activewarnings'); 959 $('.crm-errors ul').html('<li>
959Bitte vervollständigen Sie die Rechnungsadresse.</li>'); 960 } 961 962 }else{ 963 $('.crm-errors ul').addClass('activewarnings'); 964 $('.crm-errors ul').html('<li>Bitte akzeptieren Sie die AGB und Datenschutzbestimmungen</li>'); 965 } 966 967 968 }else{ 969 $('#eventsignupform').addClass('paymentbilling'); 970 971 } 972 973 } 974 } 975 976 977 978 }); 979 } 980 } 981 982 }); 983 984 $('.bread-step-1').on('click', function() { 985 if($("#gutschein").val() != ""){ 986 $("#gutschein").val(""); 987 $('.voucher-notice').removeClass('success'); 988 $('.voucher-notice').removeClass('failure'); 989 $('.voucher-notice').text(""); 990 } 991 992 $('.tx-eventbooking .header input:radio[name=variant]').each(function () { 993 $(this).prop('disabled', false); 994 }); 995 $('input[name="tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]"]:checked').prop('checked', false); 996 if($(this).hasClass("completed")){ 997 $( "#crouton li" ).each(function( index ) { 998 if($(this).hasClass("active")){ 999 $(this).removeClass("active"); 1000 } 1001 }); 1002 $( "#eventsignupform .container" ).each(function( index ) { 1003 if($(this).hasClass("current-step")){ 1004 $(this).removeClass("current-step"); 1005 } 1006 }); 1007 if($(".weiterbutton").is(":hidden")){ 1008 $(".weiterbutton").show(); 1009 } 1010 $(this).removeClass("completed"); 1011 $(this).children("a").children("img").remove(); 1012 $(this).addClass("active"); 1013 $(".container.step-1").addClass("current-step"); 1014 if($("#eventsignupform").hasClass("crmapproved")){ 1015 $("#eventsignupform").removeClass("crmapproved"); 1016 } 1017 } 1018 }); 1019 $('.bread-step-2').on('click', function() { 1020 $('input[name="tx_eventbooking_eventsignup[newEventSubscription][paymentmethod]"]:checked').prop('checked', false); 1021 if($(this).hasClass("completed")){ 1022 $( "#crouton li" ).each(function( index ) { 1023 if($(this).hasClass("active")){ 1024 $(this).removeClass("active"); 1025 } 1026 }); 1027 $( "#eventsignupform .container" ).each(function( index ) { 1028 if($(this).hasClass("current-step")){ 1029 $(this).removeClass("current-step"); 1030 } 1031 }); 1032 if($(".weiterbutton").is(":hidden")){ 1033 $(".weiterbutton").show(); 1034 } 1035 $(this).removeClass("completed"); 1036 $(this).children("a").children("img").remove(); 1037 $(this).addClass("active"); 1038 $(".container.step-2").addClass("current-step"); 1039 if($("#eventsignupform").hasClass("crmapproved")){ 1040 $("#eventsignupform").removeClass("crmapproved"); 1041 } 1042 if($('#productattributid').val() != ""){ 1043 if($('.bread-step-1').hasClass('completed')){ 1044 1045 }else{ 1046 $('.bread-step-1').removeClass('active'); 1047 $('.bread-step-1').addClass('completed'); 1048 $('.bread-step-1 a').append($('.bread-step-0').find('img').clone()); 1049 } 1050 1051 1052 } 1053 } 1054 if(($('#productattributid').val() != "") && ($('.bread-step-1').hasClass("active"))){ 1055 $('.weiterbutton').trigger('click'); 1056 } 1057 }); 1058 $('.step-2 input').on("invalid", function(e) { 1059 e.preventDefault(); 1060 }); 1061});
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.