function getTreeTickAugmenter(){var g = 0,d = {tick:f,isCurrent:f},h = false;function f(){return h;}function a(p, n){var l = NaN;p = p||d;n.tick = function(s){if(!s){t();h = true;}l = g;p.tick(true);};n.isCurrent = function(){return (l == g);};}function t(){g = ((g+1)%0xEFFFFFFF);h = false;}a.tick = t;return a;}
var finalizeMe = (function(){var g=this,b,s=false,l=(g.addEventListener&&2)||(g.attachEvent&&3)||0;function e(n,f){function t(v){if(n)n(v);f(v);};t.a=function(d){if(f!=d.g()){if(n){n.a(d);}else{n=d;}}return this;};t.r=function(d){if(f==d){f=null;return n;}else if(n){n=n.r(d);}return this;};t.g=function(){return f;};t.f=function(){if(n)n=n.f();return(f=null);};return t;}function d(f){if(b){b=b.a(e(null,f));}else{b=e(null,f);}}function q(f){d(f);if(!s){switch(l){case 2:g.addEventListener("unload",b,false);s=true;break;case 3:g.attachEvent("onunload",b);s = true;break;default:if(g.onunload!=b){if(g.onunload)d(g.onunload);g.onunload = b;}break;}}}q.remove=function(f){if(b)b.r(f);};q(function(){if(b){b.f();switch(l){case 3:g.detachEvent("onunload",b);break;case 2:g.removeEventListener("unload",b,false);break;default:g.onunload=null;break;}b=null;}s=false;});return q;})();
var InitializeMe = (function(){var g=this,b=null,s=false;var l=(g.addEventListener&&2)||(g.attachEvent&&3)||0;function G(n,f,w,x,y,z){function m(e){f((e?e:g.event),w,x,y,z);if(n)n=n(e);return (f=null);};m.a=function(d){if(n){n.a(d);}else{n=d;}};return m;};return(function(f,w,x,y,z){if(b){b.a(G(null,f,w,x,y,z));}else{b=G(null,f,w,x,y,z);}if(!s){switch(l){case 2:g.addEventListener("load",b,false);s=true;break;case 3:g.attachEvent("onload",b);s=true;break;default:if(g.onload!=b){if(g.onload){b.a(G(null,g.onload));}g.onload=b;}break;}}});})();
var queryStrings = (function(o){if(typeof location!='undefined'){var c,w,n,p,t=location.search||location.href||'';if((p=t.indexOf('?'))>-1){t=t.split("#")[0];t=t.substring((p+1),t.length);w=t.split('&');for(c=w.length;c--;){n=w[c].split('=');if(n.length>1){o[n[0]]=n[1];}}}}return o;})({});
var TimedQue = (function(){var b,t,i=60,n=null;function j(n,f){function t(){n=n&&n();if(f()){return t;}else{f=null;return n;}}t.a=function(d){if(n){n.a(d);}else{n=d;}return this;};t.f=function(){return((n)&&(n=n.f())||(f=null));};return t;}function q(fc){if(n){n=n.a(j(null,fc));}else{n=j(null,fc);}if(!t){t=setTimeout(q.c,i);}}q.c = function(){var fn=n,strt=new Date().getTime();if(fn){n=null;if(b){b.a(fn);}else{b=fn;}}b=b&&b();if(b||n){var t=i-(new Date().getTime()-strt);t=setTimeout(q.c,((t>0)?t:1));}else{t=null;}};q.c.toString=function(){return 'TimedQue.c()';};q.finalize=function(){t=t&&clearTimeout(t);b=b&&b.f();n=null;};return q;})();
var getElementWithId = (function(){if(document.getElementById){return(function(i){return document.getElementById(i);});}else if(document.all){return(function(i){return document.all[i];});}return(function(i){return null;});})();
function getNewFILCFncStac(f){function g(f){var n=null;function t(c){n=n&&n(c);return (f(c))?t:n;}t.f=function(){n=n&&n.f();return(f=null);};t.a=function(d){if(f!=d){if(n){n.a(d);}else{n=g(d);}}return this;};return t;}var b=g(f);f=function(a){b=b&&b(a);};f.addItem=function(d){if(b){b.a(d);}else{b=g(d);}};f.finalize=function(){return (b=b&&b.f());};return f;}
function getSimpleExtPxIn(e){var a,b,x=0,g=R,h=R,v,l=[];function R(){return false;}R.y=R;R.iY=R.iX=R.y=R.x=R.w=R.h=R.bb=R.bt=R.bl=R.br=0;function T(){return T;}function B(p,e){h(p,v.getComputedStyle(e,'' ));}function F(p,s){p.bt=(s.getPropertyCSSValue('border-top-width').getFloatValue(5));p.bl=(s.getPropertyCSSValue('border-left-width').getFloatValue(5));p.br=(s.getPropertyCSSValue('border-right-width').getFloatValue(5));p.bb=(s.getPropertyCSSValue('border-bottom-width').getFloatValue(5));}function J(p,s){p.bt=Math.ceil(parseFloat(s.getPropertyValue('border-top-width')))|0;p.bl=Math.ceil(parseFloat(s.getPropertyValue('border-left-width')))|0;p.br=Math.ceil(parseFloat(s.getPropertyValue('border-right-width')))|0;p.bb=Math.ceil(parseFloat(s.getPropertyValue('border-bottom-width')))|0;}function K(p,e){if(e.clientWidth||e.clientHeight){p.bb=(e.offsetHeight-(e.clientHeight+(p.bt=e.clientTop|0)))|0;p.br=(e.offsetWidth-(e.clientWidth+(p.bl=e.clientLeft|0)))|0;}}function Q(e){var L=NaN;var oP=U(e.offsetParent)||R;function p(t){if(t){x=(1+x)%0xEFFFFFFF;}if(x!=L){L=x;oP();g(p,e);p.iY=(p.y=(oP.iY+(e.offsetTop|0)))+p.bt;p.iX=(p.x=(oP.iX+(e.offsetLeft|0)))+p.bl;p.w=e.offsetWidth|0;p.h=e.offsetHeight|0;}return p;}p.elEquals=function(z){return (z==e);};p.iY=p.iX=p.w=p.h=p.y=p.x=p.bb=p.bt=p.bl=p.br=0;return (l[l.length]=p);}function U(e){if((!e)||(e==document)){return R;}for(var c=l.length;c--;){if(l[c].elEquals(e)){return l[c];}}return Q(e);}function W(e){var L=NaN;function p(t){if(t){x=(1+x)%0xEFFFFFFF;}return p;}p.elEquals=function(z){return (z==e);};p.iY=p.iX=p.w=p.h=p.y=p.x=p.bb=p.bt=p.bl=p.br=0;l[l.length]=p;}if((typeof e.offsetParent!='undefined')&&(typeof e.offsetTop=='number')&&(typeof e.offsetWidth=='number')){if((typeof e.clientTop=='number')&&(typeof e.clientWidth=='number')){g=K;}else if((v=document.defaultView)&&v.getComputedStyle &&(a=v.getComputedStyle(e,'' ))&&(((a.getPropertyCSSValue)&&(b=a.getPropertyCSSValue('border-top-width'))&&(b.getFloatValue)&&(h=F))||((a.getPropertyValue)&&(h=J)))){g=B;b=a=null;}if(document.documentElement){W(document.documentElement);}if(document.body){W(document.body);}return (getSimpleExtPxIn=U)(e);}else{T.y=R;T.iY=T.iX=T.y=T.x=T.w=T.h=T.bb=T.bt=T.bl=T.br=NaN;return (getSimpleExtPxIn=T);}}
function getWindowState(){var g=this, f={scrollLeft:NaN,scrollTop:NaN},j={clientWidth:NaN,clientHeight:NaN},k={innerWidth:NaN,innerHeight:NaN},l='scrollLeft',m='scrollTop',n=0,p,q,r,s,u=null,v=null, o={getScrollX:x,getScrollY:y,getWidth:function(){return I('getWidth');},getHeight:function(){return I('getHeight');}};function X(){J();return x();}function Y(){J();return q;}function x(){return f[l]|0;}function y(){return f[m]|0;}function W(){return k.innerWidth;}function w(){return j.clientWidth;}function H(){return k.innerHeight;}function h(){return j.clientHeight;}function U(){return(F()?o.getHeight:h)();}function V(){return (F()?o.getWidth:w)();}function D(){o.getWidth=W;o.getHeight=H;}function E(){o.getScrollX=x;o.getScrollY=y;}function F(){if((s!=(s=H()))||(r!=(r=W()))){R();return true;}return false;}function J(){if((q!=(q=y()))||(p!=(p=x()))){R();}}function K(a,b){var V,H;if(((V=(g.innerHeight-a.clientHeight))>=0)&&((H=(g.innerWidth-a.clientWidth))>=0)&&(!(x()&&!V))&&(!(y()&&!H))&&(!((H&&(b.h||(b.h=H))&&(H!=b.h))||(V&&(b.v||(b.v=V))&&(V!=b.v))))){if(H==V){b.r=(+Boolean(H));}else if((H&&!V)||(V&&!H)){b.r=(H+V);}else{b.r=NaN;}}else{b.r=NaN;}return b;}function P(t){for(var c=arguments.length;--c;){if(typeof t[arguments[c]]!='number'){return false;}}return true;}function Q(a,b){if(a&&P(a,'clientWidth','clientHeight')){K(a,b);}return b;}function I(c){r=W();s=H();q=y();p=x();u={v:0,h:0,r:NaN};v={v:0,h:0,r:NaN};o.getWidth=V;o.getHeight=U;o.getScrollX=X;o.getScrollY=Y;R();Q=K;return o[c]();}function R(){var c=document,b=isNaN(Q(c.body,u).r),d=isNaN(Q(c.documentElement,v).r);if(b||d){if(b&&d){E();D();}else{j=((d)?c.body:c.documentElement);u=((d)?u:v);v=null;R=T;}}else{j=((u.r < v.r)?c.body:c.documentElement);}}function T(){if(isNaN(Q(j,u).r)){u=null;E();D();}else if((u.v)&&(u.h)&&(++n > 2)){u=null;o.getWidth=w;o.getHeight=h;E();}}if(!P(g,'innerHeight','innerWidth')){j=compatModeTest(j);o.getWidth=w;o.getHeight=h;}else{k=g;}if(P(g,'pageYOffset','pageXOffset')){f=g;m='pageYOffset';l='pageXOffset';}else{f=compatModeTest(f);}return(getWindowState=function(){return o;})();}
function compatModeTest(o){var d=document;if((d.compatMode)&&(d.compatMode.indexOf('CSS')!=-1)&&(d.documentElement)){return (compatModeTest=function(){return d.documentElement;})((o=null));}else if(d.body){return (compatModeTest=function(){return d.body;})((o=null));}else{return o;}}


var setStyleProps = (function(){
	var overrideStyles = {
		margin:[{keys:['margin','marginBottom','marginLeft','marginRight','marginTop'],value:'0px'}],
		padding:[{keys:['padding','paddingBottom','paddingLeft','paddingRight','paddingTop'],value:'0px'}],
		border:[
			{keys:['border','borderBottom','borderLeft','borderRight','borderTop'],value:'0px none #FFFFFF'},
			{keys:['borderWidth','borderLeftWidth','borderRightWidth','borderBottomWidth','borderTopWidth'],value:'0px'},
			{keys:['borderStyle','borderRightStyle','borderLeftStyle','borderBottomStyle','borderTopStyle'],value:'none'}
		],
		overflowH:[{keys:['overflow'],value:'hidden'}],
		overflowA:[{keys:['overflow'],value:'auto'}],
		positionRel:[{keys:['position'],value:'relative'}],
		positionAbs:[{keys:['position'],value:'absolute'}],
		top:[{keys:['top'],value:'0px'}],
		left:[{keys:['left'],value:'0px'}],
		cssFloatR:[{keys:['cssFloat'],value:'right'},{keys:['styleFloat'],value:'right'}],
		displayI:[{keys:['display'],value:'inline'}],
		displayB:[{keys:['display'],value:'block'}],
		nowrap:[{keys:['whiteSpace'],value:'nowrap'}],
		textAlignL:[{keys:['textAlign'],value:'left'}],
		textAlignC:[{keys:['textAlign'],value:'center'}],
		visibilityH:[{keys:['visibility'],value:'hidden'}],
		visibilityV:[{keys:['visibility'],value:'visible'}],
		zIndex2:[{keys:['zIndex'],value:2}],
		zIndex4:[{keys:['zIndex'],value:4}],
		listStyleNone:[{keys:['listStyleType'],value:'none'}]
	};
	return(function(styleObj){
		var data, dArray,c,d,e;
		for(c = 1;c < arguments.length;c++){
			if((data = overrideStyles[arguments[c]])){
				for(d = data.length;d--;){
					dArray = data[d].keys;
					for(e = dArray.length;e--;){
						styleObj[dArray[e]] = data[d].value;
					}
				}
			}
		}
		return true;
	});
})();

var Menu = (function(){
	var notAbort = true, global = this, finalise, menuList = {};
	var windowState, lowestZindex = 100,tabIndex = 1,shiftTab = false;
	var imgSrc = 'images/closeMenu.gif';
	var imgCl, menuCloseSrc = 'images/closeMenu.gif';
	var imgOp, menuOpenSrc = 'images/openMenu.gif';
	if(global.Image){
		imgCl = new Image();
		imgCl.src = menuCloseSrc;
		imgOp = new Image();
		imgOp.src = menuOpenSrc;
	}
	function retFalse(){return false;}
	function main(){
		var id;
		for(var c = 0;c < arguments.length;c++){
			id = arguments[c];
			if(notAbort&&!menuList[id]){
				menuList[id] = new MainMenu(id);
			}
		}
	}
	function onKeyPress(e){
		var e = e||global.event
		shiftTab = (((e.keyCode||e.charCode) == 9)&&e.shiftKey);
	}
	function isTestChildOfEl(el, test){
		while((test = test.parentNode)&&(test != el));
		return (test == el);
	}
	function testIsElOrChildOfEl(el, testEl){
		return testEl&&((testEl == el)||isTestChildOfEl(el, testEl));
	}
	function findULandAs(li, info){
		var width, el, nonUlFound = [];
		var length = li.childNodes.length;
		nonUlFound.aElementCounnt = 0;
		for(var c = 0;c < length;c++){
			el = li.childNodes[c];
			if(el.nodeType == 1){
				if(el.tagName == 'UL'){
					info.containedUL = el;
					info.controlNode = nonUlFound;
					break;
				}else if(el.tagName == 'A'){
					nonUlFound.aElementCounnt += 1;
					nonUlFound.lastAElementFound = el;
					el.tabIndex = tabIndex++;
				}
			}
			nonUlFound[nonUlFound.length] = el;
		}
		if(nonUlFound.lastAElementFound){
			nonUlFound.lastAElementFound.onkeydown = nonUlFound.lastAElementFound.onkeypress = onKeyPress;
		}
	}
	function wrapNodes(parent, nodeAr, id){
		var length = nodeAr.length;
		var a = document.createElement('A');
		a.href = addDisableQueryString(location.href, id);
		a.tabIndex = tabIndex++;
		a.onkeydown = a.onkeypress = onKeyPress;
		setStyleProps(a.style, 'nowrap');
		if(length){
			parent.insertBefore(a, nodeAr[0])
		}else{
			parent.appendChild(a);
		}
		for(var c = 0;c < nodeAr.length;c++){
			a.appendChild(nodeAr[c]);
		}
		return a;
	}
	function addDisableQueryString(href, fragment){
		var workSt = new String(href);
		var indexHash = workSt.indexOf('#');
		var indexQuestion = workSt.indexOf('?');
		var baseHref = workSt.substring(0,
			(
			 ((indexQuestion != -1)&&indexQuestion)||
			 ((indexHash != -1)&&indexHash)||
			 workSt.length
			)
		);

		if(fragment){
			baseHref += '#'+fragment;
		}else if(indexHash != -1){
			baseHref += workSt.substring(indexHash, workSt.length);
		}
		return baseHref;
	}
	function getLastUlChild(p){
		var n = p.childNodes;
		for(var c = n.length;c--;){
			p = n[c];
			if((p.nodeType == 1)&&(p.tagName == 'UL')){return p;}
		}
	}
	
	function MainMenu(id){
		var masterDiv, refDiv, masterDivPos, refDivPos, imageTab, parent, ul, temp, tempEl, c;
		var self = this;
		/* private static members for the internal object (instance members as far as this menu object is concerned) */
		var opened = getNewFILCFncStac(retFalse);
		var addTick = getTreeTickAugmenter();

		function ticker(e){
			addTick.tick();
		}
		function forDocListener(e){
			e = e||global.event;
			if(!testIsElOrChildOfEl(parent, (e.srcElement||e.target))){
				addTick.tick();
			}
		}

		function setUpChildNodes(){
			var c, tempEl, temp = ul.childNodes.length, ar = [];
			for(c = temp;c--;){
				tempEl = ul.childNodes[c];
				if((tempEl.nodeType == 1)&&(tempEl.tagName == 'LI')){
					ar[ar.length] = tempEl;
				}
			}
			for(c = ar.length;c--;){
				tempEl = ar[c];
				temp = document.createElement('SPAN');
				temp.className = 'menuHead';
				masterDiv.appendChild(temp);
				(self.childNodes[self.childNodes.length] = new LiNode(tempEl, self, id)).reSetLi(temp);
				setStyleProps(temp.style, 'displayI', 'positionRel', 'textAlignC', 'zIndex4'); //set the display porper;ty of the top level LI elements to inline.
			}
			return notAbort;
		}

		function operaBackFix(){
			TimedQue.finalize();
			masterDiv.onmouseover = masterDiv.onfocue = masterDiv.onkeydown = function(){
				TimedQue(function(){opened();return true;});
				addTick.tick();
				opened();
				finalizeMe(operaBackFix);
				masterDiv.onmouseover = masterDiv.onfocue = masterDiv.onkeydown = null;
			}
		}

		/* internal object constructor */
		function LiNode(li, parentLi, id){
			var temp, tempEl,temp2, imgNode, posOpen,posClose;
			var self = this;
			var midAbsDiv, midAbsDivStyle,midRelinerDivStyle,midAbsinerDivStyle,inRelDiv,inRelDivStyle,midAbsDivPos, ulPos, cntPos;
			var initialWidth = NaN, initialHeigth = NaN;

			function setOpen(){
				opened.addItem(position);
				self.isOpen = true;
				self.tick();
				shiftTab = false;
			}
			function firstPosition(){
				midAbsDivStyle.visibility = 'hidden';
				initialWidth = self.containedUL.offsetWidth;
				initialHeigth = self.containedUL.offsetHeight;
				midAbsDivStyle.left = midAbsDivStyle.top = '0px'; //zero initial poistions
				midRelinerDivStyle.width = midAbsinerDivStyle.width = midAbsDivStyle.width = (initialWidth>>1)+'px'; //expand containers to twice width.
				midRelinerDivStyle.height = midAbsinerDivStyle.height = midAbsDivStyle.height = (initialHeigth<<1)+'px';
				opened.addItem(position);
				return false; // drop from list
			}
			function position(){ // the intitial position angorithm set-up function.
				var t1,t2,t3,width = self.containedUL.offsetWidth;
				if(width > initialWidth){ //use squashing algorithm. initialWidth may be NaN on first use?
					ulPos = getSimpleExtPxIn(self.containedUL);
					midRelinerDivStyle.width = midAbsinerDivStyle.width = midAbsDivStyle.width = '0px'; //expand containers to twice width.
					posOpen = doOpenSQ;
					posClose = doCloseSQ;
				}else{ //use expanding algorithm
					 if(self.containedUL.parentNode == inRelDiv){
						t1 = document.createElement('TABLE');
						setStyleProps(t1.style, 'positionRel', 'padding', 'margin', 'border');
						t2 = document.createElement('TBODY');
						t1.appendChild(t2);
						t2.appendChild((t3 = document.createElement('TR')));
						setStyleProps(t3.style, 'positionRel', 'padding', 'margin', 'border');
						t3.appendChild((t2 = document.createElement('TD')));
						setStyleProps(t2.style, 'positionRel', 'padding', 'margin', 'border');
						inRelDiv.insertBefore(t1, self.containedUL);
						t2.appendChild(self.containedUL);
						ulPos = getSimpleExtPxIn(t1);
						midRelinerDivStyle.width = midAbsinerDivStyle.width = midAbsDivStyle.width = (initialWidth<<1)+'px'; //expand containers to twice width.
						midRelinerDivStyle.height = midAbsinerDivStyle.height = midAbsDivStyle.height = (initialHeigth + 5)+'px';
						posOpen = doOpenEX;
						posClose = doCloseEX;
					}else{
						addTick.tick();
					}
				}
				position = positionMain;
				cntPos = getSimpleExtPxIn(li);
				return position(); //call the new position fucntion
			}

			function positionMain(){
					var t,bW,bH,maxDim,ow,oh,ulWidth,ulHeight,lO,tO,isOpen = self.isCurrent();
					ow = ((ulWidth = ulPos(true).w) + (bW = (midAbsDivPos().bl + midAbsDivPos.br)));
					lO = cntPos().x + self.getOffsetLeft();
					if((lO + ow) >= (maxDim = (windowState.getWidth()+(t = windowState.getScrollX()) - bW))){
						lO = maxDim - (ow+bW);
						if(isOpen && (lO < t)){ //only if visible
							ow -= (t - lO);
							lO = t;
						}
					}
					oh = (ulHeight = ulPos.h) + (bH = (midAbsDivPos.bt + midAbsDivPos.bb));
					tO = (cntPos.h+li.offsetTop + parentLi.getOffsetTop());
					if((tO + oh) >= (maxDim = (windowState.getHeight()+(t = windowState.getScrollY()) - bH))){
						tO = maxDim - oh;
						if(isOpen && (tO < t)){ //only if visible
							oh -= (t - tO);
							tO = t;
						}
					}else{
						tO -= (midAbsDivPos.bt + (cntPos.h >> 3)); //1/8 el height
					}
					midAbsDivStyle.left = (lO - refDivPos().x)+'px';
					midAbsDivStyle.top = (tO - refDivPos.y)+'px';
					if(isOpen){
						posOpen((ulWidth+'px'),((ow+bW)+'px'),((ulHeight)+'px'),((oh+bH)+'px'))
					}else{
						posClose((ulWidth+'px'),(ow+bW))
					}
					return isOpen;
			}
			function doOpenEX(ulWidth, offW,ulHeight,offH){
				midRelinerDivStyle.width = midAbsinerDivStyle.width = ulWidth;
				midAbsDivStyle.width = offW;
				midRelinerDivStyle.height = midAbsinerDivStyle.height = ulHeight;
				midAbsDivStyle.height = offH;
				midAbsDivStyle.visibility = 'visible';
				imgNode.src = menuCloseSrc;
				self.controlNode.title = imgNode.title = 'Close sub-menu.';
			}
			function doCloseEX(ulWidth, offW){
				midRelinerDivStyle.width = midAbsinerDivStyle.width = ulWidth;
				midAbsDivStyle.width = (offW+40)+'px';
				midAbsDivStyle.visibility = 'hidden';
				midAbsDiv.scrollTop = midAbsDiv.scrollLeft = 0;
				imgNode.src = menuOpenSrc;
				self.controlNode.title = imgNode.title = 'Open sub-menu.';
			}
			function doOpenSQ(ulWidth, offW, ulHeight, offH){
				midRelinerDivStyle.width = midAbsinerDivStyle.width = ulWidth;
				midAbsDivStyle.width = offW;
				midRelinerDivStyle.height = midAbsinerDivStyle.height = ulHeight;
				midAbsDivStyle.height = offH;
				midAbsDivStyle.visibility = 'visible';
				imgNode.src = menuCloseSrc;
				self.controlNode.title = imgNode.title = 'Close sub-menu.';
			}
			function doCloseSQ(){
				midAbsDivStyle.visibility = 'hidden';
				midAbsinerDivStyle.width =midRelinerDivStyle.width = midAbsDivStyle.width =
				midAbsinerDivStyle.height = midRelinerDivStyle.height = midAbsDivStyle.height = '0px';
				midAbsDiv.scrollTop = midAbsDiv.scrollLeft = 0;
				imgNode.src = menuOpenSrc;
				self.controlNode.title = imgNode.title = 'Open sub-menu.';
			}
			this.getOffsetLeft = ((parentLi.depth == lowestZindex)?
				(function(){
					return ((cntPos().w) >> 2);
				}):
				(function(){
					return (((self.controlNode.offsetWidth >> 3)*5)+self.controlNode.offsetLeft);
				})
			);
			this.getOffsetTop = function(){
				return (midAbsDivPos().y+midAbsDivPos.bt) - midAbsDiv.scrollTop;
			};
			this.reSetLi = function(newContainer){
				var c, cn = li.childNodes, a = [];
				for(c = cn.length;c--;){
					a[a.length] = cn[c];
				}
				for(c = a.length;c--;){
					newContainer.appendChild(a[c]);
				}
				li = newContainer;
			};
			this.finalize = function(){
				for(var c = this.childNodes.length;c--;){
					this.childNodes[c].finalize();
				}
				this.childNodes = imgNode = li = self = parentL = midAbsDiv = midAbsDivStyle = midRelinerDivStyle = midAbsinerDivStyle = inRelDiv = inRelDivStyle = midAbsDivPos = ulPos = cntPos = null;
			}
			this.childNodes = [];
			this.containedUL = null;
			this.controlNode = null;
			this.isOpen = false;
			this.depth = parentLi.depth + 1;
			addTick(parentLi, this); //add the tick and isCurrent methods.
			findULandAs(li, this);
			if(this.controlNode){
				if(this.controlNode.aElementCounnt){
					this.controlNode = this.controlNode.lastAElementFound
				}else{
					this.controlNode = wrapNodes(li, this.controlNode, id); //wrapp the (any) nodes
				}
				this.controlNode.className = 'menuSwitch';
				if(parentLi.depth == lowestZindex){
					imgNode = new Object();
				}else{
					imgNode = document.createElement('IMG');
					imgNode.src = menuOpenSrc;
					this.controlNode.title = imgNode.alt = imgNode.title = 'Click or keyboard-return (when focused) to open sub-menu.';
					setStyleProps(imgNode.style, 'padding', 'margin', 'border');
					this.controlNode.appendChild(imgNode);
				}
				
			}
			if(this.containedUL){ //has a UL child so is not a leaf node
				temp2 = this.containedUL.childNodes;
				temp = temp2.length;
				for(var c = 0;c < temp;c++){
					tempEl = temp2[c];
					if((tempEl.nodeType == 1)&&(tempEl.tagName == 'LI')){
						this.childNodes[this.childNodes.length] = new LiNode(tempEl, this, id);
					}
				}
				var midRelinerDiv, midAbsinerDiv;
				if(
					(notAbort)&&
					(midAbsDiv = document.createElement('DIV'))&&
					(midAbsDiv.className = 'menuDropBox')&&
					(midRelinerDiv = document.createElement('DIV'))&&
					(midAbsinerDiv = document.createElement('DIV'))&&
					(inRelDiv = document.createElement('DIV'))&&
					(midAbsDivStyle = midAbsDiv.style)&&
					(setStyleProps(midAbsDivStyle, 'positionAbs', 'overflowA', 'padding', 'margin', 'border', 'top', 'left'))&&
					(midRelinerDivStyle = midRelinerDiv.style)&&
					(setStyleProps(midRelinerDivStyle, 'positionRel', 'overflowH', 'padding', 'margin', 'border', 'top', 'left'))&&
					(midAbsinerDivStyle = midAbsinerDiv.style)&&
					(setStyleProps(midAbsinerDivStyle, 'positionAbs', 'overflowH', 'padding', 'margin', 'border', 'top', 'left'))&&
					(inRelDivStyle = inRelDiv.style)&&
					(setStyleProps(inRelDivStyle, 'positionRel', 'overflowH', 'textAlignL', 'padding', 'margin', 'border', 'top', 'left'))&&
					(inRelDiv.align = 'left')&& //IE 5.0 fix
					(inRelDiv.noWrap = true)&& //IE 5.0 fix
					(midAbsDivStyle.width = '5px')&& //Mozilla/Gecko fix
					(midAbsDivStyle.zIndex = (self.depth))&&
					(midAbsDivStyle.border = '2px solid #000000')&&
					(midAbsDiv.appendChild(midRelinerDiv))&&
					(midRelinerDiv.appendChild(midAbsinerDiv))&&
					(midAbsinerDiv.appendChild(inRelDiv))&&
					(parent.appendChild(midAbsDiv))&&
					(inRelDiv.appendChild(this.containedUL))&&
					(setStyleProps(li.style, 'positionRel', 'textAlignL', 'margin', 'nowrap'))&&
					(setStyleProps(this.containedUL.style, 'textAlignL', 'listStyleNone', 'nowrap', 'positionRel', 'margin', 'top', 'left'))&&

					(!isNaN((midAbsDivPos = getSimpleExtPxIn(midAbsDiv)).w))
				){
					this.controlNode.onfocus = function(){
						if(shiftTab && (self.isOpen)){
							parentLi.tick();
						}else{
							setOpen();
						}
					}
					this.controlNode.onclick = function(e){
						if(self.isCurrent()){
							if(parentLi.tick == retFalse){
								addTick.tick();
							}else{
								parentLi.tick();
							}
						}else{
							setOpen();
						}
						return false;
					}
					midAbsDiv.onmouseover = this.controlNode.onmouseover = function(e){
						if(!self.isCurrent()){
							setOpen();
						}
					}
					this.controlNode.onkeydown = this.controlNode.onkeypress = onKeyPress;
					this.controlNode.onmouseout = function(e){
						e = e||global.event;
						var t = (e.toElement||e.relatedTarget);
						if((!t)||(!testIsElOrChildOfEl(midAbsDiv, t))){
							addTick.tick();
						}
					};

					this.controlNode.onblur = ticker;
					midAbsDiv.onmouseout = function(e){
						e = e||global.event;
						var t = (e.toElement||e.relatedTarget);
						if((t)&&((!testIsElOrChildOfEl(self.controlNode, t))&&(!testIsElOrChildOfEl(midAbsDiv, t)))){
							addTick.tick();
						}
					};
					opened.addItem(firstPosition); //initially set possition so that DIVs can be initally hidden.
				}else{
					notAbort = false;
				}
			}else{ // else a leafe node
				temp = li.getElementsByTagName('A');
				if(temp){
					for(var c = 0;c < temp.length;c++){
						tempEl = temp[c];
						if(tempEl.tagName == 'A'){
							tempEl.tabIndex = tabIndex++;
							tempEl.onkeydown = tempEl.onkeypress = onKeyPress;
							tempEl.onfocus = function(){
								self.tick();
							};
							tempEl.onblur = ticker;
						}
					}
				}
			}
			tempEl = temp = null;
		}

		this.depth = lowestZindex;
		this.childNodes = [];
		if(!windowState){
			windowState = getWindowState();
		}
		this.getOffsetLeft = function(){
			return (0);
		}
		this.getOffsetTop = function(){
			return masterDivPos().y+masterDivPos.bt;
		}
		if(
			(parent = getElementWithId(id))&&
			(parent.nodeType == 1)&&
			(parent.insertBefore)&&
			(parent.appendChild)&&
			(parent.childNodes)&&
			(parent.getAttribute)&&
			(parent.getElementsByTagName)&&
			(parent.style)&&
			(typeof parent.style.display == 'string')&&
			(parent.tagName)&&
			(ul = getLastUlChild(parent))&&
			(typeof ul.scrollTop == 'number')&&
			(typeof ul.offsetHeight == 'number')&&
			(typeof ul.clientHeight == 'number')&&
			(ul.tagName.toUpperCase() == 'UL')&&
			(ul.style.display = 'none')
		){
			temp = ul.getElementsByTagName('A');
			c = temp.length;
			while(
				  c-- &&
				  ((!temp[c].tabIndex)||(tabIndex = temp[c].tabIndex)) //use the first non-zeo tab index found.
				 );
			imageTab = tabIndex++;
			this.tick = this.isCurrent = retFalse;
			InitializeMe(function(){
				var tmp2;
				if(
					(notAbort)&&
					(refDiv = document.createElement('DIV'))&&
					(setStyleProps(refDiv.style, 'positionAbs', 'padding', 'margin', 'border', 'top', 'left'))&&
					(parent.appendChild(refDiv))&&
					(masterDiv =  document.createElement('DIV'))&&
					(setStyleProps(masterDiv.style, 'positionRel', 'visibilityH', 'textAlignC', 'padding', 'margin', 'border', 'top', 'left'))&&
					(parent.appendChild(masterDiv))&&
					(setUpChildNodes())&&
					(!isNaN((masterDivPos = getSimpleExtPxIn(masterDiv)).w))&&
					(!isNaN((refDivPos = getSimpleExtPxIn(refDiv)).w))
				){
					temp = document.createElement('DIV');
					tmp2 = document.createElement('DIV');
					tmp2.className = 'noMenu';
					tempEl = document.createElement('A');
					c = document.createElement('IMG');
					c.src = imgSrc;
					tempEl.appendChild(c);
					tempEl.href = addDisableQueryString(location.href);
					tempEl.title = c.title = c.alt = 'Re-load this page with static navigation menus.';
					tempEl.onkeydown = tempEl.onkeypress = onKeyPress;
					tempEl.tabIndex = imageTab; //give the disableing image the lowest tabIndex in the menu;
					setStyleProps(tmp2.style, 'cssFloatR', 'padding', 'margin', 'border', 'zIndex2');
					setStyleProps(temp.style, 'positionRel', 'padding', 'margin', 'border', 'zIndex2');
					setStyleProps(c.style, 'padding', 'margin', 'border');
					tmp2.appendChild(temp);
					temp.appendChild(tempEl);
					parent.insertBefore(tmp2, masterDiv);
					temp = tmp2 = c = null;
					if(document.addEventListener){
						document.addEventListener('mouseover', forDocListener, false);
					}
					if(!global.opera){
						finalise.addItem((function(){
							TimedQue.finalize();
							if(document.removeEventListener){
								document.removeEventListener('mouseover', forDocListener, false);
							}
							for(var c = self.childNodes.length;c--;){
								self.childNodes[c].finalize();
							}
							self.childNodes = addTick = opened = masterDiv = refDiv = parent = masterDivPos = refDivPos = ul = temp = tempEl = self = null;
						}));
					}else{
						finalise.addItem(operaBackFix);
					}
					masterDiv.style.visibility = '';
					addTick.tick();  //advance the tick so that no nodes are current (so they will all initially be closed.
					opened(); //call the regestred possition functions so all DIVs will close.
					TimedQue(function(){
						opened();return true;
					});
				}else{
					if(ul&&ul.style){ul.style.display = '';}
					notAbort = false;
				}
				tempEl = ul = c = tempEl = temp = null;
			});
		}else{
			if(ul&&ul.style){ul.style.display = '';}
			notAbort = false;
		}
	}

	if(
		(!global.queryStrings||!queryStrings['noMenu'])&&
		(typeof location != 'undefined')&&
		global.setTimeout&&
		global.document&&
		document.createElement
	){
		finalizeMe((finalise = getNewFILCFncStac(function(){finalise = menuList = null;})));
		return main;
	}else{
		return retFalse;
	}
})();