// Copyright © 2004 - 2012 Interact Computer Services Ltd.
// All rights reserved. Use is subject to license terms.
// For more information contact Interact at info@interact-uk.com

var menuIndex     = new AL_Index ();
var menuSequence  = 1;
var menuItemSeq   = 1;

function Menu_Scroll (mid, sdir)
{
  var mobj  = menuIndex.resolve (mid);
  
  if (mobj != null)
  {
    mobj.scroll (sdir);
  }
}

function Menu_Mouse (e)
{
  var evt   = new alEvent (e);
  var mobj  = menuIndex.resolve (evt.target.mid);
  
  if (mobj != null)
  {
    switch (evt.type)
    {
      case "mousedown" :
      
        mobj.scroll (evt.target.sdir);
        break;
        
      case "mouseup"   :
    
        if (mobj.timer)
        {
          window.clearTimeout (mobj.timer);
          mobj.timer = null;
        }
        
        break;
    }
  }
}

function Menu_Click (e)
{
  var evt   = new alEvent (e);
  var mobj  = menuIndex.resolve (evt.target.mid);
  
  if (mobj != null)
  {
    if (evt.target.clicker && mobj.clicker)
    {
      mobj.clicker (evt.target.clicker, evt);
    }
    
    if (evt.target.smenu && (evt.type == "click"))
    {
      mobj.subMenu (evt.target);
    }
    
    if (evt.target.actions)
    {
      var action  = null;
      
      switch (evt.type)
      {
        case "click"       : action = evt.target.actions.lclick; break;
        case "contextmenu" : action = evt.target.actions.rclick; break;
        case "dblclick"    : action = evt.target.actions.dclick; break;
      }
      
      if (action)
      {
        if (typeof (AL_GeneralMenuHandler) == "undefined")
        {
          AL_ProcessAction (action, mobj, evt.target, null, "MenuEntry=" + evt.target.mname);

          if (evt.target.mcancel || mobj.mcancel) if (mobj.cancel)
          {
            mobj.cancel (evt.target.mcancel ? evt.target.mcancel : mobj.mcancel);
          }
        }
        else
        {
          AL_GeneralMenuHandler (action, mobj, evt.target);
        }
      }
    }
  }
  
  evt.cancel ();
  return (false);
}

function Menu_Highlight (e)
{
  var evt  = new alEvent (e);
  var mobj = menuIndex.resolve (evt.target.mid);
  var msin = (evt.type == "mouseover") ? true : false;
  
  if (mobj != null)
  {
    if (mobj.highlighter)
    {
      mobj.highlighter (msin, evt);
    }

    alHighlightMe (evt.target, msin, false, evt);
  }
}

function Menu_Cancel (which, mid)
{
  var mobj = menuIndex.resolve (mid);
  
  if (mobj != null)
  {
    mobj.cancel (which);
  }
}

