// Laby3D Spiel
var i,posi,ri,start,ziel,xmax,ymax,zmax,t,to,win1,win2,karte_offen;
var aktiv=true;
var bgpix=new Array('gummizelle','derletzteversuch','schatzkammer','aquarium','coolingdown','mauerwerk','paprika','nilschlamm','rauhfaser','liebesnest',                                       'ausgang_vorne','ausgang_vorne','leer','fenster_hinten','fenster_rechts','fenster_links','fenster_rechtshinten','fenster_linkshinten');

var aus1=10; aus2=11,fenster=12;

var bgima=new Array();
for (i=0; i<fenster; i++) { bgima[i]=new Image(); bgima[i].src=bgpix[i]+'.jpg'; }
for (i=fenster; i<bgpix.length; i++) { bgima[i]=new Image(); bgima[i].src=bgpix[i]+'.gif'; }

// zuerst v,dann r,l,o,u
var pix=new Array('leer','v','r','rv','l','lv','lr','lrv','o','ov','ro','rov','lo','lov','rlo','rlov','u','uv','ru','ruv','lu','luv','lru','lruv','ou','ouv','rou','rouv','lou','louv','lrou','lrouv');
var ima=new Array(); for (i=0; i<pix.length; i++) { ima[i]=new Image(); ima[i].src=pix[i]+'.gif'; }

var dim=new Array();
var f=new Array();

function laden()
{ var obj=document.form2.level;
  var k=obj.selectedIndex;
  k=parseInt(obj[k].value);
  ladelevel(k);
}

function ladelevel(nr)
{ if (get_level(nr))
  { xmax=dim[0]; ymax=dim[1]; zmax=dim[2];
    posi=start;
    ri=0;
    var xx=ziel%xmax,yy=Math.floor((ziel%(xmax*ymax))/xmax),zz=Math.floor(ziel/(xmax*ymax));
    to='Ausgang: Ebene '+zz+', ';
    if (yy==0) { if (xx==0) to=to+'NW-Ecke'; else if (xx==xmax-1) to=to+'NO-Ecke'; else to=to+'Nordseite'; }
    else if (yy==ymax-1) { if (xx==0) to=to+'SW-Ecke'; else if (xx==xmax-1) to=to+'SO-Ecke'; else to=to+'Südseite'; }
    else if (xx==0) to=to+'Westseite';
    else if (xx==xmax-1) to=to+'Ostseite';
    else to=to+'irgendwo in der Mitte';
    karte_schliessen();
    zeige_raum(posi,ri);
  }
}

function zeige_karte()
{ win1=this;
  win2=window.open("","Karte","width=592,height=376,scrollbars=yes,resizable=yes");
  win2.document.open();
  win2.document.writeln('<html><body style="background-image:url(papier.png); color:#009; font-style:italic; border:solid 16px #986; padding:24px">');
  win2.document.writeln('<h3>Karte:<\/h3><p><img src="pix/block0.gif" width=16 alt=""> kein Ausgang nach oben oder unten<br>');
  win2.document.writeln('<img src="pix/block16.gif" width=16 alt=""> Ausgang nach oben<br><img src="pix/block32.gif" width=16 alt=""> Ausgang nach unten<br>');
  win2.document.writeln('<img src="pix/block48.gif" width=16 alt=""> Ausgang nach oben und unten<br><\/p><table border=1 cellpadding=0 cellspacing=4><tr>');
  var i,j,k,kk=0,t='';
  for (k=0; k<zmax; k++)
  { t=t+'<td><table border=0 cellpadding=0 cellspacing=0>';
    for (j=0; j<ymax; j++)
    { t=t+'<tr>';
      for (i=0; i<xmax; i++) 
      { t=t+'<td>';
        if (kk==posi) t=t+"<img src=\"marke.gif\""; else if (kk==ziel) t=t+"<img src=\"mziel.gif\""; else t=t+"<img src=\"leer.gif\"";
        t=t+" name=\"\i"+kk+"\" style=\"background:url(pix/block"+f[kk]+".gif); width:32px; height:32px\" alt=\"\"><\/td>"; 
        kk++;
     }
     t=t+'<\/tr>';
   }
   t=t+'<\/table>';
   t=t+'<\/td>';
   if (k>0) if (k%2==1) t=t+'<\/tr><tr>';
 }
 t=t+'<\/tr><\/table>';
 win2.document.writeln(t+'<br clear=all>');
 win2.document.writeln('<p>Start: Raum '+start+', Ausgang: Raum '+ziel+'<br>');
 win2.document.writeln('Position: Raum <span id="mypos">'+posi+'<\/span><\/p>');
 win2.document.writeln('<a class="butt" href="javascript:this.close()">Karte schließen</a>');
 win2.document.writeln('<\/body><\/html>');
 win2.document.close();
 win2.focus();
 karte_offen=true;
 win1.document.form1.out.value+=" - Bitte ins Bild klicken!";
}

function karte_schliessen() { karte_offen=false; try { win2.close(); } catch(e) {} }

function zeige_raum(nr,ri)
{ var i=dim[0]*dim[1];
  var j=nr%i;             // lin.Koo in Ebene
  var k=Math.floor(nr/i); // Ebene
  document.getElementById('hgr').style.backgroundImage='url('+bgima[k].src+')';
  // Fenster in Aussenwand berücksichtigen:
  var aussen=0;
  k=0;
  if (j<dim[0]) aussen=aussen+1;
  if (j>i-dim[0]) aussen=aussen+4;
  if (j%dim[0]==0) aussen=aussen+8;
  if (j%dim[0]==dim[0]-1) aussen=aussen+2;
  if (aussen>0)
  { k=fenster;
    switch(ri)
    { case 0: switch(aussen)
              { case 1: k=fenster+1; break;
                case 2: k=fenster+2; break;
                case 3: k=fenster+4; break;
                case 4: break;
                case 6: k=fenster+2; break;
                case 8: k=fenster+3; break;
                case 9: k=fenster+5; break;
                case 12: k=fenster+2; break;
              }
              break;
      case 1: switch(aussen)
              { case 1: k=fenster+3; break;
                case 2: k=fenster+1; break;
                case 3: k=fenster+5; break;
                case 4: k=fenster+2; break;
                case 6: k=fenster+4; break;
                case 8: break;
                case 9: k=fenster+3; break;
                case 12: k=fenster+2; break;
              }
              break;
      case 2: switch(aussen)
              { case 1: break;
                case 2: k=fenster+3; break;
                case 3: k=fenster+3; break;
                case 4: k=fenster+1; break;
                case 6: k=fenster+5; break;
                case 8: k=fenster+2; break;
                case 9: k=fenster+2; break;
                case 12: k=fenster+4; break;
              }
              break;
      case 3: switch(aussen)
              { case 1: k=fenster+2; break;
                case 2: break;
                case 3: k=fenster+2; break;
                case 4: k=fenster+3; break;
                case 6: k=fenster+3; break;
                case 8: k=fenster+1; break;
                case 9: k=fenster+4; break;
                case 12: k=fenster+5; break;
              }
              break;
    }
  }
  var rtext="";
  if (posi==ziel) k=aus2;
  document.getElementById('zimmer').style.backgroundImage='url('+bgima[k].src+')';

  // Gänge einzeichnen:
  k=0;
  switch(ri)
  { case 0: if (f[nr]%2>0) k=k+1;
            if (f[nr]%4>1) k=k+2;
            if (f[nr]%16>7) k=k+4;
            if (f[nr]%32>15) k=k+8;
            if (f[nr]%64>31) k=k+16;
            rtext="Nord";
            break;
    case 1: if (f[nr]%2>0) k=k+4;
            if (f[nr]%4>1) k=k+1;
            if (f[nr]%8>3) k=k+2;
            if (f[nr]%32>15) k=k+8;
            if (f[nr]%64>31) k=k+16;
            rtext="Ost";
            break;
    case 2: if (f[nr]%4>1) k=k+4;
            if (f[nr]%8>3) k=k+1;
            if (f[nr]%16>7) k=k+2;
            if (f[nr]%32>15) k=k+8;
            if (f[nr]%64>31) k=k+16;
            rtext="Süd";
            break;
    case 3: if (f[nr]%2>0) k=k+2;
            if (f[nr]%8>3) k=k+4;
            if (f[nr]%16>7) k=k+1;
            if (f[nr]%32>15) k=k+8;
            if (f[nr]%64>31) k=k+16;
            rtext="West";
            break;

  }
  document.form1.out.value='Raum-Nr:'+nr+' - Blickrichtung: '+rtext+' --- '+to;
  if (karte_offen)
  { try
    { win2.document.getElementById('mypos').firstChild.nodeValue=nr; 
      for (var i=0; i<xmax*ymax*zmax; i++) if (posi==i) win2.document.images['i'+i].src="marke.gif"; else win2.document.images['i'+i].src="leer.gif";
    }
    catch(e) { karte_offen=false; }
  }
  if (nr==ziel) k=0;
  document.images['zimmer'].src=ima[k].src;
}

function nach_links()  { ri=(ri+3)%4; zeige_raum(posi,ri); }
function nach_rechts() { ri=(ri+1)%4; zeige_raum(posi,ri); }
function wenden()      { ri=(ri+2)%4; zeige_raum(posi,ri); }
function vorwaerts()
{ var oldpos=posi;
  switch(ri)
  { case 0: if (f[posi]%2>0) posi=posi-xmax; break;
    case 1: if (f[posi]%4>1) posi=posi+1; break;
    case 2: if (f[posi]%8>3) posi=posi+xmax; break;
    case 3: if (f[posi]%16>7) posi=posi-1; break;
  }
  zeige_raum(posi,ri);
  if (posi!=ziel) if (posi==oldpos) sternchen_on(6);
}
function rauf()   { if (f[posi]%32>15) posi=posi+xmax*ymax; zeige_raum(posi,ri); }
function runter() { if (f[posi]%64>31) posi=posi-xmax*ymax; zeige_raum(posi,ri); }


function abmarsch(cc)
{ if (posi!=ziel) switch(cc)
  { case 66: wenden(); break;
    case 32: vorwaerts(); break;
    case 37: nach_links(); break;
    case 38: rauf(); break;
    case 39: nach_rechts(); break;
    case 40: runter(); break;
  }
}

function sternchen_on(cnt)  { aktiv=false; document.getElementById('sternchen').style.visibility="visible"; setTimeout('sternchen_off('+cnt+')',50); }
function sternchen_off(cnt) { document.getElementById('sternchen').style.visibility="hidden"; if (cnt>0) setTimeout('sternchen_on('+(cnt-1)+')',50); else aktiv=true; }
// ========================================================================================================================================================================
