/* 
JQuery Accordion menu.
by: Buddhi De Silva

Required: JQuery 1.3.2 or above

* Works in multiple levels without requiring to use IDs and classes for each level.
* Use the class AccordionMenu in the main menu and all the other submenus will work smoothly without needing extra classes or IDs

Usage:

<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="accordion_menu.js" type="text/javascript"></script>

	<ul class="AccordionMenu"">
		<li><a href="#">M1</a>
			<ul>
				<li><a href="#">M1 SM 01</a>
					<ul>
						<li><a href="#">M1 S1 ITM 01</a></li>
						<li><a href="#">M1 S1 ITM 02</a></li>
					</ul>
				</li>
				<li><a href="#">M1 SM 02</a>
					<ul>
						<li><a href="#">M1 S2 ITM 01</a></li>
						<li><a href="#">M1 S2 ITM 02</a></li>
					</ul>
				</li>
			</ul>
		</li>
		<li><a href="#">M2</a>
			<ul>
				<li><a href="#">M2 SM 01</a>
					<ul>
						<li><a href="#">M2 S1 ITM 01</a></li>
						<li><a href="#">M2 S1 ITM 02</a></li>
					</ul>
				</li>
				<li><a href="#">M2 SM 02</a>
					<ul>
						<li><a href="#">M2 S2 ITM 01</a></li>
						<li><a href="#">M2 S2 ITM 02</a></li>
					</ul>
				</li>
			</ul>
	</ul>

*/

function initAccordionMenu(MenuClass, persistenceURL) {
	
	//Define the UL Class for Accordion Menu
	$('ul.' + MenuClass + ' ul').hide();
	$('ul.' + MenuClass + ' li:last-child').css('border', 'none');

	// sets the class expand to the "li a"s that has "ul"s
	$('label.inning_label').addClass('expand');
	
	var RecursivElement = $('ul.' + MenuClass + ' li#' + persistenceURL);
	RecursivElement.addClass('current_item');
	
	var safety_counter = 0; // in case gonna be pushed to infinite loop due to bad config or html scrambling
	while(persistenceURL && RecursivElement.closest('ul').attr('class') != MenuClass && (safety_counter < 200 ))
	{
		RecursivElement = RecursivElement.closest('ul');
		RecursivElement.show();
		RecursivElement.prev().removeClass('expand');
		RecursivElement.prev().addClass('collapse');
		
		RecursivElement = RecursivElement.closest('li')
		
		safety_counter++;
	}


	$('ul.' + MenuClass + ' li label').click(
		function() {
			var checkElement = $(this).next();
			var parent = this.parentNode.parentNode.id;

			// Closes the same level menu that's been opened
			if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
				var SiblingElements = $(this).closest('ul').find('li > ul:visible');
				$(SiblingElements).slideUp('normal');
				$(SiblingElements).prev().removeClass('collapse');
				$(SiblingElements).prev().addClass('expand');

				checkElement.slideDown('normal');
				checkElement.prev().removeClass('expand');
				checkElement.prev().addClass('collapse');
				
				RecursivElementID = checkElement.find('li:first').attr('id');
				
				return false;
			}
			// Closes itself
			if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
				checkElement.slideUp('normal');
				checkElement.prev().removeClass('collapse');
				checkElement.prev().addClass('expand')
				return false;
			}

		}
	);
}
