
var menuTimeout = 400;
var menuSections = new Array();
var menuCountHide = new Array();
var menuSectionCnt = 0;
var menuBoxCnt = 0;

function getAbsoluteLeft(objectId) {
	o = document.getElementById(objectId);
	oLeft = o.offsetLeft;            
	while(o.offsetParent!=null) {   
		oParent = o.offsetParent;    
		oLeft += oParent.offsetLeft; 
		o = oParent;
	}	
	return oLeft;
}

function getAbsoluteTop(objectId) {
	o = document.getElementById(objectId);
	oTop = o.offsetTop;            
	while(o.offsetParent!=null) { 
		oParent = o.offsetParent;  
		oTop += oParent.offsetTop; 
		o = oParent;
	}	
	return oTop;
}

function DropShadow(name, el, color, size,id)
{
	var i;
	for (i=size; i>0; i--)
	{
	        aleft = (getAbsoluteLeft(name) + i) + 'px';
		atop = (getAbsoluteTop(name) + i) + 'px';
		awidth = el.offsetWidth + 'px';
		aheight = el.offsetHeight + 'px';
		azIndex = el.style.zIndex - i;
		var opacity = 1 - i / (i + 1);
		shadow="<div id="+id+"-"+i+" style=position:absolute;background-color:#999999;visibility:hidden;zIndex:"+azIndex+";width:"+awidth+";height:"+aheight+";left:"+aleft+";top:"+atop+";filter:alpha(opacity="+(100*opacity)+"></div>";
		if(document.getElementById(id+"-"+i)){		
		  
		  var spanElm = document.getElementById(id+"-"+i);
		  spanElm.style.left=aleft;
		  spanElm.style.top=atop;
		
                }else{
			if (document.all){
			   document.body.insertAdjacentHTML('beforeEnd',shadow);
			  }else if (document.createElement){
			    var range = document.createRange();
			    range.setStartBefore(document.body.lastChild);
			    var docFrag = range.createContextualFragment(shadow);
			    document.body.appendChild(docFrag);
			 }
                 
                 }
		
	}
}


function menuShow(section, elements) {

  
  for(f=0; f<document.forms.length; f++){  
   theForm = document.forms[f];
   for(i=0; i<theForm.elements.length; i++){
      if(theForm.elements[i].type == "select-multiple" || theForm.elements[i].type == "select-one"){
         theForm.elements[i].style.visibility="hidden";      
      }
   }
  }

  for (var i = 0; i < menuSections.length; i++) {
    if (menuSections[i] != section) {
      menuHide(menuSections[i], menuCountNodes(menuSections[i]));
    }
  }
  for (var i = 1; i <= elements; i++) {
    document.getElementById(section + '-' + i).style.visibility = 'visible';
    document.getElementById(section).style.visibility = 'visible';
  }
  st=document.getElementById(section).id;
  kk=st.substring(st.indexOf("-")+1,st.length);  
  for (var c = 1; c <= 4; c++) {        
      if(document.getElementById('drop'+kk+'-'+c)){
        document.getElementById('drop'+kk+'-'+c).style.visibility = 'visible';
      }
  }
  
  
}

function menuHide(section, elements) {

  for (var i = 1; i <= elements; i++) {
    document.getElementById(section + '-' + i).style.visibility = 'hidden';  
    document.getElementById(section).style.zIndex = -1;
    document.getElementById(section).style.visibility = 'hidden';
  }  
  st=document.getElementById(section).id;
  kk=st.substring(st.indexOf("-")+1,st.length); 
  for (var c = 1; c <= 4; c++) {
      if(document.getElementById('drop'+kk+'-'+c)){
         document.getElementById('drop'+kk+'-'+c).style.visibility = 'hidden';
      }
  }    
}

function menuTryHide(section, elements, countHide) {
  if (countHide != menuCountHide[section]) {
    return;
  }
  menuHide(section, elements);
  for(f=0; f<document.forms.length; f++){  
   theForm = document.forms[f];
   for(i=0; i<theForm.elements.length; i++){
      if(theForm.elements[i].type == "select-multiple" || theForm.elements[i].type == "select-one"){
         theForm.elements[i].style.visibility='visible';      
      }
   }
  }    
}

function menuCountNodes(element) {
  ret = 0;
  nodes = document.getElementById(element).childNodes.length;
  for (var i = 0; i < nodes; i++) {
    if (document.getElementById(element).childNodes[i].nodeType == 1) {
      ret++;
    }
  }
  return ret;
}

function menuInitSection(section) {
  var elements = menuCountNodes(section);
  for (var i = 0; i <= elements; i++) {
    var s = (i == 0 ? (section + '-top') : (section + '-' + i));
    if (i == 0) {    
        document.getElementById(s).onmouseover = function() {
        menuShow(section, elements);
        menuCountHide[section]++;
        for (var ii = 0; ii < menuSections.length; ii++) {
          document.getElementById(section).style.zIndex = 1;          
          if (menuSections[ii] != section) {
            document.getElementById(menuSections[ii]).style.zIndex = -1;            
          }
        }
      }
    } else {
      document.getElementById(s).onmouseover = function() {
        menuShow(section, elements);
        menuCountHide[section]++;
      }
    }
    document.getElementById(s).onmouseout = function() {
      setTimeout("menuTryHide('" + section + "', " + elements + ", " + menuCountHide[section] + ")", menuTimeout);
    }
  }
}

function menuMakeId(nodes) {
  for (var i = 0; i < nodes.length; i++) {
    switch (nodes[i].className) {
      case 'menutop':
        menuSectionCnt++;
        menuBoxCnt = 0;
        nodes[i].id = 'menu-' + menuSectionCnt + '-top';
        break;
      case 'menusection':
        nodes[i].id = 'menu-' + menuSectionCnt;
        menuSections[menuSections.length] = nodes[i].id;
        break;
      case 'menubox':
        menuBoxCnt++;
        nodes[i].id = 'menu-' + menuSectionCnt + '-' + menuBoxCnt;
        break;
    }
    if (nodes[i].childNodes) {
      menuMakeId(nodes[i].childNodes);
    }
  }
}
