var submenuAnim = new Array();
var globalTimer = 0;

var activateSubmenuItem = function(e) {

  el = new YAHOO.util.Element(YAHOO.util.Event.getTarget(e)); 
  id = el.get('id');
  sid = id.split("_")[1];
  children = YAHOO.util.Dom.getChildren("submenu_"+sid);
  if (globalTimer) globalTimer.cancel();
  globalTimer = YAHOO.lang.later(2000, null, hideSubmenu, new YAHOO.util.Element("submenu_"+sid), false);

  //IE 6 does not support this style (comes with Javascript 1.6): for each (var submenuitem in YAHOO.util.Dom.getChildren("submenu_"+sid))
  for (var i=0; i<children.length;++i) {
    var submenuitem = children[i];
    elSub = new YAHOO.util.Element(submenuitem);
    split = elSub.get('id').split("_");
    if (split[0] == "menu")
    {
      el = new YAHOO.util.Element("menu_"+split[1]+"_"+split[2]); 
      el.setStyle('background-color', '#ffffef');
      el = new YAHOO.util.Element("menulink_"+split[1]+"_"+split[2]); 
      el.setStyle('color', 'black');
    }
  }  
  split = id.split("_");
  el = new YAHOO.util.Element("menu_"+split[1]+"_"+split[2]); 
  el.setStyle('background-color', '#fdc300');
  el = new YAHOO.util.Element("menulink_"+split[1]+"_"+split[2]); 
  el.setStyle('color', 'white');
}

var hideSubmenuCB = function(e) {
  el = new YAHOO.util.Element(YAHOO.util.Event.getTarget(e)); 
  hideSubmenu(el);
}
var hideSubmenu = function(el) {
  id = el.get('id');
  subId = 'submenu_'+id.split("_")[1];
  el = new YAHOO.util.Element(subId);
  //el.setStyle('visibility', 'hidden');
  if (el.getStyle('opacity') > 0.)
  {
    subId = 'menu_'+id.split("_")[1];
    submenuAnim[subId+"_out"].animate();
  }  
  if (globalTimer) globalTimer.cancel();
  globalTimer = 0;
}

var showSubmenu = function(el) {
  id = el.get('id');
  children = YAHOO.util.Dom.getChildren('submenu_container');
  for (var i=0; i<children.length;++i) {
    var img = children[i];
    el = new YAHOO.util.Element(img);
    otherID = el.get('id');
    otherSubId = 'menu_'+otherID.split("_")[1];
    if (id != otherSubId)
    {
      if (el.getStyle('opacity') > 0.)
      {
        submenuAnim[otherSubId+"_out"].animate();
      }
    }
  }
  subId = 'submenu_'+id.split("_")[1];
  el = new YAHOO.util.Element(subId);
  el.setStyle('visibility', 'visible');
  submenuAnim[id].animate();
}

var showSubmenuCB = function(e) {
  el = new YAHOO.util.Element(YAHOO.util.Event.getTarget(e)); 
  if (globalTimer) globalTimer.cancel();
  globalTimer = YAHOO.lang.later(2000, null, hideSubmenu, el, false);
  showSubmenu(el);
}

var init = function() {
  children = YAHOO.util.Dom.getChildren('menu_container');
  for (var i=0; i<children.length; ++i) {
    var item = children[i];
    el = new YAHOO.util.Element(item);
    el.on('mouseover', showSubmenuCB);
  }
  
  children = YAHOO.util.Dom.getChildren('submenu_container');
  for (var i=0; i<children.length;++i) {
    var submenu = children[i];
    el = new YAHOO.util.Element(submenu);
    idx = el.get('id').split("_")[1];
    id = "menu_"+idx;
    var left = String(YAHOO.util.Dom.getX(id) - YAHOO.util.Dom.getX('menu_container'));
    el.setStyle('left', left+"px");
    el.setStyle('visibility', 'hidden');
    el.setStyle('opacity', 0);
    if (YAHOO.env.ua.ie != 0) {
      el.setStyle('top', '0px');
    }
    subchildren = YAHOO.util.Dom.getChildren(el.get('id'));
    for (var j=0; j<subchildren.length;++j) {
      var submenuitem = subchildren[j];
      elSub = new YAHOO.util.Element(submenuitem);
      if (elSub.get('id').split("_")[0] == "menu")
      {
        elSub.on('mouseover', activateSubmenuItem);
        child = YAHOO.util.Dom.getChildren(elSub.get('id'));
        childEl = new YAHOO.util.Element(child[0]);
        childEl.on('mouseover', activateSubmenuItem);
      }
    }
    submenuAnim[id] = new YAHOO.util.Anim('submenu_'+idx, { 
	    opacity: { from: 0, to: 1 }
	    }, 0.8, YAHOO.util.Easing.easeOut);
    submenuAnim[id+"_out"] = new YAHOO.util.Anim('submenu_'+idx, { 
	    opacity: { from: 1, to: 0 }
	    }, 0.8, YAHOO.util.Easing.easeOut);
	  submenuAnim[id+"_out"].onComplete.subscribe(function(evt) { el = new YAHOO.util.Element(this.getEl()); el.setStyle('visibility', 'hidden');});
  }
}
