(function(){
	var 
		foldingMenu = window.foldingMenu = function( eventype,method,elems ) {
			method = method.split("|");
			elems = elems.split(",");
			eTree = method[1].split(",");
			switch (method[0]) {
				case "parent":
					return new foldingMenu.initp( eventype,elems,eTree );
					break;
				case "sibling":
					return new foldingMenu.inits( eventype,elems,eTree );
					break;
				case "direct":
					return new foldingMenu.initd( eventype,elems,eTree );
					break;
				default:
					alert("It's borked.");
			}
		};

	foldingMenu = foldingMenu.prototype = {
		initp: function( eventype,elems,eTree ) {
			var actioner = " " + eTree[0];
			var submenu = " " + eTree[1];
			for (i=0;i<elems.length;i++) {
				$(elems[i] + actioner + submenu).hide();
				if (eventype != "hover") {
					$(elems[i] + " .open").each(function() {
						var tag_type = this.tagName;
						if (this.tag_type != "A") { $(this).show(); }
					});
				} else {
					$(elems[i] + " .open").removeClass("open");
				}
				$(elems[i] + " .open").parents(submenu).show();
				$(elems[i] + actioner + submenu + ":visible").parent().children("a").addClass("sub_parent expanded");
				$(elems[i] + actioner + submenu + ":hidden").parent().children("a").addClass("sub_parent");
				switch (eventype) {
					case "click":
						$(elems[i] + actioner + submenu).parent().children("a").click(function() {
							$(this).next(submenu).toggle("fast");
							$(this).toggleClass("expanded").blur();
							return false;
						});
						break;
					case "hover":
						$(elems[i] + actioner + submenu).parent().hover(function() {
							onLink = 1;
							curSub = $(submenu).index($(this).children(submenu));
							$(this).siblings().removeClass("curHover");
							$(this).addClass("curHover");
							$(this).children(submenu).show("fast",	function(e){
																		if(onLink == 0) {
																			$(submenu + ":eq(" + curSub + ")").hide();
																		}
																		$(this).parent().siblings(":not(.curHover)").children(submenu).hide();
																	});
							$(this).children("a").toggleClass("expanded");
						}, function() {
							onLink = 0;
							$(this).removeClass("curHover");
							$(this).children(submenu).hide();
							$(this).children("a").toggleClass("expanded");
						});
						break;
				}
			}
		},

		inits: function( eventype,elems,eTree ) {
			var actioner = " " + eTree[0];
			var submenu = " " + eTree[1];
			for (i=0;i<elems.length;i++) {
				$(elems[i] + submenu).hide();
				$(elems[i] + " .open").each(function() {
					var tag_type = this.tagName;
					if (this.tag_type != "A") { $(this).show(); }
				});
				$(elems[i] + " .open").parents(submenu).show();
				$(elems[i] + submenu + ":visible").prev(actioner).children("a").addClass("sub_parent expanded");
				$(elems[i] + submenu).prev(actioner).children("a").addClass("sub_parent");
				switch (eventype) {
					case "click":
						$(elems[i] + submenu).prev(actioner).click(function() {
							$(this).next(submenu).toggle("fast");
							$(this).children("a").toggleClass("expanded").blur();
							return false;
						});
						break;
					case "hover":
						$(elems[i] + submenu).prev(actioner).hover(function() {
							$(this).next(submenu).show("fast");
							$(this).children("a").toggleClass("expanded");
						}, function() {
							$(this).next(submenu).hide();
							$(this).children("a").toggleClass("expanded");
						});
						break;
				}
			}
		},
		
		initd: function( eventype,elems,eTree ) {
			var expander = " " + eTree[0];
			var submenu = " " + eTree[1];
			
		}
	}
})();

$(document).ready(function() {
	                                     
	foldingMenu("click","parent|li,ul","#jquerymenu_user1");
	foldingMenu("hover","parent|li,ul","#jquerymenu_top");

});