PageSourceSearch

https://langenfeld.de/city_data/assets/138/design.js

js langenfeld.de collected 2026-09-24 08:57:41 UTC 11,207 bytes, 391 lines download raw bytes

1window.megamenu_breakpoint = 1200; //In der design.custom zu ändern
2
3$(document).ready(function() {
4	/* JS aktiv Flag */
5	$("body").addClass("js_active");
6});
7
8function initLebenslagen(){
9//  $('.situation-translate-search').prependTo("#content").removeClass("hidden");
10
11	$('.situation-translate-search').removeClass("hidden");
12
13	$('#lebenslagen_dropdown .lebenslagen_dropdown_toggle_btn')
14		.on('mouseover', function(){
15			$('.lebenslagen_dropdown_toggle_btn span.svg_wrapper').addClass('rotate000')
16		})
17		.on('mouseout', function(){
18			$('.lebenslagen_dropdown_toggle_btn span.svg_wrapper').removeClass('rotate000')
19		})
20		.on('click', function(){
21			if( $('.lebenslagen_dropdown_toggle_btn span.svg_wrapper').hasClass('rotate180') ){
22				$('.lebenslagen_dropdown_toggle_btn span.svg_wrapper').removeClass('rotate180');
23
24				$('.lebenslagen_dropdown_wrapper').height(
25					parseInt( $('.lebenslagen_dropdown_toggle_btn').outerHeight( true ) )
26				);
27			} else {
28				$('.lebenslagen_dropdown_toggle_btn span.svg_wrapper').addClass('rotate180');
29
30				$('.lebenslagen_dropdown_wrapper').height(
31					$('.lebenslagen_dropdown_content .menucontainer').height()
32				);
33			}
34		});
35}
36
37function initTagCloud(){
38	// create jqcloud tagcloud data based on menu object DOM
39	var jQCloudData = [];
40	$(".jqcloud li").each( function(){
41		var weight = 3;
42		if( $(this).hasClass('keyword_100') ){
43			weight = 1;
44		} else if ( $(this).hasClass('keyword_101') ){
45			weight = 2;
46		} else if ( $(this).hasClass('keyword_103') ){
47			weight = 4;
48		} else if ( $(this).hasClass('keyword_104') ){
49			weight = 5;
50		}
51		jQCloudData.push( createjQCloudItem( this, weight ) );
52	});
53
54	// init jQCloud
55	$(".jqcloud").empty().jQCloud(
56		jQCloudData
57	);
58}
59
60function createjQCloudItem( linkItem, weight ){
61	var returnData = {
62		text: $( linkItem ).find("span.item_text").text().trim(),
63		weight: weight,
64		link: {
65			href : $( linkItem ).find("a").attr("href"),
66			title : $( linkItem ).find("span.item_text").text().trim(),
67			target: $( linkItem ).find("a").attr("target")
68		}
69	};
70
71	return returnData;
72}
73
74function smartmenus_init(){
75	$('#topmenu').removeClass("hidden");
76	$('#topmenu ul.level_1').addClass("sm sm-simple");
77
78	// Navigation als Megamenu
79	init_megamenu();
80
81	$('#topmenu ul.level_1').smartmenus({
82		mainMenuSubOffsetX: 0,
83		mainMenuSubOffsetY: 5,
84		subMenusSubOffsetX: 0,
85		subMenusSubOffsetY: 5,
86		subMenusMinWidth: '13em'
87	});
88	$('#topmenu ul.level_1').smartmenus('keyboardSetHotkey', 123, 'shiftKey');
89
90	// onShow Event der subMenus
91	$('#topmenu ul.level_1').on('show.smapi', function(e, menu) {
92		if( $(menu).hasClass('mega-menu')){
93
94			$(menu).addClass('open');
95			/*
96			$(menu).css('display', 'grid');
97			if(navigator.userAgent.match(/Trident\/7\./)) {
98				$(menu).css('display', '-ms-grid');
99			}*/
100		}
101	});
102
103	$('#topmenu ul.level_1').on('hide.smapi', function(e, menu) {
104		if( $(menu).hasClass('mega-menu')){
105			$(menu).removeClass('open');
106		}
107	});
108
109	// SmartMenus mobile menu toggle button
110	var $mainMenuState = $('#main-menu-state');
111	if ($mainMenuState.length) {
112		// animate mobile menu
113		$mainMenuState.change(function(e) {
114			var $menu = $('#topmenu .menucontainer.sitemap');
115
116			if (this.checked) {
117				$menu.hide().slideDown(250, function() {
118					$menu.css('display', 'block');
119				});
120				$('#search_toggle_button').addClass('deak');
121				$('body').addClass('mobile_menu_shown');
122
123				/* Check if search is open, trigger close */
124				if($('#main-search-state:checked').length ){
125				  $(".main-search-btn").trigger("click");
126				}
127			} else {
128				$menu.show().slideUp(250, function() {
129					$menu.css('display', 'none');
130				});
131				$('#search_toggle_button').removeClass('deak');
132				$('body').removeClass('mobile_menu_shown');
133			}
134
135		});
136		// hide mobile menu beforeunload
137		$(window).bind('beforeunload unload', function() {
138			if ($mainMenuState[0].checked) {
139				$mainMenuState[0].click();
140			}
141		});
142	}
143
144	// Mobile search toggle button
145	var $mainSearchState = $('#main-search-state');
146	if ($mainSearchState.length) {
147		// animate mobile menu
148		$mainSearchState.change(function(e) {
149			var $search = $('#suche #quicksearch');
150			if (this.checked) {
151				$search.hide().slideDown(250, function() {
152					$search.css('display', 'block');
153				});
154				$('#menu_toggle_button').addClass('deak');
155				$('body').addClass('mobile_search_shown');
156
157				/* Check if menu is open, trigger close */
158				if( $('#main-menu-state:checked').length ){
159					$(".main-menu-btn").trigger("click");
160				}
161
162				// Add Close-Link
163				$('<div id="mobile_search_close_link">Suche Schließen</div>')
164					.appendTo("#logo #quicksearch .search_form_wrapper");
165
166				$('#logo #mobile_search_close_link').click(function () {
167					$(".main-search-btn").trigger("click");
168				});
169			} else {
170				$search.show().slideUp(250, function() {
171					$search.css('display', 'none');
172				});
173				$('#menu_toggle_button').removeClass('deak');
174				$('body').removeClass('mobile_search_shown');
175
176				$('#logo #mobile_search_close_link').remove();
177			}
178		});
179
180		// hide mobile search beforeunload
181		$(window).bind('beforeunload unload', function() {
182			if ($mainSearchState[0].checked) {
183				$mainSearchState[0].click();
184			}
185		});
186	}
187}
188
189function init_megamenu(){
190
191    if($('#topmenu .menucontainer.megamenu').length){
192        if ($(window).width() > window.megamenu_breakpoint){
193            $('#topmenu ul.mainnavicont li.level_1').addClass("has-mega-menu");
194            $('#topmenu ul.mainnavicont li.level_1 > ul').addClass("mega-menu");
195        }else{
196            $('#topmenu ul.mainnavicont li.level_1').removeClass("has-mega-menu");
197            $('#topmenu ul.mainnavicont li.level_1 > ul').removeClass("mega-menu");
198        }
199	}
200}
201
202function fixContentHeight(){
203	var actualPageHeight = $('#logo').outerHeight(true)
204						+ $('#links').outerHeight(true)
205						+ $('#content').outerHeight(true)
206						+ $('#rechts').outerHeight(true)
207						+ $('#footer').outerHeight(true);
208
209    /* Fixing bottom border on pages smaller than viewport */
210    if( $(window).height() - actualPageHeight > 0 ){
211        $("#content, #content .content_border, .has_aside #rechts").css("min-height",(
212			$("#content_wrapper").outerHeight()
213			+ $(window).height()
214			- actualPageHeight)
215		);
216    }else{
217
218		if(($(window).width() >= 1200) && ($('#rechts').outerHeight() > $('#content').outerHeight())){
219			$("#content, #content .content_border").css("min-height",$('#rechts').outerHeight());
220		}
221		else {
222        	$("#content, #content .content_border, .has_aside #rechts").css("min-height","");
223		}
224    }
225}
226
227function initTabs(){
228	var tabsElement = $("#content #tabs_head");
229
230	if( tabsElement.length ){
231		$("#content").addClass("has_tabs");
232	}else{
233		$("#content").addClass("has_no_tabs");
234	}
235	
236	initTabsLinkHead();
237}
238
239function initTabsLinkHead(){
240	/* Setzt die Onclick-Actions auf die Tab-Köpfe */
241	$("#tabs_head .tpl_div_element").on("click", function() {
242		var numberIndex = $(this).index();
243		var tabsWidth = $("#fake_content").innerWidth();
244
245		$("#tabs_content .tpl_div").css("width", tabsWidth); /* geaendert von .tpl_div_element */
246
247		if (!$(this).is("active")) {
248			$("#tabs_head .tpl_div_element").removeClass("active");
249			$("#tabs_content > .tpl_div_element").removeClass("active");
250			$(this).addClass("active");
251
252			var cur_tabs_element = $("#tabs_content").children("div.tpl_div_element:eq(" + numberIndex + ")");
253			cur_tabs_element.addClass("active");
254		}
255		return false;
256	});
257
258	calcTabsSizes();
259
260	if($("#tabs_content > .tpl_div_element.active").length == 0){
261		var firstValue = $("#tabs_content > .tpl_div_element.hasValue:first").index();
262
263		$("#tabs_head").children("div.tpl_div_element:eq(" + firstValue + ")").addClass("active");
264		$("#tabs_content").children("div.tpl_div_element:eq(" + firstValue + ")").addClass("active");
265	}
266}
267
268function calcTabsSizes(){
269	/* Prüft alle Tabs auf Inhalte und blendet ggf. die Köpfe aus */
270	var tabsContentElements = $("#tabs_content > .tpl_div_element");
271
272	tabsContentElements.each(function(index) {
273
274		var tabHasContent = $(this).find(".tab_content_wrapper").text().trim().length;
275		if(tabHasContent == 0){
276			/* Suche nach iframes und Bildern, da diese keine Textlänge haben */
277			tabHasContent = $(this).find(".tab_content_wrapper iframe").length + $(this).find(".tab_content_wrapper img").length;
278		}
279		
280		var tabsButton = $("#tabs_head").children("div.tpl_div_element:eq(" + $(this).index() + ")");
281
282		if(tabHasContent == 0){
283			$(this)
284				.addClass("hidden")
285				.removeClass("active");
286
287			tabsButton
288				.addClass("hidden")
289				.removeClass("active");
290		} else {
291			$(this).addClass("hasValue");
292
293			tabsButton.addClass("hasValue");
294		}
295	});
296}
297
298function createTabsObserver(){
299	var observedElement = document.getElementById('tabs_content');
300
301	if(observedElement){
302		// Create an observer instance to watch for dom changes in tabs_content to trigger resize
303		var observer = new MutationObserver(function(){
304		   	console.log("observed mutation");
305			calcTabsSizes();
306		});
307
308		// Start observing the target node for configured mutations
309		observer.observe(
310			observedElement,
311			{
312				childList: true,
313				subtree: true
314			}
315		);
316	}
317}
318
319function fakeAside(){
320	/* #11908
321	* Adds the following elements to #rechts
322	* 	.fake_aside
323	* 	textblock 3 of rs design "Textblock 3 als rechter Bereich"
324 	* 	#fake_rechts
325 	* All added elements get a wrapper div.class content_border
326 	*  */
327
328	var targetElement = $("#rechts");
329	var elementsToMove = $(".fake_aside, #fake_rechts, #content_frame.rs_design_id_4 .textblock3");
330
331	if( elementsToMove.length ){
332		$("body").addClass("has_aside");
333		elementsToMove
334			.appendTo( targetElement )
335			.wrap( "<div class='content_border'></div>" );
336	}else{
337		$("body").addClass("has_no_aside");
338	}
339	resizeOSM();
340}
341
342function fakeTextblock2_3(){
343	/*
344	* Auf der Startseite wird nichts unternommen, sonst wird:
345	* .bf_wrapper im content erhält den wrapper_div .content_border (Außer Startseite)
346	* Textblock 2 wird generell in aus dem content_frame herausgelöst und in target-element (#content) verschoben.
347	* Textblock 3 wird im RS-Design Standard zusätzlich mit verschoben.
348	* Alle verschobenen Element erhalten den wrapper "div.content_border"
349	* */
350
351	var rs_design_startpage = ".rs_design_id_3";
352	var rs_design_rechter_bereich = ".rs_design_id_4";
353
354
355	var isStartPage = $("body" + rs_design_startpage ).length;
356	if(isStartPage){
357		return false;
358	}
359
360	var targetElement = $("#content");
361	var elementsToMove = $("#content_frame .textblock2, #content_frame:not(" + rs_design_rechter_bereich + ") .textblock3");
362
363	$("#content > .bf_wrapper")
364		.wrap( "<div class='content_border'></div>" );
365
366	elementsToMove
367		.appendTo( targetElement )
368		.wrap( "<div class='content_border'></div>" );
369	resizeOSM();
370}
371
372function resizeOSM(){
373	/*
374	* #13529 resize maps if dimension changed
375	* */
376	if(typeof window.ac_osm_maps !== 'undefined'){
377		window.ac_osm_maps.forEach(function(map){
378            map.invalidateSize();
379        });
380	}
381}
382
383function moveSpecBreadcrumbs(){
384	var targetElement = $("#content #breadcrumbs");
385	var elementsToMove = $(".breadcrumb_message,.breadcrumb_seperator,.breadcrumb_entry_wrapper");
386
387	if( elementsToMove.length ){
388		elementsToMove
389			.appendTo( targetElement )
390	}
391}

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.