var currentLi = null;

function allMenuLis(){
	return $$("#menu1>ul>li").combine( $$("#menu1>ul ul>li") );
}

function loadPage(relpath){
    var queryString = "format=inline";
    relpath = relpath.split("?");
    if( relpath.length == 2 ){
        queryString += "&" + relpath[1];
    }
    relpath = relpath[0];
    
	var req = new Request({
		url: relpath,
		link: "cancel",
		method: "get",
		evalScripts: true
	});
	req.addEvent("success",function(text, xml){
		document.location.hash = relpath;
		$("content").innerHTML = text;
		document.fireEvent("subpageload");
	});
	req.addEvent("failure",function(xhr){
		document.location.href = relpath;
	});
	req.send(queryString);
}

function gotoMenu(relpath,li,getpage){
	
	if( relpath == "/landmeten" || relpath == "/expertises" ){
		// Will get redirected to first item, so also redirect this call menu
		li = li.getElement("ul").getElement("li");
		var firstA = li.getElement("a")
		relpath = relpathForA(firstA);
	}
	
	if( li == currentLi ) return;
	
	// Invalidate previous
	var prevMenuImage = null
	if( currentLi != null ){
		currentLi.removeClass("active");
		prevMenuImage = currentLi.getElement(".menuimage");
		prevMenuImage.setStyle('z-index', 50 );
		
		// In special cases also de-activate parent
		var parentLi = currentLi.getParent().getParent().getParent();
		if( parentLi.hasClass("active") ){
			parentLi.removeClass("active");
		}
	}
	
	// Register current li
	currentLi = li;
	li.addClass("active");
	var menuImage = li.getElement(".menuimage");
	
	// In special cases also activate parent
	if( relpath.indexOf("/landmeten")==0 || relpath.indexOf("/expertises")==0 ){
		li.getParent().getParent().getParent().addClass("active");
	}
	
	
	// Load the page
	if( getpage ){
		loadPage(relpath);
		
		// Animate the menuImage
		var morph = new Fx.Morph( menuImage, {
			'duration': "normal",
			'link': "cancel"
		});
		morph.set({
			'opacity':0.0,
			'z-index':100,
			'visibility':"visible"
		});
		morph.start({
			'opacity':1.0
		});
		if( prevMenuImage != null ){
			morph.chain( function(){
				this.setStyles({
					'z-index':0,
					'visibility':"hidden"
				});
			}.bind(prevMenuImage) );
		}
		
		morph.chain( function(){
			this.setStyle('z-index',20);
		}.bind(menuImage) );
	}
	else{
		alert("Not getting");
	}
}

function gotoSubMenu(relpath,a,getpage){
	$$("#menu1>ul ul>li a.active").each( function(aa){
		aa.removeClass("active");
	});
	a.addClass("active");
	
	if( getpage ){
		loadPage(relpath);
	}
}

document.addEvent("domready",function(){
	// Activate from url
	var requestrelpath = document.location.href.split("#");
	if( requestrelpath.length == 2 ){
		requestrelpath = requestrelpath[1];
	}
	else{
		requestrelpath = "/";
	}
	if( requestrelpath == "" ){
		requestrelpath = "/";
	}
	
	// Relpath without query string
	requestrelpathnoquery = requestrelpath.split("?")[0];
	
	// Detect relative path
	allMenuLis().each(function(li){
		var basea = li.getElement("a");
		var relpath = relpathForA( basea );
		if( relpath == requestrelpathnoquery ){
			gotoMenu(requestrelpath,li,true);
		}
	/*	else{
		    // Subpath
			if( requestrelpath.indexOf(requestrelpathnoquery) != -1 ){
				gotoMenu(relpath,li,false);
			} 
		}*/
	});
});

function relpathForA( a ){
    if( a.get("href") != "#" ){
        return a.get("href");
    }
    else{
        return a.retrieve("relpath");
    }
}

document.addEvent("subpageload",function(){
	// Activate menu links
	allMenuLis().each(function(li){
		var basea = li.getElement("a");
		if( basea.get("href") != "#" ){
		    basea.store("relpath", basea.get("href") );
		}
		var relpath = basea.retrieve("relpath");
		
		// Activate all links in document
		$(document.body).getElements("a[href=" + relpath + "]").each( function( a ){
			a.addEvent("click",function(){
				gotoMenu(relpath,li,true);
			});
			a.href = "#";
		});
	});
});
