/*
         ___                         _____       __
        /  /\        ________       /    /\     / /\
(-----//  /  \//----/_____/__\\--) /____/  \___/_/ //--------------------------)
      /  /   /      \     | //     \    \  /    /\/    this code was created by
     /__/   /        \    |///-----\\____\/____/  \                       sigea
(---\\  \  /   (-----\\___|/        /    /\    \  /       
      \__\/                        /____/ /\____\/            __       sigea.ch
                                   \____\/  \  /             /\_\--------------)
                                         \___\//-------------\/_/  

*/
var glossar;
function Glossar(){
	var glossarID='glossar';
	var bgImg=new Image();
	bgImg.src='pics/bg_glossar.png';
	var showFlag=false;
	var titleBackup=new Object();
	this.prepare=function(){
		var abbrs=document.getElementsByTagName('dfn');
		for(var i=0; i < abbrs.length; i++){
			titleBackup[abbrs[i].lastChild.nodeValue]=abbrs[i].title;
			abbrs[i].onmouseover = function(){
				return glossar.show(this);
			}
			abbrs[i].onmouseout = function(){
				return glossar.hidde(this);
			}
			abbrs[i].removeAttribute('title');
		}
		return true;
	}
	this.show=function(element){
		if(showFlag) return false;
	//	titleBackup=element.title;
	//	element.title='';
	//	element.removeAttribute('title');
		var glossarDiv=document.createElement('div');
		glossarDiv.id=glossarID;
		var hElement=document.createElement('h3');
		hElement.appendChild(document.createTextNode(element.lastChild.nodeValue));
		glossarDiv.appendChild(hElement);
		var pElement=document.createElement('p');
		pElement.appendChild(document.createTextNode(titleBackup[element.lastChild.nodeValue]));
		glossarDiv.appendChild(pElement);
		//glossarDiv.style.top=mouseY+'px';//element.offsetTop+'px';
		//glossarDiv.style.left=mouseX+'px';//element.offsetLeft+'px';
		glossarDiv.style.left=getOffsetX(element)+'px';
		//alert(getOffsetX(element));
		//element.parentNode.appendChild(glossarDiv);
		//alert(element.offsetTop);
		//glossarDiv.style.top=(element.offsetTop-glossarDiv.offsetHeight)+'px';
		document.getElementsByTagName('body')[0].appendChild(glossarDiv);
		//P7_Snap('testg',glossarID,0,-glossarDiv.offsetHeight);
		
		glossarDiv.style.top=(getOffsetY(element)-glossarDiv.offsetHeight)+'px';
		showFlag=true;
		return true;
	}
	var getOffsetY=function(element){
		var offsetY=element.offsetTop;
		while(element.offsetParent){
			element=element.offsetParent
			offsetY+=element.offsetTop;
		}
		return offsetY;
	}
	var getOffsetX=function(element){
		var offsetX=element.offsetLeft;
		while(element.offsetParent){
			element=element.offsetParent
			offsetX+=element.offsetLeft;
		}
		return offsetX;
	}
	this.hidde=function(element){
		if(!document.getElementById(glossarID)) return false;
		var parent=document.getElementById(glossarID).parentNode;
		parent.removeChild(document.getElementById(glossarID));
		parent=null;
		//element.setAttribute('title',titleBackup);
		//titleBackup='';
		showFlag=false;
		return true;
	}
	var getWindowHeight=function(){
		var windowHeight=0;
		if(typeof(window.innerHeight)=='number'){
			windowHeight = window.innerHeight;
		}else if(document.documentElement && document.documentElement.clientHeight) {
			windowHeight = document.documentElement.clientHeight;
		}else if( document.body && document.body.clientHeight){
			windowHeight = document.body.clientHeight;
		}
		return windowHeight;
	}
	this.setMousepos=function(evt){
	//alert(evt);
		evt=evt || window.event;
		mouseX=evt.clientX;
		mouseY=evt.clientY;
		//alert(x);
	}
	function mousePoint(x,y){
		this.x=x;
		this.y=y;
	}
}
function prepareGlossar(){
	glossar=new Glossar();
	glossar.prepare();
}
addLoadEvent(prepareGlossar);