var mouse_is_inside = false;
var menu_expanded = false;

$(document).ready(function() {
	
	$('.menu-button').click(function() {
		var sub = $(this).next();
		if (sub.hasClass('menu-visible')) {
			sub.removeClass('menu-visible');
			menu_expanded = false;
		}
		else {
			$('.menu-visible').removeClass('menu-visible');
			sub.addClass('menu-visible');
			menu_expanded = true;
		}
	});
	
	$('.menu').hover(function(){
	    mouse_is_inside=true;   
	}, function(){ 
	    mouse_is_inside=false;    
	});
	
	$(document).mouseup(function(){ 
		if(! mouse_is_inside){
			$('.menu-visible').removeClass('menu-visible');
		}
	});


	jQuery.fn.menuselection = function() {	
		
		var o = $(this[0]);
		var currentSelection = -1;
		var currentUrl = '';
		var letters = [];
		var prevPressed = 0;
		var nrLi = $("ul li", o).size();
		
		// Register keypress events on the whole document
		$(document).keydown(function(e) {
	
				if (menu_expanded === true) {
					e.preventDefault();
				}
				else {return;}
	
				
				if (e.keyCode == 38) { 
					// User pressed "up" arrow
					navigate('up');
				}
				else if (e.keyCode == 40) {
					// User pressed "down" arrow
					navigate('down');
				}
				else {
					// User pressed a letter
					if ( typeof letters[e.keyCode] !== "undefined" && letters[e.keyCode]) {
						if (e.keyCode == prevPressed) {
							if (currentSelection != (letters[e.keyCode]['last'] - 1)) {
								navigate('down');
							}
							else {
								currentSelection = letters[e.keyCode]['first'];
								setSelected(currentSelection);
							}
						}
						else {
							currentSelection = letters[e.keyCode]['first'];
							setSelected(currentSelection);
						}
					}
				}
				
				prevPressed = e.keyCode;
		});
		
		// Add data to let the hover know which index they have
		var prevLetter = '';
		for(var i = 0; i < nrLi; i++) {
			menuItem = $("ul li", o).eq(i);
			$(menuItem).data("number", i);	
			
			// Zet letters in een array
			curLetter = $(menuItem).next().text().charCodeAt(0);
			if (prevLetter != curLetter) {
				letters[curLetter] = [];
				letters[curLetter]['first'] = i + 1;
				
				if ( typeof letters[prevLetter] !== "undefined" && letters[prevLetter]) {
					letters[prevLetter]['last'] = i + 1;
				}
			}
			
			
			prevLetter = curLetter;
		}
		
	
		function navigate(direction) {
	
			
			if(direction == 'up' && currentSelection != -1) {
				if(currentSelection != 0) {
					currentSelection--;
				}
			} 
			else if (direction == 'down') {
				if(currentSelection != $("ul li", o).size() -1) {
					currentSelection++;
				}
			}
			setSelected(currentSelection, direction);
		}
		
		function setSelected(menuitem, direction) {
	
			menuEl = $("ul li", o).eq(menuitem);
			//$("ul li", o).removeClass("itemhover");		
			//$(menuEl).addClass("itemhover");
			
			$(".sub", o).scrollTo($(menuEl));
		}
		
	};
	//if ( $.browser.msie && $.browser.version == '7.0') {
		//return;
	//}
	//$('.menu-first').menuselection();
	//$('.menu-second').menuselection();
	//$('.menu-third').menuselection();
	
});
