naviTabBox = null;

defaultChild = null;
lastChild = null;
actTab = null;
timer = null;

childTabs = Array();
navigTabs = Array();
naviTabsBG = Array();

addOnloadEvent(initTabber);

function initTabber()	
{
	naviTabBox = document.getElementById("navigation");
	subnaviTabBox = document.getElementById("sub_navigation");
	setNaviTabEvents();
}

function setNaviTabEvents() {
	if(!naviTabBox) return;
	tabs = naviTabBox.getElementsByTagName("a");  // main link

	for(i=0; i<tabs.length; i++) 
	{
    id = tabs[i].id+"child";
	  childTabs[id] = document.getElementById(id);
		navigTabs[id] = tabs[i];
     
		if(tabs[i].className == "current")  // wenn das aktuelle
		{
      actTab = lastChild = defaultChild = id;    // acttab, lastchild,defaultchild = id
      setSubmenuPosition(tabs[i]);
    }

    tabs[i].onmouseover = onTabOver;
		tabs[i].onmouseout = onTabOut;

    if(childTabs[id]) 
    {   	
      childTabs[id].onmousemove = onSubTabMoveOver;      
      childTabs[id].onmouseover = onSubTabOver;
      childTabs[id].onmouseout = onSubTabOut;  
		}	
	}
	
}

function onTabOver()	
{
	var position, subwidth, everythingwidth, test2;
	clearTimeout(timer);
	
	if(childTabs[defaultChild])
	  childTabs[defaultChild].style.display = "none";
		
	if(lastChild && (lastChild != defaultChild))
	{
	  childTabs[lastChild].style.display = "none";
	  navigTabs[lastChild].className = "std";
	}
	 
	id = this.id+"child";
  submenudiv = childTabs[id];
  
  if(submenudiv)
  {
	  submenudiv.style.display = "block";
	  navigTabs[id].className = "over";
		lastChild = id;
		setSubmenuPosition(this);
	}
	
}

function onTabOut() 
{
	id = this.id+"child";
	timer = setTimeout("resetTabs(id)", 2000);
}

function resetTabs(p_id) 
{
	if(childTabs[p_id] && (p_id != defaultChild)) 
	{
		childTabs[p_id].style.display = 'none';
		navigTabs[lastChild].className = 'std';
	}
	
	if(childTabs[defaultChild])
	  childTabs[defaultChild].style.display = 'block';
}



/* ##################################################################### */
function onSubTabMoveOver(e) 
{
  elm = (e) ? e.target : event.srcElement;
	actTab =  getId(elm);
	clearTimeout(timer);
}


function getId(elm) 
{
	if(!elm.id)
	  res = getId(elm.parentNode);
	else		
		res = elm.id;
		
	return res;
}

function onSubTabOver() 
{
	clearTimeout(timer);
}

function onSubTabOut() 
{
	timer = setTimeout("resetSubTabs()" , 2000);
}

function resetSubTabs() 
{
	
	if(actTab != defaultChild) 
	{
		navigTabs[lastChild].className = "std";
	}

	childTabs[actTab].style.display = "none";
	
	if(childTabs[defaultChild])
	  childTabs[defaultChild].style.display = "block";
}


/* functionen zu ermitteln der Position */

function getPosition(element)
/* der Aufruf dieser Funktion ermittelt die absoluten Koordinaten
   des Objekts element */
{
  var elem=element,tagname="",x=0,y=0;
  
/* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
   wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName;

/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
    if (tagname=="BODY")
      elem=0;

/* wenn elem ein Objekt ist und offsetParent enthaelt
   Offset-Elternelement ermitteln */
    if (typeof(elem)=="object")
      if (typeof(elem.offsetParent)=="object")
        elem=elem.offsetParent;
  }

/* Objekt mit x und y zurueckgeben */
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

function setSubmenuPosition(obj)
{
  submenudiv = document.getElementById(obj.id + "child");

  if(submenudiv)
  {
    position = getPosition(obj);
	  subwidth = submenudiv.offsetWidth;
	  everythingwidth = document.body.offsetWidth;
    test2 = 780 - (position.x - ((everythingwidth - 800) / 2)) - (subwidth / 2 );
    submenudiv.style.marginRight = test2 + 'px';
  }
}

