
    var agt=navigator.userAgent.toLowerCase();

    var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);

    // Note: Opera and WebTV spoof Navigator.  We do strict client detection.
    // If you want to allow spoofing, take out the tests for opera and webtv.
    var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
    var is_nav2 = (is_nav && (is_major == 2));
    var is_nav3 = (is_nav && (is_major == 3));
    var is_nav4 = (is_nav && (is_major == 4));
    var is_nav4up = (is_nav && (is_major >= 4));
    var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
                          (agt.indexOf("; nav") != -1)) );
    var is_nav6 = (is_nav && (is_major == 5));
    var is_nav6up = (is_nav && (is_major >= 5));
    var is_gecko = (agt.indexOf('gecko') != -1);


    var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    var is_ie3    = (is_ie && (is_major < 4));
    var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
    var is_ie4up  = (is_ie && (is_major >= 4));
    var is_ie5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    var is_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
    var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
    var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
    var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
    var is_ie6up  = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);

    var is_opera = (agt.indexOf("opera") != -1);
    var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
    var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
    var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
    var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
    var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
    

	var mp='dln_nav';
	var hp='dln_hide';
	var sp='dln_show';
	var pp='dln_parent';
	var pa='dln_active';
	var pd='dln_document';
	var cu='current';
	var d,uls,i;

function tn(node)
{
	try
	{
	   var nodeName = node.tagName;
	   var ppv = dln_check(node,pp);
	   var ppa = dln_check(node,pa);
		if(node.tagName == "LI" && (dln_check(node,pp) || dln_check(node,pa)))
		{
			dln_swapclass(node,pp,pa);
			if (!is_gecko)
			{
				dln_swapclass(node.getElementsByTagName('ul')[0],hp,sp);
			}
			else
			{
				dln_swapclass(node.nextSibling.nextSibling,hp,sp);
			}
		}
	}
	catch(ex)
	{
	}
}

function ListMenuEventHandler(e)
{
	if(is_gecko)
	{
		tn(e.target);
	}
	if(is_ie5up)
	{
		tn(window.event.srcElement);
	}
}


function dln_checkcurrent(o){
	
	if (!is_gecko)
	{
		if(dln_check(o.parentNode,cu)){return true;}
	}
	else
	{
		if(dln_check(o.previousSibling.previousSibling,cu)){return true;}
	}
		
	for(var i=0;i<o.getElementsByTagName('li').length;i++)
	{
		if(dln_check(o.getElementsByTagName('li')[i],cu)){return true;}
	}
	return false;
}

function dln_swapclass(o,c1,c2)
{
	var cn=o.className;
	var sdsd = dln_check(o,c1);
	o.className=!dln_check(o,c1)?cn.replace(c2,c1):cn.replace(c1,c2);
	var classNameFinal = o.className;
}

function dln_addclass(o,c)
{
	if(!dln_check(o,c)){o.className+=o.className==''?c:' '+c;}
}

function dln_check(o,c)
{
	return new RegExp('\\b'+c+'\\b').test(o.className);
}


function dln_init(listMenuId)
{
	if(!document.getElementById){return;}
	d=document.getElementById(listMenuId);
	if (!d){return;}
	dln_addclass(d,mp)

	if(!(is_gecko || is_ie5up)){return;}

	lis=d.getElementsByTagName('li');
	for (i=0;i<lis.length;i++)
	{
		dln_addclass(lis[i],pd);
	}

	uls=d.getElementsByTagName('ul');
	for (i=0;i<uls.length;i++)
	{
		if(dln_checkcurrent(uls[i]))
		{
			dln_addclass(uls[i],sp);
			if (!is_gecko)
			{
				dln_swapclass(uls[i].parentNode,pd,pa);
			}
			else
			{
				//Flytter menu
				uls[i].style.marginLeft = '9px';
				dln_swapclass(uls[i].previousSibling.previousSibling,pd,pa);
			}
		} else {
			dln_addclass(uls[i],hp);
			if (!is_gecko)
			{
				dln_swapclass(uls[i].parentNode,pd,pp);
			}
			else
			{
				//Flytter menu
				uls[i].style.marginLeft = '9px';
				dln_swapclass(uls[i].previousSibling.previousSibling,pd,pp);
			}			
		}
	}
	d.onclick = ListMenuEventHandler;

}
