PageSourceSearch

https://alien-project.org/contact.html

html alien-project.org collected 2026-09-25 20:22:05 UTC 26,052 bytes, 389 lines download raw bytes

1<!DOCTYPE HTML> <html prefix="og: https://ogp.me/ns#" class="no-js responsivelayout supportsbreakout" lang="de" data-zpdebug="false" data-ptr="" data-pagename="Contact"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="generator" content="Zeta Producer 16.7.0.0, ZP16X, 26.07.2023 06:52:54"> <meta name="robots" content="index, follow"> <title>Contact</title> <meta property="og:type" content="website"> <meta property="og:title" content="Contact"> <meta property="og:description" content=""> <meta property="og:url" content="http://www.alien-project.org/contact.html"> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:title" content="Contact"> <meta property="twitter:description" content=""> 
1<script>
2		document.documentElement.className = document.documentElement.className.replace(/no-js/g, 'js');
3	</script>
3 <link rel="stylesheet" href="assets/bundle.css?v=639242911654700358"> <link rel="stylesheet" href="assets/bundle-print.css?v=638304795789395093" media="print"> 
3<script src="assets/bundle.js?v=639242911654740366"></script>
3 <link rel="canonical" href="http://www.alien-project.org/contact.html"> <link rel="preload" href="assets/fonts/fontawesome-webfont.woff2?v=4.7.0" as="font" type="font/woff2" crossorigin=""> <style>
4.myButton {
5	box-shadow: 0px 10px 14px -7px #276873;
6	background:linear-gradient(to bottom, #599bb3 5%, #408c99 100%);
7	background-color:#599bb3;
8	border-radius:8px;
9	display:inline-block;
10	cursor:pointer;
11	color:#ffffff;
12	font-family:Arial;
13	font-size:20px;
14	font-weight:bold;
15	padding:13px 13px;
16	text-decoration:none;
17	text-shadow:0px 1px 0px #3d768a;
18}
19.myButton:hover {
20	background:linear-gradient(to bottom, #408c99 5%, #599bb3 100%);
21	background-color:#408c99;
22}
23.myButton:active {
24	position:relative;
25	top:1px;
26}
27
28/* CSS Button Style 2 by indzign.blogspot.com */
29.button2{float:left;list-style:none;text-align:center;width:95%;margin:10px;padding:2px;font-size:14px;clear:both}
30.button2 ul{margin:0;padding:0}
31.button2 li{display:inline;margin:5px;padding:0;list-style:none}
32.button2 li a.demo,.button2 li a.download{position:relative;padding:14px 48px 14px 16px;background:#f39c12;display:block;color:#fff!important;font-weight:700;font-size:14px;text-align:left;text-transform:uppercase;letter-spacing:.2px;border-radius:3px;box-shadow:0 1px rgba(0,0,0,0.1);line-height:normal;transition:all .3s;max-width:170px;margin:auto;overflow:hidden}
33.button2 li a.download{background:#3498db}
34.button2 li a.demo:hover,.button2 li a.download:hover{background:#666}
35.button2 li a.demo:active,.button2 li a.download:active{cursor:pointer}
36.button2 li a.demo:after,.button2 li a.download:after{content:'\F054';background:rgba(0,0,0,0.1);position:absolute;right:0;top:0;font-weight:normal;display:inline-block;margin:0 0 0 10px;color:#fff;padding:16px 24px;font-family:fontawesome;transition:all .3s}
37.button2 li:hover a.demo:after,.button2 li:hover a.download:after{background:transparent;-webkit-animation:bounceright .3s alternate ease infinite;animation:bounceright .3s alternate ease infinite}
38@-webkit-keyframes bounceright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(3px)}}
39@keyframes bounceright{from{transform:translateX(0)}to{transform:translateX(3px)}}
40
41</style> 
41<script>
42		// if after 1000ms we haven't got webfonts, show the user something, a FOUT is better than nothing
43		// http://kevindew.me/post/47052453532/a-fallback-for-when-google-web-font-loader-fails
44		setTimeout(function() {
45			// you can have the webfont.js cached but still have no classes fire and you will have a window.WebFontConfig object
46			if ( ! ("WebFont" in window)) {
47				// non wfl loader class name because their events could still fire
48				document.getElementsByTagName("html")[0].className += " wf-fail";
49			}
50		}, 1000);
51	
52		WebFontConfig = {
53			custom: { 
54				families: [ 'Roboto:300,400,700' ], 
55				urls: ['media/fonts/zp-webfonts.css?v=346658018']
56			}
57		};
58	</script>
58 
58<script src="assets/js/webfont/1.6.28/webfont-local.js"></script>
58 <link class="zpfaviconmeta" rel="shortcut icon" type="image/x-icon" href="assets/favicon.ico?v=2021070601"> </head> <body id="flat-responsive" class="notouch haswebdescription hasfixednav hasheader"> <a id="top"></a> <div id="header"> <div id="webdescription"> <div id="webtext"> <div id="webname"><a href="index.html">artificial life environment</a></div> </div> </div> <div id="nav"> <ul class="zpmarkactive default submenu touchhovermenu clickhovermenu out" data-trianglemode="true"><li class="logo hidden"><a href="index.html"></a></li><li class="zpnodefaults haschilds"><a href="index.html" data-isredirected="false">Home</a><ul><li class="zpnodefaults"><a href="objectives.html" data-isredirected="false">Objectives and visions</a></li><li class="zpnodefaults"><a href="getting-started.html" data-isredirected="false">Getting started</a></li><li class="zpnodefaults"><a href="participation.html" data-isredirected="false">Contributing to the project</a></li><li class="zpnodefaults"><a href="archive.html" data-isredirected="false">Archive</a></li></ul></li><li class="zpnodefaults"><a href="artworks.html" data-isredirected="false">Artworks</a></li><li class="zpnodefaults"><a href="downloads.html" data-isredirected="false">Downloads</a></li><li class="zpnodefaults"><a href="https://alien-project.gitbook.io/docs/" data-isredirected="true" target="_blank" rel="noopener">Documentation</a></li><li class="zpnodefaults"><a href="networks.html" data-isredirected="false">Networks</a></li><li class="zpnodefaults haschilds"><a class="active" href="contact.html" data-isredirected="false">Contact</a><ul><li class="zpnodefaults"><a href="about-me.html" data-isredirected="false">About me</a></li><li class="zpnodefaults"><a href="legal-notice.html" data-isredirected="false">Legal Notice</a></li><li class="zpnodefaults"><a href="privacy-protection.html" data-isredirected="false">Privacy Protection</a></li></ul></li><li class="overflownonly"><a href="#" id="mobilenavtoggle" class="tabletonly toggle" aria-label="Menu on/off">Menu</a></li></ul> 
58<script>
59$z(document).ready(function(){
60	// we find the active page's a-tag and then walk upwards the dom marking the respective parent li as active/open
61	$z('ul.zpmarkactive.default li a.active').parents('li').each(function(index){
62		var that = this;
63		// do not add open class to immediate parent li
64		if ( index > 0 ){
65			$z(that).addClass('open');
66		}
67		$z(that).addClass('active');
68		//$z(that).find('> a').addClass('active');
69	});
70	$z("ul.zpmarkactive.default").removeClass("zpmarkactive");
71	
72	/*
73	$z("ul.zpmarkactive.default li:has(a.active)").addClass("active");
74	$z("ul.zpmarkactive.default li.haschilds > a").addClass("haschilds");
75	$z("ul.zpmarkactive.default li.haschilds:has(a.active)").addClass("active");
76	$z("ul.zpmarkactive.default li.active > a").addClass("active");
77	
78	$z("ul.zpmarkactive.default").removeClass("zpmarkactive")
79	*/
80});
81</script>
81 </div> </div> <div id="slider" class="noprint"> <a id="a1769"></a> <div id="headerslider" class="flexslider"> <div class="flex-container"> <ul class="slides"> <li class="first"> </li> <li> <img loading="lazy" src="media/images/version3-large.png" width="2000" height="400" class="zpfocal" data-focus-x="50" data-focus-y="50" data-image-w="2000" data-image-h="400" alt=""> </li> <li> </li> <li> </li> <li> </li> <li> </li> </ul> </div> </div> 
81<script>
82		$z(document).ready(function() {
83			var useCssAnimation = false;
84			
85			var autoplay = true;
86			if ( $z("body").hasClass("zpreducemotion") && 'slide' !== 'fade' ){  // don't allow moving animations
87				autoplay = false;
88			}
89			
90			function initSlider(){
91				console.log("Num Headers: 6");
92				$z('#headerslider .flex-container').flexslider({
93					useCSS: useCssAnimation,
94					keyboard: true,
95					itemMargin: 0,
96					animation: 'slide',
97					controlsContainer: '#headerslider.flexslider',
98					slideshow: autoplay,
99					slideshowSpeed: 7000,
100					directionNav: true,touch: true,
101					controlNav: false,
102					randomize: false,
103					
104					pauseOnHover: true,
105					smoothHeight: false,
106					start: function(el){
107						focalImages();
108					},
109					prevText: "zur&#252;ck",
110					nextText: "weiter"
111				});
112				$z('#headerslider.flexslider').addClass("inited");
113			}
114			
115			if ( $z('#headerslider .flex-container ul.slides li img').length > 0 ){
116				// init flexslider after 1st image has loaded, so have dimensions as quickly as possible without having to wait too long on window loaded or such and can start right with doc ready
117				$z('#headerslider .flex-container ul.slides li img').first().one("load", initSlider).each(function() {
118					if(this.complete) $z(this).trigger('load');
119				}); // .each() is to work around a browser bugs which don't fire load() for cached images http://stackoverflow.com/a/3877079
120			}
121			else{
122				// also init flexslider if it doesn't contain images and is text only
123				initSlider();
124			}
125			
126			// make sure the slider is properly resized when the window is resized (400ms after window.resize ended)
127			$z('#headerslider .flex-container').on('resize',function(event){
128				// prevents slider.resize() from causing a windows.resize event again which looped
129				event.stopPropagation();
130			});
131			var sliderTimeout1769 = null;
132			$z(window).resize(function(event) {
133				clearTimeout(sliderTimeout1769);
134				sliderTimeout1769 = setTimeout(function() {
135					var slider = $z('#headerslider .flex-container').data('flexslider');   
136					debug.log("Resizing Slider: ", slider);
137					if ( slider ){  // if slider contains only one image, slider will be undefined
138						$z(slider).css('height', '');
139						slider.resize();
140					}
141					clearTimeout(sliderTimeout1769); 
142				}, 400);
143			});
144			
145			// activate links for individual slideshow
146			$z('#headerslider .flex-container ul.slides li[data-clickurl]').css("cursor","pointer");
147			$z('#headerslider .flex-container ul.slides li[data-clickurl]').click(function (event){
148				// Because this script captures clicks for a container, it will also fire when a regular link inside the container 
149				// is clicked. Therefore, we check below, if a regular link i.e. <a href="#"> was the target of the click.
150				// Depending on the browser used, event.target might not be available, but event.srcElement would…
151				var targ;
152				if (event.target){
153					targ = event.target;
154				}
155				else if (event.srcElement) {
156					targ = event.srcElement;
157				}
158				if (targ.nodeName == "A") {
159					// a regular link i.e. in a Caption was clicked. Return early, so the link's href doesn't get overridden
160					return;
161				}
162				
163				if ( $z(this).data("clicktarget") ){
164					window.open($z(this).data("clickurl"), $z(this).data("clicktarget"));
165				}
166				else{
167					window.location = $z(this).data("clickurl");
168				}
169				event.preventDefault;
170				return false;
171			});
172		});
173  	</script>
173 </div> <div id="content" class="main"> <div class="zparea zpgrid" data-numcolumns="" data-areaname="Standard" data-pageid="608"> <div id="container_40" class="zpContainer first zpBreakout " data-zpeleel="container" data-zpleid="40"> <div class="zpRow standard " data-row-id="394"> <div class="zpColumn odd zpColumnWidth1 c12 first last" style="" data-column-id="449"> <div class="zpColumnItem"> <div id="a1770" data-article-id="1770" data-zpleid="1770" class="articlearea zpwText"> <h2 style="text-align:left;" data-zpfieldname="headline">Your message</h2> </div> </div> </div> </div> <div class="zpRow standard " data-row-id="487"> <div class="zpColumn odd zpColumnWidth1 c12 first last" style="" data-column-id="575"> <div class="zpColumnItem"> <div id="a1981" data-article-id="1981" data-zpleid="1981" class="articlearea zpwText"> <p><span style="color: #a3c5e3">You can contact me with the form below.</span></p> </div> </div> </div> </div> <div class="zpRow standard " data-row-id="395"> <div class="zpColumn odd zpColumnWidth2 c8 first" style="" data-column-id="450"> <div class="zpColumnItem"> <div id="a1771" data-article-id="1771" data-zpleid="1771" class="articlearea zpwFormular"> <noscript> <div class="formvalidateerror" style="color: #fff; background-color: red; padding: 6px 12px;"> <p><strong>Um das Kontaktformular zu nutzen, aktivieren Sie bitte JavaScript!</strong></p> <p><strong>In order to use this form, you need to activate JavaScript!</strong></p> </div> </noscript> <form enctype="multipart/form-data" class="zp-form zp-editable zp14 autohidelabels zpgrid" data-numcolumns="12" data-usesmtp="no" id="form1771" name="form1771" action="assets/php/formmailer/SendEmail.php?sc" method="post"> <input type="hidden" name="f_receiver" value="r3Qrh6lo6VEMX/AFxH5jG3azMsmCDtnQ"> <input type="hidden" name="f_title" value="Nachricht über Kontaktformular"> <input type="hidden" name="f_success" value="http://www.alien-project.org/message-successfully-sent.html"> <input type="hidden" name="f_error" value="http://www.alien-project.org/your-message-could-not-been-sent.html"> <input type="hidden" name="f_id" value="1771"> <input type="hidden" name="f_alertPrefix" value="Please fill out the field which are highlighted in red:"> <input type="hidden" name="f_invalidEmailMsg" value="invalid e-mail address"> <input type="hidden" name="NAME1" id="NAME1" value="name"> <div class="resizablefield c12 fieldinnewline "> <label for="F1771_1" class="field">name</label> <input required="required" aria-required="true" class="typetext required" type="text" name="F1" id="F1771_1" placeholder="name" value="" style="width: 500px; "> </div> <input type="hidden" name="NAME2" id="NAME2" value="e-mail"> <div class="resizablefield c12 fieldinnewline "> <label for="F1771_2" class="field">e-mail</label> <input required="required" aria-required="true" class="typetext required" type="email" name="F2" id="F1771_2" placeholder="e-mail" value="" style="width: 500px; "> </div> <input type="hidden" name="NAME3" id="NAME3" value="message"> <div class="resizablefield c12 fieldinnewline "> <label for="F1771_3" class="field">message</label> <textarea class="" id="F1771_3" name="F3" placeholder="message" rows="10" style="width: 500px; " ></textarea> </div> <input type="text" name="url" id="url" value="" class="zpasfield" aria-label="Please ignore this field."> <input type="hidden" name="f_formurl" value="http://www.alien-project.org/contact.html"> <div class="formbuttons"> <input type="submit" class="button" value="Send"> </div> </form> 
173<script>
174				// if the browser doesn't support input type="date", use jQueryUI datepicker
175				if ( zp.html5support && !zp.html5support["date"] ){
176					// test if jqueryUI is loaded, and if not, load it
177					var mySrc = $z('script[src*="app.js"], script[src*="bundle.js"]').first().attr("src");
178					var jsRelativePath = mySrc.substr(0, mySrc.lastIndexOf("assets/")) + "assets/";
179					
180					if (!$z("link[href*='/js/jqueryui/jquery-ui-1.8.19.custom.css']").length){
181						// load jqueryUI if it is not already loaded
182						if (!$z('link[href*="/bundle.css"], link[href*="/styles.css"]').first().length){
183							$z('<link rel="stylesheet" type="text/css" href="' + jsRelativePath +'js/jqueryui/jquery-ui-1.8.19.custom.css" media="screen" />').appendTo("head");
184						}
185						else{
186							$z('link[href*="/bundle.css"], link[href*="/styles.css"]').first().after('<link rel="stylesheet" type="text/css" href="' + jsRelativePath +'js/jqueryui/jquery-ui-1.8.19.custom.css" media="screen" />');
187						}
188					}
189
190					if (!($z.ui) ) {
191						$z('<scr' + 'ipt src="' + jsRelativePath + 'js/jqueryui/jquery-ui-1.12.1.custom.min.js"></scr' + 'ipt>').appendTo("head");
192					}
193					// localize the datepicker to DE
194					var isGermanPage = $z('html')[0].lang.toLowerCase().substr(0,2) == "de";
195					if ( isGermanPage && !($z.datepicker.regional['de']) && !($z('head script[src*="/js/jqueryui/i18n/jquery.ui.datepicker-de.js"]').length) ) {
196							$z('<scr' + 'ipt src="' + jsRelativePath + 'js/jqueryui/i18n/jquery.ui.datepicker-de.js"></scr' + 'ipt>').appendTo("head");
197					}
198					// initialize date fields with datepicker
199					$z("form#form1771 input[type=date]").datepicker({
200						showButtonPanel: true,
201						changeMonth: true,
202						changeYear: true,
203						currentText: isGermanPage ? "Heute" : "Today",
204						closeText: isGermanPage ? "Schließen" : "Close"
205					});
206				}
207				// init random anti-spam qs
208				var f1771zpasq1 = 'Welche Farbe hat der Himmel?';
209				var f1771zpasq2 = 'Was ergibt 4+3?';
210				var f1771zpasq3 = 'Wie viele Enden hat die Wurst?';
211
212				var f1771zpasans1 = 'Grün; Rot; Blau'.split(";");
213				var f1771zpasans2 = '8; Sieben; 1'.split(";");
214				var f1771zpasans3 = 'Senf; Zwei; Biss'.split(";");
215				
216				var randQ = Math.floor(Math.random() * 3) + 1; 
217				$z('form#form1771 label#zpasq').html($z("form#form1771 label#zpasq").html() + window['f1771zpasq'+randQ]);
218				$z('form#form1771 input[name="zpasq"]').val(randQ);
219				var answOpts = "";
220				var zpasanswers = window['f1771zpasans'+randQ];
221				// https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
222				function shuffle(array) {
223				  let currentIndex = array.length,  randomIndex;
224				  // While there remain elements to shuffle.
225				  while (currentIndex != 0) {
226					// Pick a remaining element.
227					randomIndex = Math.floor(Math.random() * currentIndex);
228					currentIndex--;
229					// And swap it with the current element.
230					[array[currentIndex], array[randomIndex]] = [
231					  array[randomIndex], array[currentIndex]];
232				  }
233
234				  return array;
235				}
236				// randomize order of answers
237				shuffle(zpasanswers);
238				for ( var ans = 0; ans < zpasanswers.length; ++ans ) {
239					answOpts += '<input required="required" aria-required="true" class="required" type="radio" name="zpasans" id="zpasans_' + ans + '_1771" value="' + zpasanswers[ans] + '">\n';
240					answOpts += '<label class="default" for="zpasans_' + ans + '_1771">' + zpasanswers[ans] + '</label>\n';
241				}
242				$z( answOpts ).insertAfter( 'form#form1771 input[name="zpasq"]' );
243				// show warning if answer wasn't correct
244				if ( document.location.hash == "#antispam" ){
245					$z("form#form1771 #antispam").prepend('<div class="formvalidateerror" style="color: #fff; background-color: red; padding: 6px 12px; margin-left: 0; width: 100%; margin-bottom: 10px;"><p>Die nachfolgende Spamschutz-Frage muss korrekt beantwortet werden!</p></div>');
246					//$z("form#form1771 label[for='zpasq']").css("color", "red");
247					//$z("form#form1771 label[for='zpasq']").css("text-shadow", "1px 1px 0 #ffffff");
248				}
249				else{
250					$z("form#form1771 #antispam div.formvalidateerror").remove();
251					//$z("form#form1771 label[for='zpasq']").css("color", "");
252					//$z("form#form1771 label[for='zpasq']").css("text-shadow", "");
253				}
254			</script>
254 </div> </div> </div> <div class="zpColumn even zpColumnWidth2 c4 last" style="" data-column-id="574"> <div class="zpColumnItem"> <div id="a1980" data-article-id="1980" data-zpleid="1980" class="articlearea zpwHinweisbox"> <div class="zpSO-hint" style="padding: 8px 16px; background: transparent; border: 1px solid #0B2A4E; "> <h2 style="color: #A3C5E3; " data-zpfieldname="headline">Christian Heinemann</h2> <div style="color: #A3C5E3;"> <p>Rubensstraße 120<br>12157 Berlin<br>Germany</p> <p><a href="mailto:[email protected]"><span style="color: #a3c5e3">[email protected]</span></a></p> </div> </div> </div> </div> </div> </div> </div> <div id="container_102" class="zpContainer last zpBreakout " data-zpeleel="container" data-zpleid="102"> <div class="zpRow standard " data-row-id="593"> <div class="zpColumn odd zpColumnWidth1 c12 first last" style="" data-column-id="717"> <div class="clearx"></div> <div class="zpColumnItem"> <div id="a2137" data-article-id="2137" data-zpleid="2137" class="articlearea zpwTrennlinie zpSO-separator"> <hr class="zpSO-separator" style="display:block;border:none;height:1px;line-height:1px;color:#C4DAED;background-color:#C4DAED;margin-top:30px;margin-bottom:30px;"> </div> </div> </div> </div> </div> </div> </div> <div id="footer" class="container"> <div id="xmenu" class=""> <a class="xmenulink" href="index.html">Home</a> <a class="xmenulink" href="downloads.html">Downloads</a> <a class="xmenulink" href="contact.html">Contact</a> </div> <div id="copyright"> © 2026 artificial life environment </div> </div> <div id="totop" class="container noprint"> <a href="#top" class="zpSO-Uplink-Flat zpnolayoutlinkstyles" title="Nach oben"><span class="zp-sronly">Nach oben</span></a> </div> 
254<script>	
255		function setoverflown(s){
256			var retcode = false;
257			if ( $z("#nav").is(":hover") || ! $z("#nav > ul > li").length ){
258				// mouse is over nav, which opens submenues and might cause the overflow
259				// OR empty nav - needed because for IE an empty #nav == overflown()
260				return false;
261			}
262			
263			$z("#nav > ul").removeClass("overflown");
264			if ( $z("#nav:not(.on) > ul").overflown() ){
265				// nav is already overflown by 1st-Level Menu entries (too many entries)
266				$z("#nav > ul").addClass("overflown");
267				retcode = true;
268			}
269			else{
270				// on non touch devices, check if nav would be overflown horizontally if all submenues are visible (i.e. too many submenues expanding to the right)
271				$z("#nav > ul ul:not(.nocalcoverflow)").css("display", "block");
272				if ( $z("#nav:not(.on) > ul").overflown("x") ){
273					$z("#nav > ul").addClass("overflown");
274					retcode = true;
275				}
276				$z("#nav > ul ul:not(.nocalcoverflow)").css("display", "");
277				
278				// if the previous check didn't already match, check if one of the submenus is higher than the available space in the window because the nav is fixed and wouldn't scroll
279				if ( !retcode && $z("#nav.fixed").length ){
280					$z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", "block");
281					$z("#nav.fixed > ul ul:not(.nocalcoverflow)").each(function(){
282						var eltop = $z(this).offset().top - $(window).scrollTop(); // gets the effective top position relative to the window
283						if ( (eltop + $(this).innerHeight()) > $z(window).innerHeight() ){
284							// submenu doesn't fit on screen and would be cut off
285							$z("#nav.fixed > ul").addClass("overflown");
286							retcode = true;
287							$z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", "");
288							// exit the each loop early
289							return false;
290						}
291					});
292					$z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", "");
293				}
294			}
295			
296			// see if we need to scale to the logo to fit besides the mobile menu-button
297			var availspace = $z("#nav > ul").width() - $z("#nav > ul > li.overflownonly").width();
298			$z("#nav > ul > li.logo").css("max-width", availspace + "px");
299			
300			return retcode;
301		}
302		
303		function stickyNav(topoffset){
304			// make navigations menu sticky when scrolling the menu past the top of the window
305			var scrolltop = $z("body").scrollTop() || (document.documentElement && document.documentElement.scrollTop) || 0;
306			
307			if ( !$z("#nav ul ul:visible").length && scrolltop - topoffset >= 0){
308				$z("body").addClass("padded");
309				$z("#nav").addClass("fixed");
310			}
311			else{
312				$z("body").removeClass("padded");
313				$z("#nav").removeClass("fixed");
314			}
315			// with a little delay, check if the menu gets overflown (i.e. because we're also displaying the logo in the nav now
316			setTimeout(function(){setoverflown();}, 100);
317		}
318		// globals
319		var navOffset;
320		
321		$z(document).ready(function(){
322			// smooth scroll the layout specific go to top link
323			$z("a.zpSO-Uplink-Flat").click(function(e){
324				e.preventDefault();
325				if ( $z(this.hash).length ){
326					$z('html,body').animate({
327							scrollTop: $z(this.hash).offset().top - parseInt($z("body").css("padding-top"))
328					}, 500);
329					window.location.hash = this.hash;
330				}
331			});
332		
333			// switches the Mobile Navigation-Menu on/off, when "Menu" link is clicked.
334			$z("a#mobilenavtoggle").on("click", function(e){
335				e.preventDefault();
336				$z("#nav").toggleClass("on");
337				setoverflown();
338			});	
339			
340			setoverflown();
341			var resizeTimeout = null;
342			$z(window).resize(zpthrottle(100, function(event) {
343				var event = event || window.event;
344				if ( event && $z(event.target.nodeType).length == 0 ){// enable window.resize only for the window object (resizing elements might also trigger window.resize) which doesn't have a nodeType
345					setoverflown();
346				}
347			}));	
348			
349			if ( "false" == "false" && ("true" == "true" || "false" == "true") ){
350				navOffset = $z("#nav:not(.fixed)").offset().top;
351				setTimeout(function(){stickyNav(navOffset);}, 100);
352			}
353		});
354		
355		$z(window).on('load', function(){
356			setTimeout(function(){setoverflown();}, 500);
357			var navheight = 0;
358			if ( "false" == "false" ){
359				navheight = $z("#nav").outerHeight();
360			}
361			// pull anchors below fixed header into visible area
362			if ( location.hash != "" && $z(':target').length ) {
363				$z('html,body').animate({scrollTop: $z(':target').offset().top - navheight - 10 }, 600);
364			}
365			$z("a[href*='#']:not([href='#'])").not(".zpNoScroll").click(function () {
366				var target = $z(this).attr("href");
367				target = target.substring(target.indexOf("#"));
368				if ( $z(target).length ){
369					$z('html,body').animate({scrollTop: $z(target).offset().top - navheight - 10 }, 600);
370				}
371			});
372			
373			if ( "false" == "false" && ("true" == "true" || "false" == "true") ){
374				if ( $z("#nav:not(.fixed)").length ){
375					navOffset = $z("#nav:not(.fixed)").offset().top;
376				}
377				setTimeout(function(){stickyNav(navOffset);}, 500);
378				$z(window).scroll(zpthrottle(100, function(event) {
379					stickyNav(navOffset);
380				}));
381			}
382
383		});
384	</script>
384 
385<!--
386* Layout: Flat Responsive by StS
387* $Id: default.html 2023-03-02 17:23:19 +0100 Stefan S  ec42e40d01882b7ce32f3332ab0d932ac2717c1b $
388-->
389 </body> </html>

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.