menuHandler={

// Klargør variabler
active:null,
fadeIn:[],
fadeOut:[],

/**
 * init
 *
 *********
 *
 * Klargør menuen, opret hover-effekterne og tildel event-handlere.
 */
init:function(){
	// Klargør et standard hover-element
	var div=document.createElement('div');	// Opret elementet
	div.className="active";					// Indlæs CSS
	div.style.opacity='0'; div.style.mozOpacity='0'; div.style.filter='alpha(opacity=0)';	// Skjul hover-elementet som standard

	// Indlæs listen over menupunkter
	var list=document.getElementById('menu').getElementsByTagName('li');
	var i=list.length; var j=i;

	if(i>0)do{
		// Opret hover-elementet
		var hover=div.cloneNode(false);
		hover.innerHTML=list[j-i].innerHTML;
		hover.indexID=j-i; hover.opacity=0;

		// Håndter det aktive element
		if(list[j-i].className.toLowerCase()=='active'){
			hover.style.opacity='1'; hover.style.mozOpacity='1'; hover.style.filter='alpha(opacity=100)'; hover.opacity=100;
			this.active=j-i;
		}

		// Håndter hover-effekter
		if(document.attachEvent){
			list[j-i].attachEvent('onmouseover',function(e){menuHandler.over(e);});
			list[j-i].attachEvent('onmouseout',function(e){menuHandler.out(e);});
		}else{
			list[j-i].addEventListener('mouseover',function(e){menuHandler.over(e);},false);
			list[j-i].addEventListener('mouseout',function(e){menuHandler.out(e);},false);
		}

		// Indsæt hover-elementet
		list[j-i].appendChild(hover);
	}while(--i);

	// Ryd hukommelsen
	list=null; hover=null;
},

/**
 * over
 *
 **********
 *
 * Håndter hover-effekten, når musen køres over et element
 *
 **********
 *
 * Parametre:
 * e (eventinfo)						Indeholder informationer om brugerens input.
 */
over:function(e){
	// Indlæs info om brugerens input
	var e=e||window.event;										// Indlæs info
	var src=e.srcElement||e.target;								// Indlæs en reference til det link, musen blev ført over
	while(src.tagName.toLowerCase()!='li') src=src.parentNode;	// ----- || -----

	// Indlæs en reference til hover-elementet
	var hover=src.getElementsByTagName('div')[0].indexID;

	// Afbryd alle andre fade-ins
	for(var i in this.fadeIn.length){
		if(i!=hover){
			clearInterval(this.fadeIn[i]);
			delete this.fadeIn[i];
		}
	}

	// Begynd at fade elementet ind
	if(this.fadeOut[hover]){
		clearInterval(this.fadeOut[hover]);
		delete this.fadeOut[hover];
	}
	if(!this.fadeIn[hover]) this.fadeIn[hover]=setInterval(function(){menuHandler.doFade(hover,5);},15);

	// Begynd at fade det aktive element ud
	if(hover!=this.active){
		if(this.fadeIn[this.active]){
			clearInterval(this.fadeIn[this.active]);
			delete this.fadeIn[this.active];
		}
		if(!this.fadeOut[this.active]) this.fadeOut[this.active]=setInterval(function(){menuHandler.doFade(menuHandler.active,-5)},15);
	}

	// Ryd hukommelsen
	src=null; e=null;
},

/**
 * out
 *
 **********
 *
 * Håndter hover-effekten, når musen fjernes fra et element
 *
 **********
 *
 * Parametre:
 * e (eventinfo)						Indeholder informationer om brugerens input.
 */
out:function(e){
	// Indlæs info om brugerens input
	var e=e||window.event;										// Indlæs info
	var src=e.srcElement||e.target;								// Indlæs en reference til det link, musen blev ført over
	while(src.tagName.toLowerCase()!='li') src=src.parentNode;	// ----- || -----

	// Indlæs en reference til hover-elementet
	var hover=src.getElementsByTagName('div')[0].indexID;

	// Afbryd evt. igangværende fade-in
	if(this.fadeIn[hover]){
		clearInterval(this.fadeIn[hover]);
		delete this.fadeIn[hover];
	}

	// Begynd at fade elementet ud
	if(hover!=this.active) this.fadeOut[hover]=setInterval(function(){menuHandler.doFade(hover,-5);},15);

	// Begynd at fade det aktive element ind
	if(hover!=this.active){
		if(this.fadeOut[this.active]){
			clearInterval(this.fadeOut[this.active]);
			delete this.fadeOut[this.active];
		}
		if(!this.fadeIn[this.active]) this.fadeIn[this.active]=setInterval(function(){menuHandler.doFade(menuHandler.active,5)},15);
	}

	// Ryd hukommelsen
	src=null; e=null;
},

/**
 * doFade
 *
 **********
 *
 * Håndter fade in/ud af elementerne.
 *
 **********
 *
 * Parametre:
 * hoverID (int)						Angiver ID'et på det element, der skal fades.
 * speed (int)							Angiver hastigheden, der skal fades med.
 */
doFade:function(hoverID,speed){
	// Indlæs en reference til hover-elementet
	var tmp=document.getElementById('menu').getElementsByTagName('li')[hoverID].getElementsByTagName('div')[0];

	// Fade!
	tmp.opacity=Math.max(0,Math.min(100,tmp.opacity+speed));
	tmp.style.opacity=(tmp.opacity/100);
	tmp.style.mozOpacity=(tmp.opacity/100);
	tmp.style.filter='alpha(opacity='+tmp.opacity+')';

	// Afbryd fading, når denne er afsluttet
	if(tmp.opacity==0){
		clearInterval(this.fadeOut[hoverID]);
		delete this.fadeOut[hoverID];
	}else if(tmp.opacity==100){
		clearInterval(this.fadeIn[hoverID]);
		delete this.fadeIn[hoverID];
	}

	// Ryd hukommelsen
	tmp=null;
}
	
};

// Initialiser menuen
menuHandler.init();