var bMenuDebug = false;
var naMenuTimerID = {};
var aMenuItemsTemp;
function menudocelm
( spID
)
{
  return document.getElementById(spID);
}
function cElementPosition
( spID
)
{
  var oelm = menudocelm(spID);
  this.left = 0;
  this.top = 0;
  while(oelm)
  {
    this.left +=  oelm.offsetLeft;
    this.top += oelm.offsetTop;
    oelm = oelm.offsetParent;
  }
}
function menuecho(spHTML)
{
  document.write(bMenuDebug?spHTML.HTMLEncode():spHTML);
}
function menuanchor
( opMenu
)
{
  var sRet = '';
  sRet +=
      '<a href="'
    + ( opMenu['url']
      ? opMenu['url']
      : '#" onclick="menudonothing();'
      )
    + '"'
    + ( opMenu['title']
      ? ( ' title="' + opMenu['title'] + '"' )
      : ''
      )
    + '>'
    + opMenu['text']
    + '</a>'
  ;
  return sRet;
}
function menutdclass
( opMenu
)
{
  var sRet = '';
  sRet +=
      ( opMenu['class']
      ? ( opMenu['class']['normal']
        ? ( ' class="' + opMenu['class']['normal'] + '"' )
        : ''
        )
      : ''
      )
  ;
  return sRet;
}
function menuscriptbefore
( opMenu
)
{
  var sRet = '';
  if (opMenu['extscript'])
  {
    if (opMenu['extscript']['before'])
    {
      sRet = eval(opMenu['extscript']['before']);
    }
  }
  return sRet;
}
function menuscriptbetween
( opMenu
)
{
  var sRet = '';
  if (opMenu['extscript'])
  {
    if (opMenu['extscript']['between'])
    {
      sRet = eval(opMenu['extscript']['between']);
    }
  }
  return sRet;
}
function menuscriptafter
( opMenu
)
{
  var sRet = '';
  if (opMenu['extscript'])
  {
    if (opMenu['extscript']['after'])
    {
      sRet = eval(opMenu['extscript']['after']);
    }
  }
  return sRet;
}
function menuhtml
( spMenuItems
)
{
  var iMenu = 0;
  var iSubMenu = 0;
  var sRet = '';
  var sLayout = 'h';
  var sBefore = '';
  var sBetween = '';
  var sAfter = '';
  //alert(spMenuItems);
  //var aMenuItemsTemp;
  eval('aMenuItemsTemp = ' + spMenuItems + ';');
  naMenuTimerID[spMenuItems] = 0;
  if (aMenuItemsTemp['layout'])
  {
    sLayout = aMenuItemsTemp['layout']
  }
  sRet +=
      '<table border="0" cellpadding="0" cellspacing="0" class="menutable">'
    + ( sLayout == 'h' ? '<tr>' : '' )
  ;
  sBefore = menuscriptbefore(aMenuItemsTemp);
  sBetween = menuscriptbetween(aMenuItemsTemp);
  sAfter = menuscriptafter(aMenuItemsTemp);
  sRet +=
      ( sBefore.length > 0 
      ? ( ( sLayout == 'h' ? '' : '<tr>' )
        + '<td align="left" valign="top">'
        + sBefore
        + '</td>'
        + ( sLayout == 'h' ? '' : '</tr>' )
        )
      : ''
      )
  ;
  for (iMenu=0; iMenu<aMenuItemsTemp['items'].length; iMenu++)
  {
    var oMenu = aMenuItemsTemp['items'][iMenu];
    if (iMenu > 0)
    {
      sRet +=
          ( sBetween.length > 0 
          ? ( ( sLayout == 'h' ? '' : '<tr>' )
            + '<td align="left" valign="top">'
            + sBetween
            + '</td>'
            + ( sLayout == 'h' ? '' : '</tr>' )
            )
          : ''
          )
      ;
    }
    sRet +=
        ( sLayout == 'h' ? '' : '<tr>' )
      + '<td align="left" valign="top"'
      + ' onmouseover="menumouseovermain(\'' + spMenuItems + '\',' + iMenu + ');"'
      + ' onmouseout="menumouseoutmain(\'' + spMenuItems + '\',' + iMenu + ');"'
      + ' id="menu' + spMenuItems + '_' + iMenu + '"'
      + menutdclass(oMenu)
      + '>'
      + menuscriptbefore(oMenu)
      + menuanchor(oMenu)
      + menuscriptafter(oMenu)
      + '</td>'
      + ( sLayout == 'h' ? '' : '</tr>' )
    ;
  }
  sRet +=
      ( sAfter.length > 0 
      ? ( ( sLayout == 'h' ? '' : '<tr>' )
        + '<td align="left" valign="top">'
        + sAfter
        + '</td>'
        + ( sLayout == 'h' ? '' : '</tr>' )
        )
      : ''
      )
  ;
  sRet +=
      ( sLayout == 'h' ? '</tr>' : '' )
    + '</table>'
  ;
  for (iMenu=0; iMenu<aMenuItemsTemp['items'].length; iMenu++)
  {
    if (aMenuItemsTemp['items'][iMenu]['subitems'])
    {
      var sSubLayout = 'v';
      sBefore = menuscriptbefore(aMenuItemsTemp['items'][iMenu]['subitems']);
      sBetween = menuscriptbetween(aMenuItemsTemp['items'][iMenu]['subitems']);
      sAfter = menuscriptafter(aMenuItemsTemp['items'][iMenu]['subitems']);
      if (aMenuItemsTemp['items'][iMenu]['subitems']['layout'])
      {
        sSubLayout = aMenuItemsTemp['items'][iMenu]['subitems']['layout'];
      }
      if (aMenuItemsTemp['items'][iMenu]['subitems']['items'])
      {
        var oSubItems = aMenuItemsTemp['items'][iMenu]['subitems']['items'];
        sRet +=
            '<table border="0" cellpadding="0" cellspacing="0"'
          + ' class="menusubtable"'
          + ' style="position: absolute; top: 0; left: 0; visibility: hidden;"'
          + ' id="menusub' + spMenuItems + '_' + iMenu + '"'
          + '>'
          + ( sSubLayout == 'h' ? '<tr>' : '' )
        ;
        sRet +=
            ( sBefore.length > 0 
            ? ( ( sSubLayout == 'h' ? '' : '<tr>' )
              + '<td align="left" valign="top">'
              + sBefore
              + '</td>'
              + ( sSubLayout == 'h' ? '' : '</tr>' )
              )
            : ''
            )
        ;
        for (iSubMenu=0; iSubMenu<oSubItems.length; iSubMenu++)
        {
          var oSubMenu = oSubItems[iSubMenu];
          if (iSubMenu > 0)
          {
            sRet +=
                ( sBetween.length > 0 
                ? ( ( sSubLayout == 'h' ? '' : '<tr>' )
                  + '<td align="left" valign="top">'
                  + sBetween
                  + '</td>'
                  + ( sSubLayout == 'h' ? '' : '</tr>' )
                  )
                : ''
                )
            ;
          }
          sRet +=
              ( sSubLayout == 'h' ? '' : '<tr>' )
            + '<td nowrap align="left" valign="top"'
            + ' onmouseover="menumouseoversub(\'' + spMenuItems + '\',' + iMenu + ',' + iSubMenu + ');"'
            + ' onmouseout="menumouseoutsub(\'' + spMenuItems + '\',' + iMenu + ',' + iSubMenu + ');"'
            + ' id="menu' + spMenuItems + '_' + iMenu + 's' + iSubMenu + '"'
            + menutdclass(oSubMenu)
            + '>'
            + menuscriptbefore(oSubMenu)
            + menuanchor(oSubMenu)
            + menuscriptafter(oSubMenu)
            + '</td>'
            + ( sSubLayout == 'h' ? '' : '</tr>' )
          ;
        }
        sRet +=
            ( sAfter.length > 0 
            ? ( ( sSubLayout == 'h' ? '' : '<tr>' )
              + '<td align="left" valign="top">'
              + sAfter
              + '</td>'
              + ( sSubLayout == 'h' ? '' : '</tr>' )
              )
            : ''
            )
        ;
        sRet += ( sSubLayout == 'h' ? '</tr>' : '' ) + '</table>';
      }
    }
  }
  return sRet;  
}
function menustarttimer
( spMenuItems
)
{
  //alert('start timer ' + spMenuItems);
  naMenuTimerID[spMenuItems] = setTimeout('menuhidesubmenu(\'' + spMenuItems + '\');',2000);
}
function menustoptimer
( spMenuItems
)
{
  if (naMenuTimerID[spMenuItems] > 0)
  {
    clearTimeout(naMenuTimerID[spMenuItems]);
    naMenuTimerID[spMenuItems] = 0;
  }
}
function menudonothing()
{
  return false;
}
function menumouseovermain
( spMenuItems
, npMenuID
)
{
  eval('aMenuItemsTemp = ' + spMenuItems + ';');
  var iMenu = 0;
  var oPos = new cElementPosition('menu' + spMenuItems + '_' + npMenuID);
  var oMenu = aMenuItemsTemp['items'][npMenuID];
  var oMenuElm = menudocelm('menu' + spMenuItems + '_' + npMenuID);
  var nLeftOffset = 0;
  var nTopOffset = 0;
  //var aMenuItemsTemp;
  oMenuElm.className = '';
  if (oMenu['class'])
  {
    if (oMenu['class']['hover'])
    {
      oMenuElm.className = oMenu['class']['hover'];
    }
  }
  menustoptimer(spMenuItems);
  menuhidesubmenu(spMenuItems);
  if (aMenuItemsTemp['items'][npMenuID]['subitems'])
  {
    if (aMenuItemsTemp['items'][npMenuID]['subitems']['items'])
    {
      var oSubMenuElm = menudocelm('menusub' + spMenuItems + '_' + npMenuID);
      var oSubItems = aMenuItemsTemp['items'][npMenuID]['subitems'];
      if (oSubItems['offset'])
      {
        if (oSubItems['offset']['left'])
        {
          if (oSubItems['offset']['left']['type'])
          {
            if (oSubItems['offset']['left']['type'] == 'r')
            {
              if (oSubItems['offset']['left']['offset'])
              {
                nLeftOffset = oSubItems['offset']['left']['offset'];
              }
            }
            else
            if (oSubItems['offset']['left']['type'] == 'w')
            {
              nLeftOffset = oMenuElm.offsetWidth;
            }
          }
        }
        if (oSubItems['offset']['top'])
        {
          if (oSubItems['offset']['top']['type'])
          {
            if (oSubItems['offset']['top']['type'] == 'r')
            {
              if (oSubItems['offset']['top']['offset'])
              {
                nTopOffset = oSubItems['offset']['top']['offset'];
              }
            }
            else
            if (oSubItems['offset']['top']['type'] == 'h')
            {
              nTopOffset = oMenuElm.offsetHeight;
            }
          }
        }
      }
      oSubMenuElm.style.left = oPos.left + nLeftOffset;
      oSubMenuElm.style.top = oPos.top + nTopOffset;
      oSubMenuElm.style.visibility = 'visible';
    }
  }
}
function menumouseoutmain
( spMenuItems
, npMenuID
)
{
  //var aMenuItemsTemp;
  eval('aMenuItemsTemp = ' + spMenuItems + ';');
  var oMenuElm = menudocelm('menu' + spMenuItems + '_' + npMenuID);
  var oMenu = aMenuItemsTemp['items'][npMenuID];
  oMenuElm.className = '';
  if (oMenu['class'])
  {
    if (oMenu['class']['normal'])
    {
      oMenuElm.className = oMenu['class']['normal'];
    }
  }
  menustarttimer(spMenuItems);
}
function menuhidesubmenu
( spMenuItems
)
{
  var iMenu = 0;
  //var aMenuItemsTemp;
  //alert('hide ' + spMenuItems);
  eval('aMenuItemsTemp = ' + spMenuItems + ';');
  for (iMenu=0; iMenu<aMenuItemsTemp['items'].length; iMenu++)
  {
    if (aMenuItemsTemp['items'][iMenu]['subitems'])
    {
      menudocelm('menusub' + spMenuItems + '_' + iMenu).style.visibility = 'hidden';
    }
  }
}
function menumouseoversub
( spMenuItems
, npMenuID
, npSubMenuID
)
{
  //var aMenuItemsTemp;
  eval('aMenuItemsTemp = ' + spMenuItems + ';');
  var oMenuElm = menudocelm('menu' + spMenuItems + '_' + npMenuID + 's' + npSubMenuID);
  var oMenu = aMenuItemsTemp['items'][npMenuID]['subitems']['items'][npSubMenuID];
  menustoptimer(spMenuItems);
  oMenuElm.className = '';
  if (oMenu['class'])
  {
    if (oMenu['class']['hover'])
    {
      oMenuElm.className = oMenu['class']['hover'];
    }
  }
}
function menumouseoutsub
( spMenuItems
, npMenuID
, npSubMenuID
)
{
  //var aMenuItemsTemp;
  eval('aMenuItemsTemp = ' + spMenuItems + ';');
  var oMenuElm = menudocelm('menu' + spMenuItems + '_' + npMenuID + 's' + npSubMenuID);
  var oMenu = aMenuItemsTemp['items'][npMenuID]['subitems']['items'][npSubMenuID];
  oMenuElm.className = '';
  if (oMenu['class'])
  {
    if (oMenu['class']['normal'])
    {
      oMenuElm.className = oMenu['class']['normal'];
    }
  }
  menustarttimer(spMenuItems);
}
