//Event.observe(window,'load',function(){
//	var togglers = $$('li.mainMenuItem');
//	var stretchers = $$('div.mainMenu-sublevel');
//	var myAccordion = new Fx.Accordion(togglers, stretchers, { opacity: false, start: false, transition: Fx.Transitions.quadOut});
//});

function initializeMenuSystem() {

	// taalmenu
	Event.observe($$("ul#taalMenu li")[0], 'click', function(e) {
		if ($('sub_taalMenu').style.display=='block')
			$('sub_taalMenu').style.display='none';
		else
			$('sub_taalMenu').style.display='block';
	});

	$('mainMenu').animationInterval = 50;
	$('mainMenu').animationStepsizeLarge  = 20;
	$('mainMenu').animationStepsizeMedium = 5;
	$('mainMenu').animationStepsizeSmall  = 1;
	
	$('mainMenu').currentMenu = false;
	$('mainMenu').animationFuse = false;
	
	$('mainMenu').openMenu = function(menu) {
	
//		console.log('openMenu ' +menu.id);

		menu.isClosing = false;
	
		if (!$('mainMenu').currentMenu) {
			$('mainMenu').currentMenu = menu;
			$('mainMenu').currentMenu.style.borderWidth = '1px';
			$('mainMenu').animateOpenMenu();
		} else {
			if (menu != $('mainMenu').currentMenu) {
				$('mainMenu').switchFromTo($('mainMenu').currentMenu,menu);
			} else {
				$('mainMenu').animateOpenMenu();
			}
		}
		
	};
	
	$('mainMenu').switchFromTo = function(from,to) {
	
//		console.log('switchFromTo ' +from.id + ' -> ' + to.id);
	
		to.style.height = from.style.height;
		from.style.height = '0px';
		from.style.borderWidth = '0px';
		to.style.borderWidth = '1px';
			
		$('mainMenu').currentMenu = to;
		$('mainMenu').animateOpenMenu();
	
	};
	
	$('mainMenu').closeMenu = function() {
	
//		console.log('closeMenu ' +menu.id);
	
//		if (menu == $('mainMenu').currentMenu) {
		if ($('mainMenu').currentMenu) {
			$('mainMenu').currentMenu.isClosing = true;
			$('mainMenu').animateOpenMenu();
		}
		
	//	}
		
	};
	
	$('mainMenu').animateOpenMenu = function() {
	
		// kill any other fuses to prevent gone wild fuses
		if ($('mainMenu').animationFuse)
			clearTimeout($('mainMenu').animationFuse);
	
		if (!$('mainMenu').currentMenu)
			return;
	
		var menu = $('mainMenu').currentMenu;
		
		if (menu.isClosing) {
		
			// too large?
			if ((menu.clientHeight) > $('mainMenu').animationStepsizeLarge)
				menu.style.height = (menu.clientHeight-$('mainMenu').animationStepsizeLarge)+'px';
			else if ((menu.clientHeight) > $('mainMenu').animationStepsizeMedium)
				menu.style.height = (menu.clientHeight-$('mainMenu').animationStepsizeMedium)+'px';
			else if ((menu.clientHeight) > $('mainMenu').animationStepsizeSmall)
				menu.style.height = (menu.clientHeight-$('mainMenu').animationStepsizeSmall)+'px';
			else {
				$('mainMenu').currentMenu.style.borderWidth = '0px';
				$('mainMenu').currentMenu = false;
			}	
		
		} else {
		
	//		console.log('animateOpenMenu ' +menu.id+'{ ch: ' +menu.clientHeight + ' and sh: ' + menu.scrollHeight+'}');
			
			if(menu.clientHeight < menu.scrollHeight) {
			
				// too small, grow
				if ((menu.scrollHeight - menu.clientHeight) > $('mainMenu').animationStepsizeLarge)
					menu.style.height = (menu.clientHeight+$('mainMenu').animationStepsizeLarge)+'px';
				else if ((menu.scrollHeight - menu.clientHeight) > $('mainMenu').animationStepsizeMedium)
					menu.style.height = (menu.clientHeight+$('mainMenu').animationStepsizeMedium)+'px';
				else if ((menu.scrollHeight - menu.clientHeight) > $('mainMenu').animationStepsizeSmall)
					menu.style.height = (menu.clientHeight+$('mainMenu').animationStepsizeSmall)+'px';
				
			} else if(menu && (menu.clientHeight > menu.scrollHeight)) {
				
				// too large, shrink
				if ((menu.clientHeight - menu.scrollHeight) > $('mainMenu').animationStepsizeLarge)
					menu.style.height = (menu.clientHeight-$('mainMenu').animationStepsizeLarge)+'px';
				else if ((menu.clientHeight - menu.scrollHeight) > $('mainMenu').animationStepsizeMedium)
					menu.style.height = (menu.clientHeight-$('mainMenu').animationStepsizeMedium)+'px';
				else if ((menu.clientHeight - menu.scrollHeight) > $('mainMenu').animationStepsizeSmall)
					menu.style.height = (menu.clientHeight-$('mainMenu').animationStepsizeSmall)+'px';
			
			}
			
		}
		
		if ($('mainMenu').currentMenu) {
			// a menu is open, continue updating our size
			$('mainMenu').animationFuse = setTimeout($('mainMenu').animateOpenMenu, $('mainMenu').animationInterval);
		}
		
	};
	
}

function mainMenuItemMouseOver(item) {
	if (item.timedMouseout) clearTimeout(item.timedMouseout);
					
	if ($('mainMenu').currentMenu) {
		
		item.timedMouseover = setTimeout(function(){
			for(var i=0;i<this.childNodes.length;i++)
  				if (this.childNodes[i].nodeType == 1)
  					if (Element.hasClassName(this.childNodes[i],'mainMenu-sublevel'))
						$('mainMenu').openMenu(this.childNodes[i]);
		}.bind(item),400);
		
	} else {

		// immediate effect
		for(var i=0;i<item.childNodes.length;i++)
  			if (item.childNodes[i].nodeType == 1)
  				if (Element.hasClassName(item.childNodes[i],'mainMenu-sublevel'))
					$('mainMenu').openMenu(item.childNodes[i]);
	}
}

function mainMenuItemMouseOut(item) {
	if (item.timedMouseover) clearTimeout(item.timedMouseover);
	item.timedMouseout = setTimeout(function(){
		$('mainMenu').closeMenu();
	},400);
}

function submenuItemMouseOver(item) {

	Element.addClassName(item,'rthover');
	Element.addClassName(item.getElementsByTagName('A')[0],'rtahover');

	if (item.timedMouseout) clearTimeout(item.timedMouseout);
	if (item.parentNode.aSubMenuIsExpanded) {
		item.timedMouseover = setTimeout(function(){
			Element.addClassName(this,'hover');
			this.parentNode.aSubMenuIsExpanded = true;
			$('mainMenu').animateOpenMenu();
		}.bind(item),400);
	} else {
		// immediate
		Element.addClassName(item,'hover');
		item.parentNode.aSubMenuIsExpanded = true;
		$('mainMenu').animateOpenMenu();
	}
}

function submenuItemMouseOut(item) {

	Element.removeClassName(item,'rthover');
	Element.removeClassName(item.getElementsByTagName('A')[0],'rtahover');

	if (item.timedMouseover) clearTimeout(item.timedMouseover);
	item.timedMouseout = setTimeout(function(){
		Element.removeClassName(this,'hover');
		this.parentNode.aSubMenuIsExpanded = false;
		$('mainMenu').animateOpenMenu();
	}.bind(item),400);
}
