// Variablen für deutsche Umlaute
var Ae = String.fromCharCode(196);
var Oe = String.fromCharCode(214);
var Ue = String.fromCharCode(220);
var ae = String.fromCharCode(228);
var oe = String.fromCharCode(246);
var ue = String.fromCharCode(252);
var sz = String.fromCharCode(223);

var sortField = "";
var sortOrder = "";

	var BooksXslt;
	var BooksXml;
try
{
}
catch(e)
{
	Placeholder.innerHTML = "<p>Ihr Browser unterstützt nicht die Ausführung von ActiveXObjekten oder die Sicherheitseinstellungen lassen deren Ausführung nicht zu.</p> <p>Der Seiteninhalt kann nicht generiert werden.</p>";
}



function MyInit()
{
	try
	{
		// XSL-Stylesheet
		BooksXslt = new ActiveXObject("msxml2.DOMDocument.3.0");
		BooksXslt.async = false;
		BooksXslt.load("books.xsl");
		if (BooksXslt.parseError.errorCode != 0)
		{
		   var myError = BooksXslt.parseError;
		   alert("Fehler beim Parsen der Datei books.xsl: " + myError.reason);
		}
	
		// XML-Dokument
		BooksXml = new ActiveXObject("msxml2.DOMDocument.3.0");
		BooksXml.async=false;
		BooksXml.load("books.xml");
		if (BooksXml.parseError.errorCode != 0)
		{
		   var myError = BooksXml.parseError;
		   alert("Fehler beim Parsen der Datei books.xml: " + myError.reason);
		}

		scriptcontent.style.display = "block";
		// Bei Neustart INPUTS leeren
		BooksFilterAuthor.value = "";
		BooksFilterTitle.value = "";
		BooksFilterPublisher.value = "";
		
		SetNewSort("no", "ascending");
	}
	catch(e)
	{
		MyBody.innerHTML = "<p>Ihr Browser unterstützt nicht die Ausführung von ActiveXObjekten oder die Sicherheitseinstellungen lassen deren Ausführung nicht zu.</p> <p>Der Seiteninhalt kann nicht generiert werden.</p>";
	}
}
// Aufruf von
// --> ONCLICK der Sortierschaltflächen
function SetNewSort(newSortField, newSortOrder)
{	
	if (newSortField + newSortOrder != sortField + sortOrder)
	{
		var variableSortNode = BooksXslt.selectSingleNode("//xsl:sort");
		variableSortNode.attributes.getNamedItem('select').nodeValue = newSortField;
		variableSortNode.attributes.getNamedItem('order').nodeValue = newSortOrder;
		if(newSortField == "no" || newSortField == "price")
		{
			variableSortNode.attributes.getNamedItem('data-type').nodeValue = "number";
		}
		else
		{
			variableSortNode.attributes.getNamedItem('data-type').nodeValue = "text";
		}

		Placeholder.innerHTML = BooksXml.transformNode(BooksXslt);

		// Nur falls nicht erste Sortierung
		if(sortField != "")
		{
			// Alte Sortiermarkierung entfernen
			var oldSortArrow = document.getElementById(sortField + sortOrder);
			oldSortArrow.style.cursor = "hand";
			switch (sortOrder)
			{
				case "descending" :
					oldSortArrow.src = "graphics/desc1.gif";
					oldSortArrow.title = "Spalte sortieren:  Absteigend";
					break;
				case "ascending" :
					oldSortArrow.src = "graphics/asc1.gif";
					oldSortArrow.title = "Spalte sortieren:  Aufsteigend";
					break;
			}
		}

		sortField = newSortField;
		sortOrder = newSortOrder;

		// Neue Sortiermarkierung setzen
		var newSortArrow = document.getElementById(sortField + sortOrder);
		newSortArrow.title = "Aktive Sortierung";
		newSortArrow.style.cursor = "auto";
		switch (sortOrder)
		{
			case "descending" :
				newSortArrow.src = "graphics/desc3.gif";
				break;
			case "ascending" :
				newSortArrow.src = "graphics/asc3.gif";
				break;
		}
	}
	else
	{
		alert("Die aktuelle Sortierung entspricht bereits der von Ihnen ausgew" + ae + "hlten Sortierung.");
	}
}

// Aufruf von
// --> ONMOUSEOVER auf Sortierpfeilen in den Spaltenkoepfen [Dateiatentabelle [Datei: index.xsl]
function SortMouseover(newSortField, newSortOrder)
{
	if (newSortField + newSortOrder != sortField + sortOrder)
	{
		switch (newSortOrder)
		{
			case "descending" :
				window.status = "Spalte sortieren: Absteigend";
				document.getElementById(newSortField + newSortOrder).src = "graphics/desc2.gif";
				break;
		
			case "ascending" :
				window.status = "Spalte sortieren: Aufsteigend";
				document.getElementById(newSortField + newSortOrder).src = "graphics/asc2.gif";
				break;
		}
	}
	else
	{
		window.status = "Aktive Sortierung";
	}
}

// Aufruf von
// --> ONMOUSEOUT auf Sortierpfeilen in den Spaltenkoepfen [Dateiatentabelle [Datei: index.xsl]
function SortMouseout(newSortField, newSortOrder)
{
	if (newSortField + newSortOrder != sortField + sortOrder)
	{
		switch (newSortOrder)
		{
			case "descending" :
				window.status = "";
				document.getElementById(newSortField + newSortOrder).src = "graphics/desc1.gif";
				break;
		
			case "ascending" :
				window.status = "";
				document.getElementById(newSortField + newSortOrder).src = "graphics/asc1.gif";
				break;
		}
	}
	else
	{
		window.status = "";
	}
}

// Aufruf von
// --> ONKEYUP der INPUTS in den Spaltenköpfen [Dateiatentabelle [Datei: index.xsl]
function OnKeyUpFilterInput()
{
	// alle Filtervergleiche: non-case sensitiv
	// - XML-Daten: per XSLT-Funktion translate()
	// - Benutzereingaben: per Javascript-Funktion toLowerCase()
	filterAuthor = "contains(translate(author, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ', 'abcdefghijklmnopqrstuvwxyzäöü'), '" + BooksFilterAuthor.value.toLowerCase() + "')";
	filterTitle = "contains(translate(title, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ', 'abcdefghijklmnopqrstuvwxyzäöü'), '" + BooksFilterTitle.value.toLowerCase() + "')";
	filterPublisher = "contains(translate(publisher, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ', 'abcdefghijklmnopqrstuvwxyzäöü'), '" + BooksFilterPublisher.value.toLowerCase() + "')";

	var variableFilter = BooksXslt.selectSingleNode("//xsl:apply-templates");
	variableFilter.attributes.getNamedItem('select').nodeValue = "book[" + filterAuthor + " and " + filterTitle + " and " + filterPublisher + "]";
	Placeholder.innerHTML = BooksXml.transformNode(BooksXslt);
}







