/****************************************************************************   
DHTML library from DHTMLCentral.com
*   Copyright (C) 2001 Thomas Brattli 2001
*   This script was released at DHTMLCentral.com
*   Visit for more great scripts!
*   This may be used and changed freely as long as this msg is intact!
*   We will also appreciate any links you could give us.
*
*   Made by Thomas Brattli 2001
***************************************************************************/

/*Variable declaration*/
var cm_eventlayer,cm_eventlayerE,MenusList
var wins

/**Capturing resize**/
var cm_inresize=0
function cm_resized() {
	if(cm_inresize) return
	cmpage=new cm_page();
	if(bw.ie||bw.ns6) {
		this.isresized=1;
		this.display(1);
		if(wins) window.onload()
	} else {
		cm_inresize=1;
		location.reload()
	}
}

/**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.arrowo=a[12]||null;	// for roll over image
	c.arrowWidth=a[13]||null;
	c.arrowHeight=a[14]||null;
	c.borderWidth=a[15]||0;
	c.rightAlign=a[16]||0;
	return c
}

/***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
}

/***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
}

	/***Creating layers**/
	function cm_divCreate(id,cl,txt,w,c,app,ex,txt2,sty) {
		if(bw.usedom) {
			var div=document.createElement("DIV");
			if (sty) div.STYLE=sty;
			if (cl)	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+'"';
			if (sty) dstr+=' style="'+sty+'"';
			if (cl) dstr+=' 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 ""
	}

function cm_active(on,h) {
	if(this.o.arr) {
		if(on){
			this.o.arr.hideIt();
			this.o.arro.showIt();
		} else {
			if(bw.op5){
				this.o.arro.hideIt();
				this.o.arr.showIt();
			} else {
				if(this.o.arro.vis) this.o.arro.hideIt();
				if(!this.o.arr.vis) this.o.arr.showIt();
//				this.o.arr.css.visibility="inherit"
//				this.o.arro.css.visibility="hidden"
			}
		}
	}
	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
}

/***Getting layer string for each menu**/
function cm_getLayerStr(m,app,name,fill,clb,arrow,ah,aw,root,imgCl) {
	var no=m.nolink,spacer=m.spacer,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+'\')" onclick="'+name+'.onclck(\''+m.name+'\'); return false" '
	if(bw.reuse&&l!=0) txt='';
	if(l==0){
		if (spacer) str+=d1=cm_divCreate(id+'_0',m.cl,'');
		else 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+'")');
	}
	if(!bw.reuse && !m.img1 && !no) {
		str+=cm_divCreate(id+'_1',m.cl2,txt,0,1)
		str+=cm_divCreate(id+'_3',m.cl,'<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',imgCl,'<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
}

var cm_sl=0;//reset on reload
function _hideIESelects(x,y,w,h) {
	if (bw.ie && w>0 && h>0) {
		var s=cm_sl;
		if(!s){
			s=cm_sl=document.getElementsByTagName('select');
			for(var i=0; i<s.length; i++)s[i].vis=1;
		}
		if(s){
			for(var i=0; i<s.length; i++){
				if(s[i].vis){
					var sy=_getPageOffsetTop(s[i]);
					if(sy<y+h){
						var sx=_getPageOffsetLeft(s[i]);
						if(sx<x+w){
							if(bw.dom){var sw=s[i].offsetWidth;}
								else {var sw=s[i].clientWidth;}
							if(bw.dom){var sh=s[i].offsetHeight;}
								else {var sh=s[i].clientHeight;}
							if(sx+sw>x && sy+sh>y){s[i].style.visibility="hidden";s[i].vis=0;}
						}
					}
				}
			}
		}
	}
}

function _showIESelects() {
	if (bw.ie) {
		var s=cm_sl;
		if(!s){s=cm_sl=document.getElementsByTagName('select');}
		if(s){
			for(var i=0; i<s.length; i++){
				if(!s[i].vis){s[i].style.visibility="visible";s[i].vis=1;}
			}
		}
	}
}

/***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();
	c.numFootPrt=0;
	c.posCheck=0;
	c.posAnchor=0;
}

/**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 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();
	if (!txt && nolink) m.spacer=1;
	else m.spacer=0;
	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.l[l].arro=new Array()	// for roll over image
		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,c.imgClass,'<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);
					// for roll over image
					c.l[l-1].str+=c.l[l-1].arro[c.l[l-1].arnum]=cm_divCreate(c.name+ '_ao' +(l-1)+'_'+c.l[l-1].arnum,c.imgClass,'<img height="'+c.l[l-1].arrowHeight
							+'" width="'+c.l[l-1].arrowWidth+'" src="'+c.root+c.l[l-1].arrowo+'" 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.cl=cl=cl||c.l[l].regClass;
	// for finding our full size menu
	if(w=="menu"){
		m.fullw=1;w=0;
	}
	if(h=="menu"){
		m.fullh=1;h=0;
	}
	if(m.fullw || m.fullh){
		// creat an temp div for measuring the size later;
		sty="position:absolute;overflow:visible;top:-1000;left:-1000;visiblity:visible;z-index:-10;";
		var temp= new cm_divCreate(c.name+"temp"+c.numFootPrt,m.cl,txt,1,1,0,'','',sty);
		var tempObj=m.footprt= new cm_makeObj(c.name+"temp"+c.numFootPrt,0,temp);
		tempObj.hideIt();
		
		c.numFootPrt++;
		m.fullsize=1;
	}
	
	
	m.w=cm_cp(w||c.l[l].width,1);
	c.l[0].width = m.w = (txt.length)+10;
	
	//var i
	//if ((cl.match("epi-horzMenu-baseLevel")) || (cl2.match("epi-horzMenu-baseLevel"))) {
		
		//m.w=(txt.length)*4;
		//m.w = 
		//m.w=;
		//m.w=(txt.length)*4;
		//i++;
		//}
	
	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.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.txt='';
		if(!bw.reuse&&!nolink) m.txt='<a href="#" onmouseover="'+c.name+'.showsub(\''+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,c.imgClass)
	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+"'"
}

/***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;
				// width can only be gotten after page loaded
				if (!m.fullsize) 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;
				// for roll over image
				o.arro=0;
			}
			if((!bw.reuse||l==0)&&(!m.fullsize)) o.clipTo(0,w,h,0,1);
			if(m.spacer&&l==0){
				o.evnt.onmouseover='';
				o.evnt.onclick='';
				o.css.cursor="auto";
				m.b.css.cursor="auto";
			}
			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;
				// for roll over image
				c.l[i].arro[j]=new cm_makeObj(c.name+"_ao"+i+"_"+j,nest+"_0",nowrite?0:c.l[i].arro[j])
				c.l[i].arro[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;
				// for roll over image
				o.arro=new cm_makeObj(id+"_ao",nest+"_0",m.d3)
				o.arro.moveIt(bx+m.w-c.l[i].arrowWidth-3,by+m.h/2-(c.l[i].arrowHeight/2));
				o.arro.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++;
		}
	}
}

/**Showing sub elements**/
makeCM.prototype.showsub = function(el) {
	var c=this,pm=c.m[el];
	if (MenusList) {
		for (var i=0;i<MenusList.length;i++) {
			if (c != MenusList[i]) MenusList[i].hidesub();
		}
	}
	if(!pm.b||(c.isresized&&pm.lev>0)) pm.b=c.l[pm.lev].b;
	c.isover=1
	clearTimeout(c.tim);
	if(!c.ev.vis){
		var scx=cmpage.scrollX();
		var scy=cmpage.scrollY();
		if (c.ev.x!=scx || c.ev.y!=scy) c.ev.moveIt(scx,scy);
		c.ev.showIt()
	}
	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, borderw=c.l[l].borderWidth
	var x=bx,y=by,maxw=0,maxh=0,cn=0,arrow=0,totalw=0,arrspc=0,arrw=0
	if(c.l[l].arrowWidth){
		arrspc=0;
		arrw=c.l[l].arrowWidth+arrspc*2;
	}
	b.hideIt()

	// get full size dimemsions for menus
	for(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(bw.reuse){
				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.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.fullsize){
				if(m.fullw){
					var fw=m.footprt.getWidth();
					if(fw>m.w) m.w=fw;
				}
				if(m.fullh){
					m.footprt.setWidth(m.w);
					var fh=m.footprt.getHeight();
					if(fh>m.h) m.h=fh;
				}
				m.fullsize=0;
			}
			if(!rows){
				if(m.arr){
					if(!m.wwarr) {
						m.w+=arrw;
						m.wwarr=1;
					}
				}
				if(m.w>maxw) maxw=m.w;
			} else {
				if(m.h>maxh) maxh=m.h;
			}
		}
	}
	// position menu items
	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);
				o.x=x;
				o.y=y;
			}
			nl=m.subs.length
			if(bw.reuse){
				if(!rows){
					if (m.w<maxw) m.w=maxw;
				} else {
					if (m.h<maxh) m.h=maxh;
				}
				if(o.w!=m.w||o.h!=m.h){
					if(bw.ns6){
						o.setWidth(m.w-2*borderw);
						o.setHeight(m.h-2*borderw);
						o.clipTo(0,m.w,m.h,0);
					} else o.clipTo(0,m.w,m.h,0,1);
					o.w=m.w;
					o.h=m.h;
				}
			}
			if(m.arr && !rows){
				o.arr=c.l[l].arr[cn];
				o.arr.moveIt(x+m.w-arrw+arrspc,y+m.h/2-(c.l[l].arrowHeight/2));
				o.arr.showIt();
				//o.arr.css.visibility="inherit";
				// for roll over image
				o.arro=c.l[l].arro[cn];
				o.arro.moveIt(x+m.w-arrw+arrspc,y+m.h/2-(c.l[l].arrowHeight/2));
				o.arro.hideIt();
				//o.arro.css.visibility="hidden";
				cn++;
			} else {o.arr=0;o.arro=0;}
			if(!rows){
				y+=m.h+by;
				maxh=y
			} else {
				x+=m.w+bx;
				maxw=x;
			}
			o.css.visibility="inherit";
			if(bw.op5||bw.op6) o.showIt()
		} else {
			o = c.m[c.l[l].m[i]].o;
			if(bw.ns6) o.clipTo(0,0,0,0,1); //hide a high zindex object
			o.hideIt();
		}
	}
	// hide the rest arrow images
	if(bw.ns6) for (var i=cn;i<c.l[l].arr.length;i++) {c.l[l].arr[i].moveIt(-1000,-1000);c.l[l].arro[i].moveIt(-1000,-1000);}
	if(!rows) maxw+=bx*2;
	else maxh+=by*2;
	if(bw.ns6){
		b.setWidth(maxw-2*borderw);
		b.setHeight(maxh-2*borderw);
		b.clipTo(0,maxw,maxh,0);
	} else b.clipTo(0,maxw,maxh,0,1);
	
	if(1||!pm.subx||!pm.suby||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;
	// hide all selects inside the area for IE
	_hideIESelects(x,y,maxw,maxh);
	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){
		l=1;
		
		if (c.ev) {
			c.ev.hideIt();
		} else {
			return;
		}
	}
	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();
				c.l[i-1].arro[j].hideIt();
				if(bw.op6) {c.l[i-1].arr[j].moveIt(-1000,-1000);c.l[i-1].arro[j].moveIt(-1000,-1000);}
			}
		} //opera bug
		if(i==0) _showIESelects();
	}
	if(!l&&c.onhide) eval(c.onhide) //onhide event
}

/**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:	 var tx1=x+m.w+bx;
		         if((tx1+maxw)>(cmpage.x2+cmpage.scrollX(1))){
		         	var tx2=(x-maxw-bx-ox);
		         	if(tx2<0) x=tx1;
		         	else x=tx2-ox;
		         } else x=tx1;
		         break;
	/*	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
}

/**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;
	if(!nowrite){
		var ev=c.name+".isover=0; "+c.name+".tim=setTimeout('if(!"+c.name+".isover)"+c.name+".hidesub()',"+c.wait+")"
		if(!cm_eventlayer){
			var d=cm_makeObj('divCMEvent');
			if(!d){
				var sty="position:absolute;z-index:300;width:100%;height:100%;left:0;top:0;visibility:hidden;";
				d=cm_divCreate('divCMEvent',c.cmClass,'',1,1,0,0,'',sty)
			}
			cm_eventlayerE=ev;
			cm_eventlayer=new cm_makeObj('divCMEvent',"",d);
			cm_eventlayer.moveIt(0,0);
			cm_eventlayer.clipTo(0,cmpage.x2,cmpage.y2,0,1);
			cm_eventlayer.w=cmpage.x2;
			cm_eventlayer.y=cmpage.y2;
			c.ev=cm_eventlayer;
		} else {
			c.ev=cm_eventlayer;
			cm_eventlayerE+=";"+ev;
		}
		c.ev.evnt.onmouseover=new Function(cm_eventlayerE);
		c.ev.css.zIndex=c.zIndex;

		if(c.resizeCheck){
			var rsfunc=c.name+".resized();";
			appendToHandler("onresize",rsfunc);
		}
	}
	c.makeObjects(nowrite);
}
makeCM.prototype.display=function(nowrite) {
	var c=this; if(!c.l[0]||c.l[0].m.length==0) return;
	if(c.ev && (cmpage.x2!=c.ev.w || cmpage.y2!=c.ev.h)) c.ev.clipTo(0,cmpage.x2,cmpage.y2,0,1);
	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
	var borderw=c.l[0].borderWidth=2;
	if(c.posCheck){
		if(!c.posAnchor) c.posAnchor= new cm_makeObj(c.posCheck);
		if(c.posAnchor.evnt){
			x=c.fromLeft=_getPageOffsetLeft(c.posAnchor.evnt);
			y=c.fromTop=_getPageOffsetTop(c.posAnchor.evnt);
		}
	}
	if(c.borderSpc){
		x+=c.borderSpc;
		y+=c.borderSpc;
	}
	if(!mp) mp="";
	if(mp.toString().indexOf(",")>-1) mpa=1;
	if (c.l[0].rightAlign) x-=totw;
	for(i=0;i<c.l[0].m.length;i++){
		m=c.m[c.l[0].m[i]];
		o=m.b;
		// make sure menus are of the same size
		if(rows){
			if(m.h<maxh){
				m.h= maxh;
				if(bw.ns6){
					o.setHeight(m.h-2*borderw);
					o.clipTo(0,m.w,m.h,0);
					m.o.clipTo(0,m.w-2*borderw,m.h-2*borderw,0,1);
				} else {
					
					o.clipTo(0,m.w,m.h,0,1);
					m.o.clipTo(0,m.w,m.h,0,1);
				}
			}
		} else {
			if(m.w<maxw) {
				m.w=maxw;
				
				
				
				if(bw.ns6){
					o.setWidth(m.w-2*borderw);
					o.clipTo(0,m.w,m.h,0);
					m.o.clipTo(0,m.w-2*borderw,m.h-2*borderw,0,1);
				} else {
					o.clipTo(0,m.w,m.h,0,1);			m.o.clipTo(0,m.w,m.h,0,1);
					
					
				}
			}
		}
		if(mpa) rows?x=c.fromLeft+cm_cp(mp[i],1):y=c.fromTop+cm_cp(mp[i]);
		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
	}
	var pxlw=totw,pxlh=toth;
	if(c.anchorName){
		if(c.aobj) aobj=c.aobj;
		else aobj=c.aobj= new cm_makeObj(c.anchorName);
		if (aobj) {
			if(c.barWidth=="menu"){
				if(aobj.w!=totw) aobj.setWidth(totw);
			} else {
				aobj.setWidth("100%");
			}
			if(c.barHeight=="menu"){
				if(aobj.h!=toth) aobj.setHeight(toth);
			} else {
				aobj.setHeight("100%");
			}
			if(!aobj.vis) aobj.showIt();
			pxlw=aobj.getWidth();
			pxlh=aobj.getHeight();
			if(pxlw<totw) {aobj.setWidth(totw);pxlw=totw-x;}
			else pxlw-=x;
			if(pxlh<toth) {aobj.setHeight(toth);pxlh=toth-y;}
			else pxlh-=y;
		}
	}
	if(c.useBar){ //Background-Bar
		bbx=c.barBorderX;
		bby=c.barBorderY;
		var attachTo
		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);
		bar1.clipTo(0,pxlw,pxlh,0,1);
		bar.clipTo(0,pxlw+bbx*2,pxlh+bby*2,0,1);
		var barx=c.fromLeft;
		if (c.l[0].rightAlign) barx-=totw;
		bar.moveIt(barx,c.fromTop);
		bar.showIt();
	}
	if(c.resizeCheck){ //Window resize code.
		c.resized=cm_resized;
		if(bw.op5||bw.op6) document.onmousemove=new Function(c.name+".resized()")
	}
	if(c.onconstruct) eval(c.onconstruct) //onconstruct event
	if("vertw"==c.dimUpdate) cm_vertw=totw;
	else if("horih"==c.dimUpdate) cm_horih=toth;
	return true
}
makeCM.prototype.dimensionsInit=function(initw) {
	var c=this; if(!c.l[0]||c.l[0].m.length==0) return;
	if(c.anchorName){
		aobj=c.aobj= new cm_makeObj(c.anchorName);
		if (aobj) {
			var 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,rows=c.rows
			var borderw=c.l[0].borderWidth;
			if(rows){
				toth=maxh+by*2;
				totw=totw-px+bx;
			} else {
				totw=maxw+bx*2;
				toth=toth-px+by;
			}
			if(c.borderSpc){
	 			totw+=c.borderSpc*2;
				toth+=c.borderSpc*2;
			}
			c.totw=totw;
			c.toth=toth;
			// get full size dimemsions for menus
			for(i=0;i<c.l[0].m.length;i++){
				m=c.m[c.l[0].m[i]];
				o=m.b;
				if(m.fullsize){
					if(m.fullw){
						var fw=m.footprt.getWidth();
						if(rows){
							if(fw>m.w){
								totw+=(fw-m.w);
								c.totw=totw;
							}
						} else if(fw>maxw){
							maxw=fw;
							totw=maxw+bx*2;
							if(c.borderSpc) totw+=c.borderSpc*2;
							c.maxw=maxw;
							c.totw=totw;
						}
						if(fw>m.w) m.w=fw;
					}
					if(m.fullh){
						m.footprt.setWidth(m.w);
						var fh=m.footprt.getHeight();
						if(!rows){
							if(fh>m.h){
								toth+=(fh-m.h);
								c.toth=toth;
							}
						} else if(fh>maxh){
							maxh=fh;
							toth=maxh+by*2;
							if(c.borderSpc) toth+=c.borderSpc*2;
							c.maxh=maxh;
							c.toth=toth;
						}
						if(fh>m.h) m.h=fh;
					}
					if(bw.ns6){
						o.setWidth(m.w-2*borderw);
						o.setHeight(m.h-2*borderw);
						o.clipTo(0,m.w,m.h,0);
						m.o.clipTo(0,m.w-2*borderw,m.h-2*borderw,0,1);
					} else {
						o.clipTo(0,m.w,m.h,0,1);
						m.o.clipTo(0,m.w,m.h,0,1);
					}
					m.fullsize=0;
				}
			}
			if(!bw.ie && initw) aobj.setWidth(totw);
		}
	}
}
makeCM.prototype.reposition=function(){
	var c=this;
	if(c.posAnchor&&c.posAnchor.evnt){
		var x=_getPageOffsetLeft(c.posAnchor.evnt);
		var y=_getPageOffsetTop(c.posAnchor.evnt);
		if(x!=c.fromLeft||y!=c.fromTop) c.display(1);
	}
}
/**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){
		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 return false
}