var nmb=0;
var divs = null;
var spans = null;
var zindex=100;
function SafeString(str)
{
 r = str.replace(/>/ig, "&gt");
 r = r.replace(/</ig, "&lt");
 return r;
}
function MenuItem(title,anchor,alt)
{
  this.objname="item";
  this.owner=null;
  this.name=SafeString(title);
//  this.idname=nmb++;
  this.idname="n"+(nmb++);
  this.a=anchor;
  this.alt=SafeString(alt);
  this.getAnchor = getAnchor;
}

function getAnchor(){return this.a;}
function getTitle(){return this.name;}
function getAlt(){return this.alt;}

function MenuBox(name)
{
  this.objname="box";
  this.owner=null;
  this.name=SafeString(name);
  this.idname="n"+(nmb++);
//  this.idname=nmb++;
  this.a="Goto submenu";
  this.alt="";
  this.count = 0;
  this.item = new Object;
  this.addItem = addMenuItem;
  this.getItem = getMenuItem;
}
function addMenuItem(item)
{
  item.owner=this;
  this.item[this.count++]=item;
}

function getMenuItem(name)
{
  for (var i=0; i<this.count; i++){
   p = this.item[i];
   if (p.idname==name) return p;
   if (p.objname == "box"){
      p2 = p.getItem(name);
      if (p2!=null) return p2;
  }}
return null;
}

function MenuBar()
{
  this.objname="bar";
  this.owner=null;
  this.count = 0;
  this.name = "MMB";
  this.item = new Object;
  this.addMenu = addSubMenu;
  this.getSubMenu = getSubMenu;
  this.getMenuItem = getMenuItem;
}

function addSubMenu(menu)
{
  menu.owner=this;
  this.item[this.count++]=menu;
}

function getSubMenu(name)
{
 for (var i=0; i<this.count; i++){
  p = this.item[i];
  if (p.idname==name) return p;
  if (p.objname == "box"){
    p2 = p.getItem(name);
    if (p2!=null)
       if (p2.objname=="box") return p2;
  }}
return null;
}


function ConstructMenuBox(mb)
{
  if (mb.objname!="box"){alert("Expected mb.objname==\"box\". It's"+ mb.objname); return;}
  zindex++;
  if (mb.owner==null) alert(mb.name + " don't have the owner");
  var strsm="<DIV class=submenu id=submenu name="+mb.idname+" style='z-index:"+zindex+"; position:absolute; width:"+1000+"px; visibility:hidden;'>";
//    strsm="<DIV class=submenu id=submenu name="+mb.idname+" style='width:"+1000+"px;'>";
  for (var j=0; j<mb.count; j++){
   var p = mb.item[j];
   if (p.objname == "box") ConstructMenuBox(p);
   var ttl = p.idname;
   var label = p.name;
   var alt = p.alt;
  strsm+="<span class=nonact id=menupunkt name="+ttl+" title=\"" +alt+"\">&nbsp"+label+"&nbsp</span><br>";
  }
  strsm += "</DIV>";
  document.writeln(strsm);
  zindex--;
}
function ConstructMenu(menu)
{
  str = "<DIV class=menu id=MainMenuBar>";
  for (var i=0; i<menu.count; i++){
   var m=menu.item[i];
   str+="<span class=menu id=submenu name='"+m.idname+"'>&nbsp"+m.name+"&nbsp</span>";
   if ((i+1)<menu.count) str+="<span class=menudelim>|</span>";
   ConstructMenuBox(m);
 }
 str += "</DIV>";
 document.writeln(str);
 InitMenu(menu);
}

function InitMenu(menu)
{
  divs = document.all.tags("DIV");
  if (divs==null){alert("Collection \"DIV\" don't aviable");return;}
  for (var k=0; k<divs.length; k++)
  {
    var m=null;
    var curdiv=null;
    if ((m=menu.getSubMenu(divs[k].name))==null) continue;
    else {
       curdiv=divs[k];
       spans = document.all.tags("SPAN");
       if (spans==null){alert("Collection \"SPAN\" don't aviable for "+m.name); continue;}
       maxw=0;
       for (var j=0; j<m.count; j++){
          var p = m.item[j];  var curspan = null;
          ttl=p.idname
          for (var l=0; l<spans.length; l++)
            if (spans[l].name==ttl){curspan=spans[l]; break;}
          if (curspan==null){alert("object:"+ttl+" = null"); continue;}
          w = curspan.offsetWidth;
          if (w>maxw) maxw=w;
       }
       curdiv.style.width=maxw;
    }}
}


