var menuTimerId = 0;
var menuCurrent = 0;
var hideOnMenuObjs = new Array;
var hideOnMenuIds  = new Array;
var menuImgs       = new Array;


/**
 * Changes style of hovered mainmenu item.
 *
 * @param   integer   Mainmenu identifier.
 * @access  public
 */
function menuHover(id)
{
  if (!document.getElementById)
    return;

  window.clearTimeout(menuTimerId);
  menuTimerId = 0;
  menuCurrent = id;

  _menuReset();

  var obj;
  if (obj = document.getElementById('mainmenu_' + id)) {
    if (obj.src) {
      obj.src = menuImgs[id][1].src;
    } else {
      obj.className = 'level_0_selected';
    }
  }

  initSubmenu(id);
} // end func menuHover


/**
 * Resets submenus.
 *
 * @access  public
 */
function menuReset()
{
  menuCurrent = null;
  menuTimerId = window.setTimeout('_menuReset()', 200);
} // end func menuReset


/**
 * Resets submenus.
 *
 * @access  private
 */
function _menuReset()
{
  if (!document.getElementById)
    return;

  // show objects
  for (i = 0; i < hideOnMenuObjs.length; ++i) {
    hideOnMenuObjs[i].style.visibility = 'visible';
  }

  var i, obj;

  for (i = 0; i < menuItems.length; ++i) {
    if ((obj = document.getElementById('jsmenu' + i)) && i != menuCurrent)
      obj.style.display = 'none';

    if (i == menuSelected)
      continue;
    if (i == menuCurrent)
      continue;

    if (obj = document.getElementById('mainmenu_' + i)) {
      if (obj.src) {
        if (obj.src != menuImgs[i][0].src)
          obj.src = menuImgs[i][0].src;
      } else {
        obj.className = 'level_0';
      }
    }
  }

  menuTimerId = 0;
} // end func _menuReset


/**
 * Displays submenu.
 *
 * @param   integer   Mainmenu identifier.
 * @access  public
 */
function initSubmenu(id)
{
  var jsmenu, jsmenuImg, offset, width, avWidth;

  if (!document.getElementById)
    return;

  if (!(jsmenu = document.getElementById('jsmenu' + id)))
    return;

  if (!(offset = document.getElementById('mainmenu_' + id).offsetLeft))
    return;

  if (!(jsmenuImg = document.getElementById('jsmenu_' + id)))
    return;

  if ((jsmenuImg = document.getElementById('jsmenu_' + id)) && (width = jsmenuImg.offsetWidth)) {
    avWidth = document.getElementsByTagName('body')[0].clientWidth;
  } else {
    width   = document.getElementById('jsmenu_' + id).offsetWidth;
    avWidth = document.getElementsByTagName('body')[0].clientWidth;
  }

  if (offset + width > avWidth)
    offset = avWidth - width;
  if (offset < 0)
    offset = 0;

  jsmenu.style.marginLeft = document.getElementById('body').offsetLeft  + offset + 'px';
  jsmenu.style.top        = jsMenuTop + 'px';
  jsmenu.style.display    = 'block';

  // hide objects
  for (i = 0; i < hideOnMenuObjs.length; ++i) {
    oTop    = hideOnMenuObjs[i].offsetTop + hideOnMenuTop;
    oBottom = oTop + hideOnMenuObjs[i].clientHeight;
    oLeft   = hideOnMenuObjs[i].offsetLeft;
    oRight  = oLeft + hideOnMenuObjs[i].offsetWidth;

    if (offset > oLeft && offset < oRight && jsMenuTop < oBottom && (jsmenu.clientHeight + jsMenuTop) > oTop)
      hideOnMenuObjs[i].style.visibility = 'hidden';
  }
} // end func initSubmenu


/**
 * Preloads mainmenu images.
 *
 * @access  public
 */
function preloadMenu()
{
  var i;

  for (i = 0; i < menuItems.length; ++i) {
    menuImgs[i] = new Array(new Image, new Image);
    menuImgs[i][0].src = menuImgPath + menuItems[i] + '.' + menuImgSuffix;
    menuImgs[i][1].src = menuImgPath + menuItems[i] + '_1.' + menuImgSuffix;
  }

  initHideOnMenu();
}


function fixFooter()
{
  if (!document.getElementsByTagName)
    return false;

  if (navigator.appVersion.indexOf('MSIE 5') >= 0)
    return false;

  var docHeight  = document.getElementsByTagName('html')[0].clientHeight;
  var bodyHeight = document.getElementsByTagName('body')[0].clientHeight;
//  document.getElementById('footer').style.position = 'absolute';
//  document.getElementById('footer').style.top = ((docHeight > bodyHeight ? docHeight : bodyHeight) - 20) + 'px';

  document.getElementById('body').style.height = docHeight - 240 + 'px';

  return true;
} // end func fixFooter


/**
 * Initializes items which shall be hidden on demand.
 *
 * @access  public
 */
function initHideOnMenu()
{
  if (!document.getElementsByName)
    return false;
  if (navigator.appName.indexOf('Internet Explorer') < 0)
    return false;

  var i;
  for (i = hideOnMenuIds.length - 1; i >= 0; --i)
    hideOnMenuObjs[hideOnMenuObjs.length] = document.getElementById(hideOnMenuIds[i]);
} // end func initHideOnMenu


var showImageWin = null;

function showImage(id, width, height)
{
  if (showImageWin != null && !showImageWin.closed)
    showImageWin.close();
  showImageWin = window.open('../showImage.php?id=' + id, '', 'width=' + width + ',height=' + height);
} // end func showImage
