{"id":2185,"date":"2016-12-09T15:38:15","date_gmt":"2016-12-09T13:38:15","guid":{"rendered":"http:\/\/wordpress.wvs-berlin.de\/?p=2185"},"modified":"2016-12-09T17:30:31","modified_gmt":"2016-12-09T15:30:31","slug":"9-12-2016","status":"publish","type":"post","link":"https:\/\/wordpress.wvs-berlin.de\/?p=2185","title":{"rendered":"9.12.2016"},"content":{"rendered":"<p>Heute vorletzte Mal in diesem Jahr. Erstmal keiner da. Angelo und Moritz wollten kommen. Angelo und Moritz sind da. Wir reden \u00fcber den Beweis vom Satz von Pythagoras. Angelo und Moritz reden \u00fcber irgendwas mit Prozessor Emulation (vom letzten Mal, Aufgabe die Michael mitgebracht hatte).<\/p>\n<p>Julian ist auch da. Sie machen was mit HP-Plotter.<\/p>\n<p>Den Schnee mit Parallaxeneffekt angepasst (kleinere Flocken langsamer):<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<pre style=\"font-size: .7em;\">&lt;?php\r\nerror_reporting(E_NOTICE|E_ALL);\r\n\/\/echo $_SERVER[\"REMOTE_ADDR\"];\r\n\/\/ echo $_SERVER[\"HTTP_HOST\"];\r\n\r\n\/\/~ call_user_func\r\n\/\/~ function_exists\r\n\r\n\r\nclass Request\r\n{\r\npublic static $queries = array (\r\n\"reset\",\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"addClient\",\r\n\"startStatus\",\r\n\"stopStatus\",\r\n\"checkMyTurn\",\r\n\"checkIps\",\r\n\"finished\",\r\n\"admin\"\r\n);\r\n\r\npublic static function check()\u00a0 {\r\nforeach(self::$queries as $query) {\r\nif (isset($_GET[$query])) {\r\n$callMethod = array(\"Data\",$query);\r\nif (is_callable($callMethod)) {\r\ncall_user_func($callMethod);\r\n}\r\nreturn $query;\r\n}\r\n}\r\nData::addClient();\r\nreturn \"showPage\";\r\n}\r\n}\r\n\r\nabstract class SerializedData\r\n{\r\nprotected function _write($filename, $data) {\r\nfile_put_contents($filename, serialize($data));\r\n}\r\n\r\nprotected function _read($filename) {\r\nreturn unserialize(file_get_contents($filename));\r\n}\r\n\r\n}\r\n\r\nclass Data extends SerializedData\r\n{\r\nprivate static $_ipsStorageFileName = \"xmas_ips.ser\";\r\nprivate static $_statusFileName = \"xmas_status.ser\";\r\n\r\n\r\nprivate function _writeIps($data) {\r\nself::_write(self::$_ipsStorageFileName, $data);\r\n}\r\n\r\nprivate static function _getNextIp($finishedIp) {\r\n$currentClients = self::readIps();\r\nforeach($currentClients as $key =&gt; $clientIp) {\r\nif ($finishedIp == $clientIp) {\r\n$nextKey = $key + 1;\r\nif ($nextKey == count($currentClients)) {\r\n$nextKey = 0;\r\n}\r\nreturn $currentClients[$nextKey];\r\n}\r\n}\r\n}\r\n\r\nprivate static function _resetStatus() {\r\nself::_write(self::$_statusFileName,array());\r\n}\r\n\r\nprivate static function _setStatus($ip, $startOrStop = \"stop\") {\r\n$ipStatus = self::_read(self::$_statusFileName);\r\n$ipStatus[$ip] = $startOrStop;\r\nself::_write(self::$_statusFileName,$ipStatus);\r\n}\r\n\r\npublic static function reset() {\r\nself::_writeIps(array());\r\nself::_resetStatus();\r\n}\r\n\r\npublic static function readIps() {\r\nreturn self::_read(self::$_ipsStorageFileName);\r\n}\r\n\r\npublic function addClient() {\r\n$ip = $_SERVER[\"REMOTE_ADDR\"];\r\n$currentClients = self::readIps();\r\n$currentClients[] = $ip;\r\n$currentClients = array_unique($currentClients);\r\nself::_writeIps($currentClients);\r\nself::_setStatus ($ip, \"stop\");\r\n}\r\n\r\npublic static function startStatus() {\r\n$currentClients = self::readIps();\r\nself::_setStatus($currentClients[0], \"start\");\r\n}\r\n\r\npublic static function stopStatus() {\r\n$currentClients = self::readIps();\r\nforeach($currentClients as $ip) {\r\nself::_setStatus($ip, \"stop\");\r\n}\r\n}\r\n\r\n\r\npublic static function getStatus($ip) {\r\n$ipStatus = self::_read(self::$_statusFileName);\r\nreturn $ipStatus[$ip];\r\n}\r\n\r\npublic static function getAllStatus() {\r\n$ipStatus = self::_read(self::$_statusFileName);\r\nreturn $ipStatus;\r\n}\r\n\r\npublic static function finished()\u00a0 {\r\n$finishedIp = $_SERVER[\"REMOTE_ADDR\"];\r\nself::_setStatus($finishedIp, \"stop\");\r\nself::_setStatus(self::_getNextIp($finishedIp), \"start\");\r\n}\r\n\r\n}\r\n?&gt;\r\n&lt;?php switch (Request::check()):\r\ncase \"admin\":?&gt;\r\n&lt;h1&gt;Admin&lt;\/h1&gt;\r\n&lt;ul&gt;\r\n&lt;?php foreach(Request::$queries as $query):?&gt;\r\n&lt;?php if(in_array($query, array(\"admin\",\"finished\"))) {continue;}?&gt;\r\n&lt;li&gt;&lt;a href=\"?&lt;?=$query?&gt;\"&gt;&lt;?=$query?&gt;&lt;\/a&gt;&lt;\/li&gt;\r\n&lt;?php endforeach?&gt;\r\n&lt;div style=\"border:1px solid black;margin-top:3em\" id=\"output\"&gt;\r\nhier kommt was rein\r\n&lt;\/div&gt;\r\n&lt;script&gt;\r\noutputDiv = document.getElementById(\"output\");\r\nmyAnchors = document.getElementsByTagName(\"a\");\r\nurl = new Array;\r\nfor (i=0; i &lt; myAnchors.length; i++) {\r\nurl[i] = myAnchors[i].href;\r\nmyAnchors[i].onclick = function() {\r\nvar myAjax=new XMLHttpRequest();\r\nmyAjax.open(\"GET\",this.href,true);\r\nmyAjax.onreadystatechange=function()\u00a0 {\r\nif (myAjax.readyState==4 &amp;&amp; myAjax.status==200)\u00a0\u00a0\u00a0\u00a0 {\r\noutputDiv.innerHTML = myAjax.responseText;\r\n}\r\n}\r\nmyAjax.send(null);\r\nreturn false;\r\n}\r\n}\r\n&lt;\/script&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"reset\":?&gt;\r\n&lt;h1&gt;resetialisierung gestartet&lt;\/h1&gt;\r\n&lt;h2&gt; zum Beweis Ausgabe der Speicherdatei Ips:&lt;\/h2&gt;\r\n&lt;pre&gt;\r\n&lt;?php var_dump(Data::readIps());?&gt;\r\n&lt;\/pre&gt;\r\n&lt;pre&gt;\r\n&lt;h2&gt;zum Beweis Ausgabe der Speicherdatei Status:&lt;\/h2&gt;\r\n&lt;pre&gt;\r\n&lt;?php var_dump(Data::getAllStatus());?&gt;\r\n&lt;\/pre&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"addClient\":?&gt;\r\n&lt;h1&gt;&lt;?=htmlentities(\"Client hinzugef\u00fcgt\");?&gt;&lt;\/h1&gt;\r\n&lt;p&gt; zum Beweis Ausgabe der Speicherdatei:&lt;\/p&gt;\r\n&lt;pre&gt;\r\n&lt;?php var_dump(Data::readIps());?&gt;\r\n&lt;\/pre&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"checkMyTurn\":?&gt;&lt;?php echo Data::getStatus($_SERVER[\"REMOTE_ADDR\"])?&gt;&lt;?php break;?&gt;\r\n&lt;?php case \"startStatus\":?&gt;\r\n&lt;?php case \"checkIps\":?&gt;\r\n&lt;h1&gt;&lt;?=htmlentities(\"Programm l\u00e4uft\")?&gt;&lt;\/h1&gt;\r\n&lt;h2&gt;Angemeldete Client-Ips&lt;\/h2&gt;\r\n&lt;?php\r\n$statusPerIp = Data::getAllStatus();\r\n?&gt;\r\n&lt;table&gt;\r\n&lt;?php foreach(Data::readIps() as $ip):?&gt;\r\n&lt;tr&gt;&lt;td&gt;&lt;?=$ip?&gt;&lt;\/td&gt;&lt;td&gt;\r\n&lt;?=$statusPerIp[$ip]?&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;?php endforeach?&gt;\r\n&lt;pre&gt;\r\n&lt;?php var_dump(Data::readIps())?&gt;\r\n&lt;\/pre&gt;\r\n&lt;pre&gt;\r\n&lt;?php var_dump(Data::getAllStatus())?&gt;\r\n&lt;\/pre&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"stopStatus\":?&gt;\r\n&lt;h1&gt;Programm gestoppt&lt;\/h1&gt;\r\n&lt;pre&gt;\r\n&lt;?php var_dump(Data::getAllStatus())?&gt;\r\n&lt;\/pre&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"showPage\":?&gt;\r\n&lt;body style=\"padding:0;margin:0;background-color:#324;overflow:hidden\"&gt;\r\n&lt;img id=\"background\" src=\"gletschermond.jpg\" style=\"position:absolute;top:0px;left:0px;width:1024px;z-index=-1\"&gt;\r\n&lt;div id=\"imgdiv\" style=\"padding:0;margin:0;width:1022px;overflow:hidden;height:768px\"&gt;\r\n&lt;img id=\"weihnachtsmann\" style=\"position:absolute;right:-150px;top:300px;\" src=\"jens.png\"; width=\"150px\";&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\ndocument.getElementById(\"background\").style.width = screen.width +\"px\";\r\ndocument.getElementById(\"imgdiv\").style.width = (screen.width-2) +\"px\";\r\ndocument.getElementById(\"imgdiv\").style.height = (screen.height-2) +\"px\";\r\nmyImgStyle = document.getElementById(\"weihnachtsmann\").style;\r\nstartPosition = -screen.width +2;\/\/1022;\/\/(-1* screen.width) +50;\r\nstartPosition = -screen.width +2;\/\/1022;\/\/(-1* screen.width) +50;\r\nstartPosition = -150;\r\n\/\/1022;\/\/(-1* screen.width) +50;\r\n\/\/myImgStyle = document.getElementById(\"weihnachtsmann\").style.right = startPosition + \"px\";\r\ncurrentPosition = startPosition;\r\nendPosition = 260;\r\nendPosition = screen.width +150;\r\ntriggerPosition = endPosition - 150;\r\nstatus = \"stop\";\r\ntimeOut = 20;\r\ntimeOut = 20;\r\npixelsPerMove = 8;\r\npixelsPerMove = 15;\r\nfinished = 0;\r\nfinishedTold = 0;\r\n\/\/alert(screen.width);\r\nmove = function() {\r\nif (currentPosition &lt; endPosition) { \/\/&amp;&amp; status == \"start\"\r\nif (currentPosition &gt; triggerPosition &amp;&amp; finishedTold == 0) {\r\ntellFinished();\r\nfinishedTold = 1;\r\n}\r\nfinished = 0;\r\nmyImgStyle.right = currentPosition + \"px\";\r\ncurrentPosition += pixelsPerMove;\r\nsetTimeout(\"move()\",timeOut);\r\n} else {\r\ncurrentPosition = startPosition;\r\nmyImgStyle.right = currentPosition + \"px\";\r\nfinishedTold = 0;\r\ngetStatus();\r\nreturn;\r\n}\r\n}\r\ngetStatus = function() {\r\nvar startStopPage = \"laufen.js.php?checkMyTurn\";\r\nvar\u00a0\u00a0 \u00a0myAjax=new XMLHttpRequest();\r\nmyAjax.open(\"GET\",startStopPage,true);\r\nmyAjax.onreadystatechange=function()\u00a0 {\r\nif (myAjax.readyState==4 &amp;&amp; myAjax.status==200)\u00a0\u00a0\u00a0\u00a0 {\r\n\/\/~ alert(\"Testausgabe: \"+ myAjax.responseText);\r\n\/\/~ alert(\"Testausgabe finished: \"+ finished);\r\n\/\/~ alert(typeof(myAjax.responseText.toString()));\r\n\/\/~ alert(\"myAjax.responseText.toString(): \"+ myAjax.responseText.toString());\r\n\/\/~ alert(typeof(\"stop\"));\r\n\/\/~ alert(\"start\" == myAjax.responseText.toString());\r\nif (\"start\" == myAjax.responseText.toString() &amp;&amp; finished == 0) {\r\nstatus = \"start\";\r\nmove();\r\n} else {\r\nstatus = \"stop\";\r\nsetTimeout(\"getStatus()\",1000);\r\n}\r\n}\r\n}\r\nmyAjax.send(null);\r\n}\r\ntellFinished = function() {\r\nvar finishedPage = \"laufen.js.php?finished\";\r\nvar\u00a0\u00a0 \u00a0myAjax=new XMLHttpRequest();\r\nmyAjax.open(\"GET\",finishedPage,true);\r\nmyAjax.onreadystatechange=function()\u00a0 {\r\nif (myAjax.readyState==4 &amp;&amp; myAjax.status==200)\u00a0\u00a0\u00a0\u00a0 {\r\nif (finished == 0) {\r\n\/\/alert(\"finished sent to server\");\r\n\/\/finished = 1;\r\nstatus = \"stop\";\r\n}\r\nreturn;\r\n}\r\n}\r\nmyAjax.send(null);\r\n}\r\ngetStatus();\r\n\r\nwindow.onload = function() {\r\nDB=document.getElementsByTagName(\"body\")[0];\r\n\/\/\u00a0\u00a0 \u00a0DB.style.backgroundColor = \"#000\";\r\nmyFontSize = new Array;\r\nfor (i = 40; i&lt;screen.width;i += 60) {\r\nwindow[\"star\"+i]=document.createTextNode(\"*\");\r\nwindow[\"div\"+i]=document.createElement(\"div\");\r\nwindow[\"div\"+i].appendChild(window[\"star\"+i]);\r\nDB.appendChild(window[\"div\"+i]);\r\nwindow[\"div\"+i].style.color=\"#fff\";\r\nmyFontSize[i] = Math.ceil(Math.random()*40);\r\nmyFontSize[i] = Math.ceil(Math.random()*30) + 10;\r\nwindow[\"div\"+i].style.fontSize=myFontSize[i] + \"px\";\r\nwindow[\"div\"+i].style.position=\"absolute\";\r\nwindow[\"div\"+i].style.left=10 + i + \"px\";\r\nwindow[\"div\"+i].style.top=\"-\"+(myFontSize[i] + 40)+\"px\";\r\nwindow[\"y\"+i]=-myFontSize-40;\r\nwindow[\"x\"+i] = i;\r\nwindow[\"snow\"+i] = function (j) {\r\nfontSize = myFontSize[j];\r\n\/\/~ console.log(fontSize);\r\nfunctionCall = 'window[\"snow'+j+'\"]('+j+')';\r\nif (window[\"y\"+j]&lt;screen.height + 20) {\r\n\/\/~ window[\"y\"+j] += 3;\r\nwindow[\"y\"+j] += fontSize\/5;\r\nwindow[\"div\"+j].style.top = window[\"y\"+j] + \"px\";\r\nwindow[\"div\"+j].style.left = window[\"x\"+j] + 2*Math.sin(window[\"y\"+j]\/5) + \"px\";\r\nsetTimeout(functionCall,100);\r\n}\u00a0\u00a0 \u00a0else {\r\nwindow[\"y\"+j]= -myFontSize[j];\r\nsetTimeout(functionCall,100);\r\n}\r\n}\r\nfunctionCallNow = 'window[\"snow'+i+'\"]('+i+')';\r\nsetTimeout(functionCallNow,Math.random()*50000);\r\n}\r\n\/\/ der eine stern, schlechter code ...;\r\nstar=document.createTextNode(\"*\");\r\ndiv=document.createElement(\"div\");\r\ndiv.appendChild(star);\r\n\/\/\u00a0\u00a0 \u00a0DB.appendChild(div);\r\ndiv.style.position=\"absolute\";\r\ndiv.style.left=\"10px\";\r\ndiv.style.top=\"10px\";\r\ndiv.style.color = \"white\";\r\ny= -10;\r\nx = 10;\r\nsnow = function () {\r\nif (y&lt;screen.height + 20) {\r\ny += 1;\r\ndiv.style.top = y + \"px\";\r\ndiv.style.left = x + 2*Math.sin(y\/3) + \"px\";\r\nsetTimeout(\"snow()\",10);\r\n}\r\nelse {\r\ny= -10;\r\nsetTimeout(\"snow()\",10);\r\n}\r\n}\r\n\/\/snow();\r\nvoid(0);\r\n}\r\n&lt;\/script&gt;\r\n&lt;\/div&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php endswitch;?&gt;\r\n\r\n\r\nUnd mit gr\u00f6\u00dfenanpassung: \r\n\r\n&lt;?php\r\nerror_reporting(E_NOTICE|E_ALL);\r\n\/\/echo $_SERVER[\"REMOTE_ADDR\"];\r\n\/\/ echo $_SERVER[\"HTTP_HOST\"];\r\n\r\n\/\/~ call_user_func\r\n\/\/~ function_exists\r\n\r\n\r\nclass Request \r\n{\r\n\u00a0\u00a0 \u00a0public static $queries = array (\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"reset\",\r\n\/\/\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"addClient\",\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"startStatus\",\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"stopStatus\",\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"checkMyTurn\",\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"checkIps\",\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"finished\",\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"admin\"\r\n\u00a0\u00a0 \u00a0);\r\n\r\n\u00a0\u00a0 \u00a0public static function check()\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0foreach(self::$queries as $query) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (isset($_GET[$query])) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$callMethod = array(\"Data\",$query);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (is_callable($callMethod)) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0call_user_func($callMethod);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return $query;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0} \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0Data::addClient();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return \"showPage\";\r\n\u00a0\u00a0 \u00a0}\u00a0\u00a0 \u00a0\r\n}\r\n\r\nabstract class SerializedData \r\n{\r\n\u00a0\u00a0 \u00a0protected function _write($filename, $data) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0file_put_contents($filename, serialize($data));\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0protected function _read($filename) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return unserialize(file_get_contents($filename));\r\n\u00a0\u00a0 \u00a0}\r\n\r\n}\r\n\r\nclass Data extends SerializedData\r\n{\r\n\u00a0\u00a0 \u00a0private static $_ipsStorageFileName = \"xmas_ips.ser\";\r\n\u00a0\u00a0 \u00a0private static $_statusFileName = \"xmas_status.ser\";\r\n\r\n\r\n\u00a0\u00a0 \u00a0private function _writeIps($data) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_write(self::$_ipsStorageFileName, $data);\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0private static function _getNextIp($finishedIp) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$currentClients = self::readIps();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0foreach($currentClients as $key =&gt; $clientIp) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if ($finishedIp == $clientIp) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$nextKey = $key + 1;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if ($nextKey == count($currentClients)) { \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$nextKey = 0;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return $currentClients[$nextKey];\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0private static function _resetStatus() {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_write(self::$_statusFileName,array());\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0private static function _setStatus($ip, $startOrStop = \"stop\") {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$ipStatus = self::_read(self::$_statusFileName);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$ipStatus[$ip] = $startOrStop;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_write(self::$_statusFileName,$ipStatus);\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0public static function reset() {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_writeIps(array());\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_resetStatus();\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0public static function readIps() {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return self::_read(self::$_ipsStorageFileName);\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0public function addClient() {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$ip = $_SERVER[\"REMOTE_ADDR\"];\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$currentClients = self::readIps();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$currentClients[] = $ip;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$currentClients = array_unique($currentClients);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_writeIps($currentClients);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_setStatus ($ip, \"stop\");\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0public static function startStatus() {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$currentClients = self::readIps();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_setStatus($currentClients[0], \"start\");\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0public static function stopStatus() {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$currentClients = self::readIps();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0foreach($currentClients as $ip) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_setStatus($ip, \"stop\");\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\r\n\u00a0\u00a0 \u00a0public static function getStatus($ip) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$ipStatus = self::_read(self::$_statusFileName);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return $ipStatus[$ip];\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0public static function getAllStatus() {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$ipStatus = self::_read(self::$_statusFileName);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return $ipStatus;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0public static function finished()\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$finishedIp = $_SERVER[\"REMOTE_ADDR\"];\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_setStatus($finishedIp, \"stop\");\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0self::_setStatus(self::_getNextIp($finishedIp), \"start\");\r\n\u00a0\u00a0 \u00a0}\r\n\r\n}\r\n?&gt;\r\n&lt;?php switch (Request::check()): \r\ncase \"admin\":?&gt;\r\n\u00a0\u00a0 \u00a0&lt;h1&gt;Admin&lt;\/h1&gt;\r\n\u00a0\u00a0 \u00a0&lt;ul&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php foreach(Request::$queries as $query):?&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php if(in_array($query, array(\"admin\",\"finished\"))) {continue;}?&gt;\r\n\u00a0\u00a0 \u00a0&lt;li&gt;&lt;a href=\"?&lt;?=$query?&gt;\"&gt;&lt;?=$query?&gt;&lt;\/a&gt;&lt;\/li&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php endforeach?&gt;\r\n\u00a0\u00a0 \u00a0&lt;div style=\"border:1px solid black;margin-top:3em\" id=\"output\"&gt;\r\n\u00a0\u00a0 \u00a0hier kommt was rein\r\n\u00a0\u00a0 \u00a0&lt;\/div&gt;\r\n\u00a0\u00a0 \u00a0&lt;script&gt;\r\n\u00a0\u00a0 \u00a0outputDiv = document.getElementById(\"output\");\r\n\u00a0\u00a0 \u00a0myAnchors = document.getElementsByTagName(\"a\");\r\n\u00a0\u00a0 \u00a0url = new Array;\r\n\u00a0\u00a0 \u00a0for (i=0; i &lt; myAnchors.length; i++) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0url[i] = myAnchors[i].href;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myAnchors[i].onclick = function() {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0var myAjax=new XMLHttpRequest();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myAjax.open(\"GET\",this.href,true);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myAjax.onreadystatechange=function()\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (myAjax.readyState==4 &amp;&amp; myAjax.status==200)\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0outputDiv.innerHTML = myAjax.responseText;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myAjax.send(null);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return false;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0&lt;\/script&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"reset\":?&gt;\r\n\u00a0\u00a0 \u00a0&lt;h1&gt;resetialisierung gestartet&lt;\/h1&gt;\r\n\u00a0\u00a0 \u00a0&lt;h2&gt; zum Beweis Ausgabe der Speicherdatei Ips:&lt;\/h2&gt;\r\n\u00a0\u00a0 \u00a0&lt;pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php var_dump(Data::readIps());?&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;h2&gt;zum Beweis Ausgabe der Speicherdatei Status:&lt;\/h2&gt;\r\n\u00a0\u00a0 \u00a0&lt;pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php var_dump(Data::getAllStatus());?&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/pre&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"addClient\":?&gt;\r\n\u00a0\u00a0 \u00a0&lt;h1&gt;&lt;?=htmlentities(\"Client hinzugef\u00fcgt\");?&gt;&lt;\/h1&gt;\r\n\u00a0\u00a0 \u00a0&lt;p&gt; zum Beweis Ausgabe der Speicherdatei:&lt;\/p&gt;\r\n\u00a0\u00a0 \u00a0&lt;pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php var_dump(Data::readIps());?&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/pre&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"checkMyTurn\":?&gt;&lt;?php echo Data::getStatus($_SERVER[\"REMOTE_ADDR\"])?&gt;&lt;?php break;?&gt;\r\n&lt;?php case \"startStatus\":?&gt;\r\n&lt;?php case \"checkIps\":?&gt;\r\n\u00a0\u00a0 \u00a0&lt;h1&gt;&lt;?=htmlentities(\"Programm l\u00e4uft\")?&gt;&lt;\/h1&gt;\r\n\u00a0\u00a0 \u00a0&lt;h2&gt;Angemeldete Client-Ips&lt;\/h2&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php \r\n\u00a0\u00a0 \u00a0$statusPerIp = Data::getAllStatus();\r\n\u00a0\u00a0 \u00a0?&gt;\r\n\u00a0\u00a0 \u00a0&lt;table&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php foreach(Data::readIps() as $ip):?&gt;\r\n\u00a0\u00a0 \u00a0&lt;tr&gt;&lt;td&gt;&lt;?=$ip?&gt;&lt;\/td&gt;&lt;td&gt;\r\n\u00a0\u00a0 \u00a0&lt;?=$statusPerIp[$ip]?&gt;&lt;\/td&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/tr&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php endforeach?&gt;\r\n\u00a0\u00a0 \u00a0&lt;pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php var_dump(Data::readIps())?&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php var_dump(Data::getAllStatus())?&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/pre&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"stopStatus\":?&gt;\r\n\u00a0\u00a0 \u00a0&lt;h1&gt;Programm gestoppt&lt;\/h1&gt;\r\n\u00a0\u00a0 \u00a0&lt;pre&gt;\r\n\u00a0\u00a0 \u00a0&lt;?php var_dump(Data::getAllStatus())?&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/pre&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php case \"showPage\":?&gt;\r\n&lt;body style=\"padding:0;margin:0;background-color:#324;overflow:hidden\"&gt;\r\n&lt;img id=\"background\" src=\"gletschermond.jpg\" style=\"position:absolute;top:0px;left:0px;width:1024px;z-index=-1\"&gt;\r\n&lt;div id=\"imgdiv\" style=\"padding:0;margin:0;width:1022px;overflow:hidden;height:768px\"&gt;\r\n&lt;img id=\"weihnachtsmann\" style=\"position:absolute;right:-150px;top:300px;\" src=\"jens.png\"; width=\"150px\";&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\ndocument.getElementById(\"background\").style.width = screen.width +\"px\";\r\ndocument.getElementById(\"imgdiv\").style.width = (screen.width-2) +\"px\";\r\ndocument.getElementById(\"imgdiv\").style.height = (screen.height-2) +\"px\";\r\nmyImgStyle = document.getElementById(\"weihnachtsmann\").style;\r\nstartPosition = -screen.width +2;\/\/1022;\/\/(-1* screen.width) +50;\r\nstartPosition = -screen.width +2;\/\/1022;\/\/(-1* screen.width) +50;\r\nstartPosition = -150;\r\n\/\/1022;\/\/(-1* screen.width) +50;\r\n\/\/myImgStyle = document.getElementById(\"weihnachtsmann\").style.right = startPosition + \"px\";\r\ncurrentPosition = startPosition;\u00a0\u00a0 \u00a0\r\nendPosition = 260;\r\nendPosition = screen.width +150;\r\ntriggerPosition = endPosition - 150;\r\nstatus = \"stop\";\r\ntimeOut = 20;\r\ntimeOut = 20;\r\npixelsPerMove = 8;\r\npixelsPerMove = 15;\r\nfinished = 0; \r\nfinishedTold = 0;\r\n\/\/alert(screen.width);\r\nmove = function() {\r\n\u00a0\u00a0 \u00a0if (currentPosition &lt; endPosition) { \/\/&amp;&amp; status == \"start\"\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (currentPosition &gt; triggerPosition &amp;&amp; finishedTold == 0) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0tellFinished();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0finishedTold = 1;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0finished = 0; \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myImgStyle.right = currentPosition + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myImgStyle.top = 300 + 20*Math.sin(currentPosition\/100) + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myImgStyle.width = 150 + 20*Math.sin(currentPosition\/100) + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0currentPosition += pixelsPerMove;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0setTimeout(\"move()\",timeOut);\r\n\u00a0\u00a0 \u00a0} else {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0currentPosition = startPosition;\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myImgStyle.right = currentPosition + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myImgStyle.top = 300 + 100*Math.sin(currentPosition) + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0finishedTold = 0;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0getStatus();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return; \r\n\u00a0\u00a0 \u00a0}\r\n}\r\ngetStatus = function() {\r\nvar startStopPage = \"laufen.js.php?checkMyTurn\";\r\nvar\u00a0\u00a0 \u00a0myAjax=new XMLHttpRequest();\r\n\u00a0\u00a0 \u00a0myAjax.open(\"GET\",startStopPage,true);\r\n\u00a0\u00a0 \u00a0myAjax.onreadystatechange=function()\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (myAjax.readyState==4 &amp;&amp; myAjax.status==200)\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/~ alert(\"Testausgabe: \"+ myAjax.responseText);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/~ alert(\"Testausgabe finished: \"+ finished);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/~ alert(typeof(myAjax.responseText.toString()));\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/~ alert(\"myAjax.responseText.toString(): \"+ myAjax.responseText.toString());\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/~ alert(typeof(\"stop\"));\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/~ alert(\"start\" == myAjax.responseText.toString());\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (\"start\" == myAjax.responseText.toString() &amp;&amp; finished == 0) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0status = \"start\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0move();\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0} else {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0status = \"stop\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0setTimeout(\"getStatus()\",1000);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0myAjax.send(null);\r\n}\r\ntellFinished = function() {\r\n\u00a0\u00a0 \u00a0var finishedPage = \"laufen.js.php?finished\";\r\n\u00a0\u00a0 \u00a0var\u00a0\u00a0 \u00a0myAjax=new XMLHttpRequest();\r\n\u00a0\u00a0 \u00a0myAjax.open(\"GET\",finishedPage,true);\r\n\u00a0\u00a0 \u00a0myAjax.onreadystatechange=function()\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (myAjax.readyState==4 &amp;&amp; myAjax.status==200)\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (finished == 0) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/alert(\"finished sent to server\");\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/finished = 1;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0status = \"stop\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0myAjax.send(null);\r\n}\r\ngetStatus();\r\n\r\nwindow.onload = function() {\r\n\u00a0\u00a0 \u00a0DB=document.getElementsByTagName(\"body\")[0];\r\n\/\/\u00a0\u00a0 \u00a0DB.style.backgroundColor = \"#000\";\r\n\u00a0\u00a0 \u00a0myFontSize = new Array;\r\n\u00a0\u00a0 \u00a0for (i = 40; i&lt;screen.width;i += 60) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"star\"+i]=document.createTextNode(\"*\");\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+i]=document.createElement(\"div\");\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+i].appendChild(window[\"star\"+i]);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0DB.appendChild(window[\"div\"+i]);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+i].style.color=\"#fff\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/~ myFontSize[i] = Math.ceil(Math.random()*40);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0myFontSize[i] = Math.ceil(Math.random()*30) + 10;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+i].style.fontSize=myFontSize[i] + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+i].style.position=\"absolute\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+i].style.left=10 + i + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+i].style.top=\"-\"+(myFontSize[i] + 40)+\"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"y\"+i]=-myFontSize-40;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"x\"+i] = i;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"snow\"+i] = function (j) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0fontSize = myFontSize[j];\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0console.log(fontSize);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0functionCall = 'window[\"snow'+j+'\"]('+j+')';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (window[\"y\"+j]&lt;screen.height + 20) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/~ window[\"y\"+j] += 3;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"y\"+j] += fontSize\/20 ;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+j].style.top = window[\"y\"+j] + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"div\"+j].style.left = window[\"x\"+j] + 2*Math.sin(window[\"y\"+j]\/5) + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0setTimeout(functionCall,100);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\u00a0\u00a0 \u00a0else {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0window[\"y\"+j]= -myFontSize[j];\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0setTimeout(functionCall,100);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0functionCallNow = 'window[\"snow'+i+'\"]('+i+')';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0setTimeout(functionCallNow,Math.random()*50000);\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\/\/ der eine stern, schlechter code ...;\r\n\u00a0\u00a0 \u00a0star=document.createTextNode(\"*\");\r\n\u00a0\u00a0 \u00a0div=document.createElement(\"div\");\r\n\u00a0\u00a0 \u00a0div.appendChild(star);\r\n\/\/\u00a0\u00a0 \u00a0DB.appendChild(div);\r\n\u00a0\u00a0 \u00a0div.style.position=\"absolute\";\r\n\u00a0\u00a0 \u00a0div.style.left=\"10px\";\r\n\u00a0\u00a0 \u00a0div.style.top=\"10px\";\r\n\u00a0\u00a0 \u00a0div.style.color = \"white\";\r\n\u00a0\u00a0 \u00a0y= -10;\r\n\u00a0\u00a0 \u00a0x = 10;\r\n\u00a0\u00a0 \u00a0snow = function () {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (y&lt;screen.height + 20) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0y += 1;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0div.style.top = y + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0div.style.left = x + 2*Math.sin(y\/3) + \"px\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0setTimeout(\"snow()\",10);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0else {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0y= -10;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0setTimeout(\"snow()\",10);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\/\/snow();\r\nvoid(0);\r\n}\r\n&lt;\/script&gt;\r\n&lt;\/div&gt;\r\n&lt;?php break;?&gt;\r\n&lt;?php endswitch;?&gt;\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Heute vorletzte Mal in diesem Jahr. Erstmal keiner da. Angelo und Moritz wollten kommen. Angelo und Moritz sind da. Wir reden \u00fcber den Beweis vom Satz von Pythagoras. Angelo und Moritz reden \u00fcber irgendwas mit Prozessor Emulation (vom letzten Mal, Aufgabe die Michael mitgebracht hatte). Julian ist auch da. Sie machen was mit HP-Plotter. Den [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,17,3,7,8,39],"tags":[],"class_list":["post-2185","post","type-post","status-publish","format-standard","hentry","category-javascript","category-schulnetzwerk","category-tagesberichte","category-termine","category-tisch","category-wordpress"],"_links":{"self":[{"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=\/wp\/v2\/posts\/2185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2185"}],"version-history":[{"count":5,"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=\/wp\/v2\/posts\/2185\/revisions"}],"predecessor-version":[{"id":2190,"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=\/wp\/v2\/posts\/2185\/revisions\/2190"}],"wp:attachment":[{"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.wvs-berlin.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}