/************************************************************
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;	 				/* Store the platform and version of the browser. */
	this.agent=navigator.userAgent.toLowerCase();   /* Convert to lower case and store the value of the user-agent header 
													   sent by the client to the server. */
	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;
}

/* Create and initialize browser check object. */
var bw=new cm_bwcheck()

/* Variable declaration */
var cmpage

/*Crossbrowser objects functions*/
function cm_message(txt){
		 alert(txt); 
		 return false;
}

/* function  cm_makeObj
      arguments:
   			 obj
			 nest
			 o
			 doc 	   Input	  document object; if not set, will be assigned the current document object.
*/
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;
	   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";}
  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 a=arguments;
    
   this.width=a[0]||null; 
   this.height=a[1]||null;
    
   this.regClass=a[2]||null;
   this.overClass=a[3]||null;
   
   this.borderX=a[4]>-1?a[4]:null; 
   this.borderY=a[5]>-1?a[5]:null; 
   this.borderClass=a[6]||null; 
   
   this.rows=a[7]>-1?a[7]:null; 
   this.align=a[8]||null; 
   
   this.offsetX=a[9]||null; 
   this.offsetY=a[10]||null; 
   
   this.arrow=a[11]||null; 
   this.arrowWidth=a[12]||null; 
   this.arrowHeight=a[13]||null; 
   this.roundBorder=a[14]||null; 
   
   return this;
}
/***Making the main menu object**/
function makeCM(name){ //Changed v4.06
  var c=this; 
  this.mc=0;
  this.name = name; 
  this.m=new Array(); 
  this.scrollY=-1; 
  this.level=new Array(); 
  this.l=new Array(); 
  this.tim=100; 
  this.isresized=0;
  this.isover=0; 
  this.zIndex=100; 
  this.frameStartLevel=1; 
  this.bar=0; 
  this.z=0; 
  this.totw=0; 
  this.toth=0; 
  this.maxw=0; 
  this.maxh=0; 
  cmpage = new cm_page(); 
  this.constructed = 0;
  
  return this;
}


//events
makeCM.prototype.onshow=""; 
makeCM.prototype.onhide=""; 
makeCM.prototype.onconstruct="";


/***Creating layers**/
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='',l=m.lev,str='',txt=m.txt,ev='', id=name + '_' + m.name,d1; 
  
  if (app) d1=app;
  
  if ((!bw.reuse||l==0) && !no){
    ev=' onmouseover="'+name+'.showsub(\''+m.name+'\')"' 
	+' onfocus="'+name+'.showsub(\''+m.name+'\')"' 
    +' onmouseout="'+name+'.mout(\''+m.name+'\')"'
    +' onblur="'+name+'.mout(\''+m.name+'\')"'
    +' onclick="'+name+'.onclck(\''+m.name+'\'); return false" '
    +' onselect="'+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.onfocus=new Function(name+'.showsub("'+m.name+'")'); 
    m.d2.onmouseout=new Function(name+'.mout("'+m.name+'")')
    m.d2.onblur=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){
  	 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 **/
/* 
   name	  	   name for menu
   parent	   name of parent menu -- use "" if top menu
   txt		   Text to be displayed if the menu is a submenu
   lnk		   Link for menu item
   targ		   Target window -- use "" for current window?
   w		   width of image
   h		   height of image
   img1		   regular image
   img2		   image for active image (mouse over)
   altTxt	   alt text for image
   cl
   cl2
   align
   rows
   nolink
   rows
   nolink
   onClick
   onmouseover
   onmouseout
*/

makeCM.prototype.makeMenu=function(name,parent,txt,lnk,targ,w,h,img1,img2,altTxt,cl,cl2,align,rows,nolink,onclick,onmouseover,onmouseout){

  if (!name) name = this.name+""+this.mc; 
  
  var p = parent!=""&&parent&&this.m[parent]?parent:0;
  
  if (this.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)==':') this.root=this.offlineRoot; 
		else this.root=this.onlineRoot;
		
		if (this.useBar){ 
		   if (!this.barBorderClass) this.barBorderClass=this.barClass; 
		   this.bar1 = cm_divCreate(this.name+'bbar_0',this.barClass,'',0,1);
		   this.bar = cm_divCreate(this.name+'bbar',this.barBorderClass,'',1,1,0,0,this.bar1); 
		   if (bw.usedom) this.bar.appendChild(this.bar1);    
    	   }
	}
	
  var create=1,img,arrow; 
  var m = this.m[name] = new Object(); 
  m.name=name; 
  m.subs=new Array(); 
  m.parent=p; 
  m.arnum=0; 
  m.arr=0;
  
  var l = m.lev = p?this.m[p].lev+1:0; 
  this.mc++; m.hide=0;
  if (l>=this.l.length){
  	 var p1,p2=0; 
	 if (l>=this.level.length) p1=this.l[this.level.length-1];
	 else p1=this.level[l]; 
	 this.l[l]=new Array(); 
	 if (!p2) p2=this.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) this.l[l][i]=p2[i]; 
			   else this.l[l][i]=p1[i] 
			   }
			}
    }
	else {this.l[l]=this.level[0]; this.l[l].align=cm_checkalign(this.l[l].align);}
	
    this.l[l]["str"]=''; 
	this.l[l].m=new Array(); 
	if (!this.l[l].borderClass) this.l[l].borderClass=this.l[l].regClass;
    this.l[l].app=0; 
	this.l[l].max=0; 
	this.l[l].arnum=0; 
	this.l[l].o=new Array(); 
	this.l[l].arr=new Array();
    this.level[l]=p1=p2=null;
    if (l!=0) this.l[l].str=this.l[l].app=cm_divCreate(this.name+ '_' +l+'_0',this.l[l].borderClass,'');
	}
	
  if (p){
  		p = this.m[p]; p.subs[p.subs.length]=name; 
    	if (p.subs.length==1&&this.l[l-1].arrow){ 
		   p.arr=1; 
      	   if (p.parent){
		   		this.m[p.parent].arnum++;
        		if (this.m[p.parent].arnum>this.l[l-1].arnum){
          		   this.l[l-1].str+=this.l[l-1].arr[this.l[l-1].arnum]=cm_divCreate(this.name+ '_a' +(l-1)+'_'+this.l[l-1].arnum,'clCMAbs','<img height="'+this.l[l-1].arrowHeight
		            +'" width="'+this.l[l-1].arrowWidth+'" src="'+this.root+this.l[l-1].arrow+'" alt="" />',0,1,this.l[l-1].app); this.l[l-1].arnum++
        }}}
		
  		if (bw.reuse) 
  	 	   if (p.subs.length>this.l[l].max) this.l[l].max = p.subs.length; 
  		   	  else create=0;
  }
  
  m.rows=rows>-1?rows:this.l[l].rows; 
  m.w=cm_cp(w||this.l[l].width,1); 
  m.h=cm_cp(h||this.l[l].height,0); 
  m.txt=txt; 
  m.lnk=lnk;
  
  if (align) align=cm_checkalign(align); 
  m.align=align||this.l[l].align; 
  m.cl=cl=cl||this.l[l].regClass; 
  m.targ=targ; 
  m.cl2=cl2||this.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) this.l[l].m[this.l[l].m.length]=name;
  
  if (img1){
  		   m.img1 = new Image(); 
		   m.img1.src=this.root+img1; 
		   if (!img2) img2=img1; 
		   m.img2 = new Image(); 
		   m.img2.src=this.root+img2;
    	   m.cl="clCMAbs"; 
		   m.txt=''; 
		   if (!bw.reuse&&!nolink) 
		   	  m.txt = '<a href="#" tabindex="1000" onmouseover="'+this.name+'.showsub(\''+name+'\')" onmouseout="'+this.name+'.mout(\''+name+'\')" onclick="'+this.name+'.onclck(\''+name+'\'); return false">';
    	   m.txt+='<img alt="'+altTxt+'" src="'+this.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) this.l[l].str+=cm_getLayerStr(m,this.l[l].app,this.name,this.fillImg,this.l[l].borderClass,this.l[l].arrow,this.l[l].arrowWidth,this.l[l].arrowHeight,this.root);
  
  if (l==0){
  	 if (m.w>this.maxw) this.maxw=m.w; 
  	 if (m.h>this.maxh) this.maxh=m.h; 
  	 this.totw+=this.pxBetween+m.w+this.l[0].borderX;this.toth+=this.pxBetween+m.h+this.l[0].borderY;
	 }
  if (lnk && !onmouseover){
		var path=lnk.indexOf("mailto:")>-1||lnk.indexOf("http://")>-1?"":this.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 pm=this.m[el],m,o,nl
  if (!pm.b||(this.isresized&&pm.lev>0)) pm.b=this.l[pm.lev].b; this.isover=1
  clearTimeout(this.tim);
  var ln=pm.subs.length,l=pm.lev+1
  if (this.l[pm.lev].a==el&&l!=this.l.length && !this.openOnClick){if (this.l[pm.lev+1].a) this.hidesub(l+1,el); return}
  this.hidesub(l,el); if (pm.mover) eval(pm.mover); if (!pm.isactive) pm.active(1);
  this.l[pm.lev].a = el; if (ln==0) return; 
	if (this.openOnClick && !this.clicked) return//Added v4.06
	if (!this.l[l].b) return //Added v4.05
  var b = this.l[l].b, bx=this.l[l].borderX, by=this.l[l].borderY, rows=pm.rows
	var rb=this.l[l].roundBorder;//added 4.06
  var x=bx+rb,y=by+rb,maxw=0,maxh=0,cn=0; b.hideIt()
  for(var i=0;i<this.l[l].m.length;i++){  
    if (!bw.reuse) m=this.m[this.l[l].m[i]]
    else m=this.m[this.m[el].subs[i]]
    if (m && m.parent==el&&!m.hide){
      if (!bw.reuse) o=m.o; else o=m.o=this.l[l].o[i]
      if (x!=o.x||y!=o.y) o.moveIt(x,y); nl=m.subs.length //changed 4.06
      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(this.name+".showsub('"+m.name+"')")
          o.evnt.onmouseout=new Function(this.name+".mout('"+m.name+"')") //Added v4.05
          o.evnt.onclick=new Function(this.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=this.l[l].arr[cn]; o.arr.moveIt(x + m.w-this.l[l].arrowWidth-3,y+m.h/2-(this.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 = this.m[this.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 (this.chkscroll) this.chkscroll() //Added v4.05 - not the best solution
  if (this.chkscroll||!pm.subx||!pm.suby||this.scrollY>-1||this.isresized) this.getcoords(pm,this.l[l-1].borderX,this.l[l-1].borderY,pm.b.x,pm.b.y,maxw,maxh,this.l[l-1].offsetX,this.l[l-1].offsetY) //Changed 4.06
	x=pm.subx; if (this.chkscroll&&l==this.frameStartLevel) pm.suby+=this.scrollY; y=pm.suby; b.moveIt(x,y); if (this.onshow) eval(this.onshow); b.showIt()
}
/**Hide sub elements **/
makeCM.prototype.hidesub=function(l,el){ //Changed v4.05
  var c = this,tmp,m,i,j,hide;
  if (!l) { 
  	 l=1; 
	 hide=1; 
	 this.clicked=0;
	 }
  for (i=l-1;i<this.l.length;i++){
  	  if (i>0&&i>l-1) if (this.l[i].b) this.l[i].b.hideIt();//Changed v4.05
      if (this.l[i].a&&this.l[i].a!=el){
      	m=this.m[this.l[i].a]; 
		m.active(0,1); 
		if (m.mout) eval(m.mout); 
		this.l[i].a=0;
		if (i>0&&i>l-1) if (bw.op5||bw.op6) for (j=0;j<this.l[i].m.length;j++) this.m[this.l[i].m[j]].o.hideIt();
    }
  
  if (i>l){
  	 for (j=0;j<this.l[i-1].arnum;j++){
	 	 this.l[i-1].arr[j].hideIt(); 
		 if (bw.op6) this.l[i-1].arr[j].moveIt(-1000,-1000);
		 }
	 } //opera bug
  }
  
  if (hide&&this.onhide) eval(this.onhide); //onhide event
}
/***Make all menu div objects**/
makeCM.prototype.makeObjects=function(nowrite,fromframe){ //Changed v4.06
  var oc,name,bx,by,w,h,l,no,ar,id,nest,st=0,en=this.l.length,bobj,o,m,i,j;
  //Added v4.05
  if (fromframe){
    st = this.frameStartLeve;l
    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(this.l[i].str);
      else if (i>0) this.body.appendChild(this.l[i].app);
      if (!this.frames) this.l[i].str=null;
      }
    }
	
	this.z=this.zIndex+2;
	
	for(i=st;i<en;i++){
		oc=0;
    	if (i!=0){
		   bobj=this.l[i].b = new cm_makeObj(this.name + "_"+i+"_0","",this.l[i].app,this.doc); 
		   bobj.css.zIndex=this.z; 
    	   if (bw.dom) bobj.css.overflow='hidden'}; 
		   bx=this.l[i].borderX; 
		   by=this.l[i].borderY; 
		   this.l[i].max=0;
    	   for (j=0;j<this.l[i].m.length;j++){
      	   	   m = this.m[this.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(this.name + "_"+name+"_0","",m.d1,this.doc); 
					 m.b.css.zIndex=this.z; 
					 m.b.clipTo(0,w+bx*2,h+by*2,0,1); 
					 nest=name;
					 }
      			id = this.name + "_"+name; nest=this.name + "_"+nest;
      			if (m.create){
        		   o=m.o=new cm_makeObj(id,nest+"_0",m.d2,this.doc); 
				   o.z=o.css.zIndex=this.z+1; 
				   if (bw.reuse){this.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=this.z+2;
				if (j<this.l[i].arnum){
        		   this.l[i].arr[j]=new cm_makeObj(this.name+"_a"+i+"_"+j,nest+"_0",nowrite?0:this.l[i].arr[j],this.doc);
        		   this.l[i].arr[j].css.zIndex=this.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-this.l[i].arrowWidth-3,by+m.h/2-(this.l[i].arrowHeight/2)); 
       				 o.arr.css.zIndex=this.z+20;
      				 }
				if (!no && !bw.reuse && !m.img1){  
        			   o.over=new cm_makeObj(this.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=this.z+3
       				   img=new cm_makeObj(this.name + "_"+name+"_3",nest+"_0"+".document.layers."+id,"",this.doc); img.moveIt(0,0)
       				   img.css.visibility="inherit"; img.css.zIndex=this.z+4; 
					   if (bw.op5) img.showIt();
      				   }
				this.z++; 
    }
  }
	if (fromframe){	///Set scroll vars - added v4.05
		this.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;
		}
	}
}
/**Onmouseout**/
/* Default functionality for mouseout event. */
makeCM.prototype.mout = function(){ //Changed v4.06

	clearTimeout(this.tim); 
	this.isover = 0; 
	var f="if (!"+this.name+".isover)"+this.name+".hidesub()";
	
  	if (!this.closeOnClick) this.tim = setTimeout(f,this.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);
			}
	   }
}

/**onblur**/
makeCM.prototype.onblur = makeCM.prototype.mout;

/**Constructing and initiating top items and bar**/
makeCM.prototype.construct=function(nowrite){ //Changed v4.06
  if (!this.l[0]||this.l[0].m.length==0) return cm_message('No menus defined');
  
  if (!nowrite){
  	 for(var i=1;i<this.l.length;i++){
	 		 this.l[i].str+="</div>"
			 }
	 } //Added 4.06
	 
  this.makeObjects(nowrite); 
  cmpage = new cm_page(); 
  
  var mpa,o,maxw=this.maxw,maxh=this.maxh,i,totw=this.totw,toth=this.toth,m,px=this.pxBetween;
  var bx=this.l[0].borderX,by=this.l[0].borderY,x=this.fromLeft,y=this.fromTop,mp=this.menuPlacement,rows=this.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<this.l[0].m.length;i++){
  	  m = this.m[this.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(); 
	  if (m.arr) m.o.arr.showIt(); 
	  o.oy=y; 
      if (!mpa) rows?x+=m.w+px+bx:y+=m.h+px+by;
	  }
	
	if (this.useBar==1){ //Background-Bar
       var bbx=this.barBorderX,bby=this.barBorderY; 
       var bar1=this.bar1= new cm_makeObj(this.name+'bbar_0',this.name+'bbar',nowrite?0:this.bar1,document);
       var bar=this.bar= new cm_makeObj(this.name+'bbar','',nowrite?0:this.bar,document); bar.css.zIndex=this.zIndex+1;
	   var barx=this.barX=="menu"?this.m[this.l[0].m[0]].b.x-bbx:cm_cp(this.barX,1);
       var bary=this.barY=="menu"?this.m[this.l[0].m[0]].b.y-bby:cm_cp(this.barY);
       var barw=this.barWidth=="menu"?totw:cm_cp(this.barWidth,1,bbx*2);
       var barh=this.barHeight=="menu"?toth:cm_cp(this.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 (this.resizeCheck){ //Window resize code - updated 4.06 - stil sucks
	   	  if (bw.ns4||bw.op5||bw.op6)setTimeout('window.onresize=new Function("'+this.name+'.resized()")',500);
		  else window.onresize=new Function(this.name+".resized()");
	   	  this.resized=cm_resized; if (bw.op5||bw.op6) document.onmousemove=new Function(this.name+".resized()")
  		  }
		  
	   if (this.onconstruct) eval(this.onconstruct); //onconstruct event
  	   this.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);
		}
     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, 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;
}




