var TkFragmentVerticalMenu = Class.create();
TkFragmentVerticalMenu.prototype = {
  initialize: function(container, id, assetPath, options) {
    this.container = container;
    this.id = id;
    this.assetPath = tkRootCMS + assetPath;
    this.node = g_navNode_Root;
    this.path = g_navNode_Path;
    this.options = {
      className: 'tkFragmentVerticalMenu',
      image: (this.assetPath + 'image/arrowDown.gif'),
      imageAlt: '+'
    }
    Object.extend(this.options, options || {});
  },

  write: function() {
    if (this.path.length > 1) {
      var list = [];
      list.push('<div id="' + this.id + '">');
      var siteClassName = this.options.className + '_' + tkSite.replace(/\./, '_');
      list.push('<table class="' + this.options.className + ' ' + siteClassName + '" cellspacing="0"><tbody>');
      this.writeNode(list, this.node, -1);
      list.push('</tbody></table>');
      list.push('</div>');
      if (list.length > 4) {
        list.each(function(html) { document.write(html) });
        return;
      }
    }
    Element.hide(this.container);
  },

  writeNode: function(list, node, parentId) {
    var level = node.m_level;
    if (parentId == -1 || this.path[level - 1] == parentId) {
      if (level == 2 || level == 3 || level == 4) {
        var html = '<tr'
        if (this.path[this.path.length - 1] == node.m_id) {
          html += ' class="selected"';
        }
        html += '><td class="' + (level == 2 ? 'parent' : (level == 3 ? 'child' : 'gchild')) + '"'
              + ' onclick="TkFragmentVerticalMenuClick(event);"'
              + ' onmouseover="Element.addClassName(this.parentNode, \'over\');"'
              + ' onmouseout="Element.removeClassName(this.parentNode, \'over\');"'
              + '><div><a href="' + node.m_href + '">' + node.m_label + '</a>';
        if (node.m_subNodes.length > 0) {
          html += '<img class="arrow" alt="+" src="' + this.options.image + '" alt="' + this.options.imageAlt + '" title="Has Child Menu Items" />';
        }
        html += '</div></td></tr>';
        list.push(html);
      }
    }
    for (var i = 0; i < node.m_subNodes.length; i++) {
      this.writeNode(list, node.m_subNodes[i], node.m_id);
    }
  }
}

function TkFragmentVerticalMenuClick(event) {
  var element = Event.element(event);
  if (element.tagName.toUpperCase() != 'A') {
    var a = element.getElementsByTagName('A')[0];
    window.open(a.href, a.target || '_self');
  }
}
