
function Foldertree(navid)
{this.tree=document.getElementById(navid);if(!this.tree){return;}
this.body=document.getElementsByTagName('body').item(0);this.idcounter=0;var items=this.tree.getElementsByTagName('li');for(var i=0,ilen=items.length;i<ilen;i++)
{this.addItemTrigger(items[i]);}
var headings=this.tree.getElementsByTagName('h3');for(i=0,ilen=headings.length;i<ilen;i++)
{this.addHeadingTrigger(headings[i]);}}
Foldertree.prototype.addItemTrigger=function(li)
{var menu=li.getElementsByTagName('ul').length>0?li.getElementsByTagName('ul')[0]:null;if(/active/.test(li.className)&&!/containsactive/.test(li.className))
{var here=document.createElement('em');here.appendChild(document.createTextNode(' (you are here)'));if(menu)
{li.insertBefore(here,menu);}
else
{li.appendChild(here);}}
if(!menu){return;}
var a=li.getElementsByTagName('a')[0];var span=li.getElementsByTagName('span')[0];li.className+=(li.className==''?'':' ')+'hasmenu';var expander=document.createElement('a');menu.id='navpanel-menu'+this.idcounter++;expander.href='#'+menu.id;expander.className='twisty';expander.setAttribute('title','Click to open');expander.appendChild(document.createTextNode('...'));span.insertBefore(expander,a);if(/active/.test(li.className))
{menu.style.display='block';expander.className+=(expander.className==''?'':' ')+'open';expander.title='Click to close';}
var self=this;expander.onclick=function(e)
{var target=e?e.target:window.event.srcElement;while(target.nodeName.toLowerCase()!='li')
{target=target.parentNode;}
if(target==this.parentNode.parentNode)
{if(menu)
{if(menu.style.display=='block')
{menu.style.display='none';expander.className=expander.className.replace(/ ?open/g,'');expander.title='Click to open';}
else
{menu.style.display='block';expander.className+=(expander.className==''?'':' ')+'open';expander.title='Click to close';}
self.redraw();return false;}
return true;}
return true;};};Foldertree.prototype.addHeadingTrigger=function(heading)
{var a=heading.getElementsByTagName('a')[0];var span=heading.getElementsByTagName('span')[0];if(!heading.nextSibling){return;}
var menu=heading.nextSibling;while(menu.nodeType!=1)
{if(!menu.nextSibling){return;}
menu=menu.nextSibling;}
if(menu.nodeName.toLowerCase()!='ul'){return;}
heading.className+=(heading.className==''?'':' ')+'hasmenu';var expander=document.createElement('a');menu.id='navpanel-menu'+this.idcounter++;expander.href='#'+menu.id;expander.className='twisty';expander.setAttribute('title','Click to open');expander.appendChild(document.createTextNode('...'));span.appendChild(expander,a);if(typeof document.uniqueID!='undefined'&&expander.offsetTop>0)
{expander.runtimeStyle.top=(span.offsetHeight-expander.offsetHeight)+'px';}
if(/(contains)?active/.test(heading.className))
{menu.style.display='block';expander.className+=(expander.className==''?'':' ')+'open';expander.title='Click to close';}
var self=this;expander.onclick=function(e)
{var target=e?e.target:window.event.srcElement;while(target.nodeName.toLowerCase()!='h3')
{target=target.parentNode;}
if(target==this.parentNode.parentNode)
{if(menu)
{if(menu.style.display=='block')
{menu.style.display='none';expander.className=expander.className.replace(/ ?open/g,'');expander.title='Click to open';}
else
{var beforetop=(self.getTopPosition(heading)-self.getTopScrolling(heading));self.clearSiblingMenus(target.getElementsByTagName('a').item(0));var aftertop=(self.getTopPosition(heading)-self.getTopScrolling(heading));if(aftertop<0)
{window.scrollTo(0,self.getTopPosition(heading)-beforetop);}
menu.style.display='block';expander.className+=(expander.className==''?'':' ')+'open';expander.title='Click to close';}
self.redraw();return false;}
return true;}
return true;};};Foldertree.prototype.clearSiblingMenus=function(trigger)
{var headings=this.tree.getElementsByTagName('h3');for(var i=0;i<headings.length;i++)
{if(headings[i]==trigger.parentNode.parentNode){continue;}
headings[i].className=headings[i].className.replace(/ ?open/g,'');var a=headings[i].getElementsByTagName('a')[1];if(a)
{a.className=a.className.replace(/ ?open/g,'');}
if(!headings[i].nextSibling){continue;}
var menu=headings[i].nextSibling;while(menu.nodeType!=1)
{if(!menu.nextSibling){break;}
menu=menu.nextSibling;}
if(!menu||menu.nodeName.toLowerCase()!='ul'){continue;}
menu.style.display='none';}};Foldertree.prototype.redraw=function()
{this.body.style.position='relative';this.body.style.position='static';};Foldertree.prototype.getTopPosition=function(ele)
{var top=ele.offsetTop,node=ele.offsetParent;while(node!=null)
{top+=node.offsetTop;node=node.offsetParent;}
return top;};Foldertree.prototype.getTopScrolling=function()
{var scroll=0;if(typeof window.pageYOffset!='undefined')
{scroll=window.pageYOffset;}
else if(typeof document.documentElement.scrollTop!='undefined'&&document.documentElement.scrollTop>0)
{scroll=document.documentElement.scrollTop;}
else if(typeof document.body.scrollTop!='undefined')
{scroll=document.body.scrollTop;}
return scroll;};Foldertree.prototype.getViewportHeight=function()
{var height=0;if(typeof window.innerHeight!='undefined')
{height=window.innerHeight;}
else if(typeof document.documentElement!='undefined'&&typeof document.documentElement.clientWidth!='undefined'&&document.documentElement.clientWidth!=0)
{height=document.documentElement.clientHeight;}
else
{height=document.getElementsByTagName('body')[0].clientHeight;}
return height;}
