function isMobile() { return $('body').hasClass('mobile'); } function imgHoverIn(event) { if ($(event.target).attr('src') != null) { $(event.target).attr('src', getHoveredImgSrc($(event.target).attr('src'))); } if ($(event.target).css('background-image') != '') { $(event.target).css('background-image', getHoveredImgSrc($(event.target).css('background-image'))); } } function imgClickIn(event) { if ($(event.target).attr('src') != null) { $(event.target).attr('src', getClickedImgSrc($(event.target).attr('src'))); } if ($(event.target).css('background-image') != '') { $(event.target).css('background-image', getClickedImgSrc($(event.target).css('background-image'))); } } function imgOut(event) { if ($(event.target).attr('src') != null) { $(event.target).attr('src', getBaseImgSrc($(event.target).attr('src'))); } if ($(event.target).css('background-image') != '') { $(event.target).css('background-image', getBaseImgSrc($(event.target).css('background-image'))); } } function registerGalleryEventHandlers() { $(".gallery").fancybox(); } /** * Registers event handlers for hovered images. */ function registerHoverEventHandlers() { var selector = '.hovered'; $(selector).hover(imgHoverIn, imgOut); } /** * Registers various click event handlers (e.g. for clicked images). */ function registerClickEventHandlers() { var selector = '.clicked'; $(selector).mousedown(imgClickIn); $(selector).mouseup(imgOut); $('input[type=submit].confirmed').click(function(event) { if (!confirm($(this).data('confirm-text'))) { event.preventDefault(); } }); } /** * Registers event handlers for displaying "more" content. */ function registerMoreContentEventHandlers() { var moreDivSelector = 'div.more'; $(moreDivSelector + ' .link').toggle(function() { $(this).next(moreDivSelector + ' .content').show(); }, function() { $(this).next(moreDivSelector + ' .content').hide(); }); } /** * Registers event handles for the top navigation menu. */ function registerMenuItemEventHandlers() { $('#top_navigation li.menuItem') .mouseenter(function() { $(this).addClass('active'); }) .mouseleave(function() { $(this).removeClass('active'); }); } /** * Prefetches the given image array. * @param images the image array to prefetch */ function prefetchImages(images) { if (images != null) { var image = new Image(); for (var i = 0; i < images.length; ++i) { image.src = images[i]; } } } function generateHighlightLinks() { $('.programm .dates .highlight').each(function (index, element) { $(element).html('' + $(element).html() + ''); }); } function generateProgramDatesLinks() { generateProgramDatesLinksForRegion('bl'); generateProgramDatesLinksForRegion('bb'); } function generateProgramDatesLinksForRegion(regionCode) { $('.programm.' + regionCode + ' .dates .place').each(function (index, element) { if ($(element).data('place-disabled')) { return; } let place = $(element).data('place'); if (!place) { place = $(element).html(); } $(element).html('' + $(element).html() + ''); }); } function registerValidationEventHandlers() { $('input[type=submit].validate').closest('form').on('change', function() { let isValid = validate($(this), false); $(this).find('#submit_button').prop('disabled', !isValid); }).change(); } /** * Registers event handlers for captchas. */ function registerCaptchaEventHandlers() { $('div.captcha .new_image').click(function() { $(this).closest('.captcha').find('img').attr('src', 'https://www.spatzenkino.de/securimage/securimage_show.php?' + Math.random()); }); } /** * Initializes datepicker elements ('.datepicker'). */ function initDatepickers() { $.datepicker.setDefaults ({ dateFormat: 'd. MM yy', dayNames: [ 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag' ], dayNamesShort: [ 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ], dayNamesMin: [ 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ], monthNames: [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' ], monthNamesShort: [ 'Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez' ] }); $('.datepicker').each(function() { var datepickerOptions = {}; var _id = $(this).attr('id'); if (_id) { var dbFieldSuffix = '_dbDate'; var altFieldId = _id + dbFieldSuffix; datepickerOptions = { altField: '#' + altFieldId, altFormat: 'yy-mm-dd' }; if ($('#' + altFieldId).length <= 0) { var name = $(this).attr('name') + dbFieldSuffix; $(this).after(''); } } $(this).datepicker(datepickerOptions); }); } function clearDateField(fieldName) { if (fieldName) { $('input[name=' + fieldName + ']').val(''); $('input[name=' + fieldName + '_dbDate]').val(''); } } function updateAllNewEmailAddresses(select) { $('.email input[type=checkbox].new').prop('checked', select); } function updateAllInactiveEmailAddresses(select) { $('.email input[type=checkbox]:not(.active)').prop('checked', select); } function updateAllKitaEmailAddresses(select) { $('.email input[type=checkbox].kita').prop('checked', select); } function updateAllUnsentAddresses(select) { var daysBack = parseInt($('#select_unsent_newsletter_recipients_days').val()); var thresholdTimestamp = Date.now(); thresholdTimestamp -= daysBack * 24 * 60 * 60 * 1000; $('#address_book tr').each(function(index, row) { var timestamp = $(row).find('.last_mail_sent .timestamp').text(); if (timestamp == null || timestamp == '' || timestamp < (thresholdTimestamp / 1000)) { $(row).find('.email input[type=checkbox]').prop('checked', select); } }); } function registerNewsletterAddressBookEventHandlers() { $('#select_new_newsletter_recipients').click(function() { updateAllNewEmailAddresses($(this).is(':checked')); }); $('#select_inactive_newsletter_recipients').click(function() { updateAllInactiveEmailAddresses($(this).is(':checked')); }); $('#select_kita_newsletter_recipients').click(function() { updateAllKitaEmailAddresses($(this).is(':checked')); }); $('#select_unsent_newsletter_recipients').click(function() { updateAllUnsentAddresses($(this).is(':checked')); }); } function setAlertifyDefaults() { alertify.defaults = { notifier: { delay: 3, position: 'top-left', closeButton: true } }; } function updateSendNewsletterButton() { var buttonSelector = 'button#save_and_send_newsletter_button'; var attachmentsCount = $('input[type=checkbox].with_attachment:checked').length; var attachmentsText = 'keine Anhänge'; if (attachmentsCount > 0) { attachmentsText = attachmentsCount + ' ' + (attachmentsCount == 1 ? 'Anhang' : 'Anhänge'); } $(buttonSelector + ' #save_and_send_newsletter_button_attachments').text(attachmentsText); } function registerToNewsletterRecipientCheckboxesEventHandlers() { var selector = 'input[type=checkbox].to_newsletter_recipients'; $('body').on('change', selector, function() { var input = $(this).next('label').find('input.additional_recipient'); input.prop('disabled', ! $(this).is(':checked')); if ($(this).is(':checked')) { if ($(this).attr('id') == 'to_newsletter_recipients_bl') { $('input[type=checkbox]#to_newsletter_recipients_bl_kita').prop('checked', false); $('input[type=checkbox]#to_newsletter_recipients_bl_kita').attr('disabled', 'disabled'); } if ($(this).attr('id') == 'to_newsletter_recipients_bl_kita') { $('input[type=checkbox]#to_newsletter_recipients_bl').prop('checked', false); $('input[type=checkbox]#to_newsletter_recipients_bl').attr('disabled', 'disabled'); } if ($(this).attr('id') == 'to_newsletter_recipients_bb') { $('input[type=checkbox]#to_newsletter_recipients_bb_kita').prop('checked', false); $('input[type=checkbox]#to_newsletter_recipients_bb_kita').attr('disabled', 'disabled'); } if ($(this).attr('id') == 'to_newsletter_recipients_bb_kita') { $('input[type=checkbox]#to_newsletter_recipients_bb').prop('checked', false); $('input[type=checkbox]#to_newsletter_recipients_bb').attr('disabled', 'disabled'); } } else { if ($(this).attr('id') == 'to_newsletter_recipients_bl') { $('input[type=checkbox]#to_newsletter_recipients_bl_kita').removeAttr('disabled'); } if ($(this).attr('id') == 'to_newsletter_recipients_bl_kita') { $('input[type=checkbox]#to_newsletter_recipients_bl').removeAttr('disabled'); } if ($(this).attr('id') == 'to_newsletter_recipients_bb') { $('input[type=checkbox]#to_newsletter_recipients_bb_kita').removeAttr('disabled'); } if ($(this).attr('id') == 'to_newsletter_recipients_bb_kita') { $('input[type=checkbox]#to_newsletter_recipients_bb').removeAttr('disabled'); } } updateSendNewsletterButton(); }); } function registerWithAttachmentCheckboxesEventHandlers() { var selector = 'input[type=checkbox].with_attachment'; $('body').on('change', selector, function() { var input = $(this).next('label').find('input.additional_attachment'); input.prop('disabled', ! $(this).is(':checked')); updateSendNewsletterButton(); }); } function registerIconEventHandlers() { $('#add_additional_recipient_group').click(addAdditionalRecipientGroup); $('#add_additional_recipient_email_address').click(addAdditionalRecipientEmailAddress); $('#add_additional_recipient_region').click(addAdditionalRecipientRegion); $('#add_additional_attachment').click(addAdditionalAttachmentInputField); $('.remove_parent_list_item').live('click', removeParentListItem); } function registerToNewsletterRecipientsEventHandlers() { var fieldPrefix = 'to_newsletter_recipients_'; var fields = [ 'regions', 'sub_regions' ]; fields.forEach(function(field){ $('select.' + fieldPrefix + 'all_' + field).each(function() { $(this).off('change'); $(this).on('change', function() { var sibling = $(this).nextAll('select.' + fieldPrefix + field); if ($(this).val() == 0) { $(sibling).show(); } else { $(sibling).hide(); } }); $(this).change(); }); }); } function registerNewsletterSendEventHandlers() { $('#toggle_newsletter_recipient_mails').click(function() { $('#newsletter_recipient_mails').toggle(); }); $('#send_newsletter_confirm_button').click(function() { const count = $('#newsletter_recipient_count').text() if (window.confirm('Newsletter an ' + count + ' Empfänger versenden?')) { $('#send_newsletter_form').submit(); } }); } function addAdditionalRecipientGroup(withMinusIcon = true) { var html = $('#html_template_recipient_group').html(); if (withMinusIcon) { html += $('#html_template_minus_icon').html(); } $('#to_newsletter_recipients').append('