<!--
// Auteur : Frédéric MAIRE (c) 1997 All right reserved
// Game : Super Mastermind
// Date : 1997
// Version : 1.0

var kMaxCoul;
var kMaxTrou;
var kMaxEssai;
kMaxCoul = 6;
kMaxTrou = 4;
kMaxEssai = 6;

function lireCookie() {
info = getCookie( "FM_SMastermind")
  if (info.length!=0) {
    kMaxCoul = eval(info.charAt( 8))
    kMaxTrou = eval(info.charAt( 15))
    kMaxEssai = eval(info.charAt( 23)) + 1
  }
  //alert( kMaxCoul + " - " + kMaxTrou + " - " + kMaxEssai)
}
function lireInfo() {
info = self.location.search
  if (info.length==12) {
    kMaxCoul = eval(info.charAt(3))
    kMaxTrou = eval(info.charAt(7))
    kMaxEssai = eval(info.charAt(11)) + 1
  }
}

//-------------------
// Lecture info 
//lireCookie();
lireInfo();

function rndColor() {
   return Math.round( Math.random()*kMaxCoul + 0.5) ;
}

var NbImg;
NbImg = kMaxTrou*2;

var Combinaison;
var CombiEnCours;
var FicheImg;
var FicheIncImg;
var ResImg;
var LigneEnCours;
var Vu;
var Stat;
var EstFini;
var EstStart;

EstStart = false;
EstFini = true;
LigneEnCours = 0;

function initAll() {
    Vu = new Array(kMaxTrou)
    Stat = new Array(kMaxEssai+2)
    // les valeurs
    Combinaison = new Array(kMaxTrou)
    CombiEnCours = new Array(kMaxTrou)
    // les images correspondant aux fiches
    FicheIncImg = new Array(kMaxCoul+1)
    FicheImg = new Array(kMaxCoul+2)
       FicheIncImg[0] = new Image(32,32)
       FicheIncImg[0].src = "hole.gif"
       FicheImg[0] = new Image(32,32)
       FicheImg[0].src = "hole.gif"
       FicheImg[kMaxCoul+1] = new Image(32,32)
       FicheImg[kMaxCoul+1].src = "fvide.gif"
    for (i=1; i<kMaxCoul+1; i++) {
       FicheImg[i] = new Image(32,32)
       FicheImg[i].src = "fiche" + eval(i) + ".gif"
       FicheIncImg[i] = new Image(32,32)
       FicheIncImg[i].src = "ffiche" + eval(i) + ".gif"
    }
    // les fiches resultats
    ResImg = new Array(3)   
    ResImg[0] = new Image(16,16)
    ResImg[0].src = "shole.gif"
    ResImg[1] = new Image(16,16)
    ResImg[1].src = "fwhite.gif"
    ResImg[2] = new Image(16,16)
    ResImg[2].src = "fblack.gif"
}

function initStat() {
    for (i=0; i<Stat.length; i++) Stat[i] = 0;
}

function affStat() {
    document.StatPlay[0].value = Stat[0]
    for (i=1; i<kMaxEssai; i++) {
      document.StatPlay[i+3].value = Stat[i+1]
    }

    document.StatPlay[1].value = Stat[kMaxEssai+1]
    
    gagne = 0
    for (i=1; i<kMaxEssai+1; i++) {
        gagne += Stat[i]
    }
    document.StatPlay[2].value = gagne
}

function nouveauJeu() {
    Stat[0]++
    EstFini = false
    // efface le jeu precedent
    for (i=0; i<kMaxEssai; i++) {
        for (j=0; j<kMaxTrou; j++) {
            document.images[i*NbImg + j].src = ResImg[0].src
        }
        for (j=0; j<kMaxTrou; j++) {
            document.images[i*NbImg + j+kMaxTrou].src = FicheImg[0].src
        }
    }
    // choix combinaison
    for (i=0; i<kMaxTrou; i++) {
        document.images[kMaxEssai*NbImg + i].src = FicheImg[kMaxCoul+1].src
        Combinaison[i] = rndColor();
    }
    LigneEnCours = 0;

    affStat();

    EstStart = true;
}

function revele() {
    for (i=0; i<kMaxTrou; i++) {
        document.images[kMaxEssai*NbImg+i].src = FicheImg[Combinaison[i]].src
    }
    affStat()
}

function abandon() {
    if (!EstFini) {
        EstFini = true
        LigneEnCours = kMaxEssai;
        Stat[kMaxEssai+1]++;
    }
    revele();
}

function choixCoul( place, coul) {
    if (!EstFini) {
        document.images[kMaxTrou + LigneEnCours * NbImg + place-1].src = FicheImg[coul].src
        if (coul != 0) {
            CombiEnCours[place-1] = coul
        } else {
            CombiEnCours[place-1] = null
        }
    } else {
      nouveauJeu();
      choixCoul( place, coul);
    }
}

function choixCoulOver( place, coul) {
    if (!EstFini && EstStart) {
        document.images[kMaxTrou + LigneEnCours * NbImg + place-1].src = FicheIncImg[coul].src
    }
}

function choixCoulOut( place, coul) {
    if (!EstFini && EstStart) {
        if (CombiEnCours[place-1] != null) {
            document.images[kMaxTrou + LigneEnCours * NbImg + place-1].src = FicheImg[CombiEnCours[place-1]].src
        } else {
            document.images[kMaxTrou + LigneEnCours * NbImg + place-1].src = FicheImg[0].src
        }
    }
}

function soumettre() {
    if (!EstFini) {
    /*
    alert( "Soumission : " 
        + CombiEnCours[0] + " "
        + CombiEnCours[1] + " "
        + CombiEnCours[2] + " "
        + CombiEnCours[3] );
    */
    // ATTENTION : soumisson avec "null"
    for (i=0; i<kMaxTrou; i++) {
        if (CombiEnCours[i]==null) {
            if (lang=="fr") alert( "Aucun choix en position " + eval(i+1) + " !");
            if (lang=="en") alert( "No choice for position " + eval(i+1) + " !");
            return
        }
    }
    NbPlace = 0
    NbCite = 0
    for (i=0; i<kMaxTrou; i++) Vu[i] = false;
    for (i=0; i<kMaxTrou; i++) {
        if (CombiEnCours[i] == Combinaison[i]) {
            NbPlace += 1
            Vu[i] = true
        }
    }
    for (i=0; i<kMaxTrou; i++) {
        if (CombiEnCours[i] != Combinaison[i]) {
        for (j=0; j<kMaxTrou; j++) {
             if (CombiEnCours[i] == Combinaison[j] && i!=j && !Vu[j]) {
                NbCite += 1
                Vu[j] = true
                break;
            }
        }
        }
    }

    for (i=0; i<NbPlace; i++) {
        document.images[i + LigneEnCours * NbImg].src = ResImg[2].src
    }
    for (i=0; i<NbCite; i++) {
        document.images[NbPlace + i + LigneEnCours * NbImg].src = ResImg[1].src 
    }

    LigneEnCours += 1
    for (i=0; i<kMaxTrou; i++) { CombiEnCours[i] = null }

    if (NbPlace==kMaxTrou) { 
        Stat[LigneEnCours]++
        EstFini = true
        revele()
    }
    }
    if (LigneEnCours==kMaxEssai) {
        EstFini = true
        if (NbPlace != kMaxTrou) Stat[kMaxEssai+1]++
        revele()
    }
}

initAll();
initStat();

//-->
