// OK, jetzt das eigentliche Programm

document.getElementById("scoreline").firstChild.data="Daten werden geladen ... (Programm)";


/* ######### MAIN-CODE ######### */
//allgem. Variablen

digger_version = new String("- Version 0.9.6 Beta -");

var start_digger_field = 0-1;
var next_raum = false;
var play = false;
var takt = 0; //Timerhandler
var verz = 0; //10 Sek. Verz�erung
var blink_tick = 3;
var zeit_tick = 0;
var idx = new Array(281);
var d_idx = 280;
var zufall = 1;

var score_raum = 0;
var score_leben = 20;
var score_zeit = 300;
var score_punkte = 0;
var score_dia = 0;
var score_ges = 0;
var score_code = 0;

var digger_left = false;
var digger_up = false;
var digger_right = false;
var digger_down = false;

lastdiggerdir = new  String("IDLE");

var digger_in_idle = false;
var digger_idle = false;

var stone_l = false;
var stone_r =false;

var digger_cheat = false;
cheat_tmp = new String("");
var digger_half_step = false;
var digger_stop = false;
var digger_death = false;
var digger_die = false;
var digger_is_dead = false;

var taste = 0;
var ptaste = 0; //press-taste
var rtaste = 0; //release-taste

var digger_step_up = 9;
var digger_step_down = 11;
var digger_step_left = 13;
var digger_step_right = 19;

var digger_idle_augen = 25;
var digger_idle_eier = 33;

var sound = false;
ton_schritt = false;
ton_stein = false;
ton_diamant = false;
var TON_SCHRITT = 1;
var TON_STEIN = 2;
var TON_DIAMANT = 3;

function high_score()
  {
    if(score_punkte>=1)
    alert("Bitte eine eigene HighScorefunktion programmieren!");
  }
  
function init_events()
  {
	//document.onkeypress = false;
	document.onkeydown = kb_press;
        document.onkeyup = kb_release;
	document.onclick = mo_press;
  }

function kb_test(taste)
  {
    //alert(String.fromCharCode(taste.which));
    //alert("m".charCodeAt(0)); //liefert den ASCII des Buchstaben "m"
    //alert("hallo");
    //alert(taste.which);
    if(!window.event) alert(taste.which + " window.event");
    else alert(window.event.keyCode + " window.event.keyCode");
    

    //alert ("Document got an event: " + e.type);
    //alert ("x position is " + e.pageX);
    //alert ("y position is " + e.pageY);
    //if (e.modifiers & Event.ALT_MASK)
    //  alert ("Alt key was down for event.");

  }

function init_timer()
  {
    takt = window.setInterval("draw_field()",60);
  }

function idle_start()
  {
    play = true;
    idx[d_idx] = 8.1;
  }

function stop_timer()
  {
    window.clearInterval(takt);
    window.clearInterval(verz);
  }

function mo_press()
  {
    if(!play)
      {
        if(score_raum!=0) idx[d_idx] = 8.1;
	if(score_raum==0) next_raum=true;
	play = true;
	window.clearTimeout(verz);
        digger_stop = true;
        digger_half_step = false;
	digger_idle = true;
      }
  }

function kb_press(taste)
  {
    if(!window.event) ptaste = taste.which;
    else ptaste = window.event.keyCode;
    switch(ptaste)
      {
        // !!! weiter unten in der Funktion "ROCKFORD STOPPEN UND ANIMATION L�CHEN" müssen die gleichen KeyCodes eingetragen werden
	//quit
	case 81: score_punkte = 0;
	         score_leben = 20;
		 score_raum = 0;
		 init_room(score_raum);
		 break;
	//9
	case 57: cheat_tmp = "9" + cheat_tmp;
	         break;
	//d
	case 68: cheat_tmp = cheat_tmp + "d";
	         if(cheat_tmp == "99d")
		   {
		     if(!digger_cheat) digger_cheat=true;
		     else digger_cheat = false;
		   }
	         cheat_tmp = "";
		 break;
	//pos1
	case 36: if(score_raum < 10) if(digger_cheat) next_raum = true;
	         break;
	//escape
	case 27: score_leben--;
	         if(score_leben < 0)
		   {
		     high_score();
		     score_punkte = 0;
		     score_leben = 20;
		     score_raum = 0;
		   }
	         init_room(score_raum);
		 break;
	//return
	case 13: if(!play)
	           {
		     if(score_raum != 0) idx[d_idx] = 8.1;
		     if(score_raum == 0) next_raum = true;
		     play = true;
		     window.clearTimeout(verz);
	           }
	         break;
	//links
	case 37: digger_left = true;
	         digger_up = false;
		 digger_right = false;
		 digger_down = false;
		 break;
	//oben
	case 38: digger_up = true;
	         digger_left = false;
		 digger_right = false;
		 digger_down = false;
		 break;
	//rechts
	case 39: digger_right = true;
	         digger_up = false;
		 digger_left = false;
		 digger_down = false;
		 break;
	//unten
	case 40: digger_down = true;
	         digger_up = false;
		 digger_right = false;
		 digger_left = false;
		 break;
      }
    //alert("Taste " + ptaste + " Score_raum" +score_raum);
    digger_half_step = false;
    digger_idle = false;
  }

function kb_release(taste)
  {
    if(!window.event) rtaste = taste.which;
    else rtaste = window.event.keyCode;
    //alert(rtaste);
    digger_stop = true;
    digger_half_step = true;
    digger_idle = true;
  }

function init_digger()
  {
    //EXIT(41) finden und Digger dort positionieren(d_idx)
    for (l = 1; l < 281; l++)
      {
	if(idx[l] == 41.1)
	  {
	    d_idx = l;
	    //d_z=Math.floor(l/20)+1;
	    //d_s=Math.floor(l-((d_z-1)*20));
          }
      }
  }

function init_room(level)
  {
    digger_is_dead = false;
    icon[8].src = icon[28].src; //digger/digger.gif
    // MENU-Level (0)
    if(score_raum == 0)
      {
        document.getElementById("scoreline").firstChild.data = digger_version;
        if( document.getElementById("digger") )
		  document.getElementById("scoreline").style.backgroundColor = "#000000";
        icon[1].src = icon[49].src; //digger/transp.gif
      }
    // GAME-Level (1...n)
    else
      {
        if( document.getElementById("digger") )
		  document.getElementById("scoreline").style.backgroundColor = "#8b0000";
        icon[1].src = icon[47].src; //digger/nothing.gif
      }
    if(takt) stop_timer();
    digger_left = false;
     digger_up = false;
      digger_right = false;
       digger_down = false;
    digger_death = false;
    score_ges = 0;
    score_zeit = 300;
    if(score_raum == 0) score_zeit--;
    play = false;
    if(score_raum > 0) verz = window.setTimeout("idle_start()",3000);
    ii = level * 281 + 1;
    iii = ii + 281;
    iiii = 1;
    score_dia = room[iii-1];
    for(i = ii; i < iii; i++)
      {
        idx[iiii] = room[i];
	iiii++;
      }
    if(score_raum > 0) init_digger();
    init_timer();
  }

// 1=Nothing
// 2=Ground
// 3=Diamant
// 4=Wall
// 5=Changer
// 6=Exit
// 7=Stein

function draw_field()
  {
    // ROCKFORD BEWEGEN
    if( play && !digger_stop && !digger_death)
      {
        var pre_idx = d_idx;

	if(stone_l && !digger_left) stone_l = false;
	if(stone_r && !digger_right) stone_r = false;
	// LINKS?
	if(digger_left)
	  {
	    lastdiggerdir = "LEFT";
	    var pre_l = pre_idx - 1;
	    var pre_ll = pre_idx - 2;
	    //Diamant und kein Halbschritt?
	    if((idx[pre_l] == 3) && !digger_half_step)
	      {
	        score_ges++;
		score_punkte += 3;
		ton_diamant = true;
	      }
	    //Ausgang?
	    if(((idx[pre_l] == 41) || (idx[pre_l] == 42)) && !digger_half_step)
	      {
	        score_punkte += 100;
		next_raum = true;
	      }
	    // liegt ein Stein im Weg?
	    if((idx[pre_l] == 7) && !digger_half_step)
	      {
	        // ist da Platz zum wegschieben?
		if(idx[pre_ll] == 1)
		  {
		    // bitte 2 Tackte lang druecken!
		    if(stone_l)
		      {
		        idx[pre_ll] = 7.2;
			idx[pre_l] = 1.1;
			stone_l = false;
		      }
		    else
		      stone_l = true;
		  }
	      }
	    // frei fuer Rockford?
	    if((idx[pre_l] < 4) && !digger_half_step)
	      {
	        idx[pre_idx] = 1.1;
		d_idx--;
		ton_schritt = true;
	      }
	    idx[d_idx] = digger_step_left + 0.1;
	    digger_step_left++; 
	    if(digger_step_left > 18)
	      digger_step_left = 13;
	  }
	else
	  {
	    // HOCH?
	    if(digger_up)
	      {
	        lastdiggerdir = "UP";
		var pre_h = pre_idx - 20;
		//Diamant und kein Halbschritt?
		if((idx[pre_h] == 3) && !digger_half_step)
		  {
		    score_ges++; 
		    score_punkte += 3;
		    ton_diamant = true;
		  }
		if(((idx[pre_h] == 41) || (idx[pre_h] == 42)) && !digger_half_step) 
		  {
		    score_punkte += 100; 
		    next_raum = true;
		  }
		// frei fuer Rockford?
		if((idx[pre_h] < 4) && !digger_half_step)
		  {
		    idx[pre_idx] = 1.1;
		    d_idx -= 20;
		    ton_schritt = true;
		  }
		idx[d_idx] = digger_step_up + 0.1; 
		if(!digger_half_step)
		 digger_step_up++; 
		if(digger_step_up > 10)
		  digger_step_up = 9; 
	      }
	    else
	      {
	        //RECHTS?
		if(digger_right)
		  {
		    lastdiggerdir = "RIGHT";
		    var pre_r = pre_idx + 1;
	            var pre_rr = pre_idx + 2;
		    //Diamant und kein Halbschritt?
		    if((idx[pre_r] == 3) && !digger_half_step)
		      {
		        score_ges++; 
			score_punkte += 3;
			ton_diamant = true;
		      }
		    if(((idx[pre_r] == 41) || (idx[pre_r] == 42)) && !digger_half_step)
		      {
		        score_punkte += 100; 
			next_raum = true;
		      }
		    // liegt ein Stein im Weg?
		    if((idx[pre_r] == 7) && !digger_half_step)
		      {
		        // ist da Platz zum wegschieben?
			if(idx[pre_rr] == 1)
			  {
			    // bitte 2 Tackte lang drcken!
			    if(stone_r)
			      {
			        idx[pre_rr] = 7.2;
				idx[pre_r] = 1.1;
				stone_r = false;
			      }
			    else
			      stone_r = true;
		          }
		      }
		    if((idx[pre_r] < 4) && !digger_half_step)
		      {
		        idx[pre_idx] = 1.1; 
			d_idx++;
			ton_schritt = true;
		      }
		    idx[d_idx] = digger_step_right + 0.1; 
		    digger_step_right++; 
		    if(digger_step_right > 24)
		      digger_step_right = 19;
		  }
		else
		  {
		    //RUNTER?
		    if(digger_down)
		      {
		        lastdiggerdir = "DOWN";
			//Diamant und kein Halbschritt?
			if((idx[pre_idx + 20] == 3) && !digger_half_step)
			  {
			    score_ges++;
			    score_punkte += 3;
			    ton_diamant = true;
			  }
			if(((idx[pre_idx + 20] == 41) || (idx[pre_idx + 20] == 42)) && !digger_half_step)
			  {
			    score_punkte += 100;
			    next_raum = true;
			  }
			// frei fuer Rockford?
			if((idx[pre_idx + 20] < 4) && !digger_half_step)
			  {
			    idx[pre_idx] = 1.1;
			    d_idx += 20;
			    ton_schritt = true;
			  }
			idx[d_idx] = digger_step_down + 0.1;
			if(!digger_half_step)
			  digger_step_down++;
			if(digger_step_down > 12)
			  digger_step_down = 11;
		      }
		    else
		      lastdiggerdir="IDLE";
		  }
	      }
	  }
      }

    // ROCKFORD TOETEN !!! YEAHHH !!! BOOOM !!!
    if(digger_death && digger_die && !digger_is_dead)
      {
        idx[d_idx-21]=0.1;
	idx[d_idx-20]=0.1;
	idx[d_idx-19]=0.1;
	idx[d_idx-1 ]=0.1;
	idx[d_idx   ]=8.1;
	idx[d_idx+1 ]=0.1;
	idx[d_idx+19]=0.1;
	idx[d_idx+20]=0.1;
	idx[d_idx+21]=0.1;
	digger_die = false;
	digger_is_dead = true;
        icon[8].src = icon[48].src //digger/digger_death.gif
	ton_stein = true;
      }

    // SPIELFELD AKTIVITAETEN
    if(play && !digger_half_step)
      {

        // DIGGER_IDLE (ROCKFORD LANGWEILT SICH UND BLINZELT ODER TRAMMPELT)
	if((lastdiggerdir == "IDLE") && (score_raum > 0))
	  {
	    zufall++;
	    if(zufall > 280)
	      zufall = 1;
	    if((!digger_in_idle) && (idx[zufall] == 7)) //ZUFALL(Stein)
	      {
	        digger_idle_augen = 24;
		digger_in_idle = true;
		idle_augen = true;
	      }
	    else
	    if((!digger_in_idle) && (idx[zufall] == 3)) //ZUFALL(Diamant)
	      {
	        digger_idle_eier = 32;
		digger_in_idle = true;
		idle_augen = false;
	      }
	    if(digger_in_idle)
	      {
		if(idle_augen)
		  {
		    digger_idle_augen++;
		    if(digger_idle_augen == 33)
		      digger_in_idle = false;
		  }
		else
		  {
		    digger_idle_eier++;
		    if(digger_idle_eier == 41)
		      digger_in_idle = false;
		  }
	      }
	   }
	else digger_in_idle = false;
	if(digger_in_idle && idle_augen && !digger_death)
	  {
	    idx[d_idx] = digger_idle_augen + 0.1;
	  }
	else if(digger_in_idle && !digger_death)
	  {
	    idx[d_idx] = digger_idle_eier + 0.1;
	  }

	//STONE/DIAMOND_FALL & GEISTER (STEINE UND DIAMANTEN FALLEN LASSEN)

	// Geister BEWEGEN
	for (l = 1; l < 281; l++)
	  {
	    var pre_m1  = l - 1;
	    var pre_m19 = l - 19;
	    var pre_m20 = l - 20;
	    var pre_m21 = l - 21;
	    var pre_p1  = l + 1;
	    var pre_p19 = l + 19;
	    var pre_p20 = l + 20;
	    var pre_p21 = l + 21;

	    if( idx[l] >= 43 && idx[l] < 47 )
	      {
	        // Zum sterben markierte Geister(nn.2)?
		if( (idx[l] == 43.2) ||
		    (idx[l] == 44.2) ||
		    (idx[l] == 45.2) ||
		    (idx[l] == 46.2) )
		  {
		    // Wenn Rockford in Explosionsnaehe, dann ihn auch killen!
		    if( (idx[pre_m21] >= 8 && idx[pre_m21] < 41) ||
		        (idx[pre_m20] >= 8 && idx[pre_m20] < 41) ||
		        (idx[pre_m19] >= 8 && idx[pre_m19] < 41) ||
			(idx[pre_m1 ] >= 8 && idx[pre_m1 ] < 41) ||
			(idx[pre_p1 ] >= 8 && idx[pre_p1 ] < 41) ||
			(idx[pre_p19] >= 8 && idx[pre_p19] < 41) ||
			(idx[pre_p20] >= 8 && idx[pre_p20] < 41) ||
			(idx[pre_p21] >= 8 && idx[pre_p21] < 41) )
	              {
		        digger_death = true;
			digger_die = true;
	              }
		    // Geist zu Staub
		    idx[pre_m21] = 0.1;
	            idx[pre_m20] = 0.1;
		    idx[pre_m19] = 0.1;
		    idx[pre_m1 ] = 0.1;
		    idx[l      ] = 0.1;
		    idx[pre_p1 ] = 0.1;
		    idx[pre_p19] = 0.1;
		    idx[pre_p20] = 0.1;
		    idx[pre_p21] = 0.1;
		  }
		else
		  {
		    ti = l;
		    // HOCH
		    if( idx[l] == 45 )
		      {
		        if( idx[pre_m20] == 1 )
			  {
			    ti = pre_m20;
			    idx[l] = 1.1;
			    if( (idx[pre_m1] != 1) && (idx[ pre_m21] == 1) )
			      idx[ti] = 46.1;
			    else
			      idx[ti] = 45.1;
			  }
		        else
			  idx[l] = 44.1;
		      }
		    else
		      {
		        // RECHTS
			if( idx[l] == 44 )
			  {
			    if( idx[pre_p1] == 1)
			      {
			        ti = pre_p1;
				idx[l] = 1.1;
				if( (idx[pre_m20] != 1) && (idx[pre_m19] == 1) )
				  idx[ti] = 45.1;
				else
				  idx[ti] = 44.1;
			      }
			    else
			      idx[l] = 43.1;
			  }
			else
			  {
			    // RUNTER
			    if( idx[l]==43 )
			      {
			        if( idx[pre_p20] == 1)
				  {
				    ti = pre_p20;
				    idx[l] = 1.1;
				    if( (idx[pre_p1] != 1) && (idx[pre_p21] == 1) )
				      idx[ti] = 44.1;
				    else
				      idx[ti] = 43.1;
				  }
			        else
				  idx[l] = 46.1;
			      }
			    else
			      {
			        // LINKS
			        if( idx[l] == 46 )
			          {
				    if( idx[pre_m1] == 1)
				      {
				        ti = pre_m1;
				        idx[l] = 1.1;
				        if( (idx[pre_p20] != 1) && (idx[pre_p19] == 1) )
				          idx[ti] = 43.1;
				        else
				         idx[ti] = 46.1;
				      }
			            else
			              idx[l] = 45.1;
			          }
			      }
                          }
		      }
                  }
		//Geist toeten, wenn unter bewegten Stein/Diamant
		if( (idx[ti - 20] == 3.1) || (idx[ti - 20] == 7.1) )
		  {
		    idx[ti] = Math.floor(idx[ti]) + 0.2;
		    ton_stein = true;
		  }
		  
		//Rockford toeten wenn Geist in die Naehe kommt
		if( (idx[ti - 20] >= 8 && idx[ti - 20] < 41) ||
		    (idx[ti - 1 ] >= 8 && idx[ti - 1 ] < 41) ||
		    (idx[ti + 1 ] >= 8 && idx[ti + 1 ] < 41) ||
		    (idx[ti + 20] >= 8 && idx[ti + 20] < 41) )
		  {
		    digger_death=true;
		    digger_die=true;
		  }
	      }
	    else
	      {
	        var pre_p40 = l + 40;
		var pre_p60 = l + 60;
	        //ist da ein Stein ueber einem Changer mit Platz drunter?
		if( (idx[l] == 7) && (idx[pre_p20] == 5) && (idx[pre_p40] == 1) )
		  {
		    idx[pre_p40] = 3.1;
		    idx[l] = 1.1;
		    // trifft er auf einen Gegenstand?
		    if(idx[pre_p60] > 1)
		      {
		        // Ja: Sound abspielen!
		        ton_stein = true;
		        // Rockford: KILLEN!
		        if(idx[pre_p60] >= 8 && idx[pre_p60] < 41)
		          {
		            digger_death = true;
			    digger_die = true;
		          }
		        else
		          {
		            // Geist: KILLEN!
			    if(idx[pre_p60] >= 43 && idx[pre_p60] < 47)
			      idx[pre_p60] = Math.floor(idx[pre_p60]) + 0.2;
		          }
		      }
		  }
		else
		  {
		    //ist da ein Stein oder Diamand?
		    if( (idx[l] == 7) || (idx[l] == 3) )
		      {
		        // Ja: ist da drunter frei?
			if(idx[pre_p20] == 1)
			  {
			    idx[pre_p20] = idx[l] + 0.1;
			    idx[l] = 1.1;
			    // trifft er auf einen Gegenstand
			    if(idx[pre_p40] > 1)
			      {
			        //Ja: Sound abspielen
				ton_stein = true;
			        // Rockford KILLEN
			        if(idx[pre_p40] >= 8 && idx[pre_p40] < 41)
			          {
			            digger_death = true;
				    digger_die = true;
			          }
			        else
			          {
			            // Geist KILLEN
				    if(idx[pre_p40] >= 43 && idx[pre_p40] < 47)
				      idx[pre_p40] = Math.floor(idx[pre_p40]) + 0.2;
			          }
			      }
			  }
			else
			  {
			    // oder ist da drunter ein Stein/Diamant?
			    if( (idx[pre_p20] == 7) || (idx[pre_p20] == 3) )
			      {
			        //links plumpsen!
				if( (idx[pre_m1] == 1) && (idx[pre_p19] == 1) )
				  {
				    idx[pre_m1] = idx[l] + 0.2;
				    idx[l] = 1.1;
				  }
				else
				  {
				    //rechts plumpsen!
				    if( (idx[pre_p1] == 1) && (idx[pre_p21] == 1) )
				    {
				      idx[pre_p1] = idx[l] + 0.2;
				      idx[l] = 1.1;
				    }
				  }
			      }
			  }
		      }
		  }
	      }
	  } // ende: Geister-FOR()
      } // ende: SPIELFELD AKTIVITAETEN

    // Ton abspielen
    if(sound)
      {
        if(ton_diamant) document.SndServer.start(TON_DIAMANT);
        else if(ton_stein) document.SndServer.start(TON_STEIN);
        else if(ton_schritt) document.SndServer.start(TON_SCHRITT);
      }
      ton_schritt = false;
      ton_stein = false;
      ton_diamant = false;
      
    // SPIELFELD REFRESHEN
    for (l = 1; l < 281; l++)
      {
        // EXIT blinken lassen
	if(blink_tick == 0)
	  {
	    if(idx[l] == 41)
	      idx[l] = 42.1;
	    else
	      if(idx[l] == 42)
	        idx[l] = 41.1;
	  }
	// mache den Ausgang sichtbar (bei genuegent Diamanten)
	if(idx[l] == 6)
	  if(score_ges >= score_dia)
	    idx[l] = 41.1;

	i = Math.floor(idx[l]);

	//Staub nach 6 Takten in Leere aufloesen
	if(i == 0)
	  {
	    idx[l] += 0.1;
	    if(idx[l] == 0.6)
	      idx[l] = 1.1;
	  }

	// ICON darstellen
	if(idx[l] > i)
	  {
	    // GIF ueber DOM aendern
	    window.document.images[start_digger_field + l].src = icon[i].src;
	    if( (i > 0) &&
	        (idx[l] != 43.2) &&
		(idx[l] != 44.2) &&
		(idx[l] != 45.2) &&
		(idx[l] != 46.2) )
	      //Staub(0.0 - 0.6) und Geister(nn.2) sollen den Nachkommateil behalten
	      idx[l] = i;
	  }
	}

    // ROCKFORD STOPPEN UND ANIMATION LOESCHEN
    if(play && digger_stop && !digger_death)
      {
        switch(rtaste)
	  {
	    //links
	    case 37: digger_left = false;
	             idx[d_idx] = 8.1;
                     digger_step_left = 13; // Animation zuruecksetzen
		     break;
	    //oben
	    case 38: digger_up = false;
	             idx[d_idx] = 8.1;
		     digger_step_up = 9;
		     break;
	    //rechts
	    case 39: digger_right = false;
	             idx[d_idx] = 8.1;
                     digger_step_right = 19;
		     break;
	    //unten
	    case 40: digger_down = false;
	             idx[d_idx] = 8.1;
		     digger_step_down = 11;
		     break;
          }
	digger_stop = false;
      }

    // STATUSZEILE REFRESHEN (NUR 1x PRO SEKUNDE)
    if(zeit_tick == 1)
      document.getElementById("scoreline").firstChild.data = "ROOM:"+score_raum+" - LIVES:"+score_leben+" - TIME:"+score_zeit+" - SCORE:"+score_punkte+" - DIAMONDS:"+score_ges+"/"+score_dia;
    if((zeit_tick == 0) && play && !digger_death)
      {
        score_zeit--;
	if(score_zeit <= 0)
	  {
	    digger_death = true;
	    digger_die = true;
	  }
      }

    // LEVEL WECHSELN
    if(next_raum)
      {
        score_raum++;
	  if(score_raum > 10)
	    {
	      score_raum--;
	      high_score();
	      score_raum = 0;
	      score_leben = 20;
	      score_punkte = 0;
	    }
	  next_raum = false;
	  init_room(score_raum);
      }

    // ANIMATIONSVORTSCHRITT (Fuer ROCKFORD)
    if(!digger_half_step)
      digger_half_step = true;
    else
      digger_half_step = false;

    // Verzoegerung fuer die Statuszeile
    if(score_raum > 0)
      {
        zeit_tick++;
        if(zeit_tick > 20)
          zeit_tick = 0;
      }

    // Verzoegerung fuer das EIN/AUSgangsblinken
    blink_tick++;
    if(blink_tick > 4)
      blink_tick = 0;

  }
  
  // teste ob der Java-SndServer laeuft
  sound = navigator.javaEnabled();
  //alert("Java enabled: " + navigator.javaEnabled());
  
  init_room(score_raum); // raum(n) darstellen
      
  init_events(); // starte Tastaturabfrage

