//particulary inspired by http://www.quirksmode.org/js/mouseov.html
//(c) Tovarna.cz 2005, Petr Gurth

//---------------------------------
//is W3C DOM?
var isW3C = (document.createElement && document.getElementsByTagName);

//useful arrays :)
//classes on mouseOver
var mouseOvers = new Array();
//classes on mouseOout
var mouseOuts = new Array();
//list of founded menu items
var elementsFound = new Array();
//list of active menu items
var elementsActive = new Array();

var menuId = 'menu';
var lang = 'lang';
var timeOut = 0;

//list of parsed nodes with iframes
var ifrParsed = new Array();

function initMenu()
{
	if (!isW3C) return;
	
	//the "menu" div	
	var nav = document.getElementById(menuId);
    
	if (!nav) return;
	//find all menu items
	var lis = nav.getElementsByTagName('LI');
	
	for (var i=0;i<lis.length;i++)
	{
		//set the right handlers
        lis[i].onmouseover = mouseGoesOver;
		lis[i].onmouseout = mouseGoesOut;
		
        //every menu intem has unique id
		lis[i].myCnt = i;
		
		//set proper vars
        elementsFound[i] = lis[i];
		elementsActive[i] = false;
		ifrParsed[i] = false;
		
		//set classes
		mouseOvers[i] = lis[i].className + ' hover';
		mouseOuts[i] = lis[i].className;
		
		//sum of children i menu
		lis[i].sumChildren = lis[i].getElementsByTagName('LI').length;
	}
	nav.mouseGouesOut = hideAll;
}

function mouseGoesOver()
//the mouseOver handler
{
  //set this item active
  elementsActive[this.myCnt] = true;
  //change the classname
  showMI(this);

  if(this.parentNode.parentNode.nodeName == 'LI'){
      //set parent item active (prevent to hide it)
      elementsActive[this.parentNode.parentNode.myCnt] == true;
  }
  //hide the siblings :)
  hideSiblings(this);
}


function hideSiblings(obj){
  //useful only if active item has childs or on the level 1
  if((obj.sumChildren > 0) || (obj.parentNode.parentNode.id == menuId)){
    //find all siblings
    var found = obj.parentNode.childNodes;
  	for (var i=0;i<found.length;i++)
  	{
  	   //hide all items except selected
       if( (found[i] != obj) && (found[i].tagName == obj.tagName) ){
  	     elementsActive[found[i].myCnt] = false;
  	     hideMI(found[i]);
       }
  	}
	}
}

function mouseGoesOut()
//the mouseOut handler
{
  elementsActive[this.myCnt] = false;

  //wait, then try to hide it (child item can set it active...)
  window.setTimeout("mouseGoesOutWorking("+this.myCnt+")", timeOut);
  //mouseGoesOutWorking(this.myCnt);
}

function mouseGoesOutWorking(id)
//hiding item
{
  hideMI(elementsFound[id]);
}

function showMI(obj){
  if(elementsActive[obj.myCnt] == true){
    obj.className=mouseOvers[obj.myCnt];

    if(ifrParsed[obj.myCnt]==false){
      var ifr = obj.childNodes;
      for(i=0;i<ifr.length;i++){
        //window.alert(ifr[i].nodeName);
        
        if(ifr[i].nodeName == "UL")
        {
          var vyska = ifr[i].offsetHeight;
        }else if(ifr[i].nodeName == "IFRAME")
        {
          var frame = ifr[i];
        }   
      }
      if (frame){
        frame.style.height = vyska;
      }
      ifrParsed[obj.myCnt]== true;
    }
    
  }
  
}

function hideMI(obj){
  if(elementsActive[obj.myCnt] == false)
    obj.className=mouseOuts[obj.myCnt];
}

function hideInactive(){
  for (var i=0;i<elementsFound.length;i++)
	{
	   hideMI(elementsFound[i]);
	}
}

function hideAll(){
  for (var i=0;i<elementsFound.length;i++)
	{
	   elementsFound[i].className=mouseOvers[elementsFound[i].myCnt];
	}
}
