

function GetElement(id) { if (!document.getElementById) return(null); return(document.getElementById(id)); }
function SetVis(id,v) { var o=GetElement(id); if (o) { o.style.visibility=(v)?'visible':'hidden'; } }
function GTA(T,N,DV) { if (!T.attributes) return(DV); var A=T.attributes[N]; if (!A) return(DV); return(NoNull(A.value,DV)); }
function NoNull(V,DV) { if (V==null) return(DV); return(V); }

var NavButtons=new Object(); var NavTimer=null; var curNav=null;
function GetNav(id) { var N=NavButtons[id]; if (N) return(N); var N=NavButtons[id]=new Object; N.id=id; N.td=GetElement('navlink_'+id); N.mstd=GetElement('navmenusp_'+id); N.menu=GetElement('dmenu_'+id); return(N); }
function HoverNav(id,n) { var N=GetNav(id); N.hover=n; SetNav(N); clearTimeout(NavTimer); if (n) { if(curNav) { SwapNav(id); } else { NavTimer=setTimeout("SwapNav('"+id+"')",250); } } else { NavTimer=setTimeout('SwapNav()',1000); }  }
function SetNav(N) { var v=0; if ((N.hover)||(N.on)) v=1; N.td.className=(v)?'navlinkover':'navlink'; N.mstd.className=(v)?'navmenuspover':'';  SetVis('dmenu_'+N.id,N.on); }
function SwapNav(id) { var N=GetNav(id); if (curNav) { curNav.on=0; SetNav(curNav); curNav=null; } if (id==null)return; if (!N.menu) return; curNav=N; N.on=1; SetNav(N); }
function HoverMenu(n) { clearTimeout(NavTimer); if (n==0) { NavTimer=setTimeout('SwapNav()',1000); } }

function AutoAlign() { var AlignGroups = new Object(); var DL = document.getElementsByTagName('div'); var j,AG,AI; for (j=0; j<DL.length; j++) { var D=DL[j]; var AGID = GTA(D,"aligngroup",""); if (AGID!="") {  AG=AlignGroups[AGID]; if (AG==null) { AG=new Object(); AG.items=new Array(); AG.MaxHeight=0; AG.id=AGID; AlignGroups[AGID]=AG; } AI=new Object(); AI.div=D; AI.ItemHeight=D.scrollHeight; AI.HeightNode=FindAutoHeightNode(D);  if (AI.HeightNode) { AI.InnerHeight=AI.HeightNode.scrollHeight; } AG.items[AG.items.length]=AI; AG.MaxHeight=Math.max(AI.ItemHeight,AG.MaxHeight); } } for (var i in AlignGroups) {  var AG=AlignGroups[i]; var P=(document.all)?'height':'minHeight'; for (j=0; j<AG.items.length; j++) { AI=AG.items[j]; if (AI.HeightNode) { var ADD=Math.max(0,AG.MaxHeight-AI.ItemHeight); if (ADD>0) { var NH=AI.InnerHeight+ADD; AI.HeightNode.style[P]=NH; } } } } }
function FindAutoHeightNode(PE) { for (var j=0; j<PE.childNodes.length; j++) {  var CE=PE.childNodes[j]; if (GTA(CE,"autoheight","")=="1") return(CE); var NEM = FindAutoHeightNode(CE); if (NEM!=null) return(NEM); } return(null); }

