function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			if (oldonload) oldonload();
			func();
		}
	}
}

function tabWrap() {
	var navdiv = document.getElementById('mainnav');
	var navkids = navdiv.childNodes;
	var navlist;
	var navtabs;
	var navlinks=new Array();
	var k; var t; var a=0;
	var navwidth=0;
	for (k=0; k<navkids.length; k++) {
		if (navkids[k].nodeName.toLowerCase()=='ul') {
			navlist=navkids[k];
			navtabs=navlist.childNodes;
			for (t=0; t<navtabs.length; t++) {
				if (navtabs[t].nodeName.toLowerCase()=='li') {
					navlinks[a]=navtabs[t].childNodes[0];
					navwidth+=navlinks[a].offsetWidth;
					a++;
				}
			}
		}
	}
	if(navwidth>690) {
		for (a=0; a<navlinks.length; a++) {
			preWidth=navlinks[a].offsetWidth;
			navlinks[a].innerHTML=navlinks[a].innerHTML.replace(' ','<br/>');
			postWidth=navlinks[a].offsetWidth;
			navlinks[a].style.lineHeight='1em';
			navlinks[a].style.textAlign='center';
			if (preWidth>postWidth) {
				navlinks[a].style.height='2.2em';
				navlinks[a].style.padding='0 4px';
			}
			else {
				navlinks[a].style.height='1em';
				navlinks[a].style.padding='.6em 4px';
			}
		}
		navdiv.style.height='2.9em';
	}
}
addLoadEvent(tabWrap);

function sortMenu(whichMenu, hasDetails) {
//This function rearranges the side menu items by "Rank in Menus" data field from the CMS.
//If JavaScript is disabled, the menu will have all the items but not in the intended order.

	//Set variables based on which menu. The first three variables (array, current and children)
	//are set by Collage code on the page itself before this function is called.
	var menuArray = new Array();
	var menuHasCurrent;
	var menuHasChildren;
	var menuDetails = new Array();
	var menuDiv;
	if (whichMenu=='side') {
		menuArray = sidemenu;
		menuHasCurrent = sideHasCurrent;
		menuHasChildren = sideHasChildren;
		menuDiv = document.getElementById('sidebarmenu');
	}
	if (whichMenu=='index') {
		menuArray = indexmenu;
		menuHasCurrent = indexHasCurrent;
		menuHasChildren = indexHasChildren;
		menuDiv = document.getElementById('indexmenu');
	}
	if (whichMenu=='snapshot') {
		menuArray = sidemenu;
		menuHasCurrent = sideHasCurrent;
		menuHasChildren = sideHasChildren;
		menuDiv = document.getElementById('indexmenu_snapshot');
	}

	//Do nothing further if the menu doesn't need to be sorted
	if (!menuHasCurrent || !menuHasChildren) return;

	//Get the menu's UL element and clear its contents
	var menuUL;
	for (var d=0; d<menuDiv.childNodes.length; d++) {
		if (menuDiv.childNodes[d].nodeType==1) {
			if (menuDiv.childNodes[d].nodeName.toLowerCase()=='ul') menuUL=menuDiv.childNodes[d];
		}
	}
	while (menuUL.childNodes.length>=1) menuUL.removeChild(menuUL.firstChild);

	var menuTxt; var menuLink; var menuItem;
	var menuBold; var menuDesc; var menuBr;

	if (whichMenu=='side') {
	//Create and add the first item to the list for the section home page
		menuTxt=document.createTextNode(sidemenutop[1]);
		menuLink=document.createElement('a');
		menuLink.setAttribute('href',sidemenutop[0]);
		menuLink.appendChild(menuTxt);
		menuItem=document.createElement('li');
		menuItem.className='sectionhome';
		menuItem.appendChild(menuLink);
		menuUL.appendChild(menuItem);
	}
	
	// Sort the menu array by Rank in Menus (the first item in each sub-array)
	function sortByRank(a,b){return((a[0]<b[0])?-1:((a[0]>b[0])?1:0));}
	menuArray.sort(sortByRank);
	
	//Go through the sorted array and add link elements to sideul
	for (var m=0; m<menuArray.length; m++) {
		menuTxt=document.createTextNode(menuArray[m][2]);
		menuLink=document.createElement('a');
		menuLink.setAttribute('href',menuArray[m][1]);
		if (hasDetails) {
			menuBold=document.createElement('strong');
			menuBold.appendChild(menuTxt);
			menuLink.appendChild(menuBold);
		}
		else {
			menuLink.appendChild(menuTxt);
		}
		menuItem = document.createElement('li');
		menuItem.appendChild(menuLink);
		if (hasDetails) {
			if (menuArray[m][3]!=' ') {
				menuBr=document.createElement('br');
				menuDesc=document.createTextNode(menuArray[m][3]);
				menuItem.appendChild(menuBr);
				menuItem.appendChild(menuDesc);
			}
		}
		menuUL.appendChild(menuItem);
	}

}

function grabMenuSnaphot() {
	var menuDiv = document.getElementById('sidebarmenu');
	document.write('<div id="indexmenu_snapshot">' + menuDiv.innerHTML + '</div>');
	sortMenu('snapshot');
}
