/*
 * File   : $Source: /opt/CVS/LISTERINE-CMS/public_html/js/default.js,v $
 * Date   : $Date: 2009/01/27 10:59:22 $
 * Version: $Revision: 1.7 $
 * Author : Carsten Wilhelm (wilhelm@bplusd.de)
 * Author : Carsten Wogatzky (wogatzky@bplusd.de)
 * Author : Thomas Weckert (weckert@bplusd.de)
 */

/*
 * Ersetzt ein DIV durch ein Flash, das den gleichen Text (ohne HTML-Tags)
 * anzeigt.
 * Die übergebene Höhe sollte auf eine einzeilige Headline gemessen werden,
 * da das JavaScript die Höhe mal der Anzahl der gefundenen Zeilen
 * multipliziert (um ein "Zucken" auf der Website zu vermindern).
 */
function replaceHeadline(flash,id,width,height,color,bgcolor,fontface,size,link,arrow,padding) {
	var div = document.getElementById(id);
	if (div) {
		// Text der Headline suchen
		var lines = 1;
		var text = div.innerText ? div.innerText : div.textContent;
		if (text) {
			// Whitespaces am Anfang und Ende entfernen
			text = text.replace(/^\s+/, "");
			text = text.replace(/\s+$/, "");
			// &-Zeichen ersetzen
			text = text.replace(/&/g, "%26");
			// Newlines vereinfachen
			text = text.replace(/[\r\n]+/g, "\n");
			// Anzahl Zeilen zählen
			lines = text.split("\n").length;
		}

		// Link der Headline suchen
		var link;
		var atags = getElementsByTagName(div, "a");
		if (atags && atags.length > 0) {
			link = atags[0].href;
		}

		// Flash einsetzen
		var so = new SWFObject(flash, id, width, lines * height, "8", "#fff");
		so.addVariable("text", text);
		so.addVariable("colorhex", color);
		so.addVariable("fontsize", size);
		so.addVariable("fontface", fontface);
		so.addVariable("padding_left", padding);
		so.addVariable("bgcolor", bgcolor);
		so.addVariable("link", link);
		so.addVariable("arrow", arrow);
		so.addParam("wmode", "transparent");
		so.write(id);

		// Gefundened DIV zurückliefern
		return div;
	}
}

/*
 * Liefert alle Tags eines bestimmten Namens unterhalb des
 * übergebenen Root-Knotens
 */
function getElementsByTagName(root, tagname) {
	// Neue Liste für zu bearbeitende Knoten
	var todo = new Array(root);
	// Neue Liste für gefundene Tags
	var found = new Array();
	// Tagnamen auf Großbuchstaben bringen
	tagname = tagname.toUpperCase();

	// Liste abarbeiten
	while(todo.length > 0) {
		var tag = todo.pop();
		if (tag.nodeName.toUpperCase() == tagname) {
			found.push(tag);
		}
		if (tag.childNodes) {
			for(var i=tag.childNodes.length-1 ; i>=0 ; --i) {
				todo.push(tag.childNodes[i]);
			}
		}
	}

	return found;
}