/*
 * Rastervoegel
 *
 * <div id="rasterbirds"><div id="inner"></div></div>
 *
 */
Bird = function( name, direction ) {

	var image 	= name;
	var dir 	= direction;

	// Fixum
	var BLOCKWIDTH 	= 16; 
	var BLOCKHEIGHT = 8; 
	var MAXWIDTH 	= 40; 

	var posx;
	var posy;
       
	var resetPosition = function() {
		posx = ( dir < 0 ) ? MAXWIDTH + 5 : - 10;
		posy = Math.round( Math.random() * 15 );
	}

	document.writeln( '<img onload="this.onload=null; var w = this.width * ' + BLOCKWIDTH + '; var h = this.height * ' + BLOCKHEIGHT + '; this.style.width = w + \'px\'; this.style.height = h + \'px\'; this.style.visibility = \'visible\';" id="' + name + '" src="http://www.moveq.de/wp-content/uploads/2007/bird/' + name +'.gif" alt="." />' );

	resetPosition();

	with( document.getElementById( name ) ) {
		style.position   = "absolute";
		style.border     = 0;
		style.margin     = 0;
		style.top        = ( posy * BLOCKHEIGHT ) + "px";
		style.left       = ( posx * BLOCKWIDTH )+ "px";
		style.visibility = "hidden";
	}

	this.move = function() {	
		posx += dir;
		if( dir > 0 && posx > MAXWIDTH ) resetPosition();
		if( dir < 0 && posx < -MAXWIDTH ) resetPosition();
		
		with( document.getElementById( image ).style ) {
			left = ( posx * BLOCKWIDTH ) + "px";	
		        top = ( posy * BLOCKHEIGHT ) + "px";
		}
	};
}

rasterBirds = function() {

	if( this.Birds == null ) {
		this.Birds = new Array( 
			new Bird( "linker", 1 ), 
			new Bird( "rechter", -1 ) 
		);
	}

	window.setTimeout( "rasterBirds()", 200 );

	for( var i = 0; i < Birds.length; i++ ) 
		Birds[i].move(); 
}


/*
 * Scroller
 *
 * <div id="scrollscreen"><div id="scrolltext">TEXT</div></div>
 * 
 */
lilScroller = function() { 

	window.setTimeout( "lilScroller()", 25 ); 

	if ( this.posx == null ) {
		this.posx = -99999;
		document.getElementById("scrolltext").style.visibility="visible";
	}

	if( ( this.posx -= 2 ) < -( document.getElementById("scrolltext").offsetWidth ) )
		this.posx = document.getElementById( "scrollscreen" ).offsetWidth; 

	document.getElementById("scrolltext").style.left = this.posx + "px"; 
}


/*
 * Memory
 * 
 * <div id="memory">(Loadingimage)</div>
 *
 */
Memory = function( name, max, directory ) {

	var cardDir    	= directory;
	var cardMax	= max;
	var myname	= name;
	var cardImages 	= new Array();
	var openList	= new Array();
	var allOpenList	= new Array();
	var shuffle	= new Array();
	var imgsToLoad  = max + 1;

	var open;
	var score;
	var tries;

	// Starten bei Onload
	var start = function() {
		document.getElementById( name ).innerHTML = output(); 
		init();
	}

	var getImageURL = function( name ) {
		return "http://www.moveq.de/wp-content/uploads/2007/memory/img/" + cardDir + "/" + name + ".gif";
	}

	var getImage = function( name ) { 
		var newImage = new Image();
		newImage.src = getImageURL( name );
		newImage.onload = function() {
			this.onload = null; 
			//if( --imgsToLoad == 0 ) 
			//	addWindowOnload( start );
	       	}

		return newImage; 
	}

	var getShuffleList = function() {
		var shuffle = new Array();
		
		// Liste ( 0, 0, 1, 1, 2, 2 ...)
		for( var i = 0; i < cardMax; i ++ ) {
			shuffle[ i * 2 + 0 ] = i;
			shuffle[ i * 2 + 1 ] = i;
		}

		// Mischen
		for( var i = 0; i < cardMax * 2; i ++ ) {
			var j = Math.floor( Math.random() * cardMax * 2 );
			var t = shuffle[i];
			shuffle[i] = shuffle[j];
			shuffle[j] = t;
		}

		return shuffle;
	}

	var setCardImage = function( id, image ) {
		document.getElementById( myname + id ).src = image.src;		
	}

	var setTitle = function() {
		//document.title = "Memory: " + score + " Paar" + ( ( score != 1 ) ? "e" : "" ) + " in " + tries + " Versuch" + ( ( tries != 1 ) ? "en" : "" );
	}

	// Feld ausgeben
	var output = function() {
		var output = "";

		for( var id = 0; id < cardMax * 2; id ++ )
			output += '<a onclick="' + name + '.click(' + id + '); return false">' +
				  '<span>' +
				  '<img id="' + myname + id + '" src="' + getImageURL("back") +'" alt="..." />' +
				  '</span>' +
				  '</a>'; 

		return output;
	}

	var init = function() {
		for( var i = 0; i < cardMax * 2 ; i++ ) {
			allOpenList[i] = -1;
			setCardImage( i, backImage );
		}

		shuffle = getShuffleList();
		open  = 0;
		score = 0;
		tries = 0;
	}


	// Initialisierung der Bilder:
	var backImage = getImage( "back" );

	for( var id = 0; id < cardMax; id ++ ) 
		cardImages[id] = getImage(id);

	addWindowOnload( start );


	// Click-Action
	this.click = function( id ) {

		// Karte noch zu?
		if( allOpenList[id] == -1 ) {

			// dritte Karte ? 
			if( open == 2 ) {
				setCardImage( openList[0], backImage );
				setCardImage( openList[1], backImage );
				allOpenList[ openList[0] ] = -1;
				allOpenList[ openList[1] ] = -1;
				open = 0;
			}

			// Karte oefnen und merken
			openList[open] = id;
			allOpenList[id] = 1;
			setCardImage( id, cardImages[ shuffle[id] ] );

			// zweite Karte???
			if( open == 1 ) {
				tries++;
			
				if( shuffle[ openList[0] ] == shuffle[ openList[1] ] ) {
					score++;
					open = -1;
				}
			}

			open++
			setTitle();
	
			if( score == cardMax ) {
				alert( "G E W O N N E N !");
				init();
			}
		} 
	}
}

/*
 * Smoother
 *
 */
Smoother = function( id ) {

	// Benoetigt eine Liste (l) vom Aufbau:
	// <ul><li><a><img /></a></li>
	var listId = id;
	var Opacs = Array();
	
	var setOpacity = function( el, value ) { 

		try {
			el.style.filter = 'alpha(opacity=' + value + ')';
			el.style.opacity = ( value / 100 ) ; 
		} catch(e) {}
	}

	var getOpacity = function( el ) {

		if( el.style.opacity != "undefined" )
	       		return el.style.opacity * 100; 

		if( el.style.filter != "undefined" ) {
			var o = el.style.filter.match( /[0123456789]+/ );
			return o * 100; 
		}

		return 100;
	}

	var smoothInit = function() {

		var s = document.getElementById( listId ).getElementsByTagName( "li" );

		for( var i = 0; i < s.length; i++ ) {
			Opacs[i] = 100;
			setOpacity( s[i].firstChild.firstChild, Opacs[i] );
		}
	}
	
	this.smoothLoop = function() {

		var s = document.getElementById( listId ).getElementsByTagName( "li" );

		for( var i = 0; i < s.length; i++ ) {
			var img = s[i].firstChild.firstChild;
			var currentop = getOpacity( img );
			var opac = Opacs[i];

			if( currentop < opac ) {
				currentop += 5;
				if( currentop > opac ) currentop = opac;
				setOpacity( img, currentop );
			}

			if( currentop > opac ) {
				currentop -= 5;
				if( currentop < opac ) currentop = opac;
				setOpacity( img, currentop );
			}
		}
	
		window.setTimeout( listId+".smoothLoop()", 20 );
	}

	this.setIndexOpacity = function( index, value ) {
		
		Opacs[index] = value;
	}

	smoothInit(); 
	this.smoothLoop();
}


/*
 * myGallery
 *
 * Kleine Galerie
 * 
 */
myGallery = function( name, path, imageList ) 
{
	var myname = name;
	var mypath = path;
	var images = imageList;

	var init = function() {
		var gal = '<div id="' + myname + 'Wait"></div>';
		gal += '<div id="' + myname + 'Image"></div>';

		for( var i = 0; i < images.length; i++ ) {
			gal += '<a href="' + mypath + images[i] + '.jpg" onclick="return ' + myname + '.showImage(this.href);"><img src="' + mypath + images[i] + '.gif" alt="' + images[i] + '" /></a>';
		}

		document.getElementById( myname ).innerHTML = gal;
		document.getElementById( myname + "Image" ).style.background =  "url(" + mypath + images[0] + ".jpg)";
	}
	
	this.showImage = function( image ) {

		document.getElementById( myname + "Image" ).style.background = 'url(' + image + ')';
		return false;
	}

	init();
}

