 var pics = new Array();
 var foundPairs = new Array();
 var dimRows  = 4;
 var dimCols  = 4;
 var numpics = dimRows*dimCols;
 var counter = 0;
 var pairsfound = 0;
 var lastpic = "";
 var lastidx = -1;
 var clearImg1 = "";
 var clearImg2 = "";
 var timerIsRunning = false;

 initFlora();

 function turnImg(row, col) {
   if (timerIsRunning) {
     // don't accept new click while timer is running
     // just return
     return;
   }
   var idx = row *dimCols + col;
   if (foundPairs[idx]) {
     // this card has already been turned successfully
     // just return
     return;
   }
   var imgName = "pic" + row + "-" + col;
   if (lastidx == idx) {
     // double click on same picture 
     // just return
     return;
   }
   document[imgName].src = pics[idx];
   var tmp = 0;
   if (lastidx != -1) {
     // second pick
     counter++;
     if (lastpic != pics[idx]) {
       // wrong !
       document.protform.protocol.value = counter + ". Versuch : FALSCH\n" + document.protform.protocol.value;
       clearImg1 = imgName;
       timerIsRunning = true;
       setTimeout("clearWrongPair()",2000);
     } else {
       // right !
       pairsfound++;
       foundPairs[idx]     = true;
       foundPairs[lastidx] = true;
       document.protform.protocol.value = counter + ". Versuch : RICHTIG\n" + document.protform.protocol.value;
       if (pairsfound == dimRows*dimCols/2) {
         printMessage();
       }  
     }
     // reset last to null
     lastpic = "";
     lastidx = -1;
   } else {
     lastpic = pics[idx];
     lastidx = idx;
     clearImg2 = imgName;

   }
 }

 function clearWrongPair(a,b) {
   //set it back to ?
   document[clearImg1].src = "leer.jpg";
   document[clearImg2].src = "leer.jpg";
   timerIsRunning = false;
 }

 function printMessage() {
   var spruch ="";
   if (dimCols==4) {
       superCounter = counter + 10;
   } else if (dimCols==8) {
       superCounter = Math.round(counter/8) + 13;
   } else {
       superCounter = Math.round(counter/dimCols) - dimCols +24;
   }
   switch(superCounter) {
      case 20 : spruch = "Super Genial !"; break;
      case 21 : spruch = "Genial !"; break;
      case 22 : spruch = "Super !"; break;
      case 23 : spruch = "Ausgezeichnet !"; break;
      case 24 : spruch = "Sehr gut !"; break;
      case 25 : spruch = "Gut"; break;
      case 26 : spruch = "Nicht schlecht."; break;
      case 27 : spruch = "Du schaffst es noch besser."; break;
      case 28 : spruch = "Na ja."; break;
      case 29 : spruch = "Warst auch schon besser."; break;
      case 30 : spruch = "Versuchs noch mal."; break;
      case 31 : spruch = "Es ist not kein Meister vom Himmel gefallen."; break;
      case 32 : spruch = "Du musst noch fleissig üben."; break;
      default :
        if (superCounter < 20) {
           spruch = "Super Genial !"; 
        } else {
           spruch = "Du scheinst müde zu sein, \nKopf hoch lass nicht nach.";
        }
        break;
   } // end switch
   document.protform.protocol.value = spruch + "\n\n" + document.protform.protocol.value;
 }

 function newDeal() {
   counter = 0;
   pairsfound = 0;
   numpics = dimRows*dimCols;
   for (i=0; i<numpics; i++) {
     foundPairs[i] = false;
   }
   lastpic = "";
   lastidx = -1;
   var tmpPics = new Array();
   qii = 0;
   if (dimRows == 4) {
     // standard Memory
     if (document.topicform.topic[0].checked) {
       initFlora();
       for (ii = 0; ii<pics.length; ii++) {
         tmpPics[qii++] = pics[ii];
       }
     }
     if (document.topicform.topic[1].checked) {
       initButterflies();
       for (ii = 0; ii<pics.length; ii++) {
         tmpPics[qii++] = pics[ii];
       }
     }
     if (document.topicform.topic[2].checked) {
       initArt();
       for (ii = 0; ii<pics.length; ii++) {
         tmpPics[qii++] = pics[ii];
       }
     }
     if (document.topicform.topic[3].checked) {
       initMountain();
       for (ii = 0; ii<pics.length; ii++) {
         tmpPics[qii++] = pics[ii];
       }
     }
     if (document.topicform.topic[4].checked) {
       initLugano();
       for (ii = 0; ii<pics.length; ii++) {
         tmpPics[qii++] = pics[ii];
       }
     }
     if (qii < 8) {
       alert("Bitte wählen Sie mindestens ein Thema.");
       return;
     }
   } else {
     // Super Memory
     initFlora();
     for (ii = 0; ii<pics.length; ii++) {
       tmpPics[qii++] = pics[ii];
     }
     initButterflies();
     for (ii = 0; ii<pics.length; ii++) {
       tmpPics[qii++] = pics[ii];
     }
     initArt();
     for (ii = 0; ii<pics.length; ii++) {
       tmpPics[qii++] = pics[ii];
     }
     initMountain();
     for (ii = 0; ii<pics.length; ii++) {
       tmpPics[qii++] = pics[ii];
     }
     initLugano();
     for (ii = 0; ii<pics.length; ii++) {
       tmpPics[qii++] = pics[ii];
     }
   }
   pics = tmpPics;
   document.protform.protocol.value = "";
   for (i=0; i<dimRows; i++) {
     for (ii=0; ii<dimCols; ii++) {
       document["pic" + i + "-" + ii].src = "leer.jpg";
     }
   }
   shuffle();
   numPairs = numpics/2;
   for (i=0; i<numPairs; i++)  {
     pics[i+numPairs] = pics[i];
   }
   //pics.splice(numpics); // does not exist in IE
   pics = pics.slice(0,numpics);
   shuffle();
   for (i=0;i<16;i++) {
   }
 }

 function shuffle() {
    numPics = pics.length-1;
    for (i=0; i<2*pics.length; i++) {
     a = Math.round(Math.random()*numPics);
     b = Math.round(Math.random()*numPics);
     tmp = pics[a];
     pics[a] = pics[b];
     pics[b] = tmp;
   }
 }

 function initFlora() {
   pics = new Array();
   pics[0]  = "01.jpg";
   pics[1]  = "02.jpg";
   pics[2]  = "03.jpg";
   pics[3]  = "04.jpg";
   pics[4]  = "05.jpg";
   pics[5]  = "06.jpg";
   pics[6]  = "07.jpg";
   pics[7]  = "08.jpg";
   pics[8]  = "09.jpg";
 }

 function initButterflies() {
   pics = new Array();
   pics[0]  = "butterfly01.jpg";
   pics[1]  = "butterfly02.jpg";
   pics[2]  = "butterfly03.jpg";
   pics[3]  = "butterfly04.jpg";
   pics[4]  = "butterfly05.jpg";
   pics[5]  = "butterfly06.jpg";
   pics[6]  = "butterfly07.jpg";
   pics[7]  = "butterfly08.jpg";
   pics[8]  = "butterfly09.jpg";
   pics[9]  = "butterfly10.jpg";
   pics[10]  = "butterfly11.jpg";
   pics[11]  = "butterfly12.jpg";
   pics[12]  = "butterfly13.jpg";
   pics[13]  = "butterfly14.jpg";
   pics[14]  = "butterfly15.jpg";
 }

 function initArt() {
   pics = new Array();
   pics[0]  = "art01.jpg";
   pics[1]  = "art02.jpg";
   pics[2]  = "art03.jpg";
   pics[3]  = "art04.jpg";
   pics[4]  = "art05.jpg";
   pics[5]  = "art06.jpg";
   pics[6]  = "art07.jpg";
   pics[7]  = "art08.jpg";
   pics[8]  = "art09.jpg";
   pics[9]  = "art10.jpg";
   pics[10]  = "art11.jpg";
   pics[11]  = "art12.jpg";
   pics[12]  = "art13.jpg";
   pics[13]  = "art14.jpg";
   pics[14]  = "art15.jpg";
   pics[15]  = "art16.jpg";
   pics[16]  = "art17.jpg";
 }

 function initMountain() {
   pics = new Array();
   pics[0]  = "mountain01.jpg";
   pics[1]  = "mountain02.jpg";
   pics[2]  = "mountain03.jpg";
   pics[3]  = "mountain04.jpg";
   pics[4]  = "mountain05.jpg";
   pics[5]  = "mountain06.jpg";
   pics[6]  = "mountain07.jpg";
   pics[7]  = "mountain08.jpg";
   pics[8]  = "mountain09.jpg";
 }

 function initLugano() {
   pics = new Array();
   pics[0]  = "lugano01.jpg";
   pics[1]  = "lugano02.jpg";
   pics[2]  = "lugano03.jpg";
   pics[3]  = "lugano04.jpg";
   pics[4]  = "lugano05.jpg";
   pics[5]  = "lugano06.jpg";
   pics[6]  = "lugano07.jpg";
   pics[7]  = "lugano08.jpg";
   pics[8]  = "lugano09.jpg";
 }

 function loadPage() {
   newDeal();
   img01 = new Image();
   img01.src = "01.jpg";
   img02 = new Image();
   img02.src = "02.jpg";
   img03 = new Image();
   img03.src = "03.jpg";
   img04 = new Image();
   img04.src = "04.jpg";
   img05 = new Image();
   img05.src = "05.jpg";
   img06 = new Image();
   img06.src = "06.jpg";
   img07 = new Image();
   img07.src = "07.jpg";
   img08 = new Image();
   img08.src = "08.jpg";
  }
