
var menuCHeadingUrl;

function MenuItem(){
	this.label=null;
	this.url=null;
	this.secure=false;
	this.nestedMenuItems=new Array();
}
MenuItem.prototype.add=function(label,url,secure){
	var mi=new MenuItem();
	mi.label=label;
	mi.url=url;
	mi.secure=(secure==null||secure==false?false:true);
	this.nestedMenuItems[this.nestedMenuItems.length]=mi;
	return mi;
}
MenuItem.prototype.getUrl=function(httpPrefix,httpsPrefix){
	return this.url==null 
		? 'javascript://void'
		: this.url.indexOf('://')>=0
			? this.url
			: this.secure==true
				? httpsPrefix+this.url
				: httpPrefix+this.url;
}

function ExpandableMenu(varName,menuHeading,menuItems){
	this.varName=varName;
	this.menuHeading=menuHeading;
	this.menuItems=menuItems;
	this.totalTopLevelMenuItems=0;
	this.httpPrefix=null;
	this.httpsPrefix=null;
	for(var i=0;i<this.menuItems.length;++i){
		this.totalTopLevelMenuItems+=this.menuItems[i].nestedMenuItems.length;
	}
}
ExpandableMenu.prototype.setUrlPrefixes=function(httpPrefix,httpsPrefix){this.httpPrefix=httpPrefix;this.httpsPrefix=httpsPrefix;}
ExpandableMenu.prototype.writeMenu=function(fixedMenuIdAndClass,expandableMenuIdAndClass,fixedMenuActiveOption,expandableMenuActiveOption){
	var mi=null;
	var fixedMenu='<dl id="'+fixedMenuIdAndClass+'" class="'+fixedMenuIdAndClass+' clearit"><dt><a href="'+menuCHeadingUrl+'">'+this.menuHeading+'</a></dt>';
	for(var i=0;i<this.menuItems.length;++i){
		var menuItem=this.menuItems[i];
		for(var j=0;j<menuItem.nestedMenuItems.length;++j){
			mi=menuItem.nestedMenuItems[j];
			fixedMenu+='\n<dd><a';
			var clazz='';
			var nestedMenuExpanded=false;
			var disableActiveMenuC=true;
			if(mi.label==fixedMenuActiveOption){
				if(mi.nestedMenuItems.length>0){
					nestedMenuExpanded=true;
					if(expandableMenuActiveOption==null||expandableMenuActiveOption.length==0){
						clazz+='active';
					}
					clazz+=' expand';
				}else{
					clazz+='active';
					if(mi.url!=location.pathname){
						disableActiveMenuC=false;
					}
				}
			}else if(mi.nestedMenuItems.length>0){
				clazz+='collapse ';
			}
			if(clazz.length>0){
				fixedMenu+=' class="'+clazz+'"';
			}
			if(mi.url==null||mi.url.length==0||(clazz.indexOf('active')>=0&&disableActiveMenuC)||clazz.indexOf('collapse')>=0){
				fixedMenu+=' href="javascript://void"';
				if(mi.nestedMenuItems.length>0){
					fixedMenu+=' onclick="javascript:'+this.varName+'.toggleNestedMenu(this,\''+expandableMenuIdAndClass+'_'+j+'\');"';
				}
			}else{
				fixedMenu+=' href="'+mi.getUrl(this.httpPrefix,this.httpsPrefix)+'"';
			}
			fixedMenu+='>'+mi.label+'</a>';
			if(mi.nestedMenuItems.length>0){
				fixedMenu+='\n<ul id="'+expandableMenuIdAndClass+'_'+j+'" class="'+expandableMenuIdAndClass;
				if(nestedMenuExpanded){
					fixedMenu+=' expand';
				}
				fixedMenu+='">';
				for(var k=0;k<mi.nestedMenuItems.length;++k){
					fixedMenu+='\n<li><a';
					if(mi.nestedMenuItems[k].label==expandableMenuActiveOption){
						fixedMenu+=' class="active"';
					}
					fixedMenu+=' href="'+mi.nestedMenuItems[k].getUrl(this.httpPrefix,this.httpsPrefix)+'" >'+mi.nestedMenuItems[k].label+'</a></li>';
				}
				fixedMenu+='\n</ul>';
			}
			fixedMenu+='</dd>';
		}
	}
	fixedMenu+='</dl>';
	document.write(fixedMenu);
}
ExpandableMenu.prototype.toggleNestedMenu=function(node,id){
	var menu=document.getElementById(id);
	var menuC=document.getElementById('menu-c');
	
	// closing open menus first
	allanchors=menuC.getElementsByTagName('a');
	for(var i=0;i<allanchors.length;++i){
		if(allanchors[i].className.indexOf('expand')>=0){
			allanchors[i].className=allanchors[i].className.replace(/expand/ig,'collapse');
		}
	}
	alldivs=menuC.getElementsByTagName('div');
	for(var i=0;i<alldivs.length;++i){
		if(alldivs[i].className.indexOf('menu-d')>=0){
			//alldivs[i].className=alldivs[i].className.replace(/expanded/ig,'');
			alldivs[i].style.display='none';
		}
	}

	//detect browser type - to fix safari bug
	var detect = navigator.userAgent.toLowerCase();
	
	// continuing with standard logic	
	if (detect.indexOf('safari') + 1) {
		var display = menu.style.display;
	}
	else { 
		var display=(menu.currentStyle?menu.currentStyle.display:document.defaultView.getComputedStyle(menu,null).display);
	}
	
	if(display=='none'){
		menu.style.display='block';
		node.className=node.className.replace(/collapse/ig,'expand');
	}else{
		anchors=menu.getElementsByTagName('a');
		for(var i=0;i<anchors.length;++i){
			if(anchors[i].className.indexOf('active')>=0){
				return;
			}
		}
		menu.style.display='none';
		node.className=node.className.replace(/expand/ig,'collapse');
	}

}

function TabbedMenu(varName,menuItems){
	this.varName=varName;
	this.menuItems=menuItems;
	this.totalTopLevelMenuItems=0;
	this.httpPrefix=null;
	this.httpsPrefix=null;
	for(var i=0;i<this.menuItems.length;++i){
		this.totalTopLevelMenuItems+=this.menuItems[i].nestedMenuItems.length;
	}
	this.mouseOverCounter=new Array();
	this.popup=null;
}
TabbedMenu.prototype.millisecondTimein=300;
TabbedMenu.prototype.millisecondTimeout=700;
TabbedMenu.prototype.popupVarName=function(){return this.varName;}
TabbedMenu.prototype.setUrlPrefixes=function(httpPrefix,httpsPrefix){this.httpPrefix=httpPrefix;this.httpsPrefix=httpsPrefix;}
TabbedMenu.prototype.writeMenu=function(fixedMenuClass,popupMenuClass,fixedMenuActiveOption,popupMenuActiveOption){
	var mi=null;
	var fixedMenu='\n<table id="'+fixedMenuClass+'" cellspacing="0">\n<tr>';
	for(var i=0;i<this.menuItems.length;++i){
		var menuItem=this.menuItems[i];
		for(var j=0;j<menuItem.nestedMenuItems.length;++j){
			mi=menuItem.nestedMenuItems[j];
			fixedMenu+='\n<td ';

			if(mi.label.length <= 3)
			{
				fixedMenu+=' class="char3"';
			}
			else if(mi.label.length > 3 && mi.label.length <= 5)
			{
				fixedMenu+=' class="char5"';
			}
			fixedMenu+='><a id="m'+i+j+'" href="'+mi.getUrl(this.httpPrefix,this.httpsPrefix)+'"';
			var clazz='m'+i;
			if(mi.label==fixedMenuActiveOption){
				clazz+=' active';
			}
			else
			{
				var eventParams="'m"+i+j+"','"+popupMenuClass+"-"+i+j+"'";
				fixedMenu+=' onmouseout="javascript:'+this.varName+'.mouseOut('+eventParams+');" onmouseover="javascript:'+this.varName+'.mouseOver('+eventParams+');"';
			}
			fixedMenu+='class="'+clazz+'"';
			fixedMenu+='>'+mi.label+'</a></td>';
		}
	}
	fixedMenu+='\n</tr></table>';
	for(var i=0;i<this.menuItems.length;++i){
		var menuItem=this.menuItems[i];
		for(var j=0;j<menuItem.nestedMenuItems.length;++j){
			mi=menuItem.nestedMenuItems[j];
			fixedMenu+='\n<div id="'+popupMenuClass+'-'+i+j+'"';
			fixedMenu+=' class="'+popupMenuClass;
			if(mi.label==fixedMenuActiveOption&&mi.nestedMenuItems.length>0){
				fixedMenu+=' active"';
			}else{
				var eventParams="'m"+i+j+"','"+popupMenuClass+"-"+i+j+"'";
				fixedMenu+='" onmouseout="javascript:'+this.varName+'.mouseOut('+eventParams+');" onmouseover="javascript:'+this.varName+'.mouseOver('+eventParams+');"';
			}
			fixedMenu+='>';
			for(var k=0;k<mi.nestedMenuItems.length;++k){
				fixedMenu+='\n<a';
				if(mi.nestedMenuItems[k].label==popupMenuActiveOption){
					fixedMenu+=' class="active"';
					menuCHeadingUrl = mi.nestedMenuItems[k].getUrl(this.httpPrefix,this.httpsPrefix);
				}
				fixedMenu+=' href="'+mi.nestedMenuItems[k].getUrl(this.httpPrefix,this.httpsPrefix)+'" >'+mi.nestedMenuItems[k].label+'</a>';
			}
			fixedMenu+='\n</div>';
		}
	}
	document.write(fixedMenu);
	document.getElementById(fixedMenuClass).tableLayout='fixed';
}
TabbedMenu.prototype.mouseOver=function(invokingNodeId,popupMenuId){
	if(this.mouseOverCounter[popupMenuId]==null){
		this.mouseOverCounter[popupMenuId]=0;
	}
	this.mouseOverCounter[popupMenuId]++;
	if(this.popup==null){
		this.showPopup(invokingNodeId,popupMenuId);
	}else{
		var show=this.varName+'.showPopup("'+invokingNodeId+'","'+popupMenuId+'");';
		window.setTimeout(show,this.millisecondTimein);
	}
}
TabbedMenu.prototype.mouseOut=function(invokingNodeId,popupMenuId){
	if(this.mouseOverCounter[popupMenuId]==null){
		this.mouseOverCounter[popupMenuId]=0;
	}else{
		this.mouseOverCounter[popupMenuId]--;
		var hide=this.varName+'.hidePopup("'+popupMenuId+'");';
		window.setTimeout(hide,this.millisecondTimeout);
	}
}
TabbedMenu.prototype.showPopup=function(invokingNodeId,popupMenuId){
	if(this.mouseOverCounter[popupMenuId]>0){
		if(this.popup==null||this.popup.id!=popupMenuId){
			if(this.popup!=null){
				this.killPopup();
			}
			this.popup=document.getElementById(popupMenuId);
			this.popup.contentSize=this.popup.innerHTML.replace(/[\s\r\n\t ]*/ig,'').length;
			if(this.popup.contentSize>0){
				this.popup.style.display='block';
			}
			this.popup.invokingNode=document.getElementById(invokingNodeId);
			this.popup.invokingNode.className+=' hover';
		}
	}
}
TabbedMenu.prototype.hidePopup=function(popupMenuId){
	if(this.mouseOverCounter[popupMenuId]==0){
		if(this.popup!=null&&this.popup.id==popupMenuId){
			this.killPopup();
		}
	}
}
TabbedMenu.prototype.killPopup=function(){
	this.mouseOverCounter[this.popup.id]=0;
	this.popup.style.display='none';
	this.popup.invokingNode.className=this.popup.invokingNode.className.replace(/\ hover/ig,'');
	this.popup=null;
}
