var closed = new Array(64);

var imgQueen = new Image(21,21);
var imgEmpty = new Image(21,21);
var imgDot = new Image(21,21);
var id=0;
var count=0;

imgQueen.src = "queen.gif";
imgEmpty.src = "empty.gif";
imgDot.src = "dot.gif";

for (var r=0; r<8; r++)    //8 rows
{
  document.write('<tr>');
  for (var c=0; c<8; c++)  //8 columns
  {
    id=(r*8)+c;            //calculate cell id
    document.write('<td id='+id+' onclick=\"placeq(this);\">');
    document.write('<img src="empty.gif"></td>');
  }
  document.write('</tr>');
}

function placeq (cell)
{
  var q = eval(cell.id);
  var r = Math.floor(q /8);
  var c = q % 8;
  var min = Math.min(r,c);
  var max = Math.max(r,c);

  if ( (document.images[q].src == imgEmpty.src) && (safe(q)) )
  {
    //document.images[q].src = imgQueen.src;
    count++;
    for (var h=r*8; h<(r*8)+8; h++)
    { closed[h]=h; document.images[h].src=imgDot.src; }

    for (var v=c; v<64; v=v+8)
    { closed[v]=v; document.images[v].src=imgDot.src; }

    if (c>r) { var x1=c-r; var x2=q+(9*(8-c)); }
    else { var x1=(r-c)*8; var x2=q+(9*(8-r)); }
    for (var x=x1; x<x2; x=x+9)
    { closed[x]=x; document.images[x].src=imgDot.src; }

    if (r+c>7) { var y1=q-((7-c)*7); var y2=q+(7*(8-r)); }
    else { var y1=r+c; var y2=q+(8*c); }
    for (var y=y1; y<y2; y=y+7)
    { closed[y]=y; document.images[y].src=imgDot.src; }

    document.images[q].src = imgQueen.src;
  }
  if (count == 8)
    alert("Exclente trabalho, você conseguiu!!!!!");
  if (count > 8)
    alert("Você foi além da conta!!!!");
}

function safe (q)
{ //safe position to place queen on board
  if ( closed[q]==q )
    return false;
  else
    return true;
}

function help ()
{ //help print an example of 8 queens
  var a = new Array(0,12,23,29,34,46,49,59);
  clearBoard();
  for (var i=0; i<8; i++)
    window.document.images[ a[i] ].src = imgQueen.src;
  count=8;
  for (var q=0; q<64; q++)
    closed[q] = q;
}

function clearBoard ()
{ //clear the image array
  for (var i=0; i<64; i++)
    window.document.images[i].src = imgEmpty.src;
  count=0;
  closed = new Array(64);
}

