var color; // Type of color
var color1, color2, color3, color4, color5; // color ball count
var minCol, maxCol, maxRow;
var score;
var Spielfeld = new Array();
var tSpielfeld = new Array();
var hovered; // hervorgehobene Steine
var level=1;
var finished=0;
var isstart=false;
for (var i = 0; i < 15; i++)
{
 Spielfeld[i] = new Array();
 tSpielfeld[i] = new Array();
}

function findAdj(column,row,color)
{
 if (color == 0) return false;
 var notFound = 4;//for four dirs
 if (row < 14) { if (Spielfeld[column][parseInt(row)+1] != color) notFound--; } else notFound--;
 if (row > 0) { if (Spielfeld[column][row-1] != color) notFound--; } else notFound--;
 if (column < 14) { if (Spielfeld[parseInt(column)+1][row] != color) notFound--; } else notFound--;
 if (column > 0) { if (Spielfeld[parseInt(column)-1][row] != color) notFound--; } else notFound--;
 if (notFound == 0) return false;

 return true;
}
function canRemove(column, row)
{    if(!isstart){
       isstart=true;
       timer();
   }
 if (findAdj(column, row, Spielfeld[column][row]) == false) return false;

 minCol = column;
 maxCol = column;
 maxRow = row;

 score = 0;
 moveCell(column, row, Spielfeld[column][row]);

 var abstand = 0;

 for (var k = minCol; k <= maxCol; k++)
 {
   abstand = 0;
   for (var i = maxRow; i > 0; i--)
   {
     if (Spielfeld[k][i] == 0)
     {
       for (var j = i-1; j >= 0;j--)
       {
         if (Spielfeld[k][j] != 0)
         {
           if (abstand == 0) abstand = i - j;
           Spielfeld[k][j+abstand] = Spielfeld[k][j];
           document.images[('S'+k+'_'+(j+abstand))].src = Spielfeld[k][j+abstand]+'.png';
           Spielfeld[k][j] = 0;
           document.images[('S'+k+'_'+j)].src = '0.png';
         }
         else if (abstand != 0) abstand++;
       }
            }
   }
 }

 abstand = 1;
 if (maxRow == 14) for (Spalte = 0; Spalte < 14; Spalte++)
 {
   if (Spielfeld[Spalte][14] == 0)
   {
     for (var SpalteTemp = Spalte+1; SpalteTemp < 15; SpalteTemp++)
     {
       if (Spielfeld[SpalteTemp][14] == 0) { abstand++; continue; }
       for (Zeile = 14; Zeile >= 0; Zeile--)
       {
         if (Spielfeld[SpalteTemp][Zeile] == 0) break;
         Spielfeld[SpalteTemp-abstand][Zeile] = Spielfeld[SpalteTemp][Zeile];                       document.images[('S'+(SpalteTemp-abstand)+'_'+Zeile)].src = Spielfeld[SpalteTemp-abstand][Zeile]+'.png';
         Spielfeld[SpalteTemp][Zeile] = 0;
         document.images[('S'+SpalteTemp+'_'+Zeile)].src = '0.png';
       }
     }
   }
 }
   if(score>5){
         document.getElementById('score').value = parseInt(document.getElementById('score').value) + 2*(score-1);
   }
   else{
     document.getElementById('score').value = parseInt(document.getElementById('score').value) + score-1;
   }

 // gucken, ob das Spiel zuende ist
 var isOver = false;
 for (i = 0; i < 15; i++)
 {
   for (j = 14; j > 0; j--)
   {
     if (Spielfeld[i][j] != 0)
     {
       if (i > 0)  if (Spielfeld[i][j] == Spielfeld [i-1][j]) { isOver = true; break; }
       if (i < 14) if (Spielfeld[i][j] == Spielfeld [i+1][j]) { isOver = true; break; }
       if (j > 0)  if (Spielfeld[i][j] == Spielfeld [i][j-1]) { isOver = true; break; }
       if (j < 14) if (Spielfeld[i][j] == Spielfeld [i][j+1]) { isOver = true; break; }
     }
   }
   if (isOver == false) true;
 }
 if (isOver == false)
 {
   score = 0;
   for (i = 0; i < 14; i++)
     for (j = 0; j < 14; j++)
       if (Spielfeld[i][j] != 0) score +=1;
   var moves=document.getElementById('score').value;
   finished=1;
   clearTimeout(timera);
   testAjaxa(moves,timee,"reverse");
   //alert('Game Over');
 }
    
 return true;
}

function moveCell(column,row,color)
{
 if (Spielfeld[column][row] == color)
 {
   document.getElementById('color'+color).value--;
   score++;
   if (column < minCol) minCol = column;
   if (column > maxCol) maxCol = column;
   if (row > maxRow)    maxRow = row;

   document.images[('S'+column+'_'+row)].src = '0.png';
   document.images[('S'+column+'_'+row)].className = '';
   Spielfeld[column][row] = 0;

   if (column != 0)  moveCell(column-1,row,color);
   if (column != 14) moveCell(parseInt(column)+1,row,color);
   if (row != 0)     moveCell(column,row-1,color);
   if (row != 14)    moveCell(column,row+1,color);
 }
}

function startup()
{
 color1 = 0;
 color2 = 0;
 color3 = 0;
 color4 = 0;
 color5 = 0;

 for (i = 0; i < 15; i++)
 {
   for (var j = 0; j < 15; j++)
   {
     randomnr = Math.floor((Math.random() * 5));
     switch (randomnr)
     {
       case 0:
   {
       color = 1;
       color1++;
       break;
   }
       case 1:{
       color = 2;
       color2++;
       break;
   }
       case 2:{
       color = 3;
       color3++;
       break;
   }
       case 3:{
       color = 4;
       color4++;
       break;
   }
       case 4:{
       color = 5;
       color5++;
       break;
   }
     }
     document.images[('S'+j+'_'+i)].src = color+'.png';
     Spielfeld[j][i] = color;
   }
 }
 for (i = 1; i < 6; i++){
       document.getElementById('color'+i).value = eval('color'+i);
 }
 document.getElementById('score').value = 0;
}
