	  //Konstantendeklaration
		var iAnzahlAuswahlSchuetzen = 8;
		var iAnzahlFelderProVersuch = 4;
		var iAnzahlVersuche = 8;
		var iBorder = 3;
		var IsNetscape = false;
		
		//Variablendeklaration
		var IsRunning = false;
		var iStufe=0; //Anzahl ausgewählter Schützen
		var iVersuch=0; //Zeilenindex auf der der Anwender eine Kombination versuchen kann
		var SpielzelleAktiv = new SpielzelleSSS("","","",-1); //ausgewählter Schütze
		bild = new Array(iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iAnzahlVersuche*iAnzahlFelderProVersuch*2));
		NetscapeMurks = new Array(iAnzahlAuswahlSchuetzen);
		
		//nicht veränderliche Bilder, damit nur einmal in Cache geholt wird
		var ImgLeeresFeld = new Image();
		ImgLeeresFeld.src = "Leeres_Feld.jpg";
		var ImgFragezeichen = new Image();
		ImgFragezeichen.src = "Fragezeichen.jpg";
		var ImgRatefeld = new Image();
		ImgRatefeld.src = "Feld1.jpg";
		var ImgSchwarz = new Image();
		ImgSchwarz.src = "Schwarz2.jpg";
		var ImgWeiss = new Image();
		ImgWeiss.src = "Weiss2.jpg";
		var ImgFalsch = new Image();
		ImgFalsch.src = "Falsch1.jpg";
		
		this.name = "Mastermind";
		var Schuetzen = window.open("Schuetzen.html","Schuetzen","width=410,height=300,dependent=yes");	
		//--------------------------------------------------------------------
		
		function SpielzelleSSS(strOrginal,strBild1,strBild2,iIndex){
	
			this.Orginal = new Image();
			this.Orginal.src = strOrginal;
			
			this.Bild1 = new Image();
			this.Bild1.src = strBild1;
			
			this.Bild2 = new Image();
			this.Bild2.src = strBild2;
			
			this.ImageIndex = iIndex;	
			this.SchuetzenIndex = -1;		
			
			return this;
		}
		
		function SpielzelleISS(ImgOrginal,strBild1,strBild2,iIndex){
			this.Orginal = new Image();
			this.Orginal.src = ImgOrginal.src;
			
			this.Bild1 = new Image();
			this.Bild1.src = strBild1;
			
			this.Bild2 = new Image();
			this.Bild2.src = strBild2;
		
			this.ImageIndex = iIndex;	
			this.SchuetzenIndex = -1;	
			
			return this;
		}
		
		function SpielzelleISI(ImgOrginal,strBild1,ImgBild2,iIndex){
			this.Orginal = new Image();
			this.Orginal.src = ImgOrginal.src;
			
			this.Bild1 = new Image();
			this.Bild1.src = strBild1;
			
			this.Bild2 = new Image();
			this.Bild2.src = ImgBild2.src;
		
			this.ImageIndex = iIndex;	
			this.SchuetzenIndex = -1;	
			
			return this;
		}
		
		function SpielzelleIIS(ImgOrginal,ImgBild1,strBild2,iIndex){
			this.Orginal = new Image();
			this.Orginal.src = ImgOrginal.src;
			
			this.Bild1 = new Image();
			this.Bild1.src = ImgBild1.src;
			
			this.Bild2 = new Image();
			this.Bild2.src = strBild2;
		
			this.ImageIndex = iIndex;	
			this.SchuetzenIndex = -1;	
			
			return this;
		}
		
		function SpielzelleIII(ImgOrginal,ImgBild1,ImgBild2,iIndex){
			this.Orginal = new Image();
			this.Orginal.src = ImgOrginal.src;
			
			this.Bild1 = new Image();
			this.Bild1.src = ImgBild1.src;
			
			this.Bild2 = new Image();
			this.Bild2.src = ImgBild2.src;
		
			this.ImageIndex = iIndex;	
			this.SchuetzenIndex = -1;	
			
			return this;
		}
		//--------------------------------------------------------------------
		
		function SchuetzenOpen(){
			Schuetzen = window.open("Schuetzen.html","Schuetzen","width=410,height=290,dependent=yes");
		}
		//--------------------------------------------------------------------
		
		function First_Init_Array(){
			if(navigator.appName == "Netscape")
				IsNetscape = true;
			
			//für Netscape müssen die Bilder mit rotem Rahmen geladen werden, da border nicht verändert werden kann
			if(IsNetscape){
				for(var i=0; i<iAnzahlAuswahlSchuetzen; i++){
					NetscapeMurks[i] = new Image();
					NetscapeMurks[i].src = "";
				}
			}
			
			//Ausgewählte Schützen
			for(var i=0; i<iAnzahlAuswahlSchuetzen; i++){
				bild[i] = new SpielzelleISS(ImgLeeresFeld,"","",i);
			}
			
			//Zu erratende Kombination
			for(var i=iAnzahlAuswahlSchuetzen; i<iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch; i++){
				bild[i] = new SpielzelleISI(ImgFragezeichen,"",ImgFragezeichen,i);
			}
			
			//Ratefelder + Anzeigefelder
			for(var i=iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch; i<iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iAnzahlVersuche*iAnzahlFelderProVersuch*2); i++){
				for(var x=0; x<iAnzahlFelderProVersuch; x++){
					bild[i] = new SpielzelleISS(ImgRatefeld,"","",i);
					i++;
				}
				
				for(var x=0; x<iAnzahlFelderProVersuch; x++){
					bild[i] = new SpielzelleIII(ImgRatefeld,ImgSchwarz,ImgWeiss,i);
					i++;
				}
				i--;
			}
		}
		//--------------------------------------------------------------------
		
		function init(HasToInitAll){
			
			//nur beim 1.Start initialisieren
			if(HasToInitAll){
				for(var i=0; i<iAnzahlAuswahlSchuetzen; i++){
					document.images[i].src = bild[i].Orginal.src;
				}
			}
						
			for(var i=iAnzahlAuswahlSchuetzen; i<iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iAnzahlVersuche*iAnzahlFelderProVersuch*2); i++){
				document.images[i].src = bild[i].Orginal.src;
				bild[i].SchuetzenIndex = -1;
			}		
			
			SpielzelleAktiv.Orginal.src = "";
			SpielzelleAktiv.Bild1.src = "";
			SpielzelleAktiv.Bild2.src = "";
			SpielzelleAktiv.ImageIndex = -1;
			SpielzelleAktiv.SchuetzenIndex = -1;
			
			iVersuch=0; 
		}
		//--------------------------------------------------------------------
		
		function Auswahl(iFeldindex){
			if(!IsRunning){
				if(iStufe<iAnzahlAuswahlSchuetzen){//Alle Plätze belegt?
					var IsOK = true;	//kontrolle ob der Schütze bereits ausgewählt wurde
					
					for(var i=0; i<iAnzahlAuswahlSchuetzen; i++){
						if(document.images[i].src.indexOf("/" + iFeldindex + ".jpg") != -1)
							IsOK = false;
					}
					
					if(IsOK){
						document.images[iStufe].src = iFeldindex + ".jpg";
						bild[iStufe].Bild1.src = document.images[iStufe].src
						bild[iStufe].SchuetzenIndex = iStufe;
						bild[iStufe].ImageIndex = iStufe;
						
						if(IsNetscape)
							NetscapeMurks[iStufe].src = (iFeldindex + 1000) + ".jpg";
							
						iStufe++;
					}
				}
			}	
		}
		//--------------------------------------------------------------------
		
		function Setzen(iSpaltennummer){
			var TempImage = new Image();
			
			if(!IsRunning)
				return 0;
				
			TempImage.src = bild[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iSpaltennummer-1].Orginal.src;
		  
		  //Netscape Murks, vor den Dateinamen muss ein '/' damit es eindeutig ist
			if(TempImage.src.indexOf("/") == -1)
				TempImage.src = "/" + TempImage.src;	

			if(SpielzelleAktiv.ImageIndex < 0){
				alert("Zuerst einen der ausgewählten Schützen anklicken!");
				return 0;
			}
			
			//neues Bild übernehmen
			if(document.images[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iSpaltennummer-1].src.indexOf(TempImage.src) >= 0){
			  CopySpielzelle(SpielzelleAktiv,bild[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iSpaltennummer-1]);
				document.images[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iSpaltennummer-1].src = SpielzelleAktiv.Bild1.src;
			}else{//Orginalbild wiederherstellen
				bild[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iSpaltennummer-1].SpielzelleAktiv = -1;
				document.images[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iSpaltennummer-1].src = bild[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iSpaltennummer-1].Orginal.src;
			}
		}
		//--------------------------------------------------------------------
		
		function Aktiv(iBildnummer){
			if(IsRunning){
			  if(iBildnummer <= iStufe){
					if(SpielzelleAktiv.ImageIndex >= 0){ //Rücksetzen des roten Randes
						if(IsNetscape)
							document.images[SpielzelleAktiv.ImageIndex].src = bild[SpielzelleAktiv.ImageIndex].Bild1.src;
						else
							document.images[SpielzelleAktiv.ImageIndex].border = "0";
					}	
					CopySpielzelle(bild[iBildnummer-1],SpielzelleAktiv);
					SpielzelleAktiv.ImageIndex = bild[iBildnummer-1].ImageIndex;
					
					if(IsNetscape){		
						document.images[iBildnummer-1].src = NetscapeMurks[iBildnummer-1].src;
					}else
						document.images[iBildnummer-1].border = iBorder;
				}
			}	
		}
		//--------------------------------------
		
		function Spielstart(){
			if(IsRunning){
				IsRunning = false;
				document.Hauptformular.button1.value = "Neues Spiel";
				document.Hauptformular.button2.disabled = false;
				document.Hauptformular.button3.disabled = true;
				
				for(var i=0; i<iStufe; i++){
					if(IsNetscape)		
						document.images[i].src = bild[i].Bild1.src;
					else
						document.images[i].border = "0";					
				}
				
				//Rätsel auflösen
				for(var i=iAnzahlAuswahlSchuetzen; i<iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch; i++){
					document.images[i].src = bild[i].Bild1.src;
				} 
				
			}else{
				if(iStufe){
					document.Hauptformular.button1.value = "Spiel beenden";
					IsRunning = true;
					document.Hauptformular.button2.disabled = true;
					document.Hauptformular.button3.disabled = false;
					init(false);
					Zufall();
				}else{
					alert("Es sind noch keine Schützen ausgewählt!" + '\n' + "Klicken Sie auf mindestens einen Schützen aus der Auswahl!");
				}
			}	
		}
		//--------------------------------------------------------------------
		
		function ResetSchuetzen(){
			for(var i=0; i<iAnzahlAuswahlSchuetzen; i++){
				document.images[i].src = bild[i].Orginal.src;
				iStufe=0;
			}
			
			if(Schuetzen.closed){
				SchuetzenOpen();
			}else{
				Schuetzen.focus();
			}				
		}
		//--------------------------------------------------------------------
		
		function CopySpielzelle(Quelle,Ziel){
			Ziel.Bild1.src = Quelle.Bild1.src;
			Ziel.Bild2.src = Quelle.Bild2.src;
			Ziel.SchuetzenIndex = Quelle.SchuetzenIndex;
		}
		//--------------------------------------------------------------------
		
		function Auswerten(){
			var IsVoll=true;

			//Kontrolle ob alle Felder gesetzt wurden
			for(var i=iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2); i<iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iAnzahlFelderProVersuch; i++){
				if(bild[i].SchuetzenIndex < 0)
					IsVoll = false;
			}
			
			if(!IsVoll){
				alert("Es sind noch nicht alle Felder belegt!");
				return 0;
			}	
			
			ZeichneAuswertung(AuswertenSchwarz(),AuswertenWeiss());	
			
			if(iAnzahlFelderProVersuch==AuswertenSchwarz()){
				alert("Gratulation, Sie haben es geschaft!");
				Spielstart();
				return 0;
			}
			
			iVersuch++;
			
			if(iVersuch>=iAnzahlVersuche){
				Spielstart();
				alert("Leider nicht geschaft");
			}
		}
		//--------------------------------------------------------------------
		
		function Zufall(){
			//Zufällige Zusammenstellung des zu erratenden Teams
			var iZufallszahl=0;
			
			for(var i=0; i<iAnzahlFelderProVersuch; i++){
				iZufallszahl = Math.floor(Math.random()*iStufe); //Liefert den Index zurück
				CopySpielzelle(bild[iZufallszahl],bild[iAnzahlAuswahlSchuetzen+i]);
			
				//Blindabdeckung
				document.images[iAnzahlAuswahlSchuetzen+i].src = ImgFragezeichen.src;//"Fragezeichen.jpg";//bild[iAnzahlSchuetzen+iAnzahlAuswahlSchuetzen+i].Bild2;
			}		
		}
		//--------------------------------------------------------------------
		
		function AuswertenWeiss(){
			var iWeiss=0;
			var myArray = new Array(iStufe);
			
			//init Array
			for(var i=0; i<iStufe; i++){
				myArray[i]=0;
			}
			
			//Array mit der generierten Kombination füttern
			for(var i=0; i<iAnzahlFelderProVersuch; i++){
				myArray[bild[iAnzahlAuswahlSchuetzen+i].SchuetzenIndex]++;
			}			
			
			//Loop über die eingegebene Zeile
			for(var i=iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2); i<iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iAnzahlFelderProVersuch; i++){
				if(myArray[bild[i].SchuetzenIndex] > 0){
					myArray[bild[i].SchuetzenIndex]--;
					iWeiss++;
				}
			}
			
			return iWeiss;
		}
		//--------------------------------------------------------------------
		
		function AuswertenSchwarz(){
			var iSchwarz=0;
			
			for(var i=0; i<iAnzahlFelderProVersuch; i++){
				if(bild[iAnzahlAuswahlSchuetzen+i].SchuetzenIndex == bild[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+i].SchuetzenIndex){
					iSchwarz++;
				}
			}			

			return iSchwarz;
		}
		//--------------------------------------------------------------------
		
		function ZeichneAuswertung(iSchwarz,iWeiss){
			var i=0;
			
			//Schwarze zeichnen
			for(i; i<iSchwarz; i++){
				document.images[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iAnzahlFelderProVersuch+i].src = bild[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iAnzahlFelderProVersuch+i].Bild1.src;			
			}
			
			//Weisse Zeichnen
			for(i; i<iWeiss; i++){
				document.images[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iAnzahlFelderProVersuch+i].src = bild[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iAnzahlFelderProVersuch+i].Bild2.src;
			}
			
			//Nicht vorhanden
			for(i; i<iAnzahlFelderProVersuch; i++){
				document.images[iAnzahlAuswahlSchuetzen+iAnzahlFelderProVersuch+(iVersuch*iAnzahlFelderProVersuch*2)+iAnzahlFelderProVersuch+i].src = ImgFalsch.src;
			}
		}	
		//--------------------------------------------------------------------
		
		function Exit(){
			if(!Schuetzen.closed){
				Schuetzen.close();
			}
		}
		//--------------------------------------------------------------------
		
		First_Init_Array();
