/*
Javascript dropdown menu, developt by O.M for the E.V.A CMS
*/


var naviName;
var activeGroups = new Array();
var activeGroupsLevel = new Array();
var time=null;


function initNavi(name,oldMenu,newMenu){//Classname of submenus
	naviName=name;
	closeAllGroups(naviName);
	//hide none javascript menu
	var tmp=document.getElementById(oldMenu);
	tmp.style.display="none";
	//activate javascriptmenu
	tmp=document.getElementById(newMenu);
	tmp.style.display="block";
	
	
}

function setTimeOut(timeout){
  time=setTimeout("closeAllGroups(naviName)",timeout);
}

function cancelTimeOut(){
   if(time!=null){
  	clearTimeout(time);
  }
}


function getOffsets(element){
	var r = { x: element.offsetLeft, y: element.offsetTop };
	
    if (element.offsetParent) {
      var tmp = getOffsets(element.offsetParent);
      r.x += tmp.x;
      r.y += tmp.y;
  
    }
    return r;
}

function closeAllGroups(menuname){
	var tmp=getElementsByClass(menuname,null,"div");
	for(i=0;i<tmp.length;i++){
		tmp[i].style.display="none";
	}
}

function openGroup(groupName,parentGroup,parentMenuPoint,grouplevel,menuPointPos){
    
  //Timeout cansel
  cancelTimeOut()
  var tmp=document.getElementById(groupName); 
  var preMenu =document.getElementById(parentGroup);
  var prePoint=document.getElementById(parentMenuPoint);

  //Groupe die nicht existiert. => menupunkt ohne submenus
  if(tmp==null){
	refreshGroups(grouplevel,null);
	
  }
  else if(preMenu!=null && prePoint!=null){//falls menus angeklickt wurden die keine Submenus haben
	  
	  tmp.style.position='absolute';
	  xyOffset=getOffsets(preMenu);
	  tmp.style.left = (preMenu.offsetWidth+xyOffset.x) + 'px';
	  xyOffset=getOffsets(prePoint);
	  tmp.style.top  =(xyOffset.y) + 'px';
	  tmp.style.display="";
	  refreshGroups(grouplevel,groupName);
   }   
}



function refreshGroups(grouplevel,newGroup){

	var tmpActiveGroups = new Array();
	var tmpActiveGroupsLevel = new Array();
	var tmp;
	var i2=0;
	for(i=0;i<activeGroupsLevel.length;i++){
		//Löschen alter groupen
		if(activeGroupsLevel[i]>=grouplevel && activeGroups[i]!=newGroup){
			tmp=document.getElementById(activeGroups[i]); 
			tmp.style.display="none";
		}else{
			tmpActiveGroups[i2]=activeGroups[i];
			tmpActiveGroupsLevel[i2]=activeGroupsLevel[i];
			i2++;
		}
	}
	if(newGroup!=null){
		tmpActiveGroups[tmpActiveGroups.length]=newGroup;
		tmpActiveGroupsLevel[tmpActiveGroupsLevel.length]=grouplevel;
		activeGroups=tmpActiveGroups;
		activeGroupsLevel=tmpActiveGroupsLevel;
	}

	
}

function closeGroup(groupName){
  var tmp=document.getElementById(groupName);
  tmp.style.display="none";
	
}


/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Dustin Diaz :: http://www.dustindiaz.com/ */

function getElementsByClass(searchClass,node,tag) {
  var classElements = new Array();
  if (node == null)
    node = document;
  if (tag == null)
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if (pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}



