$j(window).load(function(){
	
	if(!$j.browser.msie || ($j.browser.msie && $j.browser.version != 7.0)){
		var active = $j("#nav .active");
		var categories = new Array("frankrijk","italie","spanje","portugal","duitsland","oostenrijk","nieuwe-wereld");
		bootMenu(active, categories);
	}else{
		//do not boot Menu features for IE 7 only
		$j("#nav li ul").css("display","none");
		var categories = new Array();
	}

	if(!activeMenuItems(categories)){
		 $j("#home-menu").html("Een <a href=\"/customer/account/create/\">account aanmaken</a> en <a href=\"/customer/account/login/\">inloggen</a> geeft u meer bestelgemak, maar hoeft niet.");
		 $j("#home-menu").addClass("bord");
	};
	
	if(window.location.pathname.indexOf('nieuw.') != -1){
		$j("li.new").addClass("active");
	}
});

function bootMenu(active, categories){
	
	//define elements, classes and offsets
	var top_ul           = $j("#nav");
	var top_li           = $j("#nav li");
	var secondary_ul     = $j("#nav li ul");
	var secondary_li     = $j("#nav li ul li");
	var tertiary_ul      = $j("#nav li ul li ul");
	var static_li_item   = $j("#nav li.nav-12");
	
	var ul_level0         = $j("ul.level0");
	var secondary_ul_over = $j("#nav li.over ul");
	
	var active_class = "active";
	var active_class_2 = "active2";
	var over_class = "over";
	var shown_sub_class = "shown_sub";
	
	var offset = -1;

	
	//over category li item
	categoryItemEnter(active, ul_level0, top_li, secondary_ul, secondary_li, tertiary_ul, active_class, over_class, shown_sub_class, offset);
	
	//add over
	addOver(active, ul_level0, secondary_ul, over_class, shown_sub_class, offset);
	
	//over secondary menu
	secondaryUlEnter(active, ul_level0, active_class_2);
	
	//over secondary menu item
	secondaryLiEnter(active, secondary_li, active_class);

	//over static li item
	staticEnter(static_li_item, secondary_ul, tertiary_ul);

	//click on top level item
	topClick(active, top_li, static_li_item, active_class);

	//following applies to <li> items added via static block only
	staticItemPresent(categories, top_ul, secondary_ul);

}

function categoryItemEnter(active, ul_level0, top_li, secondary_ul, secondary_li, tertiary_ul, active_class, over_class, shown_sub_class, offset){
	top_li.not(secondary_li).mouseenter(function(){
		show(secondary_ul);
		positionChildUl($j(this));
		hide(tertiary_ul); 
		active.removeClass(active_class);
		remove(active, ul_level0, over_class, shown_sub_class);
		addOver($j(this), ul_level0, secondary_ul, over_class, shown_sub_class, offset);
	}).mouseleave(function(){
		remove($j(this), ul_level0, over_class, shown_sub_class); 
		addOver(active, ul_level0, secondary_ul, over_class, shown_sub_class, offset);
		active.addClass(active_class);
	});
}

function secondaryUlEnter(active, ul_level0, active_class_2){
	ul_level0.mouseenter(function(){
		$j(this).parent().addClass(active_class_2);
	}).mouseleave(function(){
		$j(this).parent().removeClass(active_class_2);
		hide($j(this).children("ul"));
		active.addClass(active_class);
	});
}

function secondaryLiEnter(active, secondary_li, active_class){
	secondary_li.mouseenter(function(){
		active.removeClass(active_class);
		$j(this).parent().parent().addClass(active_class);
	}).mouseleave(function(){
		$j(this).parent().parent().removeClass(active_class);
		//active.addClass(active_class);
	});
}

function staticEnter(static_li_item, secondary_ul, tertiary_ul){	
	static_li_item.mouseenter(function(){
		hide(secondary_ul);
	}).mouseleave(function(){
		show(secondary_ul.not(tertiary_ul));
	});
}

function topClick(active, top_li, static_li_item, active_class){
	top_li.not(static_li_item).click(function(){
		$j(this).mouseleave(function(){
			active.removeClass(active_class);
			$j(this).addClass(active_class);
		});
	});
}

function staticItemPresent(categories, top_ul, secondary_ul){
	var static_li_item_present = true;
	for(var i = 0; i < categories.length; i++){
		if(window.location.pathname.indexOf(categories[i]) != -1){
			static_li_item_present = false;
		}
	}
	if(static_li_item_present){
		secondary_ul.mouseleave(function(){
			show(secondary_ul);
		});
		top_ul.mouseleave(function(){
			hide(secondary_ul);
		});
	}
}

function activeMenuItems(categories){
	var activeMenuItem = false;
	for(var i = 0; i < categories.length; i++){
		if(window.location.pathname.indexOf(categories[i]) != -1){
			activeMenuItem = true;
		}
	}
	return activeMenuItem;
}

function remove(object, ul_level0, over_class, shown_sub_class){
	object.removeClass(over_class);
	ul_level0.removeClass(shown_sub_class);
}
function addOver(object, ul_level0, secondary_ul, over_class, shown_sub_class, offset){
	object.addClass(over_class);
	
	ul_level0.addClass(shown_sub_class);
	if(object.position()) {
		secondary_ul.css("left", -9999);
		$j("#nav li.over ul").css("left", -object.position().left + offset);
		positionChildUl(object);
	}
}
function hide(object){
	object.css("display","none");
}
function show(object){
	object.css("display","block");
}
function positionChildUl(top_li){
	var pos = top_li.position();
	if(!top_li.hasClass("last")){
		top_li.children("ul").children("li.first").css("margin-left",pos.left+"px");
	}
	
}
