var Imsrc=new Array("cev.png","ce1.png","cef.png","cegcl.png","aleaup.png","aleadown.png","droiteup.png","droitedown.png","coinstrip.png","fermeup.png","fermedown.png","jeuxup.png","jeuxdown.png","","");

var Im=new Array();
for(var i = 0; i <= 12; i++) { Im[i] = new Image; Im[i].src = Imsrc[i]; }

var tab = new Array(), sommet = new Array(), strip_tab = new Array(), Valn = new Array();
var ncases=13, npions=5, joueur = 0, competition = 0, affiche_noyau = 0, sel = 2;
var initval=0, tm_a, tm_b, tm_k = npions;

for(i=0; i<ncases;i++)  strip_tab[i] = 0;

function alrte(s) {
  document.f.ta.value=s;
}
function myrand(n) { return Math.floor(n*Math.random());}

function selection() {
  var sel = document.f.methode_choix.selectedIndex;
  joueur=0;
  if(sel==2) { competition = 0; affiche_noyau = 0;
  } else if(sel==0) { competition = 0; affiche_noyau = 1;
  } else { competition = 1; affiche_noyau = 0;}
}

function nom_sommet(u) {
  var s="";
  for(var r=0; r<=npions; r++) s = s+u[r]+"_";
  return s;
}

function lavaleur(t) {
  var s1 = nom_sommet(t), v = Valn[s1];
  if(v==0 || v==1) return v; // déjà calculé
  var u = new Array(), test = 1;
  // regarde si c'est la racine
  for(var i=1; test==1 && i <= npions; i++)
    if (t[i] != i) test = 0;
  if(test == 1) {
    Valn[s1] = 1; return 1; // la racine est dans le noyau
  }
  // n'est pas racine et est encore inconnu, on
  // regarde ses successeurs : on bouge un seul pion
  // sur l'une des positions à sa gauche
  test = 1;  // valeur 1 pour noyau
  for(i=1; test==1 && i<=npions; i++) {
    var a = t[i-1]+1;
    var b = t[i];
    for(var j = a; test == 1 && j < b; j++) {
       for(var r = 0; r <= npions; r++) u[r] = t[r];
       u[i] = j; // nouvelle position du pion
       v = lavaleur(u); // récursif
       if(v == 1) test = 0;
    }
  }
  Valn[s1] = test; // peut servir
  return test;
}

function case_gagnante() {
  if(lavaleur(sommet)==1) // on est dans le noyau
    return -1;
  var test = 1;
  var u = new Array();
  for(var i=1; i<=npions; i++) {
    var a = sommet[i-1]+1;
    var b = sommet[i];
    for(var j = a; j < b; j++) {
       for(var r = 0; r <= npions; r++) u[r] = sommet[r];
       u[i] = j; // nouvelle position du pion
       var v = lavaleur(u);
       if(v == 1) return (j-1); // on a trouvé !
    }
  }
}

function choix_case() {
  var c = case_gagnante(), k = 1;
  // c est pas gagné !
  for(var i = ncases-1; c == -1 && i >= 0; i--) {
      if(k && strip_tab[i]==1)  k = 0;
      else if(!k && strip_tab[i]==0)  c = i;
  }
  return c;
}

function cherchesommet() {
  var p=0, i;
  sommet[0] = 0;
  for(i = 0; i< ncases; i++) {
    if(strip_tab[i]==1) {
      p++; sommet[p] = i+1;
    }
  }
}
function a_droite(x) {
   var i = x;
   while(i>=0 && i<ncases && strip_tab[i] == 0 ) i++;
   return (i);
}

function chge_jeton() {
  var wt1 = 100, wt=300, t;
  var sa = "a" + (tm_a);
  var sb = "a" + (tm_b);
  if (tm_k ==1 ) {
     document.images["a" + (tm_a)].src=Im[2].src;
     document.images["a" + (tm_b)].src=Im[3].src;
  } else if (tm_k == 2) {
     document.images["a" + (tm_a)].src=Im[3].src;
     document.images["a" + (tm_b)].src=Im[2].src;
  } else if (tm_k == 3) {
     document.images["a" + (tm_a)].src=Im[1].src;
     document.images["a" + (tm_b)].src=Im[0].src;
  }
  if(tm_k>=0 && tm_k< 3 ) t = setTimeout("chge_jeton()", wt);
  tm_k++;
}

function m_change(x){
  var i = x, j, s1, s2, s;
  if(i>=ncases || (!affiche_noyau && (strip_tab[i] == 1 || a_droite(i)>=ncases))) return;
  if(i < ncases) { // ne sert à rien !
    if (strip_tab[i] == 0) {
      j = a_droite(i);
      if(j<ncases) {
        strip_tab[i] = 1; strip_tab[j] = 0;
        tm_a=i; tm_b=j;
        if(competition && joueur) tm_k = 0;
        else {
         while(tm_k < 4);
         tm_k = 3;
        }
        chge_jeton();
      }
    }
  }
  cherchesommet();
  if(competition && sommet[npions]==npions) {
    if(joueur) {
      //alert("Vous avez perdu.");
      alrte("Vous avez perdu.");
    } else {
      alert("Bravo, vous avez gagné.");
      //alrte("Bravo, vous avez gagné.");
    }
    return;
  }
  s = "";
  for(i=1;i <= npions; i++)
    s = s + (sommet[i] -1) + " ";
  v = 1 - lavaleur(sommet); joueur = 1 - joueur;
  if(competition && joueur) { m_change(choix_case());
  } else if(affiche_noyau) {
    if(v==1) {
      //alert("Disposition : " + s + " Valeur : " + v + "  Perdante");
      alrte("Disposition : " + s + " Valeur : " + v + "  Perdante");
    } else {
      //alert("Disposition : " + s + " Valeur : " + v + "  Gagnante");
      alrte("Disposition : " + s + " Valeur : " + v + "  Gagnante");
    }
  }
}
function str_init(r) {
  var i, u, c;
  tm_k = 4;
  joueur=0;
  document.f.ta.value="";
  for(i = 0; i < ncases; i++) {
    tab[i] = i; strip_tab[i] = 0;
  }
  npions = Math.floor(npions);
  npions = (npions <=0) ? 4 : (npions >=12) ? 4 : npions;
  if(r==0) {
    for(i = 0; i < npions; i++) {
      u = myrand(ncases-i)+i; // Math.floor((ncases-i)*Math.random()) + i;
      c = tab[u]; tab[u] = tab[i]; tab[i] = c;
    }
    for(i=0; i < npions; i++) { strip_tab[tab[i]] = 1; }
  } else if(r==1)
    for(i=1; i <= npions; i++) strip_tab[(ncases - i)] = 1;
  for(i=0; i < ncases; i++)
    document.images["a" + i].src=(strip_tab[i] == 1) ? Im[1].src : Im[0].src;
//    document.images["a" + i].src=(strip_tab[i] == 1) ? "cn.png" : "cb.png";
}

function ectable() {
//  var s="cb.png";
  var s="cev.png";
  document.write('<center>\n<table class="tab" border=0 cellpadding=0 cellspacing=0>\n<tr>\n');
  for(var i=0;i<ncases;i++) {
      var u="a"+i;
//    document.write('<td><a href="javascript:m_change('+i+')"><img\n');
//    document.write(' name='+u+' src="'+ s +'"  border=0 width="40" height="40" alt=""></a></td>');
    document.write('<td><img\n style="cursor: pointer; cursor: hand" name='+u+' src='+ s +'  border=0 width=40 height=40 alt=""');
    document.write(' onclick="javascript:m_change('+i+')" ></td>');
  }
  document.write('</tr>\n<tr>\n');
  for(i=0;i<ncases;i++) {
    document.write('<td align="center">'+i+'</td>\n');
  }
  document.write('</tr>\n</table>\n</center>\n');
}

