// JavaScript Document

/*
- change_html_elems.js + change_html_now.js
- Achtung !!! - Diese Funktionen benötigen die Javascript-Bibliothek EmbedObjects
- Kompatibel: IE6/7/8 | Firefox 3/2 | Opera 9/10 | Safari 4 | Google Chrome 4
- Funktionsaufruf: grabHTMLText('Tagname|Tagklasse|Textgröße|Textfarbe|Flashname|Lineheight|Backcolor|Texteffects')
- Funktionsaufruf mehrerer Funktionen: grabHTMLText('x|x|x|x|x,x|x|x|x|x,x|x|x|x|x,x|x|x|x|x')
- Die Angaben des Tags sind mit "|" zu trennen
- Es können mehrere Tags übergeben werden, zu trennen mit ","
- Tagname 		= Name des zu ersetzenden Tags
- Tagklasse 	= Klasse mit der der Tag identifiziert wird
- Textgröße		= Größe des Flashtextes ('-' wenn nicht verwendet)
- Textfarbe 	= Farbe des Flashtextes (0xff0000 oder '-' wenn nicht verwendet)
- Flashname		= Name und Pfad der Flashdatei welche für das Ersetzen zuständig ist (flashtext.swf), braucht nicht geändert zu werden
- Lineheight	= Zwischenzeilenabstand des Textes (ca: 20 bis -20) ('-' wenn nicht verwendet)
- Backcolor		= Gibt dem Text eine Hintergrundfarbe, benötigt nur für Safari, weil der kein korrektes wmode:transparent kann (0xff0000 oder '-' wenn nicht verwendet)
- Texteffects	= Effekt für den Text (0=keiner,1=AlphaBlending)
*/

function GrabHTMLText(WhichItems){ // Welche Tags ersetzen? 
	
	var TagCheck = "";
	
	for(var i=0;i<WhichItems.length;i++){
		TagCheck = TagCheck + WhichItems[i];
		if(i<WhichItems.length-1){
			TagCheck = TagCheck + ",";
		}
	}
	//alert(TagCheck)
		
	// Was soll ersetzt werden
	
		
	// TagCheck splitten - wie viele Tags sollen ersetzt werden
	var ChangeItems = TagCheck.split(",");
	// alert(ChangeItems.length);
	// Angaben der Tags auseinandern nehmen
	for(var i=0;i<ChangeItems.length;i++){
		//alert(ChangeItems[i]);
		ChangeItems[i] = ChangeItems[i].split("|");
		// Tags zählen
		//alert(ChangeItems[i]);
		CountTags(ChangeItems[i][0],ChangeItems[i][1],ChangeItems[i][2],ChangeItems[i][3],ChangeItems[i][4],ChangeItems[i][5],ChangeItems[i][6],ChangeItems[i][7]);
	}

}

function CountTags(TagName,TagClass,TextSize,TextColor,FlashFileName,LineHeight,BackColor,TextEffect){ // Tags mit entsprechender Klasse zählen
	
	var z=0;
	var elem=document.getElementsByTagName(TagName);
	for(var i=0;i<elem.length;i++){
		if(elem[i].className.indexOf(TagClass)!=-1){
			z++;
			// Tags ersetzen aufrufen
			ChangeTags(elem[i],TagName,TagClass,z,TextSize,TextColor,FlashFileName,LineHeight,BackColor,TextEffect);
		}
	}
	//alert(z);
}

function ChangeTags(TagItem,TagName,TagClass,TagCount,TextSize,TextColor,FlashFileName,LineHeight,BackColor,TextEffect){ // Tags Inhalt sichern und ersetzen
	
	// Ersatz Tags
	var TagOff = '<span id="%1">%2</span>';
	var TagNewFlash = '<div id="%1"><div id="%2">&nbsp;</div></div>';
	var TagNewFlashId = '';
	var TagNewFlashId2 = '';
	var TagContent = '';
	var TagContentNew = '';
	var TagContentOldId = '';
	var TagContentAll = '';
	
	// Alten Content sichern
	TagContent = TagItem.innerHTML;
	TagContentOldId = TagName+TagClass+"ContOld"+TagCount;
	TagContentNew = SuchenUndErsetzen(TagOff, "%1", TagContentOldId);
	TagContentNew = SuchenUndErsetzen(TagContentNew, "%2", TagContent);
		
	// Neuen Content vorbereiten
	TagNewFlashId = TagName+TagClass+"ContNew"+TagCount;
	TagNewFlashId2 = TagName+TagClass+"ContNew2"+TagCount;
	TagNewFlash = SuchenUndErsetzen(TagNewFlash, "%1", TagNewFlashId);
	TagNewFlash = SuchenUndErsetzen(TagNewFlash, "%2", TagNewFlashId2);
	//alert(TagNewFlash);
	
	// Gesamter Content
	TagContentAll = TagContentNew + "\n" + TagNewFlash;
	//alert(TagContentAll);
	
	//Container auf relative setzen
	TagItem.style.position = "relative";
	TagItem.style.zIndex = "0";
	//Content zurückschreiben
	TagItem.innerHTML = TagContentAll;
	//Alten Content ins Off verschieben
	document.getElementById(TagContentOldId).style.position = "absolute";
	document.getElementById(TagContentOldId).style.top = "-10000px";
	
	//Den Flashersatz in den Content schreiben
	CreateFlash(TagNewFlashId,TagNewFlashId2,TagContent,TextSize,TextColor,FlashFileName,LineHeight,BackColor,TextEffect);
}

function CreateFlash(TagNewFlashId,TagNewFlashId2,TagContent,TextSize,TextColor,FlashFileName,LineHeight,BackColor,TextEffect){
		
		// Zufallszahl erzeugen damit das Flash nicht gecacht wird
		rnd = Math.round(Math.random()*1000000);
		
		FlashId = TagNewFlashId + "Flash";
		FlashFileName = FlashFileName+"?reload="+rnd;
		BrowserType = BrowserCheck();
		
		//alert(FlashId);
		           
        var params = {};
            params.movie = FlashFileName;
            params.quality = "high";
            params.wmode = "transparent";
			params.allowScriptAccess = "always";
       
	   var flashvars = {};
        	flashvars.flashid = FlashId;
			flashvars.flashfontsize = TextSize;
			flashvars.flashtextwidth = document.getElementById(TagNewFlashId).offsetWidth;
			flashvars.flashlineheight = LineHeight;
			flashvars.flashcolor = TextColor;
			flashvars.flashbackcolor = BackColor; // in Verbindung mit BrowserType
			flashvars.browsertype = BrowserType; // Für Safari, da Safari mit wmode:transparent Probleme hat
			flashvars.texteffect = TextEffect;
			flashvars.newcontent = encodeURI(TagContent);
        
		var attributes = {};
            attributes.align = "";
			attributes.id = FlashId;
       
    	swfobject.embedSWF(FlashFileName, TagNewFlashId2, "100%", "50", "9.0.0", "", flashvars, params, attributes);
		document.getElementById(TagNewFlashId).style.height = "auto"; // Damit Opera den Inhalt des Flash aktualisiert und korrekt anzeigt
		//alert(document.getElementById(TagNewFlashId).innerHTML);
}

function ChangeFlashHeight(newheight,flashid){ // Wird aus dem Flash heraus aufgerufen und setzt die Höhe des Flashs korrekt passend zum Text
		//alert(flashid);
		document.getElementById(flashid).style.height = newheight+"px";
		
}

function SuchenUndErsetzen(QuellText, SuchText, ErsatzText)
        {   // Erstellt von Ralf Pfeifer
            // Fehlerpruefung
            if ((QuellText == null) || (SuchText == null))           { return null; }
            if ((QuellText.length == 0) || (SuchText.length == 0))   { return QuellText; }

            // Kein ErsatzText ?
            if ((ErsatzText == null) || (ErsatzText.length == 0))    { ErsatzText = ""; }

            var LaengeSuchText = SuchText.length;
            var LaengeErsatzText = ErsatzText.length;
            var Pos = QuellText.indexOf(SuchText, 0);

            while (Pos >= 0)
            {
                QuellText = QuellText.substring(0, Pos) + ErsatzText + QuellText.substring(Pos + LaengeSuchText);
                Pos = QuellText.indexOf(SuchText, Pos + LaengeErsatzText);
            }
            return QuellText;
        } // -->

function BrowserCheck(){
	
	var BrowserType = navigator.userAgent;
	var BTId = 0;
	
	if(BrowserType.indexOf("Safari") != -1){
		BTId = 1;
	}else{
		BTId = 0;
	}
	return BTId;
}

