var maxnode;
var menutext;
var activenodename;
var lastlevel;

node = new Array();

function setactivename(n) {
   activenodename = n;
   }

function thisisactive(thisn) {
   if (node[thisn][5] == activenodename) return 'Y';
   else return 'N';
   }

function activeisbelowthis(thisn) {
   var n;
   if (thisn == maxnode) return thisisactive(thisn);
   for (n = thisn+1; n < maxnode && node[n][2] > node[thisn][2]; n++) {
      if (thisisactive(n) == 'Y') {
         return 'Y';
         }
      }
   return 'N';
   }

function startmenu() {
   maxnode = 0;
   menutext = '';
   lastlevel = 0;
   }

function Hamstartmenu() {
   maxnode = 0;
   menutext = '';
   lastlevel = 0;
   }

function addnode(name,url,levl,children,thetarget,assetid) {
 // alert('addnode ' + maxnode + ' to ' + activenodename + ' name=' + name);
   node[maxnode++] = new Array(name,url,levl,children,thetarget,assetid);
   }

function addtext(txt,addnewline) {
   menutext = menutext + txt;
   if (addnewline == 1) menutext = menutext + '\n';
   }

function finishmenu(orientation,parm2) {
   if (orientation == 'vertical') {
      if (parm2 == 'single' || parm2 == 'LEFTALIGN') {
         dosingleverticalmenu();
         }
      else {
         if (parm2 == 'double' || parm2 == 'INDENT') {
            dodoubleverticalmenu();
	    }
         else {
            doverticalmenu(parm2);
	    }
         }
      }
   else dohorizontalmenu(parm2);
   }
   
function printanchor(n,theclass,theid) {
   var t;
   var a;
   if (node[n][4]=='HamlinePopup') a = 'javascript:void(openPopup(' + "'" + node[n][1] + "'" + '))';
   else a = node[n][1];
   t = '<a href="' + a + '"';
   if (theclass!='') t = t + ' class="' + theclass + '"';
   if (theid!='') t = t + ' id="' + theid + '"'
   t = t + '>'+node[n][0]+'</a>';
   addtext(t,0);
}

function dohorizontalmenu(singledouble) {
   var n;
   var menunum = 1;
 //  alert('horizontal menu ... singledouble=' + singledouble + ' ... maxnode='+ maxnode);
   menutext = '';                                         /* initialize the text - first node */
   for (n = 0; n < maxnode; n++) {                        /* loop through all nodes */
      if (node[n][2] == 1) {                              /* level 1 nodes only for main menu */
         if (node[n][3] == 0) {                           /* no children - regular link */
	    addtext(' | ',0);
            if (thisisactive(n) == 'Y') {                 /* active link */
               printanchor(n,'active','');
               }
            else {
               printanchor(n,'','');
               }
            }
         else {                                           /* yes children - onclick open submenu */
            if (singledouble == 'double') {               /* only do this if we allow dropdowns (double) */
               addtext(' | <a href="#" onClick="menu('+"'"+menunum+"'"+');return false;" id="parent'+menunum+'">'+node[n][0]+'</a>',1);
               menunum++;
               }
            }
         }
      }
   addtext('',1);
//   alert('so far ... menutext = ' + menutext);
   if (singledouble == 'double') {
      menunum = 1;
      for (n = 0; n < maxnode; n++) {                     /* loop through all nodes - build submemenus */
         if (node[n][2] == 1) {                           /* level 1 nodes only */
            if (node[n][3] > 0) {                         /* yes children - do submenu */
               addtext('<div id="menu'+menunum+'">',1);
               for (i=1; i<=node[n][3] && n+i < maxnode; i++) {            /* find all level 2 nodes below this */
                  addtext('   <a href="'+node[n+i][1]+'">>'+node[n+i][0]+'</a>',1);
                  }
               addtext('   <a href="#" onClick="menu('+"'"+menunum+"'"+');return false;" id="parent'+menunum+'" class="navClose">close nav [x]</a>',1);
               addtext('</div>',1);
               menunum++;
               }
            }
         }
     }
   menutext = menutext.substr(3);
 // alert(menutext);
// prompt("menutext",menutext);
   document.write(menutext);
   }

function dosingleverticalmenu() {
   var n;
   menutext = '<ul class="treemenuStatic"  style="border:none;">'; /* initialize the text */
   for (n = 0; n < maxnode; n++) {                    /* loop through all nodes */
      if (thisisactive(n) == 'Y') {                   /* selected node */
         addtext('   <li id="curPage"><a id="curPage" href="'+node[n][1]+'">>'+node[n][0]+'</a></li>',1);
         }
      else {                                          /* non-selected node */
         addtext('   <li><a href="'+node[n][1]+'">>'+node[n][0]+'</a></li>',1);
         }
      }
   addtext('</ul>',1);
 //  alert(menutext);
   document.write(menutext);
   }

function dodoubleverticalmenu() {
   var n;
   var i;
   menutext = '<ul class="treemenuStatic"  style="border:none;">'; /* initialize the text */
   for (n = 0; n < maxnode; n++) {                    /* loop through all nodes */
      if (n>0) {
         for (i=node[n][2]; i>node[n-1][2]; i--) {
            addtext('   <ul class="treemenuStatic"  style="border:none;">',1);
            }
        for (i=node[n][2]; i<node[n-1][2]; i++) {
            addtext('   </ul>',1);
            }
         }
      if (thisisactive(n) == 'Y') {                   /* selected node */
         addtext('   <li id="curPage"><a id="curPage" href="'+node[n][1]+'">>'+node[n][0]+'</a></li>',1);
         }
      else {                                          /* non-selected node */
         addtext('   <li><a href="'+node[n][1]+'">>'+node[n][0]+'</a></li>',1);
         }
      }
   for (i=1; i<node[maxnode-1][2]; i++) {
      addtext('   </ul>',1);
      }

   addtext('</ul>',1);
//   alert(menutext);
// prompt("menutext",menutext);
   document.write(menutext);
   }

function doverticalmenu(openclosed) {
   
   var n;
   var i;
   menutext = '';                   /* initialize the text */
   for (n = 0; n < maxnode; n++) {                       /* loop through all nodes */
      if (n>0) {
         for (i=node[n][2]; i>node[n-1][2]; i--) {
            addtext('   <ul class="treemenuStatic"  style="border:none;">',1);
            }
         for (i=node[n][2]; i<node[n-1][2]; i++) {
            addtext('   </ul>',1);
            }
         }

      if (node[n][2] == 1) {                             /* if top level (1) then this is a heading */
         if (n > 0) {                                    /* end previous list if one is started */
            addtext('   </li>',1);
            addtext('</ul>',1);
            addtext('<br>',1); 
            }
         if (node[n][3] == 0) {                          /* no children - regular link */
            addtext('<ul class="treemenu">',1);
            addtext('   <li><a href="'+node[n][1]+'"><b>'+node[n][0]+'</b></a>',1);
            }
         else if (openclosed == 'open' ||openclosed == 'OPEN' ||
            activeisbelowthis(n) == 'Y') {               /* top heading open */
            addtext('<ul class="treemenuStatic">',1);
            addtext('   <li><h2>'+node[n][0]+'</h2>',1);
            }
         else {                                          /* top heading closed */
            addtext('<ul class="treemenu">',1);
            addtext('   <li class="treenode"><a href=""><b>'+node[n][0]+'</b></a>',1);
            } 
         }
      else {                                             /* NOT a heading - regular node */
         if (thisisactive(n) == 'Y') {                   /* selected node */
            addtext('      <li id="curPage"><a id="curPage" href="'+node[n][1]+'">>'+node[n][0]+'</a></li>',1);
            }
         else {                                          /* non-selected node */
            addtext('      <li><a href="'+node[n][1]+'">>'+node[n][0]+'</a></li>',1);
            }
         }
      }
   addtext('   </ul></li>',1);
   for (i=1; i<node[maxnode-1][2]; i++) {
      addtext('   </ul>',1);
      }
//   alert(menutext);
// prompt("menutext",menutext);
   document.write(menutext);
   }


