// JavaScript Document

var toggleMenu = {

	init : function(sContainerClass, sHiddenClass) {

		if (!document.getElementById || !document.createTextNode) {return;} // Check for DOM support

		var arrMenus = this.getElementsByClassName(document, 'ul', sContainerClass);

		var arrSubMenus, oSubMenu, oLink;

		for (var i = 0; i < arrMenus.length; i++) {

			arrSubMenus = arrMenus[i].getElementsByTagName('ul');

			for (var j = 0; j < arrSubMenus.length; j++) {

				oSubMenu = arrSubMenus[j];

				oLink = oSubMenu.parentNode.getElementsByTagName('a')[0];

				oLink.onclick = function(){toggleMenu.closeOpen(this.parentNode.getElementsByTagName('ul')[0], sHiddenClass, sContainerClass);}

				this.toggle(oSubMenu, sHiddenClass);

			}

		}

	},

	closeOpen : function(el, sHiddenClass, sContainerClass) {

		var arrMenus = this.getElementsByClassName(document, 'ul', sContainerClass);

		var arrSubMenus, oSubMenu, oLink;

		for (var i = 0; i < arrMenus.length; i++) {

			arrSubMenus = arrMenus[i].getElementsByTagName('ul');

			for (var j = 0; j < arrSubMenus.length; j++) {

				oSubMenu = arrSubMenus[j];

				if  (oSubMenu == el) this.toggle(oSubMenu, sHiddenClass);

				else this.closing (oSubMenu, sHiddenClass);

			}

		}			

	},

	closing : function(el, sHiddenClass) {

		var oRegExpC = new RegExp("(^|\\s)" + sHiddenClass + "(\\s|$)");

		el.className = (oRegExpC.test(el.className)) ? el.className : el.className + ' ' + sHiddenClass; // closes open elements

	 },

	toggle : function(el, sHiddenClass) {		

		var oRegExp = new RegExp("(^|\\s)" + sHiddenClass + "(\\s|$)");

		el.className = (oRegExp.test(el.className)) ? el.className.replace(oRegExp, '') : el.className + ' ' + sHiddenClass; // Add or remove the class name that hides the element

	},

/* addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html */

	addEvent : function(obj, type, fn) {

		if (obj.addEventListener)

			obj.addEventListener(type, fn, false);

		else if (obj.attachEvent) {

			obj["e"+type+fn] = fn;

			obj[type+fn] = function() {obj["e"+type+fn](window.event);}

			obj.attachEvent("on"+type, obj[type+fn]);

		}

	},

/*

Written by Jonathan Snook, http://www.snook.ca/jonathan

Add-ons by Robert Nyman, http://www.robertnyman.com

*/

	getElementsByClassName : function(oElm, strTagName, strClassName){

	    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);

	    var arrReturnElements = new Array();

	    strClassName = strClassName.replace(/\-/g, "\\-");

	    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");

	    var oElement;

	    for(var i=0; i<arrElements.length; i++){

	        oElement = arrElements[i];      

	        if(oRegExp.test(oElement.className)){

	            arrReturnElements.push(oElement);

	        }   

	    }

	    return (arrReturnElements)

	}

};

toggleMenu.addEvent(window, 'load', function(){toggleMenu.init('menu','hidden');});
