PageSourceSearch

https://www.prioris.com/_static/js/scripts.js?v=200027-202607241009

js prioris.com collected 2026-10-02 22:48:01 UTC 10,357 bytes, 349 lines download raw bytes

1$(function(){
2	// Set touch class if applicable
3	if(is_touch_device() == true){
4		$(".body").addClass("body--touch");
5	}
6
7	// Menutrigger
8	bStatusMenutrigger = true;
9	$(document).on("click", ".menutrigger, .navbg, .header__navbg", function(e){
10		e.preventDefault();
11
12		if (bStatusMenutrigger) {
13			bStatusMenutrigger = false;
14
15			let $nav = $('.nav'),
16				$navbg = $('.header__navbg'),
17				$menutrigger = $('.menutrigger');
18
19			if ($nav.hasClass('nav--hidenav') || !$nav.hasClass('nav--shownav')) {
20				// show nav animation
21				$menutrigger.addClass('menutrigger--shownav');
22				$nav.addClass('nav--shownav').removeClass('nav--hidenav');
23				$navbg.addClass('header__navbg--shownav');
24				setTimeout(() => {
25					bStatusMenutrigger = true;
26				},700);
27			} else if ($nav.hasClass('nav--shownav')) {
28				// hide nav animation
29				$menutrigger.removeClass('menutrigger--shownav');
30				$nav.addClass('nav--hidenav').removeClass('nav--shownav');
31				$navbg.removeClass('header__navbg--shownav');
32				setTimeout(() => {
33					bStatusMenutrigger = true;
34					$nav.removeClass('nav--hidenav');	// prevent resize animation
35				},700);
36			}
37		}
38	});
39
40	/*Menus ein-/ausblenden*/
41	let toMenuClose;
42	$(document).on('click', '.nav__li', function (enterEvent) {
43		enterEvent.stopPropagation();
44
45		let $this = $(this);
46
47		clearTimeout(toMenuClose);
48
49		/*if (!$.isEmptyObject($this.siblings('.nav__li--running')[0]) && !$menutrigger.is(':visible')) {
50			// toMenuClose = setTimeout(function(){
51			$this.siblings('.nav__li--running').removeClass('nav__li--running').find('.nav__list').removeClass('nav__list--show');
52			$this.find('.nav__li--running').removeClass('nav__li--running');
53			// }, 100);
54		}*/
55
56		if ($this.hasClass('nav__li--isparent')) {
57			enterEvent.preventDefault();
58
59			// Submenu toggle
60			if (!$this.hasClass('nav__li--running')) {
61				$this.addClass('nav__li--running').find('> .nav__list').addClass('nav__list--show');
62			} else {
63				closeNavi($this);
64			}
65		}
66
67		/*$this.one('mouseleave', function (leaveEvent) {
68			if (!$menutrigger.is(':visible')) {
69				clearTimeout(toMenuClose);
70				toMenuClose = setTimeout(function () {
71					closeNavi($this);
72				}, 300);
73			}
74		});*/
75
76		function closeNavi($self) {
77			$self.removeClass('nav__li--running').find('.nav__list').removeClass('nav__list--show');
78			if (!$menutrigger.is(':visible')) {
79				$('.nav__li--running').removeClass('nav__li--running');
80			}
81		}
82	});
83
84	// sessionStorage leeren, wenn Navigation betätigt wird.
85	$(document).on("click", ".nav__link", function (_e) {
86		let $this = $(this);
87
88		if (typeof (sessionStorage["searchfilter"]) !== "undefined" && !$.isEmptyObject($this.attr("data-pageid")[0])) {
89			let data = JSON.parse(sessionStorage["searchfilter"]),
90				sPage = "page_" + $this.attr("data-pageid");
91
92			if (data.hasOwnProperty(sPage)) {
93				delete data[sPage];
94
95				sessionStorage["searchfilter"] = JSON.stringify(data);
96			}
97		}
98	});
99
100	// E-Mail senden
101	$(document).on("click", "a[href^='#msg=']", function(event){
102		event.preventDefault();
103
104		let string = $(this).attr("href"),
105			code = string.substring(string.indexOf("=") + 1);
106
107		msg(code);
108	});
109
110	// Modal öffnen
111	$(document).on('click', 'a.modal', function(event){
112		event.preventDefault();
113
114		let sHref = $(this).attr('data-url');
115
116		loadModal(sHref);
117	});
118
119	// Modal ausblenden
120	$(document).on('click', '.modal, .modal__close', function(e){
121		e.preventDefault();
122		closeModal();
123	});
124
125	// Video in Modal öffnen
126	$(document).on('click', 'a[href*="youtu"]', function(event){
127		event.preventDefault();
128
129		let sHref = $(this).attr('href'),
130			aRegGroups = sHref.match(/https:\/\/(www.)?youtu(\.)?be(\.com)?\/(watch\?v\=)?(.+)/),
131			code = aRegGroups[aRegGroups.length-1],
132			payload = {'code':code};
133
134		loadModal(siterelpath+'apps/services/youtube.cfm', 'modal__popup--video', payload);
135	});
136
137	// Scrolltop
138	$(document).on("click", ".scrolltop", function(event){
139		$("body,html").animate({ scrollTop:0 },800);
140	});
141
142	let scroll = 0;
143
144	// Add scroll class if applicable
145	$(window).scroll(function(){
146		let scrolled = $(this).scrollTop();
147
148		if(scrolled > 30) {
149			$(".body").addClass("body--scrolled");
150		} else {
151			$(".body").removeClass("body--scrolled");
152		}
153
154		// Scroll-Effekt in Galerie
155		if (scrolled >= 0 && !$.isEmptyObject($('.cslides__gallery')[0])) {
156			let $gallery = $('.cslides__gallery');
157
158			if (scrolled > 0) {
159				// Wenn Galerie hinter Siteheader läuft
160				$gallery.find('.carousel-cell').css({ 'transform': 'translateY('+(Math.round(scrolled / 2))+'px)' });
161			} else {
162				$gallery.find('.carousel-cell').css({ 'transform': 'translateY('+0+'px)' });
163			}
164		}
165	});
166
167	// Contactform Label functionality
168		let toSelectFocusout = null;
169
170		// On load (timeout necessary so URL parameter can be written into input first)
171		setTimeout(() => {
172			$("[class*='--label-inside']:not(.label), .cis-select--label-inside > select").each((_i,el) => {
173				checkLabels(el,undefined);
174			});
175		},200);
176
177		// On event trigger
178		$("[class*='--label-inside']:not(.label), .cis-select--label-inside > select").on("focus change focusout", e => {
179			checkLabels(e.target, e.type);
180		});
181
182		function checkLabels(_target, _eventtype) {
183			if (_target.type === "select-one") {
184				// Select
185				clearTimeout(toSelectFocusout);
186				if (_eventtype === "focus" || (_eventtype !== "focusout" && _target.value !== undefined && _target.value.length)) {
187					labelinside($(_target).parent(), "add", _eventtype);
188				} else if (_eventtype === "focusout") {
189					// Set timeout as we have to wait for the value to get updated by creanetSelect.js
190					toSelectFocusout = setTimeout(() => {
191						if (_target.value !== undefined && _target.value.length) {
192							labelinside($(_target).parent(), "add", _eventtype);
193						} else {
194							labelinside($(_target).parent(), "remove", _eventtype);
195						}
196					},150);
197				}
198			} else {
199				if (_eventtype === "focus" || (_target.value !== undefined && _target.value.length)) {
200					labelinside(_target, "add", _eventtype);
201				} else if (_eventtype === "focusout" && !_target.value.length) {
202					labelinside(_target, "remove", _eventtype);
203				}
204			}
205		}
206
207		function labelinside(_target, _action, _eventtype) {
208			let $targetParent = $(_target).parent(),
209				aParentClass = (typeof $targetParent.attr('class') !== 'undefined') ? $targetParent.attr('class').split(' ') : [];
210
211			if (aParentClass.length > 0) {
212				if (_action === "add" && _eventtype !== "focusout") {
213					$targetParent.addClass(aParentClass[0] + "--focus");
214				} else {
215					$targetParent.removeClass(aParentClass[0] + "--focus");
216				}
217			}
218
219			$targetParent.find('[class*="--label-inside"]').each((_i, element) => {
220				let aModifier = [...element.classList].filter(sClass => sClass.includes("--label-inside"));
221				if (aModifier.length > 0) {
222					let sBlock = aModifier[0].substring(aModifier[0].indexOf("--label-inside"), 0);
223
224					if (_action === "add") {
225						$(element).addClass(sBlock + "--label-inside--up");
226					} else {
227						$(element).removeClass(sBlock + "--label-inside--up");
228					}
229				}
230			});
231		}
232
233	//  Mark active menus
234	if (!$.isEmptyObject($(`a[data-pageid="${active_pageid}"]`)[0])) {
235		setActiveMenus(active_pageid);
236	} else {
237		let aPages = active_pagelist.split(",");
238
239		aPages.shift();	// remove first "home"-entry
240		aPages.reverse();	// reverse order
241
242		for (page_id of aPages) {
243			if (!$.isEmptyObject($(`a[data-pageid="${page_id}"]`)[0])) {
244				setActiveMenus(page_id);
245
246				break;	// break loop if menu is found
247			}
248		}
249	}
250
251});
252
253// Extend jQuery by shuffle function
254$.fn.shuffle = function(callback) {
255	var allElems = this.get(),
256		getRandom = function(max) {
257			return Math.floor(Math.random() * max);
258		},
259		shuffled = $.map(allElems, function(){
260			var random = getRandom(allElems.length),
261				randEl = $(allElems[random]).clone(true)[0];
262			allElems.splice(random, 1);
263			return randEl;
264		});
265
266	this.each(function(i){
267		$(this).replaceWith($(shuffled[i]));
268	});
269
270	if(typeof callback !== "undefined") callback();
271};
272
273function loadModal(dataURL, dataClass, dataPOST){
274	let sInitClass = 'modal__popup',
275		$popup = $('.' + sInitClass);
276
277	$popup.attr('class', sInitClass);
278
279	if(typeof dataClass !== 'undefined') $popup.addClass(dataClass);
280	dataPOST = dataPOST || {};
281
282	if(dataURL.indexOf(window.location.host) !== -1 || dataURL.indexOf('youtube.cfm') !== -1){
283		$.ajax({
284			type:'POST',
285			data:dataPOST,
286			url:dataURL,
287			success:function(response){
288				$popup.html($.trim(response)).show();
289				$('.modal').show();
290			}
291		});
292	}else{
293		dataPOST.url = dataURL;
294
295		$.ajax({
296			type:'POST',
297			data:dataPOST,
298			url:siterelpath+'apps/services/iframe.cfm',
299			success:function(response){
300				$popup.html($.trim(response)).show();
301				$('.modal').show();
302			}
303		});
304	}
305
306}
307
308function closeModal(){
309	// iFrame Inhalt neu laden (allfällige Videos werden gestoppt.)
310	$('.modal__popup iframe').each(function(i,frame){
311		let $frame = $(frame);
312		if(typeof $frame.attr('src') !== 'undefined'){
313			let iframeLink = $frame.attr('src');
314			// Autoplay auf false setzen, sonst beginnt das Video von vorne!
315			iframeLink = iframeLink.replace('autoplay=1','autoplay=0');
316			iframeLink = iframeLink.replace('autoplay=true','autoplay=false');
317			$frame.attr('src','');
318			$frame.attr('src',iframeLink);
319		}
320	});
321
322	$('.modal__popup').hide().empty();
323	$('.modal').hide();
324}
325
326function setActiveMenus(_pageid) {
327	$(`a[data-pageid="${_pageid}"]`).each((_i, elLink) => {
328		$(elLink).removeClass("nav__link--inactive").addClass("nav__link--active");
329
330		$(elLink).parents(".nav__li").each((_i, elListItem) => {
331			$(elListItem).removeClass("nav__li--inactive").addClass("nav__li--active");
332			$(elListItem).find("> .nav__link").removeClass("nav__link--inactive").addClass("nav__link--active");
333		});
334	});
335}
336
337function is_touch_device(){
338	try {
339		document.createEvent("TouchEvent");
340		return true;
341	} catch (e) {
342		return false;
343	}
344}
345
346function msg(encoded_email){
347	var decoded_email = window.atob(encoded_email);
348	window.location.href="mailto:"+decoded_email;
349}

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.