/************************************************************
Coolmenus Beta 4.04 - Copyright Thomas Brattli - www.dhtmlcentral.com
Last updated: 03.22.02
*************************************************************/
/*Browsercheck object*/
function cm_bwcheck(){
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent.toLowerCase()
	this.dom=document.getElementById?1:0
	this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1) && window.opera 
  this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1) && window.opera   
  this.ie5 = (this.agent.indexOf("msie 5")>-1 && !this.op5 && !this.op6)
  this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
  this.ie6 = (this.agent.indexOf("msie 6")>-1 && !this.op5 && !this.op6)
	this.ie4=(this.agent.indexOf("msie")>-1 && document.all &&!this.op5 &&!this.op6 &&!this.ie5&&!this.ie6)
  this.ie = (this.ie4 || this.ie5 || this.ie6)
	this.mac=(this.agent.indexOf("mac")>-1)
	this.ns6=(this.agent.indexOf("gecko")>-1 || window.sidebar)
	this.ns4=(!this.dom && document.layers)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6)
  this.usedom= this.ns6//Use dom creation
  this.reuse = this.ie||this.usedom //Reuse layers
  this.px=this.dom&&!this.op5?"px":""
	return this
}



var bw=new cm_bwcheck()

/*Variable declaration*/
var cmpage,cm_eventlayer=0,cm_eventlayerE=0



/*Crossbrowser objects functions*/
function cm_message(txt)
{
	alert(txt);
	return false
}


function cm_makeObj(obj,nest,o)
{
  if(bw.usedom && o) 
  	this.evnt=o
  else
  {
  	nest=(!nest) ? "":'document.layers.'+nest+'.'
    	this.evnt=bw.dom? document.getElementById(obj):
    	bw.ie4?document.all[obj]:bw.ns4?eval(nest+"document.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?document: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"
  if(bw.reuse||bw.usedom){
    if(!this.img2) this.o.evnt.className=on?this.cl2:this.cl
    else document.images["img"+this.name].src=on?this.img2.src:this.img1.src;
    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(){

  this.x=0; this.x2 =(!bw.ie)?window.innerWidth:document.body.offsetWidth-20;
  this.y=0; this.orgy=this.y2= (!bw.ie)?window.innerHeight: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(){
  var c=this, 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]||null; 
  c.borderY=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; return c
}
/***Making the main menu object**/
function makeCM(name){
  var c=this; c.mc=0; c.name = name; c.m=new Array(); c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0;
  c.isover=0; c.zIndex=100; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); 
}//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+'\')"' 
    +' onmouseout="'+name+'.mout(\''+m.name+'\')"' //Added 4.02
    +' 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+'")') //Added 4.02
  }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 **/
makeCM.prototype.makeMenu=function(name,parent,txt,lnk,targ,w,h,img1,img2,cl,cl2,align,rows,nolink,onclick,onmouseover,onmouseout){
  
   var ind=name.indexOf(":");
   var flag='0';
   if(ind!=-1)
   {
	    flag=name.substr(0,ind);
	    name=name.substr(ind+1);
	  
   }
  if(parseInt(flag) >= 1)
  {


	  var c = this; if(!name) name = c.name+""+c.mc; var p = parent!=""&&parent&&c.m[parent]?parent:0;
	  if(c.mc==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
	  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(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.out=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) m.mover="self.status='"+c.root+m.lnk+"'"

  }
  
}
/**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;
  }m.subx=x + ox; m.suby=y + oy
}
/**Showing sub elements**/
makeCM.prototype.showsub=function(el){
  var c=this,pm=c.m[el];
  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,l=pm.lev+1
  if(c.l[pm.lev].a==el&&l!=c.l.length){if(c.l[pm.lev+1].a) c.hidesub(l+1,el); return}
  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; 
  var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows
  var x=bx,y=by,maxw=0,maxh=0,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
      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 4.02
          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; else maxh+=by*2; b.clipTo(0,maxw,maxh,0,1)
  if(!pm.subx||!pm.suby||c.srollY>0||c.isresized) c.getcoords(pm,c.l[l-1].borderX,c.l[l-1].borderY,pm.b.x,pm.b.y,maxw,maxh,c.l[l-1].offsetX,c.l[l-1].offsetY)
  x=pm.subx; y=pm.suby; b.moveIt(x,y); if(c.onshow) eval(c.onshow); b.showIt()
}
/**Hide sub elements **/
makeCM.prototype.hidesub=function(l,el){
  var c = this,tmp,m,i,j
  if(!l){if(!l) l=1;}
  for(i=l-1;i<c.l.length;i++){
    if(i>0&&i>l-1) c.l[i].b.hideIt()
    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(!l&&c.onhide) eval(c.onhide) //onhide event
}



/***Make all menu div objects**/
makeCM.prototype.makeObjects=function(nowrite)
{
	  var c = this,oc,name,bx,by,w,h,l,no,ar,id,nest
	  if(!nowrite)
	  {
	    for(i=0;i<c.l.length;i++)
	    {
	      if(i!=0)
	      		c.l[i].str+="</div>"
	      if(!bw.usedom) 
	      		document.write(c.l[i].str)
	      else 
	      		if(i>0) 
	      			document.body.appendChild(c.l[i].app)
	      c.l[i].str=null //Probably need this on frames version though
	    }
	  }
	  c.z=c.zIndex+2
  
	  for(i=0;i<c.l.length;i++)
	  {
		oc=0
	    if(i!=0){bobj=c.l[i].b = new cm_makeObj(c.name + "_"+i+"_0","",c.l[i].app); 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); 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); 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])
		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)
		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)
		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); img.moveIt(0,0)
		img.css.visibility="inherit"; img.css.zIndex=c.z+4; if(bw.op5) img.showIt()
	      }c.z++; 
	    }
	  }
}


/**Onmouseout**/  //Added 4.02
makeCM.prototype.mout = function()
{
	  var c = this;
	  clearTimeout(c.tim)
	  c.isover = 0
	  c.tim = setTimeout("if(!"+c.name+".isover)"+c.name+".hidesub()",c.wait)
}


/**Constructing and initiating top items and bar**/
makeCM.prototype.construct=function(nowrite)
{
  var c=this;
  if(!c.l[0] || c.l[0].m.length==0) 
  	return cm_message('No menus defined');
  
  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(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(); 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)
  { //Background-Bar
    bbx=c.barBorderX; bby=c.barBorderY; 
    bar1=c.bar1= new cm_makeObj(c.name+'bbar_0',c.name+'bbar',nowrite?0:c.bar1)
    bar=c.bar= new cm_makeObj(c.name+'bbar','',nowrite?0:c.bar); bar.css.zIndex=c.zIndex+1
    //bar.evnt.onmouseover=new Function(cm_eventlayerE)
    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.
    setTimeout('window.onresize=new Function("'+c.name+'.resized()")',500)
    c.resized=cm_resized; if(bw.op5||bw.op6) document.onmousemove=new Function(c.name+".resized()")
  }
  
  if(c.onconstruct) eval(c.onconstruct) //onconstruct event
  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)?15: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)
		{
      			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)
{
  m = this.m[m]
  if(m.onclck) eval(m.onclck); 
  lnk=m.lnk; targ=m.targ
  
  
  if((lnk=='' || lnk+'' =='undefined') && (targ=='' || targ+'' =='undefined'))
  		return;
  if(lnk)
  {
   parent.location.href=lnk
  
  /*
    if(lnk.indexOf("mailto")!=0 && lnk.indexOf("http")!=0) 
    	lnk=this.root+lnk
    if(String(targ)=="undefined" || targ=="" || targ==0 || targ=="_self")
    	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 
  
      	if(targ.indexOf("javascript")!=-1)
      	{
      		var ind=targ.indexOf(":");
      		if(ind!=-1)
      		{
      		   var meth=targ.substr(ind+1);
      		   eval(meth);
      		}
    	}
    else	
  	return false
}


/******************************************
CM_ADD-IN - hideselectboxes (last updated: 01/29/02)
IE5+ and NS6+ only - ignores the other browsers

Because of the selectbox bug in the browsers that makes 
selectboxes have the highest z-index whatever you do 
this script will check for selectboxes that interfear with
your menu items and then hide them. 

Just add this code to the coolmenus js file
or link the cm_addins.js file to your page as well.
*****************************************/

if(bw.dom && !bw.op5 && !bw.op6)
{
  makeCM.prototype.sel=0
  makeCM.prototype.onshow+=";this.hideselectboxes(pm,pm.subx,pm.suby,maxw,maxh,pm.lev)"
  makeCM.prototype.hideselectboxes=function(pm,x,y,w,h,l){
    var selx,sely,selw,selh,i
    if(!this.sel){
      this.sel=document.getElementsByTagName("SELECT")
		  this.sel.level=0
    }
    var sel=this.sel
    for(i=0;i<sel.length;i++){
			selx=0; sely=0; var selp;
			if(sel[i].offsetParent){selp=sel[i]; while(selp.offsetParent){selp=selp.offsetParent; selx+=selp.offsetLeft; sely+=selp.offsetTop;}}
			selx+=sel[i].offsetLeft; sely+=sel[i].offsetTop
			selw=sel[i].offsetWidth; selh=sel[i].offsetHeight
			if(selx+selw>x && selx<x+w && sely+selh>y && sely<y+h){
				if(sel[i].style.visibility!="hidden"){sel[i].level=l; sel[i].style.visibility="hidden"; if(pm){ if(!pm.mout) pm.mout=""; pm.mout+=this.name+".sel["+i+"].style.visibility='visible';"}}
      }else if(l<=sel[i].level && !(pm&&l==0)) sel[i].style.visibility="visible"
    }
  }
}


/******************************************
CM_ADD-IN - pagecheck (last updated: 01/26/02)

Simple code that *tries* to keep the menus inside the
bounderies of the page.
A more advanced version of this code will come later.

Just add this code to the coolmenus js file
or link the cm_addins.js file to your page as well.
*****************************************/
makeCM.prototype.onshow+=";this.pagecheck(b,pm,pm.subx,pm.suby,maxw,maxh)"
makeCM.prototype.pagecheck=function(b,pm,x,y,w,h,n){  
  l=pm.lev+1
  a=b.align; if(!n) n=1
  //self.status="x:"+x+" y:" + y+ " w:" + w + " h:" + h + " ---- " + n
  ok=1
  if(x<cmpage.x) {pm.align=1; ok=0;}
  else if(x+w>cmpage.x2){ pm.align=2; ok=0;}
  else if(y<cmpage.y) { pm.align=3; ok=0;}
  else if(h+y>cmpage.y2) {pm.align=4; ok=0;}
  if(!ok) this.getcoords(pm,this.l[l-1].borderX,this.l[l-1].borderY,pm.b.x,pm.b.y,w,h,this.l[l-1].offsetX,this.l[l-1].offsetY)
  x=pm.subx; y=pm.suby
  b.moveIt(x,y)  
}



/******************
CM_ADD-IN - filterIt (last updated: 01/26/02)

Explorer5.5+ only. Other browser will ignore it.

This function uses filters for Explorer to show 
the subitems. 
If you use this add-in you will get 1 new 
level property called "filter". You have
to specify which filter to use and what 
level to use them on. 
(this properties will also be inherited though)

Example setting:
oCMenu.level[3].filter="progid:DXImageTransform.Microsoft.Fade(duration=0.5)" 

Examples on how to use this will come later.

Just add this code to the coolmenus js file
or link the cm_addins.js file to your page as well.
*****************/
bw.filter=(bw.ie55||bw.ie6) && !bw.mac
makeCM.prototype.onshow+=";if(c.l[pm.lev].filter) b.filterIt(c.l[pm.lev].filter)"
cm_makeLevel.prototype.filter=null
cm_makeObj.prototype.filterIt=function(f){
  if(bw.filter){
    if(this.evnt.filters[0]) this.evnt.filters[0].Stop(); 
    else this.css.filter=f; 
    this.evnt.filters[0].Apply(); 
    this.showIt(); 
    this.evnt.filters[0].Play();
  }
}
/******************
CM_ADD-IN - slide (last updated: 01/26/02)

This works in all browsers, but it can be 
unstable on all other browsers then Explorer.

This function shows the submenus in a sliding
effect. If you use this add-in you get two 
new level properties called "slidepx" and
"slidetim". You have to specify this for
the levels you want this to happen on 
(these properties will also be inherited though)

slidepx is the number of pixels you want the
div to slide each setTimout, while "slidetim"
is the setTimeout speed (in milliseconds)

Example setting:
oCMenu.level[3].slidepx=10
oCMenu.level[3].slidetim=20

Just add this code to the coolmenus js file
or link the cm_addins.js file to your page as well.
*****************/
makeCM.prototype.onshow+="; if(c.l[pm.lev].slidepx){b.moveIt(x,b.y-b.h); b.showIt(); b.tim=null; b.slide(y,c.l[pm.lev].slidepx,c.l[pm.lev].slidetim,c,pm.lev,pm.name)}"
makeCM.prototype.going=0
cm_makeObj.prototype.tim=10;
cm_makeLevel.prototype.slidepx=null
cm_makeLevel.prototype.slidetim=30
cm_makeObj.prototype.slide=function(end,px,tim,c,l,name){
  if(!this.vis || c.l[l].a!=name) return
	if(this.y<end-px){
		if(this.y>(end-px*px-px) && px>1) px-=px/5; this.moveIt(this.x,this.y+px)
		this.clipTo(end-this.y,this.w,this.h,0)
		this.tim=setTimeout(this.obj+".slide("+end+","+px+","+tim+","+c.name+","+l+",'"+name+"')",tim)
	}else{this.moveIt(this.x,end)}
}
/******************
CM_ADD-IN - clipout (last updated: 01/26/02)

This works in all browsers, but it can be 
unstable on all other browsers then Explorer.

This function shows the submenus with a clipping
effect. If you use this add-in you get two 
new level properties called "clippx" and
"cliptim". You have to specify this for
the levels you want this to happen on 
(these properties will also be inherited though)

"clippx" is the number of pixels you want the
div to slide each setTimout, while "cliptim"
is the setTimeout speed (in milliseconds)

Example setting:
oCMenu.level[3].clippx=10
oCMenu.level[3].cliptim=20

Just add this code to the coolmenus js file
or link the cm_addins.js file to your page as well.

*****************/
makeCM.prototype.onshow+="if(c.l[pm.lev].clippx){h=b.h; if(!rows) b.clipTo(0,maxw,0,0,1); else b.clipTo(0,0,maxh,0,1); b.clipxy=0; b.showIt(); clearTimeout(b.tim); b.clipout(c.l[pm.lev].clippx,!rows?maxw:maxh,!rows?maxh:maxw,c.l[pm.lev].cliptim,rows)}"
cm_makeObj.prototype.tim=10;
cm_makeLevel.prototype.clippx=null
cm_makeLevel.prototype.cliptim=30
cm_makeObj.prototype.clipxy=0
cm_makeObj.prototype.clipout=function(px,w,stop,tim,rows){
	if(!this.vis) return; if(this.clipxy<stop-px){this.clipxy+=px; 
  if(!rows) this.clipTo(0,w,this.clipxy,0,1);
  else this.clipTo(0,this.clipxy,w,0,1);
  this.tim=setTimeout(this.obj+".clipout("+px+","+w+","+stop+","+tim+","+rows+")",tim)
	}else{if(bw.ns6){this.hideIt();}; if(!rows) this.clipTo(0,w,stop,0,1); else this.clipTo(0,stop,w,0,1);if(bw.ns6){this.showIt()}}
}


