﻿$(document).ready(function() {
	Andies.ExpandableList.init();
});

Andies = new Object();
Andies.ExpandableList = function() {

    // private functions
    function toggleVisibility(elem)
    {
		if ("none" == elem.css("display"))
		{
			elem.show();
			return true;
		}
		else
		{
			elem.hide();
			return false;
		}
    }

    function setExpandableListItemClass(expanded, listItemElem)
    {
		if (expanded)
		{
			$(listItemElem).removeClass('collapsed');
			$(listItemElem).addClass('expanded');
		}
		else
		{
			$(listItemElem).removeClass('expanded');
			$(listItemElem).addClass('collapsed');
		}		
    }

	function replaceTextWithSpan(listItemElem) {
		var textNode = listItemElem.firstChild;
		var text = textNode.textContent;
		listItemElem.removeChild(textNode);

		var span = document.createElement("span");
		span.textContent = textNode.textContent;
		return span;
	}
 
	function processListItems(listItems) {
		for (var i=0; i<listItems.length; i++)
		{
			//var listItemElem = Ext.get(listItems[i]);
			var listItemElem = listItems[i];
			var textNode = listItemElem.firstChild;
			var text = textNode.textContent;

			var subMenuEl = $("ul:first", listItemElem);
				
			if (1 == subMenuEl.length)
			{
				//setExpandableListItemClass(false, listItemElem);
				/*
				// Note: For the moment, if no javascript enabled, all submenus are 
				// displayed.  So, if in here, hide them:
				toggleVisibility(subMenuEl);
				*/
				
				var iconElArr = $(listItemElem).children("a:first");
				if (1 == iconElArr.length) {
					iconElArr.bind("click", function() {
							var menuEl = $("~ ul", this);
							var expanded = toggleVisibility(menuEl);
							setExpandableListItemClass(expanded, menuEl.parent());
						}
					);
				}
				
				var subListItems = $("li", subMenuEl);
				processListItems(subListItems);
			}
		}	
	}
 
    // public space
    return {
        // public properties, e.g. strings to translate
        init : function() {
			var rootListItems = $(".nav > li");
			processListItems(rootListItems);
			
			// just ignore IE6. I refuse to make this work on that piece of crap browser
			if (!($.browser.msie && parseInt(jQuery.browser.version) <= 6)) 
			{
				var allListItems = $(".nav li");
				allListItems.hover(
				  function () {		
					$(this).addClass("hover"); 
					$(this).children().addClass("hover"); 
				  },
				  function () {
					$(this).removeClass("hover"); 
					$(this).children().removeClass("hover"); 
				  }
				);
			}
        }
    };
}();
