// Okay, lets begin.
// Planning this has caused me such a headache.
	$(function(){
			   $("#sidebar h3").remove();
		$(".open").css({"background-position": "3px -19px"});
		$(".closed").css({"background-position":"3px 1px"});
	
		var windowLocation = window.location+"";
		if(/#/.test(windowLocation)){ // might ditch this check...
		// remove hash from page url
			windowLocation = windowLocation.replace("#","");
			window.location = windowLocation;
			}
		if(/\?/.test(windowLocation)==false){
				$('.submenu ul').css("display","block");
				$('a.hasSubmenu').removeClass("closed");
		}else{
			if($.cookie("location")!=null){
				var pageLocation = $.cookie("location");
				if($.cookie("parentMenu")!=null){ var parentMenu = $.cookie("parentMenu");}else{var parentMenu = null;};
				$.cookie("location",null);
				$.cookie("parentMenu",null);
				
				doMenu(pageLocation,parentMenu);
				spillCrumbs(pageLocation);
			}else{
				var pageLocation = window.location+""; // the +"" makes window.location work as a string
				var parentMenu = null; // better than passing "undefined" to the doMenu() function
				$.cookie("location",null);
				$.cookie("parentMenu",null);
				
				doMenu(pageLocation,parentMenu);
				spillCrumbs(pageLocation);
			}
				$("a.hasSubmenu").click(function(e){
					e.preventDefault;
					if(/open/.test($(this).attr("class"))==true){
						$(this).removeClass("open");
						$(this).addClass("closed");
						$(".closed").css({"background-position":"3px 1px"});
					}else{
						if(/closed/.test($(this).attr("class"))==true){
							$(this).addClass("open");
							$(this).removeClass("closed");
							$(".open").css({"background-position": "3px -19px"});
						}else{
							if($(this).next("ul").css("display")=="block"){
								$(this).addClass("closed");	
							}
						}
					}
					
				//	$(this).toggleClass("closed");
					$(this).parent().children("ul").slideToggle("fast",addBorder());
				});
				
					$("a.hasSubmenu").next("ul").children().children("a").click(function(e){
						e.preventDefault;
						$.cookie("location",$(this).attr("href"));
						$.cookie("parentMenu",$(this).parent().parent().prev(".hasSubmenu").text());
					});
		}
	});
// function to process the menu
	function doMenu(l,p){
		var pageLocation = l;
			if(pageLocation==null)pageLocation = "#";
		var parentMenu = p;
		var locationAsArray = pageLocation.split("?");
		var locationAsArray = locationAsArray[1].split("&");
		
		if(/&file=/.test(pageLocation)){ // if the &file= argument is specified...
			var pageLocation = locationAsArray[1]; // should output "file=XX"
		}else{
			var pageLocation = locationAsArray[0]; // should output "id=XX"
			return false;
		};
	// and now onto the fun of traversion..
	if($("a.hasSubmenu").next("ul").css("display")=="none"){
			alert($(this).attr("class"));
	}
		if(parentMenu!=null){
			// id=XX
			$("a.hasSubmenu")
				.addClass("closed")
				.removeClass("open")
					.next("ul")
					.slideUp("fast");
			
			$("a.hasSubmenu:contains('"+parentMenu+"')")
				.removeClass("closed")
				.addClass("open")
				.css({color:"#d00000"});
			$("a.hasSubmenu:contains('"+parentMenu+"')")
				.next("ul")
					.slideDown("fast",addBorder())
					.children()
						.children("a[href*='"+pageLocation+"']")
						.css({color:"#d00000"});
			$("a.hasSubmenu")
				.not("a.hasSubmenu:contains('"+parentMenu+"')")
				.addClass("closed")
				.removeClass("open");
		}else{
			// id=XX&file=XX
			$("a.hasSubmenu")
				.addClass("closed")
				.removeClass("open")
					.next("ul")
					.slideUp("fast");
			
			$("#sidebar a[href*='"+pageLocation+"']")
				.parent()
					.parent()
					.slideDown("fast",addBorder())
					.prev("a.hasSubmenu")
					.addClass("open")
					.removeClass("closed")
					.css({color:"#d00000"});
			$("#sidebar a[href*='"+pageLocation+"']")
				.eq(0)
				.css({color:"#d00000"});
		}
		
	};
	function addBorder() {
		$(this).css("border-bottom","1px solid #ddd");
		$(this).css({backgroundColor:"#f0f"});
	};
	function spillCrumbs (pageLocation){
		var locationAsArray = pageLocation.split("?");
		var locationAsArray = locationAsArray[1].split("&");
		
		if($("#sidebar a[href*='"+locationAsArray[1]+"']").parent().parent().parent().attr("class")=="submenu"){
			var thisPage = $("#sidebar ul li.submenu ul li a[href*='"+locationAsArray[1]+"']").html();
		}else{
			var thisPage = $("#sidebar ul li a[href*='"+locationAsArray[1]+"']").html();
		}
		// if no file specified, append nothing to breadcrumbs
		if(/&file=/.test(pageLocation)==false){
			$("#breadCrumb ul").append("<li class=\"last\"></li>");
		}
		// if a link exists with the current page url, append that to breadcrumbs
		if($("#sidebar ul li a[href*='"+locationAsArray[1]+"']").size()!=0){
			$("#breadCrumb ul").append("<li class=\"last\">"+thisPage+"</li>");
		}
	};
