// JavaScript objects and functions

// Menu object, used to keep track of sub-menues

var menudata="";
var menuDocument="";
agt=navigator.userAgent.toLowerCase();
msie=(agt.indexOf("msie")>=0)?true:false;
ver=parseInt(navigator.appVersion);

//
function analyse(menuDoc) {
  var isIE4  = menuDoc.all;
  var isNav4 = menuDoc.layers;

  menuDocument = menuDoc;

  if(isNav4) {
    database=menuDoc.layers['hidden'].document.main_menu.items.value;
  }
  else {
    database=menuDoc.main_menu.items.value;
  }
  tokenstr=new Array('<menu','<link','text=','link=','image=','flag=','target=','</');
  tokentxt=new Array('menu','link','text','link','image','flag','target','end');
  tokendef=new Array('','','link text','javascript:void(0)','../gif/blank.gif','0','_self','');
  for(i=0;i<tokenstr.length;i++) {
    tokentxt[tokentxt[i]]=tokendef[i];
    srchstr=new RegExp(tokenstr[i],"gi");
    // Remark: $§ does not work for IE4.5 on Mac
    newstr=database.replace(srchstr,("$%"+tokentxt[i]+"|"));
    database=newstr;
  }
  menudata=database.split(">");
  for(i=0;i<menudata.length;i++) {
    menudata[i]=menudata[i].split("$%");
    menudata[i][0]=new Array("link","text","image","flag","target");
    for(j=0;j<menudata[i][0].length;j++)
      menudata[i][0][menudata[i][0][j]]=tokentxt[menudata[i][0][j]];
    for(j=1;j<menudata[i].length;j++) {
      menudata[i][j]=menudata[i][j].split("|");
      menudata[i][0][menudata[i][j][0]]=menudata[i][j][1].substring(1,menudata[i][j][1].lastIndexOf('"'));
    }
  }
}

//
function makemenu(menuDoc) {
  var html=""; 
  var c=1; indt=4; lyr=false;
  var isIE4  = menuDoc.all;
  var isNav4 = menuDoc.layers;
  linetxt=new Array('<img src="../gif/blank.gif" width=%indent height=16>',
		    '<a href="javascript:toggle(%menunumber, \'%link\');"\
                        onMouseover="window.status=\'%text\';return true;"\
                        onMouseout="window.status=\'\'; return true;">\
                        <img src="../gif/menu%state.gif" border=0> </a>',
		    '<a href="javascript:toggle(%menunumber, \'%link\');"\
                        onMouseover="window.status=\'%text\';return true;"\
                        onMouseout="window.status=\'\'; return true;">\
                        <img src="../gif/%image" border=0>%text</a><br>');
  lineary=new Array("%indent","%menunumber","%state","%link","%target","%image","%text");
  linedef=new Array(0,-1,"0","javascript:void(0);","_self","../gif/blank.gif","");
  while(c<menudata.length) {
    if(menudata[c].length>1) {
      if(menudata[c][1][0]!="end") {
	for(i=0;i<lineary.length;i++)
	  lineary[lineary[i]]=linedef[i];
	var d=c;
	lineary["%indent"]=indt;
	if(menudata[c][1][0]=="menu") {
	  lineary["%menunumber"]=c;
	  lineary["%state"]=(menudata[c][0]["flag"]&1);
	  if(lineary["%state"]==0) {
	    n=1;
	    while(n>0) {
	      if(menudata[c+1][1][0]=="end") n--;
	      if(menudata[c+1][1][0]=="menu") n++;
	      c++;
	    };
	  } else {
	    indt+=8;
	  }
	}
	else {
	  lineary["%indent"]+=8;
	}
	lineary["%link"]=menudata[d][0]["link"];
	lineary["%target"]=menudata[d][0]["target"];
	lineary["%image"]=menudata[d][0]["image"];
	lineary["%text"]=menudata[d][0]["text"];
	for(i=0;i<3;i+=((menudata[d][1][0]=="menu")?1:2)) {
	  line=linetxt[i];
	  for(j=0;j<lineary.length;j++) {
	    srchstr=new RegExp(lineary[j],"gi");
	    newline=line.replace(srchstr,lineary[lineary[j]]);
	    line=newline;
	  }
	  html+=line;
	}
      } else {
	indt-=8;
      }
    }
    c++;
  }
  if(isIE4) {
    lyr=menuDoc.all["menulayer"];
  }
  else {
    if(isNav4) {
      l=menuDoc.layers["container"].document.layers["menulayer"];
      l.document.write(html);
      l.document.close();
      l.visibility="visible";
      //      l.linkColor="black";
      //      l.vlinkColor="brown";
    }
    else if(ver>4) {
      lyr=menuDoc.getElementById("menulayer");
    }
  }
  if(lyr) {
    lyr.innerHTML=html;
    lyr.style.visibility="visible";
  }
}

// 
function toggle(menunumber, page) {
  if (menunumber > 0) {
    for(i=0;i<menudata.length;i++) {
      if (i != menunumber) {
	menudata[i][0]["flag"]=0;
      }
      else {
	menudata[menunumber][0]["flag"]^=1;
      }
    }
    makemenu(document);
  }
  changePage(page);
}

 
// keep page inside frame set
function keepIn(topURL) {	
  if (top.location.href == self.location.href) {
    top.location.href = topURL;
  }
}

// keep page outside frame set
function keepOut() {
  if (top.location.href != self.location.href) {
    top.location.href = self.location.href;
  }
}

// check and reload correct frame structure
function keepInFrame(frame, topURL) {	
  if (self.name != frame) {
    top.location.href = topURL;
  }
}

// change navigator and main frame simultaneously
function changePages (navigatorURL, mainURL) {
  top.menu.location.href=navigatorURL;
  top.main.location.href=mainURL;
}

// change page in main frame
function changePage (page) {
  extension=page.split(".");
  if (extension[extension.length-1] == "pdf") {
    top.main=window.open(page, "main", "application/pdf", true);
  }
  else {
    top.main.location.href=page;
  }
}

// open page in window
function openWin (page) {
  newWin=window.open(page, "_top");
}

