if (document.getElementById) {

var expand = {

init : function() {

this.util.configEvents();
this.util.addEvent(window, 'load', this.OnloadHideTheLists, false);
expand.counter = 1;
/* add event listeners for dashboard */
if (document.getElementById('nestedLists')) {
this.nestedLists = document.getElementById('nestedLists');
this.util.addEvent(this.nestedLists, 'click', this.toggleList, false);
}
},

OnloadHideTheLists : function() {
expand.innerLists = expand.util.getElementsByClassName('innerList');
for(var i = 0;i<expand.innerLists.length;i++) {
	expand.innerLists[i].style.position = 'absolute';
	expand.innerLists[i].style.left = '-10000px';
	expand.innerLists[i].style.top = '16px';
	expand.innerLists[i].style.width = '170px';
	}
},

toggleList : function(evt) {
if (expand.counter !== 1) {return;}

var listItem = expand.util.findTarget(evt, 'li', this);
if (listItem.className === 'topLevelLi' || listItem.className === '') {return;}
expand.theInnerListItem=listItem.getElementsByTagName('ul')[0];
for(var i = 0;i<expand.innerLists.length;i++) {
	expand.innerLists[i].parentNode.className = 'topLevelLiClosed';
	expand.innerLists[i].parentNode.style.marginBottom = '0';
	expand.innerLists[i].parentNode.getElementsByTagName('ul')[0].style.left= "-10000px";
	}

if (listItem.className === 'topLevelLiClosed') {
	expand.openTheMenuSlowly();
	}
else {return;}

},

openTheMenuSlowly : function() {
var theInnerListItemsHeight = expand.theInnerListItem.offsetHeight;
//alert(theInnerListItemsHeight);
expand.theIncrement = theInnerListItemsHeight/10;
expand.theTimer = setInterval('expand.incrementTheMenu()', 40);
},

incrementTheMenu : function() {

if(expand.counter<11) {
var theHeight = expand.theIncrement*expand.counter;
var num = theHeight + 'px';
	expand.theInnerListItem.parentNode.style.marginBottom = num;
       expand.counter += 1;
}
else {
expand.theInnerListItem.parentNode.className = 'topLevelLi';
expand.theInnerListItem.style.left = '0';
clearInterval(expand.theTimer);
expand.counter = 1;

}

},


util : {

    configEvents : function() {
      if (document.addEventListener) {
        this.addEvent = function(el, type, func, capture) { el.addEventListener(type, func, capture); };
        this.stopBubble = function(evt) { evt.stopPropagation(); };
        this.stopDefault = function(evt) { evt.preventDefault(); };
        this.findTarget = function(evt, targetNode, container) {
         var currentNode = evt.target;
         while (currentNode && currentNode !== container) {
          if (currentNode.nodeName.toLowerCase() === targetNode) { return currentNode; break; }
          else { currentNode = currentNode.parentNode; }
         };
         return false;
        };
      }
      else if (document.attachEvent) {
       this.addEvent = function(el, type, func) { el["e" + type + func] = func; el[type + func] = function() { el["e" + type + func] (window.event); }; el.attachEvent("on" + type, el[type + func]); };
       this.stopBubble = function(evt) { evt.cancelBubble = true; };
       this.stopDefault = function(evt) { evt.returnValue = false; };
       this.findTarget = function(evt, targetNode, container) { var currentNode = evt.srcElement; 
        while (currentNode && currentNode !== container) {
         if (currentNode.nodeName.toLowerCase() === targetNode) { return currentNode; break; }
         else { currentNode = currentNode.parentNode; }
        };
        return false;
       };
      }
    },
    
       /*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/	
getElementsByClassName : function (className, tag, elm) {
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
}
  
  }

};
	
expand.init();
}