<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lotterfriends.net</title>
	<atom:link href="http://lotterfriends.net/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://lotterfriends.net</link>
	<description>Kaffee und Kekse!!</description>
	<lastBuildDate>Fri, 02 Mar 2012 14:00:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SpaceJS</title>
		<link>http://lotterfriends.net/index.php/2012/03/02/spacejs/</link>
		<comments>http://lotterfriends.net/index.php/2012/03/02/spacejs/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 14:00:05 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Objektorientiert]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[Spiel]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=535</guid>
		<description><![CDATA[Aufbauend auf dem Code vom letzen Post habe ich ein zweites JavaScript Spiel erstellt.
Dieses macht ein bisschen mehr her war aber immernoch relativ leicht umzusetzen. Ich habe noch ein bisschen das Problem einen guten Fluss von Bewegung und Zeitintervall hin zu bekommen deswegen kann es ab und zu  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lotterfriends.net/wp-content/uploads/2012/03/spaceJS_screenshot.png"><img class="alignright size-medium wp-image-537" title="spaceJS_screenshot" src="http://lotterfriends.net/wp-content/uploads/2012/03/spaceJS_screenshot-300x214.png" alt="" width="300" height="214" /></a>Aufbauend auf dem Code vom <a title="Objektorientiertes JavaScript Spiel" href="http://lotterfriends.net/index.php/2012/02/08/objektorientiertes-javascript-spiel/">letzen Post</a> habe ich ein zweites JavaScript Spiel erstellt.<br />
Dieses macht ein bisschen mehr her war aber immernoch relativ leicht umzusetzen. Ich habe noch ein bisschen das Problem einen guten Fluss von Bewegung und Zeitintervall hin zu bekommen deswegen kann es ab und zu ein bisschen ruckeln.<br />
Diesmal wird die Maus verwendet um die Spielfigur (Raumschiff) zu steuern. Für die Umsetzung habe ich nur 2 zusätzliche JavaScript Objekte benötigt, eins für die Kugeln (Bullet.js) und eins für die Explosion (Explosion.js). Bei einigen Positionsangaben war ich zu faul sie dynamisch zu ermitteln, also immer wenn ihr eine &#8220;Magic Number&#8221; im Code entdeckt ist es ein Abstand von oben/unten/links. <img src='http://lotterfriends.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Da der Code dem Ablauf und Aufbau des anderen Spiels gleicht, verzichte ich hier mal auf eine Erklärung, falls ihr aber noch ein paar Fragen habt immer raus damit.</p>
<p>Wie immer dürft ihr das Spiel gerne runterladen und verändern und erweitern. Ich würde mich auch freuen wenn ihr mir ein Kommentar schreibt wie viele Abschüsse ihr gelandet und welches Level ihr erreicht habt.</p>
<h1><a href="http://www.lotterfriends.net/beta/spaceJS/" target="_blank">spielen</a> / <a href="http://lotterfriends.net/wp-content/uploads/2012/03/spaceJS.zip" target="_blank">runterladen</a></h1>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2012/03/02/spacejs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Objektorientiertes JavaScript Spiel</title>
		<link>http://lotterfriends.net/index.php/2012/02/08/objektorientiertes-javascript-spiel/</link>
		<comments>http://lotterfriends.net/index.php/2012/02/08/objektorientiertes-javascript-spiel/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 19:50:32 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Objektorientiert]]></category>
		<category><![CDATA[Spiel]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=514</guid>
		<description><![CDATA[Dieses kleine Spiel soll mit einfachen Mittel zeigen das man auch in JavaScript gutlesbaren, objektorientierten Code schreiben kann.
Als Unterstützung verwende ich die jQuery Bibilothekt um mir das arbeiten mit dem DOM und das Positionieren zu erleichtern.
Für das ganze Spiel werden nur 4 Objekte  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lotterfriends.net/beta/BarrierGame/" target="_blank">Dieses kleine Spiel</a> soll mit einfachen Mittel zeigen das man auch in JavaScript gutlesbaren, objektorientierten Code schreiben kann.</p>
<p>Als Unterstützung verwende ich die <a href="http://jquery.com" target="_blank">jQuery Bibilothekt</a> um mir das arbeiten mit dem DOM und das Positionieren zu erleichtern.</p>
<p>Für das ganze Spiel werden nur 4 Objekte benötigt, wobei eines nur ein Containerobjekt für Tastencode-Zuweisungen ist. Ich habe für alle Objekte eine eigene Datei erstellt um eine gute Lesbarkeit zu erreichen. Immer wenn die Datei ein JavaScript-Objekt repräsentiert schreibe ich den Dateiname groß.</p>
<p>Unser Startpunkt ist die Datei Game.js. Als Erstes wird für jedes Element mit der Klasse &#8220;.game&#8221; eine Game-Objekt erzeugt, dadurch werden auch die im Konstruktor definierten Variablen zugewiesen und Methoden ausgeführt. Ich initialisiere einen KeyListener um auf Tastatureingaben zu reagieren. In der Datei &#8220;util.js&#8221; ist das Containerobjekt mit den Tastencode-Zuweisungen.</p>
<p>In der Methode &#8220;run()&#8221; wird das Spiel gestartet. Mit der setInerval Funktion des Window-Objekts erreichen wir eine dauerhafte Ausführung unseres Spiels. In jedem Durchlauf können wir die Hindernisse bewegen, Kollision zwischen Spieler und Gegenständen feststellen und gegeben Falls darauf reagieren.</p>
<p>Im Konstuktor des Game-Objektes wird außerdem für jedes Hinderniss und den Spieler jeweils Objekte erstellt. Diese sind dem Game-Objekt bekannt um in der &#8220;run()&#8221;<br />
Methode mit ihnen zu arbeiten.</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function() {

	$('.game').each(function() {
		new Game($(this));
	});

});

function Game($game) {
	this.$board =  $game.find('.board');
	this.speed = 10;
	this.pause = false;
	this.gameOver = false;
	this.player = new Player(this.$board);
	this.$text = $game.find(&quot;.text&quot;);
	this.barriers = this.initBarrier();
	this.initKeyListener();
	this.run();
}

Game.prototype.run = function() {
	var game = this;
	var $player = game.player.$player;

	window.setInterval(function() {

		if (game.gameOver || game.pause) {
			return;
		}

		$.each(game.barriers, function(i) {

			this.move();

			if ($player.collidesWith(this.$barrier).length) {
				game.gameOver = true;
				game.$text.text(&quot;GAME OVER!&quot;);
			}

			if ($player.offset().top &gt; (game.$board.height() + $player.height())){
				game.pause = true;
				game.$text.text(&quot;WIN!&quot;);
			}

		});

	}, game.speed);
};

Game.prototype.initKeyListener = function() {
	var game = this;
	$(window).bind('keydown', function(e) {
		switch (e.keyCode) {

			// Reset
			case Keys.ESC:
				game.player.reset();
				game.pause = false;
				game.gameOver = false;
				game.$text.text(&quot;&quot;);
				break;

			// Pause
			case Keys.SPACE:
				game.pause = !game.pause;
				break;

			// Spieler zurücksetzen
			case Keys.POS1:
				if (!game.pause &amp;&amp; !game.gameOver) game.player.reset();
				break;

	    	case Keys.LEFT:
	    		if (!game.pause &amp;&amp; !game.gameOver) game.player.moveLeft();
	    		break;

	    	case Keys.UP:
	    		if (!game.pause &amp;&amp; !game.gameOver) game.player.moveUp();
	    		break;

	    	case Keys.RIGHT:
	    		if (!game.pause &amp;&amp; !game.gameOver) game.player.moveRight();
	    		break;

	    	case Keys.DOWN:
	    		if (!game.pause &amp;&amp; !game.gameOver) game.player.moveDown();
	    		break;

	    	default:
	    		break;
		}
	});
};

Game.prototype.initBarrier = function() {
	var $board = this.$board;
	var barriers = [];
	$board.find('.barrier').each(function(){
		barriers.push(new Barrier($board, $(this)));
	});
	return barriers;
};
</pre>
<p>Das Player-Objekt wird lediglich vom KeyListener angesprochen. Je nach Tastatureingabe wird das enthaltene HTML bzw. jQuery Objekt bewegt.</p>
<pre class="brush: jscript; title: ; notranslate">
function Player($board) {
	var p = this;
	p.speed = 5;
	p.$board = $board;
	p.$player = p.$board.find('.player:eq(0)');
}

Player.prototype.reset = function() {
	this.$player.css(&quot;margin&quot;,&quot;0&quot;);
};

Player.prototype.moveUp = function() {
	var p = this;
	if (p.$player.offset().top &gt; p.$board.offset().top) {
		p.$player.css(&quot;margin-top&quot;,&quot;-=&quot; + p.speed + &quot;px&quot;);
	}
};

Player.prototype.moveDown = function() {
	var p = this;
	if (p.$player.offset().top &lt; (p.$board.height() + p.$player.height())) {
		p.$player.css(&quot;margin-top&quot;,&quot;+=&quot; + p.speed + &quot;px&quot;);
	}
};

Player.prototype.moveLeft = function() {
	var p = this;
	if (p.$player.offset().left &gt; p.$board.offset().left) {
		p.$player.css(&quot;margin-left&quot;,&quot;-=&quot; + p.speed + &quot;px&quot;);
	}
};

Player.prototype.moveRight = function() {
	var p = this;
	if (p.$player.offset().left - p.speed &lt; p.$board.width()) {
		p.$player.css(&quot;margin-left&quot;,&quot;+=&quot; + p.speed + &quot;px&quot;);
	}
};
</pre>
<p>Die &#8220;move()&#8221; Methode des Barrier Objektes wird in jedem Durchlauf der &#8220;run()&#8221; Methode aufgerufen, dadurch bewegt es sich automatisch und wird so &#8220;animiert&#8221;.</p>
<pre class="brush: jscript; title: ; notranslate">
function Barrier($board, $barrier) {
	var b = this;
	b.$board = $board;
	b.$barrier = $barrier;
	b.moveLeft = false;
	b.sign = &quot;+&quot;;
	b.range = 1;
}

Barrier.prototype.move = function(){
	var b = this;

	// Move left
	if (b.nachLinks || (b.$barrier.offset().left + b.$board.position().left &gt;= b.$board.width())) {
		b.sign = &quot;-&quot;;
		b.nachLinks = true;
	}

	// Move right
	if (b.$barrier.offset().left &lt;= b.$board.offset().left) {
		b.sign = &quot;+&quot;;
		b.nachLinks = false;
	}

	b.$barrier.css(&quot;margin-left&quot;, b.sign + &quot;=&quot; + b.range + &quot;px&quot;);

};
</pre>
<p>Hier könnt ihr meine Sourcen Downloaden um sie euch genauer anzusehen und vielleicht selber noch ein bisschen damit rum zu spielen.</p>
<h3><a href="http://lotterfriends.net/wp-content/uploads/2012/02/BarrierGame.zip">Download</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2012/02/08/objektorientiertes-javascript-spiel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>dü dü</title>
		<link>http://lotterfriends.net/index.php/2011/08/16/du-du/</link>
		<comments>http://lotterfriends.net/index.php/2011/08/16/du-du/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 19:45:11 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[zelda]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=475</guid>
		<description><![CDATA[Ich hab alles mal ein bisschen wieder auf einen aktuellen Stand gebracht.
Hier noch ein cooles nerdiges Video aus den tiefen des Netzes  

]]></description>
			<content:encoded><![CDATA[<p>Ich hab alles mal ein bisschen wieder auf einen aktuellen Stand gebracht.</p>
<p>Hier noch ein cooles nerdiges Video aus den tiefen des Netzes <img src='http://lotterfriends.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><object width="560" height="349" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/ENjmYTB1Ee0?version=3&amp;hl=de_DE&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed width="560" height="349" type="application/x-shockwave-flash" src="http://www.youtube-nocookie.com/v/ENjmYTB1Ee0?version=3&amp;hl=de_DE&amp;rel=0" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2011/08/16/du-du/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Snippet/Javascript] Div mitscrollen</title>
		<link>http://lotterfriends.net/index.php/2011/06/09/snippetjavascript-div-mitscrollen/</link>
		<comments>http://lotterfriends.net/index.php/2011/06/09/snippetjavascript-div-mitscrollen/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 15:25:10 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=464</guid>
		<description><![CDATA[Hier mal wieder ein Mini Snippet zu JavaScript. Mit jQuery ist es ziemlich einfach Scroll-Eigenschaften
auf ein anderes Element zu übertragen. Wenn also das obere Div gescrollt wird, scrollt das untere
automatisch mit. Anbei der Quelltext und hier eine Livedemo.
&#160;
]]></description>
			<content:encoded><![CDATA[<p>Hier mal wieder ein Mini Snippet zu JavaScript. Mit jQuery ist es ziemlich einfach Scroll-Eigenschaften</p>
<p>auf ein anderes Element zu übertragen. Wenn also das obere Div gescrollt wird, scrollt das untere</p>
<p>automatisch mit. Anbei der Quelltext und <a href="http://lotterfriends.net/wp-content/uploads/2011/06/test.html">hier</a> eine Livedemo.</p>
<p>&nbsp;</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
 &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;en&quot; xml:lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;title&gt;test&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;style type='text/css'&gt;
div { font-size:200px; width:200px; height:100px; white-space:nowrap; overflow:scroll }
div + div { overflow:hidden }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;div1&quot;&gt;test test test test test test&lt;/div&gt;
&lt;div id=&quot;div2&quot;&gt;test test test test test test&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
  $('#div1').scroll(function() {
    $('#div2').scrollLeft(this.scrollLeft);
    $('#div2').scrollTop(this.scrollTop);
  });
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2011/06/09/snippetjavascript-div-mitscrollen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stirb</title>
		<link>http://lotterfriends.net/index.php/2011/03/27/stirb/</link>
		<comments>http://lotterfriends.net/index.php/2011/03/27/stirb/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 20:40:16 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[Youtube]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=459</guid>
		<description><![CDATA[
(via Amy an Pink)
]]></description>
			<content:encoded><![CDATA[<p><object style="height: 390px; width: 640px;" width="640" height="390" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/gJ6APKIjFQY?version=3" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><embed style="height: 390px; width: 640px;" width="640" height="390" type="application/x-shockwave-flash" src="http://www.youtube.com/v/gJ6APKIjFQY?version=3" allowFullScreen="true" allowScriptAccess="always" allowfullscreen="true" allowscriptaccess="always" /></object></p>
<p>(via <a href="http://www.amypink.com/2011/03/game-deaths/">Amy an Pink</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2011/03/27/stirb/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Antrag auf Wehrdienstbefreiung</title>
		<link>http://lotterfriends.net/index.php/2010/11/07/antrag-auf-wehrdienstbefreiung/</link>
		<comments>http://lotterfriends.net/index.php/2010/11/07/antrag-auf-wehrdienstbefreiung/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 16:11:15 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Leben]]></category>
		<category><![CDATA[Antrag]]></category>
		<category><![CDATA[Vorlage]]></category>
		<category><![CDATA[Wehrdienstbefreiung]]></category>
		<category><![CDATA[Wehrdienstgesetz]]></category>
		<category><![CDATA[Wehrdienstverweigerung]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=437</guid>
		<description><![CDATA[Falls ihr zwei ältere Brüder habt, die einen nach dem deutschen Wehrpflichtgesetzes angerechnet Dienst, geleistet haben, könnt ihr als dritter Sohn eine Wehrdienstbefreiung beantragen.
Ich habe einen solchen  Antrag gestellt, als mir die Einladung zur Musterung ins Haus geflattert ist. Ihr könnt  [...]]]></description>
			<content:encoded><![CDATA[<p>Falls ihr zwei ältere Brüder habt, die einen nach dem deutschen Wehrpflichtgesetzes angerechnet Dienst, geleistet haben, könnt ihr als dritter Sohn eine Wehrdienstbefreiung beantragen.</p>
<p>Ich habe einen solchen  Antrag gestellt, als mir die Einladung zur Musterung ins Haus geflattert ist. Ihr könnt ihn aber auch schon vorher z.B. bei eurer Erfassung stellen.</p>
<p>Mein Antrag wurde ohne Murren angenommen und ich empfehle jedem dritten Sohn es mir gleich zu tun. Wichtig ist das der Dienst <strong>komplett </strong>abgeleistet wurden. Üblich sind z.B. Wehr- oder Zivildienst. Im <a href="http://www.gesetze-im-internet.de/wehrpflg/__11.html">im Gesetz</a> kann genau nachgelesen werden welche Dienste anerkannt wird.</p>
<p>An euer Kreiswehrersatzamt muss geschickt werden:</p>
<ul>
<li>der <strong>Antrag</strong> in Form eines Formellen Schreibens</li>
<li>die <strong>Bescheinigungen</strong>, das eure Brüder einen Dienst geleistet haben (Wehrdienstzeitbescheinigung bei Wehrdienst und Dienstzeitbescheinigung bei Zivildienst)</li>
<li>die <strong>Abstammungsurkunden</strong> der drei betreffenden Personen</li>
</ul>
<p>Das ganze solltet ihr als Einschreiben verschicken! Falls eine Bescheinigung verloren gegangen ist kann sie bei der entsprechenden Behörde neu angefordert werden.</p>
<p>Für das schreiben könnt ihr gerne meine Vorlage verwenden:</p>
<p><a href="http://lotterfriends.net/wp-content/uploads/2010/10/antrag_auf_wehrdienstbefreiung.doc">Antrag auf Wehrdienstbefreiung</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2010/11/07/antrag-auf-wehrdienstbefreiung/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Snippet/Javascript] divAusblenden – Animation</title>
		<link>http://lotterfriends.net/index.php/2010/11/07/snippetjavascript-divausblenden-animation/</link>
		<comments>http://lotterfriends.net/index.php/2010/11/07/snippetjavascript-divausblenden-animation/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 14:59:35 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[dhtml]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[ohne Framework]]></category>
		<category><![CDATA[ohne jQuery]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=447</guid>
		<description><![CDATA[Hier ein kleines Beispiel wie &#8220;Animation&#8221; ohne ein Javascript Framework realisieren werden kann.
In diesem Fall wird ein Div nach 3 Sekunden immer kleiner und dann ausgeblendet.
Das ganze passiert rekursiv. 
]]></description>
			<content:encoded><![CDATA[<p>Hier ein kleines Beispiel wie &#8220;Animation&#8221; ohne ein Javascript Framework realisieren werden kann.<br />
In diesem Fall wird ein Div nach 3 Sekunden immer kleiner und dann ausgeblendet.<br />
Das ganze passiert rekursiv. </p>
<pre class="brush: jscript; title: ; notranslate">
// Meldung nach 3 Sekunden wieder ausblenden
var meldung = document.getElementById(&quot;meldung&quot;);
if (meldung) {
	window.setTimeout( function() { divAusblenden(&quot;meldung&quot;,meldung.offsetWidth-10,meldung.offsetHeight-10);}, 3000);
}
</pre>
<pre class="brush: jscript; title: ; notranslate">
// Meldungen langsam kleiner werden lassen und dann ausblenden
function divAusblenden(id, breite, hoehe) {
	var reentrant = 0;
	if( ! reentrant ) {
		reentrant = 1;
		var move = 0, element = document.getElementById(id);

		if(hoehe &gt; 0 ){ hoehe -= 1; move++; }
		if(breite &gt; 0 ){ breite -= 1; move++; }
		element.style.visibility = (breite &gt; 0 &amp;&amp; hoehe &gt; 0) ? 'visible' : 'hidden';

		if( move ) {
			element.style.height = hoehe + 'px';
			element.style.width = breite + 'px';
			if (hoehe &gt;= 1 &amp;&amp; hoehe &lt;=12) {
				element.style.fontSize = hoehe-1 + 'px';
			}
			window.setTimeout( function(){ divAusblenden(id,breite,hoehe); }, 30 );
		}
		reentrant = 0;
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2010/11/07/snippetjavascript-divausblenden-animation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Developers Shame Day &#8211; Mein Beitrag</title>
		<link>http://lotterfriends.net/index.php/2010/11/03/developers-shame-day-mein-beitrag/</link>
		<comments>http://lotterfriends.net/index.php/2010/11/03/developers-shame-day-mein-beitrag/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 21:00:16 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=443</guid>
		<description><![CDATA[Dies ist mein Beitrag zum Developer Shame Day (DSD). Dieser Schnipsel kommt noch aus der der Zeit in der ich gerade mit PHP begonnen habe und ich jede Funktion googlen musst. Die Schnipsel stammen aus meinem Newssystem was irgendwie immer meinen aktuellen PHP-Wissenstand wiederspielte. Immer wenn  [...]]]></description>
			<content:encoded><![CDATA[<p>Dies ist mein Beitrag zum <a href="http://phphacker.net/2010/10/26/der-developers-shame-day/">Developer Shame Day</a> (DSD). Dieser Schnipsel kommt noch aus der der Zeit in der ich gerade mit PHP begonnen habe und ich jede Funktion googlen musst. Die Schnipsel stammen aus <a href="http://code.google.com/p/lfnews/">meinem Newssystem</a> was irgendwie immer meinen aktuellen PHP-Wissenstand wiederspielte. Immer wenn ich etwas neues gelernt habe, habe ich es dort umgesetzt und eingebaut. So wächst es noch heute und ein Ende ist nicht in Sicht <img src='http://lotterfriends.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
session_start();
if (isset ($_GET[logout])) {
	$logout = $_GET[logout];
	if ($logout == &quot;ja&quot;) {
		if (isset($_COOKIE[session_name()])) {
    		setcookie(session_name(), '', time()-42000, '/');
			echo (&quot;Erfolgreich Ausgelogt&lt;br /&gt;
				   &lt;a href='../'&gt;&amp;lt;-zu&amp;uuml;ck zur Startseite&lt;/a&gt;&quot;);
			session_unset();
			die();
			}
	}
}

$base_url = dirname(__FILE__);
if (file_exists($base_url.&quot;/news_config.php&quot;)) {
	include &quot;&quot;.$base_url.&quot;/news_config.php&quot;;
}

if (!isset ($_SESSION[name])) {
	$_SESSION[pass] = md5($_POST['passwort']);
	$_SESSION[name] = $_POST['user'];
}
if ($_SESSION[name] != $adminname){
	echo &quot;Falscher Benutzername&quot;;
	session_destroy();
} else {
	if ($_SESSION[pass] != $admin_password){
		echo &quot;Passwor falsch&quot;;
		session_destroy();
	} else {
		$recht= &quot;ja&quot;;
		include 'news_funktionen.php';
		news_speichern();
		news_loeschen();
		kommentare_loeschen();
?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;News Admin&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/pruefefelder.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/prototype.lite.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/moo.fx.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/moo.fx.pack.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function init(){
	var stretchers = document.getElementsByClassName('box');
	var toggles = document.getElementsByClassName('tab');
	var myAccordion = new fx.Accordion(
		toggles, stretchers, {opacity: false, height: true, duration: 100}
	);
	//hash functions
	var found = false;
	toggles.each(function(h3, i){
		var div = Element.find(h3, 'nextSibling');
			if (window.location.href.indexOf(h3.title) &gt; 0) {
				myAccordion.showThisHideOpen(div);
				found = true;
			}
		});
		if (!found) myAccordion.showThisHideOpen(stretchers[0]);
}
&lt;/script&gt;
&lt;link href=&quot;css/newsadmin.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;div id=&quot;wrapper&quot;&gt;
	&lt;div id=&quot;content&quot;&gt;
	&lt;h3 class=&quot;tab&quot; title=&quot;first&quot;&gt;&lt;div class=&quot;tabtxt&quot;&gt;&lt;a href=&quot;#&quot;&gt;zeigen&lt;/a&gt;&lt;/div&gt;&lt;/h3&gt;
   	&lt;div class=&quot;tab&quot;&gt;&lt;h3 class=&quot;tabtxt&quot; title=&quot;schreiben&quot;&gt;&lt;a href=&quot;#&quot;&gt;schreiben&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
	&lt;div class=&quot;tab&quot;&gt;&lt;h3 class=&quot;tabtxt&quot; title=&quot;loeschen&quot;&gt;&lt;a href=&quot;#&quot;&gt;l&amp;ouml;schen&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
	&lt;div class=&quot;tab&quot;&gt;&lt;h3 class=&quot;tabtxt&quot; title=&quot;Kommentare&quot;&gt;&lt;a href=&quot;#&quot;&gt;Kommentare&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
   	&lt;h3 class=&quot;tabtxt&quot; title=&quot;Kommentare&quot;&gt;&lt;a id=&quot;logout&quot; href=&quot;?logout=ja&quot;&gt;Logout&lt;/a&gt;&lt;/h3&gt;
	&lt;div class=&quot;boxholder&quot;&gt;
		&lt;div class=&quot;box&quot;&gt;
			&lt;?php news_zeigen($a); ?&gt;
        &lt;/div&gt;
		&lt;div class=&quot;box&quot;&gt;
			&lt;?php news_schreiben() ?&gt;
		&lt;/div&gt;

		&lt;div class=&quot;box&quot;&gt;
			&lt;?php news_loeschen_anzeigen()  ?&gt;
		&lt;/div&gt;

		&lt;div class=&quot;box&quot;&gt;
	        &lt;?php
			news_zeigen_admin($a);
			?&gt;
            &lt;iframe name=&quot;komadmin&quot; src=&quot;news_admin_kommentare.php?&lt;?php echo SID ?&gt;&quot; height=&quot;300&quot; width=&quot;590&quot;&gt;&lt;/iframe&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
	Element.cleanWhitespace('content');
	init();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;?
	}
}
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2010/11/03/developers-shame-day-mein-beitrag/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Snippet/Javascript] sendeAnfrage &#8211; Ajax leicht gemacht</title>
		<link>http://lotterfriends.net/index.php/2010/10/22/425/</link>
		<comments>http://lotterfriends.net/index.php/2010/10/22/425/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 10:06:25 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[get]]></category>
		<category><![CDATA[HTTPRequestObject]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=425</guid>
		<description><![CDATA[Hier ist eine Beispielhafte, minimale Implementierung des HTTPRequestObjects.
Die Funktion kann schnell eingebunden werden um Inhalte nachzuladen oder
allgemein Ajax zu ermöglichen. Zusammen mit meiner Funktion sammleDaten()
steht dem Eisatz von Ajax nichts mehr im Weg und hat sich in Zahlreichen  [...]]]></description>
			<content:encoded><![CDATA[<p>Hier ist eine Beispielhafte, minimale Implementierung des HTTPRequestObjects.<br />
Die Funktion kann schnell eingebunden werden um Inhalte nachzuladen oder<br />
allgemein Ajax zu ermöglichen. Zusammen mit <a href="http://lotterfriends.net/?p=422">meiner Funktion sammleDaten()</a><br />
steht dem Eisatz von Ajax nichts mehr im Weg und hat sich in Zahlreichen Projekten<br />
bewert.</p>
<pre class="brush: jscript; title: ; notranslate">
/**
 *
 * Sendet eine Ajax-Anfrage an einen Server
 *
 * @param  methode String POST oder GET / Wird etwas anderes übergeben wird GET verwendet
 * @param  zielUrl String An Was die Anfrage geschickt werden soll (z.B. ein Skript auf dem Server)
 * @param  verarbeiter CallBack Function JS-Funktion die die Rückgabe
 *         des Servers verarbeitet und die Rückgabe als Parameter bekommt
 *         (optional)
 * @param  parameter String / Array Parameter die an den Server geschickt
 *         werden sollen. Entweder einer als String Bsp.: &quot;kekse=true&quot; oder
 *         mehrere als Array Bsp.: [&quot;kekse=true&quot;,&quot;kuchen=false&quot;]
 *         (optional)
 * @return Rückgabe des verarbeiters, falls kein Verarbeiter gesetzt ist true
 *         bei Erfolg und false bei Fehlschlag
 *
 */
function sendeAnfrage(methode,zielUrl,parameter,verarbeiter) {
  if (parameter &amp;&amp; parameter.constructor == Function) {
    verarbeiter = parameter;
    parameter = undefined;
  }

  methode = methode.toUpperCase();
  if (methode != &quot;POST&quot; &amp;&amp; methode != &quot;GET&quot;) methode = &quot;GET&quot;;

  var request = null;
  if (window.XMLHttpRequest) request = new window.XMLHttpRequest();
  if (window.ActiveXObject) request = new window.ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
  if (request == null) return false;

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var rueckgabe = request.responseText;
      if (request.status == 200) {
        if (verarbeiter != null) return verarbeiter(rueckgabe);
        return true;
      } return false;
    }
  }

  var uebertraeger = null;
  if(parameter!==undefined) {
    if (parameter.constructor == Array) {
      for (var i in parameter)  {
        if (i &gt; 0) uebertraeger = uebertraeger + parameter[i] + &quot;&amp;&quot;;
        else uebertraeger = parameter[i] + &quot;&amp;&quot;;
      }
    } else uebertraeger = parameter;
  }

  if (methode == &quot;GET&quot; &amp;&amp; uebertraeger != null) zielUrl = zielUrl + &quot;?&quot; + uebertraeger;
  request.open(methode, zielUrl, true);
  if (methode == &quot;POST&quot;) request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  request.send(uebertraeger);

}
</pre>
<p>Beispiel für die Verwendung:</p>
<pre class="brush: jscript; title: ; notranslate">

// Initialisieren
var initialisirenFunktionen = [];
onload = function() {
  for (var i in initialisirenFunktionen) initialisirenFunktionen[i]();
}

// Erstelle LoadBereich
initialisirenFunktionen.push(function () {
    var loadContent = document.createElement(&quot;DIV&quot;);
    loadContent.id = &quot;loadContent&quot;;
    document.body.appendChild(loadContent);
});

// Reichere AjaxButton um Anfrage-Event an
initialisirenFunktionen.push(function () {
    var sendenButton = document.getElementById(&quot;senden&quot;);
    sendenButton.onclick = function () {
      sendeAnfrage(&quot;POST&quot;,&quot;MeinServlet&quot;,sammleDaten(document.meinForm),schreibeResponseInLoadBox);
    };
});

// CallbackFunktion für die Ajax-Anfrage (Ergebniss verarbeiten)
function schreibeResponseInLoadBox(r) {
  var loadContent = document.getElementById(&quot;loadContent&quot;);
  loadContent.innerHTML = r;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2010/10/22/425/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Snippet/Javascript] sammleDaten</title>
		<link>http://lotterfriends.net/index.php/2010/10/22/snippetjavascript-sammledaten/</link>
		<comments>http://lotterfriends.net/index.php/2010/10/22/snippetjavascript-sammledaten/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 11:49:01 +0000</pubDate>
		<dc:creator>lotterfriends</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[Formular]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://lotterfriends.net/?p=422</guid>
		<description><![CDATA[Wenn man ein Formular mit Ajax abschicken will kommt man schnell in die Situation,
dass man sich die Daten oder einen Datensatz selbst zusammenbauen muss.
Mit jQuery ist das kein Problem, ohne sieht die Sache da aber schon ganz anders aus.
Meine Funktion geht Rekursive das übergebene HTMLElement  [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man ein Formular mit Ajax abschicken will kommt man schnell in die Situation,<br />
dass man sich die Daten oder einen Datensatz selbst zusammenbauen muss.<br />
Mit jQuery ist das kein Problem, ohne sieht die Sache da aber schon ganz anders aus.</p>
<p>Meine Funktion geht Rekursive das übergebene HTMLElement durch und guckt ob es ein<br />
Typisches Formular Element ist (Textarea, Input und Selextbox). Ist das der Fall wird der<br />
Value mit dem Namen in einem Array gespeichert und am Ende zurückgegeben.</p>
<pre class="brush: jscript; title: ; notranslate">
/**
*
* Liefert alle Daten aus einem Formular in einem Array
*
* @param formular HTMLElement Formular in dem nach Daten gesucht werden soll
* @return Array Im Format [&quot;key=value&quot;,&quot;key=value&quot;]
*
*/
function sammleDaten(formular) {
	var daten = [];
	var ue = formular.childNodes;
	for (var i in ue) {
		if (ue[i].tagName &amp;&amp; ue[i].name &amp;&amp;
		(ue[i].tagName == &quot;INPUT&quot; || ue[i].tagName == &quot;TEXTAREA&quot;
		|| ue[i].tagName == &quot;SELECT&quot;)){
			var inhalt = null;
			if (ue[i].value) {
        		inhalt = ue[i].value;
    		}
			daten.push(ue[i].name+&quot;=&quot;+inhalt);
		}
		daten = daten.concat(sammleDaten(ue[i]));
	}
	return daten;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lotterfriends.net/index.php/2010/10/22/snippetjavascript-sammledaten/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

