// --------------------------------------------------------------
// Der Übersicht wegen, wird der Suchstring zur Laufzeit
// der Variablen "query" übergeben.

 var q1 = "";
 var q2 = "";

// Ersetzung von dt.spr. Umlauten in ISO 8859-1 Entities

function noumlaut( str )
{
	var l = 0; 		// Laenge des Strings
	var i = 0; 		// Index im Strings
	var newstr = ""; 	// Rueckgabestring
	var a = "";		// aktuelles Zeichen

	l = str.length;
	for (i=0; i<l;i++)
	{

		// i-tes Zeichen gegebfalls aendern
		a = str.charAt(i);

		// ISO 8859-1 Entities
		if ( a == "?") { a = "&auml;" };
		if ( a == "?") { a = "&ouml;" };
		if ( a == "?") { a = "&uuml;" };
		if ( a == "?") { a = "&Auml;" };
		if ( a == "?") { a = "&Ouml;" };
		if ( a == "?") { a = "&Uuml;" };
		if ( a == "?") { a = "&szlig;" };
		
		// Neuen String zusammensetzen
		newstr = newstr + a ;
	}
	
	return newstr;
}
// Veränderung des Dateinamens
function dateiname(str)
{
	
	var ersterTeil = "";
	var zweiterTeil = "";
	var l = 0;
	
	l = str.length;	
	ersterTeil = str.slice(0,l-5);
	zweiterTeil = str.slice(l-4,l);
 	 
	newstr = ersterTeil + zweiterTeil;
		
	return newstr;
}

// Auflösung der Referenz in lesbare Form
function referenz(str)
{

	var pos = str.search("#");
	if (pos != - 1)
		str = str.substring(str.search("#")+1,str.length);		

	var pos = str.search("_");
	var newstr = "";
	var code = 0
	while (pos != -1)
	{
		code = 1
		var ErsterTeil = str.substring(0,str.search("_"));
		var ZweiterTeil =str.substring(str.search("_")+1,str.length);
		if (newstr == "")
			newstr = ErsterTeil;
		else
			newstr = newstr + " " + ErsterTeil;
		str = ZweiterTeil;
		pos = str.search("_");	
	}
	if (code == 1)
		newstr = newstr + " " + ZweiterTeil;
	else
		newstr = str;
		
	return newstr;
}

// --------------------------------------------------------------
// Abfrage, ob der Suchstring "query" in dem Datenstring "str"
// enthalten ist.

 function found(str,EntryEintrag)
 {
	//"str" ist der jeweilige Eintrag in der Datendatei
	// Variablen-Deklaration

	var isfound = false;
	var s = "";
	
	// Gross/Kleinschreibung ignorieren
	s = str.toLowerCase();
	q1 = q1.toLowerCase();
	q2 = q2.toLowerCase();
	// Umlaute beseitigen
	s = noumlaut( s );
	q1 = noumlaut( q1 );
	q2 = noumlaut( q2 );

	// Leerzeichen anfuegen, falls ganzer Ausdruck
	s = " " + s + " ";		 
		 	 
	switch(EntryEintrag)
	{
		case 0:			//hier wird "str" aus dem Menü-Eintrag gefüllt
			isfound = ( s.indexOf( q1 ) > -1 );
		break;
		case 1:			//hier wird "str" aus dem Eingabe-Eintrag gefüllt	
			isfound = ( s.indexOf( q2 ) > -1 );
		break;
		default:
			alert("Fehler! Melden Sie bitte den Fehler 1000 dem Web-Administrator unter der E-Mailadresse info@tscherpel.de. Danke");
		break;
	}	
		 
	return(isfound );
}

// --------------------------------------------------------------
// Ermitteln und Ausgabe der Suchergebnisse
//

function ListSearch()
{
	var count = 0;
	
	//query = INPUT.QueryForm.query.value; nur bei Abfrage der Suchbegriffe über ein Textfeld mit Namen query
	//SuchString 1-4 sind bezogen auf Keywords, SuchString5 ist die Artikelnummer (Title)
	with ( document )
	{
	
		if (q1=="leer")
		{
			if (q2=="leer")
				SuchString = "";
			else
				SuchString = q2;
		}
		else
		{
			if (q2=="leer")
				SuchString = q1;
			else	
				SuchString = q1 + " und " + q2;}
				
		var Ausgabebereich = document.getElementById("suchergebnis");
		var X1Abschnitt = document.createElement("p");

		//Prüfen der Browser-Version
		version_ie = 100
		version_ns = 100
		version_op = 100;
		
		if(navigator.userAgent.indexOf("Opera") > -1)
		{
			version_op = navigator.userAgent.substring(navigator.userAgent.indexOf("Opera")+5,navigator.userAgent.indexOf("Opera")+6);
			if(version_op = "/")version_op = navigator.userAgent.substring(navigator.userAgent.indexOf("Opera")+6,navigator.userAgent.indexOf("Opera")+7);
				//alert("Leider wird Opera in dieser oder früheren Versionen nicht unterstützt. Bitte wenden Sie sich an unseren Außendienst für detaililerte Informationen!");
		}
		if(navigator.userAgent.indexOf("MSIE") > -1)
			version_ie = navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5,navigator.userAgent.indexOf("MSIE")+6);
		if(navigator.userAgent.indexOf("Netscape") > -1)
		{
			version_ns = navigator.userAgent.substring(navigator.userAgent.indexOf("Netscape")+8,navigator.userAgent.indexOf("Netscape")+9);
			if(version_ns = "/")version_ns = navigator.userAgent.substring(navigator.userAgent.indexOf("Netscape")+9,navigator.userAgent.indexOf("Netscape")+10);
		}

		if(version_ie<=5 || version_ns<=6 || version_op<=7)
		{
			var produktfenster = window.open("blanc.htm","",",,scrollbars");

			with(produktfenster.document)
			{		
				writeln("<html>");				
				writeln("<head>");
				writeln("<title>Gefundene Produkte - Karl Kilpper GmbH");
				writeln("</title>");
				writeln("<!-- Laden der Funtktionen -->");
				writeln("<script language=\"JavaScript1.2\" src=\"javascript/funktionen.js\"></script>");
				writeln("<link rel='stylesheet' href='styles/styles.css'>");
				writeln("</head>");
				writeln("<body bgcolor=\"" + "#003300" + "\">");
				writeln("<form action=\"\" name=\"QueryForm\">");
				writeln("<input type=\"hidden\" name=\"Bild_Bez\" size=\"22\">");
				writeln("</form>");
				writeln("<p class=\"ArtUES\"><font color=\"#99CC99\"><b>Suche nach: \"", SuchString, "\"</b></font></p><br>" );
				for (var i=1 ; i<Entry.length; i++)
				{
					if(q1!="leer" && q2=="leer")				//Menü-Suche
					{
						if (found(Entry[i].Keywords, 0))
						{
							writeln("<table border=0 cellspacing=5 cellpadding=0 width=\"585\">");
							writeln( Entry[i].Format_0() );
							count++;
							writeln("</table>");						
						}										
					}
					
					if(q1=="leer" && q2!="leer")				//Eingabe-Suche
					{
					//Suche entweder nach Schlüsselbegriffen(Keywords) oder Artikel (Title), jedoch nicht, wenn der Titel mit "St" beginnt (Ausschluss der Stoffe)
						if (found(Entry[i].Keywords, 1) || found(Entry[i].Title, 1))
						//alt: wegen Stoffen && (Entry[i].Title.substring(0, 2)!="St")
						{
							writeln("<table border=0 cellspacing=5 cellpadding=0 width=\"585\">");						
							writeln( Entry[i].Format_0() );
							count++;
							writeln("</table>");								
						}										
					}
					
					if(q1!="leer" && q2!="leer")				//Kombinierte Suche
					{
						if (found(Entry[i].Keywords, 0))																		//der Parameter 0 steht für Menüsuche
						{
							if (found(Entry[i].Keywords, 1) || found(Entry[i].Title, 1)) 	//der Parameter 1 steht für Begriffsuche
							//alt: wegen Stoffen && (Entry[i].Title.substring(0, 2)!="St")
							{						
								writeln("<table border=0 cellspacing=5 cellpadding=0 width=\"585\">");							
								writeln( Entry[i].Format_0() );
								count++;
								writeln("</table>");								
							}					
						}
					}
				}		
				
				if ( count == 0 )
	   		{
					writeln("<p class=\"Artikel\"><font color=\"#CCFFCC\">Es wurde kein Eintrag gefunden</font></p>");
				}
				
				writeln("<br><p class=\"ArtUES\"><font color=\"#99CC99\"><b>Ende der Suchliste</b></font></p>");
				writeln("</font>");
				writeln("</body>");
				writeln("</HTML>");
			}
		}
		else
		{
			var X1Text = document.createTextNode("Suche nach: " + SuchString);
			X1Abschnitt.appendChild(X1Text);
			var X2_Class = document.createAttribute("class");
  			X2_Class.nodeValue = "ArtUES";
			X1Abschnitt.setAttributeNode(X2_Class);
			Ausgabebereich.appendChild(X1Abschnitt);
			var x = 0;
			for (var i=1 ; i<Entry.length; i++)
			{
				if(q1!="leer" && q2=="leer")				//Menü-Suche
				{
					if (found(Entry[i].Keywords, 0))
						x = 1;
					else
						x = 0;
						//Ausgabebereich.insertAdjacentHTML("BeforeEnd",Entry[i].Format());
				}
					
				if(q1=="leer" && q2!="leer")				//Eingabe-Suche
				//Suche entweder nach Schlüsselbegriffen(Keywords) oder Artikel (Title), jedoch nicht, wenn der Titel mit "St" beginnt (Ausschluss der Stoffe)
				{
					if (found(Entry[i].Keywords, 1) || found(Entry[i].Title, 1))
						x = 1;
					else
						x = 0;										
				}
					
				if(q1!="leer" && q2!="leer")				//Kombinierte Suche			
				{
					if (found(Entry[i].Keywords, 0))
					{
						if (found(Entry[i].Keywords, 1) || found(Entry[i].Title, 1))
							x = 1;
						else
							x = 0;														
					}
				}
						
				if (x == 1)
				{
					var XTabelle = document.createElement("table");
					var XTBody = document.createElement("tbody");
					XTabelle.appendChild(XTBody);
					var XWidth = document.createAttribute("width");
					XWidth.nodeValue = "100%";
					XTabelle.setAttributeNode(XWidth);
					var XCellpadding = document.createAttribute("cellpadding");
					XCellpadding.nodeValue = "5";
					XTabelle.setAttributeNode(XCellpadding);
					var XCellSpacing = document.createAttribute("cellspacing");
					XCellSpacing.nodeValue = "0";
					XTabelle.setAttributeNode(XCellSpacing);
					var XBorder = document.createAttribute("border");
					XBorder.nodeValue = "0";
					XTabelle.setAttributeNode(XBorder);				
						
					Entry[i].Format();
							
					var XZeile = document.createElement("tr");
					XTBody.appendChild(XZeile);
					var X1_Spalte = document.createElement("td");
					XZeile.appendChild(X1_Spalte);
					var X1_Width = document.createAttribute("width");
					X1_Width.nodeValue = "100";
					X1_Spalte.setAttributeNode(X1_Width);
					var X1_Valign = document.createAttribute("valign");
					X1_Valign.nodeValue = "top";
					X1_Spalte.setAttributeNode(X1_Valign);	
					var X1_Abschnitt = document.createElement("p");
					X1_Spalte.appendChild(X1_Abschnitt);								
							
					var X1_Class = document.createAttribute("class");
					X1_Class.nodeValue = "Artikel";
					X1_Abschnitt.setAttributeNode(X1_Class);
					
					var X1_Text = document.createTextNode(EntryAkt[0]);
					X1_Abschnitt.appendChild(X1_Text);	

					var X2_Spalte = document.createElement("td");
					XZeile.appendChild(X2_Spalte);
					var X2_Width = document.createAttribute("width");
					X2_Width.nodeValue = "388";
					X2_Spalte.setAttributeNode(X2_Width);	
					var X2_Valign = document.createAttribute("valign");
					X2_Valign.nodeValue = "top";
					X2_Spalte.setAttributeNode(X2_Valign);	
					var X2_Abschnitt = document.createElement("p");
					X2_Spalte.appendChild(X2_Abschnitt);
								
					var X2_Class = document.createAttribute("class");
					X2_Class.nodeValue = "ArtUES";	
					X2_Abschnitt.setAttributeNode(X2_Class);
																			
					var Beschreibung = EntryAkt[1];
					var pos = Beschreibung.search("<br>")
					
					while (pos != -1)
					{
						var ErsterTeil = Beschreibung.substring(0,Beschreibung.search("<br>"));
						var ZweiterTeil = Beschreibung.substring(Beschreibung.search("<br>")+4,Beschreibung.length);
						var X2_Text = document.createTextNode(ErsterTeil);
						X2_Abschnitt.appendChild(X2_Text);
						var X222_br = document.createElement("br");
						X2_Abschnitt.appendChild(X222_br);
						Beschreibung = ZweiterTeil;
						pos = Beschreibung.search("<br>")
					}
					
					var X22_Text = document.createTextNode(Beschreibung);
					X2_Abschnitt.appendChild(X22_Text);								
								
					var X22_Abschnitt = document.createElement("p");
					X2_Spalte.appendChild(X22_Abschnitt);
						
					var X22_Class = document.createAttribute("class");
					X22_Class.nodeValue = "ArtUT";	
					X22_Abschnitt.setAttributeNode(X22_Class);
													
					var Beschreibung = EntryAkt[2];
					var pos = Beschreibung.search("<br>")
					
					while (pos != -1)
					{
						var ErsterTeil = Beschreibung.substring(0,Beschreibung.search("<br>"));
						var ZweiterTeil = Beschreibung.substring(Beschreibung.search("<br>")+4,Beschreibung.length);
						var X222_Text = document.createTextNode(ErsterTeil);
						X22_Abschnitt.appendChild(X222_Text);
						var X222_br = document.createElement("br");
						X22_Abschnitt.appendChild(X222_br);
						Beschreibung = ZweiterTeil;
						pos = Beschreibung.search("<br>")
					}
					
					var X22_Text = document.createTextNode(Beschreibung);
					X22_Abschnitt.appendChild(X22_Text);
								
					//Einfügen der Links für Zusatzinfos	
					var Link = EntryAkt[4];
					if (Link != "")
					{
						var XLink_A = new Array();
						var x = 0;
						var pos = Link.search(";")
						while (pos != -1)
						{
							var ErsterLink = Link.substring(0,Link.search(";"));
							var RestLink = Link.substring(Link.search(";")+1,Link.length);
							var XLink_br = document.createElement("br");
							X22_Abschnitt.appendChild(XLink_br);																			XLink_A[x] = document.createElement("a");
							X22_Abschnitt.appendChild(XLink_A[x]);	
							var XLink_Href = document.createAttribute("href");	
							XLink_Href.nodeValue = ErsterLink;
							XLink_A[x].setAttributeNode(XLink_Href);	
							var XLink_Target = document.createAttribute("target");	
							if (ErsterLink.substring(0, 3) == "ref")
							{
								XLink_Target.nodeValue = "_blank";
								var XLink_Text = document.createTextNode(referenz(ErsterLink));
							}
							else
							{
								XLink_Target.nodeValue = "_blank";
								var XLink_Text = document.createTextNode("Zusätzliche Informationen");
							}
							XLink_A[x].setAttributeNode(XLink_Target);					
							XLink_A[x].appendChild(XLink_Text);																				Link = RestLink;
							pos = Link.search(";");
							x = x + 1;
						}
						var XLink_br = document.createElement("br");
						X22_Abschnitt.appendChild(XLink_br);																			XLink_A[x] = document.createElement("a");
						X22_Abschnitt.appendChild(XLink_A[x]);	
						var XLink_Href = document.createAttribute("href");	
						XLink_Href.nodeValue = Link;
						XLink_A[x].setAttributeNode(XLink_Href);	
						var XLink_Target = document.createAttribute("target");
						if (Link.substring(0, 3) == "ref")
						{
							XLink_Target.nodeValue = "_blank";
							var XLink_Text = document.createTextNode(referenz(Link));
						}
						else
						{
							XLink_Target.nodeValue = "_blank";
							var XLink_Text = document.createTextNode("Zusätzliche Informationen");
						}
						XLink_A[x].setAttributeNode(XLink_Target);					
						XLink_A[x].appendChild(XLink_Text);																			}
																
					var X3_Spalte = document.createElement("td");
					XZeile.appendChild(X3_Spalte);
					var X3_Width = document.createAttribute("width");
					X3_Width.nodeValue = "64";
					X3_Spalte.setAttributeNode(X3_Width);
					var X3_Valign = document.createAttribute("valign");
					X3_Valign.nodeValue = "top";
					X3_Spalte.setAttributeNode(X3_Valign);

					var XA = document.createElement("a");
					X3_Spalte.appendChild(XA);
					var X_Href = document.createAttribute("href");
					X_Href.nodeValue = "javascript:BildnameSpeichern('" + dateiname(EntryAkt[3]) + "');var f = window.open('bild.htm','Popup','width=551,height=684');";
					XA.setAttributeNode(X_Href);		
				
					var XBild = document.createElement("img");
					XA.appendChild(XBild);
					var XSrc = document.createAttribute("src");
					XSrc.nodeValue = "./modelle/" + EntryAkt[3];
					XBild.setAttributeNode(XSrc);
					var XHoehe = document.createAttribute("height");
					XHoehe.nodeValue = "75";	
					XBild.setAttributeNode(XHoehe);
					var X_Border = document.createAttribute("border");
					X_Border.nodeValue = "0";	
					XBild.setAttributeNode(X_Border);
					var XBreite = document.createAttribute("width");
					XBreite.nodeValue = "60";	
					XBild.setAttributeNode(XBreite);				
					var XVspace = document.createAttribute("vspace");
					XVspace.nodeValue = "2";	
					XBild.setAttributeNode(XVspace);	
					var XAlt = document.createAttribute("alt");
					XAlt.nodeValue = "Bitte klicken!";	
					XBild.setAttributeNode(XAlt);
						
					Ausgabebereich.appendChild(XTabelle);											
							
					count++;
				}	
				x = 0;									
			}		
  		
			if ( count == 0 )
	   	{
				//Ausgabebereich.insertAdjacentHTML("BeforeEnd","<p class=\"Artikel\"><font color=\"#9999CC\">Es wurde kein Eintrag gefunden</font></p>");
				var X1Abschnitt = document.createElement("p");
				var X1Text = document.createTextNode("Es wurde kein Eintrag gefunden.");
				X1Abschnitt.appendChild(X1Text);
				var X2_Class = document.createAttribute("class");
				X2_Class.nodeValue = "Artikel";			
				X1Abschnitt.setAttributeNode(X2_Class);
				Ausgabebereich.appendChild(X1Abschnitt);
			}
			else if (count > 0)
			{		
   			//Ausgabebereich.insertAdjacentHTML("BeforeEnd","</table>");
				//Ausgabebereich.insertAdjacentHTML("BeforeEnd","<br><p class=\"ArtUES\"><font color=\"#9999CC\"><b>Ende der Suchliste</b></font></p>");
				var X1Abschnitt = document.createElement("p");
				var X1Text = document.createTextNode("Ende der Suchliste.");
				X1Abschnitt.appendChild(X1Text);
				var X2_Class = document.createAttribute("class");
				X2_Class.nodeValue = "ArtUES";
				X1Abschnitt.setAttributeNode(X2_Class);
				Ausgabebereich.appendChild(X1Abschnitt);
			}
		}
		q1 = "";
		q2 = "";
	}
}	


// ===========================================================
//
// Objekt-Typ "Element" nach einem Entwurf von Christine Kühnel
//
// Eigenschaften:
//
//  Url            Internet-Adresse des entsprechenden Eintrages
//  Title          Titel der Webseite, oder DatenQuelle
//  Description    Kurze Beschreibung der Datei
//  Keywords       Stichworte fuer das Auffinden der Datei
//
// Methoden:
//
//  new Element( Url, Title, Description, Keywoerds )
//  Initialisieren eines neuen Elementes z.b.: Entry[i]
//
//  Format()
//  Formatiert den Eintrag fuer die HTML-Ausgabe

// ----------------------------------------------------------
// Definition der Methode "Format()" 
// ist zunaechst nur eine ganz gewoehnliche Standard-Funktion,
// Zur Methode wird sie erst bei der Definition des Objektes
// gemacht (kommt weiter unten)
//
// Aufruf der Methode mit Element.Format()
function Format(){
	with( this )  // mit dem Element tue das Folgende
	{
		
		EntryAkt[0] = this.Title;
		EntryAkt[1] = this.UTitle;
		EntryAkt[2] = this.Description;
		EntryAkt[3] = this.Img;
		EntryAkt[4] = this.Link;
	}
	
	return(EntryAkt);

}
// Routine zum Einfügen der Artikel in ältere Browser

 function Format_0() 
 {

	with( this )  // mit dem Element tue das Folgende
	{

	// Deklaration des RueckgabeStrings
	// (enthaelt die HTML-formatierte Ausgabe des Eintrages)
	var e = "";
	// 1. Zelle: Modellnummmer	
	e = e + "<tr><td width=\"110\" valign=\"top\" class=\"Artikel\">";
	e = e + this.Title + "</td>";
	
	// 2. Zelle - Titel und Artikelbeschreibung, Artikelbeschreibung
	e = e + "<td valign=\"top\"><p class=\"ArtUES\"><br>" + this.UTitle + "</p>";
	e = e + "<p class=\"ArtUT\">" + this.Description + "</p></td>";
	
	// 3. Zelle, Bild (klein)	
	e = e + "<td width=\"80\" valign=\"top\">";
	e = e + "<a onclick=\"javascript:BildnameSpeichern('" + dateiname(this.Img) + "');window.open('bild.htm','Popup','width=215,height=260');\">";
	e = e + "<img src=\"./modelle/" + this.Img + "\" height=75 vspace=20 target=_top border=0 alt=\"bitte klicken!\"></a></td></tr>";
	}
	return(e);
}
// --------------------------------------------------------------
// Validieren der Abfrage
//
// Hier muss nachgesehen werden, ob die Suche gueltig ist.
// Wenn ja, wird das Suchergebnis ausgegeben, sonst wird eine
// Fehlermeldung ueber einen kleinen Dialog angezeigt.
//
// Zugriff ueber die HTML-Form QueryForm bei "Suchen"
function Validator(SStringMenue, SStringEingabe)
{
		q1 = SStringMenue;
		q2 = SStringEingabe;
		ListSearch();
		return (false);
		
}
// ----------------------------------------------------------
// Definition des Objektes "Element" inkl. Eigenschaften
// und Methoden 
//
function Element(Title,Url,UTitle,Description,Img,Keywords,Link) 
{
	// Eigenschaften
	
	this.Title         = Title;
	this.Url           = Url;
	this.UTitle		    = UTitle;
	this.Description   = Description;
	this.Img		   	 = Img;
	this.Keywords      = Keywords;
	this.Link			 = Link;
	
	// Methoden
	this.Format        = Format;
	this.Format_0      = Format_0;	
}

// ----------------------------------------------------------
// Initialisieren eines Arrays von Element, auf das dann
// mit Entry[1], Entry[2] etc zugegriffen werden kann.
// Gueltig sind auch die Array-Methoden und Eigenschaften
// wie Entry.length, um etwa die Anzahl der Elemente festzu-
// stellen (siehe: ListSearch).

Entry    = new Array();
EntryAkt  = new Array(4);
