// blixen.js
xmax=18; ymax=3; zmax=xmax*ymax;
bild=new Array('leer.gif','blix1.jpg','blix2.jpg','blix3.jpg','blix4.jpg','blix5.jpg');
ima=new Array(); for (i=0; i<bild.length; i++) { ima[i]=new Image(); ima[i].src=bild[i]; }

var zeit,zeit0=180,lastri=1,punkte=0,bonus=0,nfarben=3;
var f=new Array();
var liste=new Array();


function mach_spielfeld()
{ var i,j,k=0,t='<table cellpadding=0 cellspacing=0 style="background-image:url(bgr.jpg)">';
  for (j=0; j<ymax; j++)
  { t=t+'<tr><td><a href="javascript:nach_links('+j+')">';
    t=t+'<img src="links.jpg" width=32 height=32 alt="" border=0 name="l'+j+'"><\/a><\/td>';
    for (i=0; i<xmax; i++)
    { t=t+'<td><img src="blix1.jpg" width=32 height=32 alt="" name="i'+k+'"><\/td>';
      k++;
    }
    t=t+'<td><a href="javascript:nach_rechts('+j+')">';
    t=t+'<img src="rechts.jpg" width=32 height=32 alt="" border=0 name="r'+j+'"><\/a><\/td><\/tr>';
  }
  t=t+'<\/table>';
  return t;
}

function zeige_feld(nr) { document.images['i'+nr].src=ima[f[nr]].src; }

function neu()
{ for (var i=0; i<zmax; i++) { f[i]=Math.floor(3*Math.random())%3+1; zeige_feld(i); }
  aktiv=false;
  if (timrec1) clearTimeout(timrec1);
  check_dreier(false);
  punkte=0;
  bonus=2;
  nfarben=3;
  zeit=zeit0;
  updat_bonus(bonus);
  updat_punkte(punkte);
  aktiv=true;
  countdown();
}

function check_dreier(flag)
{ var i,k;
  liste[0]=0;
  for (i=0; i<xmax; i++) if ((f[i]==f[i+xmax]) && (f[i]==f[i+2*xmax])) add_liste(i,liste);
  if (liste[0]>0) 
  { bonus=bonus+liste[0];
    for (i=1; i<=liste[0]; i++) 
    { k=liste[i]; f[k]=0; if (flag) zeige_feld(k);
      k=k+xmax;   f[k]=0; if (flag) zeige_feld(k);
      k=k+xmax;   f[k]=0; if (flag) zeige_feld(k);
    }
    if (flag)
    { punkte=punkte+5*(nfarben-2)*liste[0];
      document.form1.punkte.value=punkte;
      document.form1.bonus.value=bonus;
    }
  }
  if (liste[0]>0) { if (flag) timrec2=setTimeout('nachruecken('+flag+')',500); else nachruecken(flag); }
  else { aktiv=true; if (bonus<0) gameover(); }
}

function nachruecken(flag)
{ var i,j,k,vptr;
  zaund('klack');
  var v=new Array();
  for (i=0; i<xmax; i++) v[i]=-1;
  if (lastri==3) // fuellen nach links
  { vptr=0; for (i=0; i<xmax; i++) if (f[i]>0) { v[vptr]=i; vptr++; }
    for (i=0; i<xmax; i++) if (v[i]>=0)
    { f[i]=f[v[i]];
      f[i+xmax]=f[v[i]+xmax];
      f[i+2*xmax]=f[v[i]+2*xmax];
    }
    else 
    { f[i]=Math.floor(nfarben*Math.random())%nfarben+1;
      f[i+xmax]=Math.floor(nfarben*Math.random())%nfarben+1;
      f[i+2*xmax]=Math.floor(nfarben*Math.random())%nfarben+1;
    }
  }
  else // fuellen nach rechts
  { vptr=xmax; for (i=xmax-1; i>=0; i--) if (f[i]>0) { vptr--; v[vptr]=i; } 
    for (i=xmax-1; i>=0; i--) if (v[i]>=0)
    { f[i]=f[v[i]];
      f[i+xmax]=f[v[i]+xmax];
      f[i+2*xmax]=f[v[i]+2*xmax];
    }
    else 
    { f[i]=Math.floor(nfarben*Math.random())%nfarben+1;
      f[i+xmax]=Math.floor(nfarben*Math.random())%nfarben+1;
      f[i+2*xmax]=Math.floor(nfarben*Math.random())%nfarben+1;
    }
  }
  for (i=0; i<zmax; i++) zeige_feld(i);
  check_dreier(flag);
}

function nach_links(nr)
{ var i,start=xmax*nr;
  if (aktiv) 
  { for (i=0; i<xmax-1; i++) f[i+start]=f[i+start+1]; f[xmax-1+start]=Math.floor(nfarben*Math.random())%nfarben+1;
    lastri=3; mach_hin(nr);
  }
}
function nach_rechts(nr)
{ var i,start=xmax*nr;
  if (aktiv)
  { for (i=xmax-1; i>0; i--) f[i+start]=f[i+start-1]; f[start]=Math.floor(nfarben*Math.random())%nfarben+1;
    lastri=1; mach_hin(nr);
  }
}
function mach_hin(nr)
{ var i,start=xmax*nr;
  zaund('klick');
  for (i=0; i<xmax; i++) zeige_feld(i+start);
  bonus--; updat_bonus(bonus);
  aktiv=false; check_dreier(true);
}

// =============================================================================================================0

