PageSourceSearch

https://www.die-wg-boerse.de/globaljs/form-functions.js

js die-wg-boerse.de collected 2026-10-04 16:45:29 UTC 24,101 bytes, 699 lines download raw bytes

1
2
3function new_ac_suchauftrag_ort_plz(id_or_element) {
4    var ac_suchauftrag_ort_plz = new Autocomplete(id_or_element, 3, true);
5    ac_suchauftrag_ort_plz.ac_url = "/globalajax/autocomplete_geo.cfm";
6    ac_suchauftrag_ort_plz.ac_extra = "&accuracy=3,4,5,6&id_land=3&limit=6";
7    ac_suchauftrag_ort_plz.ac_container_addTopPos = 38;
8    ac_suchauftrag_ort_plz.ac_container_addLeftPos = 0;
9    ac_suchauftrag_ort_plz.ac_container_widthOffset = 0;
10    ac_suchauftrag_ort_plz.setFixedPos(false);
11}
12
13
14function loadForm(el){
15	
16
17	$(el).addClass("formload");
18
19
20
21	$(el).find("select.select_objekt_index").each(function(i,s){
22		$(s).on("change",function(e){
23			var val = {};
24			val.v = $(this).val();
25			val.l = val.v.split("_")[0];
26			val.o = val.v.split("_")[1];
27			if(val.v.indexOf("_",2) > -1) val.i = val.v.split("_")[2];else val.i = "";
28			$(this).parent(".input-group").add(this).nextAll("input[data-type=l]").val(val.l).trigger("change");
29			$(this).parent(".input-group").add(this).nextAll("input[data-type=id_objektart]").val(val.o).trigger("change");
30			$(this).parent(".input-group").add(this).nextAll("input[data-type=index_k_m]").val(val.i).trigger("change");
31		});
32		$(s).trigger("change");
33	});
34
35
36	$(el).find(".form-copy").on("click",".form-copy-btn",function(){
37		console.log(1);
38		if($(this).closest(".form-copy-parent").is(".form-copy-parent:first-of-type") ){
39			console.log(5);
40			if( $(this).closest(".form-copy-parent").parent().children('.form-copy-parent').length < $(this).data('copy-max') ){ 
41				$n = $(this).closest(".form-copy-parent").clone(false,false);
42				$n.find("[id^='AutoGen'][type=hidden]").remove();
43				$n_input = $n.find("input,textarea");
44				$n_input.val("").attr("id","").trigger('change');
45				
46				if($n_input.is('.loaded_ac')){loadOldAutoC($n_input);}
47                $n.attr("id", "");
48                $n.appendTo($(this).closest(".form-copy-parent").parent());
49
50                loadAutocomplete($n_input[0],el);
51			}
52		}
53		else{
54			$(this).closest(".form-copy-parent").remove();
55		}
56		/*
57		$n = $(this).closest(".input-group").clone();
58		$n.find("input,textarea").val("");
59		$n.insertAfter($(this).closest(".input-group"));
60		*/
61	});
62	$(el).find(".form-hide").on("click",".form-hide-btn",function(){
63		var p = $(this).closest(".form-hide-parent");
64		console.log(p);
65		if(p.is(".form-hide-parent:first-of-type") ){
66			p.siblings().not('.d-flex').first().addClass('d-flex shown').removeClass("d-none").find('input,select').attr('disabled',false)
67		}
68		else{
69			if(p.is('.d-flex')){
70				p.hide().removeClass('shown').addClass('d-none').removeClass("d-flex").find('input,select').attr('disabled','disabled');
71			}else{
72				p.show().addClass('shown').find('input,select').attr('disabled',false);
73			}
74		}
75		/*
76		$n = $(this).closest(".input-group").clone();
77		$n.find("input,textarea").val("");
78		$n.insertAfter($(this).closest(".input-group"));
79		*/
80	});
81
82
83	$(el).find("[data-obcond]").each(function(){
84		var name = [];
85		if($(el).is('.obcond'))return 1;
86		$(el).addClass("obcond");
87
88		$(el).find("[data-obcond]").addClass("obcondE").each(function(){
89			var cond = $(this).data('obcond').split('|');
90			cond.forEach(function(v){
91				if(!name.includes(v.split(/(!=|[=<>%]{1,2})/g)[0])) name.push(v.split(/(!=|[=<>%]{1,2})/g)[0]);
92			});
93
94		});
95		name.forEach(function(v){
96			$(el).find("[name="+v+"]").addClass("obcondV").change(checkDataCond );
97		});
98		checkDataCond.apply($(el));
99		
100	});
101
102	$(el).find("label.input-overlay > input,label.input-overlay > select").each(function(){
103		let inp = this; 
104		let $ol = $("<span></span>").addClass("input-overlay");
105		$(inp).after($ol);
106		$(inp).on("change",function(e,z){
107			let tmpval = $(inp).val();
108			let otext = "";
109			/*if($(inp).attr("type") == "number") tmpval = parseFloat(tmpval);*/
110
111			if($(inp).data("type") == "currency"){
112				if(tmpval == "") {tmpval = 0;}
113				else{ 
114					tmpval = tmpval.replace(",",".");
115					let firstOccuranceIndex = tmpval.search(/\./) + 1; // Index of first occurance of (.)
116					tmpval = parseFloat(tmpval.substr(0, firstOccuranceIndex) + tmpval.slice(firstOccuranceIndex).replace(/\./g, '')); // Splitting into two string and replacing all the dots (.'s) in the second string
117				}
118			}
119			else if($(inp).data("type") == "double"){
120				if(tmpval == "") {tmpval = "";}
121				else{ 
122					tmpval = tmpval.replace(",",".");
123					let firstOccuranceIndex = tmpval.search(/\./) + 1; // Index of first occurance of (.)
124					tmpval = parseFloat(tmpval.substr(0, firstOccuranceIndex) + tmpval.slice(firstOccuranceIndex).replace(/\./g, '')); // Splitting into two string and replacing all the dots (.'s) in the second string
125				}
126			}
127
128
129			
130			if($(inp).data("type") == "currency" && tmpval != ""){
131				$(inp).val(new Intl.NumberFormat('de-DE', {minimumFractionDigits: 2,maximumFractionDigits: 2,useGrouping:false}).format(tmpval ).replace(".",','));
132				otext =  new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(tmpval );
133			}
134			else if($(inp).data("type") == "double" && tmpval != ""){
135				$(inp).val(new Intl.NumberFormat('de-DE', {minimumFractionDigits: 0,maximumFractionDigits: 2,useGrouping:false}).format(tmpval ).replace(".",','));
136				otext =  new Intl.NumberFormat('de-DE', {minimumFractionDigits: 0,maximumFractionDigits: 2,useGrouping:true}).format(tmpval );
137			}
138			else{
139				otext = $(inp).val();
140			}
141
142
143			if($(inp).is("select")){
144				otext = $(inp).find("option[value='"+$(inp).val()+"']").text();
145			}
146
147			if($(inp).is("[data-ow]")){
148				let owvalgroup = $(inp).data("ow").split('|');
149				
150				owvalgroup.some(function(owval){
151					owval = owval.split('::');
152					if(tmpval == owval[0]){
153						otext = owval[1];
154						$(inp).val(owval[0]);
155					}
156				});
157			}
158			
159			if($(inp).is("[data-append]") && tmpval != "" && tmpval != 0){
160				otext = otext + "" + $(inp).data("append");
161			}
162			$ol.html(otext);
163		})
164		
165		if($(inp).data("type") == "currency"){
166			$(inp).on("focus",function(e,z){
167				if($(inp).val() == 0) $(inp).val("");
168			});
169		}
170		$(inp).on("blur",function(e,z){
171			$(inp).trigger("change");
172		});
173		$(inp).trigger("change");
174	});
175
176	$(el).find("div.input-mask > input,div.input-mask > select").each(function(){
177
178		let inp = $(this); 
179		let mask = inp.siblings(".input-mask-content");
180		let masktext = mask.children("span");
181		if(mask.length == 0){
182			mask = $("<div></div>").addClass("input-mask-content");
183			masktext = $("<span></span>");
184			$(inp).after(mask.append(masktext));
185		}
186		$(inp).on("change",function(e,z){
187			inp = $(this);
188			masktext = inp.next().children("span").first();
189			let tmpval = $(inp).val();
190			let otext = "";
191			/*if($(inp).attr("type") == "number") tmpval = parseFloat(tmpval);*/
192
193			if($(inp).data("type") == "currency"){
194				if(tmpval == "") {tmpval = 0;}
195				else{ 
196					tmpval = tmpval.replace(",",".");
197					let firstOccuranceIndex = tmpval.search(/\./) + 1; // Index of first occurance of (.)
198					tmpval = parseFloat(tmpval.substr(0, firstOccuranceIndex) + tmpval.slice(firstOccuranceIndex).replace(/\./g, '')); // Splitting into two string and replacing all the dots (.'s) in the second string
199				}
200			}
201			else if($(inp).data("type") == "double"){
202				if(tmpval == "") {tmpval = "";}
203				else{ 
204					tmpval = tmpval.replace(",",".");
205					let firstOccuranceIndex = tmpval.search(/\./) + 1; // Index of first occurance of (.)
206					tmpval = parseFloat(tmpval.substr(0, firstOccuranceIndex) + tmpval.slice(firstOccuranceIndex).replace(/\./g, '')); // Splitting into two string and replacing all the dots (.'s) in the second string
207				}
208			}
209
210
211			
212			if($(inp).data("type") == "currency" && tmpval != ""){
213				$(inp).val(new Intl.NumberFormat('de-DE', {minimumFractionDigits: 2,maximumFractionDigits: 2,useGrouping:false}).format(tmpval ));
214				$(inp).val(tmpval);
215				otext =  new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(tmpval );
216			}
217			else if($(inp).data("type") == "double" && tmpval != ""){
218				$(inp).val(new Intl.NumberFormat('de-DE', {minimumFractionDigits: 0,maximumFractionDigits: 2,useGrouping:false}).format(tmpval ).replace(".",','));
219				otext =  new Intl.NumberFormat('de-DE', {minimumFractionDigits: 0,maximumFractionDigits: 2,useGrouping:true}).format(tmpval );
220			}
221			else{
222				otext = $(inp).val();
223			}
224
225			if($(inp).is("select")){
226				otext = $(inp).find("option[value='"+$(inp).val()+"']").text();
227			}
228
229			if($(inp).is("[data-ow]")){
230				let owvalgroup = $(inp).data("ow").split('|');
231				owvalgroup.some(function(owval){
232					owval = owval.split('::');
233					if(tmpval == owval[0]){
234						otext = owval[1];
235						$(inp).val(owval[0]);
236					}
237				});
238			}
239			
240			if($(inp).is("[data-append]") && tmpval != "" && tmpval != 0){
241				otext = otext + "" + $(inp).data("append");
242			}
243
244			masktext.html(otext);
245		})
246		
247		if($(inp).data("type") == "currency"){
248			$(inp).on("focus",function(e,z){
249				if($(inp).val() == 0) $(inp).val("");
250			});
251		}
252		$(inp).on("blur",function(e,z){
253			$(inp).trigger("change");
254		});
255		$(inp).trigger("change");
256	});
257
258	$(el).find("input[data-autocomplete]").each(function(){
259		loadAutocomplete(this,el);
260	});
261
262	/*$(el).find(".form-action[data-target]").on("click",function(){
263		let btn = $(this);
264		$(el).find("[data-form]").css("display","none");
265		$(el).find("[data-form=" + btn.data("target") + "]").css("display","");
266	});
267	*/
268	
269
270	$(el).find(".form-validate[data-validate],[data-formtarget]").on("click",function(){
271		let btn = $(this);let valid = true;
272		if(btn.is(".ajax-loading")) return false;
273
274		if(btn.is(".form-validate[data-validate]")) {
275			$(el).find("[data-form=" + btn.data("validate") + "]").each(function(){
276				let box = $(this);
277				box.find(".validation").each(function(){
278					let inp = $(this), inp_valid = true;
279
280					if(inp.attr("type") == "checkbox"){
281						if(inp.attr("required") == "required" && inp.is(":checked") == false){
282							inp_valid = false;
283						}
284					}
285					else {
286						if(inp.attr("required") == "required"){
287							if(inp.data("type") === "double" && parseFloat(inp.val()) == 0) inp_valid = false;
288							if(inp.val() == "") inp_valid = false;
289						}
290						if(inp.is("[pattern]")){
291							if(new RegExp(inp.attr("pattern"), '' ).test(inp.val()) == false){
292								inp_valid = false;
293							} 
294						}
295					}
296
297
298
299					if(inp.attr("type") == "hidden" || inp.attr("type") == "checkbox"){
300						if(inp_valid) inp.parent().removeClass("is-invalid");
301						else{	valid = false; inp.parent().addClass("is-invalid");}
302					}
303					else{
304						if(inp_valid) inp.removeClass("is-invalid");
305						else{	valid = false; inp.addClass("is-invalid");}
306					}
307				});
308			});
309		}
310
311		if(valid){
312			$(".hide-on-step").hide();
313			if( btn.is("[data-trigger]") && typeof btn.data("trigger") != "undefined" ){
314				$(el).trigger(btn.data("trigger"),btn[0] );
315			}
316			else if ( btn.is("[data-formtarget]") && typeof btn.data("formtarget") != "undefined" ){
317				$(el).find("[data-form]").css("display","none");
318				$(el).find("[data-form=" + btn.data("formtarget") + "]").css("display","");
319			}
320			else if(btn.is("[data-action]") && typeof btn.data("action") != "undefined" ){
321				if(btn.data('action').startsWith("suchauftrag-speichern")){
322					let a = this;
323					let form = $(a).closest('form,.form');
324					let form_data = getFormData(form);
325					if(btn.data('action') == "suchauftrag-speichern-check") form_data.anlegen_check = "check";
326					else if(btn.data('action') == "suchauftrag-speichern-update")form_data.anlegen_check = "update";
327					else if(btn.data('action') == "suchauftrag-speichern-insert")form_data.anlegen_check = "insert";
328
329					$(a).addClass("ajax-loading");
330
331					console.log(form_data);
332					$.ajax({
333						url:"/globalajax/save_suchauftrag.cfm",type:"POST",
334						data:form_data
335						,dataType:'html'
336						,async:true,cache:false,timeout:30000,
337						error: function(data,et,er){
338						},
339						success:function(data){
340							data = JSON.parse(data);
341							console.log(data);
342							btn.addClass('disabled');
343							$(form).find(".alert.alert-success").fadeIn(400,function(){$(this).delay(5000).fadeOut()});
344							if(data[6] != ''){
345
346								window.location.href = window.location.href.split("start.cfm")[0] + data[6];
347
348							} 
349						},
350						complete:function(data){
351							$(a).removeClass("ajax-loading");
352						}
353					});
354				}
355				else if(btn.data('action') == "suchanzeige-speichern"){
356					let a = this;
357					let form = $(a).closest('form,.form');
358					let form_data = getFormData(form);
359					form_data['action'] = "bearbeiten";
360
361					$(a).addClass("ajax-loading");
362					
363					$.ajax({
364						url:"verwaltung/mitte/ajax/suchanzeige_bearbeiten.cfm",type:"POST",
365						data:form_data
366						,dataType:'html'
367						,async:true,cache:false,timeout:30000,
368						error: function(data,et,er){
369							console.log(data,et);
370							console.log(er,et);
371						},
372						success:function(data){
373							$(form).find(".alert.alert-success").fadeIn(400,function(){$(this).delay(5000).fadeOut()});
374						},
375						complete:function(data){
376							$(a).removeClass("ajax-loading");
377						}
378					});
379				}
380			}
381		}
382	});
383
384
385	/*$(el).find("span.input,span.select").each(function(){
386
387		let e = $(this).addClass("formElement");
388
389		var $input = jQuery("<"+("select,textarea".indexOf(e.attr("data-type")) >= 0?e.attr("data-type"):"input")+">")
390			.addClass("sa_edit")
391			.attr("name",e.attr("data-name"))
392			.attr("type",e.attr("data-type"));
393		//$input.hide();
394		
395		e.after($input);
396
397		Object.keys(e.data()).forEach(function(i,j){
398			console.log(i);
399			console.log(j);
400		});
401
402	});*/
403	
404	$(el).find(".form-edit").on("click",function(ev){
405		let e = $(this);
406		e.addClass("onEdit").find("input,select").focus();
407		let inp = e.find("input"); 
408		if(inp.length > 0) {
409			inp[0].setSelectionRange(0,inp[0].value.length);
410		}
411	});
412	$(el).find(".form-edit input ,.form-edit select").on("blur",function(){
413		let e = $(this).closest(".form-edit");
414		e.removeClass("onEdit");
415	});
416
417	
418	$(el).find(".autocomplete_ort").not('.loaded_ac').each(function(e,v){
419		loadOldAutoC(v);
420	});
421
422	$(el).removeClass("formload").addClass("formloaded");
423
424}
425
426
427
428
429/*$(document).ready(function(){
430	
431	
432	$("form,.form").each(function(i,el){
433		loadForm(el);
434	});
435	
436
437}); */
438
439
440
441
442
443
444function checkDataCond(){
445	var vO = {};
446	$(this).closest(".form.obcond").find(".obcondV").each(function(){
447		vO[$(this).attr("name")] = $(this).val();
448	});
449	$(this).closest(".form.obcond").find(".obcondE").each(function(){
450		var obcondE = this;
451		var condAll = $(obcondE).data('obcond').split('|');
452		condAll.some(function(condBlock){
453			condBlock = condBlock.split('&');
454			condBlock.push(true);
455			condBlock.forEach(function(cond){
456				if(cond === true || cond === false || condBlock[condBlock.length-1] == false) return 1;
457				cond = cond.split(/(!=|[=<>%]{1,2})/g);
458				
459				if(		(cond[1]=="!="&& vO[cond[0]]!=cond[2] )
460					||	(cond[1]=="=" && vO[cond[0]]==cond[2] )
461					||	(cond[1]==">" && vO[cond[0]]> cond[2] )
462					||	(cond[1]=="<" && vO[cond[0]]< cond[2] )
463					||	(cond[1]==">="&& vO[cond[0]]>=cond[2] )
464					||	(cond[1]=="<="&& vO[cond[0]]<=cond[2] )
465					||	(cond[1]=="%" && vO[cond[0]]% cond[2] )
466				){}
467				else condBlock[condBlock.length-1] = false;
468			});
469
470			if(condBlock[condBlock.length-1]) {
471				$(obcondE).addClass("Validobcond").removeClass("InValidobcond");
472				return true;
473			}
474			else {
475				$(obcondE).addClass("InValidobcond").removeClass("Validobcond");
476			}
477		});
478	});
479
480}
481
482
483function getFormData(form){/* does not have to be form */
484	let r = {};
485	$(form).find("input,select").not("[type=radio],[type=checkbox],.InValidobcond *,.dropzone *").each(function(i,inp){
486		if( $(inp).is("[data-obparent][data-obparent!='']")){
487			let parent = $(inp).data("obparent");
488			if( typeof r[parent] == "undefined") r[parent] = {};
489			r[parent][$(inp).attr("name")] = $(inp).val();
490		}
491		else if($(inp).is("[data-obparent][data-obparent!=''] *")){
492
493			let parent = $(inp).closest("[data-obparent][data-obparent!='']");
494			if(parent.is("[data-formarray=1]")){
495
496
497				console.log( parent.children());
498				console.log( parent.children().has(inp));
499				console.log( parent.children().has(inp).index());
500
501				if( typeof r[parent.data("obparent")] == "undefined") r[parent.data("obparent")] = {};
502				if( typeof r[parent.data("obparent")][parent.children().has(inp).index()] == "undefined") r[parent.data("obparent")][parent.children().has(inp).index()] = {};
503				r[parent.data("obparent")][parent.children().has(inp).index()][$(inp).attr("name")] = $(inp).val();
504
505			}
506			else{
507				if( typeof r[parent.data("obparent")] == "undefined") r[parent.data("obparent")] = {};
508				r[parent.data("obparent")][$(inp).attr("name")] = $(inp).val();
509			}
510		}
511		else r[$(inp).attr("name")] = $(inp).val();
512	});
513
514
515
516	/*
517	// DROPZONE IMAGES
518	if($(form).find('.dropzone .dz-success'))
519
520
521	$(form).find(".dropzone .dz-success input").each(function(i,inp){
522		if( typeof $(inp).data("obparent") != "undefined"){
523			if( typeof r[$(inp).data("obparent")] == "undefined") r[$(inp).data("obparent")] = {};
524			r[$(inp).data("obparent")][$(inp).attr("name")] = $(inp).val();
525		}
526		else r[$(inp).attr("name")] = $(inp).val();
527	});--->
528	*/
529
530
531	return r;
532}
533
534
535function loadAutocomplete(inp,form){
536	if($(inp).attr("autocomplete") != "off") $(inp).attr("autocomplete",$(inp).data("autocomplete"));
537
538
539
540	if(typeof window.streetAutoCompl == "undefined") window.streetAutoCompl = {};
541	if($(inp).attr("data-autocomplete") == "postal-code") {
542		var tmpid = "";
543		if(typeof $(inp).attr('id') == "undefined") tmpid = "AutoGenId_"+Object.keys(window.streetAutoCompl).length;
544		else if( Object.keys(window.streetAutoCompl).includes($(inp).attr('id')) ) tmpid = $(inp).attr('id')+""+Object.keys(window.streetAutoCompl).length;
545		else tmpid = $(inp).attr('id');
546		$(inp).attr("id",tmpid);
547		window.streetAutoCompl[tmpid] = new Autocomplete(tmpid, 3);
548		window.streetAutoCompl[tmpid].ac_url = "/globalajax/autocomplete_geo.cfm";
549		window.streetAutoCompl[tmpid].ac_extra = "&accurancy=6&id_land=3";
550		window.streetAutoCompl[tmpid].ac_container_widthOffset = 100;
551		
552		$(inp).on("afterEvent",function(){
553			console.log(5555);
554			console.log(inp.value);
555			console.log(/(\d{5})([\s\S]+)/.exec(inp.value));
556			if((m = /(\d{5})([\s\S]+)/.exec(inp.value)) !== null){
557				console.log(m);
558				if ($(inp).closest('.contact-area').find("input[data-autocomplete=address-level2]").length > 0
559					&& $(inp).closest('.contact-area').find("input[data-autocomplete=address-level2]").val() == ""
560					&& m.length == 3
561					&& typeof m[2] !== "undefined")
562				$(inp).closest('.contact-area').find("input[data-autocomplete=address-level2]").val(m[2]);
563				$(inp).val(m[1].trim());
564
565			}
566		});
567	}
568	if($(inp).attr("data-autocomplete") == "address-level2" || $(inp).attr("data-autocomplete") == "postal-code address-level2") {
569		var tmpid = "";
570		if(typeof $(inp).attr('id') == "undefined" || $(inp).attr('id') == "") tmpid = "AutoGenId_"+Object.keys(window.streetAutoCompl).length;
571		else if( Object.keys(window.streetAutoCompl).includes($(inp).attr('id')) ) tmpid = $(inp).attr('id')+""+Object.keys(window.streetAutoCompl).length;
572		else tmpid = $(inp).attr('id');
573		$(inp).attr("id",tmpid);
574		window.streetAutoCompl[tmpid] = new Autocomplete(tmpid, 3);
575		window.streetAutoCompl[tmpid].ac_url = "/globalajax/autocomplete_geo.cfm";
576		window.streetAutoCompl[tmpid].ac_extra = "&accuracy=4&id_land=3";
577		/*
578		if($(inp).attr("data-autocomplete") == "postal-code address-level2") {
579			window.streetAutoCompl[tmpid].ac_extra = "&accuracy=4,6&id_land=3";
580			window.streetAutoCompl[tmpid].ac_url = "/globalajax/autocomplete_geov2.cfm";
581		}*/
582	}
583	else if($(inp).attr("data-autocomplete") == "street-address") {
584		var tmpid = "";
585		if(typeof $(inp).attr('id') == "undefined") tmpid = "AutoGenId_"+Object.keys(window.streetAutoCompl).length;
586		else if( Object.keys(window.streetAutoCompl).includes($(inp).attr('id')) ) tmpid = $(inp).attr('id')+""+Object.keys(window.streetAutoCompl).length;
587		else tmpid = $(inp).attr('id');
588		$(inp).attr("id",tmpid);
589		window.streetAutoCompl[tmpid] = new Autocomplete(tmpid, 3);
590		window.streetAutoCompl[tmpid].ac_url = "/globalajax/autocomplete_geo.cfm";
591		window.streetAutoCompl[tmpid].ac_extra = "&accurancy=7,8&id_land=3";
592		
593		window.streetAutoCompl[tmpid].ac_ort = $(inp).closest('.contact-area').find("input[autocomplete=address-level2]")[0];
594		$(inp).on("change",function(){
595
596			/*if((m = /(.+?)((?<!^)(?<=\s)\d+.*)?$/.exec(inp.value)) !== null){
597				if ($(inp).closest('.contact-area').find("input[data-autocomplete=housenumber]").length > 0
598					&& $(inp).closest('.contact-area').find("input[data-autocomplete=housenumber]").val() == ""
599					&& m.length == 3
600					&& typeof m[2] !== "undefined")
601				$(inp).closest('.contact-area').find("input[data-autocomplete=housenumber]").val(m[2]);
602				$(inp).val(m[1].trim());
603			}*/
604		});
605	}
606}
607
608
609function loadOldAutoC(inp){
610	$(inp).autocomplete(
611		"/ajax/autocomplete_ort_plz.cfm?debugoutput=no",
612		{
613			chars: 3,
614			minChars: 1,
615			width: 417,
616			scrollHeight: 240,
617			scroll: true,
618			delay: 100,
619			//autoFill:false,    //true,
620			autoFill:$(inp).data("autofill")===1,
621			matchSubset: false,
622			matchContains: 1,
623			multiple: false, // true - macht z.B. bei Hannover Südstadt falsche Abfrage
624			multipleSeperator: ",",
625			cacheLength: 10,
626			max: 300,
627			selectOnly: 1,
628			validation: $(inp).is(".validation"),
629			extraParams: {
630				show_plz: ( $(inp).data("plz") === 1 )?1:0,
631				plz_punkte_anzeigen: ( $(inp).data("autofill") || $(inp).data("plz_punkte") == false )?0:1,
632				stadtteil_mit_anzeigen: ( $(inp).data("stadtteil") === 0 )?0:1,
633				umland_mit_anzeigen: ( $(inp).data("umland") === 0 )?0:1,
634				use_region: ( $(inp).data("region") === 0 )?0:1,
635				ort_einmal: ( $(inp).data("ort_einmal") === 1 )?1:0,
636				validation: ( $(inp).data("validation") === 1 )?1:0
637			}
638		}
639	);
640	$(inp).is(".validation");
641	$(inp).addClass("loaded_ac");
642}
643
644function validateForm(form,error = true){
645	let valid = true;
646	form = $(form);
647	form.find(".validation").not(".InValidobcond .validation").each(function(){
648		let inp = $(this), inp_valid = true;
649
650		if(inp.attr("type") == "checkbox"){
651			if(inp.attr("required") == "required" && inp.is(":checked") == false){
652				inp_valid = false;
653			}
654		}
655		else {
656			if(inp.attr("required") == "required"){
657				if(inp.data("type") === "double" && parseFloat(inp.val()) == 0) inp_valid = false;
658				if(inp.val() == "") inp_valid = false;
659			}
660			if(inp.is("[pattern]")){
661				if(new RegExp(inp.attr("pattern"), '' ).test(inp.val()) == false){
662					inp_valid = false;
663				} 
664			}
665		}
666
667
668		if(error == true){  
669			if(inp.attr("type") == "hidden" || inp.attr("type") == "checkbox"){
670				if(inp_valid) inp.parent().removeClass("is-invalid");
671				else{	valid = false; inp.parent().addClass("is-invalid");}
672			}
673			else{
674				if(inp_valid) inp.removeClass("is-invalid");
675				else{	valid = false; inp.addClass("is-invalid");}
676			}
677		}
678	});
679	return valid;
680}
681
682
683jQuery(function(){
684	$("form,.form").each(function(i,el){
685		loadForm(el);
686	});
687	/*
688	$(".pakete_box").find(".paket_item .paket_button").on("click",function(){
689		let btn = $(this);
690		btn.closest(".pakete_wahl_box").children("input[name=paket]").val(btn.closest(".paket_item").data("paket"));
691		btn.closest(".pakete_wahl_box").find(".paket_item").removeClass("active");
692		btn.closest(".paket_item").addClass("active");
693	});
694	*/
695	$(".btn-toggle[data-target]").on("click",function(){
696		let btn = $(this);
697		$("#"+btn.data('target')).toggle();
698	});
699});

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.