function lib_bwcheck() { //Browsercheck (needed)
  this.ver = navigator.appVersion
  this.agent = navigator.userAgent
  this.dom = document.getElementById? 1: 0
  this.opera5 = this.agent.indexOf("Opera 5") > -1
  this.ie5 = (this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)? 1: 0; 
  this.ie6 = (this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)? 1: 0;
  this.ie4 = (document.all && !this.dom && !this.opera5)? 1: 0;
  this.ie = this.ie4 || this.ie5 || this.ie6
  this.mac = this.agent.indexOf("Mac") >- 1
  this.ns6 = (this.dom && parseInt(this.ver) >= 5)? 1: 0; 
  this.ns4 = (document.layers && !this.dom)? 1: 0;
  this.bw = (this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
  return this
}
var bw=new lib_bwcheck()


//Opera didn't seem to like the padding in the layers, it messes up the background-images, so here's a version without it.
if (bw.opera5) document.write("<style>DIV.clSlide{padding:0px; background-image:url(' ')}\nDIV.clSlideSub{padding:0px; background-image:url(' ')}\nDIV.clSlideSub2{padding:0px; background-image:url(' ')}</style>")

/************************************************************************************
Making cross-browser objects
************************************************************************************/
function makeMenuObj(obj,nest){
  nest=(!nest) ? "":'document.'+nest+'.'										
  this.css=bw.dom? document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+"document.layers." +obj):0;
  this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;
  this.ref=bw.dom || bw.ie4? document:bw.ns4?eval(nest+"document.layers." +obj+".document"):0;
  this.x = (bw.ns4 || bw.ns5)? this.css.left:this.css.offsetLeft;
  this.y = (bw.ns4 || bw.ns5)? this.css.top:this.css.offsetTop;		
  this.hideIt=b_hideIt; this.showIt=b_showIt; this.movey=b_movey
  this.moveIt=b_moveIt; this.moveBy=b_moveBy; this.status=0; 
  this.bgImg=b_bgImg;	this.obj = obj + "Object"; eval(this.obj + "=this"); 
  this.clipTo=b_clipTo;
  return this
}
function b_showIt() {this.css.visibility="visible"; this.status=1}
function b_hideIt() {this.css.visibility="hidden"; this.status=0}
function b_movey(y) {this.y=y; this.css.top=this.y}	

function b_moveIt(x, y) {
  this.x = x; 
  this.y = y; 
  this.css.left = this.x;
  this.css.top = this.y
}

function b_moveBy(x,y) {this.x=this.x+x; this.y=this.y+y; this.css.left=this.x;this.css.top=this.y}
function b_bgImg(img) {
  if (bw.ie || bw.dom)
    this.css.backgroundImage = "url('"+img+"')"
  else this.css.background.src = img
}

function b_clipTo(t,r,b,l,w) {
  if (bw.ns4) {
    this.css.clip.top=t;this.css.clip.right=r
    this.css.clip.bottom=b;this.css.clip.left=l
  } 
  else {
    this.css.clip="rect("+t+","+r+","+b+","+l+")"; 
    if (w) {
      this.css.width=r; this.css.height=b
    }
  }
}
/********************************************************************************
Initiating page, making objects..
********************************************************************************/
function SlideMenuInit() {
  oSlideMenu = new makeMenuObj('divSlideCont')
  oSlideMenu.moveIt(menux, menuy)
  oSlide = new Array()
  for (i=0; i<menus.length; i++) {
    oSlide[i] = new makeMenuObj('divSlide'+i,'divSlideCont')
    oSlide[i].subs = menus[i].subs
    oSlide[i].sub = new Array()
    oSlide[i].moveIt(0,mainheight*i)
    oSlide[i].starty = oSlide[i].y
    if (bw.opera) 
      oSlide[i].css.paddingLeft = "10px"
    if (!menus[i].seperator) 
      oSlide[i].bgImg(level0_regular)
    for(j=0; j<oSlide[i].subs; j++) {
      oSlide[i].sub[j] = new makeMenuObj('divSlideSub'+i+"_"+j,'divSlideCont')
      oSlide[i].sub[j].moveIt(18, oSlide[i].y+subheight*j+between)
      oSlide[i].sub[j].starty = oSlide[i].sub[j].y
      oSlide[i][j] = new Array()
      oSlide[i][j].subs = menus[i][j].subs
      oSlide[i][j].sub = new Array()
      img = level1_round
      if (oSlide[i][j].subs != 0) {
        if (j != oSlide[i].subs-1) 
          img = level1_sub
        else img = level1_sub_round
        oSlide[i].sub[j].css.color="white"
      }
      else if (j!=oSlide[i].subs-1)
        img = level1_regular
      oSlide[i].sub[j].origimg=img
      oSlide[i].sub[j].bgImg(img)
      for (a=0; a<oSlide[i][j].subs; a++) {
        oSlide[i][j].sub[a]=new makeMenuObj('divSlideSub'+i+"_"+j+"_"+a,'divSlideCont')
        oSlide[i][j].sub[a].moveIt(20,oSlide[i].sub[j].y+subheight*a+between-2)
        oSlide[i][j].sub[a].starty=oSlide[i][j].sub[a].y			
        oSlide[i][j][a]=new Array()
        oSlide[i][j][a].subs=menus[i][j][a].subs
        oSlide[i][j][a].sub=new Array()
        if (a!=oSlide[i][j].subs-1) 
          img = level2_regular
        else img = level2_round
        oSlide[i][j].sub[a].origimg = img
        oSlide[i][j].sub[a].bgImg(img)
      }
    }
  }
  oSlideMenu.showIt()
}
/********************************************************************************
Variables
********************************************************************************/
var active=-1;var going;var isthere; var sactive=-1; var sisthere=-1; var s2active=-1; var s2isthere=-1
/********************************************************************************
Switch menu function.
********************************************************************************/
function swmenu(num, snum, s2num) {
  if (snum != -1) {
    if (oSlide[num][snum].subs == 0) 
      return
    }
  if (s2num != -1) {
    if (oSlide[num][snum][s2num].subs == 0) 
      return
  }
  if ((num!=active || snum!=sactive || s2num!=s2active) && !going) {
    going = true; 
    isthere = 0;
    sisthere = 0;
    moveUp(num, snum, s2num)
  }
}
/********************************************************************************
Moving the menus upward to their original position.
********************************************************************************/
function moveUp(num,snum) {
  if (snum == -1) {
    for (i=0; i<oSlide.length; i++) {
      if (oSlide[i].y > oSlide[i].starty+pxspeed && active != i) 
        oSlide[i].moveBy(0, -pxspeed)
      else {
        if (active != i) 
          oSlide[i].moveIt(oSlide[i].x, oSlide[i].starty); 
          isthere=i
      }
    }
    if (isthere < oSlide.length-1) 
      setTimeout("moveUp("+num+", "+snum+")", timspeed)
    else swmenu2(num, snum)
  }
  else {
    if (num == oSlide.length-1) 
      isthere = num
    if (sactive != -1) { //Is out!
      //Slide subs
      j=0
      for (i=sactive+1; i<oSlide[num].sub.length; i++) {
        j++
        if (oSlide[num].sub[i].y > oSlide[num].sub[i].starty+pxspeed) 
          oSlide[num].sub[i].moveBy(0, -pxspeed)
        else {
          oSlide[num].sub[i].moveIt(oSlide[num].sub[i].x, oSlide[num].sub[i].starty); 
          sisthere = i
        }
      }
      //Slide main
      for (i=num+1; i<oSlide.length; i++) {
        if (oSlide[i].y>oSlide[i].starty + oSlide[num].sub[sactive].y + subheight*j) 
          oSlide[i].moveBy(0, -pxspeed)
        else {
          oSlide[i].moveIt(oSlide[i].x, oSlide[i].starty + oSlide[num].sub[sactive].y + subheight*j); 
          isthere=i
        }
      }
    }
    else { //Slide to the one clicked
      for (i=num+1; i<oSlide.length; i++) {
        if (oSlide[i].y > oSlide[i].starty+snum*between+between)  
          oSlide[i].moveBy(0, -pxspeed)
        else {
          oSlide[i].moveIt(oSlide[i].x, oSlide[i].starty+snum*between+between);
          isthere=i
        }
      }
    }
    if (isthere < oSlide.length-1 || (sactive != -1 && sisthere < oSlide[num].sub.length-1 && sactive != oSlide[num].sub.length-1)) 
      setTimeout("moveUp("+num+", "+snum+")", timspeed)
    else swmenu2(num,snum)
  }
}
/********************************************************************************
Switch menu 2, stuff that happens before the menus are moved down again.
********************************************************************************/
function swmenu2(num,snum){
	isthere=0;
	sisthere=0;
	if(active>-1 && snum==-1){
		//Hiding submenus
		for(j=0;j<oSlide[active].subs;j++){oSlide[active].sub[j].hideIt()}
		oSlide[active].bgImg(level0_regular)
		oSlide[active].moveIt(0,oSlide[active].starty)
	}
	if(sactive>-1){
		//Hiding submenus
		for(j=0;j<oSlide[active][sactive].sub.length;j++){oSlide[active][sactive].sub[j].hideIt()}
		oSlide[active].sub[sactive].bgImg(oSlide[active].sub[sactive].origimg)
		oSlide[active].sub[sactive].moveIt(0,oSlide[active].sub[sactive].starty)
		//Move back to place
		for(i=sactive+1;i<oSlide[active].sub.length;i++){
			oSlide[active].sub[i].moveIt(oSlide[active].sub[i].x,oSlide[active].sub[i].starty)
		}
	}
	active=num
	//Showing submenus
	if(snum>-1){
		sactive=snum
		for(j=0;j<oSlide[num][snum].sub.length;j++){oSlide[num][snum].sub[j].showIt()}
		oSlide[num].sub[snum].moveBy(0,3)
		oSlide[num].sub[snum].bgImg(level1_round2)
	}else{
		sactive=-1
		for(j=0;j<oSlide[active].subs;j++){oSlide[active].sub[j].showIt()}
		oSlide[num].moveBy(0,3)
		oSlide[num].bgImg(level0_round)
	}
	if(num!=oSlide.length-1) moveDown(num,snum)
	else{
		isthere=num
		moveDown(num,snum)
	}
}
/********************************************************************************
Moving the menus down
********************************************************************************/
function moveDown(num,snum){
	//if(num==oSlide.length-1) isthere=num
	for(i=num+1;i<oSlide.length;i++){
		if(snum==-1){
			if(oSlide[i].y<(oSlide[num].subs-1)*subheight+oSlide[i].starty+between-pxspeed) oSlide[i].moveBy(0,pxspeed)
			else{oSlide[i].moveIt(oSlide[i].x,(oSlide[num].subs-1)*subheight+oSlide[i].starty+between); isthere=i}
		}else{
			if(oSlide[i].y<(oSlide[num].subs-1)*subheight+oSlide[i].starty+between-pxspeed + (oSlide[num][snum].subs-1)*subheight+between)  oSlide[i].moveBy(0,pxspeed)
			else{oSlide[i].moveIt(oSlide[i].x,(oSlide[num].subs-1)*subheight+oSlide[i].starty+between  + (oSlide[num][snum].subs-1)*subheight+between); isthere=i}
		}
	}
	if(snum!=-1){
		for(i=snum+1;i<oSlide[num].sub.length;i++){		
			if(oSlide[num].sub[i].y<(oSlide[num][snum].subs-1)*subheight+oSlide[num].sub[i].starty+between-pxspeed) oSlide[num].sub[i].moveBy(0,pxspeed)
			else{oSlide[num].sub[i].moveIt(oSlide[num].sub[i].x,(oSlide[num][snum].subs-1)*subheight+oSlide[num].sub[i].starty+between); sisthere=i}
		}
	}
	if(snum==-1){
		if(isthere<oSlide.length-1) setTimeout("moveDown("+num+","+snum+")",timspeed)
		else going=false
	}else{
		if(isthere<oSlide.length-1 || (sisthere<oSlide[num].sub.length-1 && snum!=oSlide[num].sub.length-1)) setTimeout("moveDown("+num+","+snum+")",timspeed)
		else going=false
	}
}
var test=0
/********************************************************************************
Functions to write out the layers...
********************************************************************************/
menus=new Array(); var a=0; var b=0; var c=0; var d=0

function makeMenu(type, text, lnk, target, end) {
  str = ""; 
  tg = "";
  if (target) 
    tg = 'target="'+target+'"'
  if (!lnk) 
    lnk = "#"
  self.status = lnk
   
  if (a == 0) 
    str = '<div id="divSlideCont">\n'
  if (type == "top") {
    menus[a] = new Array();
    if (text == "seperator") {
      str += '\t<div id="divSlide'+a+'" class="clSlide"></div>\n'
      menus[a].seperator=1
    }
    else {
      str += '\t<div id="divSlide'+a+'" class="clSlide"><a class="clSlideLinks" href="'+lnk+'" '+tg+' onclick="swmenu('+a+',-1,-1); if(bw.ie || bw.ns6) this.blur(); '
      if (lnk == "#")
        str += 'return false'
      str += '"><img alt=">" src="'
      if (lnk == "#")
        str += 'sub_img.gif'
      else str += 'top_img.gif'
      str += '" class="SlideSubImage">&nbsp;&nbsp'+text+'</a><br></div>\n'
    }
    menus[a].subs=0; 
    a++; 
    b = 0
  } 
  else if (type == "sub") {
    str += '\t\t<div id="divSlideSub'+(a-1)+'_'+(b)+'" class="clSlideSub"><a '+tg+' style="text-decoration:none" onclick="swmenu('+(a-1)+','+b+',-1); if(bw.ie || bw.ns6) this.blur(); '
    if (lnk == "#") 
      str += 'return false'
    str += '" href="'+lnk+'" class="clSlideSubLinks">&nbsp;&nbsp;'+text+'</a><br></div>\n'
    b++; 
    menus[a-1].subs = b; 
    menus[a-1][b-1] = new Array(); 
    c = 0; 
    menus[a-1][b-1].subs = 0
  } 
  else if (type == "sub2") {
    str+='\t\t<div id="divSlideSub'+(a-1)+'_'+(b-1)+'_'+c+'" class="clSlideSub2"><a '+tg+' href="'+lnk+'" class="clSlideSub2Links">àà'+text+'</a><br></div>\n'
    c++; 
    menus[a-1][b-1].subs = c; 
    menus[a-1][b-1][c-1] = new Array(); 
    d=0; 
    menus[a-1][b-1][c-1].subs = 0
  }
  if (end) 
    str += "</div>"
  document.write(str)
}
function preLoadBackgrounds(){
  for(i=0; i<arguments.length; i++){
    this[i] = new Image()
    this[i].src = arguments[i]
  }
  return this
}