function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function mask(end,middle,start,subject){
  var one ='mai';
  var two='lto:';
  var three='?Subject=';
  start,middle,end,subject;
  var putogether= one+two+start+middle+end+three+subject;
  document.location.href=eval('"'+putogether+'"');
  window.status=putogether;
}

function Scrollen(id) {
    var Gescrollt = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : window.pageYOffset;
    var ObjektID = 'scroll' + id; // id ist die von PHP übergebene id der Frage
    document.getElementById(ObjektID).value = Gescrollt;
    var MWidthID = 'mx' + id;
    var MHeightID = 'my' + id;
    document.getElementById(MWidthID).value = screen.width;
    document.getElementById(MHeightID).value = screen.height;
    var BWidthID = 'bx' + id;
    var BHeightID = 'by' + id;
    document.getElementById(BWidthID).value =  window.innerWidth  ? window.innerWidth  : document.body.clientWidth  ? document.body.clientWidth  : document.documentElement.clientWidth;
    document.getElementById(BHeightID).value = window.innerHeight ? window.innerHeight : document.body.clientHeight ? document.body.clientHeight : document.documentElement.clientHeight;
}

function auswahlAktivieren() {
	document.getElementById('antwortenAuswahl').className = 'fragestarten';
    document.getElementById('antwortenZahl').className = 'fragestartengrau';
    document.getElementById('formular').antwort1.focus();
    document.getElementById('formular').auswahl.checked = true;
}

function zahlAktivieren() {
	document.getElementById('antwortenZahl').className = 'fragestarten';
	document.getElementById('antwortenAuswahl').className = 'fragestartengrau';
    document.getElementById('formular').einheit.focus();
    document.getElementById('formular').zahl.checked = true;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/* Features:
*) bei externen Referrern werden nur komplette Woerter 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();
	MM_preloadImages('dateien/frage-starten-aktiv.gif');
}