
function Rows()
{
  var tableOfContents = document.getElementById("puzzle");
  var rows   = tableOfContents.getElementsByTagName("tr");
  return (rows.length);
}

function Reset()
{
  var trows  = Rows();
  var tminus = trows - 1;

  for (var line=0;line<tminus;line++)
  {
    for (var column=0;column<tminus;column++)
    {
      var offset = (line * trows) + column;
      document.sudtable.elements[offset].style.backgroundColor = "#FFFFFF";
    }
  }
}

function ErrCol(xy1, xy2)
{
  document.sudtable.elements[xy1].style.backgroundColor = "#FF0000";
  document.sudtable.elements[xy2].style.backgroundColor = "#FF0000";
}

function Check()
{   

  Reset();

  var trows  = Rows();
  var tminus = trows - 1;

  var ablank = 0;

  for (var line=0;line<trows;line++)
  {
    for (var column=0;column<trows;column++)
    {
      var offset = (line * trows) + column;
      var comp   = document.sudtable.elements[offset].value;

      if (comp == "") 
      {
        ablank = 1;
      }

      if (comp != '' && (comp > trows || comp < 1))
      {
         ErrCol(offset,offset);

         alert('ERREUR Ligne: ' + (line+1) + ' - Colonne ' + (column+1) + '.\n\n>> Le chiffre doit être compris entre 1 et ' + trows);
         return false;
      }

      if (column<tminus)
      {
        for (var pointer=column+1;pointer<trows;pointer++)
        {
          var offset2 = (line * trows) + pointer;

	  var comp2   = document.sudtable.elements[offset2].value;

          if (comp == comp2 && comp != "")
          {
            ErrCol(offset,offset2);

            alert('ERREUR Ligne: ' + (line+1) + ' - Colonne ' + (column+1) + '\n\n>> doublon avec colonne ' + (pointer+1) );

            return false;

          }
        } // Move along the line from the exam point
      } // No need comparing the last in the column

      if (line<tminus)
      {
        for (var pointer2=line+1;pointer2<trows;pointer2++)
        {
          offset2 = (pointer2 * trows) + column;
          comp2   = document.sudtable.elements[offset2].value;

          if (comp == comp2 && comp != "")
          {
            ErrCol(offset,offset2);

            alert('ERREUR Colonne: ' + (column+1) + ' - Ligne ' + (line+1) + '\n\n>> doublon avec ligne ' + (pointer2+1));

            return false;
          }
        }
      } // No need to compare the last line in the table
    } // Move the exam point along the line
  } // Move down

  if (ablank == 0)
  {
    alert ('FELICITATIONS !!! \n\n Vous avez terminé la grille avec succès !!');
  }
  else
  {
    alert ('Jusque là...\n\npas d\'erreur');
  }
  
  return false;
} 


if (navigator.appName != "Netscape"){
        is_ns=false; layerbr="all"; showbr="visible"; hidebr="hidden"; stylebr=".style";
} else {
	//is_ns=true; layerbr="layers"; showbr="show"; hidebr="hide";stylebr="";
	is_ns=false; layerbr="all"; showbr="visible"; hidebr="hidden"; stylebr=".style";
}

function show_choice(i,j){
        cible = (i*9)+j;
        pos_x = (j*51)+(j);
        pos_y = (i*52)+185+(i*2);
        eval("document."+layerbr+"['choices']"+stylebr+".left='"+pos_x+"'");
        eval("document."+layerbr+"['choices']"+stylebr+".top='"+pos_y+"'");
	eval("document."+layerbr+"['choices']"+stylebr+".visibility='"+showbr+"'");
}

function hide_me(){
	eval("document."+layerbr+"['choices']"+stylebr+".visibility='"+hidebr+"'");
}

function set_choice(thisnum){
        offset=cible;
        document.sudtable.elements[offset].value=thisnum;
        document.sudtable.elements[offset].style.backgroundImage = 'url(jeux/sudoku/'+thisnum+'.gif)';
        pas_vide=0;
            for(i=0;i<=80;i++)
    {
        if(document.sudtable.elements[i].value=="")
        {
        pas_vide=1;
        }

    }
    if(pas_vide==0){Check();}

}
