var menu = new Object();

$(document).ready(function() {
	menu.hideAll(false);

	// Add click event handler to top level menu items
	$('.menu > li > a').click(function(event) {
		var menuItem = $(this).parent();
		
		// Only do anything if menu item contains a sub menu
		if (menuItem.find('ul').length) {
			this.blur();
			event.preventDefault();
			
			// Don't do anything if selected menu item is already visible
			if (menuItem.find('ul').is(':hidden'))
				menu.show(menuItem);
		}
	});
	
	// Open up current menu item on page load()
	var c = getURLParam('c');
	if (c.length) {
		var menuitem = $('.menu ul a[href*="{c}"]'.supplant({ c: c })).parents('.menu > li');
		if (menuitem.length)
			menu.show(menuitem, false);
	}
});

menu.hideAll = function(slide) {
	var slide = slide == undefined ? true : slide;		// default parameter to true
	
	if (slide)
		$('.menu li ul').slideUp();
	else
		$('.menu li ul').hide();
};

menu.show = function(menuItem, slide) {
	var slide = slide == undefined ? true : slide;		// default parameter to true
	
	menu.hideAll();
	
	if (slide)
		menuItem.find('ul').slideToggle();
	else
		menuItem.find('ul').show();
};


function getURLParam(name) {
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null )
		return "";
	else
		return results[1];
};


// Supplant function allows for variable substitution inside a string
// http://javascript.crockford.com/remedial.html
String.prototype.supplant = function (o) {
    return this.replace(/{([^{}]*)}/g,
        function (a, b) {
            var r = o[b];
            return typeof r === 'string' || typeof r === 'number' ? r : a;
        }
    );
};
