PageSourceSearch

https://eisenheim.info/_Resources/Static/Packages/DigiPublica.Plat…/JavaScript/digiPortal.js?bust=400fc80c

js eisenheim.info collected 2026-10-03 01:53:13 UTC 142,009 bytes, 3,442 lines download raw bytes

1
2/* -----------------------------------------------
3PRELOADER
4----------------------------------------------- */
5
6jQuery(window).on('beforeunload', function(){
7  jQuery(".loader").fadeIn("slow");
8  jQuery("#overlayer").fadeIn("slow");
9});
10jQuery(window).on("load", function() {
11  jQuery(".loader").fadeOut("slow");
12  jQuery("#overlayer").fadeOut("slow");
13  localStorage.removeItem('name');
14  localStorage.removeItem('surname');
15  localStorage.removeItem('telephone');
16  localStorage.removeItem('quote');
17  localStorage.removeItem('email');
18  localStorage.removeItem('dateSelected');
19  localStorage.removeItem('timeSelected');
20  localStorage.removeItem('numberActivities');
21  localStorage.removeItem('firstSelecction');
22  localStorage.removeItem('firstTry');
23  localStorage.removeItem('firstBookNumber');
24});
25/* -----------------------------------------------------------------------------
26APPOINTMENTS
27----------------------------------------------------------------------------- */
28
29domain =window.location.hostname;
30
31//Activities zum Action senden
32jQuery('.progression .prog').click(function() {
33  if(jQuery(this).hasClass('active')) {
34    jQuery('.progression .prog').removeClass('current');
35    jQuery(this).addClass('current');
36    if (jQuery(this).data('step')===1) {
37      jQuery('.progression').addClass('prog1').removeClass('prog2 prog3 prog4');
38      jQuery('.modal.appointment .modal-views').addClass('step1');
39      jQuery('.modal.appointment .modal-views').removeClass('step2');
40      jQuery('.modal.appointment .modal-views').removeClass('step3');
41      jQuery('.modal.appointment .modal-views').removeClass('step4');
42    } else if (jQuery(this).data('step')===2) {
43      jQuery('.progression').addClass('prog2').removeClass('prog1 prog3 prog4');
44      jQuery('.modal.appointment .modal-views').addClass('step2');
45      jQuery('.modal.appointment .modal-views').removeClass('step1');
46      jQuery('.modal.appointment .modal-views').removeClass('step3');
47      jQuery('.modal.appointment .modal-views').removeClass('step4');
48    } else if (jQuery(this).data('step')===3) {
49      jQuery('.progression').addClass('prog3').removeClass('prog1 prog2 prog4');
50      jQuery('.modal.appointment .modal-views').addClass('step3');
51      jQuery('.modal.appointment .modal-views').removeClass('step1');
52      jQuery('.modal.appointment .modal-views').removeClass('step2');
53      jQuery('.modal.appointment .modal-views').removeClass('step4');
54    } else if (jQuery(this).data('step')===4) {
55      jQuery('.progression').addClass('prog4').removeClass('prog1 prog2 prog3');
56      jQuery('.modal.appointment .modal-views').addClass('step4');
57      jQuery('.modal.appointment .modal-views').removeClass('step1');
58      jQuery('.modal.appointment .modal-views').removeClass('step2');
59      jQuery('.modal.appointment .modal-views').removeClass('step3');
60    }
61  }
62});
63
64
65jQuery(document).ready(function() {
66  footerHeight = jQuery('.modal.appointment .view-content.info .modal-footer').outerHeight();
67
68  jQuery('.view-content.info').css({
69    "padding-top": "0",
70    "padding-right": "0",
71    "padding-bottom": footerHeight,
72    "padding-left": "0"
73  });
74});
75
76jQuery("#start-appointments").click(function() {
77  jQuery('.progression').addClass('prog2').removeClass('prog1 prog3 prog4');
78  jQuery('.progression .prog[data-step="2"]').addClass('active').removeClass('inactive');
79  jQuery('.progression .prog').removeClass('current');
80  jQuery('.progression .prog[data-step="2"]').addClass('current');
81  jQuery('.modal.appointment .modal-views').addClass('step2');
82  jQuery('.modal.appointment .modal-views').removeClass('step1');
83  jQuery('.modal.appointment .modal-views').removeClass('step3');
84  jQuery('.modal.appointment .modal-views').removeClass('step4');
85  footerHeight = jQuery('.modal.appointment .view-content.activities .modal-footer').outerHeight();
86  jQuery('.view-content.activities').css({
87    "padding-top": "0",
88    "padding-right": "0",
89    "padding-bottom": footerHeight,
90    "padding-left": "0"
91  });
92});
93
94jQuery(".view-content.activities .btn-back").click(function() {
95  jQuery('.progression').addClass('prog1').removeClass('prog2 prog3 prog4');
96  jQuery('.progression .prog[data-step="1"]').addClass('active').removeClass('inactive');
97  jQuery('.progression .prog').removeClass('current');
98  jQuery('.progression .prog[data-step="1"]').addClass('current');
99  jQuery('.modal.appointment .modal-views').addClass('step1');
100  jQuery('.modal.appointment .modal-views').removeClass('step2');
101  jQuery('.modal.appointment .modal-views').removeClass('step3');
102  jQuery('.modal.appointment .modal-views').removeClass('step4');
103  footerHeight = jQuery('.modal.appointment .view-content.activities .modal-footer').outerHeight();
104  jQuery('.view-content.activities').css({
105    "padding-top": "0",
106    "padding-right": "0",
107    "padding-bottom": footerHeight,
108    "padding-left": "0"
109  });
110});
111
112
113jQuery(".appointments").change(function() {
114  if (jQuery("#appForm input:checkbox:checked").length > 0) {
115    //any one is checked
116    jQuery("#datenButton").prop('disabled',false);
117  }else{
118    // none is checked
119    jQuery("#datenButton").prop('disabled',true);
120  }
121});
122
123
124jQuery(".times").click(function(){
125  jQuery("#reviewButton").prop('disabled',false);
126});
127jQuery('.view-content.times label.times').click(function() {
128  jQuery(this).addClass("radio-selected");
129  if(jQuery('.view-content.times label input[type="radio"]').is(':checked')) { alert("it's checked"); }
130});
131
132/*Sebastian, ich hab diese function nur vorübergehend nochmal erstellt */
133jQuery(".appointments").click(function(){
134  jQuery(".times").html("");
135});
136
137jQuery(document).ready(function() {
138  if(getUrlParameter('appactsuccess') || getUrlParameter('appacterror') || getUrlParameter('appsendsuccess') || getUrlParameter('appMitsendsuccess') || getUrlParameter('appMitsenderror') || getUrlParameter('appsenderror') || getUrlParameter('deletesuccess') || getUrlParameter('deleteerror') || getUrlParameter('changesuccess') || getUrlParameter('changeerror')) {
139    jQuery("body").addClass("modal-open");
140    jQuery(".modal.appointment").show();
141    var modalHeadHeight = jQuery('.modal.appointment .modal-head').outerHeight();
142    jQuery('.modal-views').css('height', 'calc(100% - ' + modalHeadHeight + 'px)');
143    jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").addClass('message');
144    if(getUrlParameter('appactsuccess')) {
145      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Ihr Termin wurde erfolgreich bestätigt.</h5><p>Sie können das Fenster nun schließen</p>");
146    }
147    if(getUrlParameter('appacterror')) {
148      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Da ist etwas schiefgelaufen.</h5><p>Wir konnten Ihren Termin nicht bestätigen. Bitte versuchen Sie es noch einmal. Sollte es widererwarten nicht funktionieren, vereinbaren Sie bitte einen neuen Termin.</p>");
149    }
150    if(getUrlParameter('appsendsuccess')) {
151      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin:1rem 0;'>Ihre Terminvereinbarung wurde abgesendet.<br><span style='font-weight:normal;'>Wir haben Ihnen eine E-Mail mit Ihrem vereinbarten Termin zugesendet.</span></h5><p><svg><use xlink:href='#fas-fa-info-circle'></use></svg><strong style='color:#34a665;'>Bitte bestätigen Sie Ihren Termin mit dem Link in der E-Mail.<br>Erst dann ist dieser final vereinbart.</strong><br><br><strong>Bitte prüfen Sie auch Ihren SPAM-Ordner, falls Sie in den nächsten Minuten keine Bestätigung erhalten</strong><br><br>Vielen Dank und herzliche Grüße.<p>");
152    }
153    if(getUrlParameter('appMitsendsuccess')) {
154      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Termin erfolgreich gebucht</h5><p>Sie finden den Termin in der Terminverwaltung.</p>");
155    }
156    if(getUrlParameter('appMitsenderror')) {
157      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Da ist etwas schiefgelaufen.</h5><p>Bitte buchen Sie einen neuen Termin.</p>");
158    }
159    if(getUrlParameter('appsenderror')) {
160      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Da ist etwas schiefgelaufen.</h5><p>Wir konnten Ihren Termin nicht absenden. Bitte vereinbaren Sie einen neuen Termin. Sollte es widererwarten nicht funktionieren, melden Sie sich bitte telefonisch oder per E-Mail.</p>");
161    }
162    if(getUrlParameter('deletesuccess')){
163      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Ihr Termin wurde erfolgreich storniert.</h5><p>Sie können jetzt oder später gerne einen neuen Termin vereinbaren.</p>");
164    }
165    if(getUrlParameter('deleteerror')){
166      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Da ist etwas schiefgelaufen.</h5><p>Wir konnten Ihren Termin nicht stornieren. Bitte versuchen Sie es noch einmal. Sollte es widererwarten nicht funktionieren, melden Sie sich bitte telefonisch oder per E-Mail.");
167    }
168    if(getUrlParameter('changesuccess')){
169      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Termin erfolgreich verschoben</h5>");
170    }
171    if(getUrlParameter('changeerror')){
172      jQuery(".modal.appointment .modal-views .view-content.info > div:first-of-type").html("<h5 style='margin-top:1rem;'>Ups, etwas ist schief gelaufen, wir können Ihren Termin nicht ändern</h5>");
173    }
174
175    jQuery(".modal.appointment .modal-views .view-content.info .modal-footer").html("<button type='submit' id='start-appointments'>Neuer Termin</button>");
176
177    jQuery("#start-appointments").click(function() {
178      jQuery('.progression').addClass('prog2').removeClass('prog1 prog3 prog4');
179      jQuery('.progression .prog[data-step="2"]').addClass('active').removeClass('inactive');
180      jQuery('.progression .prog').removeClass('current');
181      jQuery('.progression .prog[data-step="2"]').addClass('current');
182      jQuery('.modal.appointment .modal-views').addClass('step2');
183      jQuery('.modal.appointment .modal-views').removeClass('step1');
184      jQuery('.modal.appointment .modal-views').removeClass('step3');
185      jQuery('.modal.appointment .modal-views').removeClass('step4');
186      footerHeight = jQuery('.modal.appointment .view-content.activities .modal-footer').outerHeight();
187      jQuery('.view-content.activities').css({
188        "padding-top": "0",
189        "padding-right": "0",
190        "padding-bottom": footerHeight,
191        "padding-left": "0"
192      });
193    });
194    jQuery('.cancel').click(function() {
195      jQuery(this).closest('.modal').hide();
196      jQuery('body').removeClass('modal-open');
197    });
198  }
199});
200
201
202jQuery(document).ready(function() {
203  if(getUrlParameter('terminvereinbarung')) {
204    jQuery(".modal.appointment").show();
205  }
206});
207
208jQuery(document).ready(function() {
209  if(getUrlParameter('wahleinweisung')) {
210    jQuery('.view-content.activities .activity').hide();
211    jQuery('.view-content.activities .activity.id6062').show();
212    jQuery('.view-content.activities .div-suche select[name="resources"]').prop("disabled", true);
213    jQuery('.view-content.activities .div-suche #word-filter').prop("disabled", true);
214    jQuery(".modal.appointment").show(0, function() {
215      var modalHeadHeight = jQuery('.modal.appointment .modal-head').outerHeight();
216      jQuery('.modal-views').css('height', 'calc(100% - ' + modalHeadHeight + 'px)');
217      jQuery(this).addClass("wahlhelfer");
218      jQuery('.progression').addClass('prog2').removeClass('prog1 prog3 prog4');
219      jQuery('.progression .prog[data-step="2"]').addClass('active').removeClass('inactive');
220      jQuery('.progression .prog').removeClass('current');
221      jQuery('.progression .prog[data-step="2"]').addClass('current');
222      jQuery('.modal.appointment .modal-views').addClass('step2');
223      jQuery('.modal.appointment .modal-views').removeClass('step1');
224      jQuery('.modal.appointment .modal-views').removeClass('step3');
225      jQuery('.modal.appointment .modal-views').removeClass('step4');
226    });
227	}
228});
229
230jQuery(document).ready(function() {
231  jQuery('.view-content.activities .activity').click(function() {
232    if(jQuery(this).find('input[name="activityID[]"]').prop("checked")) {
233      jQuery(this).find('input[name="resourceID"]').prop('checked', true);
234      jQuery(this).find('input[name="maxBookableNumber[]"]').prop("disabled",false);
235      jQuery(this).find('input[name="requirementUrl[]"]').prop("disabled",fal
235se);
236      jQuery(this).addClass('activity-selected');
237    } else {
238      jQuery(this).find('input[name="resourceID"]').prop('checked', false);
239      jQuery(this).find('input[name="maxBookableNumber[]"]').prop("disabled",true);
240      jQuery(this).find('input[name="requirementUrl[]"]').prop("disabled",true);
241      jQuery(this).removeClass('activity-selected');
242    }
243  });
244});
245
246var showTimes;
247var myNum = "";
248var mySize = "";
249var myBookinNumber = 1;
250var submitCounter = null;
251var firstSelecction = "";
252var firstBookableSize = "";
253var bookableArray = Array();
254var activityArray =  Array();
255
256jQuery(".modal-scroll .activity").change(function(){
257  bookableArray.push(1);
258  myNum = jQuery("#appForm input:checkbox:checked").length;
259  firstSelecction = myNum;
260
261  jQuery('.progression .prog[data-step="3"]').removeClass('active');
262  jQuery('.progression .prog[data-step="3"]').addClass('inactive');
263  jQuery('.progression .prog[data-step="4"]').removeClass('active');
264  jQuery('.progression .prog[data-step="4"]').addClass('inactive');
265});
266
267jQuery(".activity-maxbookable").change(function(){
268  myBookinNumber = jQuery(".activity-maxbookable .maxBookable").val();
269  bookableArray.push(myBookinNumber);
270  mySize = bookableArray.length;
271  firstBookableSize = mySize;
272
273  jQuery('.progression .prog[data-step="3"]').removeClass('active');
274  jQuery('.progression .prog[data-step="3"]').addClass('inactive');
275  jQuery('.progression .prog[data-step="4"]').removeClass('active');
276  jQuery('.progression .prog[data-step="4"]').addClass('inactive');
277});
278
279
280
281jQuery("#appForm").submit(function(e) {
282  jQuery('.modal-box').prepend('<div class="app-loading"><span class="loader"><span class="loader-inner"></span></span></div>');
283  submitCounter+=1;
284
285  if(submitCounter < 2){
286    localStorage.setItem('firstSelecction',firstSelecction);
287    localStorage.setItem('firstBookNumber',firstBookableSize);
288  }
289
290  if(submitCounter >= 1 && localStorage.getItem('firstSelecction') == myNum && localStorage.getItem('firstBookNumber') == mySize){
291    showTimes = true;//nichts geändert in GetActivities
292  }
293  if(submitCounter >= 1 && localStorage.getItem('firstSelecction') != myNum || localStorage.getItem('firstBookNumber') != mySize){
294    /*hier habe ich die info von LocalStorage erneuert*/
295    localStorage.setItem('firstSelecction',firstSelecction);
296    localStorage.setItem('firstBookNumber',firstBookableSize);
297    showTimes = false;//entweder activities oder maxbookable nummer geändert
298    localStorage.removeItem('dateSelected');
299  }
300
301  e.preventDefault();
302  var dates=[];
303  checkbox_val = jQuery('#appForm').serializeArray();
304  jQuery.ajax({
305    type:'POST',
306    url:'https://' + domain + '/appointments/dates',
307    data:checkbox_val,
308    success:function(data){
309      jQuery('.progression').addClass('prog3').removeClass('prog1 prog2 prog4');
310      jQuery('.progression .prog[data-step="3"]').addClass('active').removeClass('inactive');
311      jQuery('.progression .prog').removeClass('current');
312      jQuery('.progression .prog[data-step="3"]').addClass('current');
313      jQuery('.modal.appointment .modal-views').addClass('step3');
314      jQuery('.modal.appointment .modal-views').removeClass('step1');
315      jQuery('.modal.appointment .modal-views').removeClass('step2');
316      jQuery('.modal.appointment .modal-views').removeClass('step4');
317      jQuery('.modal-box .app-loading').fadeOut(500, function() {
318        jQuery(this).remove();
319      });
320
321      if(!showTimes){
322        jQuery('.view-content.dates').html(data);
323        jQuery('.view-content.times').html('');//Wenn diese code kommentiert ist, sind die Uhrzeiten veranschaulicht sogar wenn Activities and/or maxbookable umgestellt sind
324      }
325      if(showTimes){
326        //jQuery('.view-content.times').html('');
327        // jQuery('. ui-state-active ui-datepicker-current-day').css('color','green');
328        jQuery('.view-content.dates').html(data);
329      }
330
331      var date = new Date();
332      var datearray = jQuery('#dates-set').val();
333      var dateparse = JSON.parse(datearray);
334      //var dateparse = datearray;
335
336      var selectedDate = localStorage.getItem('dateSelected');
337      jQuery("#datepicker").datepicker({
338        prevText: '&#x3c;zurück', prevStatus: '',
339        prevJumpText: '&#x3c;&#x3c;', prevJumpStatus: '',
340        nextText: 'Vor&#x3e;', nextStatus: '',
341        nextJumpText: '&#x3e;&#x3e;', nextJumpStatus: '',
342        currentText: 'heute', currentStatus: '',
343        todayText: 'heute', todayStatus: '',
344        clearText: '-', clearStatus: '',
345        closeText: 'schließen', closeStatus: '',
346        monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
347        monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','N
347ov','Dez'],
348        dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
349        dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
350        dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
351        dateFormat:'yy-mm-dd',
352        firstDay: 1,
353        defaultDate: selectedDate,
354        beforeShowDay:function(date) {
355          //jQuery.datepicker.formatDate("yy-mm-dd");
356          var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
357
358          for(i = 0;i < dateparse.length;i++){
359            if($.inArray(y + '-' +(m+1) + '-'+d,dateparse) != -1 ){
360              return [true, 'ui-state-active', '']
361            }
362          }
363          return [false];
364        },
365
366        onSelect:function(date,el){
367          localStorage.setItem('dateSelected',date);
368          var day = el.selectedDay,
369          month = el.selectedMonth,
370          year = el.selectedYear;
371          jQuery('.modal-box').prepend('<div class="app-loading"><span class="loader"><span class="loader-inner"></span></span></div>');
372          jQuery("#result").html("<i>der Termin wird am <b>Tag</b></i> : "+day+ " <b>monat</b> "+(month+1)+ "<b> des </b>: "+year+" stattfinden");
373          jQuery("#dates").val(date);
374
375          checkbox_dates = jQuery('#appDates').serializeArray();
376          jQuery.ajax({
377            type:'POST',
378            url:'https://' + domain + '/appointments/times',
379            data:checkbox_dates,
380            success:function(data){
381              jQuery('.modal-box .app-loading').fadeOut(500,function(){
382                jQuery(this).remove();
383              });
384              jQuery('.view-content.times').html(data);
385              jQuery(".view-content.times .btn-back").click(function() {
386                jQuery('.progression').addClass('prog2').removeClass('prog1 prog3 prog4');
387                jQuery('.progression .prog[data-step="2"]').addClass('active').removeClass('inactive');
388                jQuery('.progression .prog').removeClass('current');
389                jQuery('.progression .prog[data-step="2"]').addClass('current');
390                jQuery('.modal.appointment .modal-views').addClass('step2');
391                jQuery('.modal.appointment .modal-views').removeClass('step1');
392                jQuery('.modal.appointment .modal-views').removeClass('step3');
393                jQuery('.modal.appointment .modal-views').removeClass('step4');
394              });
395              footerHeight = jQuery('.modal.appointment .view-content.activities .modal-footer').outerHeight();
396              jQuery('.view-content.activities').css({
397                "padding-top": "0",
398                "padding-right": "0",
399                "padding-bottom": footerHeight,
400                "padding-left": "0"
401              });
402
403              footerHeight = jQuery('.modal.appointment .view-content.times .modal-footer').outerHeight();
404              jQuery('.view-content.date-time').css({
405                "padding-top": "0",
406                "padding-right": "0",
407                "padding-bottom": footerHeight,
408                "padding-left": "0"
409              });
410
411              jQuery('.view-content.times .times').click(function() {
412                if(jQuery(this).find('input[name="times[]"]').prop("checked")) {
413                  jQuery('.view-content.times .times').removeClass('times-selected');
414                  jQuery(this).addClass('times-selected');
415                } else {
416                  jQuery(this).removeClass('times-selected');
417                }
418              });
419
420             //Review machen
421              jQuery("#appTimes").submit(function(e) {
422                jQuery('.modal-box').prepend('<div class="app-loading"><span class="loader"><span class="loader-inner"></span></span></div>');
423                var timeSelected = true;
424                localStorage.setItem('timeSelected',timeSelected);
425                e.preventDefault();
426                checkbox_times = jQuery("#appTimes").serializeArray();
427                jQuery.ajax({
428                  type:'POST',
429                  url:'https://' + domain + '/appointments/review',
430                  data:checkbox_times,
431                  success:function(data){
432                    jQuery('.view-content.review').html(data);
433                    data_activities = jQuery("#appLogin").serializeArray();
434                    jQuery.ajax({
435                      type:'POST',
436                      url:'https://' + domain + '/appointments/user',
437                      data:data_activities,
438                      success:function(data){
439                        jQuery('.progression').addClass('prog4').removeClass('prog1 prog2 prog3');
440                        jQuery('.progression .prog[data-step="4"]').addClass('active').removeClass('inactive');
441                        jQuery('.progression .prog').removeClass('current');
442                        jQuery('.progression .prog[data-step="4"]').addClass('current');
443                        jQuery('.modal.appointment .modal-views').addClass('step4');
444                        jQuery('.modal.appointment .modal-views').removeClass('step1');
445                        jQuery('.modal.appointment .modal-views').removeClass('step2');
446                        jQuery('.modal.appointment .modal-views').removeClass('step3');
447                        jQuery('.modal-box .app-loading').fadeOut(500,function(){
448                          jQuery(this).remove();
449                        });
450                        jQuery('.view-content.user').html(data);
451
452                        jQuery(".view-content.user .btn-back").click(function() {
453                          jQuery('.progression').addClass('prog3').removeClass('prog1 prog2 prog4');
454                          jQuery('.progression .prog[data-step="3"]').addClass('active').removeClass('inactive');
455                          jQuery('.progression .prog').removeClass('current');
456                          jQuery('.progression .prog[data-step="3"]').addClass('current');
457                          jQuery('.modal.appointment .modal-views').addClass('step3');
458                          jQuery('.modal.appointment .modal-views').removeClass('step1');
459                          jQuery('.modal.appointment .modal-views').removeClass('step2');
460                          jQuery('.modal.appointment .modal-views').removeClass('step4');
461                        });
462
463                        footerHeight = jQuery('.modal.appointment .view-content.activities .modal-footer').outerHeight();
464                        jQuery('.view-content.activities').css({
465                          "padding-top": "0",
466                          "padding-right": "0",
467                          "padding-bottom": footerHeight,
468                          "padding-left": "0"
469                        });
470
471                        var firstname = localStorage.getItem('name');
472                        var surname = localStorage.getItem('surname');
473                        var email = localStorage.getItem('email');
474                        var telephon = localStorage.getItem('telephone');
475                        var quote = localStorage.getItem('quote');
476
477                        jQuery('#guestName').val(firstname);
478                        jQuery('#guestSurname').val(surname);
479                        jQuery('#guestEmail').val(email);
480                        jQuery('#guestPhone').val(telephon);
481                        jQuery('#guestMessage').val(quote);
482
483                        footerHeight = jQuery('.modal.appointment .view-content.user .modal-footer').outerHeight();
484                        jQuery('.view-content.user').css({
485                          "padding-top": "0",
486                          "padding-right": "0",
487                          "padding-bottom": footerHeight,
488                          "padding-left": "0"
489                        });
490
491                        //user login
492                        jQuery("#loginForm").submit(function(e){
493                          e.preventDefault();
494                          login_data = jQuery("#loginForm").serializeArray();
495                          jQuery.ajax({
496                            type:'POST',
497                            url:'https://' + domain + '/appointments/login',
498                            data:login_data,
499                            success:function(data){
500                              jQuery('.view-content.user').html(data);
501                              jQuery(".view-content.user .btn-back").click(function(){
502                                jQuery('.progression').addClass('prog3').removeClass('prog1 prog2 prog4');
503                                jQuery('.progression .prog[data-step="3"]').addClass('active').removeClass('inactive');
504                                jQuery('.progression .prog').removeClass('current');
505                                jQuery('.progression .prog[data-step="3"]').addClass('current');
506                                jQuery('.modal.appointment .modal
506-views').addClass('step3');
507                                jQuery('.modal.appointment .modal-views').removeClass('step1');
508                                jQuery('.modal.appointment .modal-views').removeClass('step2');
509                                jQuery('.modal.appointment .modal-views').removeClass('step4');
510                              });
511                              footerHeight = jQuery('.modal.appointment .view-content.user .modal-footer').outerHeight();
512                              jQuery('.view-content.user').css({
513                                "padding-top": "0",
514                                "padding-right": "0",
515                                "padding-bottom": footerHeight,
516                                "padding-left": "0"
517                              });
518                            },
519                            error:function(error){
520                            }
521                          });
522                        });
523
524                        //guest termin buchen
525                        jQuery("#guestForm").submit(function(e){
526                          e.preventDefault();
527                          /*localStorage set*/
528                          var name = jQuery("#guestName").val();
529                          var surname = jQuery("#guestSurname").val();
530                          var email = jQuery("#guestEmail").val();
531                          var telephone = jQuery("#guestPhone").val();
532                          var quote = jQuery("#guestMessage").val();
533                          localStorage.setItem('name',name);
534                          localStorage.setItem('surname',surname);
535                          localStorage.setItem('email',email);
536                          localStorage.setItem('telephone',telephone);
537                          localStorage.setItem('quote',quote);
538                          guest_data = jQuery("#guestForm").serializeArray();
539                          jQuery.ajax({
540                            type:'POST',
541                            url:'https://' + domain + '/appointments/guestappointment',
542                            data:guest_data,
543                            success:function(data){
544                              jQuery('.view-content.user').html(data);
545                              jQuery(".view-content.user .btn-back").click(function() {
546                                jQuery('.progression').addClass('prog3').removeClass('prog1 prog2 prog4');
547                                jQuery('.progression .prog[data-step="3"]').addClass('active').removeClass('inactive');
548                                jQuery('.progression .prog').removeClass('current');
549                                jQuery('.progression .prog[data-step="3"]').addClass('current');
550                                jQuery('.modal.appointment .modal-views').addClass('step3');
551                                jQuery('.modal.appointment .modal-views').removeClass('step1');
552                                jQuery('.modal.appointment .modal-views').removeClass('step2');
553                                jQuery('.modal.appointment .modal-views').removeClass('step4');
554                              });
555                              footerHeight = jQuery('.modal.appointment .view-content.activities .modal-footer').outerHeight();
556                              jQuery('.view-content.activities').css({
557                                "padding-top": "0",
558                                "padding-right": "0",
559                                "padding-bottom": footerHeight,
560                                "padding-left": "0"
561                              });
562                              footerHeight = jQuery('.modal.appointment .view-content.user .modal-footer').outerHeight();
563                              jQuery('.view-content.user').css({
564                                "padding-top": "0",
565                                "padding-right": "0",
566                                "padding-bottom": footerHeight,
567                                "padding-left": "0"
568                              });
569                            },
570                            error:function(error){
571                            }
572                          });
573                        });
574
575                      },//success #appLogin ajax call
576                      error:function(error){
577                      }
578                    });//appLogin ajax call
579
580
581                  }, //success #appTime ajax call
582                  error:function(error){
583                  }
584                });//Jquery appTimes ajax
585              });//Jquery appTimes submitFunction;
586
587            },//success #appDates ajax call
588            error:function(error){
589            }
590          });//on select #appDates ajax call;
591        }//end onselect
592      });//Jquery datepicker;
593
594
595    },//#appForm success ajax Call
596    error:function(error){
597    }
598
599  });//close #appForm ajax call
600});//close #appForm submitFunction
601
602
603
604/* -----------------------------------------------------------------------------
605NAVIGATION
606----------------------------------------------------------------------------- */
607
608jQuery(document).ready(function() {
609  jQuery(".navigation-item--state-current > i").each(function() {
610    jQuery(this).addClass("opened");
611  });
612  jQuery(".navigation-item--state-active > i").each(function() {
613    jQuery(this).addClass("opened");
614  });
615  // ---------------------------------------------------------------------------
616  jQuery(".navigation-item--level-2.navigation-item--state-current").each(function() {
617    jQuery(this).parent().parent().addClass("navigation-item--state-current navigation-item--state-active");
618    jQuery(this).parent().parent().find("i").first().toggleClass("opened");
619  });
620  jQuery(".navigation-item--level-3.navigation-item--state-current").each(function() {
621    jQuery(this).parent().parent().addClass("navigation-item--state-current navigation-item--state-active");
622    jQuery(this).parent().parent().find("i").first().toggleClass("opened");
623  });
624  // ---------------------------------------------------------------------------
625  jQuery(".navigation-item--level-1 > i").click(function() {
626    jQuery(this).next('ul').slideToggle("fast","swing");
627    jQuery(this).parent().siblings().children().next('ul').slideUp();
628    jQuery(this).parent().siblings().children().next('i').removeClass("opened");
629    jQuery(this).toggleClass("opened");
630    return false;
631  });
632  jQuery(".navigation-item--level-2 > i").click(function() {
633    jQuery(this).next('ul').slideToggle("fast","swing");
634    jQuery(this).parent().siblings().children().next('ul').slideUp();
635    jQuery(this).parent().siblings().children().next('i').removeClass("opened");
636    jQuery(this).toggleClass("opened");
637    return false;
638  });
639})
640
641// -----------------------------------------------------------------------------
642
643/* -----------------------------------------------
644SCROLLKEEPER
645----------------------------------------------- */
646
647jQuery('.sort-options a').click(function() {
648  window.onbeforeunload = function(e) {
649    localStorage.setItem('scrollpos', window.scrollY);
650  };
651});
652document.addEventListener("DOMContentLoaded", function(event) {
653  var scrollpos = localStorage.getItem('scrollpos');
654  jQuery(window).on("load", function() {
655    if (scrollpos) window.scrollTo(0, scrollpos);
656    localStorage.removeItem('scrollpos');
657  });
658});
659
660// -----------------------------------------------------------------------------
661jQuery(document).ready(function() {
662  jQuery('.testbtn').click(function() {
663    if(jQuery(this).hasClass("desc")) {
664      jQuery(this).removeClass("desc");
665      jQuery(".user-content .comment").sort(sort_li).appendTo('.user-content');
666      function sort_li(a, b) {
667        return (jQuery(b).data('sort')) < (jQuery(a).data('sort')) ? 1 : -1;
668      }
669    } else {
670      jQuery(this).addClass("desc");
671      jQuery(".user-content .comment").sort(sort_li).appendTo('.user-content');
672      function sort_li(a, b) {
673      return (jQuery(b).data('sort')) > (jQuery(a).data('sort')) ? 1 : -1;
674      }
675    }
676  });
677});
678
679
680
681
682/* USER MANAGEMENT - Account-Element //////////////////////////////////////// */
683
684jQuery(document).ready(function() {
685  jQuery('body .account-profile').click(function() {
686    jQuery('.account-layover').toggleClass('visible');
687  });
688});
689jQuery(window).scroll(function() {
690  jQuery('.account-layover').removeClass('visible');
691});
692
693
694/* USER MANAGEMENT - Modal-Elements //////////////////////////////////////// */
695
696jQuery('.modal-btn').click(function() {
697  var modalID = jQuery(this).val();
698
699  var modal = '.modal-' + modalID;
700  jQuery('body').addClass('modal-open');
701  if(jQuery(this).hasClass("edit")) {
702    jQuery(modal + ".edit").show(0, function() {
703      var windowHeight = jQuery(window).height();
704      var modalHeight = jQuery(this).closest('.comment').find('.modal.edit .modal-box').height();
705      if(modalHeight > windowHeight) {
706        jQuery(this).addClass("maxheight");
707      }
708    });
709  } else if(jQuery(this).hasClass("delete")) {
710    jQuery(modal + ".delete").show(0, function() {
711      var windowHeight = jQuery(window).height();
712      var modalHeight = jQuery(this).closest('.comment').find('.modal.delete .modal-box').height();
713      if(modalHeight > windowHeight) {
714        jQuery(this).addClass("maxheight");
715      }
716    });
717  } else if(jQuery(this).hasClass("moderate")) {
718    jQuery(modal + ".moderate").show(0, function() {
719      var windowHeight = jQuery(window).height();
720      var modalHeight = jQuery(this).closest('.comment').find('.modal.moderate .modal-box').height();
721      if(modalHeight > windowHeight) {
722        jQuery(this).addClass("maxheight");
723      }
724    });
725  } else if(jQuery(this).hasClass("appointment")) {
726    jQuery(".modal.appointment").show(0, function() {
727      var modalHeadHeight = jQuery('.modal.appointment .modal-head').outerHeight();
728      jQuery('.modal-views').css('height', 'calc(100% - ' + modalHeadHeight + 'px)');
729      var windowHeight = jQuery(window).height();
730      var modalHeight = jQuery('.modal.appointment').height();
731      if(modalHeight > windowHeight) {
732        jQuery(this).addClass("maxheight");
733      }   
734    });
735  } else if(jQuery(this).hasClass("report")) {
736    //Tagesansicht OTB 
737    if (jQuery('.content div').hasClass('report-calendar')) {     
738      showDayShowDetail(modal);
739    }
740    jQuery(modal + ".report").show();
741  } else if(jQuery(this).hasClass("reportdelete")) {
742    jQuery(modal + ".reportdelete").show();
743  } else if(jQuery(this).hasClass("delete-categorie")) {
744    jQuery(modal + ".datacontainerdelete").show();
745  } else if(jQuery(this).hasClass("delete-datacontainer")) {
746    jQuery(modal + ".datacontainerdelete").show();
747  }
748
749});
750
751jQuery('.modal-close').click(function() {
752  jQuery(this).closest('.modal').hide();
753  jQuery('body').removeClass('modal-open');
754  //Tagesansicht OTB
755  closeDayShowDetail();
756});
757jQuery('.cancel').click(function() {
758  jQuery(this).closest('.modal').hide();
759  jQuery('body').removeClass('modal-open');
760  //Tagesansicht OTB
761  closeDayShowDetail();
762});
763
764jQuery(document).ready(function(){
765  jQuery(document).bind('keydown', function(e) { 
766      if (e.which == 27) {
767        jQuery('.modal').hide();
768        jQuery('body').removeClass('modal-open');
769      }
770  }); 
771});
772
773jQuery(document).ready(function() {
774  windowHeight = jQuery(window).height();
775  jQuery('.modal-box').each(function() {
776    modalHeight = jQuery(this).height();
777    if(modalHeight > windowHeight) {
778      jQuery(this).addClass("maxheight");
779    }
780  });
781});
782
783/* UNIT TEMPLATE //////////////////////////////////////////////////////////// */
784
785jQuery(document).ready(function() {
786  h1Height = jQuery('#unit-h1').prop('scrollHeight');
787  h2Height = jQuery('#unit-h2').prop('scrollHeight');
788  jQuery('#unit-h1').height(h1Height + 'px');
789  jQuery('#unit-h2').height(h2Height + 'px');
790
791  jQuery('form').each(function() {
792    if(jQuery(this).hasClass('unit-template-form')) {
793      h1Count = jQuery('#unit-template #unit-h1').val();
794      h2Count = jQuery('#unit-template #unit-h2').val();
795      jQuery('#unit-template .count-title .count').html(h1Count.length);
796      jQuery('#unit-template .count-subtitle .count').html(h2Count.length);
797    }
798  });
799});
800jQuery('#unit-h1').on('input propertychange paste', function() {
801  jQuery(this).height(0);
802  jQuery(this).height(this.scrollHeight);
803});
804jQuery('#unit-h2').on('input propertychange paste', function() {
805  jQuery(this).height(0);
806  jQuery(this).height(this.scrollHeight);
807});
808jQuery('#unit-p').on('input propertychange paste', function() {
809  jQuery(this).height(0);
810  jQuery(this).height(this.scrollHeight);
811});
812
813jQuery('#unit-template #unit-h1').on('keyup', function() {
814  jQuery('#unit-template .count-title .count').html(this.value.length);
815});
816jQuery('#unit-template #unit-h2').on('keyup', function() {
817  jQuery('#unit-template .count-subtitle .count').html(this.value.length);
818});
819
820jQuery('.user-backend .unit-content-container .toggle-unit-content').click(function() {
821  jQuery(this).toggleClass('open');
822  jQuery(this).next('.unit-text-content').slideToggle();
823});
824
825
826/*  https://' + domain + '/account/appointments/new//////////////////////////////////////////////////////////// */
827//alt_value = document.querySelector("#performanc:selected").value;
828jQuery("#performance").change(function(){
829  var value = $(this).val();
830  //var datesarray = jQuery('.datesarray').val();
831  //alert(datesarray);
832  window.location.href = 'https://' + domain + '/account/appointments/new?performance='+value+'';
833});
834
835jQuery("#ressourcen").change(function(){
836  var value = document.querySelector("#ressourcen").value;
837  var value = $(this).val();
838  window.location.href = 'https://' + domain + '/account/appointments/new?ressource='+value+'';
839});
840
841
842
843
844
845/* COMMENTS ///////////////////////////////////////////////////////////////// */
846
847function getUrlParameter(sParam) {
848  var sPageURL = window.location.search.substring(1),
849    sURLVariables = sPageURL.split('&'),
850    sParameterName,
851    i;
852
853  for (i = 0; i < sURLVariables.length; i++) {
854    sParameterName = sURLVariables[i].split('=');
855    if (sParameterName[0] === sParam) {
856      return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
857    }
858  }
859};
860jQuery(window).on("load", function() {
861  if(getUrlParameter('comment')) {
862    commentID = getUrlParameter('comment');
863    headerHeight = jQuery(".header-wrap").height();
864    jQuery('#comment' + commentID).addClass('highlight');
865    jQuery('html, body').animate({
866      scrollTop: jQuery('#comment' + commentID).offset().top - headerHeight
867    }, 1000, function() {
868    jQuery('#comment' + commentID).removeClass('highlight');
869    jQuery('.modal-info').animate({
870      opacity: 0
871      }, 1000, function() {
872        jQuery(this).hide();
873      });
874    });
875  }
876  if(getUrlParameter('moderated') && !getUrlParameter('comment')) {
877    jQuery('.modal-info').delay(1000).animate({
878      opacity: 0
879    }, 1000, function() {
880      jQuery(this).hide();
881    });
882  }
883  if(getUrlParameter('deleted')) {
884    jQuery('.modal-info').delay(1000).animate({
885      opacity: 0
886    }, 1000, function() {
887      jQuery(this).hide();
888    });
889  }
890  if(getUrlParameter('success')) {
891    jQuery('.modal-info').delay(1000).animate({
892      opacity: 0
893    }, 1000, function() {
894      jQuery(this).hide();
895    });
896  }
897  if(getUrlParameter('updated')) {
898    jQuery('.modal-info').delay(1000).animate({
899      opacity: 0
900    }, 1000, function() {
901      jQuery(this).hide();
902    });
903  }
904  if(getUrlParameter('unitcreated')) {
905    jQuery('.modal-info').delay(1000).animate({
906      opacity: 0
907    }, 1000, function() {
908      jQuery(this).hide();
909    });
910  }
911  if(getUrlParameter('unitdeleted')) {
912    jQuery('.modal-info').delay(1000).animate({
913      opacity: 0
914    }, 1000, function() {
915      jQuery(this).hide();
916    });
917  }
918  if(getUrlParameter('unitupdated')) {
919    jQuery('.modal-info').delay(1000).animate({
920      opacity: 0
921    }, 1000, function() {
922      jQuery(this).hide();
923    });
924  }
925  if(getUrlParameter('unitmoderated')) {
926    jQuery('.modal-info').delay(1000).animate({
927      opacity: 0
928    }, 1000, function() {
929      jQuery(this).hide();
930    });
931  }
932  if(getUrlParameter('commentcreated')) {
933    jQuery('.modal-info').delay(1000).animate({
934      opacity: 0
935    }, 1000, function() {
936      jQuery(this).hide();
937    });
938  }
939  if(getUrlParameter('error')) {
940    jQuery('.modal-info').delay(2000).animate({
941      opacity: 0
942    }, 1000, function() {
943      jQuery(this).hide();
944    });
945  }
946  if(getUrlParameter('saved')) {
947    jQuery('.modal-info').delay(1000).animate({
948      opacity: 0
949    }, 1000, function() {
950      jQuery(this).hide();
951    });
952  }
953  if(getUrlParameter('confirmed')) {
954    jQuery('.modal-info').delay(1000).animate({
955      opacity: 0
956    }, 1000, function() {
957      jQuery(this).hide();
958    });
959  }
960  if(getUrlParameter('confirmederror')) {
961    jQuery('.modal-info').delay(2000).animate({
962      opacity: 0
963    }, 1000, function() {
964      jQuery(this).hide();
965    });
966  }
967  if(getUrlParameter('newappointment')) {
968    jQuery('.modal-info').delay(1000).animate({
969      opacity: 0
970    }, 1000, function() {
971      jQuery(this).hide();
972    });
973  }
974  if(getUrlParameter('appointmenterror')) {
975    jQuery('.modal-info').delay(2000).animate({
976      opacity: 0
977    }, 1000, function() {
978      jQuery(this).hide();
979    });
980  }
981  if(getUrlParameter('mod-deleted')) {
982    jQuery('.modal-info').delay(1000).animate({
983      opacity: 0
984    }, 1000, function() {
985      jQuery(this).hide();
986    });
987  }
988});
989
990/*
991// STICKY COMMENT FORM
992function stickyComment() {
993	headerHeight = jQuery(".header.is-sticky .header-wrap").height();
994  stickyTop = jQuery('.new-comment').offset().top - headerHeight - 25;
995	posLeft = jQuery('.new-comment').offset().left;
996	posWidth = jQuery('.new-comment').width();
997	placeholderHeight = jQuery('.comment-wrap').height();
998	jQuery('.comment-wrap').closest('.new-comment').height(placeholderHeight);
999
1000  jQuery(window).scroll(function() {
1001    windowTop = jQuery(window).scrollTop();
1002    if (stickyTop < windowTop) {
1003      jQuery('.comment-wrap').addClass('sticky').css({
1004				'left': posLeft,
1005				'width': posWidth
1006			});
1007    } else {
1008      jQuery('.comment-wrap').removeClass('sticky').css({
1009				'left': 'auto',
1010				'width': 'auto'
1011			});
1012    }
1013  });
1014	jQuery(window).resize(function() {
1015    windowTop = jQuery(window).scrollTop();
1016    if (stickyTop < windowTop) {
1017      jQuery('.comment-wrap').addClass('sticky').css({
1018				'left': posLeft,
1019				'width': posWidth
1020			});
1021    } else {
1022      jQuery('.comment-wrap').removeClass('sticky').css({
1023				'left': 'auto',
1024				'width': 'auto'
1025			});
1026    }
1027  });
1028}
1029
1030jQuery(document).ready(function() {
1031	if(jQuery('body').hasClass('unit-site')) {
1032		stickyComment();
1033		if (window.matchMedia('(max-width: 660px)').matches) {
1034			addHeight = jQuery('.comment-wrap').outerHeight();
1035	  	jQuery('body').css("margin-bottom", addHeight);
1036			if (!jQuery('.comment-wrap').hasClass('sticky')) {
1037				jQuery('.comment-container').show();
1038				jQuery('.comment-toggle').removeClass('open');
1039			}
1040		}
1041		else {
1042	  	jQuery('body').css("margin-bottom", "0");
1043			jQuery('.comment-container').show();
1044		}
1045		jQuery('.comment-toggle').click(function() {
1046			jQuery(this).toggleClass('open');
1047			jQuery('.comment-container').slideToggle();
1048		});
1049	}
1050});
1051
1052jQuery(window).resize(function() {
1053	if(jQuery('body').hasClass('unit-site')) {
1054		stickyComment();
1055		if (window.matchMedia('(max-width: 660px)').matches) {
1056			addHeight = jQuery('.comment-wrap').outerHeight();
1057	  	jQuery('body').css("margin-bottom", addHeight);
1058			if (!jQuery('.comment-wrap').hasClass('sticky')) {
1059				jQuery('.comment-container').show();
1060				jQuery('.comment-toggle').removeClass('open');
1061			}
1062		}
1063		else {
1064	  	jQuery('body').css("margin-bottom", "0");
1065			jQuery('.comment-container').show();
1066		}
1067	}
1068});
1069jQuery(window).scroll(function() {
1070	if(jQuery('body').hasClass('unit-site')) {
1071		if (window.matchMedia('(max-width: 660px)').matches) {
1072			if (!jQuery('.comment-wrap').hasClass('sticky')) {
1073				jQuery('.comment-container').show();
1074				jQuery('.comment-toggle').removeClass('open');
1075			}
1076			if (jQuery('.comment-wrap').hasClass('sticky')) {
1077				jQuery('.comment-container').slideUp();
1078				jQuery('.comment-toggle').removeClass('open');
1079			}
1080		}
1081	}
1082});
1083*/
1084
1085jQuery(document).ready(function() {
1086  jQuery('.mod-info').click(function() {
1087    jQuery(this).closest('.mod-options').find('.mod-info-content').slideToggle();
1088  });
1089});
1090
1091// Filter for keyword
1092jQuery("#keyword-filter").keyup(function() {
1093  var keyword = jQuery(this).val().toLowerCase();
1094
1095  jQuery(".comment").each(function() {
1096    if(jQuery(this).text().toLowerCase().indexOf(keyword) > -1) {
1097      jQuery(this).fadeIn();
1098    } else {
1099      jQuery(this).fadeOut();
1100    }
1101  });
1102
1103  jQuery(".unit").each(function() {
1104    if(jQuery(this).text().toLowerCase().indexOf(keyword) > -1) {
1105      jQuery(this).fadeIn();
1106    }else{
1107      jQuery(this).fadeOut();
1108    }
1109  });
1110
1111  if(jQuery(this).val()) {
1112    jQuery('.clear').addClass('visible');
1113  } else if(jQuery(this).val('')) {
1114    jQuery('.clear').removeClass('visible');
1115  } else {
1116    jQuery('.clear').removeClass('visible');
1117  }
1118});
1119jQuery('.clear').click(function() {
1120  jQuery('#keyword-filter').val('');
1121  jQuery('#word-filter').val('');
1122  jQuery(this).removeClass('visible');
1123  var keyword = jQuery(this).val().toLowerCase();
1124  jQuery(".mod-filter select").val('mod-all');
1125  jQuery(".comment").each(function() {
1126    jQuery(this).fadeIn();
1127  });
1128  jQuery(".unit").each(function() {
1129  	jQuery(this).fadeIn();
1130  });
1131  jQuery(".activity").each(function(){
1132    if(jQuery(this).hasClass('id6062')) {
1133
1134    } else {
1135      jQuery(this).fadeIn();
1136    }
1137  });
1138});
1139
1140// Appointment Modal Filter Activities
1141jQuery("#resource-filter").change(function(){
1142  var resource = jQuery(this).val().toLowerCase();
1143
1144  jQuery(".activity").each(function(){
1145    if(jQuery(this).hasClass('id6062')) {
1146
1147    } else {
1148      if(jQuery(this).text().toLowerCase().indexOf(resource) > -1){
1149        jQuery(this).fadeIn();
1150      }else{
1151        jQuery(this).fadeOut();
1152      }
1153    }
1154  });
1155});
1156
1157//Appointment Modal Begriff suche
1158jQuery("#word-filter").keyup(function(){
1159  //alert("suche starten");
1160  var resource = jQuery(this).val().toLowerCase();
1161
1162  jQuery(".activity").each(function(){
1163    if(jQuery(this).hasClass('id6062')) {
1164
1165    } else {
1166      if(jQuery(this).find('.activity-title').text().toLowerCase().indexOf(resource) > -1){
1167        jQuery(this).fadeIn();
1168      }else{
1169        jQuery(this).fadeOut();
1170      }
1171    }
1172  });
1173  if(jQuery(this).val()) {
1174    jQuery('.clear').addClass('visible');
1175  } else if(jQuery(this).val('')) {
1176    jQuery('.clear').removeClass('visible');
1177  } else {
1178    jQuery('.clear').removeClass('visible');
1179  }
1180});
1181
1182
1183
1184
1185/*jQuery(document).ready(function() {
1186		var date = new Date();
1187		var datearray = jQuery('#dates-set').val();
1188		//var jsondata = ['{"2021-03-10":"2021-03-20", "2021-04-10":"2021-04-15"}'];
1189		var dateparse = JSON.parse(datearray);
1190		//var dateparse = JSON.stringify(datearray);
1191
1192	    jQuery("#calendar-dates").datepicker({
1193					dateFormat: 'yy-mm-dd',
1194	        beforeShowDay: function(date) {
1195	            var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
1196
1197	            for (i = 0; i < dateparse.length; i++) {
1198	                if($.inArray(y + '-' + (m+1) + '-' + d,dateparse) != -1) {
1199	                    //return [false];
1200	                    return [true,'ui-state-active',''];
1201	                }
1202	            }
1203	            return [false];
1204	        }
1205
1206	    });
1207
1208        jQuery("#calendar-dates").click("change",function(){
1209        	var selected = $(this).val();
1210        	jQuery("#dates-set").val(selected);
1211        });
1212
1213});*/
1214
1215/*----------------------------------------------------------------------------
1216 open OTB-Model with Link Terminvereinbarung
1217 @route + #otb
1218----------------------------------------------------------------------- ------ */
1219jQuery('a[href*="#otb"]').click(function(e) {
1220  e.preventDefault(); 
1221  jQuery(".modal.appointment").show();
1222  var modalHeadHeight = jQuery('.modal.appointment .modal-head').outerHeight();
1223  jQuery('.modal-views').css('height', 'calc(100% - ' + modalHeadHeight + 'px)');
1224});  
1225
1226jQuery(document).ready(function() {  
1227
1228  var pathname = window.location.href; 
1229  if (pathname.search('#otb') > 0) {
1230    jQuery(".modal.appointment").show();
1231    var modalHeadHeight = jQuery('.modal.appointment .modal-head').outerHeight();
1232    jQuery('.modal-views').css('height', 'calc(100% - ' + modalHeadHeight + 'px)');
1233  }
1234
1235  jQuery('#tv').on('click',function() {
1236    if (jQuery('#appointment').is(':visible')) { 
1237      jQuery('#appointment').each(function() {
1238       jQuery(this).attr('checked',false);
1239      });
1240    }
1241  });
1242
1243});
1244
1245
1246//https://mario.digiportal.de/freizeit-und-sport/vereine-und-verbaende/sporteinrichtungen
1247// 'https://mario.digiportal.de/appointments/dates',
1248jQuery(document).ready(function(){
1249  domain = window.location.hostname;
1250  var getsize = jQuery('input[name="getsize"]:last').val();
1251  var size = jQuery('input[name="size"]:last').val();
1252  if(size != getsize) {
1253    jQuery(".container-pages").remove();
1254  }
1255  jQuery(".container-pages").click(function(){ 
1256    jQuery('.lds-ring').removeClass('hidden');
1257    var context = jQuery('#context').val();
1258    var categories = jQuery('#categories').val();
1259    var attributeIDs = jQuery('input[name="attributeIDs"]:last').val();
1260    var dateFormat = jQuery('#dateFormat').val();
1261    var dateDesign = jQuery('#dateDesign').val();
1262    var teaserImage = jQuery('#teaserImage').val();
1263    var detailedList = jQuery('#detailedList').val();
1264    var allEvents = jQuery('#allEvents').val();
1265    var categoriesIntersection = jQuery('#categoriesIntersection').val();
1266    var uri = jQuery('#uri').val();
1267    var getsize = jQuery('input[name="getsize"]:last').val();
1268    var firstPageNumber = jQuery(this).val();
1269    var nextPage = parseFloat(firstPageNumber) + 1;
1270    var showTimeOnlyNull = jQuery('#showTimeOnlyNull').val();
1271    var dateWeekday = jQuery('#dateWeekday').val();
1272    var showTeasertextTop = jQuery('#showTeasertextTop').val();
1273    var attributesDetail = jQuery('#attributesDetail').val();
1274    var showAttrBottom = jQuery('#showAttrBottom').val();
1275    var attributeIDsDetail = jQuery('#attributeIDsDetail').val();
1276    var lang = jQuery('input[name="lang"]:last').val();
1277
1278    jQuery(this).val(nextPage);
1279    jQuery.ajax({
1280     type:'POST',
1281     dataType:'text',
1282     url:'https://'+domain+'/dataobjects/load',
1283     data:{nextPage:nextPage,context:context,categoriesIntersection:categoriesIntersection,categories:categories,attributeIDs:attributeIDs,
1284           uri:uri,getsize:getsize,dateFormat:dateFormat,dateDesign:dateDesign,teaserImage:teaserImage,allEvents:allEvents,detailedList:detailedList,
1285           showTimeOnlyNull:showTimeOnlyNull,dateWeekday:dateWeekday,showTeasertextTop:showTeasertextTop,attributesDetail:attributesDetail,
1286           showAttrBottom:showAttrBottom,attributeIDsDetail:attributeIDsDetail,lang:lang},
1287     success:function(response){
1288        jQuery('.gdc-list').append(response);
1289        jQuery('.lds-ring').addClass('hidden');
1290
1291        //Rentals hidden search boxes only show the first box
1292        jQuery('.grid-search div').addClass('grid-search-hidden');
1293        jQuery('.grid-search').first().find('div').removeClass('grid-search-hidden');
1294
1295        var getsize = jQuery('input[name="getsize"]:last').val();
1296        var size = jQuery('input[name="size"]:last').val();
1297        if(size != getsize) {
1298          jQuery(".container-pages").remove();
1299        }
1300      },
1301      error:function(error){
1302
1303      }
1304    });
1305  });
1306});
1307
1308function getCookie(cname) {
1309  var name = cname + "=";
1310  var decodedCookie = decodeURIComponent(document.cookie);
1311  var ca = decodedCookie.split(';');
1312  for(var i = 0; i <ca.length; i++) {
1313    var c = ca[i];
1314    while (c.charAt(0) == ' ') {
1315      c = c.substring(1);
1316    }
1317    if (c.indexOf(name) == 0) {
1318      return c.substring(name.length, c.length);
1319    }
1320  }
1321  return "";
1322}
1323
1324jQuery(document).ready(function() {
1325  if(jQuery('#domap').length) {
1326    cookieOpenStreetMap = getCookie('Cookie_Consent_OpenStreetMap');
1327    if(cookieOpenStreetMap == "on") {
1328      name = jQuery('#gps-name').val();
1329      street = jQuery('#gps-street').val();
1330      houseNumber = jQuery('#gps-houseNumber').val();
1331      postcode = jQuery('#gps-postcode').val();
1332      city = jQuery('#gps-city').val();
1333      lat = jQuery('#gps-lat').val();
1334      lng = jQuery('#gps-lng').val();
1335      if(lat != '') {
1336        var domap = L.map('domap', {
1337          center: new L.LatLng(lat,lng),
1338          zoom: 15,
1339          scrollWheelZoom: false
1340        });
1341        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
1342          attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
1343        }).addTo(domap);
1344        var marker = L.marker(new L.LatLng(lat,lng)).addTo(domap);
1345        marker.bindPopup('<strong>'+name+'</strong><br/>'+street+' '+houseNumber+'<br/>'+postcode+' '+city).openPopup();
1346        domap.once('focus', function() { domap.scrollWheelZoom.enable(); });
1347      } else {
1348        jQuery('#domap').remove();
1349      }
1350    }
1351  }
1352});
1353
1354/* ACCORDION //////////////////////////////////////////////////////////////// */
1355
1356jQuery(document).ready(function() {
1357
1358  jQuery(".do-attributes h3").click(function() {
1359    jQuery(this).toggleClass("acc-open");
1360    jQuery(this).next('.do-attribute-content').toggleClass("acc-open").slideToggle();
1361  });
1362  jQuery(".acc-btn .open-all").click(function() {
1363    jQuery(".accordion h4").addClass("acc-open");
1364    nextAnim(jQuery('.accordion h4 + p'));
1365    function nextAnim(elems) {
1366      elems.eq(0).slideDown(1, function() {
1367        nextAnim(elems.slice(1), $.fn.matchHeight._update());
1368      });
1369    }
1370  });
1371  jQuery(".acc-btn .close-all").click(function() {
1372    jQuery(".accordion h4").removeClass("acc-open");
1373    nextAnim(jQuery('.accordion h4 + p'));
1374    function nextAnim(elems) {
1375      elems.eq(0).slideUp(1, function() {
1376        nextAnim(elems.slice(1), $.fn.matchHeight._update());
1377      });
1378    }
1379  });
1380
1381});
1382
1383/* SHOW ALL DATES /////////////////////////////////////////////////////////// */
1384
1385/* jQuery(document).ready(function() {
1386  var dateWrap = jQuery('.do-datetime-table').innerHeight();
1387  var dateTable = jQuery('.do-datetime-table table').height();
1388  if(dateTable >= dateWrap) {
1389    jQuery('.show-all').show();
1390  } else {
1391    jQuery('.show-all').hide();
1392  }
1393  jQuery('.show-all').click(function() {
1394    jQuery('.do-datetime').toggleClass('all-dates');
1395    var headerHeight = jQuery(".header-wrap").height();
1396    jQuery("html, body").animate({
1397      scrollTop: jQuery('.do-datetime').offset().top - headerHeight - 50
1398    }, "slow");
1399  });
1400}); */
1401
1402/* ACTIVITY CAPACITY REPORT ///////////////////////////////////////////////// */
1403
1404jQuery("#event-capacities").submit(function() {
1405  var activityID = jQuery('#event-capacities select[name="activity-id"]').val();
1406  localStorage.setItem('activitycapacity',activityID);
1407});
1408
1409jQuery(document).ready(function() {
1410  if(localStorage.getItem('activitycapacity')) {
1411    jQuery("#event-capacities select").val(localStorage.getItem('activitycapacity')).change();
1412  }
1413});
1414
1415// -----------------------------------------------------------------------------
1416// NEWSLETTER 
1417// ------------------------------------------------------------------------------ 
1418jQuery('#modalNewsletter .modal-close').click(function(e) {
1419  url = document.location.href ;
1420  var urlonly = url.split("&"); 
1421  var url = urlonly[0] + '&' +  urlonly[1]; 
1422  var success = urlonly[2]; 
1423
1424  if (success == 'newslettersuccess' ) { 
1425    window.location.search = ''; 
1426  } else {
1427   // jQuery(".modal.newsletter .modal-views .view-content.info input").val('');
1428   // jQuery('.table-relevated-events input').removeAttr('checked');
1429  }
1430 // history.pushState({}, null, url);  
1431});
1432
1433jQuery('a[href*="?newsletter"]').click(function(e) {
1434  e.preventDefault();  
1435  openNewsletterModal(); 
1436});
1437
1438jQuery(document).ready(function() {
1439  if(getUrlParameter('newsletter')) {
1440   openNewsletterModal();
1441  }
1442});
1443
1444function openNewsletterModal() {
1445  jQuery('body').addClass('modal-open');
1446
1447  //Newsletter-Kategories > 0
1448  var title = (jQuery('#newsletter-email').val() == '') ? 'Newsletter abonnieren' : 'Newsletter verwalten';
1449  
1450  //Newsletter-Kategories == 1
1451  //First Newsletter Abo and confirm
1452  //Second Newsletter is Abo -> you can deabo
1453  //is Abo -> deabo, is noAbo -> you can again abo
1454  count = jQuery('.table-relevated-events input').length;  
1455  if (count == 1)  { 
1456    ischecked = jQuery('.table-relevated-events input:checked').length; 
1457    var title = (jQuery('#newsletter-email').val() == '' || ischecked == 0) ? 'Newsletter abonnieren' : 'Newsletter abmelden';
1458    if(getUrlParameter('newslettersuccess') || getUrlParameter('newsletteractsuccess') ) { 
1459      //nothing
1460    } else if (jQuery('#newsletter-email').val() == '' || ischecked == 0) {
1461      jQuery('.table-relevated-events input').attr('checked','checked');
1462    } else { 
1463      jQuery('.table-relevated-events input').removeAttr('checked'); 
1464    }
1465    jQuery('.newsletter-selection').hide();
1466  }
1467  
1468  jQuery('#newsletter-title').text(title);
1469
1470  jQuery(".modal.newsletter").show(0, function() {   
1471    var modalHeadHeight = jQuery('.modal.newsletter .modal-head').outerHeight();
1472    jQuery('.modal-views form').css('height', 'calc(100% - ' + modalHeadHeight + 'px)');
1473    var windowHeight = jQuery(window).height();
1474    var modalHeight = jQuery('.modal.newsletter').height();
1475    if(modalHeight > windowHeight) {
1476      jQuery(this).addClass("maxheight");
1477    }
1478    jQuery(".modal.newsletter .modal-views .view-content.info").show();
1479    jQuery(".infosave").hide();
1480  });
1481}
1482
1483jQuery(document).ready(function() {
1484  if(getUrlParameter('newslettersuccess') || getUrlParameter('newsletteractsuccess') ) {
1485    jQuery("body").addClass("modal-open");
1486    jQuery(".modal.newsletter .modal-views .view-content.infosave").show();
1487    jQuery(".modal.newsletter .modal-views .view-content.info").hide();
1488    var modalHeadHeight = jQuery('.modal.newsletter .modal-head').outerHeight();
1489    jQuery('.modal-views').css('height', 'calc(100% - ' + modalHeadHeight + 'px)');
1490    jQuery(".modal.newsletter .modal-views .view-content.infosave > div:first-of-type").addClass('message');
1491    if(getUrlParameter('newsletteractsuccess')) {
1492      jQuery(".modal.newsletter .modal-views .view-content.infosave > div:first-of-type").html("<h5 style='margin-top:1rem;'>Ihr Anfrage zum Newsletter wurde erfolgreich bestätigt.</h5><p>Sie können das Fenster nun schließen</p>");
1493    }   
1494    if(getUrlParameter('newslettersuccess')) {
1495      count = jQuery('.table-relevated-events input:checked').length;
1496      if (count > 0) {
1497        jQuery('#newsletter-title').text('Newsletter');
1498        jQuery(".modal.newsletter .modal-views .view-content.infosave > div:first-of-type").html("<h5 style='margin:1rem 0;'>Ihre Anfrage zum Newsletter wurde abgesendet.<br><span style='font-weight:normal;'>Wir haben Ihnen eine E-Mail zugesendet.</span></h5><p><svg><use xlink:href='#fas-fa-info-circle'></use></svg><strong style='color:#34a665;'>Bitte bestätigen Sie Ihre Anfrage mit dem Link in der E-Mail.</strong><br><br>Vielen Dank und herzliche Grüße.<p>");
1499      } else {        
1500        jQuery(".modal.newsletter .modal-views .view-content.infosave > div:first-of-type").html("<h5 style='margin:1rem 0;'>Ihre Anfrage zum Newsletter wurde abgesendet.<br><span style='font-weight:normal;'>Sie haben keinen Newsletter abonniert.</span><br><br>Vielen Dank und herzliche Grüße.<p>");
1501      }
1502    }
1503  }
1504});
1505
1506
1507/* QR-CODES ///////////////////////////////////////////////////////////////// */
1508
1509jQuery(document).ready(function() {
1510  jQuery('.qr-code').each(function() {
1511    bookingCode = jQuery(this).attr("data-code");
1512    jQuery(this).qrcode({
1513      width: 72,
1514      height: 72,
1515      text : bookingCode
1516    });
1517  })
1518});
1519
1520/* GDC Article Price ///////////////////////////////////////////////////////////////// */
1521
1522jQuery(document).ready(function() {
1523  var currentPrice = jQuery('.article-variants input[type="radio"]:checked').data("price");
1524  var currentName = jQuery('.article-variants input[type="radio"]:checked').val();
1525  jQuery('#article-current-price .article-price').html(currentPrice);
1526  jQuery('#article-current-name').html(' ' + currentName);
1527
1528  jQuery('.article-variants input[type="radio"]').click(function() {
1529    var currentPrice = jQuery('.article-variants input[type="radio"]:checked').data("price");
1530    var currentName = jQuery('.article-variants input[type="radio"]:checked').val();
1531    jQuery('#article-current-price .article-price').html(currentPrice);
1532    jQuery('#article-current-name').html(' ' + currentName);
1533
1534    jQuery("a.article-order-email").each(function() {
1535      var articleName = jQuery('.do-detail.article h1').text();
1536      var $this = $(this);
1537      var _href = $this.attr("href");
1538      var _hrefClean = _href.replace(/\?.*$/g,"");
1539      $this.attr("href", _hrefClean + '?subject=Bestellung von “' + articleName + '“&body=Ich möchte bitte den Artikel “' + articleName + '“ für ' + currentPrice + ' Euro bestellen.');
1540    });
1541  });
1542
1543  jQuery("a.article-order-email").each(function() {
1544    var articleName = jQuery('.do-detail.article h1').text();
1545    var $this = $(this);
1546    var _href = $this.attr("href");
1547    $this.attr("href", _href + '?subject=Bestellung von “' + articleName + '“&body=Ich möchte bitte den Artikel “' + articleName + '“ für ' + currentPrice + ' Euro bestellen.');
1548  });
1549});
1550
1551/* SORTABLE ///////////////////////////////////////////////////////////////// */
1552jQuery(document).ready(function(){
1553  var context = jQuery("#context").val();
1554  var trWidth = jQuery(".sortable-contact").width();
1555  jQuery(".sortable-contact").css('--trwidth',trWidth);
1556  var countSortTR = jQuery(".sortable-contact tr").length -1; //first row header
1557  var countSortTD = jQuery(".sortable-contact td").length / countSortTR ;
1558
1559  jQuery(".sortable-contact").css('--trwidth',trWidth); 
1560 // jQuery(":root").css('--countSortTD',countSortTD);  // only jQuery 3.5.1
1561 if(countSortTR === 0)  {
1562  countSortTR = 1;
1563  countSortTD = 7; 
1564  } 
1565  if(isNaN(countSortTD)) {countSortTD = 7;}
1566  if (context == 'POI')  {countSortTD = 7;}
1567
1568  document.body.style.setProperty('--countSortTD',countSortTD);
1569});
1570
1571$( function() { 
1572  jQuery("#sortable-contact tbody").sortable({
1573    placeholder: "ui-state-highlight"    
1574  });
1575});
1576$( function() { 
1577  jQuery(".sortable-contact tbody").sortable({
1578    placeholder: "ui-state-highlight"    
1579  });
1580});
1581
1582jQuery( function() {
1583  jQuery("#sortable").sortable();
1584});
1585jQuery( function() {
1586  jQuery(".sortable").sortable();
1587});
1588
1589// -----------------------------------------------------------------------------
1590// show map search box
1591// -----------------------------------------------------------------------------
1592jQuery('.map-search.show-search-box').click(function(event) {
1593  jQuery('.map-search-box:first-of-type').toggle();
1594  jQuery('.map-search-box').toggle();
1595  jQuery('.map-search-cancel').toggle();
1596  jQuery('.map-search-search').toggle();
1597  //Controller Plus/Minus on the map
1598  jQuery('.leaflet-control-zoom.leaflet-bar.leaflet-control').toggleClass('toggleclassControl');
1599  jQuery('.map-filter').toggleClass('toggleclass');   
1600  event.stopPropagation();
1601  event.stopImmediatePropagation();       
1602});
1603
1604// -----------------------------------------------------------------------------
1605// Start Search MAP
1606// -----------------------------------------------------------------------------
1607jQuery(document).ready(function(){
1608    
1609  jQuery(".map-search-search").click(function(){
1610    var elements = 'category-';
1611
1612    //if no category was selected, it will be reset
1613    var count = jQuery('[id^='+elements+']:checked').length;
1614    if (count == 0) {
1615      jQuery(".map-search-cancel").triggerHandler("click");
1616      return;
1617    }
1618
1619    //remove old Maps
1620    jQuery('#domapMulti').css({"display":"none"});
1621    jQuery('#domapMultiNew').remove();
1622
1623    //build new Map
1624    showmap = jQuery('.show-map');
1625    domapMultiNew = jQuery('<div />') 
1626    .attr({'id':'domapMultiNew'});          
1627
1628    jQuery("#domapMulti").after(domapMultiNew);    
1629
1630    lat = jQuery('.gps-lat').val();
1631    lng = jQuery('.gps-lng').val();
1632    
1633    zoom = jQuery('.zoom').val();
1634    var zoom = (jQuery('.zoom').val() == '') ? 10 : jQuery('.zoom').val();
1635
1636    if(lat != '') { 
1637      var domapMultiNew = L.map('domapMultiNew', {
1638        center: new L.LatLng(lat,lng),
1639        zoom: zoom,
1640        scrollWheelZoom: false
1641      });
1642      L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
1643        attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
1644      }).addTo(domapMultiNew);
1645      
1646      jQuery('[id^='+elements+']:checked').each(function() {
1647        idCategory = jQuery(this).val();
1648        var elementsClass = '.categoryclass-'+idCategory;
1649        jQuery(elementsClass).each(function() { 
1650          // mapname = jQuery(elementsClass).find('input[name="gps-name"]').val(); 
1651          id = jQuery(this).data('id'); 
1652          mapname = jQuery('#gps-link-'+id).val();
1653          street = jQuery('#gps-street-'+id).val();
1654          houseNumber = jQuery('#gps-houseNumber-'+id).val();
1655          postcode = jQuery('#gps-postcode-'+id).val();
1656          city = jQuery('#gps-city-'+id).val();
1657          lat = jQuery('#gps-lat-'+id).val();
1658          lng = jQuery('#gps-lng-'+id).val();
1659          if (typeof lat !== 'undefined') {
1660            marker = L.marker(new L.LatLng(lat,lng)).addTo(domapMultiNew);      
1661            marker.bindPopup('<strong>'+mapname+'</strong><br/>'+street+' '+houseNumber+'<br/>'+postcode+' '+city).openPopup();       
1662          }
1663        });
1664      });
1665
1666      //new Map must toggleclass - Controller Plus/Minus on the map
1667      jQuery('#domapMultiNew .leaflet-control-zoom.leaflet-bar.leaflet-control').addClass('toggleclassControl');
1668      
1669      domapMultiNew.once('focus', function() { domapMultiNew.scrollWheelZoom.enable(); });
1670    } else {
1671      jQuery('#domapMultiNew').remove();
1672    }
1673
1674    //last Infobox closed
1675    jQuery(".leaflet-popup.leaflet-zoom-animated").last().addClass('mapboxNull');
1676    
1677    jQuery('.leaflet-marker-icon').click(function(event) { 
1678      //last Infobox open
1679      jQuery(".leaflet-popup.leaflet-zoom-animated").last().removeClass('mapboxNull');
1680    });
1681   
1682  });
1683});
1684
1685// -----------------------------------------------------------------------------
1686// Clear Search MAP 
1687// -----------------------------------------------------------------------------
1688jQuery(document).ready(function(){
1689  jQuery(".map-search-cancel").click(function(){
1690    //Clear all Input Fields and Selected Fields
1691    var elements = 'category-';
1692    jQuery('[id^='+elements+']:checked').removeAttr('checked');
1693    //remove new Maps
1694    jQuery('#domapMulti').css({"display":"block"});
1695    jQuery('#domapMultiNew').remove();
1696  });
1697});
1698
1699// -----------------------------------------------------------------------------
1700// domapMulti
1701// -----------------------------------------------------------------------------
1702jQuery(document).ready(function() {
1703  if(jQuery('#domapMulti').length) {
1704    cookieOpenStreetMap = getCookie('Cookie_Consent_OpenStreetMap');
1705    if(cookieOpenStreetMap == "on") {
1706      lat = jQuery('.gps-lat').val();
1707      lng = jQuery('.gps-lng').val();
1708
1709      zoom = jQuery('.zoom').val();
1710      var zoom = (jQuery('.zoom').val() == '') ? 10 : jQuery('.zoom').val();
1711
1712      if(lat != '') { 
1713        var domapMulti = L.map('domapMulti', {
1714          center: new L.LatLng(lat,lng),
1715          zoom: zoom,
1716          scrollWheelZoom: false
1717        });
1718        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
1719          attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
1720        }).addTo(domapMulti);
1721        
1722        jQuery(".mapPoints").each(function() {
1723          id = jQuery(this).data('id');
1724          mapname = jQuery('#gps-link-'+id).val();
1725          street = jQuery('#gps-street-'+id).val();
1726          houseNumber = jQuery('#gps-houseNumber-'+id).val();
1727          postcode = jQuery('#gps-postcode-'+id).val();
1728          city = jQuery('#gps-city-'+id).val();
1729          lat = jQuery('#gps-lat-'+id).val();
1730          lng = jQuery('#gps-lng-'+id).val();
1731          marker = L.marker(new L.LatLng(lat,lng)).addTo(domapMulti);      
1732          marker.bindPopup('<strong>'+mapname+'</strong><br/>'+street+' '+houseNumber+'<br/>'+postcode+' '+city).openPopup();       
1733        });
1734
1735        domapMulti.once('focus', function() { domapMulti.scrollWheelZoom.enable(); });
1736      } else {
1737        jQuery('#domapMulti').remove();
1738      }
1739      //Infobox closed
1740      jQuery(".leaflet-popup.leaflet-zoom-animated").last().addClass('mapboxNull');
1741      
1742      //jQuery(".map-search-search").triggerHandler("click");
1743
1744      //Button 'Anwenden' activate - Start Default value
1745      //if no category was selected, it will be reset
1746      var elements = 'category-';
1747      var count = jQuery('[id^='+elements+']:checked').length;
1748      if (count > 0) {
1749        jQuery(".map-search-search").triggerHandler("click");
1750        jQuery('.leaflet-control-zoom.leaflet-bar.leaflet-control').toggleClass('toggleclassControl');
1751        jQuery(".map-search.show-search-box").triggerHandler("click");
1752      }
1753
1754      //if mapFilterOffOn
1755      if (jQuery('.mapFilterOffOn').val() == "true" && count == 0) {
1756        jQuery(".map-search.show-search-box").triggerHandler("click");
1757      }
1758    }
1759  }
1760  jQuery('.leaflet-marker-icon').click(function(event) { 
1761     //Infobox open
1762     jQuery(".leaflet-popup.leaflet-zoom-animated").last().removeClass('mapboxNull');
1763  });
1764   
1765});
1766
1767
1768// -----------------------------------------------------------------------------
1769// RENTAL
1770// -----------------------------------------------------------------------------
1771jQuery(document).ready(function(){
1772
1773  // -----------------------------------------------------------------------------
1774  // Clear Search Rental
1775  // -----------------------------------------------------------------------------
1776  jQuery(".rental-search-cancel").click(function(){
1777    //Clear all Input Fields and Selected Fields
1778    var elements = 'category-';
1779    jQuery('[id^='+elements+']:checked').removeAttr('checked');  
1780    var elements = 'poi-attribute-';
1781    jQuery('[id^='+elements+']:checked').removeAttr('checked');
1782    var elements = 'poi-city-attribute-';
1783    jQuery('[id^='+elements+']:checked').removeAttr('checked');   
1784    var elements = 'rental-attribute-';
1785    jQuery('[id^='+elements+']:checked').removeAttr('checked'); 
1786    var elements = 'poi-attribute-stringValue-';
1787    jQuery('[id^='+elements+']').val('');   
1788    var elements = 'rental-attribute-stringValue-';
1789    jQuery('[id^='+elements+']').val(''); 
1790    //jQuery('#startdate').val(''); 
1791    //jQuery('#enddate').val(''); 
1792    //jQuery('#rooms').val(''); 
1793  });
1794
1795  // -----------------------------------------------------------------------------
1796  // Start Search Rental automatic start
1797  // -----------------------------------------------------------------------------
1798  context = jQuery('#context').val();
1799  if (context == "Rental") {
1800    jQuery('.container-pages').addClass("container-pages-rental");
1801    
1802    //Function startRentalSearch(); funktioniert nicht
1803    if (jQuery('#startdate').val() != '') {
1804      var context = jQuery('#context').val();
1805      var categories = jQuery('#categories').val();
1806      var attributeIDs = jQuery('input[name="attributeIDs"]:last').val();
1807      var dateFormat = jQuery('#dateFormat').val();
1808      var dateDesign = jQuery('#dateDesign').val();
1809      var teaserImage = jQuery('#teaserImage').val();
1810      var allEvents = jQuery('#allEvents').val();
1811      var categoriesIntersection = jQuery('#categoriesIntersection').val();
1812      var uri = jQuery('#uri').val();
1813      var getsize = jQuery('input[name="getsize"]:last').val();
1814      var firstPageNumber = jQuery(this).val();
1815      var nextPage = parseFloat(firstPageNumber) + 1;
1816      var startDate = jQuery('#startdate').val(); 
1817      var endDate = jQuery('#enddate').val(); 
1818      var rooms = jQuery('#rooms').val();
1819      var numOfPeople = jQuery('#numOfPeople').val();
1820      var poiElements = 'poi-attribute';
1821      var rentalElements = 'rental-attribute';
1822      var parentattributeIDs = "";
1823      var attributeIDs = "";
1824      var valueString = "";
1825      var sortPrice = jQuery('input[name="sort-price"]:checked').val();
1826      
1827      //Find all Attribute
1828      jQuery('[id^='+poiElements+']:checked').each(function() { 
1829        id = jQuery(this).val();
1830        parentattributeIDs  = parentattributeIDs  + jQuery(this).val() + ',';
1831        if (typeof jQuery('#poi-attribute-stringValue-'+id).val() !== 'undefined') {
1832          valueString = valueString + id + '-' +  jQuery('#poi-attribute-stringValue-'+id).val() + ',';
1833        }
1834      });
1835      jQuery('[id^='+rentalElements+']:checked').each(function() { 
1836        id = jQuery(this).val();
1837        attributeIDs  = attributeIDs  + jQuery(this).val() + ',';
1838        if (typeof jQuery('#rental-attribute-stringValue-'+id).val() !== 'undefined') {
1839          valueString = valueString + id + '-' + jQuery('#rental-attribute-stringValue-'+id).val() + ',';
1840        }
1841      });
1842      jQuery('.searchinfotext').remove(); 
1843      //alert('hier-auto-start');
1844      jQuery.ajax({
1845      type:'POST',
1846      dataType:'text',
1847      url:'https://'+domain+'/dataobjects/load',
1848      data:{nextPage:nextPage,context:context,categoriesIntersection:categoriesIntersection,categories:categories,attributeIDs:attributeIDs,parentattributeIDs:parentattributeIDs,uri:uri,getsize:getsize,dateFormat:dateFormat,dateDesign:dateDesign,teaserImage:teaserImage,allEvents:allEvents,
1849            startDate:startDate,endDate:endDate,rooms:rooms,valueString:valueString,sortPrice:sortPrice,numOfPeople:numOfPeople },
1850        success:function(response){
1851          //old Objectes display none - new Objects append
1852          jQuery('.object-list div').addClass('grid-search-hidden');   
1853          jQuery('.object-list').append(response);
1854        },
1855        error:function(error){
1856          
1857        }
1858      });
1859    }
1860  }
1861  
1862  // -----------------------------------------------------------------------------
1863  // Start Search Rental - Search and Filter
1864  // -----------------------------------------------------------------------------
1865
1866  //jQuery(".start-rental-search, .rental-search-search, .rental-search-cancel").click(function(event){ 
1867  jQuery(".start-rental-search, .rental-search-cancel, .search-attribute-box input:checkbox, .search-attribute-box input:radio").click(function(event){ 
1868    if(jQuery(this).hasClass('rental-search-cancel')) {
1869      error = false;
1870    } else {
1871      error = checkRentalSearch();
1872    }
1873    /* var headerHeight = jQuery('.header-wrap').height();
1874    $('html, body').animate({
1875      scrollTop: jQuery('.object-list').offset().top - headerHeight - 100
1876    }, 750, 'easeInOutQuart'); */
1877     
1878    if (error != false) {
1879      jQuery('.object-list').first().prepend('<div class="searchinfotext">'+ error+'</div> ') ;
1880    } else {
1881      jQuery('.rental-load').addClass('loading');
1882      var context = 'Rental';
1883      var categories = jQuery('#categories').val();
1884      var attributeIDs = jQuery('input[name="attributeIDs"]:last').val();
1885      var dateFormat = jQuery('#dateFormat').val();
1886      var dateDesign = jQuery('#dateDesign').val();
1887      var teaserImage = jQuery('#teaserImage').val();
1888      var allEvents = jQuery('#allEvents').val();
1889      var categoriesIntersection = jQuery('#categoriesIntersection').val();
1890      var uri = jQuery('#uri').val();
1891      var getsize = jQuery('input[name="getsize"]:last').val();
1892      var firstPageNumber = jQuery(this).val();
1893      var nextPage = parseFloat(firstPageNumber) + 1;
1894      var startDate = jQuery('#startdate').val(); 
1895      var endDate = jQuery('#enddate').val(); 
1896      var rooms = jQuery('#rooms').val();
1897      var numOfPeople = jQuery('#numOfPeople').val();
1898      var categoryElements = 'category-attribute';
1899      var poiElements = 'poi-attribute';
1900      var poiCityElements = 'poi-city-attribute';
1901      var rentalElements = 'rental-attribute';
1902      var parentattributeIDs = "";
1903      var attributeIDs = "";
1904      var orattributeIDs = "";
1905      var orparentattributeIDs = "";
1906      var valueString = "";
1907      var sortPrice = jQuery('input[name="sort-price"]:checked').val();
1908     
1909      //Find all Attribute
1910      jQuery('[id^='+categoryElements+']:checked').each(function() { 
1911        id = jQuery(this).val();
1912        orattributeIDs  = orattributeIDs  + jQuery(this).val() + ',';        
1913      });
1914      jQuery('[id^='+poiElements+']:checked').each(function() { 
1915        id = jQuery(this).val();
1916        parentattributeIDs = parentattributeIDs + jQuery(this).val() + ',';
1917        if (typeof jQuery('#poi-attribute-stringValue-'+id).val() !== 'undefined') {
1918          valueString = valueString + id + '-' +  jQuery('#poi-attribute-stringValue-'+id).val() + ',';
1919        }
1920      });
1921      jQuery('[id^='+poiCityElements+']:checked').each(function() { 
1922        id = jQuery(this).val();
1923        orparentattributeIDs = orparentattributeIDs + jQuery(this).val() + ',';
1924      });
1925      jQuery('[id^='+rentalElements+']:checked').each(function() { 
1926        id = jQuery(this).val();
1927        attributeIDs = attributeIDs + jQuery(this).val() + ',';
1928        if (typeof jQuery('#rental-attribute-stringValue-'+id).val() !== 'undefined') {
1929          valueString = valueString + id + '-' + jQuery('#rental-attribute-stringValue-'+id).val() + ',';
1930        }
1931      });
1932      jQuery('.searchinfotext').remove(); 
1933      //alert('hier-frontend');
1934      jQuery.ajax({
1935      type:'POST',
1936      dataType:'text',
1937      url:'https://'+domain+'/dataobjects/load',
1938      data:{nextPage:nextPage,context:context,categoriesIntersection:categoriesIntersection,categories:categories,
1939        attributeIDs:attributeIDs,parentattributeIDs:parentattributeIDs,orattributeIDs:orattributeIDs,orparentattributeIDs:orparentattributeIDs,
1940        uri:uri,getsize:getsize,dateFormat:dateFormat,dateDesign:dateDesign,teaserImage:teaserImage,allEvents:allEvents,
1941        startDate:startDate,endDate:endDate,rooms:rooms,valueString:valueString,sortPrice:sortPrice,numOfPeople:numOfPeople },
1942        success:function(response){
1943          //old Objectes display none - new Objects append
1944          //jQuery('.object-list div').addClass('grid-search-hidden');
1945          jQuery('.object-list').html(response);
1946          localStorage.setItem("rentalstartdate", startDate);
1947          localStorage.setItem("rentalenddate", endDate);
1948          
1949          setTimeout(function() {
1950            jQuery('.rental-load').removeClass('loading');
1951          }, 500);
1952        },
1953        error:function(error){
1954          
1955        }
1956      });
1957
1958    } // end Check is ok
1959
1960    
1961
1962  });
1963
1964  // -----------------------------------------------------------------------------
1965  // Rental Filter Navigation
1966  // -----------------------------------------------------------------------------
1967
1968  jQuery('.rental-search-title').click(function() {
1969    if(jQuery(this).hasClass('filter-visible')) {
1970      jQuery(this).next('.grid-container-categories').hide();
1971      jQuery(this).removeClass('filter-visible');
1972    } else {
1973      jQuery(this).next('.grid-container-categories').show();
1974      jQuery(this).addClass('filter-visible');
1975    }
1976  });
1977
1978  // -----------------------------------------------------------------------------
1979  // Rental Bookmarks
1980  // -----------------------------------------------------------------------------
1981
1982  jQuery(document).ready(function() {
1983    var currentBookmarks = getCookie('Rental_Bookmarks');
1984    if (currentBookmarks) {
1985      var currentBookmarksVal = getCookie('Rental_Bookmarks');
1986      var arrayBookmarks = currentBookmarksVal.split(',');
1987      $.each(arrayBookmarks,function(i){
1988        jQuery('.rental-booking-bookmark').each(function() {
1989          if (jQuery(this).val() == arrayBookmarks[i]) {
1990            jQuery(this).hide();
1991            jQuery(this).next('.rental-booking-bookmark-delete').show();
1992          }
1993        });
1994        countBookmarks = i++;
1995      });
1996      jQuery('.my-bookmarks span').html(countBookmarks);
1997      jQuery('.modal.rental-bookmarks .modal-content > h4 span').html(countBookmarks);
1998    }
1999  });
2000
2001  jQuery('.rental-booking-bookmark').click(function() {
2002    var currentBookmarks = getCookie('Rental_Bookmarks');
2003    var rentalId = jQuery(this).val();
2004    var date = new Date();
2005    var year = date.getFullYear();
2006    var month = date.getMonth();
2007    var day = date.getDate();
2008    var expires = new Date(year + 2, month, day);
2009    if (!currentBookmarks) {
2010      document.cookie = "Rental_Bookmarks=" + rentalId + ',' + "; path=/; expires=" + expires;
2011    } else {
2012      var newBookmarks = currentBookmarks + rentalId + ',';
2013      document.cookie = "Rental_Bookmarks=" + newBookmarks + "; path=/; expires=" + expires;
2014    }
2015    jQuery(this).hide();
2016    jQuery(this).next('.rental-booking-bookmark-delete').show();
2017    var currentBookmarksVal = getCookie('Rental_Bookmarks');
2018    var arrayBookmarks = currentBookmarksVal.split(',');
2019    $.each(arrayBookmarks,function(i){
2020      countBookmarks = i++;
2021    });
2022    jQuery('.my-bookmarks span').html(countBookmarks);
2023    jQuery('.modal.rental-bookmarks .modal-content > h4 span').html(countBookmarks);
2024  });
2025
2026  jQuery('.rental-booking-bookmark-delete').click(function() {
2027    var currentBookmarks = getCookie('Rental_Bookmarks');
2028    var rentalId = jQuery(this).val();
2029    var date = new Date();
2030    var year = date.getFullYear();
2031    var month = date.getMonth();
2032    var day = date.getDate();
2033    var expires = new Date(year + 2, month, day);
2034    var removeString = rentalId + ',';
2035    var updatedBookmarks = currentBookmarks.replace(removeString,'');
2036    document.cookie = "Rental_Bookmarks=" + updatedBookmarks + "; path=/; expires=" + expires;
2037    jQuery(this).hide();
2038    jQuery(this).prev('.rental-booking-bookmark').show();
2039    var currentBookmarksVal = getCookie('Rental_Bookmarks');
2040    var arrayBookmarks = currentBookmarksVal.split(',');
2041    $.each(arrayBookmarks,function(i){
2042      countBookmarks = i++;
2043    });
2044    jQuery('.my-bookmarks span').html(countBookmarks);
2045    jQuery('.modal.rental-bookmarks .modal-content > h4 span').html(countBookmarks);
2046  });
2047
2048  jQuery('.my-bookmarks').click(function(){
2049    var currentUri = window.location.href;
2050    jQuery('body').addClass('modal-open');
2051    jQuery('.modal.rental-bookmarks').show(0, function() {
2052      var windowHeight = jQuery(window).height();
2053      var modalHeight = jQuery(this).closest('.do-bookingurl').find('.modal .modal-box').height();
2054      if(modalHeight > windowHeight) {
2055        jQuery(this).addClass("maxheight");
2056      }
2057    });
2058    jQuery.ajax({
2059      type:'POST',
2060      dataType:'text',
2061      url:'https://' + domain + '/rental/bookmarks',
2062      data:{currentUri:currentUri},
2063      success:function(data){
2064        jQuery('.modal.rental-bookmarks .modal-reference').html(data);
2065        jQuery('.modal.rental-bookmarks .rental-booking-bookmark-delete').click(function() {
2066          var currentBookmarks = getCookie('Rental_Bookmarks');
2067          var rentalId = jQuery(this).val();
2068          var date = new Date();
2069          var year = date.getFullYear();
2070          var month = date.getMonth();
2071          var day = date.getDate();
2072          var expires = new Date(year + 2, month, day);
2073          var removeString = rentalId + ',';
2074          var updatedBookmarks = currentBookmarks.replace(removeString,'');
2075          document.cookie = "Rental_Bookmarks=" + updatedBookmarks + "; path=/; expires=" + expires;
2076          jQuery(this).parents('.rental-frontend').remove();
2077          jQuery('.rental-booking-bookmark-delete').each(function() {
2078            if (jQuery(this).val() == rentalId) {
2079              jQuery(this).hide();
2080              jQuery(this).prev('.rental-booking-bookmark').show();
2081            }
2082          });
2083          var currentBookmarksVal = getCookie('Rental_Bookmarks');
2084          var arrayBookmarks = currentBookmarksVal.split(',');
2085          $.each(arrayBookmarks,function(i){
2086            countBookmarks = i++;
2087          });
2088          jQuery('.my-bookmarks span').html(countBookmarks);
2089          jQuery('.modal.rental-bookmarks .modal-content > h4 span').html(countBookmarks);
2090        });
2091      },
2092      error:function(error){
2093      }
2094    });
2095  });
2096
2097  jQuery('.bookmarks-print-header button').click(function() {
2098    window.print();
2099  })
2100
2101  // -----------------------------------------------------------------------------
2102  // Rental Open Booking Form
2103  // -----------------------------------------------------------------------------
2104
2105  jQuery('.rental-booking-link').click(function() {
2106    var modalID = jQuery(this).val();
2107    var modal = '.modal-' + modalID;
2108
2109    var getStartDate = localStorage.getItem("rentalstartdate");
2110    var getEndDate = localStorage.getItem("rentalenddate");
2111
2112    jQuery(modal).find('input[name="date-start"]').val(getStartDate);
2113    jQuery(modal).find('input[name="date-end"]').val(getEndDate);
2114    
2115    jQuery('body').addClass('modal-open');
2116
2117    jQuery(modal).show(0, function() {
2118      var windowHeight = jQuery(window).height();
2119      var modalHeight = jQuery(this).closest('.do-bookingurl').find('.modal .modal-box').height();
2120      if(modalHeight > windowHeight) {
2121        jQuery(this).addClass("maxheight");
2122      }
2123    });
2124
2125    jQuery(modal + " button[type='submit']").click(function() {
2126      jQuery(modal + " input[required]").each(function() {
2127        if ($(this).val() == "") {
2128          $(this).css("border", "1px solid red");
2129          $(this).prev('label').css("color", "red");
2130        } else if ($(this).is(":invalid")) {
2131          $(this).css("border", "1px solid red");
2132          $(this).prev('label').css("color", "red");
2133        }
2134        if ($(modal + " .policy-check input").val() == "") {
2135          $(this).closest('label').css("color", "red");
2136        }
2137      });
2138    });
2139
2140    jQuery(modal + " input[required]").each(function() {
2141      if ($(this).val() !== "") {
2142        $(this).css("border", "1px solid green");
2143        $(this).prev('label').css("color", "green");
2144      }
2145    });
2146    jQuery(modal + " input[required]").change(function() {
2147      if ($(this).val() !== "") {
2148        $(this).css("border", "1px solid green");
2149        $(this).prev('label').css("color", "green");
2150      } else if ($(this).val() == "") {
2151        $(this).css("border", "1px solid red");
2152        $(this).prev('label').css("color", "red");
2153      }
2154      if ($(this).is(":invalid")) {
2155        $(this).css("border", "1px solid red");
2156        $(this).prev('label').css("color", "red");
2157      }
2158      if ($(modal + " .policy-check input").is(":checked")) {
2159        $(this).closest('label').css("color", "green");
2160      } else {
2161        $(this).closest('label').css("color", "red");
2162      }
2163    });
2164
2165  });
2166
2167
2168
2169  jQuery(document).ready(function() {
2170    if(getUrlParameter('bookingrequestsent')) {
2171      jQuery("body").addClass("modal-open");
2172      jQuery(".modal.rental-booking-message").show();
2173      jQuery(".modal.rental-booking-message .modal-reference").addClass('request-succeeded').append(
2174        "<h5>Ihre Buchungsanfrage wurde erfolgreich versendet!</h5><p>Parallel erhalten Sie eine E-Mail mit der Zusammenfassung Ihrer Anfrage. Der Anbieter oder die Anbieterin wird sich zeitnah mit Ihnen in Verbindung setzen.</p>"
2175      );
2176    } else if(getUrlParameter('bookingrequestfailed')) {
2177      jQuery("body").addClass("modal-open");
2178      jQuery(".modal.rental-booking-message").show();
2179      jQuery(".modal.rental-booking-message .modal-reference").addClass('request-failed').append(
2180        "<h5>Leider ist ein Fehler aufgetreten.</h5><p>Bitte versuchen Sie es noch einmal oder wenden Sie sich direkt an den Anbieter oder die Anbieterin.</p>"
2181      );
2182    }
2183  });
2184
2185  // -----------------------------------------------------------------------------
2186  // Check Search Rental - Search and Filter
2187  // - Requierd Inputs: startdate, enddate,rooms, 1x Housecategory
2188  // - startdate < enddate
2189  // - startdate today or future
2190  // -----------------------------------------------------------------------------
2191  function checkRentalSearch(thdate) { 
2192    error = false;
2193    jQuery('.searchinfotext').remove(); 
2194
2195    if (jQuery('#rooms').val() == '' ) {
2196      jQuery('#rooms').focus();
2197      error = true;
2198    } 
2199    if (jQuery('#numOfPeople').val() == '' ) {
2200      jQuery('#numOfPeople').focus();
2201      error = true;
2202    } 
2203    if (jQuery('#enddate').val() == '' ) {
2204      jQuery('#enddate').focus();
2205      error = true;
2206    }   
2207    if (jQuery('#startdate').val() == '' ) {
2208      jQuery('#startdate').focus();
2209      error = true;
2210    } 
2211    if (error == true) {
2212      error = '<h4>Bitte geben Sie Ihre An- und Abreise sowie die gewünschte Zimmeranzahl an.</h4>';
2213    }
2214
2215    if (error == false) {
2216      date = new Date();
2217      year = date.getFullYear();
2218      month = date.getMonth()+1;
2219      dt = date.getDate();
2220      if (dt < 10)    { dt = '0' + dt;   }
2221      if (month < 10) { month = '0' + month; }
2222      today = year +'-' + month + '-'+ dt;
2223      dateToday = new Date(today);
2224      dateStart = new Date(jQuery('#startdate').val());
2225      dateEnd = new Date(jQuery('#enddate').val());
2226      if (dateToday > dateStart) {
2227        jQuery('#startdate').focus();
2228        error = '<h4>Anreise Datum kann nicht in der Vergangenheit liegen.</h4><p>Bitte geben Sie das Anreise Datum erneut ein.</p>';
2229      }
2230      if (dateEnd <= dateStart ) {
2231        jQuery('#enddate').focus();
2232        error = '<h4>Abreise Datum kann nicht vor oder gleich dem Anreise Datum sein.</h4><p>Bitte geben Sie das Abreise Datum erneut ein.</p>';
2233      }          
2234    }
2235
2236    /* if (error == false) {
2237      var elements = 'category-attribute-';
2238      countCategories = jQuery('[id^='+elements+']').length;
2239      countCategory = jQuery('[id^='+elements+']:checked').length;  
2240      if (countCategory == 0 && countCategories > 0) {
2241        error = 'Es muss mindestens eine Haus-Kategorie angegeben werden.';
2242      }     
2243    } */
2244
2245    
2246    return(error);
2247  }
2248
2249  jQuery(".search-dates #startdate").click(function() {
2250    if (jQuery(".search-rooms #rooms").val() == '') { 
2251      jQuery(".search-rooms #rooms").val(1);
2252    }
2253    if (jQuery(".search-rooms #numOfPeople").val() == '') { 
2254      jQuery(".search-rooms #numOfPeople").val(1);
2255    }
2256  });
2257
2258});
2259
2260// -----------------------------------------------------------------------------
2261// 1. set alternative texts for links in longDescription
2262// 2. Hidden Current Month befor Calendar
2263// -----------------------------------------------------------------------------
2264jQuery(document).ready(function(){
2265  $('.do-longdesc a').each(function() {
2266    var title = $(this).text();
2267    $(this).attr({'title':title});     
2268  });
2269
2270  checkMonthCalendar();  
2271  jQuery(".fc-next-button, .fc-prev-button, .fc-today-button").click(function() {
2272    checkMonthCalendar(); 
2273  });
2274 
2275});
2276
2277// -----------------------------------------------------------------------------
2278// filter Search Result
2279// -----------------------------------------------------------------------------
2280jQuery(document).ready(function(){
2281  jQuery(".nodesearch-result > .row").each(function(){
2282      var title = jQuery(this).find('.search-result-title').text().toLowerCase();
2283      
2284      jQuery(".nodesearch-result .row ").sort(sort_li).appendTo('.nodesearch-result ');
2285        function sort_li(a, b) {
2286        return (jQuery(b).data('sort')) < (jQuery(a).data('sort')) ? 1 : -1;
2287      }
2288  }); 
2289});
2290
2291// -----------------------------------------------------------------------------
2292// Filter Dates in Events
2293// -----------------------------------------------------------------------------
2294var thdate = jQuery('.table-dates-dc .thdate'), inverse = false;
2295
2296thdate.click(function() {
2297  thdate = $(this)
2298  jQuery('.show-details-dates').addClass('sortedDates');
2299  jQuery('.show-details-dates').removeClass('click-details');
2300  jQuery('.tr-show-details-dates').css({"display":"none"});
2301  sortTableDate(thdate);
2302});
2303
2304function sortTableDate(thdate) { 
2305  var header = thdate, index = header.index();
2306  jQuery('.report-table .thdate').removeClass('sorted');
2307  jQuery(this).addClass('sorted');
2308  header.closest('table').find('td').filter(function() {
2309    return $(this).index() === index;
2310  }).sortElements(function(a, b){
2311    a = $(a).text();
2312    b = $(b).text();
2313    a = a.toLowerCase();
2314    b = b.toLowerCase(); 
2315    a = a.replace(":","");
2316    b = b.replace(":","");
2317   
2318    // Sort Date and Time
2319    if(a.includes(":") || b.includes(":") ) {
2320      n = "";
2321      a =  n.concat(a.substring(6,10),a.substring(3,5),a.substring(0,2),a.substring(11,13),a.substring(14,16));
2322      b =  n.concat(b.substring(6,10),a.substring(3,5),b.substring(0,2),b.substring(11,13),b.substring(14,16));
2323    }
2324
2325    return (
2326      isNaN(a) || isNaN(b) ? a > b : +a > +b
2327    ) ? inverse ? -1 : 1 : inverse ? 1 : -1;
2328  }, function() {
2329    return this.parentNode;
2330  });
2331  inverse = !inverse;
2332}
2333
2334function checkMonthCalendar() { 
2335  const monthNames = ["Januar", "Februar", "März", "April", "Mai", "Juni",
2336  "Juli", "August", "September", "Oktober", "November", "Dezember"
2337  ];
2338  var d = new Date();
2339  var thismonth = monthNames[d.getMonth()] + ' ' + d.getFullYear();
2340  var showmonth = jQuery('.fc-toolbar-title').text();
2341
2342  if (showmonth == thismonth) {
2343    jQuery('.fc-prev-button .fc-icon').css({"display":"none"});
2344  } else {
2345    jQuery('.fc-prev-button .fc-icon').css({"display":"block"});
2346  }
2347
2348}
2349
2350// -----------------------------------------------------------------------------
2351// show search box
2352// -----------------------------------------------------------------------------
2353jQuery('.show-search-box').click(function(event) {
2354  jQuery('.search-box:first-of-type').toggle();
2355  jQuery('.search-box').toggle();
2356  jQuery('.gdc-search-cancel').toggle();
2357  jQuery('.gdc-search-search').toggle(); 
2358  aria = jQuery('.show-search-box').attr('aria-expanded');
2359  
2360  //Barrierefreiheit
2361  if (aria == 'false') { jQuery('.show-search-box').attr('aria-expanded','true'); }
2362  if (aria == 'true') { jQuery('.show-search-box').attr('aria-expanded','false');}
2363  event.stopPropagation();
2364  event.stopImmediatePropagation();       
2365});
2366
2367// -----------------------------------------------------------------------------
2368// Start Search GDC
2369// -----------------------------------------------------------------------------
2370jQuery(document).ready(function(){
2371  domain = window.location.hostname;
2372
2373  //Filter function is visible by default
2374  //jQuery(".gdc-filter .show-search-box").triggerHandler("click");
2375    
2376  jQuery(".gdc-search-search, .gdc-search-button").click(function(){ 
2377    jQuery('.lds-ring').removeClass('hidden');
2378    var context = jQuery('#context').val();
2379    var categories = jQuery('#categories').val();
2380    var attributeIDs = jQuery('input[name="attributeIDs"]:last').val();
2381    var dateFormat = jQuery('#dateFormat').val();
2382    var dateDesign = jQuery('#dateDesign').val();
2383    var teaserImage = jQuery('#teaserImage').val();
2384    var allEvents = jQuery('#allEvents').val();
2385    var categoriesIntersection = jQuery('#categoriesIntersection').val();
2386    var uri = jQuery('#uri').val();
2387    var getsize = 99999;
2388    //var getsize = jQuery('input[name="getsize"]:last').val();
2389    var nextPage = 0;
2390    jQuery(this).val(nextPage);
2391   
2392    var optionSelected = "";
2393    var startdate = "";
2394    var enddate = "";
2395    var elements = 'category-';
2396   /*  jQuery("#categoriesBox option:selected").each(function() {     
2397      optionSelected = optionSelected + jQuery(this).val() + ',';
2398    }); */
2399    jQuery('[id^='+elements+']:checked').each(function() {     
2400      optionSelected = optionSelected + jQuery(this).val() + ',';
2401    });
2402
2403    // Remove last Komma in the optionSelected String
2404    if (optionSelected != "") {
2405      categories = optionSelected.substring(0,(optionSelected.lastIndexOf(",")));
2406    }
2407
2408    var freetext = jQuery('#freetext').val(); 
2409    var startdate = jQuery('#startdate').val();
2410    var enddate = jQuery('#enddate').val();
2411    var showGender = jQuery('#showGender').val();
2412    var showTitle = jQuery('#showTitle').val();
2413    var showFirstName = jQuery('#showFirstName').val();
2414
2415    
2416    jQuery.ajax({
2417     type:'POST',
2418     dataType:'text',
2419     url:'https://'+domain+'/dataobjects/search',
2420     data:{search:true,nextPage:nextPage,context:context,categoriesIntersection:categoriesIntersection,
2421          categories:categories,freetext:freetext,startdate:startdate,enddate:enddate,
2422          attributeIDs:attributeIDs,uri:uri,getsize:getsize,dateFormat:dateFormat,dateDesign:dateDesign,
2423          teaserImage:teaserImage,allEvents:allEvents,showGender:showGender,showTitle:showTitle,showFirstName:showFirstName},
2424     success:function(response){
2425        // remove all the old GDC objects   
2426        var clear = clearGDCSearchInput(context);
2427        // add new elements, hidden button "mehr laden" and "Suche/Filter"
2428        jQuery('.gdc-list').append(response);  
2429        jQuery('.lds-ring').addClass('hidden');
2430        jQuery(".container-pages").addClass('gdc-search-hidden');
2431        jQuery('.gdc-search').addClass('gdc-search-hidden');
2432        jQuery('.gdc-search:first-of-type').removeClass('gdc-search-hidden');       
2433        jQuery('.search-box-p').addClass('gdc-search-hidden');
2434        jQuery('.search-box-p:first-of-type').removeClass('gdc-search-hidden');
2435
2436        // Scroll to Result Row
2437        if (jQuery('.searchResult p').text().indexOf('kein') < 0) {
2438          jQuery('html, body').animate({ scrollTop: $('.searchResult').offset().top - 200 }, 'slow');
2439          jQuery('.searchResult').focus();
2440        }
2441        
2442        if (context == "Service") {
2443          jQuery('.filter-wrap').addClass('gdc-search-hidden');
2444        }
2445       
2446      },
2447      error:function(error){
2448        alert('Fehler Suche.');       
2449      }
2450    });
2451  });
2452});
2453
2454// is freetext enter -> start search
2455jQuery("#gdc-list-search #freetext").keydown(e => {
2456  if (e.which === 13) { 
2457    jQuery(".gdc-search-search").triggerHandler("click");
2458    e.preventDefault();
2459  }
2460});
2461// go back GDC Detail to List -> filter select
2462jQuery(document).ready(function(){ 
2463  if (jQuery("#freetext").val() != '' || jQuery('[id^=category-]:checked').length > 0) {
2464    jQuery(".gdc-search.show-search-box").triggerHandler("click");
2465    jQuery(".gdc-search-search").triggerHandler("click");
2466    jQuery(".rental-search-search").triggerHandler("click");
2467    jQuery(".rental-search.show-search-box").triggerHandler("click");
2468  }  
2469});
2470
2471// -----------------------------------------------------------------------------
2472// Clear Search GDC
2473// -----------------------------------------------------------------------------
2474jQuery(document).ready(function(){
2475  domain = window.location.hostname;
2476  
2477  jQuery(".gdc-search-cancel").click(function(){ 
2478    jQuery('.lds-ring').removeClass('hidden');
2479    var context = jQuery('#context').val();
2480    var categories = jQuery('#categories').val();
2481    var attributeIDs = jQuery('input[name="attributeIDs"]:last').val();
2482    var dateFormat = jQuery('#dateFormat').val();
2483    var dateDesign = jQuery('#dateDesign').val();
2484    var teaserImage = jQuery('#teaserImage').val();
2485    var allEvents = jQuery('#allEvents').val();
2486    var showAll = jQuery('#showAll').val();
2487    var categoriesIntersection = jQuery('#categoriesIntersection').val();
2488    var calendarSheet = jQuery('#calendarSheet').val();
2489    var uri = jQuery('#uri').val();
2490    var getsize = jQuery('#getsize').val();
2491    var getsize = showAll ? 9999999 : jQuery('#getsize').val();
2492    var nextPage = 0;
2493    
2494    jQuery(this).val(nextPage);
2495    
2496    // Clear all Input Fields and Selected Fields
2497    //jQuery("#categoriesBox option:selected").removeAttr("selected");
2498    var elements = 'category-';
2499    jQuery('[id^='+elements+']:checked').removeAttr('checked');
2500    jQuery('#freetext').val('');
2501    jQuery('#startdate').val('');
2502    jQuery('#enddate').val('');
2503
2504    if (context == "Service") {
2505      var clear = clearGDCSearchInput('searchService'); 
2506      jQuery('.report-table-service:first-of-type').removeClass('gdc-search-hidden');
2507      jQuery('.report-table-service:nth-child(2)').remove();
2508      jQuery('.lds-ring').addClass('hidden'); 
2509    } else {
2510      jQuery.ajax({
2511        type:'POST',
2512        dataType:'text',
2513        url:'https://'+domain+'/dataobjects/search',
2514        data:{search:false,nextPage:nextPage,context:context,categoriesIntersection:categoriesIntersection,
2515          categories:categories,attributeIDs:attributeIDs,uri:uri,getsize:getsize,dateFormat:dateFormat,dateDesign:dateDesign,
2516          teaserImage:teaserImage,allEvents:allEvents,calendarSheet:calendarSheet},
2517        success:function(response){   
2518          
2519          // remove all the old GDC objects       
2520          var clear = clearGDCSearchInput(context);     
2521
2522          // add new elements, show button "mehr laden", hidden button "Suche/Filter"
2523          jQuery('.gdc-list').append(response);
2524          jQuery('.lds-ring').addClass('hidden');
2525
2526          //next Page Button
2527          var element = jQuery(".container-pages").val();
2528          if(typeof(element) === 'undefined' || element === null) {
2529            if (!showAll || typeof(showAll) === 'undefined' ) {
2530              var button = '<button class="container-pages" value="0">Mehr laden</button>';
2531              jQuery(button).insertAfter(jQuery('.gdc-list'));
2532            }
2533            // Event included
2534            jQuery(".container-pages").click(function(){  //alert('hier5');
2535              jQuery('.lds-ring').removeClass('hidden');
2536              var context = jQuery('#context').val();
2537              var categories = jQuery('#categories').val();
2538              var attributeIDs = jQuery('input[name="attributeIDs"]:last').val();
2539              var dateFormat = jQuery('#dateFormat').val();
2540              var dateDesign = jQuery('#dateDesign').val();
2541              var teaserImage = jQuery('#teaserImage').val();
2542              var allEvents = jQuery('#allEvents').val();
2543              var categoriesIntersection = jQuery('#categoriesIntersection').val();
2544              var uri = jQuery('#uri').val();
2545              var getsize = jQuery('input[name="getsize"]:last').val();
2546              var firstPageNumber = jQuery(this).val();
2547              var nextPage = parseFloat(firstPageNumber) + 1;
2548              jQuery(this).val(nextPage);
2549              jQuery.ajax({
2550              type:'POST',
2551              dataType:'text',
2552              url:'https://'+domain+'/dataobjects/load',
2553              data:{nextPage:nextPage,context:context,categoriesIntersection:categoriesIntersection,categories:categories,attributeIDs:attributeIDs,uri:uri,getsize:getsize,dateFormat:dateFormat,dateDesign:dateDesign,teaserImage:teaserImage,allEvents:allEvents},
2554              success:function(response){
2555                  jQuery('.gdc-list').append(response);
2556                  jQuery('.lds-ring').addClass('hidden');
2557                  var getsize = jQuery('input[name="getsize"]:last').val();
2558                  var size = jQuery('input[name="size"]:last').val();
2559                  if(size != getsize) {
2560                    jQuery(".container-pages").remove();
2561                  }
2562          
2563                  jQuery('.gdc-search').addClass('gdc-search-hidden');
2564                  jQuery('.gdc-search:first-of-type').removeClass('gdc-search-hidden');       
2565                  jQuery('.search-box-p').addClass('gdc-search-hidden');
2566                  jQuery('.search-box-p:first-of-type').removeClass('gdc-search-hidden');
2567                },
2568                error:function(error){
2569          
2570                }
2571              });
2572            });
2573          } else {  
2574            if (!showAll || typeof(showAll) === 'undefined' ) {
2575              jQuery('.container-pages:first-of-type').removeClass('gdc-search-hidden');   
2576            }
2577          }
2578
2579          jQuery('.gdc-search').addClass('gdc-search-hidden');
2580          jQuery('.gdc-search:first-of-type').removeClass('gdc-search-hidden');       
2581          jQuery('.search-box-p').addClass('gdc-search-hidden');
2582          jQuery('.search-box-p:first-of-type').removeClass('gdc-search-hidden');
2583          jQuery('.searchResult').remove();
2584
2585          //Show Kalender 
2586          if (context == "Event" && (calendarSheet == 'true' || calendarSheet == true)) {
2587            var calendarEl = document.getElementById('calendar');
2588            var calendar = new FullCalendar.Calendar(calendarEl, {
2589              locale: 'de',
2590              headerToolbar: {
2591                left: 'prev,today,next',
2592                center: 'title',
2593                right: 'dayGridMonth,dayGridWeek,dayGridDay,listWeek'
2594              },
2595              height: 'auto',
2596              navLinks: true,
2597              editable: false,
2598              dayMaxEvents: true,
2599              events: jQuery('.gdc-calendarSheet').data('calendar')
2600            });
2601            calendar.render(); 
2602          }        
2603          //Show Kalender 
2604          
2605        },
2606        error:function(error) {
2607        }
2608      });
2609    } 
2610  });
2611});
2612
2613function clearGDCSearchInput(context) { 
2614  jQuery('.gdc-object').parent().remove();
2615  jQuery('.searchResult').remove();
2616  jQuery('.searchinfotext').remove(); 
2617  if (context == "Service") {
2618    jQuery('.filter-wrap').addClass('gdc-search-hidden');
2619    jQuery('.report-table-service').addClass('gdc-search-hidden');
2620  }
2621  return true;
2622}
2623
2624// -----------------------------------------------------------------------------
2625// Remove all Blanks - / from Telefon Href
2626// -----------------------------------------------------------------------------
2627jQuery(".gdc-attribute a").click(function(){ 
2628  href = jQuery(this).attr('href');
2629  if (href.indexOf("tel") == 0) {   
2630    href = href.replaceAll("-","");
2631    href = href.replaceAll("/","");
2632    href = href.replaceAll("(","");
2633    href = href.replaceAll(")","");
2634    jQuery(this).attr('href',href);   
2635  }; 
2636});
2637
2638// -----------------------------------------------------------------------------
2639// OTB - Kalender / Calendar
2640// -----------------------------------------------------------------------------
2641jQuery(".report-calendar").click(function(){ 
2642  jQuery('.calendar-container').toggle();
2643  jQuery('.appointment-day').toggle();
2644  jQuery('.report-table').toggle();
2645
2646  //Wechseln von Kalenderansicht in Tagesansicht / Switch from calendar view to day view
2647  if (jQuery('.report-calendar').hasClass('dayShowDetailTrue')) {
2648    jQuery(".report-calendar").removeClass('dayShowDetailTrue');   
2649  } else {
2650    showDayShowDetail('showday');
2651    jQuery(".report-calendar").addClass('dayShowDetailTrue');
2652    jQuery(".fc-today-button").triggerHandler("click");
2653    jQuery(".fc-today-button.dayChange").triggerHandler("click");
2654  }
2655 
2656  var today = jQuery('.appointment-day').text();
2657  var dateParts = today.split(" "); 
2658  var todayDate = (dateParts[2] == 'den') ? dateParts[3]:dateParts[2] ;
2659  
2660  styleValue = jQuery('.appointment-day').attr('style');
2661  if(styleValue == 'display: block;') { 
2662    // Tagesansicht / day view / noactive
2663    //All Elements with changeDate -> show 
2664    jQuery('.report-table tbody td:contains('+todayDate+')').parent('tr').css('display', 'grid');
2665    //All Elements date not changeDate -> not show (Tagesansicht)
2666    jQuery('.report-table tbody tr').not(':has(td:contains('+todayDate+'))').css('display', 'none');
2667  } else {
2668    // Kalenderansicht / Calendar view
2669    jQuery('.report-table tbody tr').not(':has(td:contains('+todayDate+'))').css('display', 'grid');
2670  }
2671});
2672
2673// -----------------------------------------------------------------------------
2674// OTB Funktion: 
2675// die Kalenderansicht ist aktiviert und die Ansichtstabelle wird ausgeblendet
2676// dayChange: die Ansichtstabelle wird je nach Tag geändert ist aber in der 
2677//            Kalenderansicht ausgeblendet
2678// calendar view is activated and the view table is hidden
2679// dayChange: the day is changed -> the table changed
2680// -----------------------------------------------------------------------------
2681jQuery(document).ready(function(){
2682  if (jQuery('.content div').hasClass('report-calendar')) {
2683    jQuery(".fc-next-button").addClass('dayChange');
2684    jQuery(".fc-today-button").addClass('dayChange');
2685    jQuery(".fc-prev-button").addClass('dayChange');
2686
2687    //Für die korrekte Ausgabe / Länge der KalenderTabelle
2688    $(window).on('load', function() {
2689      jQuery(".fc-dayGridDay-button").trigger("click");
2690    });
2691
2692    //Tagesansicht Detail ausschalten
2693    jQuery('.appointment-day').toggle();
2694    jQuery('.report-table').toggle();
2695  }
2696
2697  jQuery(".dayChange").click(function(){  
2698    dateValue = jQuery(".fc-toolbar-title").text();
2699    var index = jQuery.inArray("–", dateValue);
2700    if (index >= 0) {
2701      // alert('keine Änderung');
2702    } else {
2703      var dateParts = dateValue.split(" ");
2704      var day = dateParts[0];
2705      var month = dateParts[1];
2706      var year = dateParts[2];
2707
2708      // Konvertieren des Monatsnamens in eine Zahl
2709      const germanToEnglishMonths = new Map([
2710        ['Januar', 'January'],
2711        ['Februar', 'February'],
2712        ['März', 'March'],
2713        ['April', 'April'],
2714        ['Mai', 'May'],
2715        ['Juni', 'June'],
2716        ['Juli', 'July'],
2717        ['August', 'August'],
2718        ['September', 'September'],
2719        ['Oktober', 'October'],
2720        ['November', 'November'],
2721        ['Dezember', 'December']
2722      ]);
2723      const englishMonth = germanToEnglishMonths.get(month);
2724      var monthNum = new Date(Date.parse(englishMonth +" 1, 2000")).getMonth()+1;
2725      if (monthNum < 10) {  monthNum = "0" + monthNum;   }
2726      if (day < 10) {  day = "0" + day;   }
2727
2728      var formattedDate = day + monthNum + "." + year; //der Tag hat bereits einen Punkt
2729      var changeDate = year +'-'+ monthNum + "-" + day.replace('.',''); //der Tag hat einen Punkt
2730
2731      jQuery.ajax({
2732        type:'POST',
2733        dataType:'text',
2734        url:'https://'+domain+'/account/reports/appointments?today',
2735        data:{dateValue:formattedDate},
2736        success:function(response){
2737          //Get and change the day
2738          var wochentage = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; 
2739          var datum = new Date(changeDate);
2740          var wochentagIndex = datum.getDay();
2741          var wochentagName = wochentage[wochentagIndex];
2742          var wochentagName = wochentagName + ' den ' + formattedDate;
2743          jQuery('.appointment-day').text(wochentagName);
2744          //All Elements with changeDate -> show
2745          // jQuery('.report-table tbody td:contains('+formattedDate+')').parent('tr').css('display', 'grid');
2746          //All Elements date not changeDate -> not show
2747          // jQuery('.report-table tbody tr').not(':has(td:contains('+formattedDate+'))').css('display', 'none');
2748        },
2749        error:function(error){
2750          alert('error');
2751        }
2752      });
2753    }
2754  });
2755  
2756  jQuery(".appointmentDetails-notActive").click(function(){ 
2757    var id = jQuery(this).data('id'); 
2758    var appointment = document.querySelector('.modal-btn.report[value="' + id + '"]');  
2759    appointment.click();
2760  });
2761 
2762});
2763
2764// ----------------------------------------------------------------------------------------------------
2765// OTB Funktion closeDayShowDetail: 
2766// Ist die Tagesansicht aktiviert wird die Ansichtstabelle nicht ausgeblendet
2767// Ist die Kalenderansicht aktiviert wird die Ansichtstabelle au
2767sgeblendet
2768// day view is activated, the view table is not hidden
2769// calendar view is activated, the view table is hidden
2770// ----------------------------------------------------------------------------------------------------
2771function closeDayShowDetail() { 
2772  if (jQuery('.content div').hasClass('report-calendar')) { 
2773    if (jQuery('.content div').hasClass('dayShowDetailTrue')) { 
2774    } else { 
2775      jQuery('.report-table').css('display', 'none');
2776    } 
2777  }
2778 }
2779
2780// ----------------------------------------------------------------------------------------------------
2781// OTB Funktion showDayShowDetail: 
2782// Kalenderansicht: Ausgabe der report-table wird ausgeblendet nur die entsprechende Zeile wird eingeblendet                
2783// Tagesansicht: Ausgabeeinstellungen werden zurückgestellt und beim der Detailansicht nicht ausgeblendet 
2784// Calendar view: Output of the report table is hidden, only the selected line is shown
2785// Day view: output settings are reset and not hidden in detail view  
2786// ----------------------------------------------------------------------------------------------------
2787function showDayShowDetail(modal) { 
2788  styleValue = jQuery('.appointment-day').attr('style');
2789  if(styleValue == 'display: block;' || modal == "showday") {
2790    jQuery(".report-table, .report-head tr, .report-table th, .report-table td, .report-table td svg").removeAttr('style');    
2791    jQuery(".report-table .modal-btn.report").removeAttr('style');
2792    jQuery(".report-table tr").css("display","row");
2793  } else {
2794    jQuery(".report-table th").css("display","none");
2795    jQuery(".report-table tr").css("display","none");  
2796    jQuery(".report-table .modal-btn.report").css("display","none");
2797    jQuery(modal + ".report").parent().parent().css("display","block");
2798
2799    // die selectierte Zeile ausblenden - Selcted Row hide
2800    jQuery(".report-table").css({"background":"none","box-shadow":"none"});
2801    jQuery(modal + ".report").parent().parent().find("td:lt(7)").css("display","none");
2802    jQuery(modal + ".report").parent().parent().find("td svg").css("display","none");
2803    jQuery(modal + ".report").parent().parent().find("td .modal-box svg").css("display","block");
2804  }
2805}
2806
2807// ----------------------------------------------------------------------------------------------------
2808// Farbbeschreibung auf und zu klappbar / Color description opened + closed -> noactive
2809// ----------------------------------------------------------------------------------------------------
2810jQuery(".otb-color-status").click(function(){ 
2811  jQuery('.otb-color-status table').toggle();
2812  if (jQuery('.otb-color-status i').hasClass('opened')) {
2813    jQuery('.otb-color-status i').removeClass('opened');
2814  } else {
2815    jQuery('.otb-color-status i').addClass('opened');
2816  }
2817});
2818
2819// ----------------------------------------------------------------------------------------------------
2820// OTB Hinzufügen eines neuen Termines im Backend Modal mit Inputfelder wird angezeigt
2821// Adding a new appointment in the backend modal with input fields is displayed 
2822// ----------------------------------------------------------------------------------------------------
2823jQuery('.modal-btn-new').click(function() {
2824  var modalID = 0;
2825  var modal = '.modal-' + modalID;  
2826  jQuery('body').addClass('modal-open');
2827
2828  if(jQuery(this).hasClass("report")) { 
2829    jQuery(modal + ".report").show();
2830  }
2831});
2832
2833
2834// ----------------------------------------------------------------------------------------------------
2835// digiPortal Backend Mobile Menu
2836// ----------------------------------------------------------------------------------------------------
2837
2838jQuery('.backend-menu-switch').click(function() {
2839  if(jQuery(this).hasClass('backend-switch-active')) {
2840    jQuery(this).removeClass('backend-switch-active');
2841    jQuery('.user-backend .navigation-bar').removeClass('backend-menu-visible');
2842  } else {
2843    jQuery(this).addClass('backend-switch-active');
2844    jQuery('.user-backend .navigation-bar').addClass('backend-menu-visible');
2845  }
2846});
2847
2848/* -----------------------------------------------
2849LANGUAGE SWITCH
2850----------------------------------------------- */
2851
2852$(".language-toggle").click(function() {
2853  $(".language-menu").toggleClass("show");
2854});
2855
2856jQuery(document).ready(function() {
2857  jQuery(".language-menu ul li a").each(function(){
2858    if(jQuery(this).find("span").data("uriparam")) {
2859      // 1. Get href
2860      href = jQuery(this).attr("href");
2861  
2862      // 2. Get and convert locale e.g. "DE" -> "de"
2863      lang = jQuery(this).find("span").text();
2864      langOutput = lang.toLowerCase();
2865  
2866      // 3. Create new "lang" param
2867      paramLangEdited = "lang=" + langOutput;
2868  
2869      // 4. Get original params e.g. "?gdc-name-123&lang=de"
2870      uriParameter = jQuery(this).find("span").data("uriparam");
2871
2872      // 5. Replace old "lang" param with new one from step 3
2873      if(getUrlParameter('lang')) {
2874        langOriginal = getUrlParameter('lang');
2875
2876        if(langOriginal == "de") {
2877          newParamater = uriParameter.replace("lang=de", paramLangEdited);
2878        } else if(langOriginal == "en") {
2879          newParamater = uriParameter.replace("lang=en", paramLangEdited);
2880        } else if(langOriginal == "fr") {
2881          newParamater = uriParameter.replace("lang=fr", paramLangEdited);
2882        }
2883        // 6. Override href
2884        jQuery(this).attr("href", href + "?" + newParamater);
2885      }
2886    }
2887  });
2888});
2889
2890
2891/* -----------------------------------------------
2892Moderation Textarea
2893----------------------------------------------- */
2894
2895jQuery(document).ready(function(){
2896  jQuery('.user-backend .units .unit').each(function() {
2897    jQuery(this).find('.check-rejected').click(function() {
2898      jQuery(this).parents('.modal-content').find('.mod-message').show();
2899      jQuery(this).parents('.modal-content').find('textarea').prop('required',true);
2900    });
2901    jQuery(this).find('.check-approved').click(function() {
2902      jQuery(this).parents('.modal-content').find('.mod-message').hide();
2903      jQuery(this).parents('.modal-content').find('textarea').prop('required',false);
2904    });
2905    
2906  });
2907
2908  jQuery('.user-backend .comments .comment').each(function() {
2909    jQuery(this).find('.modal-btn.moderate').click(function() {
2910      if(jQuery(this).parents('.comment').find('.check-approved input').is(':checked')) {
2911        jQuery(this).parents('.comment').find('.mod-message').hide();
2912        jQuery(this).parents('.comment').find('textarea').prop('required',false);
2913      } else {
2914        jQuery(this).parents('.comment').find('.mod-message').show();
2915        jQuery(this).parents('.comment').find('textarea').prop('required',true);
2916      }
2917      
2918    });
2919
2920    jQuery(this).find('.check-approved').click(function() {
2921      jQuery(this).parents('.modal-content').find('.mod-message').hide();
2922      jQuery(this).parents('.modal-content').find('textarea').prop('required',false);
2923    });
2924    jQuery(this).find('.check-cautioned').click(function() {
2925      jQuery(this).parents('.modal-content').find('.mod-message').show();
2926      jQuery(this).parents('.modal-content').find('textarea').prop('required',true);
2927    });
2928    jQuery(this).find('.check-blocked').click(function() {
2929      jQuery(this).parents('.modal-content').find('.mod-message').show();
2930      jQuery(this).parents('.modal-content').find('textarea').prop('required',true);
2931    });
2932    jQuery(this).find('.check-deleted').click(function() {
2933      jQuery(this).parents('.modal-content').find('.mod-message').show();
2934      jQuery(this).parents('.modal-content').find('textarea').prop('required',true);
2935    });
2936  });
2937  
2938});
2939
2940
2941/* -----------------------------------------------
2942Selectalbe Bookings
2943----------------------------------------------- */
2944/* 
2945for (let i = 0; i < 50; i++) {
2946  const div = document.createElement("div");
2947  div.style.backgroundColor = `hsl(${Math.random() * 360}, 100%, 50%)`;
2948  div.classList.add("selectable");
2949  document.body.append(div);
2950}
2951
2952// --- Main ---
2953const selectables = [];
2954const selectableElems = [...document.querySelectorAll(".selectable")];
2955for (const selectable of selectableElems) {
2956  const {x, y, width, height} = selectable.getBoundingClientRect();
2957  selectables.push({x: x + window.scrollX, y: y + window.scrollY, width, height, elem: selectable});
2958  selectable.dataset.info = JSON.stringify({x, y, width, height});
2959}
2960
2961function checkSelected(selectAreaElem) {
2962  const select = selectAreaElem.getBoundingClientRect();
2963  const {x, y, height, width} = select;
2964  for (const selectable of selectables) {
2965    if (checkRectIntersection({x: x + window.scrollX, y: y + window.scrollY, height, width}, selectable)){
2966      selectable.elem.classList.add("intersected");
2967    } else {
2968      selectable.elem.classList.remove("intersected");
2969    }
2970  }
2971}
2972// ------------
2973
2974function checkRectIntersection(r1, r2) {
2975  return !(r1.x + r1.width  < r2.x ||
2976           r2.x + r2.width  < r1.x ||
2977           r1.y + r1.height < r2.y ||
2978           r2.y + r2.height < r1.y);
2979}
2980
2981addEventListener("pointerdown", createDiv);
2982async function createDiv(event){
2983  event.preventDefault();
2984  const x = event.pageX;
2985  const y = event.pageY;
2986
2987  const div = document.createElement("div");
2988  div.style.position = "absolute";
2989  div.style.width = "0";
2990  div.style.height = "0";
2991  div.style.left = x + "px";
2992  div.style.top = y + "px";
2993  div.classList.add("drag-select");
2994  document.body.append(div);
2995
2996  function resize(event) {
2997    const diffX = event.pageX - x;
2998    const diffY = event.pageY - y;
2999    div.style.left = diffX < 0 ? x + diffX + "px" : x + "px";
3000    div.style.top = diffY < 0 ? y + diffY + "px" : y + "px";
3001    div.style.height = Math.abs(diffY) + "px";
3002    div.style.width = Math.abs(diffX) + "px";
3003    checkSelected(div);
3004  }
3005  selectables.forEach(item => item.elem.classList.remove("intersected"));
3006  addEventListener("pointermove", resize);
3007  addEventListener("pointerup", () => {
3008    removeEventListener("pointermove", resize);
3009    div.remove();
3010  });
3011} */
3012
3013
3014/* -----------------------------------------------
3015EVENTS ICAL
3016----------------------------------------------- */
3017
3018/* function UIDgen() {
3019  var eventUIDN = "";
3020  for (var i = 0; i < 16; i++) {
3021    eventUIDN += Math.floor(Math.random() * (10 - 1 + 1) + 1);
3022    $("#eventuid").val(eventUIDN);
3023  }
3024}
3025
3026$(document).ready( UIDgen() );
3027  
3028$("fakebutton").click(
3029  function() {
3030    var eventname = "NOTHING";
3031    var eventdesc = "NOTHING";
3032    var eventloc = "NOTHING";
3033    var eventuid = "NOTHING";
3034    var startdate = "NOTHING";
3035    var enddate = "NOTHING";
3036    
3037    eventname = $("form").find("input[name='eventname']").val();
3038    eventdesc = $("form").find("textarea[name='eventdesc']").val();
3039    eventloc = $("form").find("input[name='eventloc']").val();
3040    eventuid = $("form").find("input[name='eventuid']").val();
3041    startdate = $("form").find("input[name='startdate']").val();
3042    enddate = $("form").find("input[name='enddate']").val();
3043    var filenametrue = eventname.split(" ").join("_");
3044  filenametrue = filenametrue.replace(/[_\W]+/g, "_") + ".ics";
3045
3046  startdate = dateManipulate(startdate);
3047  enddate = dateManipulate(enddate);
3048  var icsContent =
3049    "BEGIN:VCALENDAR\r\nPRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN\r\nVERSION:2.0\r\nMETHOD:PUBLISH\r\nX-MS-OLK-FORCEINSPECTOROPEN:TRUE\r\nBEGIN:VEVENT\r\nCLASS:PUBLIC\r\nDESCRIPTION:" +
3050    eventdesc +
3051    "\r\nDTEND:" +
3052    enddate +
3053    "\r\nDTSTART:" +
3054    startdate +
3055    "\r\nLOCATION:" +
3056    eventloc +
3057    "\r\nPRIORITY:5\r\nSEQUENCE:0\r\nSUMMARY;LANGUAGE=en-us:" +
3058    eventname +
3059    "\r\nTRANSP:OPAQUE\r\nUID:" +
3060    eventuid +
3061    "\r\nX-MICROSOFT-CDO-BUSYSTATUS:BUSY\r\nX-MICROSOFT-CDO-IMPORTANCE:1\r\nX-MICROSOFT-DISALLOW-COUNTER:FALSE\r\nX-MS-OLK-ALLOWEXTERNCHECK:TRUE\r\nX-MS-OLK-AUTOFILLLOCATION:FALSE\r\nX-MS-OLK-CONFTYPE:0\r\nBEGIN:VALARM\r\nTRIGGER:-PT1440M\r\nACTION:DISPLAY\r\nDESCRIPTION:Reminder\r\nEND:VALARM\r\nEND:VEVENT\r\nEND:VCALENDAR";
3062
3063  var hiddenDL = document.createElement("a");
3064  hiddenDL.setAttribute(
3065    "href",
3066    "data:text/plain;charset=utf-8," + encodeURIComponent(icsContent)
3067  );
3068  hiddenDL.setAttribute("download", filenametrue);
3069  hiddenDL.setAttribute("target", "_blank");
3070  hiddenDL.style.display = "none";
3071  document.body.appendChild(hiddenDL);
3072  hiddenDL.click();
3073  document.body.removeChild(hiddenDL);
3074    
3075  UIDgen();
3076    
3077  }
3078  
3079); */
3080
3081/* -----------------------------------------------
3082EVENT-BOOKING MODAL
3083----------------------------------------------- */
3084
3085jQuery('.gdc-event-capacity .available').click(function(){
3086  jQuery('body').addClass('modal-open');
3087  jQuery(this).next('.modal.event-booking').show(0, function() {
3088    var windowHeight = jQuery(window).height();
3089    var modalHeight = jQuery(this).closest('.do-bookingurl').find('.modal .modal-box').height();
3090    if(modalHeight > windowHeight) {
3091      jQuery(this).addClass("maxheight");
3092    }
3093  });
3094});
3095
3096
3097/* -----------------------------------------------
3098EVENT-BOOKING MODAL DETAIL
3099----------------------------------------------- */
3100
3101jQuery(document).ready(function(){
3102  if(getUrlParameter('event-booking-edit')){
3103    var code = getUrlParameter('code');
3104    var name = getUrlParameter('name');
3105    var date = getUrlParameter('date');
3106    var time = getUrlParameter('time');
3107    var formAction = window.location.origin + "/events/bookings/delete";
3108    var modalHtml = '<div class="modal event-booking-detail"><div class="modal-box"><div class="modal-content"><svg class="modal-close"><use xlink:href="#fas-fa-times"></use></svg><h4>Veranstaltungsdetails</h4><div class="modal-reference"><h5>' + name + '</h5><p><strong>Datum:</strong> ' + date + ' - <strong>Uhrzeit:</strong> ' + time + ' Uhr</p><form action="'+formAction+'" method="post"><input type="hidden" name="code" value="'+code+'" /><button class="delete-event-booking" type="submit">Buchung stornieren</button></form></div></div><div class="modal-footer"><button class="cancel">Schließen</button></div></div></div>';
3109    jQuery('body').append(modalHtml);
3110    jQuery('.modal.event-booking-detail').show();
3111    jQuery('.modal.event-booking-detail .modal-close, .modal.event-booking-detail .cancel').click(function() {
3112      jQuery('.modal.event-booking-detail').hide();
3113    });
3114  }
3115 });
3116
3117 /* -----------------------------------------------
3118EVENT-BOOKING MODAL DELETE SUCCESS
3119----------------------------------------------- */
3120
3121jQuery(document).ready(function(){
3122  if(getUrlParameter('event-booking-deleted')){
3123    var name = getUrlParameter('name');
3124    var date = getUrlParameter('date');
3125    var time = getUrlParameter('time');
3126    var modalHtml = '<div class="modal event-booking-deleted"><div class="modal-box"><div class="modal-content"><svg class="modal-close"><use xlink:href="#fas-fa-times"></use></svg><h4>Buchung storniert</h4><div class="modal-reference"><h5>Ihre Buchung wurde storniert. Sie erhalten noch eine Stornierungsbestätigung per E-Mail.</h5></div></div><div class="modal-footer"><button class="cancel">Schließen</button></div></div></div>';
3127    jQuery('body').append(modalHtml);
3128    jQuery('.modal.event-booking-deleted').show();
3129    jQuery('.modal.event-booking-deleted .modal-close, .modal.event-booking-deleted .cancel').click(function() {
3130      jQuery('.modal.event-booking-deleted').hide();
3131    });
3132  }
3133 });
3134
3135
3136 /* Event Reportlist */
3137
3138 jQuery(document).ready(function() {
3139  jQuery('.dataobject-table.event-bookings-report tbody tr svg.open-bookings').each(function() {
3140    if(jQuery(this).closest('tr').find('td:last-child ul li').html().length == 0) {
3141      jQuery(this).css('fill', '#d5d5d5');
3142    } else {
3143      jQuery(this).click(function() {
3144        jQuery(this).closest('tr').find('td:last-child').slideToggle();
3145        jQuery(this).closest('tr').toggleClass('show-bookings ');
3146      });
3147    }
3148    
3149  });
3150});
3151/*  jQuery('.dataobject-table.event-bookings-report tbody tr li').each(function() {
3152  jQuery(this).click(function() {
3153    alert('test');
3154  });
3155 }); */
3156
3157/* -----------------------------------------------
3158EVENT-BOOKING MODAL MESSAGE
3159----------------------------------------------- */
3160
3161 jQuery(document).ready(function(){
3162  if(getUrlParameter('eventbookingsuccess')){
3163    var name = getUrlParameter('name');
3164    var date = getUrlParameter('date');
3165    var time = getUrlParameter('time');
3166    var modalHtml = '<div class="modal event-booking-success"><div class="modal-box"><div class="modal-content"><svg class="modal-close"><use xlink:href="#fas-fa-times"></use></svg><h4>Veranstaltung gebucht</h4><div class="modal-reference"><h5>' + name + '</h5><p><strong>Datum:</strong> ' + date + ' - <strong>Uhrzeit:</strong> ' + time + ' Uhr</p><p>Eine Buchungsbestätigung wurde an Ihre E-Mail-Adresse geschickt. Ihre Buchung können Sie in Ihrem Konto unter "Meine Termine" einsehen und verwalten.</p></div></div><div class="modal-footer"><button class="cancel">Schließen</button></div></div></div>';
3167    jQuery('body').append(modalHtml);
3168    jQuery('.modal.event-booking-success').show();
3169    jQuery('.modal.event-booking-success .modal-close, .modal.event-booking-success .cancel').click(function() {
3170      jQuery('.modal.event-booking-success').hide();
3171    });
3172  }
3173  if(getUrlParameter('eventbookingerror')){
3174    var name = getUrlParameter('name');
3175    var date = getUrlParameter('date');
3176    var time = getUrlParameter('time');
3177    var modalHtml = '<div class="modal event-booking-error"><div class="modal-box"><div class="modal-content"><svg class="modal-close"><use xlink:href="#fas-fa-times"></use></svg><h4>Buchung fehlgeschlagen</h4><div class="modal-reference"><h5>Leider ist etwas schiefgelaufen</h5><p>Wir konnten den Termin nicht buchen. Bitte versuchen Sie es noch einmal.</p></div></div><div class="modal-footer"><button class="cancel">Schließen</button></div></div></div>';
3178    jQuery('body').append(modalHtml);
3179    jQuery('.modal.event-booking-error').show();
3180    jQuery('.modal.event-booking-error .modal-close, .modal.event-booking-error .cancel').click(function() {
3181      jQuery('.modal.event-booking-error').hide();
3182    });
3183  }
3184 });
3185
3186
3187/* -----------------------------------------------
3188EVENT-BOOKING MODAL BACKEND-DELETION
3189----------------------------------------------- */
3190
3191jQuery(document).ready(function(){
3192  jQuery('.delete-bookings').click(function(e) {
3193    e.preventDefault();
3194    var code = jQuery(this).data('code');
3195    var name = jQuery(this).parent('li').find('span').text();
3196    var mail = jQuery(this).parent('li').find('a').text();
3197    var event = jQuery(this).parents('tr').find('td:nth-child(1) span').text();
3198    var date = jQuery(this).parents('tr').find('td:nth-child(2) span').text();
3199    var time = jQuery(this).parents('tr').find('td:nth-child(3) span').text();
3200    var userDateTime = jQuery(this).parents('.appointmentcard-head').find('.card-date').text();
3201    var userEvent = jQuery(this).parents('.appointmentcard-head').find('.card-activity').text();
3202    var userEventCard = jQuery(this).parents('.appointmentcard');
3203    var eventRow = jQuery(this).parent('li');
3204    var numOfBookings = jQuery(this).parents('tr').find('.numofbookings');
3205    var numOfBookingsVal = jQuery(this).parents('tr').find('.numofbookings').text();
3206
3207    if(!userDateTime) {
3208      var modalHtml = '<div class="modal event-booking-detail"><div class="modal-box"><div class="modal-content"><svg class="modal-close"><use xlink:href="#fas-fa-times"></use></svg><h4>Wollen Sie folgende Buchung wirklich löschen?</h4><div class="modal-reference"><h5>' + name + ' ' + mail + '</h5><p><strong>Veranstaltung:</strong> ' + event + ' - <strong>Datum:</strong> ' + date + ' - <strong>Uhrzeit:</strong> ' + time + ' Uhr</p><form id="delete-event-backend" action="" method="post"><input type="hidden" name="code" value="'+code+'" /><button class="delete-event-booking" type="submit">Buchung stornieren</button></form></div></div><div class="modal-footer"><button class="cancel">Schließen</button></div></div></div>';
3209    } else {
3210      var modalHtml = '<div class="modal event-booking-detail"><div class="modal-box"><div class="modal-content"><svg class="modal-close"><use xlink:href="#fas-fa-times"></use></svg><h4>Wollen Sie folgende Buchung wirklich löschen?</h4><div class="modal-reference"><p><strong>Veranstaltung:</strong> ' + userEvent + '<br><strong>Datum und Uhrzeit:</strong> ' + userDateTime + '</p><form id="delete-event-backend" action="" method="post"><input type="hidden" name="code" value="'+code+'" /><button class="delete-event-booking" type="submit">Buchung stornieren</button></form></div></div><div class="modal-footer"><button class="cancel">Schließen</button></div></div></div>';
3211    }
3212    jQuery('body').append(modalHtml);
3213    jQuery('.modal.event-booking-detail').show();
3214    jQuery('.modal.event-booking-detail .modal-close, .modal.event-booking-detail .cancel').click(function() {
3215      jQuery('.modal.event-booking-detail').remove();
3216    });
3217
3218    jQuery('#delete-event-backend').submit(function(e) {
3219      e.preventDefault();
3220
3221      jQuery.ajax({
3222        type:'POST',
3223        dataType:'text',
3224        url:'https://'+domain+'/events/bookings/delete-backend',
3225        data:{code:code},
3226        success:function(response){
3227          if(!userDateTime) {
3228            jQuery(eventRow).css({
3229              'background': '#d74d4d',
3230              'color': 'white'
3231            });
3232          } else {
3233            jQuery(userEventCard).css({
3234              'background': '#d74d4d',
3235              'color': 'white'
3236            });
3237          }
3238          jQuery(eventRow).css({
3239            'background': '#d74d4d',
3240            'color': 'white'
3241          });
3242          $('.modal.event-booking-detail').fadeOut(100, function() {
3243            jQuery('.modal.event-booking-detail').remove();
3244            if(!userDateTime) {
3245              $(eventRow).fadeOut("slow", function() {
3246                jQuery(eventRow).remove();
3247                jQuery(numOfBookings).html(parseInt(numOfBookingsVal) - 1);
3248              });
3249            } else {
3250              $(userEventCard).fadeOut("slow", function() {
3251                jQuery(userEventCard).remove();
3252              });
3253            }
3254          });
3255        },
3256        error:function(error){
3257  
3258        }
3259      });
3260    });
3261    
3262  });
3263 });
3264
3265jQuery(document).ready(function() {
3266  if(jQuery('.read-workflow.top').length) {
3267    jQuery('.read-workflow.top').prependTo('main .middle');
3268  };
3269  jQuery('#wf-active-confirmation button').click(function(){
3270    jQuery('.rental-load').addClass('loading');
3271  });
3272});
3273
3274/* -----------------------------------------------
3275SUBSCRIPTIONS
3276----------------------------------------------- */
3277
3278jQuery("#subscribeForm").submit(function(e) {
3279  e.preventDefault();
3280  var domain = window.location.hostname;
3281  var currentUri = window.location.href;
3282  var nodeUuid = jQuery('#subscribe-node-uuid').val();
3283  var childNodesUuids = jQuery('#subscribe-childnodes-uuids').val();
3284  jQuery.ajax({
3285    type:'POST',
3286    dataType:'text',
3287    url:'https://'+domain+'/subscription/subscribe',
3288    data:{currentUri:currentUri,nodeUuid:nodeUuid,childNodesUuids:childNodesUuids},
3289    success:function(response){
3290      jQuery('.rental-load.saved-subscription').addClass('loading');
3291      jQuery('#subscribeForm').removeClass('form-visible');
3292      jQuery('#unsubscribeForm').addClass('form-visible');
3293      setTimeout(function() { 
3294        jQuery('.rental-load.saved-subscription').fadeOut(1500);
3295      }, 2000);
3296    },
3297    error:function(error){
3298
3299    }
3300  });
3301});
3302
3303jQuery("#unsubscribeForm").submit(function(e) {
3304  e.preventDefault();
3305  var domain = window.location.hostname;
3306  var currentUri = window.location.href;
3307  var nodeUuid = jQuery('#unsubscribe-node-uuid').val();
3308  jQuery.ajax({
3309    type:'POST',
3310    dataType:'text',
3311    url:'https://'+domain+'/subscription/unsubscribe',
3312    data:{currentUri:currentUri,nodeUuid:nodeUuid},
3313    success:function(response){
3314      jQuery('.rental-load.saved-unsubscription').addClass('loading');
3315      jQuery('#unsubscribeForm').removeClass('form-visible');
3316      jQuery('#subscribeForm').addClass('form-visible');
3317      setTimeout(function() { 
3318        jQuery('.rental-load.saved-unsubscription').fadeOut(1500);
3319      }, 2000);
3320    },
3321    error:function(error){
3322
3323    }
3324  });
3325});
3326
3327
3328jQuery(document).ready(function(){
3329  jQuery('.delete-subscription').click(function(e) {
3330    e.preventDefault();
3331    var nodeUuid = jQuery(this).data('nodeuuid');
3332    var name = jQuery(this).parents('tr').find('a').text();
3333    var eventRow = jQuery(this).parents('tr');
3334
3335    var modalHtml = '<div class="modal event-booking-detail"><div class="modal-box"><div class="modal-content"><svg class="modal-close"><use xlink:href="#fas-fa-times"></use></svg><h4>Wollen Sie folgendes Abonnement wirklich löschen?</h4><div class="modal-reference"><p><strong>Abonnement</strong> "' + name + '"</p><form id="delete-event-backend" action="" method="post"><input type="hidden" name="nodeUuid" value="'+nodeUuid+'" /><button class="delete-event-booking" type="submit">Abonnement löschen</button></form></div></div><div class="modal-footer"><button class="cancel">Schließen</button></div></div></div>';
3336
3337    jQuery('body').append(modalHtml);
3338    jQuery('.modal.event-booking-detail').show();
3339    jQuery('.modal.event-booking-detail .modal-close, .modal.event-booking-detail .cancel').click(function() {
3340      jQuery('.modal.event-booking-detail').remove();
3341    });
3342
3343    jQuery('#delete-event-backend').submit(function(e) {
3344      e.preventDefault();
3345
3346      jQuery.ajax({
3347        type:'POST',
3348        dataType:'text',
3349        url:'https://'+domain+'/subscription/delete',
3350        data:{nodeUuid:nodeUuid},
3351        success:function(response){
3352          jQuery(eventRow).css({
3353            'background': '#d74d4d',
3354            'color': 'white'
3355          });
3356          $('.modal.event-booking-detail').fadeOut(100, function() {
3357            jQuery('.modal.event-booking-detail').remove();
3358            $(eventRow).fadeOut("slow", function() {
3359              jQuery(eventRow).remove();
3360            });
3361          });
3362        },
3363        error:function(error){
3364  
3365        }
3366      });
3367    });
3368  });
3369  // Delete Subscription-Item in List-View
3370  jQuery('#delete-subscription-item').submit(function(e) {
3371    e.preventDefault();
3372    var nodeUuid = jQuery('#readinglist-node-uuid').val();
3373    var listItem = jQuery(this).parents('.subscription-item');
3374
3375    jQuery.ajax({
3376      type:'POST',
3377      dataType:'text',
3378      url:'https://'+domain+'/subscription/delete-item',
3379      data:{nodeUuid:nodeUuid},
3380      success:function(response){
3381        jQuery(listItem).addClass('delete-animation');
3382        /* jQuery(listItem).css({
3383          'background': '#d74d4d',
3384          'color': 'white'
3385        }); */
3386        jQuery(listItem).fadeOut("slow", function() {
3387          jQuery(listItem).remove();
3388        });
3389      },
3390      error:function(error){
3391
3392      }
3393    });
3394  });
3395 });
3396
3397 jQuery(document).ready(function() {
3398  if(jQuery('.read-subscription').length > 0) {
3399    setTimeout(function() { 
3400      jQuery('.rental-load.read-subscription').fadeOut(1500);
3401    }, 2000);
3402  }
3403 });
3404
3405 /* --------------------------------------------------------
3406Preview Unit Image Upload
3407 ---------------------------------------------------------*/
3408 function readURL(input) {
3409  if (input.files && input.files[0]) {
3410      var reader = new FileReader();
3411
3412      reader.onload = function (e) {
3413          jQuery('#image-upload-preview').attr('src', e.target.result);
3414          jQuery('.clear-teaser-image').addClass('show-clear');
3415      }
3416
3417      reader.readAsDataURL(input.files[0]);
3418  }
3419}
3420
3421jQuery("#teaser-image").change(function(){
3422  if(this.files[0].size > 5000000){
3423    alert("Die Datei überschreitet das Limit von 5MB und kann nicht verwendet werden.");
3424    this.value = "";
3425  } else {
3426    readURL(this);
3427  }
3428  
3429});
3430jQuery('.clear-teaser-image').click(function() {
3431  jQuery('#teaser-image').val('');
3432  jQuery('#image-upload-preview').attr('src', '');
3433  jQuery(this).removeClass('show-clear');
3434  if(jQuery('input[name="hadImage"]').length > 0) {
3435    jQuery('input[name="hadImage"]').remove();
3436  }
3437});
3438
3439/* Prevent Deselection of User-Role in Usermanagement */
3440jQuery('.user-management-form label[for="User"]').click(function(e) {
3441  e.preventDefault();
3442});

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.