
	currmode = '';

	function vid(theurl) {
		vid = window.open(theurl, 'vid', 'width=320,height=255');
	}

	function colorize(mode, colory, colorx) {
			
			if(mode!='cmyk') {
				v1 = Math.round(Math.random()*200+55);
				v2 = Math.round(Math.random()*200+55); 
				v3 = Math.round(Math.random()*200+55);	

				if(v2-v1 < 50) { v2 = v2 + 50; }
				if(v3-v1 < 50) { v3 = v3 + 50; }
				if(v3-v2 < 50) { v3 = v3 - 100; }
				if(v1 < 50) { v1 = 50; } if(v1 > 255) { v1 = 255; }
				if(v2 < 50) { v2 = 50; } if(v2 > 255) { v2 = 255; }
				if(v3 < 50) { v3 = 50; } if(v3 > 255) { v3 = 255; }
			} else {
				v1 = 255; v2 = 255; v3 = 255;
			}


			squares = document.getElementById('nav').getElementsByTagName('a');
			gridx = 0;
			gridy = 1;
			boost = 0;
			for(i=0;i<squares.length;i++) {
				gridx++;
				if((squares[i].className=='two' && gridx == 5) || boost == 1) { gridx++; boost = 0; }
				else if(squares[i].className=='two') { boost = 1; }


				c = ((7-gridx)*(7-gridy)) * 0.0275;
				m = ((gridx*(7-gridy)) * 0.0275);
				y = (gridx*gridy) * 0.0275;
				k = ((7-gridx)*gridy) * 0.0275;
	
				if(mode=='g') { currmode='g'; v1 = 255; v2 = 255; v3 = 255; }
				else { currmode='c'; }

				r = Math.round(v1 * (1 - (c+k)));
				g = Math.round(v2 * (1 - (m+k)));
 				b = Math.round(v3 * (1 - (y+k)));

				if(mode=='g') {	
					grau = Math.round((r+g+b)/3)+60;
					r=grau; g=grau; b=grau;
				}
				if(gridx==colorx && gridy==colory) {
					r=255; g=255; b=255;
				}

				squares[i].style.backgroundColor = "rgb("+r+", "+g+", "+b+")";

				if(gridx % 6 == 0) {
				   gridx = 0;
				   gridy++;
				}

			}
		}

		//occupied=new Array();

		function over(theid, step) {
			//alert(occupied[theid]);
		//	if(!(occupied[theid] == 1 && step == 0)) {
				o = document.getElementById(theid);
				if(step == 0) { x = 40; delay=0; } else { x = step*6+40; delay = step*8; }
				// Math.sqrt(step)*3.17*step
				if(document.all && !window.opera) { o.filters.alpha.opacity=x; }
				else { xx = x/100; if(xx > 1) { xx = 1; } if(xx < 1) { xx = 0; } o.style.mozOpacity = x/100; o.style.opacity = x/100; }
				step++;
		//		occupied[theid] = 1;
				if(step < 10) {
					setTimeout('over("'+theid+'", '+step+')', delay);
		//		} else {
		//			occupied[theid] = 0;
				}
		//	}

		}


		play_blankfieldid = '';
		play_difflevel = -1;

		function play_showcontrols() {
			document.getElementById('gamecontrols').style.display='block';
			document.getElementById('startlinks').style.display='none';
			document.getElementById('gamestop').style.display='block';

			//document.getElementById('gameplay').innerHTML = 'STOP GAME';
			//setTimeout("document.getElementById('gameplay').href = 'index.php'", 50);
		}

		function play_stop() {
			window.location.href=window.location.href;
		}

		function play_easy() {
			field = document.getElementById('nav');
			as = field.getElementsByTagName('a');
			for(i=0;i<as.length;i++) {
				if(as[i].className != 'two') {
					as[i].style.fontSize='1.2em';
					if(as[i].innerHTML != as[i].id.substr(1,2)) { as[i].originnerHTML = as[i].innerHTML; }
					as[i].innerHTML = as[i].id.substr(1,2);
					if(as[i].innerHTML == '26') { as[i].style.color='#CCC'; }
				}
			}	
		}
		function play_restoreaftereasy() {
			field = document.getElementById('nav');
			as = field.getElementsByTagName('a');
			for(i=0;i<as.length;i++) {
				if(as[i].className != 'two') {
					as[i].style.fontSize='0.9em';
					as[i].innerHTML = as[i].originnerHTML;
					if(as[i].innerHTML == '26') { as[i].style.color='#FFF'; }
				}
			}	
		}

		function play() {
			ge = document.getElementById('gameeasy');
			gn = document.getElementById('gamenorm');
			gh = document.getElementById('gamehard');
		
			if(document.getElementById('diff-easy').checked) {
				ge.style.display='block'; gn.style.display='none'; 	gh.style.display='none';
				//if(play_difflevel == 0) { play_resort(); colorize(); }
				if(play_difflevel == 0 || play_difflevel == -1) { play_init(); }
				play_difflevel = 0;
				play_easy();
			} else if (document.getElementById('diff-hard').checked) {	
				ge.style.display='none'; gn.style.display='none'; gh.style.display='block';
				if(play_difflevel == 0) { play_restoreaftereasy(); }
				//if(play_difflevel == 2) { play_resort(); colorize(); }
				if(play_difflevel == 2 || play_difflevel == -1) { play_init(); }
				play_difflevel = 2;
			} else {
				ge.style.display='none'; gn.style.display='block'; 	gh.style.display='none';
				if(play_difflevel == 0) { play_restoreaftereasy(); }
				//if(play_difflevel == 1) { play_resort(); colorize(); }
				if(play_difflevel == 1 || play_difflevel == -1) { play_init(); }
				play_difflevel = 1;
				//play_init();
			}

		}
			

		thetimer = '';
		function play_init() {

			clearInterval(thetimer);
			play_timer_time = 0;
			thetimer = setInterval('play_timer_tick()', 1000);

			field = document.getElementById('nav');
			//colorize('cmyk');

			// remove one box
			document.getElementById('n28').style.backgroundColor = 'white';
			play_blankfieldid = 'n28';

			// add onclicks
			as = field.getElementsByTagName('a');
			for(i=0;i<as.length;i++) {
				if(as[i].className!='two') {
					as[i].onclick=play_swap;

					if(as[i].href == 'javascript:void("0")') { as[i].href = as[i].orighref; }

					as[i].cordx = as[i].href.substr(as[i].href.length-1, 1);
					as[i].cordy = as[i].href.substr(as[i].href.length-2, 1);
					as[i].orighref=as[i].href;
					as[i].href='javascript:void("0")';

					as[i].onmouseover='javascript:void("0")';
					as[i].setAttribute('onmouseover', 'javascript:void("0")');

					as[i].style.backgroundImage='none';
				}
			}
			
			// shuffle field
			howoften = 50;
			for(i=0;i<howoften;i++) {
				rnd1 = Math.round(Math.random()*27)+1;
				rnd2 = Math.round(Math.random()*27)+1;
				if(rnd1 != rnd2) {
					thecmd = "play_swapNode(document.getElementById('n'+"+rnd1+"), document.getElementById('n'+"+rnd2+")";
					if(i==(howoften-1)) { thecmd += ', 1'; }
					setTimeout(thecmd+')', i*30+300);
				}
			}
		}

		function play_swap(e) {
			field = document.getElementById('nav');
			blank = document.getElementById(play_blankfieldid);	
			blanknum = parseInt(play_blankfieldid.substr(1,2));
			thisnum = parseInt(this.id.substr(1,2));

			if(play_difflevel == 2) {
				if( (this.cordx == blank.cordx && Math.abs(this.cordy-blank.cordy) == 1) || (this.cordy == blank.cordy && Math.abs(this.cordx-blank.cordx) == 1) ) {	
					play_swapNode(this, blank);
				}
			} else {
				play_swapNode(this, blank);
			}

		}


		function play_swapNode(objA,objB, shuffling) {

			if (objA != null && objB != null && objA != objB) {
				Acordx = objA.cordx; Acordy = objA.cordy;
				Bcordx = objB.cordx; Bcordy = objB.cordy;
				Aid = objA.id;
				Bid = objB.id;
	
				tempObjB = objB.cloneNode(true);
				tempObjB.cordx = objA.cordx; tempObjB.cordy = objA.cordy; 
				tempObjB.orighref = objA.orighref; tempObjB.originnerHTML = objA.originnerHTML; 
				tempObjA = objA.cloneNode(true);
				tempObjA.cordx = objB.cordx; tempObjA.cordy = objB.cordy; 
				tempObjA.orighref = objB.orighref; tempObjA.originnerHTML = objB.originnerHTML; 
		
				objB.parentNode.insertBefore(tempObjA,objB);
				objA.parentNode.insertBefore(tempObjB,objA);
	
				objA.parentNode.removeChild(objA);
				objB.parentNode.removeChild(objB);
	
				tempObjB.id = Bid;
				tempObjA.id = Aid;
				tempObjB.onclick = play_swap;
				tempObjA.onclick = play_swap;
		

				if(shuffling != 1) {
					play_checkcorrect(tempObjA);
					play_checkcorrect(tempObjB);

					j = 1;
					currentcheck = document.getElementById('n'+j);
					///document.getElementById('gameeasy').innerHTML = 'corr: ';
					while(play_checkcorrect(currentcheck, 1) == true) {
						///document.getElementById('gameeasy').innerHTML += j+' ';
						j++;
						if (j==29) { play_win(); break; }
						currentcheck = document.getElementById('n'+j);
					}
				}

		
			return tempObjA;
			}
		}

		function play_win() {
			clearInterval(thetimer);
			for(i=1;i<56;i++) {
				if(i<=28) { 
					setTimeout("over('n'+"+i+", 0)", i*50);
				} else {
					setTimeout("over('n'+"+(28-(i-28))+", 0)", i*50);
				}
			}
			mins = Math.floor(play_timer_time/60);
			secs = play_timer_time - mins*60;
			if(mins == 1) { minutes='minute'; } else { minutes = 'minutes'; }
			if(secs == 1) { seconds='second'; } else { seconds = 'seconds'; }
			setTimeout("alert('You won in '+"+mins+"+' '+minutes+' and '+"+secs+"+' '+seconds+'!')", 55*50+300);
			play_difflevel = -1;
		}

		play_timer_time = 0;
		function play_timer_tick() {
			play_timer_time++;
			///document.getElementById('gamenorm').innerHTML = play_timer_time;

		}

		function play_checkcorrect(o, nomarks) {
				Anum = parseInt((o.cordy-1) * 6) + parseInt(o.cordx);
				Aidnum = parseInt(o.id.substr(1,2));
				if(Anum < 6) { Anum = Anum - 2 } else if(Anum < 31) { Anum = Anum - 4; } else { Anum = Anum - 6; }	
				if(Anum == Aidnum) {
					if(nomarks!=1) { o.style.backgroundImage='url("correct.gif")'; }
					toreturn = true;
				} else {
					if(nomarks!=1) { o.style.backgroundImage='none'; }
					toreturn = false;
				}
				return toreturn;
		}