// b3rtMenu 2.5
// Copyright 2008, H. poort
// This software may not be used without a valid license

function b3rtMenuSettings(a){this.containerElementId='';this.orientation='horizontal';this.alignRootMenu=this.alignSubmenus='';this.shiftSubmenusHorizontal=this.shiftSubmenusVertical=0;this.autoHide=false;this.hideTime=2000;this.preventOverflow=false;this.notificationCallback=null;this.cssMenu=this.cssItemOff=this.cssItemOn='';this.cssCurrentPage=this.cssCurrentPath='';this.contentItemBetween=this.cssItemBetween='';this.contentItemTop=this.cssItemTop='';this.contentItemBottom=this.cssItemBottom='';this.contentItemLeft=this.cssItemLeft='';this.contentItemRight=this.cssItemRight='';if(((typeof a)=='object')&&(a.constructor==b3rtMenuSettings)){for(var i in a){if((typeof a[i])!='function'){if(a[i]&&(a[i].constructor==Array))this[i]=a[i].slice(0);else this[i]=a[i]}}}};function b3rtMenuItem(a){this.itemId=window.b3rtMenuItems.length;window.b3rtMenuItems[this.itemId]=this;this.ownerMenu=a;this.ownerMenu.items[this.ownerMenu.items.length]=this;this.subMenu=null;this.txt='';this.url='';this.target=null;this.isCurrentPage=false;this.isInCurrentPath=false;this.elementId=''};b3rtMenuItem.prototype.onMouseOver=function(a){for(var i=0;i<this.ownerMenu.subMenus.length;i++)this.ownerMenu.subMenus[i].hideMenu();var b=this.ownerMenu;var c=b.parentMenu;while(!c.isRootMenu){for(var j=0;j<c.subMenus.length;j++){if(c.subMenus[j]!=b)c.subMenus[j].hideMenu()}b=c;c=b.parentMenu}var d=document.getElementById(this.elementId);if(d)d.className=this.ownerMenu.settings.cssItemOff+' '+this.ownerMenu.settings.cssItemOn+(this.isCurrentPage?' '+this.ownerMenu.settings.cssCurrentPage:'')+(this.isInCurrentPath?' '+this.ownerMenu.settings.cssCurrentPath:'');if(this.subMenu)this.subMenu.showMenu()};b3rtMenuItem.prototype.onMouseOut=function(a){if(!this.subMenu){var b=document.getElementById(this.elementId);if(b)b.className=this.ownerMenu.settings.cssItemOff+(this.isCurrentPage?' '+this.ownerMenu.settings.cssCurrentPage:'')+(this.isInCurrentPath?' '+this.ownerMenu.settings.cssCurrentPath:'')}};function b3rtMenu(d,e){if((typeof d)!='object'||d.constructor!=b3rtMenuSettings)return;this.settings=d;this.subMenus=[];this.items=[];if((typeof window.b3rtMenus)!='object'){window.b3rtMenus=[];window.b3rtMenuItems=[];var f=function(a,b,c){if(a.addEventListener)a.addEventListener(b,c,false);else if(a.attachEvent)a.attachEvent('on'+b,c);else a['on'+b]=c};f(document,'click',function(a){for(var i=0;i<window.b3rtMenus.length;i++)if(window.b3rtMenus[i].isRootMenu&&!window.b3rtMenus[i].dontHide)window.b3rtMenus[i].hideMenu();window.setTimeout(function(){for(var i=0;i<window.b3rtMenus.length;i++)if(window.b3rtMenus[i].isRootMenu)window.b3rtMenus[i].dontHide=null},250)});f(window,'unload',function(a){window.b3rtMenus=null;window.b3rtMenuItems=null})}this.menuId=window.b3rtMenus.length;window.b3rtMenus[this.menuId]=this;this.elementId='';if(!e){this.isRootMenu=true;this.parentMenu=this;this.subMenusVisible=0}else{this.isRootMenu=false;this.parentMenu=e;this.parentMenu.subMenus[this.parentMenu.subMenus.length]=this;this.ownerItem=e.items[e.items.length-1];this.ownerItem.subMenu=this;this.isVisible=false}};b3rtMenu.prototype.beginSubMenu=function(a){var b=(this.getRootMenu().currentWorkingMenu?this.getRootMenu().currentWorkingMenu:this.getRootMenu());var c=new b3rtMenu(a,b);this.getRootMenu().currentWorkingMenu=c};b3rtMenu.prototype.endSubMenu=function(){var a=(this.getRootMenu().currentWorkingMenu?this.getRootMenu().currentWorkingMenu:this.getRootMenu());this.getRootMenu().currentWorkingMenu=a.parentMenu};b3rtMenu.prototype.addItem=function(a,b,c){var d=(this.getRootMenu().currentWorkingMenu?this.getRootMenu().currentWorkingMenu:this.getRootMenu());var e=new b3rtMenuItem(d);e.txt=a;e.url=(b?b:null);e.target=(c?c:null);e.isCurrentPage=((e.url!=null)&&(e.url!='')&&(window.location.href.indexOf(e.url)!=-1)&&((window.location.href.indexOf(e.url)+e.url.length)==window.location.href.length));if(e.isCurrentPage){var f=d.ownerItem;while(f){f.isInCurrentPath=true;f=f.ownerMenu.ownerItem}}};b3rtMenu.prototype.writeMenu=function(d){var e=null;if(this.isRootMenu){if(!document.getElementById||!document.createElement)return false;var f=false;if(!document.body)f=true;if(!f){if(this.settings.containerElementId=='')return false;e=document.getElementById(this.settings.containerElementId);if(!e)f=true}if(f){var g=this;window.setTimeout(function(){if(g){g.writeMenu(true);g=null}},100);return true}if(!document.body.appendChild)return}if(!e)e=document.body;var h=(this.settings.orientation!='vertical');var j=!h;var k=(this.settings.cssItemTop!=''||this.settings.contentItemTop!='');var l=(this.settings.cssItemBottom!=''||this.settings.contentItemBottom!='');var m=(this.settings.cssItemLeft!=''||this.settings.contentItemLeft!='');var n=(this.settings.cssItemRight!=''||this.settings.contentItemRight!='');var o=(this.settings.cssItemBetween!=''||this.settings.contentItemBetween!='');if(h){var p=this.items.length+(o?this.items.length-1:0);var q=1+(k?1:0)+(l?1:0)}else{var p=1+(m?1:0)+(n?1:0);var q=this.items.length+(o?this.items.length-1:0)}this.elementId='b3rtmenutable'+this.menuId;var r=document.createElement('table');r.id=this.elementId;r.border='0';r.cellPadding='0';r.cellSpacing='0';r.className=this.settings.cssMenu;if(this.isRootMenu&&this.settings.alignRootMenu)r.align=this.settings.alignRootMenu;r.style.zIndex=(8+this.menuId-this.getRootMenu().menuId);if(!this.isRootMenu){r.style.visibility='hidden';r.style.position='absolute';r.style.left='0';r.style.top='0'}r.onclick=function(a){var b=this.id.substr(('b3rtmenutable').length);window.b3rtMenus[b].getRootMenu().dontHide=true};if(this.getRootMenu().settings.autoHide){r.onmouseover=function(a){var b=this.id.substr(('b3rtmenutable').length);var c=window.b3rtMenus[b].getRootMenu();if(c.hideTimer){window.clearTimeout(c.hideTimer);c.hideTimer=null}};r.onmouseout=function(a){var b=this.id.substr(('b3rtmenutable').length);var c=window.b3rtMenus[b].getRootMenu();c.hideTimer=window.setTimeout(function(){if(c){c.hideMenu();c=null}},c.settings.hideTime)}}var s=document.createElement('tbody');if(k){var t=document.createElement('td');t.colSpan=p;var u=document.createElement('div');u.className=this.settings.cssItemTop;u.style.cursor='default';u.innerHTML=this.settings.contentItemTop;t.appendChild(u)}if(m){var v=document.createElement('td');v.rowSpan=q;var w=document.createElement('div');w.className=this.settings.cssItemLeft;w.style.cursor='default';w.innerHTML=this.settings.contentItemLeft;v.appendChild(w)}if(n){var x=document.createElement('td');x.rowSpan=q;var y=document.createElement('div');y.className=this.settings.cssItemRight;y.style.cursor='default';y.innerHTML=this.settings.contentItemRight;x.appendChild(y)}if(h){var z=document.createElement('tr');if(k){var A=document.createElement('tr');if(m)A.appendChild(v);A.appendChild(t);if(n)A.appendChild(x);s.appendChild(A)}else if(m)z.appendChild(v)}else{if(k){var A=document.createElement('tr');A.appendChild(t);s.appendChild(A)}}for(var B=0;B<this.items.length;B++){var C=this.items[B];if(j)var D=document.createElement('tr');if(B==0&&j&&m){var E=document.createElement('td');E.rowSpan=q;E.className=this.settings.cssItemLeft;E.style.cursor='default';E.innerHTML=this.settings.contentItemLeft;D.appendChild(E)}var F=document.createElement('td');F.id='b3rtmenutd'+C.itemId;F.onmouseover=function(a){var b=this.id.substr(('b3rtmenutd').length);window.b3rtMenuItems[b].onMouseOver(a)};F.onmouseout=function(a){var b=this.id.substr(('b3rtmenutd').length);window.b3rtMenuItems[b].onMouseOut(a)};C.elementId='b3rtmenulink'+C.itemId;var G=document.createElement('a');G.id=C.elementId;G.className=this.settings.cssItemOff+(C.isCurrentPage?' '+this.settings.cssCurrentPage:'')+(C.isInCurrentPath?' '+this.settings.cssCurrentPath:'');if(C.url!=null){if(C.url.charAt(0)=='*'){G.href='#';G.onclick=function(){var a=this.id.substr(('b3rtmenulink').length);var b=window.b3rtMenuItems[a];if(b)eval(b.url.substr(1));return false}}else G.href=C.url;if(C.target!=null)G.target=C.target}G.style.display='block';if(C.url==null)G.style.cursor='default';G.innerHTML=C.txt;F.appendChild(G);if(h)z.appendChild(F);else D.appendChild(F);if(B==0&&j&&n){var H=document.createElement('td');H.rowSpan=q;H.className=this.settings.cssItemRight;H.style.cursor='default';H.innerHTML=this.settings.contentItemRight;D.appendChild(H)}if(j)s.appendChild(D);if(o&&(B!=this.items.length-1)){var I=document.createElement('td');var J=document.createElement('div');J.className=this.settings.cssItemBetween;J.style.cursor='default';J.innerHTML=this.settings.contentItemBetween;I.appendChild(J);if(j){var D=document.createElement('tr');D.appendChild(I);s.appendChild(D)}else z.appendChild(I)}}if(h){if(!k&&n)z.appendChild(x);s.appendChild(z)}if(l){var K=document.createElement('tr');var L=document.createElement('td');L.colSpan=p;var M=document.createElement('div');M.className=this.settings.cssItemBottom;M.style.cursor='default';M.innerHTML=this.settings.contentItemBottom;L.appendChild(M);K.appendChild(L);s.appendChild(K)}r.appendChild(s);e.appendChild(r);for(var i=0;i<this.subMenus.length;i++)this.subMenus[i].writeMenu()};b3rtMenu.prototype.getRootMenu=function(){var a=this;while(!a.isRootMenu)a=a.parentMenu;return a};b3rtMenu.prototype.showMenu=function(){if(this.isRootMenu)return;var c=function(a){var b={'width':0,'height':0};if(a.offsetWidth)b.width=a.offsetWidth;if(a.offsetHeight)b.height=a.offsetHeight;return b};var d=function(a){var b={'x':0,'y':0};if(!a||!a.offsetParent||((typeof a.offsetLeft)!='number'))return b;while(a.offsetParent){b.x+=a.offsetLeft;b.y+=a.offsetTop;a=a.offsetParent}if(a.offsetLeft)b.x+=a.offsetLeft;if(a.offsetTop)b.y+=a.offsetTop;return b};var e=function(){var a={'width':0,'height':0};if((typeof window.innerWidth)=='number'){a.width=window.innerWidth;a.height=window.innerHeight}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){a.width=document.documentElement.clientWidth;a.height=document.documentElement.clientHeight}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){a.width=document.body.clientWidth;a.height=document.body.clientHeight}return a};var f=function(){var a={'x':0,'y':0};if((typeof window.pageXOffset)=='number'){a.x=window.pageXOffset;a.y=window.pageYOffset}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){a.x=document.body.scrollLeft;a.y=document.body.scrollTop}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){a.x=document.documentElement.scrollLeft;a.y=document.documentElement.scrollTop}return a};var g=document.getElementById(this.elementId);var h=document.getElementById(this.ownerItem.elementId);if(!g||!h)return;var i=d(h);i.x+=this.parentMenu.settings.shiftSubmenusHorizontal;i.y+=this.parentMenu.settings.shiftSubmenusVertical;var j=c(h);var k=c(g);if(this.parentMenu.settings.orientation=='vertical'){if(this.parentMenu.settings.alignSubmenus=='left')i.x-=k.width;else i.x+=j.width}else{i.y+=j.height;if(this.parentMenu.settings.alignSubmenus=='right'){if(k.width>j.width)i.x-=(k.width-j.width);else i.x+=(j.width-k.width)}else if(this.parentMenu.settings.alignSubmenus!='left'){if(j.width<k.width)i.x-=parseInt((k.width-j.width)/2);else i.x+=parseInt((j.width-k.width)/2)}}if(this.settings.preventOverflow){var l=e();var m=f();if((i.x+k.width)>(l.width+m.x))i.x=(l.width+m.x)-k.width;if(i.x<m.x)i.x=m.x;if((i.y+k.height)>(l.height+m.y))i.y=(l.height+m.y)-k.height;if(i.y<m.y)i.y=m.y}g.style.left=i.x+'px';g.style.top=i.y+'px';if(!this.isVisible){this.isVisible=true;this.getRootMenu().subMenusVisible++;g.style.visibility='visible'}if(this.getRootMenu().settings.notificationCallback)if(this.getRootMenu().subMenusVisible==1)this.getRootMenu().settings.notificationCallback(this.getRootMenu().menuId,'subMenusVisible')};b3rtMenu.prototype.hideMenu=function(){if(!this.isRootMenu){if(this.isVisible){this.isVisible=false;this.getRootMenu().subMenusVisible--;var a=document.getElementById(this.elementId);if(a)a.style.visibility='hidden'}var b=document.getElementById(this.ownerItem.elementId);if(b){b.className=this.parentMenu.settings.cssItemOff+(this.ownerItem.isCurrentPage?' '+this.parentMenu.settings.cssCurrentPage:'')+(this.ownerItem.isInCurrentPath?' '+this.parentMenu.settings.cssCurrentPath:'')}}for(var i=0;i<this.subMenus.length;i++)this.subMenus[i].hideMenu();if(this.getRootMenu().settings.notificationCallback)if(this.getRootMenu().subMenusVisible==0)this.getRootMenu().settings.notificationCallback(this.getRootMenu().menuId,'subMenusHidden')};