function MenuManager (name, hasImages, hasActive, hasAlpha)
{
  this.id = 'menu-' + name;
  this.name = name;
  this.hasImages = hasImages;
  this.hasActive = hasActive;
  this.element = document.getElementById(this.id);
  this.ltie7 = $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent);
  this.hasAlpha = hasAlpha;
}
MenuManager.prototype.setCurrent = function (path)
{
  var subpaths = new Array;
  var thiselement = this.element;
  var thisname = this.name;
  $.each(path, function (i, n){
    subpaths[i] = i == 0 ? n : subpaths[i - 1] + '_' + n;
  });

  var seenCurrent = false;
  for (var i = subpaths.length -1; i >= 0; i--) 
  {
    var subpath = subpaths[i];
    var pathelements = $(thiselement).find('li.' + thisname + '-' + subpath);
    for (var j = 0; j < pathelements.length; j++)
    {
      var jqElm = $(pathelements[j]);
      jqElm.addClass('path');
      if (!seenCurrent && !jqElm.is('.map'))
      {
        seenCurrent = true;
        jqElm.addClass('current');
      }
    }
  }
  if (this.hasImages)
  {
    var firstlevel = $('#' + this.id + ' > li.path');
    if (firstlevel.length)
    {
      var el = firstlevel.get(firstlevel.length - 1);
      el.imageWasSet = true;
      this.setImageHover(el, true);
    }
  }
}
MenuManager.prototype.setImageHovers = function ()
{
  var firstlevel = $('#' + this.id + ' > li');
  if (firstlevel.length)
  {
    for (var i = 0; i < firstlevel.length; i++)
    {
      var el = firstlevel.get(i);
      if (!el.imageWasSet)
      {
        this.setImageHover(firstlevel.get(i), false);
      }
    }
  }
}

MenuManager.prototype.setImageHover  = function (el, active)
{
  var imgs = el.getElementsByTagName('img');
  if (imgs.length)
  {
    var oldimg = imgs[0];
    var height = oldimg.getAttribute('height');
    el.imgjq = $(oldimg);
    var eljq = $(el);
    if (this.hasAlpha && this.ltie7)
    {
      var imgsrc = el.imgjq.css("background-image");
      imgsrc = imgsrc.substring(imgsrc.lastIndexOf('/images'), imgsrc.length);
      imgsrc = imgsrc.substring(0, imgsrc.lastIndexOf('.'));
      var extension = '.png';
      var normalsuffix = active ? '-active' : '-normal';
      var hoversuffix = active ? '-activehover' : '-hover';
      el.imgjq.css({
        backgroundImage: 'none',
        filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + imgsrc + normalsuffix + extension + '\', sizingMethod=\'scale\')'
      });
      eljq.hover(
        function () {
          this.imgjq.css({
            backgroundImage: 'none',
            filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + imgsrc + hoversuffix + extension + '\', sizingMethod=\'scale\')'
          })
        },
        function () {
          this.imgjq.css({
            backgroundImage: 'none',
            filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + imgsrc + normalsuffix + extension + '\', sizingMethod=\'scale\')'
          })
        }
      );
    }
    else
    {
      var normalOffset = active ? height * -2 : 0;
      var hoverOffset = normalOffset - height;
      el.imgjq.css({backgroundPosition: '0 ' + normalOffset + 'px'})
      eljq.hover(
        function () {
          this.imgjq.css({backgroundPosition: '0 ' + hoverOffset + 'px'})
        },
        function () {
          this.imgjq.css({backgroundPosition: '0 ' + normalOffset + 'px'})
        }
      );
    }
    oldimg.alt = oldimg.title = '';
  }
}
