var t=new Array(20) // pálya: 21==19+2 o"rszem
for (var y=0;y<t.length;y++) 
{
  var u=t[y]=Array(t.length);
  for (var x=0;x<u.length;x++) u[x]=2;
}

// gépi stratégia
var TotalLines, Line=Array(Array(21),Array(21),Array(21),Array(21))
var Value=Array(21), WinningLine, W=Array(0,0,565,2130,7483,43848), X, Y
function initGame() 
{
  for (var i=1;i<20;i++) 
  {
    if (!Value[i]) Value[i]=Array(21);
    for (var j=0;j<20;j++) 
    {
      if (!Value[i][j]) Value[i][j]=Array(2)
      Value[i][j][0]=Value[i][j][1]=0
      for (var d=0;d<4;d++) 
      {
        if (!Line[d][i]) Line[d][i]=Array(21);
        if (!Line[d][i][j]) Line[d][i][j]=Array(2);
        Line[d][i][j][0]=Line[d][i][j][1]=0;
      }
    }
  }
  
  TotalLines=4*(19*15+15*15)
  for (var i=1;i<20;i++)
  {
  	for (var j=0;j<20;j++)
  	{
  		if (t[i][j]!=2)
  		{
    		MakeMove(i, j, t[i][j]);
    	}
    }
	}
}

function Add(Linedxy, d) 
{
  if (++Linedxy[jon]==1) TotalLines--
  if (Linedxy[jon]==5 && WinningLine==4) WinningLine=d
}

function Update(Lin,Valu) 
{
  if (Lin[1-jon]==0) Valu[jon]+=W[Lin[jon]+1]-W[Lin[jon]]
  else if (Lin[jon]==1) Valu[1-jon]-=W[Lin[1-jon]+1]
}

function MakeMove(Y,X) 
{
  var Y1,X1,K,L
  
  for (K=0;K<5;K++) 
  { 
  	Y1 = Y - K; X1 = X;
    if ((1 <= Y1) && (Y1 < 16)) 
    {
      Add(Line[0][Y1][X1], 0)
      for (L=0;L<5;L++) Update(Line[0][Y1][X1], Value[Y1 + L][X1]);
  	}
  }
  
  for (K=0;K<5;K++) 
  {
  	Y1 = Y - K; X1 = X - K;
    if((1 <= Y1) && (Y1 < 16) && (0 <= X1) && (X1 < 16)) 
    {
      Add(Line[1][Y1][X1], 1);
      for (L=0;L<5;L++) Update(Line[1][Y1][X1], Value[Y1 + L][X1 + L]);
  	}
  }
  
  for (K=0;K<5;K++) 
  { 
  	Y1 = Y + K; X1 = X - K;
    if((5 <= Y1) && (Y1 < 20) && (0 <= X1) && (X1 < 16)) 
    {
      Add(Line[2][Y1][X1], 2);
      for (L=0;L<5;L++) Update(Line[2][Y1][X1], Value[Y1 - L][X1 + L]);
  	}
  }
  
  for (K=0;K<5;K++)
  { 
  	Y1 = Y; X1 = X - K;
    if ((1 <= X1) && (X1 < 16)) 
    {
      Add(Line[3][Y1][X1], 3);
      for (L=0;L<5;L++) Update(Line[3][Y1][X1], Value[Y1][X1 + L]);
  	}
  }
  t[Y][X]=jon
}

function FindMove() 
{
  X=10, Y=10; var I, J, Max=t[Y][X]==2?128:-1
  for (I=1;I<20;I++) for (J=0;J<20;J++) if (t[I][J]==2) 
  {
    Valu=(Value[I][J][jon]*19>>4)+Value[I][J][1-jon]+Math.floor(Math.random()*100)
    if (Valu>Max) { X=J; Y=I; Max=Valu }
  }
}

var kepek=new Array
(
	"./_games/Game_1/iksz.gif", 
	"./_games/Game_1/kor.gif", 
	"./_games/Game_1/ures.gif", 
	"./_games/Game_1/ikszrak.gif",
	"./_games/Game_1/korrak.gif"
);

for (var i=0;i<kepek.length;i++)
{
	(new Image(30,30)).src=kepek[i]
	//(new Image(30,30)).src=kepek[6]
}

var jon=1, pc=0, folyik=1; 
initGame() // ember kezd körrel

function rajzol() 
{ // HTML IMG tag-ek rajzolása
  for (var y=1;y<t.length-1;y++) 
  {
    if (y>1) document.write('<BR>');
    for (var x=1;x<u.length-1;x++)
      document.write("<A"+
        " onMouseOver='ra("+x+","+y+",folyik?jon+3:2);return true'"+
        " onMouseOut='ra("+x+","+y+",t["+y+"]["+x+"]);return true'"+
        " HREF='javascript:void(rak("+x+","+y+"))'>"+
        "<IMG BORDER=0 NAME=ix"+x+"y"+y+
        " HEIGHT=30 WIDTH=30 SRC='" + kepek[2] + "'></A>");
  }
}

function uj()
{ // törlés, új játék kezdése
  folyik=1
  for (var y=1;y<t.length-1;y++) for (var x=1;x<t[y].length-1;x++)
    if (t[y][x]!=2) ra(x,y,t[y][x]=2)
  initGame();
  
  if (jon==pc)
  {
  	jon=1; // vesztes kezd körrel
    FindMove();
    MakeMove(Y,X);
    document.images["ix"+X+"y"+Y].src=kepek[jon];
    jon=1-jon;
  } 
	else
	{
		jon=1;
	}
  pc=1-jon;
  
  /* onClick-nek, ld lent */  
  return false;
}

function ra(x,y,szin)
{
  if (t[y][x]==2)
  {
  	document.images["ix"+x+"y"+y].src=kepek[szin];
  }
}

function rak(x,y)
{
  if (folyik && t[y][x]==2)
  {
    MakeMove(y,x);
    jon=1-jon;
    var im=document.images["ix"+x+"y"+y];
    if (nyert_e(x,y))
    {
    	im.src=kepek[1]; folyik=0;
    }
  	else
  	{
  		im.src=kepek[1-jon];
  		csere();
  	}
  }
}

function csere()
{
  FindMove();
  MakeMove(Y,X);
  jon=1-jon;
  var im=document.images["ix"+X+"y"+Y];
  if (nyert_e(X,Y))
  {
  	im.src=kepek[0];
  	folyik=0;
  }
	else
	{
		im.src=kepek[1-jon];
	}
}

function szamol(x,y,dx,dy)
{
  var mit=t[y][x]; // egyformákat keres egy irányban
  var c=0;
  do x+=dx, y+=dy, c++; while (t[y][x]==mit);
  return c;
}

function nyert_e(x,y)
{
  return 5<szamol(x,y,-1,-1)+szamol(x,y,1,1)
      || 5<szamol(x,y,1,-1)+szamol(x,y,-1,1)
      || 5<szamol(x,y,1,0)+ szamol(x,y,-1,0)
      || 5<szamol(x,y,0,1)+ szamol(x,y,0,-1);
}

