1(function($){'use strict';$(document).ready(function(){if(typeof window.btSignageConfig==='undefined'||!window.btSignageConfig.formId){return} 2var formId=window.btSignageConfig.formId;var vonDatumFieldId=window.btSignageConfig.vonDatumFieldId;var bisDatumFieldId=window.btSignageConfig.bisDatumFieldId;var invalidDateMessage=window.btSignageConfig.invalidDateMessage||window.btSignageConfig.errorMessage||'Bitte geben Sie ein gültiges Datum ein.';var dateRangeMessage=window.btSignageConfig.dateRangeErrorMessage||"Das 'Bis Datum' muss nach dem 'Von Datum' liegen.";if(!vonDatumFieldId||!bisDatumFieldId){return} 3$(document).on('gform_post_render',function(event,formIdRendered){if(String(formIdRendered)!==String(formId)){return} 4var fieldSelector='#input_'+formId+'_'+vonDatumFieldId+', #input_'+formId+'_'+bisDatumFieldId+', #field_'+formId+'_'+vonDatumFieldId+' input, #field_'+formId+'_'+vonDatumFieldId+' select, #field_'+formId+'_'+bisDatumFieldId+' input, #field_'+formId+'_'+bisDatumFieldId+' select';$(document).off('change.btSignageDateValidation blur.btSignageDateValidation',fieldSelector).on('change.btSignageDateValidation blur.btSignageDateValidation',fieldSelector,function(){validateDates()})});$(document).on('gform_submit_button_'+formId,function(event){if(!validateDates()){event.preventDefault();return!1} 5return!0});$(document).on('submit','#gform_'+formId,function(event){if(!validateDates()){event.preventDefault();event.stopImmediatePropagation();return!1} 6return!0});function validateDates(){var vonDate=getDateFromField(vonDatumFieldId);var bisDate=getDateFromField(bisDatumFieldId);var vonHasValue=fieldHasValue(vonDatumFieldId);var bisHasValue=fieldHasValue(bisDatumFieldId);removeError();if(!vonHasValue&&!bisHasValue){return!0} 7if((vonHasValue&&!vonDate)||(bisHasValue&&!bisDate)){showError(invalidDateMessage);return!1} 8if(!vonDate||!bisDate){return!0} 9var vonNormalized=normalizeDate(vonDate);var bisNormalized=normalizeDate(bisDate);if(!vonNormalized||!bisNormalized){showError(invalidDateMessage);return!1} 10if(bisNormalized.getTime()<vonNormalized.getTime()){showError(dateRangeMessage);return!1} 11return!0} 12function getDateFromField(fieldId){var $single=$('#input_'+formId+'_'+fieldId);if($single.length){return parseDateString($single.val())} 13var $field=$('#field_'+formId+'_'+fieldId);if(!$field.length){return null} 14var day=getDatePartValue($field,'day');var month=getDatePartValue($field,'month');var year=getDatePartValue($field,'year');if(day&&month&&year){return buildDateFromParts(day,month,year)} 15return getDateFromFallbackInputs($field)} 16function fieldHasValue(fieldId){var $single=$('#input_'+formId+'_'+fieldId);if($single.length){return String($single.val()||'').trim().length>0} 17var $field=$('#field_'+formId+'_'+fieldId);if(!$field.length){return!1} 18var hasValue=!1;$field.find('.ginput_container_date input, .ginput_container_date select').each(function(){var value=String($(this).val()||'').trim();if(value){hasValue=!0;return!1}});return hasValue} 19function getDatePartValue($field,part){var $part=$field.find('.gfield_date_'+part+' select, .gfield_date_'+part+' input');if($part.length){return $part.val()} 20return null} 21function getDateFromFallbackInputs($field){var values=[];$field.find('.ginput_container_date input, .ginput_container_date select').each(function(){var value=String($(this).val()||'').trim();if(value){values.push({value:value,label:String($(this).attr('aria-label')||$(this).attr('placeholder')||'').toLowerCase()})}});if(values.length!==3){return null} 22var yearValue=findPartByLabel(values,['year','jahr'])||findPartByPattern(values,/^\d{4}$/);var monthValue=findPartByLabel(values,['month','monat']);var dayValue=findPartByLabel(values,['day','tag']);if(!yearValue){return null} 23var remaining=values.filter(function(item){return item.value!==yearValue});if(!monthValue&&remaining.length){monthValue=remaining[0].value} 24if(!dayValue&&remaining.length>1){dayValue=remaining[1].value} 25if(!dayValue||!monthValue){return null} 26return buildDateFromParts(dayValue,monthValue,yearValue)} 27function findPartByLabel(values,labels){for(var i=0;i<values.length;i++){var label=values[i].label;for(var j=0;j<labels.length;j++){if(label.indexOf(labels[j])!==-1){return values[i].value}}} 28return null} 29function findPartByPattern(values,pattern){for(var i=0;i<values.length;i++){if(pattern.test(values[i].value)){return values[i].value}} 30return null} 31function buildDateFromParts(day,month,year){var dayValue=String(day||'').trim();var monthValue=String(month||'').trim();var yearValue=String(year||'').trim();if(!/^[0-9]{1,2}$/.test(dayValue)||!/^[0-9]{1,2}$/.test(monthValue)||!/^[0-9]{4}$/.test(yearValue)){return null} 32var dayNum=parseInt(dayValue,10);var monthNum=parseInt(monthValue,10);var yearNum=parseInt(yearValue,10);if(isNaN(dayNum)||isNaN(monthNum)||isNaN(yearNum)){return null} 33var date=new Date(yearNum,monthNum-1,dayNum);if(isNaN(date.getTime())){return null} 34if(date.getFullYear()!==yearNum||date.getMonth()!==monthNum-1||date.getDate()!==dayNum){return null} 35return date} 36function normalizeDate(date){if(!date||isNaN(date.getTime())){return null} 37return new Date(date.getFullYear(),date.getMonth(),date.getDate())} 38function parseDateString(dateString){var value=String(dateString||'').trim();if(!value){return null} 39var isoMatch=value.match(/^(\d{4})-(\d{1,2})-(\d{1,2})/);
39if(isoMatch){return buildDateFromParts(isoMatch[3],isoMatch[2],isoMatch[1])} 40var europeanMatch=value.match(/^(\d{1,2})[.\/-](\d{1,2})[.\/-](\d{4})/);if(europeanMatch){return buildDateFromParts(europeanMatch[1],europeanMatch[2],europeanMatch[3])} 41var parsedDate=new Date(value);if(isNaN(parsedDate.getTime())){return null} 42return parsedDate} 43function showError(message){var $field=$('#field_'+formId+'_'+bisDatumFieldId);if($field.length){var errorHtml='<div class="gfield_description validation_message bt-date-validation-error">'+message+'</div>';$field.addClass('gfield_error');$field.find('.ginput_container').after(errorHtml)}} 44function removeError(){var $field=$('#field_'+formId+'_'+bisDatumFieldId);if(!$field.length){return} 45$field.find('.bt-date-validation-error').remove();if($field.find('.validation_message').length===0){$field.removeClass('gfield_error')}}})})(jQuery)
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.