// OBJECT BROWSERCHECK
function flexmenu_browsercheck() {
	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.browser = (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 browser=new flexmenu_browsercheck();

// VARIABLE DECLARATION
var flexmenupage, flexmenu_eventlayer=0, flexmenu_eventlayerE=0;
// OBJECTS CROSSBROWSER FUNCTIONS
function flexmenu_message(txt) {
	alert(txt);
	return false;
}
function flexmenu_makeObj(obj,nest,o) {
	if (browser.usedom && o) {
		this.evnt = o;
	} else {
		nest = (!nest) ? "" : 'document.layers.'+nest+'.';
    	this.evnt=browser.dom ? document.getElementById(obj): browser.ie4 ? document.all[obj] : browser.ns4 ? eval(nest+"document.layers."+obj) : 0;
  	}
  	if (!this.evnt) {
		return flexmenu_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 = browser.dom || browser.ie4 ? this.evnt.style : this.evnt;
	this.ok = 0;
	this.ref = browser.dom || browser.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;
}
flexmenu_makeObj.prototype.moveIt = function(x,y) {
	this.x = x;
	this.y = y;
	this.css.left = x + browser.px;
	this.css.top = y + browser.px;
}
flexmenu_makeObj.prototype.showIt = function(o) {
	this.css.visibility = "visible";
	this.vis = 1;
	if (browser.op5 && this.arr) {
		this.arr.showIt();
	}
} // alert('showing arrow')}} 
flexmenu_makeObj.prototype.hideIt = function(no) {
	this.css.visibility = "hidden";
	this.vis = 0;
}
flexmenu_makeObj.prototype.clipTo = function(t,r,b,l,setwidth) { 
	this.w = r;
	this.h = b;
	if (browser.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+browser.px+","+r+browser.px+","+b+browser.px+","+l+browser.px+")";
		if (setwidth) {
			if (browser.op5 || browser.op6) {
				this.css.pixelWidth = r;
				this.css.pixelHeight = b;
			} else {
				this.css.width = r+browser.px;
				this.css.height = b+browser.px;
			}
		}
	}
}
function flexmenu_active(on,h) {
	if (this.o.arr) {
		on ? this.o.arr.hideIt() : browser.op5 ? this.o.arr.showIt() : this.o.arr.css.visibility = "inherit";
	}
	if (browser.reuse||browser.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 && browser.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;
	}
}
// OBJECT PAGE
function flexmenu_page() {
	this.x=0;
	this.x2 =(!browser.ie) ? window.innerWidth : document.body.offsetWidth-20;
	this.y = 0;
	this.orgy = this.y2 = (!browser.ie) ? window.innerHeight : document.body.offsetHeight-6;
	this.x50 = this.x2/2;
	this.y50 = this.y2/2;
	return this;
}
// CHECK POSITIONS
function flexmenu_cp(num,w,minus) {
	if (num) {
		if (num.toString().indexOf("%") != -1) {
			var t = w ? flexmenupage.x2 : flexmenupage.y2;
			num=parseInt((t*parseFloat(num)/100));
			if (minus) {
				num -= minus;
			}
		} else {
			num = eval(num);
		}
	} else {
		num = 0;
	}
	return num;
}
// OBJECT LEVEL
function flexmenu_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 MENU OBJECT
function makeFM(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;
	flexmenupage = new flexmenu_page(); 
}
// EVENTS
makeFM.prototype.onshow=""; makeFM.prototype.onhide=""; makeFM.prototype.onconstruct="";
// CREATING LAYERS
function flexmenu_divCreate(id,cl,txt,w,c,app,ex,txt2) {
	if (browser.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 && browser.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 flexmenu_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 ((!browser.reuse || l==0) && !no) {
		ev = ' onmouseover="'+name+'.showsub(\''+m.name+'\')"'+' onmouseout="'+name+'.mout(\''+m.name+'\')"'+' onclick="'+name+'.onclck(\''+m.name+'\'); return false" ';
	}
	if (browser.reuse && l!=0) {
		txt='';
	}
	if (l == 0) {
		str += d1 = flexmenu_divCreate(id+'_0',clb,'');
	}
	str += m.d2 = flexmenu_divCreate(id,m.cl,txt,0,0,d1,ev);
	if (l==0 && browser.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 (!browser.reuse && !m.img1 && !no) {
		str += flexmenu_divCreate(id+'_1',m.cl2,txt,0,1);
		str += flexmenu_divCreate(id+'_3',"clFMAbs",'<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=flexmenu_divCreate(id+'_a','clFMAbs','<img alt="" height="'+aw+'" width="'+ah+'" src="'+root+arrow+'" />',0,1,d1);
		}
		str += "</div>";
	}
	str += "\n";
	if (!browser.reuse) {
		m.txt = null;
		m.d2 = null;
		m.d3 = null;
	}
	if (browser.usedom) {
		if (l == 0) {
			document.body.appendChild(d1);
		}
		str='';
	}
	return str;
}
// GET ALIGN NUM FROM TEXT (BETTER TO EVALUATE NUMBERS LATER)
function flexmenu_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
makeFM.prototype.makeMenu = function(name,parent,txt,lnk,targ,w,h,alt,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 = flexmenu_divCreate(c.name+'bbar_0',c.barClass,'',0,1);
		  	c.bar = flexmenu_divCreate(c.name+'bbar',c.barBorderClass,'',1,1,0,0,c.bar1);
			if (browser.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"] = flexmenu_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 = flexmenu_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 = flexmenu_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] = flexmenu_divCreate(c.name+ '_a' +(l-1)+'_'+c.l[l-1].arnum,'clFMAbs','<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 (browser.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 = flexmenu_cp(w||c.l[l].width,1);
	m.h = flexmenu_cp(h||c.l[l].height,0);
	m.txt = txt;
	m.lnk = lnk; 
	  
	if (align) {
		align=flexmenu_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 = flexmenu_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 = "clFMAbs";
		m.txt = '';
		if (!browser.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="'+alt+'" title="'+alt+'" src="'+c.root+img1+'" width="'+m.w+'" height="'+m.h+'" id="img'+m.name+'" ';
		if (browser.dom&&!nolink) {
			m.txt+='style="cursor:pointer; cursor:hand"';
		}
		if (!browser.reuse) {
			if (!browser.dom) {
				m.txt+='name="img'+m.name+'"';
			} m.txt+=' border="0"';
		}
		m.txt+=' />';
		if (!browser.reuse&&!nolink) {
			m.txt+='</a>'
		}
	} else {
		m.img1=0;
		m.img2=0;
	} 
	if (l==0||create) {
		c.l[l].str += flexmenu_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
makeFM.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
makeFM.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 (!browser.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 (!browser.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 (browser.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 (browser.ns6) {
						o.hideIt();
						o.css.visibility = 'inherit';
					} // NS6 bugfix
				}
				if (browser.ie6) {
					b.showIt();
				} // IE6 bugfix (scrollbars)
				o.evnt.innerHTML = m.txt;
				if (browser.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 = browser.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 (browser.op5||browser.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
makeFM.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(browser.op5||browser.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 (browser.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
makeFM.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 (!browser.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 flexmenu_makeObj(c.name + "_"+i+"_0","",c.l[i].app);
			bobj.css.zIndex = c.z; 
			if (browser.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 flexmenu_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 flexmenu_makeObj(id,nest+"_0",m.d2);
				o.z = o.css.zIndex = c.z+1;
				if (browser.reuse) {
					c.l[l].o[oc] = o;
					oc++;
				}
				if (l == 0 && m.img1) {
					o.css.visibility = 'inherit';
				}
				if (browser.op5) {
					o.showIt();
				}
				o.arr = 0;
		  	}
			if (!browser.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 flexmenu_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 flexmenu_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 && !browser.reuse && !m.img1) {
				o.over=new flexmenu_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 flexmenu_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 (browser.op5) {
					img.showIt();
				}
		  	}
			c.z++;
		}
	}
}
// ON MOUSE OUT (Added 4.02)
makeFM.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
makeFM.prototype.construct = function(nowrite) {
	var c=this;
	if (!c.l[0] || c.l[0].m.length == 0) {
		return flexmenu_message('No menus defined');
	}
	c.makeObjects(nowrite);
	flexmenupage = new flexmenu_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;
	var 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 = flexmenupage.x2/2-totw/2;
			if (browser.ns4) {
				x-=9;
			}
			break;
		case "right":
			x = flexmenupage.x2-totw;
			break;
		case "bottom":
			case "bottomcenter":
				y = flexmenupage.y2-toth;
				if (mp=="bottomcenter") {
					x = flexmenupage.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 = flexmenu_cp(mp[i]) : y = flexmenu_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 flexmenu_makeObj(c.name+'bbar_0',c.name+'bbar',nowrite?0:c.bar1);
		bar = c.bar = new flexmenu_makeObj(c.name+'bbar','',nowrite?0:c.bar);
		bar.css.zIndex = c.zIndex+1;
		//bar.evnt.onmouseover=new Function(flexmenu_eventlayerE)
		var barx = c.barX=="menu" ? c.m[c.l[0].m[0]].b.x-bbx : flexmenu_cp(c.barx,1);
		var bary = c.barY=="menu" ? c.m[c.l[0].m[0]].b.y-bby : flexmenu_cp(c.barY);
		var barw = c.barWidth=="menu" ? totw : flexmenu_cp(c.barWidth,1,bbx*2);
		var barh = c.barHeight=="menu" ? toth : flexmenu_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 = flexmenu_resized;
		if (browser.op5 || browser.op6) {
			document.onmousemove = new Function(c.name+".resized()");
		}
	}
	if (c.onconstruct) {
		eval(c.onconstruct);
	} //onconstruct event
	return true;
}
// CAPTURING RESIZE
var flexmenu_inresize = 0;
function flexmenu_resized() {
	if (flexmenu_inresize) {
		return;
	}
	page2 = new flexmenu_page();
	var off = (browser.op6 || browser.op5) ? 15 : 5;
	if (page2.x2 < flexmenupage.x2-off || page2.y2 < flexmenupage.orgy-off || page2.x2 > flexmenupage.x2+off || page2.y2 > flexmenupage.orgy+off){
		if (browser.ie || browser.ns6) {
	  		flexmenupage = page2;
			this.isresized = 1;
	  		if(this.onresize) {
				eval(this.onresize);
			}
			this.construct(1);
	  		if (this.onafterresize) {
				eval(this.onafterresize);
			}
		} else {
			flexmenu_inresize=1;
			location.reload();
		}
	}
}
// ON CLICK OF AN ITEM
makeFM.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;
	}
}
