var isDOM = document.getElementById ? 1 : 0,isIE = document.all ? 1 : 0,isNS4 = navigator.appName == 'Netscape' && !isDOM ? 1 : 0,isOp = self.opera ? 1 : 0,isDyn = isDOM || isIE || isNS4;
function getRef(i, p) {
	p = !p ? document : p.navigator ? p.document : p;
	return isIE ? p.all[i] : isDOM ? (p.getElementById ? p : p.ownerDocument).getElementById(i) : isNS4 ? p.layers[i] : null
}
;
function getSty(i, p) {
	var r = getRef(i, p);
	return r ? isNS4 ? r : r.style : null
}
;
if (!self.LayerObj)var LayerObj = new Function('i', 'p', 'this.ref=getRef(i,p);this.sty=getSty(i,p);return this');
function getLyr(i, p) {
	return new LayerObj(i, p)
}
;
function LyrFn(n, f) {
	LayerObj.prototype[n] = new Function('var a=arguments,p=a[0],px=isNS4||isOp?0:"px";with(this){' + f + '}')
}
;
LyrFn('x', 'if(!isNaN(p))sty.left=p+px;else return parseInt(sty.left)');
LyrFn('y', 'if(!isNaN(p))sty.top=p+px;else return parseInt(sty.top)');
if (typeof addEvent != 'function') {
	var addEvent = function(o, t, f, l) {
		var d = 'addEventListener',n = 'on' + t,rO = o,rT = t,rF = f,rL = l;
		if (o[d] && !l)return o[d](t, f, false);
		if (!o._evts)o._evts = {};
		if (!o._evts[t]) {
			o._evts[t] = o[n] ? {b:o[n]} : {};
			o[n] = new Function('e', 'var r=true,o=this,a=o._evts["' + t + '"],i;for(i in a){o._f=a[i];r=o._f(e||window.event)!=false&&r;o._f=null}return r');
			if (t != 'unload')addEvent(window, 'unload', function() {
				removeEvent(rO, rT, rF, rL)
			})
		}
		if (!f._i)f._i = addEvent._i++;
		o._evts[t][f._i] = f
	};
	addEvent._i = 1;
	var removeEvent = function(o, t, f, l) {
		var d = 'removeEventListener';
		if (o[d] && !l)return o[d](t, f, false);
		if (o._evts && o._evts[t] && f._i)delete o._evts[t][f._i]
	}
}
function FSMenu(myName, nested, cssProp, cssVis, cssHid) {
	this.myName = myName;
	this.nested = nested;
	this.cssProp = cssProp;
	this.cssVis = cssVis;
	this.cssHid = cssHid;
	this.cssLitClass = '';
	this.menus = {root:new FSMenuNode('root', true, this)};
	this.menuToShow = [];
	this.mtsTimer = null;
	this.showDelay = 0;
	this.switchDelay = 125;
	this.hideDelay = 500;
	this.showOnClick = 0;
	this.hideOnClick = true;
	this.animInSpeed = 0.2;
	this.animOutSpeed = 0.2;
	this.animations = []
}
;
FSMenu.prototype.show = function(mN) {
	with (this) {
		menuToShow.length = arguments.length;
		for (var i = 0; i < arguments.length; i++)menuToShow[i] = arguments[i];
		clearTimeout(mtsTimer);
		if (!nested)mtsTimer = setTimeout(myName + '.menus.root.over()', 10)
	}
};
FSMenu.prototype.hide = function(mN) {
	with (this) {
		clearTimeout(mtsTimer);
		if (menus[mN])menus[mN].out()
	}
};
FSMenu.prototype.hideAll = function() {
	with (this) {
		for (var m in menus)if (menus[m].visible && !menus[m].isRoot)menus[m].hide(true)
	}
};
function FSMenuNode(id, isRoot, obj) {
	this.id = id;
	this.isRoot = isRoot;
	this.obj = obj;
	this.lyr = this.child = this.par = this.timer = this.visible = null;
	this.args = [];
	var node = this;
	this.over = function(evt) {
		with (node)with (obj) {
			if (isNS4 && evt && lyr.ref)lyr.ref.routeEvent(evt);
			clearTimeout(timer);
			clearTimeout(mtsTimer);
			if (!isRoot && !visible)node.show();
			if (menuToShow.length) {
				var a = menuToShow,m = a[0];
				if (!menus[m] || !menus[m].lyr.ref)menus[m] = new FSMenuNode(m, false, obj);
				var c = menus[m];
				if (c == node) {
					menuToShow.length = 0;
					return
				}
				clearTimeout(c.timer);
				if (c != child && c.lyr.ref) {
					c.args.length = a.length;
					for (var i = 0; i < a.length; i++)c.args[i] = a[i];
					var delay = child ? switchDelay : showDelay;
					c.timer = setTimeout('with(' + myName + '){menus["' + c.id + '"].par=menus["' + node.id + '"];menus["' + c.id + '"].show()}', delay ? delay : 1)
				}
				menuToShow.length = 0
			}
			if (!nested && par)par.over()
		}
	};
	this.out = function(evt) {
		with (node)with (obj) {
			if (isNS4 && evt && lyr && lyr.ref)lyr.ref.routeEvent(evt);
			clearTimeout(timer);
			if (!isRoot) {
				timer = setTimeout(myName + '.menus["' + id + '"].hide()', hideDelay);
				if (!nested && par)par.out()
			}
		}
	};
	if (this.id != 'root')with (this)with (lyr = getLyr(id))if (ref) {
		if (isNS4)ref.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
		addEvent(ref, 'mouseover', this.over);
		addEvent(ref, 'mouseout', this.out);
		if (obj.nested) {
			addEvent(ref, 'focus', this.over);
			addEvent(ref, 'click', this.over);
			addEvent(ref, 'blur', this.out)
		}
	}
}
;
FSMenuNode.prototype.show = function(forced) {
	with (this)with (obj) {
		if (!lyr || !lyr.ref)return;
		if (par) {
			if (par.child && par.child != this)par.child.hide();
			par.child = this
		}
		var offR = args[1],offX = args[2],offY = args[3],lX = 0,lY = 0,doX = '' + offX != 'undefined',doY = '' + offY != 'undefined';
		if (self.page && offR && (doX || doY)) {
			with (page.elmPos(offR, par.lyr ? par.lyr.ref : 0))lX = x,lY = y;
			if (doX)lyr.x(lX + eval(offX));
			if (doY)lyr.y(lY + eval(offY))
		}
		if (offR)lightParent(offR, 1);
		visible = 1;
		if (obj.onshow)obj.onshow(id);
		lyr.ref.parentNode.style.zIndex = '2';
		setVis(1, forced)
	}
};
FSMenuNode.prototype.hide = function(forced) {
	with (this)with (obj) {
		if (!lyr || !lyr.ref || !visible)return;
		if (isNS4 && self.isMouseIn && isMouseIn(lyr.ref))return show();
		if (args[1])lightParent(args[1], 0);
		if (child)child.hide();
		if (par && par.child == this)par.child = null;
		if (lyr) {
			visible = 0;
			if (obj.onhide)obj.onhide(id);
			lyr.ref.parentNode.style.zIndex = '1';
			setVis(0, forced)
		}
	}
};
FSMenuNode.prototype.lightParent = function(elm, lit) {
	with (this)with (obj) {
		if (!cssLitClass || isNS4)return;
		if (lit)elm.className += (elm.className ? ' ' : '') + cssLitClass; else elm.className = elm.className.replace(new RegExp('(\\s*' + cssLitClass + ')+$'), '')
	}
};
FSMenuNode.prototype.setVis = function(sh, forced) {
	with (this)with (obj) {
		if (lyr.forced && !forced)return;
		lyr.forced = forced;
		lyr.timer = lyr.timer || 0;
		lyr.counter = lyr.counter || 0;
		with (lyr) {
			clearTimeout(timer);
			if (sh && !counter)sty[cssProp] = cssVis;
			var speed = sh ? animInSpeed : animOutSpeed;
			if (isDOM && speed < 1)for (var a = 0; a < animations.length; a++)animations[a](ref, counter, sh);
			counter += speed * (sh ? 1 : -1);
			if (counter > 1) {
				counter = 1;
				lyr.forced = false
			} else if (counter < 0) {
				counter = 0;
				sty[cssProp] = cssHid;
				lyr.forced = false
			} else if (isDOM) {
				timer = setTimeout(myName + '.menus["' + id + '"].setVis(' + sh + ',' + forced + ')', 50)
			}
		}
	}
};
FSMenu.animSwipeDown = function(ref, counter, show) {
	if (show && (counter == 0)) {
		ref._fsm_styMT = ref.style.marginTop;
		ref._fsm_curMT = parseInt(ref.currentStyle ? ref.currentStyle.marginTop : (document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(ref, null).getPropertyValue('marginTop') : 0))
	}
	var cP = Math.pow(Math.sin(Math.PI * counter / 2), 0.75);
	var clipY = ref.offsetHeight * (1 - cP);
	ref.style.clip = (counter == 1 ? ((window.opera || navigator.userAgent.indexOf('KHTML') > -1) ? '' : 'rect(auto,auto,auto,auto)') : 'rect(' + clipY + 'px,' + ref.offsetWidth + 'px,' + ref.offsetHeight + 'px,0)');
	if (counter == 1 || (counter < 0.01 && !show)) {
		if (ref._fsm_styMT)ref.style.marginTop = ref._fsm_styMT; else if (ref.style.removeProperty)ref.style.removeProperty('margin-top', true); else if (ref.style.cssText)ref.style.cssText = ref.style.cssText.replace(/MARGIN-TOP:[^;]*;\s*/i, '')
	} else ref.style.marginTop = ((0 - clipY) + (ref._fsm_curMT || 0)) + 'px'
};
FSMenu.animFade = function(ref, counter, show) {
	var done = (counter == 1);
	if (ref.filters) {
		var alpha = !done ? ' alpha(opacity=' + parseInt(counter * 100) + ')' : '';
		if (ref.style.filter.indexOf("alpha") == -1)ref.style.filter += alpha; else ref.style.filter = ref.style.filter.replace(/\s*alpha\([^\)]*\)/i, alpha)
	} else ref.style.opacity = ref.style.MozOpacity = counter / 1.001
};
FSMenu.animClipDown = function(ref, counter, show) {
	var cP = Math.pow(Math.sin(Math.PI * counter / 2), 0.75);
	ref.style.clip = (counter == 1 ? ((window.opera || navigator.userAgent.indexOf('KHTML') > -1) ? '' : 'rect(auto,auto,auto,auto)') : 'rect(0,' + ref.offsetWidth + 'px,' + (ref.offsetHeight * cP) + 'px,0)')
};
FSMenu.prototype.activateMenu = function(id, subInd) {
	with (this) {
		if (!isDOM || !document.documentElement)return;
		var fsmFB = getRef('fsmenu-fallback');
		if (fsmFB) {
			fsmFB.rel = 'alternate stylesheet';
			fsmFB.disabled = true
		}
		var a,ul,li,parUL,mRoot = getRef(id),nodes,count = 1;
		var lists = mRoot.getElementsByTagName('ul');
		for (var i = 0; i < lists.length; i++) {
			li = ul = lists[i];
			while (li) {
				if (li.nodeName.toLowerCase() == 'li')break;
				li = li.parentNode
			}
			if (!li)continue;
			parUL = li;
			while (parUL) {
				if (parUL.nodeName.toLowerCase() == 'ul')break;
				parUL = parUL.parentNode
			}
			a = null;
			for (var j = 0; j < li.childNodes.length; j++)if (li.childNodes[j].nodeName.toLowerCase() == 'a')a = li.childNodes[j];
			if (!a)continue;
			var menuID = myName + '-id-' + count++;
			if (ul.id)menuID = ul.id; else ul.setAttribute('id', menuID);
			var sOC = (showOnClick == 1 && li.parentNode == mRoot) || (showOnClick == 2);
			var evtProp = navigator.userAgent.indexOf('Safari') > -1 || isOp ? 'safRtnVal' : 'returnValue';
			var eShow = new Function('with(' + myName + '){var m=menus["' + menuID + '"],pM=menus["' + parUL.id + '"];' + (sOC ? 'if((pM&&pM.child)||(m&&m.visible))' : '') + ' show("' + menuID + '",this)}');
			var eHide = new Function('e', 'if(e.' + evtProp + '!=false)' + myName + '.hide("' + menuID + '")');
			addEvent(a, 'mouseover', eShow);
			addEvent(a, 'focus', eShow);
			addEvent(a, 'mouseout', eHide);
			addEvent(a, 'blur', eHide);
			if (sOC)addEvent(a, 'click', new Function('e', myName + '.show("' + menuID + '",this);if(e.cancelable&&e.preventDefault)e.preventDefault();e.' + evtProp + '=false;return false'));
			if (subInd)a.insertBefore(subInd.cloneNode(true), a.firstChild)
		}
		if (isIE && !isOp) {
			var aNodes = mRoot.getElementsByTagName('a');
			for (var i = 0; i < aNodes.length; i++) {
				addEvent(aNodes[i], 'focus', new Function('e', 'var node=this.parentNode;while(node){if(node.onfocus)node.onfocus(e);node=node.parentNode}'));
				addEvent(aNodes[i], 'blur', new Function('e', 'var node=this.parentNode;while(node){if(node.onblur)node.onblur(e);node=node.parentNode}'))
			}
		}
		if (hideOnClick)addEvent(mRoot, 'click', new Function(myName + '.hideAll()'));
		menus[id] = new FSMenuNode(id, true, this)
	}
};
var page = {win:self,minW:0,minH:0,MS:isIE && !isOp,db:document.compatMode && document.compatMode.indexOf('CSS') > -1 ? 'documentElement' : 'body'};
page.elmPos = function(e, p) {
	var x = 0,y = 0,w = p ? p : this.win;
	e = e ? (e.substr ? (isNS4 ? w.document.anchors[e] : getRef(e, w)) : e) : p;
	if (isNS4) {
		if (e && (e != p)) {
			x = e.x;
			y = e.y
		}
		;
		if (p) {
			x += p.pageX;
			y += p.pageY
		}
	}
	if (e && this.MS && navigator.platform.indexOf('Mac') > -1 && e.tagName == 'A') {
		e.onfocus = new Function('with(event){self.tmpX=clientX-offsetX;self.tmpY=clientY-offsetY}');
		e.focus();
		x = tmpX;
		y = tmpY;
		e.blur()
	} else while (e) {
		x += e.offsetLeft;
		y += e.offsetTop;
		e = e.offsetParent
	}
	return{x:x,y:y}
};
if (isNS4) {
	var fsmMouseX,fsmMouseY,fsmOR = self.onresize,nsWinW = innerWidth,nsWinH = innerHeight;
	document.fsmMM = document.onmousemove;
	self.onresize = function() {
		if (fsmOR)fsmOR();
		if (nsWinW != innerWidth || nsWinH != innerHeight)location.reload()
	};
	document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = function(e) {
		fsmMouseX = e.pageX;
		fsmMouseY = e.pageY;
		return document.fsmMM ? document.fsmMM(e) : document.routeEvent(e)
	};
	function isMouseIn(sty) {
		with (sty)return((fsmMouseX > left) && (fsmMouseX < left + clip.width) && (fsmMouseY > top) && (fsmMouseY < top + clip.height))
	}
}

var listMenu = new FSMenu('listMenu', true, 'display', 'block', 'none');
listMenu.cssLitClass = 'highlighted';

listMenu.animations[listMenu.animations.length] = FSMenu.animFade;

var arrow = null;
if (document.createElement && document.documentElement) {
	arrow = document.createElement('img');
	arrow.src = '/_gfx/layout/subMenuBg.gif';
	arrow.style.borderWidth = '0';
	arrow.className = 'subind';
}
addEvent(window, 'load', new Function('listMenu.activateMenu("listMenuRoot", arrow)'));
