
/*

  menu parent items have these event calls
  ========================================
  onMouseOut="menuExit()" onMouseOver="menuEnter('divname')"
  
  drop down menu items have these event calls
  ===========================================
  onMouseOut="menuExit()" onMouseOver="menuEnter()"

*/

  FADE = 1
 
 var cur_menu = null,
     cur_call = null,
     entry_call = null,
     efx = Array();

function changeClass(theid, theclass) 
{ 
    /*var Elementas = document.getElementById(theid); 
    Elementas.className = theclass; */

};
function queueEmpty(mnu) {
   q = Effect.Queues.get(mnu);
   q.each(function(e) { e.cancel() });
}

function showMenu(mnu) {
    queueEmpty(mnu);

   if (FADE) 
    Effect.Appear(mnu, { queue: {position: 'end', scope: mnu }, duration: 0.66 });
   else
    $(mnu).show();
}

  function hideMenu(mnu) {
    queueEmpty(mnu);

   if (FADE)
    Effect.Fade(mnu, { queue: {position: 'end', scope: mnu }, duration: 0.42, from: 0.8 });
   else
    $(mnu).hide();
  }

  
  function menuEnter_func(mnu) {
    killEntry();

   if (!mnu)
     killCleanUp();
   else

   if (mnu != cur_menu) {

    if (cur_menu)  hideMenu(cur_menu);
     killCleanUp();

     showMenu(mnu);
     cur_menu = mnu;
   }

  }

 function killEntry() {
  if (entry_call) {
    clearTimeout(entry_call);
    entry_call = null;
  }
 }

 function menuEnter(mnu) {
   killEntry();
  if (!mnu)
    killCleanUp();
  else
   entry_call = setTimeout('menuEnter_func("' + mnu + '")', (cur_menu ? 600 : 0));
 }


  function menuCleanUp() {
   if (cur_menu) {
     hideMenu(cur_menu);
     cur_menu = null;
     killCleanUp();
   }
  }

  function killCleanUp() {
   if (cur_call)  clearTimeout(cur_call);
  }

  function menuExit() {
    killCleanUp();
    killEntry();
    cur_call = setTimeout("menuCleanUp()", 500);
  }


