var nullzeile = 4;
var nullspalte = 4;
var typ = 1; // Rechteck;
var mixed = 0;
var a = new Array;
var b = new Array;
var c = new Array;

a[0] = new Image();
a[0].src= "gifs/zahlen/0.gif";
for (var i = 1; i<=4; i++){
	for (var j=1; j<=4; j++){
	  k= (i-1)* 4 +j ;
	  if (k < 16) {
 	  a[k] = new Image();
	  a[k].src= "gifs/zahlen/"+k+".gif";
	  b[k] = new Image();
	  b[k].src= "gifs/zahlen/"+k+"b.gif";
	  }
	}
}

function settyp(t) {
	mixed = 0;
	faerbenachbarn(nullzeile,nullspalte,"a");
	typ = t;
	faerbenachbarn(nullzeile,nullspalte,"b");
}	
	

function bossinit() {
	mixed = 0;
	typ = 1;
	nullzeile = 4;
	nullspalte = 4;
	for (var i = 1; i<=4; i++){
		c[i] = new Array;
		for (var j=1; j<=4; j++){
			
		  k= (i-1)* 4 +j ;
		  if (k < 16) {
		  c[i][j] = k;
		  faerbe (i,j,"a");
		  }
		}
	}
	c[4][4] = 0;
	faerbe(4,4,"a");
	faerbenachbarn(4,4, "b");
	return true;
} // init


function schieb(z,s){
	if (iserlaubt (z,s) == 1) {
		faerbenachbarn(nullzeile, nullspalte, "a");
		c[nullzeile][nullspalte] = c[z][s];
		c[z][s] = 0;
		faerbe(nullzeile, nullspalte, "a");
	 	nullzeile = z;
	 	nullspalte = s;
		faerbe(nullzeile, nullspalte, "a");
	 	faerbenachbarn(z,s,"b");
	 } // if iserlaubt
} // function schieb


function faerbenachbarn(z,s,ar){
	// oben 
	var zz = z-1; var ss = s;
	if (zz == 0 && typ > 1) {
		zz =  4;
		if (typ == 3 || typ == 5) {ss = 5 - ss;}
	}
	faerbe (zz,ss,ar);
	// unten 
	zz = z+1; ss = s;
	if (zz == 5 && typ > 1) {
		zz = 1;
		if (typ == 3 || typ == 5) {ss = 5 - ss;}
	}
	faerbe (zz,ss,ar);
	// links
	zz = z; ss = s-1;
	if (ss == 0 && typ > 3) {ss = 4;}
	faerbe (zz,ss,ar);
	// rechts
	zz = z; ss = s+1;
	if (ss == 5 && typ > 3) {ss = 1;}
	faerbe (zz,ss,ar);
} // function faerbenachbarn





function faerbe (zz,ss,ar) {
	if (zz > 0 && zz < 5 && ss > 0 && ss < 5) {
		var k = c[zz][ss];
 		var bildnam = "B"+zz+""+ss;
		eval ("window.document.images['"+bildnam+"'].src= "+ar+"["+k+"].src");	
	}
}


function iserlaubt (z,s){
r = 0;
	// oben 
	var zz = nullzeile-1; var ss = nullspalte;
	if (zz == 0 && typ > 1) {
		zz =  4;
		if (typ == 3 || typ == 5) {ss = 5 - ss;}
	}
	if (zz == z && ss == s) {r = 1;}
	// unten 
	zz = nullzeile+1; ss = nullspalte;
	if (zz == 5 && typ > 1) {
		zz = 1;
		if (typ == 3 || typ ==5) {ss = 5 - ss;}
	}
if (zz == z && ss == s) {r = 1;}
	// linknullspalte
	zz = nullzeile; ss = nullspalte-1;
	if (ss == 0 && typ > 3) {
		ss = 4;
	}
if (zz == z && ss == s) {r = 1;}
	// rechtnullspalte
	zz = nullzeile; ss = nullspalte+1;
	if (ss == 5 && typ > 3) {
		ss = 1;
	}
if (zz == z && ss == s) {r = 1;}


return r;
} // function iserlaubt


function mixer(){
	mixed = 50;
	mix();
}


function mix(){
	mixed--;
	var zufall  = Math.floor(Math.random()*4);
	var zz = nullzeile; var ss= nullspalte;
	
	if (zufall == 0){
		zz = nullzeile-1; ss = nullspalte;
		if (zz == 0 && typ > 1) {
			zz =  4;
			if (typ == 3 || typ == 5) {ss = 5 - ss;}
		}
	}
	
	if (zufall == 1) {
		zz = nullzeile+1; ss = nullspalte;
		if (zz == 5 && typ > 1) {
			zz = 1;
			if (typ == 3 || typ ==5) {ss = 5 - ss;}
		}
	}

	if (zufall == 2) {
		zz = nullzeile; ss = nullspalte-1;
		if (ss == 0 && typ > 3) {
			ss = 4;
		}
	}
	
	if (zufall == 3) {
		zz = nullzeile; ss = nullspalte+1;
		if (ss == 5 && typ > 3) {
			ss = 1;
		}
	}
	if (zz>0 && zz<5 && ss>0 && ss<5){schieb (zz,ss);}
	if (mixed > 0) {
		window.setTimeout('mix()',100);
	
	}
	
	

}

