//Parameter aus Querystring ermitteln
var sw_pattern = /(?:\?|&)sWord=(.+?)(?:&|$)/;
var result = sw_pattern.exec(window.location.search);

if (result) {
	var sw_Words = unescape(result[1]); //Mehrere Wörter können mit + getrennt angegeben werden
	var sw_Part = true;                 //Ob auch Teilstrings gesucht werden
	
	//Teilstring-Ja/Nein-Parameter ermitteln
	sw_pattern = /(?:\?|&)sPart=(.*?)(?:&|$)/;
	result = sw_pattern.exec(window.location.search);
	if (result)
	    if (result[1] == '0')
		    sw_Part = false;

	highlightWord(sw_Words.split("+"),sw_Part);  //Übergabe Array mit zu highlightenen Wörtern und Teilstring-Ja/Nein (true od. false)
}

function highlightWord(lWords,lPart) {
	var i;
	var okay;
	var linkeSeite = "";
	var rechteSeite = "";
	var newtext = "";
	var tagRest = "";
	var wort = "";
	var patternTagEnd, patternBereich;
	var text = window.document.body.innerHTML;  //Seitentext
	var firstMatch = true;
	var result, scriptresult;
    	
    //Auf mittleren Content beschneiden
	var posStart = 0;
	var posEnd = text.length;
	var patternBereich = /\<div [^>]*class="mCont".*?\>/i;
	if (result = patternBereich.exec(text)) {
	    rechteSeite = text.substring(result.index+result[0].length,text.length);
	    posStart = result.index;
	    var divLength = result[0].length;
	    	    
	    //End-Tag ermitteln
	    var divCount = 1;
	    patternBereich = /\<(\/)?div.*?\>/i;
		while (result = patternBereich.exec(rechteSeite)) {
		
		    if (result[1] == '/')
		        divCount--;
		    else
		        divCount++;
		    
		    if (divCount == 0) {
		        posEnd = posStart + divLength + result.index + result[0].length + 1;
		        break;
		    }
		    
		    divLength += result.index + result[0].length;
		    rechteSeite = rechteSeite.substring(result.index+result[0].length,text.length);
		}
		
		
	}

    var textLinks = text.substring(0,posStart);
    var textRechts = text.substring(posEnd-1,text.length);
    text = text.substring(posStart,posEnd-1);
    
	//Scriptblöcke ersetzen
	var scriptbloecke = [];
	var patternScript = new RegExp("\<script[^>]*?\>(?:.|\n)*?\</script\>","gi");

	if ((scriptresult = text.match(patternScript))!=null) {

		for (var j=0;j<scriptresult.length;j++)	 {
			scriptbloecke.push(scriptresult[j]);
		}
		text = text.replace(patternScript,"{S#C#R}")
	}
    
    //Wörter markieren (durch <span>Wort</span> ersetzen)
    var pattern = new RegExp((!lPart ? "\\b" : "")+"("+lWords.join("|")+")","i");  //Regexp um Wörter zu finden
    
	while (result = pattern.exec(text)) {
		linkeSeite = text.substring(0,result.index);  //RegExp.leftContext;
		rechteSeite = text.substring(result.index+result[0].length,text.length);  //RegExp.rightContext;
		wort = result[1];		
		tagRest = "";
		okay = true;
				
		//nach Wort suchen und linke Seite checken, ob Tag offen ist, wenn ja Wort nicht ersezten
		for (i=linkeSeite.length-1;i>-1;i--) {
			if (linkeSeite.charAt(i) == '<') {
				
				//Wenn sich Wort in Tag befindet, den kompletten Tag-String schreiben (überspringen)
				patternTagEnd = /(\>|$)/;
				result = patternTagEnd.exec(rechteSeite);
				tagRest = rechteSeite.substring(0,result.index) + result[1];
				rechteSeite = rechteSeite.substring(result.index+result[0].length,text.length);

				okay = false;
				break;
			} else {
				if (linkeSeite.charAt(i) == '>')
					break;
			}
		}


		if (okay) {
		    if (poolfarbe.length<6)
		        for(var i=0;i<(6-poolfarbe.length);i++)
		            poolfarbe = '0'+poolfarbe;
		    var schriftfarbe = (parseInt(poolfarbe.substr(0,2),16)*0.3 + parseInt(poolfarbe.substr(2,2),16)*0.59 + parseInt(poolfarbe.substr(4,2),16)*0.11 > 128 ? '030303':'FFFFFF');
		    		    
			newtext += linkeSeite + '<span '+ (firstMatch ? 'id="scrollToId" ' : '') +'style="color:#'+schriftfarbe+';background-color:#'+poolfarbe+';padding:0px 2px">'+ wort +'</span>';
			firstMatch = false;  //Wird für jedes weitere gefunde Wort zurückgesetzt
		} else {
			newtext += linkeSeite + wort + tagRest;
		}
	
		text = rechteSeite;
	}
	
	newtext += text;

	//Scriptblöcke zurückersetzen
	//if (scriptbloecke!=null) {
	    patternScript = /{S#C#R}/;
	    for (j=0;j<scriptbloecke.length;j++)
		    newtext = newtext.replace(patternScript,scriptbloecke[j]);
	//}
		
    //Bereiche wieder zusammenführen
    newtext = textLinks.concat(newtext).concat(textRechts);
    
    //Anzeige des veränderten Quelltextes
	window.document.body.innerHTML = newtext;
	if (ge('scrollToId'))
	    ge('scrollToId').scrollIntoView(false);

}
