// 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){

	self.status='';

	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;

	}

}
