PageSourceSearch

https://www.binb.info/fileadmin/web-data/bbv.js

js binb.info collected 2026-10-05 10:55:16 UTC 32,537 bytes, 1,034 lines download raw bytes

1var px = jQuery.noConflict();
2var pfad = '/fileadmin/web-data/handler.php';
3var user_changed = false;
4var club_refresh_request = null;
5var club_refresh_sequence = 0;
6
7function SetClubSaveState(disabled)
8{
9	px('#px_vereinsverwaltung_verein_speichern').prop('disabled', disabled);
10}
11
12function ShowClubMessage(message)
13{
14	px('.px_message').html(message).show().fadeOut(6000);
15}
16
17window.getCookie = function(name){
18  let match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
19  if(match) return match[2];
20};
21function FORM(parent, action)
22{
23	let form = new FormData();
24	if(action) form.append('px_action', action);
25	px(parent).find('input:not([type="file"]), textarea, select').each(function()
26	{
27		let e = px(this);
28		if(e.is(':checkbox') && e.hasClass('binary')) {
29			form.append(e.attr('name'), (e.prop('checked') === true ? '1' : '0'));
30		} else if(e.attr('name') == 'px_vereinsverwaltung_rechnung_papier') {
31			console.log(px('input[name="' + e.attr('name') + '"]:checked').get(0));
32			form.append(e.attr('name'), px('input[name="' + e.attr('name') + '"]:checked').first().val());
33		} else {
34			if(e.is(':checkbox'))
35			{
36				if(e.prop('checked') === true) form.append(e.attr('name'), e.val());
37			}
38			else form.append(e.attr('name'), e.val());
39		}
40	});
41	return form;
42}
43function Clear(){
44	px('[name="px_vereinsverwaltung_filter"], [name="px_vereinsverwaltung_verein_filter"], [name="px_vereinsverwaltung_vorname"], [name="px_vereinsverwaltung_nachname"], [name="px_vereinsverwaltung_telefon"], [name="px_vereinsverwaltung_email"]').val('');
45	px('.px_vereinsverwaltung_nutzer_vereine').html('');
46	px('[name="px_vereinsverwaltung_filter"], [name="px_vereinsverwaltung_verein_filter"]').trigger('keyup');
47	px.ajax(
48	{
49		url		: pfad,
50		type	: 'POST',
51		data	: { 'px_action' : 'ACTION_reset' },
52	});
53}
54function ShowWindow(window)
55{
56	px('.overlay').addClass('active');
57	let ebene = px(window).closest('.centerwrap');
58	ebene.find('.modal-window').hide();
59	px(window).show();
60	ebene.addClass('active');
61}
62function RefreshClub(full)
63{
64	let requestedClub = px('select[name="px_vereinsauswahl"]').val();
65	let requestSequence = ++club_refresh_sequence;
66	SetClubSaveState(true);
67	if(club_refresh_request && club_refresh_request.readyState !== 4) club_refresh_request.abort();
68	club_refresh_request = px.ajax(
69	{
70		url			: pfad,
71		type		: 'POST',
72		dataType 	: 'JSON',
73		cache		: false,
74		data 		:
75		{
76			'px_action'	: 'ACTION_refresh_club',
77			'club_nr'	: requestedClub,
78			'voll'		: full
79		},
80		success 	: function(data)
81		{
82			if(requestSequence !== club_refresh_sequence || px('select[name="px_vereinsauswahl"]').val() != requestedClub) return;
83			console.log(data);
84			for(let i in data[0]) {
85				if(i == 'px_vereinsverwaltung_rechnung_papier') {
86					continue;
87				}
88				px('.px_vereinsverwaltung.frontend [name="'+i+'"]').val(data[0][i]);
89			}
90			px('.px_vereinsverwaltung.frontend img.px_vereinslogo').attr('src', data[0]['logo'] + '?' + (Math.random(9999) + 1000));
91			px('input[name="loaded_verein_id"]').val(requestedClub);
92			px('input[name="px_vereinsverwaltung_alternativname"]').val(data[0]['alternativname']);
93			if(data[0]['alternativname']) {
94				px('.px_vereinsname').html(data[0]['alternativname']);
95			} else {
96				px('.px_vereinsname').html(data[0]['name']);
97			}
98			px('#px_vereinsrollen').html(data[1]);
99			px('#px_zugewiesene_hallen').html(data[2]);
100			px('#px_vereinteams').html(data[3]);
101			px('#px_verein_team_liste').html(data[4]);
102			px('#px_verein_team_chef').html(data[5]);
103			px('#tab_post').html(data[6]);
104			px('#px_verantwotliche').html(data[7]);
105			px('#px_verein_team_meldungen').html(data[8]);
106			
107			
108			if(data[0]['px_vereinsverwaltung_rechnung_papier'] == 0) {
109				px('input[name="px_vereinsverwaltung_rechnung_papier"]').get(1).click();
110			} else {
111				px('input[name="px_vereinsverwaltung_rechnung_papier"]').get(0).click();
112			}
113			
114			
115			
116			let val = px('select[name="px_vereinsauswahl"]').val();
117			px('select[name="px_vereinsauswahl"]').html(data[9]);
118			px('select[name="px_vereinsauswahl"] option[value="' + val + '"]').attr("selected", "selected");
119			// c/o
120			px('#vereinsname_verein, #vereinsname_rechnung').val(data[0]['name']);			
121			if(data[0]['px_vereinsverwaltung_rechnung_nachname'] != '')
122			{
123				px('.co_eingabe_rechnung').addClass('on');
124				px('#co_rechnung').prop('checked', true);
125			}
126			else
127			{
128				px('.co_eingabe_rechnung').removeClass('on');
129				px('#co_rechnung').prop('checked', false);
130			}
131			if(data[0]['px_vereinsverwaltung_adresse_nachname'] != '')
132			{
133				px('.co_eingabe_verein').addClass('on');
134				px('#co_verein').prop('checked', true);
135			}
136			else
137			{
138				px('.co_eingabe_verein').removeClass('on');
139				px('#co_verein').prop('checked', false);
140			}
141		},
142		error 		: function(xhr, status)
143		{
144			if(status !== 'abort' && requestSequence === club_refresh_sequence)
145			{
146				ShowClubMessage(xhr.responseText || '<div class="neg">Der Verein konnte nicht geladen werden.</div>');
147			}
148		},
149		complete 	: function()
150		{
151			if(requestSequence === club_refresh_sequence) SetClubSaveState(false);
152		}
153	});
154}
155function ReloadDownloads(richtung)
156{
157	px.ajax(
158	{
159		url			: '/typo3conf/ext/px_vereinsverwaltung/Classes/Controller/pager.php',
160		type		: 'POST',
161		dataType 	: 'JSON',
162		data 		:
163		{
164			'richtung'	: richtung || 0,
165			'seite'		: px('#tab_post [name="paginierung-min"]').val(),
166			'max'		: px('#tab_post [name="paginierung-max"]').val()
167		},
168		success 	: function(data)
169		{
170			px('#tab_post [name="paginierung-seite"]').html((data[0] + 1) + ' / ' + data[1]);
171			px('#tab_post [name="paginierung-min"]').val(data[0] + 1);
172			px('#tab_post #posteingang').html(data[2]);
173		}
174	});
175}
176px(window).on('load',function(){
177	px('body').on('click touch','.mobile-menu,.mobile-close',function(e){
178		e.stopPropagation();
179		px('nav.mobile,#overlay').toggleClass('active');
180		console.log('klick');
181	});
182	if(!window.getCookie('BBV_COOKIE_ACCEPTED')) px('#cookie').show();
183	px('body').on('click','#accept_cookie',function(){
184		let date = new Date();
185		date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000));
186		document.cookie = 'BBV_COOKIE_ACCEPTED = 1; expires = '+date.toGMTString()+'; path=/';
187		px('#cookie').hide();
188	});
189	px('body').on('click touch','nav.mobile span',function(){
190		px('nav.mobile span').not(this).removeClass().siblings('ul').slideUp(100);
191		px(this).siblings('ul').slideToggle(100);
192		px(this).toggleClass('down');
193	});
194	px('body').on('click touch','.toplink',function(e){
195		e.preventDefault();
196		let target = px(this).attr('href').split('#');
197		px('html,body').animate({scrollTop:px('#' + target[target.length - 1]).offset().top}, 500);
198	});
199	//
200	// Frontend - Vereinsverwaltung
201	//
202	px('body').on('keyup','[name="px_vereinsverwaltung_filter"]',function(){
203		px.ajax(
204		{
205			url			: pfad,
206			type		: 'POST',
207			dataType 	: 'HTML',
208			cache		: false,
209			processData	: false,
210			contentType	: false,
211			data 		: FORM('.px_vereinsverwaltung', 'ACTION_user_search'),
212			success 	: function(data)
213			{
214				px('.px_vereinsverwaltung_nutzer').html(data);
215			}
216		});
217	});
218	px('body').on('keyup','[name="px_vereinsverwaltung_verein_filter"]',function(){
219		px.ajax(
220		{
221			url			: pfad,
222			type		: 'POST',
223			dataType 	: 'HTML',
224			cache		: false,
225			processData	: false,
226			contentType	: false,
227			data 		: FORM('.px_vereinsverwaltung', 'ACTION_team_search'),
228			success 	: function(data)
229			{
230				px('.px_vereinsverwaltung_vereine').html(data);
231			}
232		});
233	});
234	px('body').on('keyup','#px_vereinshallen [name="px_hallensuche"]',function(){
235		px.ajax(
236		{
237			url			: pfad,
238			type		: 'POST',
239			dataType 	: 'HTML',
240			cache		: false,
241			processData	: false,
242			contentType	: false,
243			data 		: FORM('#px_vereinshallen', 'ACTION_gym_search'),
244			success 	: function(data)
245			{
246				px('#px_vereinshallen_auswahl').html(data);
247			}
248		});
249	});
250
251	px('body').on('change','[name="px_saison_kategorie[]"]',function(e){
252		e.stopPropagation();
253		let n = px(this).val();
254		px(this).next('span').html(px('[name="'+n+'"]').html());
255	});
256	px('body').on('click','.px_saison_meldung_dazu',function(e){
257		e.stopPropagation();
258		let zeile = px('.px_saison_zeile.duplikat').eq(0).clone();
259		zeile.removeClass('duplikat');
260		px('.px_saison_meldung').append(zeile);
261	});
262	px('body').on('click','.px_saison_weg',function(e){
263		e.stopPropagation();
264		px(this).parent().remove();
265	});
266	px('body').on('click','[name="px_vereinsverwaltung_saison_reset"]',function(e){
267		e.stopPropagation();
268		px('.saison_edit').hide().html('');
269		px('.saison_neu').show();
270		px('.px_saison .saisonzeile').removeClass('aktiv');
271	});
272	px('body').on('click','.px_saison_meldung_speichern',function(e){
273		e.stopPropagation();
274		let data = FORM('.px_saison_meldung', 'ACTION_saison_meldung_speichern');
275		px.ajax(
276		{
277			url			: pfad,
278			type		: 'POST',
279			dataType 	: 'HTML',
280			cache		: false,
281			processData	: false,
282			contentType	: false,
283			data 		: data,
284			success 	: function(data)
285			{
286				px('.px_message_team').html(data).show().fadeOut(6000);
287			}
288		});
289	});
290	px('body').on('click','.px_saison .saisonzeile',function(e){
291		e.stopPropagation();
292		px('.px_saison .saisonzeile').removeClass('aktiv');
293		px(this).addClass('aktiv');
294		px.ajax(
295		{
296			url			: pfad,
297			type		: 'POST',
298			dataType 	: 'HTML',
299			cache		: false,
300			data 		: { 'id' : px(this).data('id'), 'px_action' : 'ACTION_saison_detail' },
301			success 	: function(data)
302			{
303				px('.saison_edit').html(data).show();
304				px('.saison_neu').hide();
305			}
306		});
307	});
308	px('body').on('click','button[name="px_vereinsverwaltung_saison_anlegen"]',function(e){
309		e.stopPropagation();
310		let data = FORM('.saison_neu', 'ACTION_saison_anlegen');
311		px.ajax(
312		{
313			url			: pfad,
314			type		: 'POST',
315			dataType 	: 'JSON',
316			cache		: false,
317			processData	: false,
318			contentType	: false,
319			data 		: data,
320			success 	: function(data)
321			{
322				px('.px_saison').html(data[0]);
323				px('.px_message').html(data[1]).show().fadeOut(6000);
324			}
325		});
326	});
327	px('body').on('click','button[name="px_vereinsverwaltung_saison_bearbeiten"]',function(e){
328		e.stopPropagation();
329		let data = FORM('.saison_edit', 'ACTION_saison_bearbeiten');
330		px.ajax(
331		{
332			url			: pfad,
333			type		: 'POST',
334			dataType 	: 'JSON',
335			cache		: false,
336			processData	: false,
337			contentType	: false,
338			data 		: data,
339			success 	: function(data)
340			{
341				px('.px_saison').html(data[0]);
342				px('.px_message').html(data[1]).show().fadeOut(6000);
343			}
344		});
345	});
346	px('body').on('click','button[name="px_vereinsverwaltung_saison_entfernen"]',function(e){
347		e.stopPropagation();
348		let data = FORM('.saison_edit', 'ACTION_saison_entfernen');
349		px.ajax(
350		{
351			url			: pfad,
352			type		: 'POST',
353			dataType 	: 'JSON',
354			cache		: false,
355			processData	: false,
356			contentType	: false,
357			data 		: data,
358			success 	: function(data)
359			{
360				px('.px_saison').html(data[0]);
361				px('.saison_edit').hide().html('');
362				px('.saison_neu').show();
363				px('.px_saison .saisonzeile').removeClass('aktiv');
364				px('.px_message').html(data[1]).show().fadeOut(6000);
365			}
366		});
367	});
368	px('body').on('click','button[name="px_vereinsverwaltung_saison_exportieren"]',function(e){
369		e.stopPropagation();
370		px.ajax(
371		{
372			url			: pfad,
373			type		: 'POST',
374			dataType 	: 'HTML',
375			cache		: false,
376			data 		: { 'px_action' : 'ACTION_saison_exportieren', 'id' : px('.saison_edit input[name="saison_
376id"]').val() },
377			success 	: function(data)
378			{
379				px('.saison_edit').html(data);
380			}
381		});
382	});
383
384	px('body').on('click','#px_vereinshallen_auswahl div',function(){
385		let data = FORM('#px_vereinshallen', 'ACTION_gym_add');
386		data.append('id', px(this).data('id'));
387		px.ajax(
388		{
389			url			: pfad,
390			type		: 'POST',
391			dataType 	: 'JSON',
392			cache		: false,
393			processData	: false,
394			contentType	: false,
395			data 		: data,
396			success 	: function(data)
397			{
398				px('#px_zugewiesene_hallen').html(data[0]);
399				px('#px_vereinshallen_auswahl').html(data[1]);
400				px('.px_modal_message').html(data[2]).show().fadeOut(6000);
401			}
402		});
403	});
404	px('body').on('click','.px_vereinsverwaltung_nutzer > div',function(e){
405		e.stopPropagation();
406		let data = FORM('.px_vereinsverwaltung', 'ACTION_user_details');
407		data.append('id', px(this).data('uid'));
408		px(this).siblings().removeClass('active');
409		px(this).addClass('active');
410		px.ajax(
411		{
412			url			: pfad,
413			type		: 'POST',
414			dataType 	: 'JSON',
415			cache		: false,
416			processData	: false,
417			contentType	: false,
418			data 		: data,
419			success 	: function(data)
420			{
421				px('[name="px_vereinsverwaltung_vorname"]').val(data[0]);
422				px('[name="px_vereinsverwaltung_nachname"]').val(data[1]);
423				px('[name="px_vereinsverwaltung_telefon"]').val(data[2]);
424				px('[name="px_vereinsverwaltung_email"]').val(data[3]);
425				px('[name="px_vereinsverwaltung_rolle"]').prop('checked', false);
426				px('.px_vereinsverwaltung_vereine').html(data[5]);
427				px('.px_vereinsverwaltung_nutzer_vereine').html(data[6]);
428				for(let i = 0; i < data[4].length; i++) px('[name="px_vereinsverwaltung_rolle"][value="'+ data[4][i] +'"]').prop('checked', true);
429			}
430		});
431	});
432	px('body').on('click','.px_vereinsverwaltung_vereine > div',function(e){
433		e.stopPropagation();
434		let data = FORM('.px_vereinsverwaltung', 'ACTION_add_team');
435		data.append('team_id', px(this).data('uid'));
436		px.ajax(
437		{
438			url			: pfad,
439			type		: 'POST',
440			dataType 	: 'JSON',
441			cache		: false,
442			processData	: false,
443			contentType	: false,
444			data 		: data,
445			success 	: function(data)
446			{
447				px('.px_vereinsverwaltung_vereine').html(data[0]);
448				px('.px_vereinsverwaltung_nutzer_vereine').html(data[1]);
449			}
450		});
451	});
452	px('body').on('click','.px_vereinsverwaltung_nutzer_vereine > div',function(e){
453		e.stopPropagation();
454		let data = FORM('.px_vereinsverwaltung', 'ACTION_remove_team');
455		data.append('team_id', px(this).data('uid'));
456		px.ajax(
457		{
458			url			: pfad,
459			type		: 'POST',
460			dataType 	: 'JSON',
461			cache		: false,
462			processData	: false,
463			contentType	: false,
464			data 		: data,
465			success 	: function(data)
466			{
467				px('.px_vereinsverwaltung_vereine').html(data[0]);
468				px('.px_vereinsverwaltung_nutzer_vereine').html(data[1]);
469			}
470		});
471	});
472	px('body').on('click','button[name="px_vereinsverwaltung_speichern"]',function(e){
473		e.stopPropagation();
474		let data = FORM('.px_vereinsverwaltung', 'ACTION_save_user');
475		data.append('user_id', '1');
476		px.ajax(
477		{
478			url			: pfad,
479			type		: 'POST',
480			dataType 	: 'HTML',
481			cache		: false,
482			processData	: false,
483			contentType	: false,
484			data 		: data,
485			success 	: function(data)
486			{
487				px('.px_message').html(data).show().fadeOut(6000);
488			}
489		});
490	});
491	px('body').on('click','button[name="px_vereinsverwaltung_anlegen"]',function(e){
492		e.stopPropagation();
493		let data = FORM('.px_vereinsverwaltung', 'ACTION_save_user');
494		data.append('user_id', '0');
495		px('.px_vereinsverwaltung').addClass('blur');
496		px('.px_overlay').fadeIn(100);
497		px.ajax(
498		{
499			url			: pfad,
500			type		: 'POST',
501			dataType 	: 'HTML',
502			cache		: false,
503			processData	: false,
504			contentType	: false,
505			data 		: data,
506			success 	: function(data)
507			{
508				px('.px_message').html(data).show().fadeOut(6000);
509				px('.px_vereinsverwaltung').removeClass('blur');
510				px('.px_overlay').fadeOut(100);
511				Clear();
512			}
513		});
514	});
515	px('body').on('click','button[name="px_vereinsverwaltung_info"]',function(e){
516		e.stopPropagation();
517		let data = FORM('.px_vereinsverwaltung', 'ACTION_inform_user');
518		px('.px_vereinsverwaltung').addClass('blur');
519		px('.px_overlay').fadeIn(100);
520		px.ajax(
521		{
522			url			: pfad,
523			type		: 'POST',
524			dataType 	: 'HTML',
525			cache		: false,
526			processData	: false,
527			contentType	: false,
528			data 		: data,
529			success 	: function(data)
530			{
531				px('.px_message').html(data).show().fadeOut(6000);
532				px('.px_vereinsverwaltung').removeClass('blur');
533				px('.px_overlay').fadeOut(100);
534			}
535		});
536	});
537	px('body').on('click','button[name="px_vereinsverwaltung_registrieren"]',function(e){
538		e.stopPropagation();
539		let data = FORM('.px_vereinsverwaltung', 'ACTION_register_user');
540		px.ajax(
541		{
542			url			: pfad,
543			type		: 'POST',
544			dataType 	: 'HTML',
545			cache		: false,
546			processData	: false,
547			contentType	: false,
548			data 		: data,
549			success 	: function(data)
550			{
551				px('.px_message').html(data).show().fadeOut(6000);
552				px('.px_vereinsverwaltung *').val('')
553			}
554		});
555	});
556	px('body').on('click','#px_neues_passwort_setzen',function(e){
557		e.stopPropagation();
558		px.ajax(
559		{
560			url			: pfad,
561			type		: 'POST',
562			dataType 	: 'HTML',
563			cache		: false,
564			data 		:
565			{
566				'px_action'	: 'ACTION_change_password',
567				'px_code_1'	: px('input[name="px_neues_passwort_1"]').val(),
568				'px_code_2'	: px('input[name="px_neues_passwort_2"]').val()
569			},
570			success 	: function(data)
571			{
572				px('.px_message').html(data).show().fadeOut(6000);
573				px('input[name="px_neues_passwort_1"],input[name="px_neues_passwort_2"]').val('')
574			}
575		});
576	});
577	px('body').on('click','#px_vereinspersonen_absenden',function(e){
578		e.stopPropagation();
579		let role = [], teams = [];
580		px('#px_vereinspersonen .loading').show();
581		px('input[name="px_neue_person_rolle"]:checked').each(function(){ role.push(px(this).val()); });
582		px('input[name="px_vereinteams_vv"]:checked').each(function(){ teams.push(px(this).val()); });
583		px.ajax(
584		{
585			url			: pfad,
586			type		: 'POST',
587			dataType 	: 'HTML',
588			cache		: false,
589			data 		:
590			{
591				'px_action'	: 'ACTION_add_club_person',
592				'email'		: px('#px_vereinspersonen input[name="px_neue_person"]').val(),
593				'role'		: role,
594				'teams'		: teams
595			},
596			success 	: function(data)
597			{
598				px('.px_modal_message').html(data).show().fadeOut(6000);
599				px('input[name="px_neue_person_rolle"]').prop('checked', false);
600				px('#px_vereinspersonen .loading').hide();
601				px('input[name="px_neue_person"]').val('').focus();
602				RefreshClub(0);
603			}
604		});
605	});
606	px('body').on('click','#px_vereinspersonen_speichern',function(e){
607		e.stopPropagation();
608		px.ajax(
609		{
610			url			: pfad,
611			type		: 'POST',
612			dataType 	: 'HTML',
613			cache		: false,
614			data 		:
615			{
616				'px_action'						: 'ACTION_verify_club_person',
617				'px_vereinspersonen_vorname'	: px('input[name="px_vereinspersonen_vorname"]').val(),
618				'px_vereinspersonen_nachname'	: px('input[name="px_vereinspersonen_nachname"]').val(),
619				'px_vereinspersonen_telefon'	: px('input[name="px_vereinspersonen_telefon"]').val(),
620				'hash'							: px(this).data('hash')
621			},
622			success 	: function(data)
623			{
624				px('.px_message').html(data).show().fadeOut(6000);
625				px('.px_vereinsverwaltung').remove();
626			}
627		});
628	});
629	px('body').on('click','#px_vereinspersonen_aktualisieren',function(e){
630		e.stopPropagation();
631		px.ajax(
632		{
633			url			: pfad,
634			type		: 'POST',
635			dataType 	: 'HTML',
636			cache		: false,
637			data 		:
638			{
639				'px_action'						: 'ACTION_confirm_person',
640				'px_vereinspersonen_vorname'	: px('input[name="px_vereinspersonen_vorname"]').val(),
641				'px_vereinspersonen_nachname'	: px('input[name="px_vereinspersonen_nachname"]').val(),
642				'px_vereinspersonen_telefon'	: px('input[name="px_vereinspersonen_telefon"]').val(),
643				'px_vereinspersonen_email'		: px('input[name="px_vereinspersonen_email"]').val(),
644				'hash'							: px(this).data('hash')
645			},
646			success 	: function(data)
647			{
648				px('.px_message').html(data).show().fadeOut(6000);
649				px('.px_vereinsverwaltung').remove();
650			}
651		});
652	});
653	px('body').on('click','button[name="px_vereinsverwaltung_leeren"]',function(e){
654		e.stopPropagation();
655		Clear();
656	});
657	px('body').on('change','select[name="px_vereinsauswahl"]',function(){
658		RefreshClub(1);
659	});
660	px('body').on('click','#px_vereinsverwaltung_verein_speichern',function(e){
661		e.stopPropagation();
662		if(px(this).prop('disabled')) return;
663		SetClubSaveState(true);
664		let data = FORM('.px_vereinsverwaltung.frontend', 'ACTION_save_club');
665		data.append('px_vereinsverwaltung_logo_datei', px('[name="px_vereinsverwaltung_logo_datei"]').prop('files')[0]);
666		px.ajax(
667			{
668				url			: pfad,
669				type		: 'POST',
670				dataType 	: 'HTML',
671				cache		: false,
672				processData	: false,
673				contentType	: false,
674				data 		: data,
675				success 	: function(data)
676				{
677					ShowClubMessage(data);
678					RefreshClub(0);
679				},
680				error 		: function(xhr)
681				{
682					ShowClubMessage(xhr.responseText || '<div class="neg">Der Verein konnte nicht gespeichert werden.</div>');
683					SetClubSaveState(false);
684				}
685			});
686	});
687	px('body').on('click','#px_vereinsrollen .px_vereinsperson, #px_vereinteams div',function(e){
688		e.stopPropagation();
689		ShowWindow('#px_vereinspersonen_edit');
690		px.ajax(
691		{
692			url			: pfad,
693			type		: 'POST',
694			dataType 	: 'HTML',
695			cache		: false,
696			data 		:
697			{
698				'px_action'	: 'ACTION_receive_person',
699				'person_id'	: px(this).data('id'),
700			},
701			success 	: function(data)
702			{
703				px('#px_vereinspersonen_edit').html(data);
704			}
705		});
706	});
707	px('body').on('change','#px_vereinspersonen_edit [name="px_person_email"], #px_vereinspersonen_edit [name="px_person_telefon"], #px_vereinspersonen_edit [name="px_person_nn"], #px_vereinspersonen_edit [name="px_person_vn"]',function(){ user_changed = true; });
708	px('body').on('click','#px_vereinspersonen_aendern',function(e){
709		e.stopPropagation();
710		px('#px_vereinspersonen_edit .loading').show();
711		let data;
712		if(user_changed) data = FORM('#px_vereinspersonen_edit', 'ACTION_save_person');
713		else data = FORM('#px_vereinspersonen_edit', 'ACTION_min_save_person');
714		data.append('person_id', px(this).data('id'));
715		px.ajax(
716			{
717				url			: pfad,
718				type		: 'POST',
719				dataType 	: 'HTML',
720				cache		: false,
721				processData	: false,
722				contentType	: false,
723				data 		: data,
724				success 	: function(data)
725				{
726					px('.px_modal_message').html(data).show().fadeOut(6000);
727					px('#px_vereinspersonen_edit .loading').hide();
728					RefreshClub(0);
729					user_changed = false;
730				}
731			});
732	});
733	px('body').on('click','#px_vereinspersonen_bearbeiten',function(e){
734		e.stopPropagation();
735		px('#px_vereinspersonen_edit .loading').show();
736		let data = FORM('#px_vereinspersonen_edit', 'ACTION_min_save_person');
737		data.append('person_id', px(this).data('id'));
738		px.ajax(
739			{
740				url			: pfad,
741				type		: 'POST',
742				dataType 	: 'HTML',
743				cache		: false,
744				processData	: false,
745				contentType	: false,
746				data 		: data,
747				success 	: function(data)
748				{
749					px('.px_modal_message').html(data).show().fadeOut(6000);
750					px('#px_vereinspersonen_edit .loading').hide();
751					RefreshClub(0);
752				}
753			});
754	});
755	px('body').on('click','#px_vereinspersonen_entfernen',function(e){
756		e.stopPropagation();
757		let data = FORM('#px_vereinspersonen_edit', 'ACTION_delete_person');
758		data.append('person_id', px(this).data('id'));
759		px.ajax(
760			{
761				url			: pfad,
762				type		: 'POST',
763				dataType 	: 'HTML',
764				cache		: false,
765				processData	: false,
766				contentType	: false,
767				data 		: data,
768				success 	: function(data)
769				{
770					px('.px_modal_message').html(data).show().fadeOut(6000);
771					RefreshClub(0);
772					px('.overlay, .centerwrap.active').removeClass('active');
773					px('#px_vereinspersonen_edit').hide();
774				}
775			});
776	});
777	px('body').on('click','#px_vereinspersonen_erinnern',function(e){
778		e.stopPropagation();
779		px('#px_vereinspersonen_edit .loading').show();
780		let data = FORM('#px_vereinspersonen_edit', 'ACTION_inform_person');
781		data.append('hash', px(this).data('hash'));
782		px.ajax(
783			{
784				url			: pfad,
785				type		: 'POST',
786				dataType 	: 'HTML',
787				cache		: false,
788				processData	: false,
789				contentType	: false,
790				data 		: data,
791				success 	: function(data)
792				{
793					px('.px_modal_message').html(data).show().fadeOut(6000);
794					px('#px_vereinspersonen_edit .loading').hide();
795				}
796			});
797	});
798	px('body').on('click','#px_zugewiesene_hallen div',function(e){
799		e.stopPropagation();
800		let data = FORM('#px_vereinspersonen_edit', 'ACTION_edit_gym');
801		data.append('id', px(this).data('id'));
802		data.append('hallen_id', px(this).data('gymid'));
803		px.ajax(
804			{
805				url			: pfad,
806				type		: 'POST',
807				dataType 	: 'HTML',
808				cache		: false,
809				processData	: false,
810				contentType	: false,
811				data 		: data,
812				success 	: function(data)
813				{
814					px('#px_vereinshallen_edit').html(data);
815					ShowWindow('#px_vereinshallen_edit');
816				}
817			});
818	});
819	px('body').on('click','#px_vereinshalle_entfernen',function(e){
820		e.stopPropagation();
821		let data = FORM('#px_vereinspersonen_edit', 'ACTION_delete_gym');
822		data.append('id', px(this).data('id'));
823		data.append('hallen_id', px(this).data('gymid'));
824		px.ajax(
825			{
826				url			: pfad,
827				type		: 'POST',
828				dataType 	: 'HTML',
829				cache		: false,
830				processData	: false,
831				contentType	: false,
832				data 		: data,
833				success 	: function(data)
834				{
835					px('.overlay, .centerwrap.active').removeClass('active');
836					px('#px_vereinshallen_edit').hide();
837					RefreshClub(0);
838				}
839			});
840	});
841	// Paginierung
842	px('body').on('click','#tab_post .px-download-left',function(e){
843		e.stopPropagation();
844		ReloadDownloads('links');
845	});
846	px('body').on('click','#tab_post .px-download-right',function(e){
847		e.stopPropagation();
848		ReloadDownloads('rechts');
849	});
850
851	px('body').on('change','.fileContainer input[type="file"]',function(){
852		let p = px(this).parent();
853		p.children('span').html(this.value.split('\\')[2] || p.children('small').html());
854	});
855	px('body').on('click','.modal-window .close, .modal-window .exit',function(e){
856		e.stopPropagation();
857		let p = px(this).parents('.modal-window');
858		p.hide();
859		px(this).closest('.centerwrap.active').removeClass('active');
860		if(px('.centerwrap.active').length === 0) px('.overlay').removeClass('active');
861	});
862	px('body').on('click','#px_vereinsverwaltung_personen',function(){ ShowWindow('#px_vereinspersonen'); });
863	px('body').on('click','#px_vereinsverwaltung_hallen',function(){ ShowWindow('#px_vereinshallen'); });
864
865	px('body').on('click','.tabber',function(e){
866		e.stopPropagation();
867		px('.tab, .tabber').removeClass('aktiv');
868		px(this).addClass('aktiv');
869		px('.tab#' + px(this).data('id')).addClass('aktiv');
870	});
871	px('body').on('change', '.px-download-box input', function(){
872		let dateien = [];
873		let parent = px(this).parents('.px-post');
874		if(parent.find('.px-download-box input:checked').length > 0) parent.find('.px-download-frame').show(); else parent.find('.px-download-frame').hide();
875		parent.find('.px-download-box input:checked').each(function(){
876			dateien.push(px(this).val());
877		});
878		parent.find('.px-download-frame').contents().find('body .px-download-l
878iste').val(dateien);
879		parent.find('.px-download-frame').contents().find('body .px-download-ordner').val(parent.find('[name="px_vereinsverwaltung_vID"]').val());
880	});
881	px('body').on('click', '.px-download-alle', function(){
882		let parent = px(this).parents('.px-post');
883		let dateien = [];
884		parent.find('.px-download-box input').prop('checked', !parent.find('.px-download-box input').prop('checked'));
885		parent.find('.px-download-box input:checked').each(function(){
886			dateien.push(px(this).val());
887		});
888		if(parent.find('.px-download-box input:checked').length > 0) parent.find('.px-download-frame').show(); else parent.find('.px-download-frame').hide();
889		parent.find('.px-download-frame').contents().find('body .px-download-liste').val(dateien);
890		parent.find('.px-download-frame').contents().find('body .px-download-ordner').val(parent.find('[name="px_vereinsverwaltung_vID"]').val());
891	});
892	px('body').on('click', '.px-download-neue', function(){
893		let parent = px(this).parents('.px-post');
894		let dateien = [];
895		parent.find('.px-download-box input:not(.down)').prop('checked', !parent.find('.px-download-box input:not(.down)').prop('checked'));
896		parent.find('.px-download-box input:checked').each(function(){
897			dateien.push(px(this).val());
898		});
899		if(parent.find('.px-download-box input:not(.down):checked').length > 0) parent.find('.px-download-frame').show(); else parent.find('.px-download-frame').hide();
900		parent.find('.px-download-frame').contents().find('body .px-download-liste').val(dateien);
901		parent.find('.px-download-frame').contents().find('body .px-download-ordner').val(parent.find('[name="px_vereinsverwaltung_vID"]').val());
902	});
903	//
904	// Kontaktformular
905	//
906	px('body').on('change', '.px-kontaktformular input, .px-kontaktformular textarea, .px-kontaktformular select', function(){
907		px(this).removeClass('fehler');
908	});
909	px('body').on('click', '#px-kontakt-absenden', function(e){
910		e.stopPropagation();
911		let fehler = false;
912		px('.px-kontaktformular input, .px-kontaktformular textarea, .px-kontaktformular select').filter('[required]:visible:enabled').each(function(){
913			let e = px(this);
914			if(e.val() == '' || e.val() == 0)
915			{
916				e.addClass('fehler');
917				fehler = true;
918			}
919		});
920		if(fehler)
921		{
922			px('.px-kontaktformular .px_message').html('<div class="neg">Diese Felder dürfen nicht leer sein.</div>').show().fadeOut(6000);
923			px('.px-kontaktformular .fehler:enabled:visible:first').focus();
924		}
925		else
926		{
927			let data = FORM('.px-kontaktformular', 'ACTION_send_contact');
928			grecaptcha.ready(function() {
929				grecaptcha.execute('6LclyLUUAAAAALfIjx1J9GX_R_ArA59D3sbE0DVs', {action: 'instance'}).then(function(token) {
930					data.append('token', token);
931					px('.px-kontaktformular .loading').show();
932					px.ajax(
933					{
934						url			: pfad,
935						type		: 'POST',
936						dataType 	: 'HTML',
937						cache		: false,
938						processData	: false,
939						contentType	: false,
940						data 		: data,
941						success 	: function(data)
942						{
943							px('.px-kontaktformular .px_message').html(data).show().fadeOut(6000);
944							px('.px-kontaktformular .loading').hide();
945							if(data.indexOf('class="pos"') !== false) px('.px-kontaktformular input, .px-kontaktformular textarea').val('');
946						}
947					});
948				});
949			});
950		}
951	});
952	//
953	// Vereinsnews
954	//
955	px('body').on('click', '#px-news-speichern', function(){
956		let data = Formular('#tab_news', 'BEFEHL_termin_v_speichern');
957		data.append('ersteller', px(this).data('verein'));
958		px('#tab_news .loading').show();
959		px.ajax(
960		{
961			url			: '/typo3conf/ext/px_vereinsverwaltung/Classes/Controller/vereinnews.php',
962			cache		: false,
963			processData	: false,
964			contentType	: false,
965			type		: 'POST',
966			dataType 	: 'JSON',
967			data 		: data,
968			success 	: function(data)
969			{
970				px('#tab_news .px_message').html('<div class="'+(data[0] === 1 ? 'pos' : 'neg')+'">'+data[1]+'</div>').show().fadeOut(6000);
971				px('#tab_news').wrap('<form>').closest('form').get(0).reset();
972				px('#tab_news').unwrap();
973				px('#tab_news [name="px-news-titel"]').focus();
974				px('#tab_news .fileContainer').each(function(){ px(this).children('span').html(px(this).children('small').html()); });
975				px('#tab_news .loading').hide();
976			}
977		});
978	});
979	px('body').on('click', '#tab_news #px-news-neu', function(){
980		px('#tab_news').wrap('<form>').closest('form').get(0).reset();
981		px('#tab_news').unwrap();
982		px('#tab_news [name="px-news-titel"]').focus();
983		px('#tab_news .fileContainer').each(function(){ px(this).children('span').html(px(this).children('small').html()); });
984	});
985
986	px('body').on('click', '.vereinteams .team', function(){ px(this).find('.team-person').slideToggle(100); });
987	px('body').on('click', '.px-verein-logo', function(){
988		px.ajax(
989		{
990			url			: '/typo3conf/ext/px_erweiterung_vereinssuche/Classes/Controller/handler.php',
991			cache		: false,
992			type		: 'POST',
993			dataType 	: 'HTML',
994			data 		:
995			{
996				'BEFEHL': 'BEFEHL_details',
997				'verein': px(this).data('id'),
998			},
999			success 	: function(data)
1000			{
1001				px('#px_vereinssuche_details').html(data);
1002				ShowWindow('#px_vereinssuche_details');
1003			}
1004		});
1005	});
1006	px.ajax(
1007	{
1008		url			: '/fileadmin/web-data/logos.php',
1009		cache		: false,
1010		type		: 'POST',
1011		dataType 	: 'JSON',
1012		success 	: function(data)
1013		{
1014			px('.logo-wrap').html(data[0]);
1015		}
1016	});
1017	// body.on('click', '.logo-links', function(){
1018	// 	// px('#logo-galerie').css({'animation-play-state':'paused'});
1019	// 	px('#logo-reverse').css({'animation-play-state':'paused'});
1020	// });
1021	// body.on('click', '.logo-rechts', function(){
1022	// 	// px('#logo-galerie').css({'animation-play-state':'running'});
1023	// 	px('#logo-reverse').css({'animation-play-state':'running'});
1024	// });
1025	px('body').on('click', '#co_verein', function(){
1026		px('.co_eingabe_verein').toggleClass('on');
1027	});
1028	px('body').on('click', '#co_rechnung', function(){
1029		px('.co_eingabe_rechnung').toggleClass('on');
1030	});
1031	px('input[name="px_vereinsverwaltung_name"]').on("input", function() {
1032		px('input[name="px_vereinsverwaltung_rechnung_name"]').val(px('input[name="px_vereinsverwaltung_name"]').val());
1033	});
1034});

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.