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ü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.