/*
mymenu.js 2002-03-04

Contributor(s): Netscape Communications, Copyright 1997-2002
                Mark Filanowicz, Amdahl IT Services, Copyright 2002

Netscape grants you a royalty free license to use, modify or 
distribute this software provided that this copyright notice 
appears on all copies.  This software is provided "AS IS," 
without a warranty of any kind.

*/
function redo() {if (document.layers) document.location.reload();}
window.onresize=redo;

function error() {return true;}
window.onerror=error;
 

// added following array by Mark Filanowicz on 2-22-2002 
var xbcl_MenuList = new Array();		// array of Menu List strs

function colorize(id) 
{
	var i;
	if (this.visible) 
	{
		for (i = 0; i < document.lists.length; i++) 
		{
			document.lists[i].touch = true;
		}
	}
	var p = this;
	while (p != null) 
	{
		p.touch = false;
		p = p.parentList; 
	}
	for (i = 0; i < document.lists.length; i++)
		if (document.lists[i].touch && document.lists[i].visible)
      xbcl_expand(document.lists[i].id);
}

// function added by Mark Filanowicz 02-22-2002
function ExpandMenu(str) 
{
// finds the list index pointer based on the menu text

  var i;
  var parents = new Array();		//  list of parents, to be built when we want to expand a submenu

  for ( i = 0; i < xbcl_MenuList.length; i++ )
  {
		if ( xbcl_MenuList[i] == str )
		{
			while (i > 0)
			{
				parents[parents.length] = i;		// push parent onto stack
				i = document.lists[i].parentList.id;	// get next higher parent
			}
			// expand the highest parent menu first, then the requested submenu
			while (parents.length > 0)
			{
				i = parents[parents.length-1];
				if (!document.lists[i].visible)
				{
					xbcl_expand(i);		// expand the highest parent menu left in stack
				}
				parents.length--;		// remove this parent from stack
			}
			return;
		}
  }
}

//---------------------------------------------------------------------------------
var navItem = 0;
var listArray = new Array();
var useTabindex = true;
var deltaTabindex = 2;

function buildLinkStr(Item)
{
var tab;
( useTabindex ) ? tab = ' tabindex=' + (Item + deltaTabindex) : tab='';
if (navItems[Item][2].charAt(0)=='*')
	{
	if (navItems[Item][2].length > 1) {listArray[0].addItem('&nbsp;');}
	return '<img src="' + imgOverskrift + '">&nbsp;<b>'+navItems[navItem][4]+'</b>';
	}
else
	{
	return (navItems[Item][3]) ? '<A HREF="' + navItems[Item][3] +'" class="nyt"' + tab + '>' + navItems[Item][4] + '</A>' : navItems[Item][4];
	}
}

function auAdd(listNo, parentId, width, height, bgColor, indent)
{
var currentListNo=listNo;
var currentNavItem=navItem;
if ( navItem < navItems.length ) 							//not finished
	{ 
	if (navItems[navItem][1] == parentId)						//sublist under current
		{
		if ((navItems[navItem][0] == 1) && (navItem < navItems.length-1) && (navItems[navItem+1][1] == navItems[navItem][2]))	//new sublist
			{
			//definer ny liste
			//MEN KUN HVIS LISTEN IKKE ER TOM (dvs der kommer records efter den aktuelle med denne som parent!!!
			listNo=listArray.length;
			listArray[listNo] = new List(false, width, height, bgColor);
			xbcl_MenuList[xbcl_MenuList.length] = navItems[currentNavItem][2];
			listArray[listNo].setFont('<SPAN class="nyt">','<\/SPAN>');
			(navItems[currentNavItem][5]) ? listArray[listNo].setIndent(navItems[currentNavItem][5]) : listArray[listNo].setIndent(indent);
			listArray[listNo].onexpand = colorize;
			navItem=navItem+1;
			auAdd(listNo,navItems[navItem][1], width, height, bgColor, indent);	//add sublist items
			listArray[currentListNo].addList(listArray[listNo],navItems[currentNavItem][4],currentNavItem+deltaTabindex);
			}
		else									//new item
			{
			if (navItems[navItem][0] == 1)					//actually it is an inactive list treated as an item without link
				{
				navItems[navItem][3]='';
				navItems[navItem][4]='<img src="' + imgInactive + '" alt="">&nbsp;<span style="color: #aaaaaa">' +  navItems[navItem][4] + '<\/span>';
				}
			listArray[listNo].addItem(buildLinkStr(navItem),navItem+deltaTabindex);
			navItem=navItem+1;
			}
		auAdd(currentListNo, parentId, width, height, bgColor, indent);		//continue current list
		}
	}
}


var astr='';

function buildTableLinkStr(c,l,item,link) //c: currentlevel, l: levels, item: navItem, link: if true create link
// create heading if toplevel (level==0) and id starts with a * (navItems[item][2]charAt(0)=='*')
{
var count;
var img;
var s = "<tr valign=top>";
var ss = s;
var slut ="</td></tr>";
for (count=0; count<c; count++)	{s += "<td width=10></td>";}
s += '<td colspan=' + (l-c) + '>';
if ((c==0) && (navItems[item][2].charAt(0)=='*')) 
	{
	s += '<img src="' + imgOverskrift + '">&nbsp;<b>' + navItems[item][4] + '</b>';
	if (navItems[item][2].length > 1) {ss += '<td colspan=' + (l-c) + '>&nbsp;' + slut;}
	}
else
	{
	s += '<img id="aunavimg' + navItems[item][2] + '" src="' + imgAlm + '">&nbsp;'; 
	( link ) ? s += buildLinkStr(item) : s += navItems[item][4];
	}
s += slut;
return ss + s;
}

function xxAdd(parentId, currentlevel, levels)
{
if (!currentlevel) currentlevel = 0;	//default value
if (!levels) levels=2; 			//default value
var maxlevel = levels-1;
var currentNavItem = navItem;
if ( navItem < navItems.length ) 							//not finished
	{ 
	if (navItems[navItem][1] == parentId)						//sublist under current
		{
		if (navItems[navItem][0] == 1)						//new sublist
			{
			navItem=navItem+1;
			//definer ny liste
			if (currentlevel == maxlevel) {
				astr += buildTableLinkStr(currentlevel,levels,currentNavItem,true);	//add link
				xxAdd(navItems[navItem][1],currentlevel+1,levels);	//continue
			} else if (currentlevel > maxlevel) {
				xxAdd(navItems[navItem][1],currentlevel+1,levels);	//continue
 			} else {
				astr += buildTableLinkStr(currentlevel,levels,currentNavItem);	//add sublistheading
				xxAdd(navItems[navItem][1],currentlevel+1,levels);	//add sublist items
				}
			}
		else									//new item
			{
			if (currentlevel <= maxlevel) astr += buildTableLinkStr(currentlevel,levels,currentNavItem,true);	
			navItem=navItem+1;
			}
		xxAdd(parentId,currentlevel,levels);		//continue current list
		}
	}
}



//---------------------------------------------------------------------------------
// added str argument by Mark Filanowicz 02-22-2002

var imgOverskrift = "http://data.imf.au.dk/enhedsdesign/au_proxy/overskrift.gif";
var imgMarkeret = "http://data.imf.au.dk/enhedsdesign/au_proxy/markeret.gif";
var imgAlm = "http://data.imf.au.dk/enhedsdesign/au_proxy/alm.gif";
var imgThis ="http://data.imf.au.dk/enhedsdesign/au_proxy/this.gif";
var imgSubThis ="http://data.imf.au.dk/enhedsdesign/au_proxy/subthis.gif";
var imgInactive = "http://data.imf.au.dk/enhedsdesign/au_proxy/inactive.gif";

function menuInit(levels,startItem) 
{
var NS4=(document.layers) ? true : false;
var NS6=(document.getElementById) ? true : false;
var IE4=(document.all) ? true : false;
var Konqueror = (navigator.appName == 'Konqueror');
var oldOpera = (navigator.org == 'opera') && (navigator.version < 7);
var ver4 = ((NS4 || IE4 || NS6) && (!oldOpera) && (!Konqueror)) ? true : false;
var i;
if(!ver4) {
	if (!levels) levels = 2;
	navItem=0;
	if (startItem) {
		for ( i = 1; i < navItems.length; i++ ) {
			if (navItems[i][2] == startItem) {navItem=i; break;}
		}
	}
	xxAdd(navItems[navItem][1],0,levels);
	return  '<table border=0 cellspacing=0 cellpadding=0>' + astr + '</table>';
	} else {
	return '<A id=leftmenu name=xleftmenu></A><A name=leftmenu>&nbsp;</A>';
	}
}
function afterx(s)
{
	var y=s.split('x');
	var z=y[y.length-1];
	if(parseInt(z)==NaN) {z=s;}
	return z;
}

function init(str) 
{
	var x=0;
	var y=0;
	var width = 168;
	var height = 17; 
	var bgColor = '#FFFFFF';
	var indent = 10;
	var NS4=(document.layers) ? true : false;
	var NS6=(document.getElementById)?true:false;
	var IE4=(document.all)?true:false;
	var oldOpera = (navigator.org == 'opera') && (navigator.version < 7);
	var ver4 = ((NS4 || IE4 || NS6) && (!oldOpera)) ? true : false;
	var myAUM;
	var myEL;

	var mark = '<IMG border=0 src="' + imgThis +'">';
	var marksub = '<IMG  border=0 src="' + imgSubThis + '">';

	var isNavItem = true;	// true betyder at siden er en indexside med rød markering og uden link!
	var currentItem = str;
	var currentParent = '';
	if (arguments.length > 1)	//dvs anden parameter er defineret og ikke tom så er det en underside
		{
		isNavItem = (arguments[1] == "");
		}
	else			//vi har gammel funktionskald med eller uden tilføjelse af 'u' til str
		{
		isNavItem = (str.substring(str.length-1, str.length) != "u");
		if (!isNavItem) {currentItem = str.substring(0,str.length-1);}
		}
	
/*dette lapper på Iteras fejl med ikke at skrive samme unikke id i arrayet og body-tagget og erstatter den udkommenterede nedenfor*/
	currentItem=afterx(currentItem);
	for (count=0; count<navItems.length; count++)
		{
		if ((afterx(navItems[count][2]) == currentItem) && (navItems[count][0] == 0))
			{
			if (isNavItem) {navItems[count][4] += mark; navItems[count][3] = null;} 
			else navItems[count][4] += marksub;
			currentParent=navItems[count][1];
			break;
			}
	}

/*
	for (count=0; count<navItems.length; count++)
		{
		if ((navItems[count][2] == currentItem) && (navItems[count][0] == 0))
			{
			if (isNavItem) {navItems[count][4] += mark; navItems[count][3] = null;} 
			else navItems[count][4] += marksub;
			currentParent=navItems[count][1];
			break;
			}
		}
*/
//create list if supported
if ( ver4 ) {
	//create lists: navItems[0] contains heading (treated directly here)
	listArray[0] = new List(true, width, height, bgColor);
	xbcl_MenuList[xbcl_MenuList.length]="";	// placeholder, not used
	listArray[0].setIndent(-1);	
	listArray[0].setFont('<SPAN class="nyt">','<\/SPAN>');
	navItem=0;
	auAdd(0,'',width,height,bgColor,indent);

	//	find position af leftmenu-anchor(s);
	if(NS4) {
//	  alert("NS4");
		if ( document.layers['au-nav'] ) {
			x = document.layers['au-nav'].x + document.layers['au-nav'].document.anchors.leftmenu.x;
			y = document.layers['au-nav'].y + document.layers['au-nav'].document.anchors.leftmenu.y;
			} else {x = document.anchors.leftmenu.x; y = document.anchors.leftmenu.y;}
	} else if (IE4) {
//	  alert("IE4");
		var myAUM = document.getElementById('au-nav');
		var myEl = document.getElementById('leftmenu');
		x = myEl.offsetLeft;
		y = myEl.offsetTop;
		if ( myAUM ) {x = x + myAUM.offsetLeft; y = y + myAUM.offsetTop;}
		if (navigator.OS == 'mac') {x=x+4;}
	} else if (NS6) {
//	  alert("NS6+");
		var myAUM = document.getElementById('au-nav');
		var myEl = document.getElementById('leftmenu');
		x = myEl.offsetLeft;
		y = myEl.offsetTop;
		if (y > 11) y=y-12; //fratræk en liniehøjde!!!
		if ( myAUM ) {x = x + myAUM.offsetLeft; y = y + myAUM.offsetTop;}
		}
	listArray[0].build(x, y);
	if (currentParent != '') ExpandMenu(currentParent);		
}	
else {
	//else try find and mark current item in created table
	var myAUM = xbGetElementById('aunavimg'+currentItem);
	if (!myAUM) {myAUM = xbGetElementById('aunavimg'+currentParent);}
	if (myAUM) {myAUM.src=imgMarkeret;}
	}
}

function auNavKrumme(prefix,suffix) {
  var gren='';
  var krumme = new Array(); 
  var retval=''
  var adskiller=' <img src="http://data.imf.au.dk/enhedsdesign/au_proxy/false.gif"> '
  var linkElements = document.all ? document.all.tags('meta') : document.getElementsByTagName ? document.getElementsByTagName ('meta') : new Array();
  for (var m = 0; m < linkElements.length; m++) if (linkElements[m].name == 'au-navgren') {gren = linkElements[m].content; break;}
  if (!(gren=='')) {
    for (var i = 0; i < navItems.length; i++) if(navItems[i][2]==gren) {krumme[krumme.length] = new Array(navItems[i][3],navItems[i][4]); break;}
    var parent = navItems[i][1];
    for (j = i; j>=0 ; j--) if(navItems[j][2]==parent) {krumme[krumme.length] = new Array(navItems[j][3],navItems[j][4]); parent = navItems[j][1];}
    }
  //skabt krummearray ud fra navigationsarray - nu lav returværdien
  if (krumme.length>0) {for (i = krumme.length -1; i >=0; i--) retval += krumme[i][1].link(krumme[i][0]) + adskiller;}
  //check om der findes en dokumentsamlingsstart og at denne ikke er i navigationsgrenen dvs. ikke class='au-nav-punkt'
  var linkStart='';
  var linkStartTekst='';
  var linkStartClass='';
  var linkElements = document.all ? document.all.tags('link') : document.getElementsByTagName ? document.getElementsByTagName ('link') : new Array();
  for (var m = 0; m < linkElements.length; m++) if (linkElements[m].rel == 'start') {
    linkStart = linkElements[m].href; linkStartTekst = linkElements[m].title; linkStartClass=linkElements[m].className; break;
    }
  if (!(linkStartClass=='au-nav-punkt')) {
    if (!(linkStart=='')) {
      var found=linkStart.indexOf('//');
      if (!(found>=0)) {
      //ikke fuldstændig url
        var found=linkStart.indexOf('/');
        if (found==0) {
        //relativ url
          linkStart= window.location.protocol + '//' + window.location.hostname  + linkStart;
        } else {
        //absolut url
        var pathslut=window.location.pathname.lastIndexOf('/');
        var path=window.location.pathname.substring(0,pathslut)+'/';
        linkStart= window.location.protocol + '//' + window.location.hostname + path + linkStart;
        }
      }
    }
    //tilføj denne til krummen
    if (!(linkStart=='') && !(linkStart==krumme[0][0])) {retval += linkStartTekst.link(linkStart) + adskiller};
  }
  retval=retval.substring(0,retval.length-adskiller.length);
  if (retval.length > 0) {return prefix + retval + suffix} else {return ''}
}

// -->
