// Generiert am 31.05.2006 18:51:19
// Mit dem Blinde Kuh Puzzle-Macher-Spiel
// http://www.blinde-kuh.de/
// http://www.blinde-kuh.de/
// JavaScript Schiebe-Puzzle der Blinden Kuh (www.blinde-kuh.de)
// Erste deutschsprachige Suchmaschine speziell für Kinder
// www.blinde-kuh.de ©1997 Birgit Bachmann und Stefan R. Müller

// Anzahl der Zeilen und Zeilen
var Zeilen  = 4;
var Spalten = 4;
// Angaben fuer den Dateinamen der Teile
var Praefix    = 'bild';
var Seperator  = '';
var Suffix     = '';
var Extension  = '.jpg';
var StartIndex = 1;
var Koordinaten = 1;
var Stellen    = 1;
// Puzzle-Optionen
var BildBreite = 80;
var BildHoehe  = 80;
// Koordinaten vom LeerBild
var LeerX = 1;
var LeerY = 1;

// Berechnung der Bildnamen
var Teile = Zeilen * Spalten;


// 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);
 BildListe = new Array(Teile);
var BildAnzahl = BildListe.length;
var loaded = 0;
var TempListe = new Array(BildAnzahl);

// Ueberschreiben();
// -----   Funktionen


// -----   Angleichungen fuer die Parameter
function Ueberschreiben()
{
 var i = 0;
 var j = 0;
 var x = 0;
 LeerA = LeerX;
 LeerB = LeerY;
 Teile = Zeilen * Spalten;
 LeerPosistion = ((LeerY - 1) * Spalten) + (LeerX - 1);
 BildListe = new Array(Teile);
 BildAnzahl = BildListe.length;
 loaded = 0;
 for (j=0;j<Zeilen;j++)
 {
  for (i=0;i<Spalten;i++)
  {
   BildListe[x] = Dateiname(i,j);
   x++;
  }
 }
 BildListe[(LeerX-1)+(LeerY-1)*Spalten]="leer.jpg";
 TempListe = new Array(BildAnzahl);
}



// Aufbau
function Aufbauen() {
var i = 0;
var j = 0;
var x = 0;
document.write('<table');
document.write(' border="0"');
document.write(' cellspacing="0"');
document.write(' cellpadding="0"');
document.write('>');
document.write('<tr>');
document.write('<td');
document.write(' bgcolor="#000000"');
document.write('>');
document.write('<table');
document.write(' border="0"');
document.write(' cellspacing="1"');
document.write(' cellpadding="0"');
document.write('>');
for (j=1;j<=Zeilen;j++)
{
document.write('<tr>');
for (i=1;i<=Spalten;i++)
{
 document.write('<td');
 document.write(' bgcolor="#FFFFF7"');
 document.write('>');
 document.write('<a');
 document.write(' href="javascript:Klick('+i+','+j+');"');
 document.write('>');
 document.write('<img');
 document.write(' name="bild'+(x+1)+'"');
 document.write(' alt=""');
 document.write(' border="0"');
 document.write(' width="'+BildBreite+'"');
 document.write(' height="'+BildHoehe+'"');
 document.write(' src="'+BildListe[x]+'"');
 document.write('>');
 document.write('</a>');
 document.write('</td>');
 x++;
}
document.write('</tr>');
}
document.write('</table>');
document.write('</td>');
document.write('</tr>');
document.write('</table>');
}
// 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();
   }
  }
}

// Bilddateinamen fuer Koordinaten zusammensetzen
function Dateiname(x,y)
{
 var a = 0;
 if ( Koordinaten == 1 )
 {
  return(
   Praefix +
   FormatZaehler(x) +
   Seperator +
   FormatZaehler(y) +
   Suffix +
   Extension
  );
 }
 else
 {
  a = x + y * Spalten;
  return(
   Praefix +
   FormatZaehler(a) +
   Suffix +
   Extension
  )
 }
}

function FormatZaehler(i)
{
 var NeuerZaehler = '';
 var Wert = 0;
 var Laenge = 0;
 Wert = i + StartIndex;
 NeuerZaehler = '0000000' + Wert;
 Laenge = NeuerZaehler.length;
 NeuerZaehler = NeuerZaehler.substring(Laenge-Stellen, Laenge);
 if ( NeuerZaehler.length < Wert.length )
 {
  NeuerZaehler = Wert;
 }
 return( NeuerZaehler );
}


// 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);
	}
