jQuery.fn.worterklaerung = function(wort, erklaerung) {
	function innerHighlight(node, pat, erklaerung) {
		var found = false;
		if (node.nodeType == 3) {
			re = eval("/([^a-zA-ZäöüßÄÖÜ]|^)"+pat+"([^a-zA-ZäöüßÄÖÜ]|$)/i");
			var pos = node.data.search(re);
			if (pos >= 0) {
				re = eval("/"+pat+"/i");
				pos = node.data.search(re);
				var spannode = document.createElement('span');
				spannode.className = 'worterklaerung';
				spannode.title = erklaerung;
				
				var middlebit = node.splitText(pos);
				var endbit = middlebit.splitText(pat.length);
				var middleclone = middlebit.cloneNode(true);
				spannode.appendChild(middleclone);
				middlebit.parentNode.replaceChild(spannode, middlebit);
				found = true;
			}
		} else {
			if (node.nodeType == 1 && node.childNodes && !/(script|style|h2)/i.test(node.tagName)) {
				var i = 0;
				while (i < node.childNodes.length && !found) {
					found = innerHighlight(node.childNodes[i], pat, erklaerung);
					i++;
				}
			}
		}
		return found;
	}
	return this.each(function() {
		innerHighlight(this, wort, erklaerung);
	});
};

jQuery.fn.tooltip = function(){	
	/* CONFIG */		
		xOffset = 15;
		yOffset = 20;		
		// these 2 variable determine popup's distance from the cursor
		// you might want to adjust to get the right result		
	/* END CONFIG */		
	$(".worterklaerung").hover(function(e){											  
		this.t = this.title;
		this.title = "";									  
		$("body").append("<p id='tooltip'>"+ this.t +"</p>");
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px")
			.fadeIn("fast");		
    },
	function(){
		this.title = this.t;		
		$("#tooltip").remove();
    });	
	$(".worterklaerung").mousemove(function(e){
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px");
	});			
};

