// b3rtMenu 2.6
// Copyright 2009, 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='';this.tableElementIdPrefix='b3rtmenutable_';this.tdElementIdPrefix='b3rtmenutd_';this.linkElementIdPrefix='b3rtmenulink_';this.triggerElementIdPrefix='b3rtmenutrigger_';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=this.ownerMenu.settings.linkElementIdPrefix+this.itemId};b3rtMenuItem.prototype.setEvents=function(c,d){var e=this.ownerMenu.settings.tdElementIdPrefix;var f=this.ownerMenu.settings.linkElementIdPrefix;c.id=e+this.itemId;c.onmouseover=function(a){var b=this.id.substr(e.length);window.b3rtMenuItems[b].onMouseOver(a)};c.onmouseout=function(a){var b=this.id.substr(e.length);window.b3rtMenuItems[b].onMouseOut(a)};d.id=this.elementId;if((this.url!=null)&&(this.url.charAt(0)=='*')){d.onclick=function(){var a=this.id.substr(f.length);var b=window.b3rtMenuItems[a];if(b)eval(b.url.substr(1));return false}}};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 b3rtMenuTrigger(a,b,c){this.triggerId=window.b3rtMenuTriggers.length;window.b3rtMenuTriggers[this.triggerId]=this;this.ownerMenu=a;this.triggerMenu=b;this.triggerMenu.triggers[this.triggerId]=this;this.elementId=c;this.overrideAlignment=''};b3rtMenuTrigger.prototype.setEvents=function(){var c=document.getElementById(this.elementId);if(!c)return;var d=this.ownerMenu.settings.triggerElementIdPrefix;if(c.className)c.className+=(' '+d+this.triggerId);else c.className=(d+this.triggerId);this.ownerMenu.addEventHandler(c,'mouseover',function(a){var b=c.className.substr(c.className.indexOf(d)+d.length);if(b.indexOf(' ')!=-1)b=b.substr(0,b.indexOf(' '));window.b3rtMenuTriggers[b].onMouseOver(a);window.b3rtMenuTriggers[b].ownerMenu.deactivateHide()});this.ownerMenu.addEventHandler(c,'mouseout',function(a){var b=c.className.substr(c.className.indexOf(d)+d.length);if(b.indexOf(' ')!=-1)b=b.substr(0,b.indexOf(' '));window.b3rtMenuTriggers[b].ownerMenu.activateHide()})};b3rtMenuTrigger.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}if(this.triggerMenu)this.triggerMenu.showMenu(this.triggerId)};function b3rtMenu(b,c){if((typeof b)!='object'||b.constructor!=b3rtMenuSettings)return;this.settings=b;this.subMenus=[];this.items=[];this.triggers=[];if((typeof window.b3rtMenus)!='object'){window.b3rtMenus=[];window.b3rtMenuItems=[];window.b3rtMenuTriggers=[];this.addEventHandler(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)});this.addEventHandler(window,'unload',function(a){window.b3rtMenus=null;window.b3rtMenuItems=null;window.b3rtMenuTriggers=null})}this.menuId=window.b3rtMenus.length;window.b3rtMenus[this.menuId]=this;this.elementId='';if(!c){this.isRootMenu=true;this.parentMenu=this;this.subMenusVisible=0}else{this.isRootMenu=false;this.parentMenu=c;this.parentMenu.subMenus[this.parentMenu.subMenus.length]=this;this.ownerItem=c.items[c.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.addTrigger=function(a,b,c){var d=b.split(':');var e=this;for(var i=0;i<d.length;i++){var f=parseInt(d[i]);if(isNaN(f)||(f<1))return false;if(!this.subMenus[f-1])return false;e=e.subMenus[f-1]}var g=document.getElementById(a);if(!g)return false;var h=new b3rtMenuTrigger(this,e,a);if(c)h.overrideAlignment=c;h.setEvents();return true};b3rtMenu.prototype.writeMenu=function(a){var b=null;if(this.isRootMenu){if(!document.getElementById||!document.createElement)return false;var c=false;if(!document.body)c=true;if(!c){if(this.settings.containerElementId=='')return false;b=document.getElementById(this.settings.containerElementId);if(!b)c=true}if(c){var d=this;window.setTimeout(function(){if(d){d.writeMenu(true);d=null}},100);return true}if(!document.body.appendChild)return}if(!b)b=document.body;var e=(this.settings.orientation!='vertical');var f=!e;var g=(this.settings.cssItemTop!=''||this.settings.contentItemTop!='');var h=(this.settings.cssItemBottom!=''||this.settings.contentItemBottom!='');var j=(this.settings.cssItemLeft!=''||this.settings.contentItemLeft!='');var k=(this.settings.cssItemRight!=''||this.settings.contentItemRight!='');var l=(this.settings.cssItemBetween!=''||this.settings.contentItemBetween!='');if(e){var m=this.items.length+(l?this.items.length-1:0);var n=1+(g?1:0)+(h?1:0)}else{var m=1+(j?1:0)+(k?1:0);var n=this.items.length+(l?this.items.length-1:0)}this.elementId=this.settings.tableElementIdPrefix+this.menuId;var o=document.createElement('table');o.id=this.elementId;o.border='0';o.cellPadding='0';o.cellSpacing='0';o.className=this.settings.cssMenu;if(this.isRootMenu&&this.settings.alignRootMenu)o.align=this.settings.alignRootMenu;o.style.zIndex=(8+this.menuId-this.getRootMenu().menuId);if(!this.isRootMenu){o.style.visibility='hidden';o.style.position='absolute';o.style.left='0';o.style.top='0'}var p=document.createElement('tbody');if(g){var q=document.createElement('td');q.colSpan=m;var r=document.createElement('div');r.className=this.settings.cssItemTop;r.style.cursor='default';r.innerHTML=this.settings.contentItemTop;q.appendChild(r)}if(j){var s=document.createElement('td');s.rowSpan=n;var t=document.createElement('div');t.className=this.settings.cssItemLeft;t.style.cursor='default';t.innerHTML=this.settings.contentItemLeft;s.appendChild(t)}if(k){var u=document.createElement('td');u.rowSpan=n;var v=document.createElement('div');v.className=this.settings.cssItemRight;v.style.cursor='default';v.innerHTML=this.settings.contentItemRight;u.appendChild(v)}if(e){var w=document.createElement('tr');if(g){var x=document.createElement('tr');if(j)x.appendChild(s);x.appendChild(q);if(k)x.appendChild(u);p.appendChild(x)}else if(j)w.appendChild(s)}else{if(g){var x=document.createElement('tr');x.appendChild(q);p.appendChild(x)}}for(var y=0;y<this.items.length;y++){var z=this.items[y];if(f)var A=document.createElement('tr');if(y==0&&f&&j){var B=document.createElement('td');B.rowSpan=n;B.className=this.settings.cssItemLeft;B.style.cursor='default';B.innerHTML=this.settings.contentItemLeft;A.appendChild(B)}var C=document.createElement('a');C.className=this.settings.cssItemOff+(z.isCurrentPage?' '+this.settings.cssCurrentPage:'')+(z.isInCurrentPath?' '+this.settings.cssCurrentPath:'');if(z.url!=null){if(z.url.charAt(0)=='*')C.href='#';else C.href=z.url;if(z.target!=null)C.target=z.target}C.style.display='block';if(z.url==null)C.style.cursor='default';C.innerHTML=z.txt;var D=document.createElement('td');D.appendChild(C);z.setEvents(D,C);if(e)w.appendChild(D);else A.appendChild(D);if(y==0&&f&&k){var E=document.createElement('td');E.rowSpan=n;E.className=this.settings.cssItemRight;E.style.cursor='default';E.innerHTML=this.settings.contentItemRight;A.appendChild(E)}if(f)p.appendChild(A);if(l&&(y!=this.items.length-1)){var F=document.createElement('td');var G=document.createElement('div');G.className=this.settings.cssItemBetween;G.style.cursor='default';G.innerHTML=this.settings.contentItemBetween;F.appendChild(G);if(f){var A=document.createElement('tr');A.appendChild(F);p.appendChild(A)}else w.appendChild(F)}}if(e){if(!g&&k)w.appendChild(u);p.appendChild(w)}if(h){var H=document.createElement('tr');var I=document.createElement('td');I.colSpan=m;var J=document.createElement('div');J.className=this.settings.cssItemBottom;J.style.cursor='default';J.innerHTML=this.settings.contentItemBottom;I.appendChild(J);H.appendChild(I);p.appendChild(H)}o.appendChild(p);b.appendChild(o);this.setEvents(o);for(var i=0;i<this.subMenus.length;i++)this.subMenus[i].writeMenu()};b3rtMenu.prototype.setEvents=function(c){var d=this.settings.tableElementIdPrefix;c.onclick=function(a){var b=this.id.substr(d.length);window.b3rtMenus[b].getRootMenu().dontHide=true};if(this.getRootMenu().settings.autoHide){c.onmouseover=function(a){var b=this.id.substr(d.length);window.b3rtMenus[b].deactivateHide()};c.onmouseout=function(a){var b=this.id.substr(d.length);window.b3rtMenus[b].activateHide()}}};b3rtMenu.prototype.getRootMenu=function(){var a=this;while(!a.isRootMenu)a=a.parentMenu;return a};b3rtMenu.prototype.showMenu=function(c){if(this.isRootMenu)return;var d=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 e=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 f=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 g=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 h=document.getElementById(this.elementId);var i=document.getElementById(this.ownerItem.elementId);var j=null;if((typeof c)=='number'){var k=this.triggers[c];if(k&&(k.elementId!=''))j=document.getElementById(k.elementId)}var l=i;if(j)l=j;if(!h||!l)return;var m=e(l);m.x+=this.parentMenu.settings.shiftSubmenusHorizontal;m.y+=this.parentMenu.settings.shiftSubmenusVertical;var n=d(l);var o=d(h);if(k&&(k.overrideAlignment!='')){var p=k.overrideAlignment;if(p=='left')m.x-=o.width;else if(p=='center'){m.y+=n.height;if(n.width<o.width)m.x-=parseInt((o.width-n.width)/2);else m.x+=parseInt((n.width-o.width)/2)}else m.x+=n.width}else{var p=this.parentMenu.settings.alignSubmenus;if(this.parentMenu.settings.orientation=='vertical'){if(p=='left')m.x-=o.width;else m.x+=n.width}else{m.y+=n.height;if(p=='right'){if(o.width>n.width)m.x-=(o.width-n.width);else m.x+=(n.width-o.width)}else if(p!='left'){if(n.width<o.width)m.x-=parseInt((o.width-n.width)/2);else m.x+=parseInt((n.width-o.width)/2)}}}if(this.settings.preventOverflow){var q=f();var r=g();if((m.x+o.width)>(q.width+r.x))m.x=(q.width+r.x)-o.width;if(m.x<r.x)m.x=r.x;if((m.y+o.height)>(q.height+r.y))m.y=(q.height+r.y)-o.height;if(m.y<r.y)m.y=r.y}h.style.left=m.x+'px';h.style.top=m.y+'px';if(!this.isVisible){this.isVisible=true;this.getRootMenu().subMenusVisible++;h.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')};b3rtMenu.prototype.activateHide=function(){if(!this.isRootMenu){this.getRootMenu().activateHide();return}var a=this;this.hideTimer=window.setTimeout(function(){if(a){a.hideMenu();a=null}},this.settings.hideTime)};b3rtMenu.prototype.deactivateHide=function(){if(!this.isRootMenu){this.getRootMenu().deactivateHide();return}if(this.hideTimer){window.clearTimeout(this.hideTimer);this.hideTimer=null}};b3rtMenu.prototype.addEventHandler=function(a,b,c,d){var e=((typeof d)=='undefined'?false:d);if(a.addEventListener)a.addEventListener(b,c,e);else if(a.attachEvent)a.attachEvent('on'+b,c);else a['on'+b]=c};b3rtMenu.prototype.removeEventHandler=function(a,b,c,d){var e=((typeof d)=='undefined'?false:d);if(a.removeEventListener)a.removeEventListener(b,c,e);else if(a.detachEvent)a.detachEvent('on'+b,c);else a['on'+b]=null};