function geheimnis() {
	var teil1 = 'lto:tho';
	var teil2 = 'mas';
	var teil3 = 'landau';
	var teil4 = 'er.at';
	var adresse = teil1 + teil2 + String.fromCharCode(63+1) + teil3 + teil4;
	document.getElementById('geheimlink').href = 'mai' + adresse;
	document.geheim2 = new Image;
	document.geheim2.src = 'http://www.landauer.at/geheim2.gif';
}

function FussnoteEinblenden(BegriffObjekt) {
  var PositionBegriffVonLinks = BegriffObjekt.offsetLeft;  // relativer Abstand zum übergeordneten Objekt (z.B. <div>)
  var PositionBegriffVonOben = BegriffObjekt.offsetTop;
  var BreiteBegriff = BegriffObjekt.offsetWidth;
  var HoeheBegriff = BegriffObjekt.offsetHeight;
  var GescrollteStreckeVonOben  = document.body.scrollTop  ? document.body.scrollTop  : window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop; // vorne: MSIE ? | mitte: Firefox | hinten: MSIE 6 Strict
  var GescrollteStreckeVonLinks = document.body.scrollLeft ? document.body.scrollLeft : window.pageXOffset ? window.pageXOffset : document.documentElement.scrollLeft;
  if (isNaN(GescrollteStreckeVonOben)) { GescrollteStreckeVonOben = 0; } // sonst liefert MSIE 6&7 'undefined' zurück, wenn nicht gescrollt wurde
  if (isNaN(GescrollteStreckeVonLinks)) { GescrollteStreckeVonLinks = 0; }

  var Nummer = BegriffObjekt.id.substr(16); // BegriffObjekt.id ist z.B. fussnotenzeichen5
  /*
  while (BegriffObjekt.offsetParent) {  // Solange das BegriffObjekt ein übergeordnetes Objekt hat...
    BegriffObjekt = BegriffObjekt.offsetParent;  // ...mach dieses übergeordnete Objekt zum BegriffObjekt...
    PositionBegriffVonLinks += BegriffObjekt.offsetLeft;  // ...und addiere seinen Abstand (zu seinem übergeordneten Objekt) zum bisherigen Abstand dazu.
    PositionBegriffVonOben += BegriffObjekt.offsetTop;  //  Abstand von ganz oben (Beginn der Seite)
  }
  */
  var Browserfensterbreite = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth;
  var Browserfensterhoehe  = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight; // Reihenfolge ist wichtig, weil Opera8 gibt bei document.documentElement.clientHeight 16 zurück
  var PlatzLinks = PositionBegriffVonLinks - GescrollteStreckeVonLinks;
  var PlatzRechts = Browserfensterbreite - PlatzLinks - BreiteBegriff;

  var FussnoteObjekt = document.getElementById('fussnote' + Nummer).cloneNode(true);  FussnoteObjekt.className = "fussnote";
  FussnoteObjekt.id = "eingeblendeteFussnote";
  document.body.appendChild(FussnoteObjekt);

  var PaddingLeft  = FussnoteObjekt.currentStyle ? parseInt(FussnoteObjekt.currentStyle.paddingLeft)  : parseInt(window.getComputedStyle(FussnoteObjekt,null).getPropertyValue("padding-left"));
  var PaddingRight = FussnoteObjekt.currentStyle ? parseInt(FussnoteObjekt.currentStyle.paddingRight) : parseInt(window.getComputedStyle(FussnoteObjekt,null).getPropertyValue("padding-right"));
  var GesamtbreiteFussnote = FussnoteObjekt.offsetWidth + PaddingLeft + PaddingRight;
  var MaximalerPlatz = Math.max(PlatzLinks - 20, PlatzRechts - 40);
  if (GesamtbreiteFussnote > MaximalerPlatz) {GesamtbreiteFussnote = MaximalerPlatz;}  // Verhindern, dass die Fußnote breiter wird, als Platz ist
  if (GesamtbreiteFussnote > 400) {GesamtbreiteFussnote = 400;}  // Zusätzlich verhindern, dass die Fußnote breiter als 400 wird
  FussnoteObjekt.style.width = (GesamtbreiteFussnote - PaddingLeft - PaddingRight) + "px";  // Firefox verlangt bei Doctype XHTML die Angabe von Zahl + "px"

  if (PlatzLinks <= PlatzRechts) {  // Wenn rechts mehr Platz ist
	FussnoteObjekt.style.left = PositionBegriffVonLinks + BreiteBegriff + 20 + "px";
  }
  else {  // Wenn links mehr Platz ist
	FussnoteObjekt.style.left = PositionBegriffVonLinks - GesamtbreiteFussnote + "px";
  }
  
  var HoeheFussnote = FussnoteObjekt.offsetHeight;
  var PlatzOben = PositionBegriffVonOben - GescrollteStreckeVonOben;
  var PlatzUnten = Browserfensterhoehe - PlatzOben - HoeheBegriff;

  if (PlatzOben <= PlatzUnten) {  // Wenn unten mehr Platz ist
    FussnoteObjekt.style.top = PositionBegriffVonOben + HoeheBegriff + 10 + "px";
    }
    else {  // Wenn oben mehr Platz ist
    FussnoteObjekt.style.top = PositionBegriffVonOben - HoeheFussnote + "px";
  }
}

function FussnoteAusblenden() {
	FussnoteObjekt = document.getElementById("eingeblendeteFussnote");
	FussnoteObjekt.parentNode.removeChild(FussnoteObjekt);
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/* Features:
*) bei externen Referrern werden nur komplette Wörter highlighted, bei internen (d.h. Suchfunktion der eigenen Website) auch Wortteile
*) Startelement konfigurierbar (d.h. Inhalt ausserhalb dieses Containers wird ignoriert)
*/

var qNamen = new Array('q', 'p', 'query', 'userQuery', 's');
var klassenname = 'suchbegriff';
var startelement = ''; // z.B. startelement = 'inhalt';
//var referrer = 'http://www.google.at/search?q=%C3%96sterreich+Lorem&sourceid=firefox-search&start=0';
var referrer = document.referrer;

/*
URL-Kodierung:
Fuer oe schreibt man:
Unicode: %C3%B6
Latin-1: %F6
*/

var eigeneDomain = document.URL.substr(7); // 'http://' vorne wegschneiden
eigeneDomain = eigeneDomain.substr(0, eigeneDomain.indexOf('/'));

function in_array(needle, haystack) {
	for(var i=0; i < haystack.length; i++) {
		if(haystack[i] === needle) {
			return true;
		}
	}
	return false;
}

function qErmitteln() {
	if (referrer.indexOf('?') == -1) {
		return null;
	}
	var queryString = referrer.substring(referrer.indexOf('?')+1); // referrer: http://www.google.at/search?q=%C3%96sterreich+Urlaub&sourceid=firefox-search&start=0
	queryStringTeil = queryString.split('&'); // Array: q=%C3%96sterreich+Urlaub, sourceid=firefox-search, start=0
	for (i=0; i < queryStringTeil.length; i++) {
		queryStringPaar = queryStringTeil[i].split('='); // Array: q, %C3%96sterreich+Urlaub
		if (in_array(queryStringPaar[0], qNamen)) {
			q = queryStringPaar[1];
			var	eigeneDomainRegExp = new RegExp ('(\/|.)' + eigeneDomain + '\/'); // vordere Klammer heisst: / oder .
			var IstEigeneDomain = eigeneDomainRegExp.test(referrer) ? true : false; // test() wendet den Regulaeren Ausdruck auf referrer an
			q = IstEigeneDomain ? unescape(q) : decodeURI(q); // unescape() wandelt Latin-1-Kodierung zurueck, decodeURI() UTF-8-Kodierung
			q = q.toLowerCase(); // darf erst nach unescape() kommen
			q = q.split('+'); // original: q.split(/[\s,\+\.]+/);
			klasse = new Array();
			for (var k=0; k < q.length; k++) {
				klasse[q[k]] = klassenname + (k+1);
			}		
			// wenn der Benutzer nicht von der Suchfunktion der eigenen Website kommt: nur ganze Woerter highlighten
			if (!IstEigeneDomain) { // test() wendet den Regulaeren Ausdruck auf referrer an
				var qNeu = new Array();
				for (i=0; i < q.length; i++) {
					qNeu.push('\\b'+q[i]+'\\b'); // \b: Wortgrenze (RegExp)
				}
				q = qNeu;
			}
			q = new RegExp(q.join('|'), 'i'); // RegExp: | heisst oder, 'i' heisst case-insensitive
			return q;
		}
	}
	return null;
}

function highlightRekursion(node, q) {
	if (node.hasChildNodes) {
		for (var i=0; i < node.childNodes.length; i++) { // i muss mittels var initialisiert werden (sonst Endlos-Rekursion)!
			highlightRekursion(node.childNodes[i], q);
		}
	}	
	var ausnahmen = /^(script|textarea)/i; // RegExp: 'i' heisst case-insensitive
	if (node.nodeType == 3 && !ausnahmen.test(node.parentNode.tagName)) { // Typ 3 heisst Text-Node. test() wendet den Regulaeren Ausdruck an
		nodeInhaltKlein = node.nodeValue.toLowerCase();
    var treffer = q.exec(node.data); // exec() wendet die RegExp q auf node.data an, und speichert die Ergebnisse (Details siehe unten) im Array treffer
    if (treffer) {
			var wort = treffer[0]; // exec() speichert den gefundenen Ausdruck an die erste Position im Array treffer ...
			var wortPosition = treffer.index // ... und seine Position in die Eigenschaft index
			if (node.parentNode.className != klasse[wort.toLowerCase()]) { // nur wenn das Wort noch nicht highlighted ist
				dahinter = node.splitText(wortPosition); // 'node' enthaelt jetzt nur mehr den Text bis wortPosition, 'dahinter' den restlichen Text
				dahinter.splitText(wort.length); // 'dahinter' enthaelt jetzt nur mehr das Wort 'wort'
				var em = document.createElement("em");
				node.parentNode.replaceChild(em, dahinter); // em ersetzt dahinter
				em.appendChild(dahinter);
				em.className = klasse[wort.toLowerCase()];				
			}
		}
	}
}

function highlight() {
	q = qErmitteln();
	if (q) {
		if (startelement == '') {
			highlightRekursion(document.getElementsByTagName("body")[0], q);
		}
		else {
			highlightRekursion(document.getElementsById(startelement), q);
		}
	}
}

window.onload = function() {
	highlight();
}
