/************************************************************
Coolmenus Beta 4.06 - Copyright Thomas Brattli - www.dhtmlcentral.com
Last updated: 11.13.02

v4.06 - with basic frame support
*************************************************************/
/*Browsercheck object*/
function cm_bwcheck(){
	//In theory we should use object detection, but this script needs work-arounds for almost every browser...
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent.toLowerCase()
	this.dom=document.getElementById?1:0
	this.ns4=(!this.dom && document.layers)?1:0;
	this.op=window.opera 
	this.moz=(this.agent.indexOf("gecko")>-1 || window.sidebar)
	this.ie=this.agent.indexOf("msie")>-1 && !this.op
	if(this.op){
		this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1)
		this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1)
		this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it
	}else if(this.moz) this.ns6 = 1
	else if(this.ie){
		this.ie4 = !this.dom && document.all
  	this.ie5 = (this.agent.indexOf("msie 5")>-1)
  	this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
  	this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55
	}
	this.mac=(this.agent.indexOf("mac")>-1)
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7)
  this.usedom= this.ns6||this.op7//Use dom creation
  this.reuse = this.ie||this.op7||this.usedom //Reuse layers
  this.px=this.dom&&!this.op5?"px":""
	return this
}
var bw=new cm_bwcheck()
/*Variable declaration*/
var cmpage

/*Crossbrowser objects functions*/
function cm_message(txt)
{
	alert(txt); 
	return false
}

function cm_makeObj(obj,nest,o,doc)
{ //Changed in v4.05
  if(!doc) 
		doc=document 
		
  if(bw.usedom && o) 
		this.evnt = o
  else
  {
		nest=(!nest) ? "doc." : 'doc.layers.' + nest + '.'
    
    this.evnt = bw.dom ? doc.getElementById(obj): bw.ie4?doc.all[obj] : bw.ns4 ? eval(nest+"layers." +obj) : 0;
  }
  
  if(!this.evnt) 
		return cm_message('The layer does not exist ('+obj+')' +'- \nIf your using Netscape please check the nesting of your tags (on the entire page)\nNest:'+nest)
		
  this.css=bw.dom||bw.ie4 ? this.evnt.style : this.evnt; this.ok=0
  this.ref=bw.dom||bw.ie4 ? doc : this.css.document; 
  this.obj = obj + "Object"; 	
  
  eval(this.obj + "=this");
  
  this.x=0; 
  this.y=0; 
  this.w=0; 
  this.h=0; 
  this.vis=0; 
  
  return this
}

cm_makeObj.prototype.moveIt = function(x,y)
{
	this.x=x;
	this.y=y; 
	this.css.left=x+bw.px;
	this.css.top=y+bw.px;
}

cm_makeObj.prototype.showIt = function(o)
{
	this.css.visibility="visible"; 
	this.vis=1; 
	
	if(bw.op5 && this.arr)
	{ 
		this.arr.showIt(); 		
	}		
}//alert('showing arrow')}} 

cm_makeObj.prototype.hideIt = function(no)
{
	this.css.visibility="hidden"; 
	this.vis=0;
}

cm_makeObj.prototype.clipTo = function(t,r,b,l,setwidth)
{ 	
	this.w=r; 
	this.h=b; 

	if(bw.ns4)
	{
		this.css.clip.top=t;
		this.css.clip.right=r; 
		this.css.clip.bottom=b;
		this.css.clip.left=l
	}
	else
	{
		if(t<0)
			t=0;
			
		if(r<0)
			r=0;
			
		if(b<0)
			b=0;
		
		if(b<0)
			b=0; 
									
		this.css.clip="rect(" + t + bw.px + "," + r + bw.px + "," + b + bw.px + "," + l + bw.px + ")";

		if(setwidth)
		{
			if(bw.op5||bw.op6)
			{
				this.css.pixelWidth=r; 
				this.css.pixelHeight=b;
			}
			else
			{
				this.css.width=r+bw.px; 
				this.css.height=b+bw.px;
			}
		}
	}		
}

function cm_active(on,h)
{
	if(this.o.arr)
		
		//on ? this.o.arr.hideIt() : bw.op5 ? this.o.arr.showIt() : this.o.arr.css.visibility="inherit"
		
		// Modified by RYTTER			
		//on ? this.o.arr.showIt() : bw.op5 ? this.o.arr.hideIt() : this.o.arr.hideIt()//this.o.arr.css.visibility="inherit"
		
		// Sørger for at Arrows vises både ved MouseOver og MouseOut		
		on ? this.o.arr.showIt() : bw.op5 ? this.o.arr.showIt() : this.o.arr.css.visibility="inherit"
				
  if(bw.reuse || bw.usedom)
  {
    if(!this.img2) 
			this.o.evnt.className = on ? this.cl2 : this.cl			
    else 
			this.o.ref.images["img"+this.name].src=on ? this.img2.src : this.img1.src; //Changed v4.05
			
    if(on && bw.ns6)
    {
			this.o.hideIt(); 
			this.o.css.visibility='inherit' 
		}; //netscape 6 bug fix  
  }
  else
  {  
    if(!this.img2)
    { 
			if(on) 
				this.o.over.showIt(); 
			else 
				this.o.over.hideIt();
    }
    else 
			this.o.ref.images["img" + this.name].src = on ? this.img2.src : this.img1.src;
  }
  
  this.isactive=on ? 1 : 0    
}

/***Pageobject **/
function cm_page(frame)
{ //Changed v4.05
  if(!frame) 
		frame = self 
		
  this.x=0; 
  this.x2 =(!bw.ie) ? frame.innerWidth : frame.document.body.offsetWidth - 20;
  this.y=0; 
  this.orgy = this.y2= (!bw.ie) ? frame.innerHeight : frame.document.body.offsetHeight - 6;
  this.x50=this.x2/2; 
  this.y50=this.y2/2; 
  return this
}

/***check positions**/
function cm_cp(num,w,minus)
{
	if(num)
	{
		if(num.toString().indexOf("%")!=-1)
		{
			var t = w ? cmpage.x2 : cmpage.y2; 
			num=parseInt((t*parseFloat(num)/100))
		
			if(minus) 
				num-=minus 
		}
		else 
			num=eval(num);
	} 
	else 
		num=0; 
		
	return num
}

/**Level object**/
function cm_makeLevel()
{//changed 4.06
	var c=this
	var a=arguments; 
	
	c.width=a[0] || null; 
	c.height=a[1] || null; 
  c.regClass=a[2] || null; 
  
  c.overClass=a[3] || null; 
  c.borderX = a[4]>-1 ? a[4] : null; 
  c.borderY=a[5]>-1 ? a[5] : null; 
  
  c.borderClass=a[6] || null; 
  c.rows=a[7]>-1 ? a[7] : null; 
  c.align=a[8] || null; 
  c.offsetX=a[9] || null; 
  c.offsetY=a[10] || null; 
  c.arrow=a[11] || null; 
  c.arrowWidth=a[12] || null; 
  c.arrowHeight=a[13] || null; 
  c.roundBorder=a[14] || null; 
  
  return c
}

/***Making the main menu object**/
function makeCM(name)
{ //Changed v4.06
  var c=this; 
  c.mc=0; 
  c.name = name; 
  c.m=new Array(); 
  
  c.scrollY=-1; 
  c.level=new Array(); 
  c.l=new Array(); 
  c.tim=100; 
  c.isresized=0;
  c.isover=0; 
  c.zIndex=100; 
  c.frameStartLevel=1; 
  c.bar=0; 
  c.z=0; 
  c.totw=0; 
  c.toth=0; 
  c.maxw=0; 
  c.maxh=0; 
  
  cmpage = new cm_page(); 
  c.constructed = 0;
      
	return this
}

//events
makeCM.prototype.onshow=""; 
makeCM.prototype.onhide=""; 
makeCM.prototype.onconstruct="";

/***Creating layers**/
//str+=m.d3=cm_divCreate(id+'_a','clCMAbs','<img alt="" height="'+aw+'" width="'+ah+'" src="'+root+arrow+'" />',0,1,d1); 	
function cm_divCreate(id,cl,txt,w,c,app,ex,txt2)
{
  if(bw.usedom)
  {
		var div=document.createElement("DIV"); 
		div.className=cl; 
		div.id=id; 
		
    if(txt) 
			div.innerHTML=txt; 
			
		if(app)
		{
			app.appendChild(div); 
			return div
		}
    
    if(w) 
			document.body.appendChild(div); 
			
		return div
  }
  else
  {
		var dstr='<div id="'+id+'" class="'+cl+'"' 
    
    if(ex&&bw.reuse) 
			dstr+=" "+ex; 
			
		dstr+=">"+txt;
									
		if(txt2) 
			dstr+=txt2; 
			
    if(c) 
			dstr+='</div>'; 
			
		if(w) 
			document.write(dstr); 
		else 
			return dstr
  }
  return ""
}

/***Getting layer string for each menu**/
function cm_getLayerStr(m,app,name,fill,clb,arrow,ah,aw,root)
{
  var no=m.nolink,arrstr=''
  var l=m.lev
  var str=''
  var txt=m.txt
  var ev=''
  var id=name + '_' + m.name
  var d1; 

  if(app) 
		d1=app
		
  if((!bw.reuse || l==0) && !no)
  {
    ev=' onmouseover="' + name+'.showsub(\''+m.name+'\')"' +' onmouseout="'+name+'.mout(\''+m.name+'\')"' +' onclick="'+name+'.onclck(\''+m.name+'\'); return false" '
  }
  
  if(bw.reuse && l!=0) 
		txt=''; 
		
	if(l==0) 
		str+=d1=cm_divCreate(id+'_0',clb,''); 
		
	str+=m.d2=cm_divCreate(id,m.cl,txt,0,0,d1,ev)
	
  if(l == 0 && bw.usedom)
  { 
    m.d2.onclick=new Function(name+'.onclck("'+m.name+'")'); 
    m.d1=d1; 
    m.d2.onmouseover=new Function(name+'.showsub("'+m.name+'")'); 
    m.d2.onmouseout=new Function(name+'.mout("'+m.name+'")')
  }
  
  if(!bw.reuse && !m.img1 && !no)
  {
    str+=cm_divCreate(id+'_1',m.cl2,txt,0,1)
    str+=cm_divCreate(id+'_3',"clCMAbs",'<a href="#" '+ev+'><img alt="" src="'+root+fill+'" width="'+m.w+'" height="'+m.h+'" border="0" /></a>',0,1)
  }
  
  str+='</div>'; 
  
  if(l==0)
	{
	// XXXXXX
		if(arrow)
			str+=m.d3=cm_divCreate(id+'_a','clCMAbs','<img alt="" height="'+aw+'" width="'+ah+'" src="'+root+arrow+'" />',0,1,d1); 	
			
		str+="</div>";
		
	}
  
	str+="\n"; 
		
	if(!bw.reuse)
	{
		m.txt=null; 
		m.d2=null; 
		m.d3=null;
	}
		
	if(bw.usedom)
	{ 
		if(l==0) 
			document.body.appendChild(d1); 
			
		str=''
	}
  return str
}

/***get align num from text (better to evaluate numbers later)**/
function cm_checkalign(a)
{
  switch(a)
  {
    case "right": return 1; break; 
    case "left": return 2; break;
    case "bottom": return 3; break; 
    case "top": return 4; break;
    case "righttop": return 5; break; 
    case "lefttop": return 6; break;
    case "bottomleft": return 7; break; 
    case "topleft": return 8; break;
  }
  return null
}

/**Making each individual menu **/
makeCM.prototype.makeMenu=function(name,parent,txt,lnk,targ,w,h,img1,img2,cl,cl2,align,rows,nolink,onclick,onmouseover,onmouseout,offsetX,offsetY)
{
  var c = this; 
  
  if(!name) 
		name = c.name + "" + c.mc; 
		
	var p = parent!="" && parent && c.m[parent] ? parent : 0;
	
  if(c.mc==0)
  {
		//Added 4.07 - bug(?) in opera 7 - you cannot dom-add layers created in one document to another one (or so it seems) - so turn of usedom
		if(bw.op7 && this.frames)	
			bw.usedom=0
			
		var tmp=location.href;
		
    if (tmp.indexOf('file:')>-1||tmp.charAt(1)==':') 
			c.root=c.offlineRoot; 
		else 
			c.root=c.onlineRoot
    
    if(c.useBar)
    {
			if(!c.barBorderClass) 
				c.barBorderClass=c.barClass; 
				
			c.bar1 = cm_divCreate(c.name+'bbar_0',c.barClass,'',0,1);
				
			c.bar = cm_divCreate(c.name+'bbar',c.barBorderClass,'',1,1,0,0,c.bar1); 
				
			if(bw.usedom) 
				c.bar.appendChild(c.bar1);    				
		}
	}
	
	var create=1,img,arrow; 
	
	var m = c.m[name] = new Object(); 
	m.name=name; 
	m.subs=new Array(); 
	m.parent=p; 
	m.arnum=0; 
	m.arr=0;
	m.offsetX=offsetX;
	m.offsetY=offsetY;
	
  var l = m.lev = p ? c.m[p].lev+1 : 0; 
  c.mc++; 
  m.hide=0;
  
  if(l>=c.l.length)
  {
    var p1,p2=0; 
    
    if(l>=c.level.length) 
			p1=c.l[c.level.length-1];			
    else 
			p1=c.level[l]; 
			
		c.l[l]=new Array(); 
		
		if(!p2) 
			p2=c.l[l-1]
			
    if(l!=0)
    { 
			if(isNaN(p1.align)) 
				p1["align"]=cm_checkalign(p1.align)
				
      for(var i in p1)
      {
				if(i!="str"&&i!="m")
				{
					if(p1[i]==null) 
						c.l[l][i]=p2[i]; 
					else c.l[l][i]=p1[i] 
				}
			}
    }
    else
    {
			c.l[l]=c.level[0]; c.l[l].align=cm_checkalign(c.l[l].align)
		}
    
    c.l[l]["str"]=''; 
    c.l[l].m=new Array(); 
  
    if(!c.l[l].borderClass) 
			c.l[l].borderClass=c.l[l].regClass
    
    c.l[l].app=0; 
    c.l[l].max=0; 
    c.l[l].arnum=0; 
    c.l[l].o=new Array(); 
    c.l[l].arr=new Array()
    c.level[l]=p1=p2=null
    
    if(l!=0) 
			c.l[l].str=c.l[l].app=cm_divCreate(c.name+ '_' +l+'_0',c.l[l].borderClass,'')
  }
  
  if(p)
  {
		p = c.m[p]; 
		p.subs[p.subs.length]=name; 
		
    if(p.subs.length == 1 && c.l[l-1].arrow)
    { 
			p.arr=1; 
      if(p.parent)
      {
				c.m[p.parent].arnum++
				
        if(c.m[p.parent].arnum > c.l[l-1].arnum)
				{
          c.l[l-1].str+=c.l[l-1].arr[c.l[l-1].arnum]=cm_divCreate(c.name+ '_a' +(l-1)+'_'+c.l[l-1].arnum,'clCMAbs','<img height="'+c.l[l-1].arrowHeight +'" width="'+c.l[l-1].arrowWidth+'" src="'+c.root+c.l[l-1].arrow+'" alt="" />',0,1,c.l[l-1].app); 
          c.l[l-1].arnum++ 
        }
    }
	}
	if(bw.reuse) 
		if(p.subs.length>c.l[l].max) 
			c.l[l].max = p.subs.length; 
		else 
			create=0
  }
  
  m.rows = rows>-1 ? rows : c.l[l].rows; 
  m.w = cm_cp(w||c.l[l].width,1); 
  m.h = cm_cp(h||c.l[l].height,0); 
  m.txt = txt; 
  m.lnk = lnk; 
  
  if(align) 
		align=cm_checkalign(align); 
		
	m.align=align || c.l[l].align; 
	m.cl=cl=cl || c.l[l].regClass; 
	m.targ=targ; m.cl2=cl2||c.l[l].overClass; 
	m.create=create;  
	m.mover=onmouseover; 
	m.mout=onmouseout; 
  m.onclck=onclick; 
  m.active = cm_active; 
  m.isactive=0; 
  m.nolink=nolink
  
  if(create) 
		c.l[l].m[c.l[l].m.length] = name
		
  if(img1)
  {
		m.img1 = new Image(); 
		m.img1.src = c.root + img1; 
		
		if(!img2) 
			img2=img1; 
		
		m.img2 = new Image(); 
		m.img2.src = c.root + img2;
    m.cl="clCMAbs"; 
    m.txt=''; 
    
    if(!bw.reuse && !nolink) 
			m.txt = '<a href="#" onmouseover="' + c.name + '.showsub(\'' + name + '\')" onmouseout="' + c.name + '.mout(\'' + name + '\')" onclick="' + c.name + '.onclck(\'' + name+'\'); return false">';;
    
    m.txt+='<img alt="" src="' + c.root + img1 + '" width="' + m.w + '" height="' + m.h + '" id="img' + m.name + '" '
    
    if(bw.dom && !nolink) 
			m.txt+='style="cursor:pointer; cursor:hand"'; 
			
		if(!bw.reuse)
		{
			if(!bw.dom)	
				m.txt+='name="img'+m.name+'"';
				
			m.txt+=' border="0"'
		}; 
		
		m.txt+=' />'; 
		
		if(!bw.reuse&&!nolink) 
			m.txt+='</a>'
		}
		else
		{
			m.img1=0; 
			m.img2=0
		}; 
  
		if(l==0 || create) 
			c.l[l].str+=cm_getLayerStr(m,c.l[l].app,c.name,c.fillImg,c.l[l].borderClass,c.l[l].arrow,c.l[l].arrowWidth,c.l[l].arrowHeight,c.root)
  
		if(l==0)
		{
			if(m.w > c.maxw) 
				c.maxw = m.w; 
				
			if(m.h > c.maxh) 
				c.maxh = m.h; 
		
			c.totw+=c.pxBetween + m.w + c.l[0].borderX;
			c.toth+=c.pxBetween + m.h + c.l[0].borderY;
		}
		
		if(lnk && !onmouseover)
		{
			var path=lnk.indexOf("mailto:")>-1||lnk.indexOf("http://")>-1 ? "" : c.root
		
			m.mover="self.status='" + path + m.lnk + "'"
			
			if(!m.mout) 
				m.mout=""; 
			
			m.mout+=";self.status='';"
	}
	
}

/**Getting x/y coords for subs **/
makeCM.prototype.getcoords=function(m,bx,by,x,y,maxw,maxh,ox,oy)
{
  var a=m.align; 
  
  x+=m.o.x; 
  y+=m.o.y
  
  switch(a)
  {
    case 1:  x+=m.w+bx; break; 
    case 2:  x-=maxw+bx; break;
    case 3:  y+=m.h+by; break; 
    case 4:  y-=maxh+by; break;
    case 5:  x-=maxw+bx; y-=maxh-m.h; break;
    case 6:  x+=m.w+bx; y-=maxh-m.h; break;
    case 7:  y+=m.h+by; x-=maxw-m.w; break;
    case 8:  y-=maxh+by; x-=maxw-m.w+bx; break;
  }//Added v4.05
  
  if(m.lev == this.frameStartLevel-1 && this.frames)
  {
    switch(a)
    {
      case 1:  x=0; break; 
      case 2:  x=this.cmpage.x2-maxw; break;
      case 3:  y=0; break; 
      case 4:  y-=maxh+by; break;
      case 5:  x-=maxw+bx; y-=maxh-m.h; break;
      case 6:  x+=m.w+bx; y-=maxh-m.h; break;
      case 7:  y+=m.h+by; x-=maxw-m.w; break;
      case 8:  y-=maxh+by; x-=maxw-m.w+bx; break;
    }
  }
  m.subx = x + ox; 
  m.suby = y + oy;			        
}

/**Showing sub elements**/
makeCM.prototype.showsub=function(el)
{ //Changed v4.06
  var c=this
  var pm=c.m[el]		// Parent menu - menu som der skal vises submenuer for
  var m
  var o
  var nl
         		
  // Added by Rytter - skjuler den 'modsatte' menu ved visning af menupunkt
  if (c.type ==  '1')
  {
		if (window.leftMenu != null)
			window.leftMenu.hideMenu();
	}
  else
  {
		if (window.topMenu != null)
			window.topMenu.hideMenu();
	}
		
  if(!pm.b ||(c.isresized && pm.lev > 0)) 
		pm.b=c.l[pm.lev].b; 
		
	c.isover=1
	
  clearTimeout(c.tim);
  
  var ln=pm.subs.length		// Antal submenu-elementer
  var l=pm.lev + 1				// Næste niveau efter parentniveau
  
  if(c.l[pm.lev].a == el && l != c.l.length && !c.openOnClick)
  {
		if(c.l[pm.lev+1].a) 
			c.hidesub(l+1,el); 
			
		return
	}
  
  // Modified by RYTTER
  
  //if (c.type == 2) // venstreMenu
	//	c.hidesub(l,el,1);  // Holder undermenu åbent indtil der skal vises en anden menu eller undermenu
	//else // topMenu
	//	c.hidesub(l,el); 
  
  c.hidesub(l,el);
    
  if(pm.mover) 
		eval(pm.mover); 
		
	if(!pm.isactive) 
		pm.active(1);
		
  c.l[pm.lev].a = el; 
  
  if(ln==0) 
		return; 
		
	if(c.openOnClick && !c.clicked) 		
		return//Added v4.06
	
	// Added by RYTTER
	//	
	//if (c.type == 2)
	//	if (c.openOnClick)
	//		c.clicked = 0;
					
	if(!c.l[l].b) 
		return //Added v4.05
		
  var b = c.l[l].b
      
  var bx=c.l[l].borderX
  var by=c.l[l].borderY
  var rows=pm.rows  
	var rb=c.l[l].roundBorder;//added 4.06
  var x=bx+rb
  var y=by+rb
  var maxw=0
  var maxh=0
  var cn=0; 
  
  b.hideIt()
  
  for(var i=0; i < c.l[l].m.length; i++)
  {  
    if(!bw.reuse) 
			m=c.m[c.l[l].m[i]]			
    else 
			m=c.m[c.m[el].subs[i]]
			
    if(m && m.parent==el&&!m.hide)
    {
      if(!bw.reuse) 
				o=m.o; 
			else o=m.o=c.l[l].o[i]
			
      if(x!=o.x||y!=o.y) 
				o.moveIt(x,y); 
			
			nl=m.subs.length //changed 4.06 = Antal submenuer
										
      if(bw.reuse)
      {
        if(o.w!=m.w || o.h!=m.h) 
					o.clipTo(0,m.w,m.h,0,1)
					
        if(o.evnt.className!=m.cl)
        { 
          m.isactive=0; 
          o.evnt.className=m.cl
          
          if(bw.ns6)
          {
						o.hideIt(); 
						o.css.visibility='inherit'
					} //NS6 bugfix
        }
        
        if(bw.ie6) 
					b.showIt()//IE6 bugfix (scrollbars)
        
        o.evnt.innerHTML=m.txt; 
        
        if(bw.ie6) 
					b.hideIt() 
					
				if(!m.nolink)
				{
          o.evnt.onmouseover=new Function(c.name+".showsub('"+m.name+"')")
          o.evnt.onmouseout=new Function(c.name+".mout('"+m.name+"')") //Added v4.05
          o.evnt.onclick=new Function(c.name+".onclck('"+m.name+"')")
          
          if(o.oldcursor)
          {
						o.css.cursor=o.oldcursor; o.oldcursor=0;
					}
        }
        else
        {
					o.evnt.onmouseover=''; 
					o.evnt.onclick='';  
					
					if(o.css.cursor=='') 
						o.oldcursor=bw.ns6 ? "pointer" : "hand"; 
					else 
						o.oldcursor=o.css.cursor; 
						
					o.css.cursor="auto"
				}        
      }
      
      if(m.arr)
      {
				o.arr=c.l[l].arr[cn]; 
				o.arr.moveIt(x + m.w-c.l[l].arrowWidth-3,y+m.h/2-(c.l[l].arrowHeight/2)); 
				o.arr.css.visibility="inherit"; 
				cn++;
			} 
			else 
				o.arr=0
     
			if(!rows)
			{
				y+=m.h+by; 
				
				if(m.w>maxw) 
					maxw=m.w; 
					
				maxh=y;
			}
      else
      {
				x+=m.w+bx; 
				
				if(m.h>maxh) 
					maxh=m.h; 
					
				maxw=x;
			}
      o.css.visibility="inherit"; 
      
      if(bw.op5||bw.op6) 
				o.showIt()
    }
    else
    {
			o = c.m[c.l[l].m[i]].o; 
			
			o.hideIt();
		} 
	}
  
  if(!rows) 
		maxw+=bx*2+rb; 
	else 
		maxh+=by*2+rb; //changed 4.06
		
	if(rb)
	{
		maxw+=rb; 
		maxh+=rb;
	}//added 4.06
	
	b.clipTo(0,maxw,maxh,0,1)	
	
	//Check frame scroll
	if(c.chkscroll) 
		c.chkscroll() //Added v4.05 - not the best solution
  
  // Added by RYTTER
  var offsetX = pm.offsetX ? pm.offsetX : c.l[l-1].offsetX
  var offsetY = pm.offsetY ? pm.offsetY : c.l[l-1].offsetY
     
  if(c.chkscroll || !pm.subx || !pm.suby || c.scrollY>-1 || c.isresized) 
		c.getcoords(pm,c.l[l-1].borderX,c.l[l-1].borderY,pm.b.x,pm.b.y,maxw,maxh,offsetX,offsetY) //Changed 4.06
		
	x=pm.subx; 
	
	if(c.chkscroll && l == c.frameStartLevel) 
		pm.suby+=c.scrollY; 
		
	y=pm.suby; 
	b.moveIt(x,y); 
		
	if(c.onshow) 
		eval(c.onshow); 
				
	b.showIt()		
}

/**Hide sub elements **/
makeCM.prototype.hidesub=function(l,el,keepSubs)
{ //Changed v4.05			
  var c = this,tmp,m,i,j,hide    
  
  if(!l) 
  {		
		l=1; 
		hide=1; 
		c.clicked=0
	}
	
  for(i=l-1; i<c.l.length; i++)
  {	
		if (!keepSubs)
		{			
			if(i>0 && i>l-1) 
				if(c.l[i].b) 
					c.l[i].b.hideIt()//Changed v4.05
		}
		
    if(c.l[i].a && c.l[i].a!=el)
    {
      m=c.m[c.l[i].a]; 
      m.active(0,1); 
      
      if(m.mout) 
				eval(m.mout); 
			
			c.l[i].a=0
			
      if(i>0 && i > l-1) 
				if(bw.op5 || bw.op6) 
					for(j=0; j<c.l[i].m.length; j++) 
						c.m[c.l[i].m[j]].o.hideIt()					
    }
    
    if(i>l)
    {
			for(j=0; j<c.l[i-1].arnum; j++)
			{				
				c.l[i-1].arr[j].hideIt(); 				
				
				if(bw.op6) 
					c.l[i-1].arr[j].moveIt(-1000,-1000)
			}
		} //opera bug
  }
  
  if(hide && c.onhide) 
		eval(c.onhide) //onhide event
}

/***Make all menu div objects**/
makeCM.prototype.makeObjects=function(nowrite,fromframe)
{ //Changed v4.06
  var c = this,oc,name,bx,by,w,h,l,no,ar,id,nest,st=0,en=c.l.length,bobj,o,m,i,j
  //Added v4.05
  if(fromframe)
  {
    st = this.frameStartLevel
    
    this.body = fromframe.document.body
    this.doc = fromframe.document
    this.deftarget=fromframe
    this.cmpage = new cm_page(fromframe)
  }
  else
  {
    this.body=document.body
    this.doc=document
    if(this.frames) en = this.frameStartLevel
    this.deftarget=self
  }
  if(!nowrite)
  {
    for(i=st;i<en;i++)
    { //changed 4.06
			if(!bw.usedom) 
				this.doc.write(c.l[i].str)				
      else 
				if(i>0) 
					this.body.appendChild(c.l[i].app)
      if(!this.frames) 
				c.l[i].str=null
    }
	}
  c.z=c.zIndex+2
  
  for(i=st;i<en;i++)
  {
		oc=0
    if(i!=0)
    {
			bobj=c.l[i].b = new cm_makeObj(c.name + "_"+i+"_0","",c.l[i].app,this.doc); 
			bobj.css.zIndex=c.z; 
			
			if(bw.dom) 
				bobj.css.overflow='hidden'
		}; 
			
		bx=c.l[i].borderX; 
		by=c.l[i].borderY; 
		c.l[i].max=0;
    
    for(j=0;j<c.l[i].m.length;j++)
    {
      m = c.m[c.l[i].m[j]]; 
      name=m.name; 
      w=m.w; 
      h=m.h; 
      l=m.lev; 
      no=m.nolink;
      
      if(i>0)
      {
				m.b = bobj; 
				nest=i
			}
      else
      {
				m.b = new cm_makeObj(c.name + "_"+name+"_0","",m.d1,this.doc); 
				m.b.css.zIndex=c.z; 				
				m.b.clipTo(0,w+bx*2,h+by*2,0,1); 
				nest=name
			}
      id = c.name + "_"+name; nest=c.name + "_"+nest;
      if(m.create)
      {
        o=m.o=new cm_makeObj(id,nest+"_0",m.d2,this.doc); 
        o.z=o.css.zIndex=c.z+1; 
        
        if(bw.reuse)
        {
					c.l[l].o[oc]=o; 
					oc++
				}; 
        if(l==0&&m.img1) 
					o.css.visibility='inherit'; 
					
				if(bw.op5) 
					o.showIt(); 
					
				o.arr=0;
      }
      if(!bw.reuse || l==0) 
				o.clipTo(0,w,h,0,1); 
			
			o.moveIt(bx,by); 
			o.z=o.css.zIndex=c.z+2
      
      if(j<c.l[i].arnum)
      {
        c.l[i].arr[j]=new cm_makeObj(c.name+"_a"+i+"_"+j,nest+"_0",nowrite?0:c.l[i].arr[j],this.doc)
        c.l[i].arr[j].css.zIndex=c.z+30+j;
      }
      else if(l==0 && m.arr==1)
      {
        o.arr=new cm_makeObj(id+"_a",nest+"_0",m.d3,this.doc)
        o.arr.moveIt(bx+m.w-c.l[i].arrowWidth-3,by+m.h/2-(c.l[i].arrowHeight/2)); 
        o.arr.css.zIndex=c.z+20;
      }
      
      if(!no && !bw.reuse && !m.img1)
      {  
        o.over=new cm_makeObj(c.name + "_"+name+"_1",nest+"_0"+".document.layers."+id,"",this.doc)
        o.over.moveIt(0,0); 
        o.over.hideIt(); 
        o.over.clipTo(0,w,h,0,1); 
        o.over.css.zIndex=c.z+3
        img=new cm_makeObj(c.name + "_"+name+"_3",nest+"_0"+".document.layers."+id,"",this.doc); 
        img.moveIt(0,0)
        img.css.visibility="inherit"; 
        img.css.zIndex=c.z+4; 
        
        if(bw.op5) 
					img.showIt()
      }
      c.z++; 
    }
  }
	if(fromframe)
	{	///Set scroll vars - added v4.05
		c.chkscroll = function()
		{//changed 4.06
			if (bw.ie&&!bw.ie6) 
				this.scrollY=this.body.scrollTop;				
			else if (bw.ie6 || bw.op7)
			{
				if (this.doc.compatMode && document.compatMode != "BackCompat")					
					this.scrollY=this.doc.documentElement.scrollTop
				else 
					this.scrollY=this.body.scrollTop
			}
			else 
				this.scrollY=this.deftarget.pageYOffset;
		}
	}
}
makeCM.prototype.hideMenu = function()
{
		var c = this;
		var m;
						
		if(c.l[0].a)  // Hvis der er et aktivt menupunkt i niveau 0
    {
      c.m[c.l[0].a].active(0,1)
      c.l[0].a =0 // Nulstil aktivt menupunkt i niveau 0
    }
		
		for(i=c.frameStartLevel; i<c.l.length; i++)
    {
			// Added by RYTTER
			// Skjuler alle arrows
			for (j=0; j<c.l[i].m.length; j++)
			{
				m = c.m[c.l[i].m[j]];
				o = m.b;
								
				if(m.o.arr)
					m.o.arr.hideIt(); 					
			}
			
      if(c.l[i].b)
      {
        c.l[i].b.hideIt()
        //c.l[i].b = null
        
        // Skjuler niveau 2 menupunkter
        for(j=0; j<c.l[i].m.length; j++)
        {										
					c.m[c.l[i].m[j]].o.hideIt();					
        }
      }
    }    
    
    c.isover=0;				    
}

/**Onmouseout**/
makeCM.prototype.mout = function(el)
{ //Changed v4.06
	
	var c = this; 
	clearTimeout(c.tim); 
	c.isover = 0; 
	var f="if(!"+c.name+".isover)"+c.name+".hidesub()"
	
  if(!c.closeOnClick) 
		c.tim = setTimeout(f,c.wait)
	else
	{		
		if(bw.ns4)
		{ 
			document.captureEvents("Event.MOUSEDOWN"); 
			document.onmousedown=new Function(f)
		}
		else 
			document.onclick=new Function(f); 
			
		if(this.frames)
		{
			if(bw.ns4)
			{
				this.doc.captureEvents("Event.MOUSEDOWN"); 
				this.doc.onmousedown=new Function(f)
			}
			else 
				this.doc.onclick=new Function(f)
		}		
	}
  /* Remove selected style on mouseout*/
  if(document.getElementById(c.name + "_" + el) != null)
  {
    document.getElementById(c.name + "_" + el).className = c.l[0].regClass;
    var pm=c.m[el];
 
    pm.active(0);     
  }
  /* ******* */
}

/**Constructing and initiating top items and bar**/
makeCM.prototype.construct=function(nowrite)
{ //Changed v4.06
  var c=this; 
  
  if(!c.l[0] || c.l[0].m.length == 0); 
		//return cm_message('No menus defined');
		
	if(!nowrite)
	{
		for(var i=1;i<c.l.length;i++)
		{
			c.l[i].str+="</div>"
		}
	} //Added 4.06
  
  c.makeObjects(nowrite); 
  cmpage = new cm_page(); 
  
  var mpa,o,maxw=c.maxw,maxh=c.maxh,i,totw=c.totw,toth=c.toth,m,px=c.pxBetween
  var bx=c.l[0].borderX,by=c.l[0].borderY,x=c.fromLeft,y=c.fromTop,mp=c.menuPlacement,rows=c.rows
  if(rows)
  {
		toth=maxh+by*2; 
		totw=totw-px+bx;
	}
	else
	{
		totw=maxw+bx*2; 
		toth=toth-px+by;
	}
  switch(mp)
  {
    case "center": x=cmpage.x2/2-totw/2; if(bw.ns4) x-=9; break;
    case "right": x=cmpage.x2-totw; break;
    case "bottom": 
    case "bottomcenter": y=cmpage.y2-toth; if(mp=="bottomcenter") x=cmpage.x2/2-totw/2; break;
    default: if(mp.toString().indexOf(",")>-1) mpa=1; break;
  }
  
  for(var i=0;i<c.l[0].m.length;i++)
  {
    m = c.m[c.l[0].m[i]]; 
    o = m.b; 
    
    if(mpa) 
			rows ? x=cm_cp(mp[i]) : y=cm_cp(mp[i],0,0,1); 
    
    o.moveIt(x,y); 
    o.showIt(); 
    
    // Modified by RYTTER
    // Viser alle arrows fra start
    if(m.arr) 
			m.o.arr.showIt(); 			
			
		o.oy=y; 
    
    if(!mpa) 
			rows ? x+=m.w+px+bx : y+=m.h+px+by								
  }
  
  if(c.useBar==1)
  { //Background-Bar
    var bbx=c.barBorderX,bby=c.barBorderY; 
    var bar1=c.bar1= new cm_makeObj(c.name+'bbar_0',c.name+'bbar',nowrite?0:c.bar1,document)
    var bar=c.bar= new cm_makeObj(c.name+'bbar','',nowrite?0:c.bar,document); bar.css.zIndex=c.zIndex+1
    var barx=c.barX=="menu"?c.m[c.l[0].m[0]].b.x-bbx:cm_cp(c.barX,1);
    var bary=c.barY=="menu"?c.m[c.l[0].m[0]].b.y-bby:cm_cp(c.barY);
    var barw=c.barWidth=="menu"?totw:cm_cp(c.barWidth,1,bbx*2);
    var barh=c.barHeight=="menu"?toth:cm_cp(c.barHeight,0,bby*2);
    bar1.clipTo(0,barw,barh,0,1); bar1.moveIt(bbx,bby); bar1.showIt();
    bar.clipTo(0,barw+bbx*2,barh+bby*2,0,1); bar.moveIt(barx,bary); bar.showIt();
  }
  
  if(c.resizeCheck)
  { //Window resize code - updated 4.06 - stil sucks
    if(bw.ns4 || bw.op5 || bw.op6)
			setTimeout('window.onresize=new Function("'+c.name+'.resized()")',500)			
		else 
		{
			window.onresize=new Function(c.name+".resized()")						
		}
                
    c.resized=cm_resized; 
    
    if(bw.op5 || bw.op6) 
			document.onmousemove=new Function(c.name+".resized()")						
  }
  
  if(c.onconstruct) 
		eval(c.onconstruct) //onconstruct event
  
  c.constructed = 1 //Added v4.05
  		
  return true
}

/**Capturing resize**/
var cm_inresize=0

function cm_resized()
{			
  if(cm_inresize) 
		return
			  
	page2=new cm_page(); 
	
	var off=(bw.op6 || bw.op5) ? 20 : 5
	
  if(page2.x2<cmpage.x2-off || page2.y2<cmpage.orgy-off || page2.x2>cmpage.x2+off || page2.y2>cmpage.orgy+off)
  {
		if(bw.ie || bw.ns6 || bw.op7 || bw.ns4)
		{
		  cmpage=page2; 
      this.isresized=1; 
            			           
      if(this.onresize) 
				eval(this.onresize); 
									
			this.construct(1);
	
      if(this.onafterresize) 
			eval(this.onafterresize);		
			
			// + KR 2006-02-13
			location.reload();
			// - KR 2006-02-13				
		}
		else
		{
			cm_inresize=1; 
			location.reload()
		} 
  }  
 }

/**Onclick of an item**/
makeCM.prototype.onclck=function(m)
{ //Changed v4.06
  m = this.m[m]
  
  if(m.onclck) 
		eval(m.onclck);
  
	if(this.openOnClick && m.subs.length>0)
	{	
		this.clicked = 1; 
		this.showsub(m.name); 
		return
	} 
	
  var lnk=m.lnk
  var targ=m.targ
  
  if(lnk)
  {
    if(lnk.indexOf("mailto")!=0 && lnk.indexOf("http") != 0) 
			lnk=this.root + lnk
    
		if(String(targ)=="undefined" || targ=="" || targ==0 || targ=="_self")
		{
      if(this.frames)
      { //Turning of all level 1 + vars
        if(this.l[0].a)
        {
          this.m[this.l[0].a].active(0,1)
          this.l[0].a =0
        }
        
        for(i=this.frameStartLevel;i<this.l.length;i++)
        {
          if(this.l[i].b)
          {
            this.l[i].b.hideIt()
            this.l[i].b = null
            
            for(j=0;j<this.l[i].m.length;j++)
            {
              this.m[this.l[i].m[j]].b = null;
            }
          }
        }
        this.isover=0
      }
      this.deftarget.location.href=lnk 
    }
    else if(targ=="_blank") 
			window.open(lnk)
    else if(targ=="_top" || targ=="window") 
			top.location.href=lnk
    else if(top[targ]) 
			top[targ].location.href=lnk
    else if(parent[targ]) 
			parent[targ].location.href=lnk
  }
  else 
		return false
}
