// <SCRIPT language=javascript>

/* Script de génération de tableau qui affiche des images GIF dans la quasi totalité de l'écran. 
Il modifie le tableau et ajoute différentes images d'un même jeu en diffusant la musique qui lui est associée.
A l'issue d'un certain délai ou lors du survol de la souris sur l'un des boutons graphiques, 
le jeu d'images est remplacé par un autre, et le traitement recommence. */

//Déclaration des variables et des tableaux.

var basedir = "fig1-1_files/";
var imagedir = "";
var sounddir = "sound/";
var cellNum = null;
var wait = 10;
var imagesize = 16;
var firstobj = null;
var stuff = null;
var loadObject = null;
var morestuff = null;

objects = new Array("dots");
dots = new Array("blue", "green", "orange", "purple", "red", "yellow");
working = dots;

/* ORIGINE
objects = new Array("binary", "blocks", "dots", "letters", "motion");
binary = new Array("off", "on", "blank");
blocks = new Array("all", "botleft", "botright", "down-t", "horizontal", "left-t", "right-t", "topleft", "topright", "up-t", "vertical", "blank");
dots = new Array("blue", "green", "orange", "purple", "red", "yellow", "blank");
letters = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "blank");
motion = new Array("down", "left", "right", "up", "blank");
working = new Array();
working = dots;
*/

var screenCols = 10;
var screenRows = 10;


// Procédures.

// Attente avant chargement et démarrage

function Start() {

  loaded = 1;
  keepGoing();
  //  for (b=0; b < voices; b++) {
  //    keepSoundGoing(b);
  //  }
}

// Fonction de choix aléatoire du jeu d'objets.

function first() {
  firstobj = Math.round(Math.random() * objects.length);
  if (firstobj > objects.length - 1) {
    firstobj = 0
      }
  currentSet = objects[firstobj] + "/";
  if (currentSet == null) {
    currentSet = blocks;
  }
  working = eval(objects[firstobj]);
  if (working == null) {
    working = blocks; 
  }
}

// Calcul du nombre d'images dans la page

function ImageCount(numOimages) {
  cellNum = numOimages - 1;
}

// Affichage de la page.

function screenDraw() {
  this.document.open();
  this.document.writeln('<div align="center"><nobr>');
  first();
  for (x=0; x < screenRows; x++) {
    for (y=0; y < screenCols; y++) {
      newImage = Math.round(Math.random() * (working.length - 1));
      document.writeln('<img src="' + basedir + imagedir + working[newImage] + '" width="16" height="16" border="0">');
    }
    document.writeln('<br>');
  }
  document.writeln('</div></nobr>');
  //soundDraw();
  //userControls();
  this.document.close();
  ImageCount(document.images.length);
  //EmbedCount(document.embeds.length);
  
}

// Partie la plus intéressante du script.

// Cette fonction change aléatoirement le contenu du tableau
// et appelle les autres fonctions (son) qui lui sont associées.

function imageMagic() {
  changeCell = Math.round(Math.random() * cellNum);
  newImage = Math.round(Math.random() * (working.length - 1));
  if (working[newImage] == null) {
    document.images[changeCell].src = basedir + "blank.gif";
  } else {
    document.images[changeCell].src = basedir + imagedir + working[newImage] + ".gif";
    //      soundMagick(currentSet, working[newImage]);
  }
  
}

// Fonction d'affichage des contrôles utilisateur

function userControls() {
  //  for (uc=0; uc < objects.length; uc++) {
  //document.write('<a href="javascript:void(0);" onMouseOver="setChange('' + objects[uc] + '')"> ' + objects[uc] + ' </a>');
  //}
}

// Fonction qui remplace le contenu du tableau par un autre 
// 

function setChange(newSet) {
  currentSet = newSet + '/';
  working = eval(newSet);
}

// Cette fonction mélange le tableau. Le principe est différent.

// Parcourt les sections graphiques.

function keepGoing() {
  for (z=0; z < screenRows; z++) {
  imageMagic();
  }
  timeoutID=setTimeout("keepGoing()", 10);
}

screenDraw()

