function f_meny()
{
/*	if(document.getElementById && document.createTextNode)
	{ 
		// Browseren er DOM enabled
	} else {
		return;
	}
*/
	// Definisjoner
	var i,uls,lis,meny_a;
	var parentClass='parent';
	var showClass='vises';
	var hideClass='gjemt';
	var openClass='utvidet';

	// Sjekk om menyen finnes, hvis ikke - avbryt funksjonen
	meny_a=document.getElementById('meny_a');
	if(!meny_a){return;}

	// loop through all lists inside finder, position and hide them
	// by applying the class hidden
	uls=document.getElementById('meny_a').getElementsByTagName('ul');
	for(i=0;i<uls.length;i++)
	{
		cssjs('add',uls[i],hideClass);
	}

	// loop through all links of inside finder
	lis=document.getElementById('meny_a').getElementsByTagName('li');
	for(i=0;i<lis.length;i++)
	{
		// if the li containing the link has no nested list, skip this one
		if(!lis[i].getElementsByTagName('ul')[0])
		{
			continue;
		}
		// otherwise apply the parent class
		cssjs('add',lis[i].getElementsByTagName('a')[0],parentClass);

		// if the user clicks on the link
		lis[i].getElementsByTagName('a')[0].onclick=function()
		{
		// loop through all lists inside finder
			for(var i=0;i<uls.length;i++)
			{
				// avoid the list connected to this link
				var found=false;
				for(j=0;j<uls[i].getElementsByTagName('ul').length;j++)
				{
					if(uls[i].getElementsByTagName('ul')[j] ==
						this.parentNode.getElementsByTagName('ul')[0])
					{
                      found=true;
                      break;
					}
				}
				// and hide all others
				if(!found)
				{
					cssjs('add',uls[i],hideClass)
					cssjs('remove',uls[i],showClass)
					cssjs('remove',uls[i].parentNode.getElementsByTagName('a')[0],openClass)
					cssjs('add',uls[i].parentNode.getElementsByTagName('a')[0],parentClass)
				}
			}
			// change the current link from parent to open
			cssjs('swap',this,parentClass,openClass)
			// show the current nested list
			cssjs('swap',this.parentNode.getElementsByTagName('ul')[0],hideClass,showClass)
			return false;
		}
	}
}

/*
 * parameters: action a, object o and class names c1 and c2 (c2 optional)
 * actions: swap exchanges c1 and c2 in object o
 *			add adds class c1 to object o
 *			remove removes class c1 from object o
 *			check tests if class c1 is applied to object o
 * example:	cssjs('swap',document.getElementById('foo'),'bar','baz');
 */

function cssjs(a,o,c1,c2)
{
	switch (a){
		case 'swap':
			o.className=!cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
		break;
		case 'add':
			if(!cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
		break;
		case 'remove':
			var rep=o.className.match(' '+c1)?' '+c1:c1;
			o.className=o.className.replace(rep,'');
		break;
		case 'check':
			return new RegExp('\\b'+c1+'\\b').test(o.className)
		break;
	}
}
