/*
  accordion_menu.js
  created by jonas downey (jbdowney@aps.anl.gov)
  march 2008
  updated 11/20/2008
  	- added tab close capability
  	- enabled tab-as-link (<submenu url="blah.html">) functionality
  	- added URL parsing if initTab and initButton are null
  	- eliminated need for <ul id="sidebar_menu"></ul> markup in HTML document
  
*/
/*	sidebarMenu parameters:
	url (required string)
		- location of the XML file to parse (root-relative path)
	initTab (string, or null)
		- name of a tab to display when the page is loaded (must match a submenu name in the XML file.)
	initButton (string, or null)
		- name of a link to display as active when the page is loaded. (must match an <item><name> in the XML file.)
*/

function sidebarMenu(url,initTab,initButton){
	$.getJSON(window.location.protocol + "//" + window.location.host + "/js/xml2json_proxy2.php?filepath="+url+"&callback=?",
        function(data){
		  	$('#leftMenu').append('<ul id="sidebar_menu"></ul>');
	
			$.each(data.menu.submenus, function(i,submenu){
				if(submenu.url)
					$('#sidebar_menu').append('<li id=\"pri'+i+'\"><a href=\"'+submenu.url+'" class="prilink">'+submenu.name+'</a>\n');
				//otherwise set the menu tab link to # and activate the slide transition
				else
					$('#sidebar_menu').append('<li id=\"pri'+i+'\"><a href=\"#\" class="prilink slide">'+submenu.name+'</a>\n');        	
			//set up the submenu buttons
			$('#sidebar_menu #pri'+i).append('<ul>\n');
			$.each(submenu.items, function(j, button){
				$('#pri'+i+" ul").append('<li id=\"pri'+i+'_tab'+j+'\"><a href=\"'+button.url+'" class="sublink">'+button.name+"</a></li>\n");
			});
			$('#pri'+i).append('</ul></li>\n');
			
			
			});
			$('#leftMenu').append('</ul>');
		buildMenu();
		//if a tab is specified, open it when the page loads
		initMenu(initTab,initButton);
	});
	
}

function buildMenu(){
	//toggle (slideUp or slideDown) any tabs with the .slide class
    $('#sidebar_menu .slide').click(
			function(){
				var next = $(this).next();
				if((next.is('ul')) && (next.is(':visible'))){
					$(next).slideUp('fast');
					return false;
				}
				if((next.is('ul')) && (!next.is(':visible'))){
					$('#sidebar_menu ul:visible').slideUp('fast');
					next.slideDown('fast');
					return false;
				}
   	});
}

/* initMenu:
   takes two optional parameters: initTab and initButton
   if the parameters are not specified, the function parses
   the document's url and looks for matches.
*/
function initMenu(initTab, initButton){
	//grab current URL
	loc=window.location.toString();
	//split URL into array
	items = loc.split("/");
	for (i=3;i<(items.length-1);i++){
		//capitalize and remove underscores from url items
		items[i]=makeCaps(items[i]).replace('_',' ');
	}
	
	tabFound = false;
	tabID = '';
	//LOOK FOR AN ACTIVE TAB
	$('#sidebar_menu .prilink').each(function(){
		//if initTab was not specified, search for an active tab based on the url
		if(initTab == '' && tabFound == false){
			for (i=3;i<(items.length-1);i++){
				//a tab is found
				if($(this).text() == items[i]){
					$(this).next().show();
					tabFound=true;
					tabID=$(this).parent().attr('id');
				}
			}
		}
		//initTab was specified, so just show it
		else if($(this).text() == initTab){
			$(this).next().show();
			tabID=$(this).parent().attr('id');
		}
	});
	
	buttonFound = false;
	//LOOK FOR AN ACTIVE BUTTON
	$('#'+tabID+' .sublink').each(function(){
		//if initButton was not specified, search for an active button based on the url
		if(initButton == '' && buttonFound == false){
			for (i=3;i<(items.length-1);i++){
				//a button is found
				if($(this).text() == items[i]){
					$(this).css({backgroundColor:"#ddd",textDecoration:"underline"});
					buttonFound=true;
				}
			}
		}
		//initButton was specified, so just show it
		else if($(this).text() == initButton)
			$(this).css({backgroundColor:"#ddd",textDecoration:"underline"});
	});
	$('#sidebar_menu ul li:last').css({border:"none"});
}