// b3rtMenu 1.3
// Copyright 2005, H. poort
// This software may not be used without a valid license

if(document.all&&!document.getElementById){document.getElementById=function(id){return document.all[id];};if(document.all.tags&&!document.getElementsByTagName)document.getElementsByTagName=function(tag){return document.all.tags[tag];};};function b3rtSettings(settingsObj){this.orientation='horizontal';this.align=null;this.subAlign=null;this.cssMenu='';this.cssItemOff='';this.cssItemOn='';this.shiftRight=0;this.shiftDown=0;this.hideLastBorder=false;this.autoHide=true;this.hideTime=2000;if(settingsObj&&settingsObj.constructor==b3rtSettings)for(i in settingsObj)this[i]=settingsObj[i];};function b3rtMenuItem(menu){if(typeof(b3rtMenuItemCounter)=='undefined'){b3rtMenuItemCounter=0;b3rtMenuItems=new Array();}this.id=b3rtMenuItemCounter++;b3rtMenuItems[this.id]=this;this.menu=menu;this.menu.items[this.menu.items.length]=this;this.subMenu=null;this.txt=null;this.url=null;this.target=null;this.elemId=null;};b3rtMenuItem.prototype.onMouseOver=function(){this.menu.hideOtherMenus();if(this.subMenu)this.subMenu.showMenu();else document.getElementById(this.elemId).className=this.menu.settings.cssItemOff+' '+this.menu.settings.cssItemOn;if(this.menu.getRootMenu().timer){window.clearTimeout(this.menu.getRootMenu().timer);this.menu.getRootMenu().timer=null;}};b3rtMenuItem.prototype.onMouseOut=function(){if(!this.subMenu)document.getElementById(this.elemId).className=this.menu.settings.cssItemOff;if(this.menu.getRootMenu().settings.autoHide){var refMenu=this.menu;this.menu.getRootMenu().timer=window.setTimeout(function(){refMenu.getRootMenu().hideMenu();},this.menu.getRootMenu().settings.hideTime);}};function b3rtMenu(settings,parent){if(typeof(b3rtMenuCounter)=='undefined'){b3rtMenuCounter=0;canHide=true;b3rtMenus=new Array();document.write('<scr'+'ipt type="text/javascript">document.onclick = function(){if (!canHide) return; for (var i in b3rtMenus){ b3rtMenus[i].hideMenu(); } };</scr'+'ipt>');}this.id=b3rtMenuCounter++;this.settings=settings;if(parent){this.parentMenu=parent;this.parentMenu.currentSub=this.parentMenu.subMenus.length;this.parentMenu.subMenus[this.parentMenu.subMenus.length]=this;}else{this.parentMenu=this;b3rtMenus[b3rtMenus.length]=this;}this.currentSub=null;this.subMenus=new Array();this.parentItem=null;this.items=new Array();this.elemId=null;this.timer=null;};b3rtMenu.prototype.getRootMenu=function(){var menu=this;while(menu.parentMenu!=menu)menu=menu.parentMenu;return menu;};b3rtMenu.prototype.getSubMenu=function(){var menu=this;while(menu.currentSub!=null)menu=menu.subMenus[menu.currentSub];return menu;};b3rtMenu.prototype.beginSubMenu=function(settings){var currentMenu=this.getSubMenu();var subMenu=new b3rtMenu(settings,currentMenu);subMenu.parentItem=currentMenu.items[currentMenu.items.length-1];subMenu.parentItem.subMenu=subMenu;};b3rtMenu.prototype.endSubMenu=function(){var currentMenu=this.getSubMenu();currentMenu.parentMenu.currentSub=null;currentMenu.writeMenu();};b3rtMenu.prototype.addItem=function(txt,url,target){var menu=this.getSubMenu();var item=new b3rtMenuItem(menu);item.txt=txt;item.url=(url?url:null);item.target=(target?target:null);};b3rtMenu.prototype.showMenu=function(){function _getElementHeight(elem){return document.getElementById(elem).offsetHeight;};function _getElementWidth(elem){return document.getElementById(elem).offsetWidth;};function _getElementPos(elem){var pos=new Object({'x':0,'y':0});if(elem==null)return pos;while(elem.offsetParent){pos.x+=elem.offsetLeft;pos.y+=elem.offsetTop;elem=elem.offsetParent;}if(elem.offsetLeft)pos.x+=elem.offsetLeft;if(elem.offsetTop)pos.y+=elem.offsetTop;return pos;};var parentWidth=_getElementWidth(this.parentItem.elemId);var width=_getElementWidth(this.elemId);var pos=_getElementPos(document.getElementById(this.parentItem.elemId));var posX=pos.x+this.parentMenu.settings.shiftRight;var posY=pos.y+this.parentMenu.settings.shiftDown;if(this.parentMenu.settings.orientation=='vertical'){if(this.parentMenu.settings.subAlign=='left')posX-=width;else posX+=parentWidth;}else{posY+=_getElementHeight(this.parentItem.elemId);if(this.parentMenu.settings.subAlign=='center'){if(parentWidth<width)posX-=(width-parentWidth)/2;else posX+=(parentWidth-width)/2;}if(this.parentMenu.settings.subAlign=='right')posX+=width;}var menuEl=document.getElementById(this.elemId);menuEl.style.left=posX+'px';menuEl.style.top=posY+'px';menuEl.style.visibility='visible';document.getElementById(this.parentItem.elemId).className=this.parentMenu.settings.cssItemOff+' '+this.parentMenu.settings.cssItemOn;};b3rtMenu.prototype.hideMenu=function(){for(i in this.subMenus)this.subMenus[i].hideMenu();if(this==this.getRootMenu())return;document.getElementById(this.elemId).style.visibility='hidden';document.getElementById(this.parentItem.elemId).className=this.parentMenu.settings.cssItemOff;};b3rtMenu.prototype.hideOtherMenus=function(){var menu=this;for(var i in menu.subMenus)menu.subMenus[i].hideMenu();while(menu.parentMenu!=menu){for(var i in menu.parentMenu.subMenus)if(menu.parentMenu.subMenus[i]!=menu)menu.parentMenu.subMenus[i].hideMenu();menu=menu.parentMenu;}};b3rtMenu.prototype.writeMenu=function(){var html=new String();var onclick=new String('canHide = false; window.setTimeout(\'canHide = true;\', 250);');this.elemId='b3rtmenu_'+this.id;html=html.concat('<table id="'+this.elemId+'" border="0" cellpadding="0" cellspacing="0" onclick="'+onclick+'" '+(this.settings.align?'align="'+this.settings.align+'" ':'')+'class="'+this.settings.cssMenu+'" style="z-index: '+(8+this.id-this.getRootMenu().id)+';');if(this!=this.getRootMenu())html=html.concat(' visibility: hidden; position: absolute; left: 0; top: 0;');html=html.concat('"><tbody>');if(this.settings.orientation=='horizontal')html=html.concat('<tr>');for(var itemNo=0;itemNo<this.items.length;itemNo++){var item=this.items[itemNo];if(this.settings.orientation=='vertical')html=html.concat('<tr>');html=html.concat('<td');html=html.concat(' onmouseover="b3rtMenuItems['+item.id+'].onMouseOver();"');html=html.concat(' onmouseout="b3rtMenuItems['+item.id+'].onMouseOut();"');html=html.concat('>');item.elemId=new String('b3rtitem_'+item.id);html=html.concat('<a id="'+item.elemId+'" class="'+this.settings.cssItemOff+'"');if(item.url!=null){if(item.url.charAt(0)=='*')html=html.concat(' href="#" onclick="'+item.url.substring(1,item.url.length)+'; return false;"');else html=html.concat(' href="'+item.url+'"');if(item.target!=null)html=html.concat(' target="'+item.target+'"');}html=html.concat(' style="');if(item.url==null)html=html.concat(' cursor: default;');if(this.settings.hideLastBorder&&itemNo==this.items.length-1)html=html.concat(' border: 0 none;');html=html.concat(' display: block;">');html=html.concat(item.txt+'</a>');html=html.concat('</td>');if(this.settings.orientation=='vertical')html=html.concat('</tr>');}if(this.settings.orientation=='horizontal')html=html.concat('</tr>');html=html.concat('</tbody></table>');document.write(html);};