// Schiebe-Puzzle der Blinden Kuh ( www.blinde-kuh.de)
// Die Liste mit den Bildern (unbedingt das leer-Bild einbauen)
var BildListe =
  new Array( "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_leer.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_21.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_31.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_41.jpg",
             "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_12.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_22.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_32.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_42.jpg",
             "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_13.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_23.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_33.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_43.jpg",
             "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_14.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_24.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_34.jpg", "fileadmin/images/spielspass/schiebepuzzle/schiebepuzzle_lucy/schiebepuzzle_lucy_44.jpg"
           );
           
         
// Anzahl der Zeilen und Zeilen
var Zeilen  = 4;        
var Spalten = 4;         
// Koordinaten vom LeerBild
var LeerX = 1;
var LeerY = 1;
// Anzahl der Mischvorgaenge
var MaxMischen = 50;
// SpielStand
var SpielModus = "off";
// -----   Angleichungen fuer die Parameter
var LeerA = LeerX;
var LeerB = LeerY;
var LeerPosistion = ((LeerY - 1) * Spalten) + (LeerX - 1);
var BildAnzahl = BildListe.length;    
var loaded = 0;
var TempListe = new Array(BildAnzahl);
// Pruefen ob die Angeben in der BildListe mit den Spalten und zeilen uebereinstimmt
if (BildAnzahl != (Spalten * Zeilen)) {
 alert("Die Anzahl der Spalten und Zeilen stimmt nicht mit der Anzahl der Bilder in der BildListe ueberein!");
}

// -----   Funktionen
// Initialisierung des Puzzles
function Laden() {
 loaded = 1;
 NeuStart();
}
function SetzeBild(index, Source){
 var i = index + 1;
 document.images['bild'+i].src = Source ;
}
// Karte Verschieben
function Schiebe( xpos, ypos ) {
 // Abbruch, wenn das LeerBild angeklickt wurde
 if (( xpos == LeerA ) && ( ypos == LeerB ))
 return;
 // Pruefen, ob das Leer-Bild in der selben Zeile liegt
 if (ypos == LeerB) {                        
  Leer = ((LeerB-1) * Spalten) + LeerA - 1;
  // Liegt es Links, dann nach rechts schieben
  if (LeerA < xpos) {
    while (LeerA != xpos) {
    TempListe[Leer] = TempListe[Leer+1];
    TempListe[Leer+1] = BildListe[LeerPosistion];
    SetzeBild(Leer, TempListe[Leer]);
    LeerA += 1;
    Leer += 1;
    SetzeBild(Leer, TempListe[Leer]);
   }
  }
  // Liegt es Rechts dann nach links schieben
  else {
   while (LeerA != xpos) {
    TempListe[Leer] = TempListe[Leer-1];
    TempListe[Leer-1] = BildListe[LeerPosistion];
    SetzeBild(Leer, TempListe[Leer]);
    LeerA -= 1;
    Leer -= 1;
    SetzeBild(Leer, TempListe[Leer]);
   }
  }
 }
 else {
  // Pruefen, ob die Karte in der selben Spalte mit dem LeerBild liegt
  if (xpos == LeerA) {
   Leer = ((LeerB-1) * Spalten) + LeerA - 1;
   // Liegt sie darunter, dann nch oben schieben
   if (LeerB < ypos) {
    while (LeerB != ypos) {
     TempListe[Leer] = TempListe[Leer+Spalten];
     TempListe[Leer+Spalten] = BildListe[LeerPosistion];
     SetzeBild(Leer, TempListe[Leer]);
     LeerB += 1;
     Leer += Spalten;
     SetzeBild(Leer, TempListe[Leer])
    }
   }
   // liegt sie darueber, dann nach unten schieben
    else {
    while (LeerB != ypos) {
     TempListe[Leer] = TempListe[(Leer-Spalten)];
     TempListe[Leer-Spalten] = BildListe[LeerPosistion];
     SetzeBild(Leer, TempListe[Leer])
     LeerB -= 1;
     Leer -= Spalten;
     SetzeBild(Leer, TempListe[Leer])
    }
   }
  }
 }
 Pruefen();
}
function Klick( xpos, ypos ) {
  if ( SpielModus != "on" )
  {
   if( confirm( "Soll ich die Teile jetzt neu mischen?") )
   {
     Mischen();
   }
  } else
  {
    Schiebe( xpos, ypos );
  }
}
// Die BildListe in die temporaere Liste kopieren
function ZurueckSetzen() {
 for (var i = 0; i < BildAnzahl; i++) {
  TempListe[i] = BildListe[i];
 }
}
function Pruefen()
{
  var istgleich = false;
  var istgewonnen = true;
  for (var i = 0; i < BildAnzahl; i++)
  {
   istgleich = (  TempListe[i] == BildListe[i] )
   if ( istgleich == false ) { istgewonnen = false };
  }
  if ( istgewonnen )
  {
   if( confirm( "Du hast das Puzzle richtig zusammengesetzt!\nWillst du es noch einmal mischen?") )
   {
     Mischen();
   }
  }
}
// Neustart-Routine
function NeuStart() {
 SpielModus = "off";
 // Laden der Bildliste in die Dokumentbilder
 for (var i = 0; i < BildAnzahl; i++){
  SetzeBild(i, BildListe[i])
  TempListe[i] = BildListe[i];
 }
// ZurueckSetzen();
 LeerA = LeerX;
 LeerB = LeerY;
}
function Mischen() {
 SpielModus = "off";
 // Abbruch, wenn das Spiel nicht geladen wurde
 if (loaded == 0) {
  return;
 }
 var Temp;
 for (var MischVorgang = 0; MischVorgang < MaxMischen ; MischVorgang++) {
  // Mal horizontal ein wenig herumschieben
  Temp = LeerA;
  while ( Temp == LeerA) {
   Temp = (random (Spalten)) + 1;
  }
  Schiebe (Temp, LeerB);
  // und mal vertikal ein wenig schieben
  Temp = LeerB;
  while (Temp == LeerB) {
   Temp = (random (Zeilen)) + 1;
  }
  Schiebe (LeerA, Temp);
 }
 SpielModus = "on";
}
// Zufallsgenerator von
// Paul Houle
// Department of Physics,  Cornell University
today=new Date();
jran=today.getTime();
function rnd() {
    ia=9301;
    ic=49297;
    im=233280;
    jran = (jran*ia+ic) % im;
    return jran/(im*1.0);
    }
function random(number) {
    return Math.floor(rnd()*number);
    }