// Hier der Versuch einer über dem zu tooltippenden Element schwebenden InfoBox

// ein Bisschen Browsersniffing
var uagent = navigator.userAgent;

// Auf Mac Spezielitäten kann leider noch nicht rücksichtgenommen werden
// var browser = (uagent.indexOf('Mac') >= 0) ? "_mac" : "_win";

var uagent = navigator.userAgent;
var isKHTML = ((uagent.indexOf('KHTML') >= 0) || (uagent.indexOf('Safari') >= 0)) ? true : false;
var isMac = (uagent.indexOf("Mac") >= 0) ? true : false;	
//var isSafari = (uagent.indexOf("Sarfari") >= 0) ? true : false;
var isIE = ((uagent.indexOf('MSIE') >= 0) && !isKHTML && !isMac) ? true : false;
var isOpera = (uagent.indexOf('Opera') >= 0) ? true : false;	
var isGecko = ((uagent.indexOf('Gecko') >= 0) && !isKHTML ) ? true : false;
var isIE6 = ( isIE && (uagent.indexOf('6') >= 0) && !isKHTML) ? true : false;

// in der Hoffnung, dass Apples Safari sich wirklich wie KDE's Konqueror verhält ...
var isKHTML = (uagent.indexOf('KHTML') >= 0) ? true : false;

var infobox =  null;
var x = 0;
var y = 0;
var  relPath;
var infoBoxInner; // wird mit dem  tag für das schließ-X gefülllt
function createInfoBox(_relPath) 
{
	relPath = _relPath;
		
	
	
	// Hier wird ein div-Element "infobox" erzeugt, so muss es nicht in der HTM-Datei motiert werden, 
	// und wird ja sowieso nur gebraucht, wenn JS aktiviert ist
	
	var boxelement = document.createElement('div');
	boxelement.id = 'infobox'; 
	var body;                         
	body =  document.getElementsByTagName('body')[0];
	body.appendChild(boxelement);           
	
	// wird der einfachheit haber bei jedem infobox-Aufruf miteingefügt
	infoBoxInner = "<div style='text-align: right' > <img id=\"infoX\"" 
	+"onmouseover=\"document.getElementById('infoX').src = '"+relPath+"images/X_highlighted.gif'\""
	+"onmouseout=\"document.getElementById('infoX').src = '"+relPath+"images/X.gif'\""
	+"onclick=\"hideInfoBox(); document.getElementById('infoX').src = '"+relPath+"images/X.gif'\""
	+"alt=\"\" src=\""+relPath+"images/X.gif\" /></div>";
	
	infobox = document.getElementById('infobox');	
}
	
var offset = new Array(2);
offset[0] = 0;
offset[1] = 0;
var isMovableInfo = true;

// sowas kann hier nicht mehr gemacht werden, da die box nun am anfange der bodys eingebunden wird
/*
var elements= document.getElementsByTagName('span');         
*/
// an jedem input-Element werden die zur Anzeige der InfoBox nötigen Eventhandler-Attributtags angefügt,
// sofern das title-Atribute gesetzt ist,
// bzw. (hier als Spezialfall) die maximale Länge eines input-Feldes (maxlength-Attributtag) gesetzt ist
/*
for (var i = 0; i < elements.length; i++)
{                                                                                               
        var text = elements[i].getAttribute("title");
        if  (text != null && text != "" )
        {                               
                elements[i].title = "";  
                                                                                                                 
                elements[i].setAttribute("onmouseover", "showInfoBox(\'" + text + "\');");                                       
                elements[i].setAttribute("onmouseout",  "hideInfoBox();");                                                                                                                                                             
        }                                                        
}
*/
// der InternetExplorer braucht leider eine Sonderbehandlung, damit er die gesetzten Eventhandlerattribute auch interpretiert
if (isIE && !isOpera)
{
        // prepareForIE();
}
function prepareForIE() 
{               
        var bodyText = document.getElementById("alles").innerHTML;
        if (bodyText != null && bodyText != "")
        {                
                document.getElementById("alles").innerHTML = "";                      
                document.getElementsByTagName("body")[0].insertAdjacentHTML("AfterBegin", bodyText);           
        }
}

// hier werden bei sichtbarer InfoBox die Bildschirmkoordinaten selbiger denen des Mauszeigers angepasst
var movedInfo = 0;
function positionInfoBox(Ereignis)
{        
	movedInfo++;
	// bei Elementen, die ein alt-Attribut (besonders: img) definieren, stellt der IE dieses gerne,
	// den eigentlichen Verwendungszweck missachtend als ToolTip dar.
	// Daher, hier der Versuch, das alt-Attribut durch DOM-Manipulation zu 
	// entfernen
// 	if (!document.all)
// 	{
// 		object = Ereignis.target;
// 	}
// 	else
// 		object = event.srcElement;
// 	object.removeAttribute("alt");

        // Eventhandling im IE geht über vordefinierte Variable "event"

// 2004-08-29
// vor allem scheint es ab xhtml nicht mehr mit document.body.scrollLeft/Top
// zu funktionieren, sondern mit document.documentElement.scrollTop
        if (isIE && !isOpera)
        {                     
                x = (document.documentElement && document.documentElement.scrollLeft) ? window.event.clientX + document.documentElement.scrollLeft : window.event.clientX + document.body.scrollLeft; // + document.body.scrollLeft;
                y = (document.documentElement && document.documentElement.scrollTop) ? window.event.clientY + document.documentElement.scrollTop : window.event.clientY + document.body.scrollTop; // + document.body.scrollTop;                
        }
        // in den anderen Browsern gibt man dem Eventobjekt bei der Übergabe als Funktionenparameter einen eigenen Variablennamen
	else if (isOpera) 
	{
				// so funktionierts unter Windows mit Opera 7.54:
		x = Ereignis.pageX; //+ document.body.scrollLeft;
                y = Ereignis.pageY; // - document.body.scrollTop;                
	}
	else if (isKHTML)
	{
		x = Ereignis.pageX;
		y = Ereignis.pageY;
	}
        else                         
        {
                x = Ereignis.pageX + document.body.scrollLeft;
                y = Ereignis.pageY + document.body.scrollTop;                
        }
	
        if ( infobox != null )
        {               
                if ( (offset[0] == 0) && (offset[1] == 0))
		{
			if (isIE) 
			{
				offset[0] = -20;
				offset[1] = -20;
	
			}
			else if (isGecko)
			{
				offset[0] = -20;
				offset[1] = -20;
			}
			else
			{
				offset[0] = -20;
				offset[1] = -20;
			}                                        
		}
                infobox.style.left = x  - offset[0] + 'px';
                infobox.style.top= y  - offset[1] + 'px'; 
		var shadow = document.getElementById("infoboxshadow");
		if (shadow)
		{
			shadow.style.width = infobox.offsetWidth + 'px';
			shadow.style.height = infobox.offsetHeight + 'px';
			shadow.style.left = (x - offset[0] + 10) + 'px';
			shadow.style.top = (y - offset[1] + 10) + 'px';
			if (!isMovableInfo)
			{
				shadow.style.height = (infobox.offsetHeight - 35) + 'px';
				shadow.style.top = (infobox.offsetTop + 45) + 'px';

			}
		}
		// infobox.innerHTML = "<div>" + x + " / " + y + "<div>";
	}       
} 
function releaseInfo() 
{	
	if (movedInfo)
		window.setTimeout("document.onmousemove = null", 100);

	
	var shadow = document.getElementById("infoboxshadow");
		if (shadow && isGecko)
		{
			shadow.style.height = (infobox.offsetHeight - 35) + 'px';
			shadow.style.top = (infobox.offsetTop + 45) + 'px';
		}
	
}
// s.u.
var tmpInfoResizer;
// Hervorholen der InfoBox 
function showInfoBox(text, offsetX ,offsetY)
{       
	offset[0] = (offsetX) ? offsetX : 0;
 	offset[1] = (offsetY) ? offsetY : 0;     
	infobox = document.getElementById('infobox');
		infobox.innerHTML = infoBoxInner + "<div id='innerInfoBox'"
		+ " style='overflow: hidden;'>"
		+"<img id='immobileInfoBoxBg' class='bg' src='"+relPath+"images/trans.gif' />" + text + "<div>";  
	

		document.onmousemove = positionInfoBox; 
		
		window.setInterval("releaseInfo()", 50);
		//window.setInterval("document.onmousemove = null;", 250);
		//document.onclick = hideInfoBox;        
		
	
        showElement("infobox");       
	//showElement("infoboxshadow");
// diese Funktion wird momentan in footer.inc.php definiert
  	if (isIE6 || isGecko)
		if (resizeFunction)
			tmpInfoResizer = window.setInterval("resize()", 10);			
}     
// verstecken der InfoBox 
function hideInfoBox()
{           
	movedInfo = 0;           
        hideElement("infobox");       
        //hideElement("infoboxshadow");
	//infobox.style.top = '-1250px';   
	window.clearInterval(tmpInfoResizer);
	if (isIE6 || isGecko) 
		if (resizeFunction)
			resize();
}
// 29.02.04 - Größe setzen
function setInfoBoxSize(width, height)
{
	infobox.style.width = width + "px";
	infobox.style.height = height + "px";
}

