//
// diese Funktion ermittelt die absoluten Koordinaten des übergebenen Objekts element
//
function getPosition(element)
{
	var elem=element,tagname="",x=0,y=0;
	
	// Der einfache Weg:
	if(element.getBoundingClientRect)
	{
      var position = new Object();                                                  // Objekt mit x und y zurueckgeben
		 
      position.x = element.getBoundingClientRect().left + getScrollPosition().x;
      position.y = element.getBoundingClientRect().top  + getScrollPosition().y;
	   
		return position;
	}
   
	//
	// Der raue Weg: Zu Fuß ausrechnen
	// 	
	while ( elem != null && (typeof(elem) == "object") && (typeof(elem.tagName) != "undefined")) // solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
			{
				y += elem.offsetTop; // Offset des jeweiligen Elements addieren 
				x += elem.offsetLeft;
				
				tagname = elem.tagName.toUpperCase(); // tag-Name ermitteln, Grossbuchstaben
				
				// IE-Hack???
				if ((navigator.userAgent.indexOf('MSIE 6.0') > -1) || (navigator.userAgent.indexOf('MSIE 7.0') > -1)) 
				{
					if (elem.id == "col3") 
					{
						x -= elem.offsetLeft;
					}
				}
				if (tagname == "BODY") // wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen
				{
					elem = 0;
				}
				
				if (typeof(elem) == "object") // wenn elem ein Objekt ist und
				{
					if (typeof(elem.offsetParent) == "object") // offsetParent enthaelt 
					{
						elem = elem.offsetParent; // Offset-Elternelement ermitteln
					}
				}
			}
			
	position=new Object();                                                  // Objekt mit x und y zurueckgeben
	position.x=x;
	position.y=y;
	
	return position;
}


// 
// Gibt die Mauskoordinaten zurück
// 
function getMouseCoords(event)
{
   var position = new Object(); 
   
   event = event || window.event;    // event überprüfen und IE-kompatibel machen
   
   if(event.pageX || event.pageY)    // hier sind die Maus-Koordinaten in normalen Browser. Diese sind relativ zum Dokument.
   {
     position.x = event.pageX;
     position.y = event.pageY;  
   }
   else  // hier sind die Maus-Koordinaten im Internet Explorer. Der speichert die Koordinaten relativ zum Fenster, nicht zum Dokument
   {
     position.x = event.clientX + getScrollPosition().x - document.body.clientLeft;
     position.y = event.clientY + getScrollPosition().y - document.body.clientTop;
   };
   return position;
}



//
// Gibt true zurück, wenn sich die Maus über dem mitübergebenen Element befindet 
//
function isMouseOverElement(element,event)    
{
   var mousePos = getMouseCoords(event);
   var targPos    = getPosition(element);
   var targWidth  = parseInt(element.offsetWidth);
   var targHeight = parseInt(element.offsetHeight);

   if( (mousePos.x >= targPos.x)                &&              // ist rechts vom linken Rand oder darauf
       (mousePos.x <= (targPos.x + targWidth))  &&              // ist links vom rechten Rand oder darauf
       (mousePos.y >= targPos.y)                &&              // unterhalb vom oberen Rand oder darauf
       (mousePos.y <= (targPos.y + targHeight)))                // oberhalb vom unteren Rand oder darauf
   {
       return true;
   }
   else
   {
       return false;
   }
}

//
// Diese Funktion richtet ein Element unter einem anderen Element aus. Der Offset wird zum y-Abstand hinzuaddiert.
//    
function adjustFloatingElementToFixedElement(floatingElement, fixedElement,offset)
{
    // höhe des Elements ermitteln
    var suchfeldHoehe = 20;                                 // angenomme Standardhöhe des Element zur Ausrichtung 
    if(window.getComputedStyle)                             // W3C-style
    {
       suchfeldHoehe = parseInt(window.getComputedStyle(fixedElement, "").getPropertyValue("height"));// wird der wert nach int geparsed
    }
    else if(fixedElement.currentStyle )                         // IE-style
    {
       if (parseInt(fixedElement.currentStyle["height"]))       // wenn height ein integer enthält
          suchfeldHoehe = parseInt(fixedElement.currentStyle["height"]); // wird der wert nach int geparsed
    }
    var pos = getPosition(fixedElement);
    floatingElement.style.visibility = "visible";
    floatingElement.style.left = pos.x + "px";
    floatingElement.style.top  = pos.y + suchfeldHoehe + offset + "px";
    floatingElement.style.visibility = "hidden";
}



// 
// Gibt die Position der Seite zurück, also um wieviele Pixel gescrolled wurde.
// 
function getScrollPosition()  
{
    var scrOfX = 0, scrOfY = 0;
 
    if( typeof( window.pageYOffset ) == 'number' ) 
	 {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } 
	 else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
	 {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } 
	 else if( document.documentElement ) 
	 {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
	 
	 var scrollPosition = new Object(); 
	 scrollPosition.x = scrOfX;
	 scrollPosition.y = scrOfY;
	 
    return scrollPosition;
}




// 
// Gibt die Position der Seite zurück, also um wieviele Pixel gescrolled wurde.
// 
function setScrollPosition(x,y) 
{
	window.scrollTo(x,y);
}
