function getNavInfo(oObj){
	var cName = []
	while(!oObj.getAttribute("ary")){
		if(oObj.className && oObj.className.split("_")[0] == "nav") cName[cName.length] = oObj
		var oObj = oObj.parentElement
	}
	if(oObj.className && oObj.className.split("_")[0] == "nav") cName[cName.length] = oObj
	if(!cName.length) cName = 0
	if(typeof(oObj.ary) == "string") oObj.ary = eval(oObj.ary)
	var p = oObj.id.split(".")
	var lvl = p.length-1
	var c = p[p.length-1]
	var cd = -1
	if(oObj.getAttribute("ary").c) var cd = document.all[oObj.id+".c"]
	var sAry = p[0].split("[")[0]
	var p = oObj
	var i = parseInt(c.split("[")[1])
	var t = document.getElementById(oObj.id+"_text")
	return {p:p,c:c,cd:cd,i:i,t:t,sAry:sAry,oAry:eval(sAry),lvl:lvl,cName:cName}
}


function setFlyout(oRect, oObj, iDir, bTry){
	switch(iDir){
		case 1:
			var l = oRect.left - oObj.offsetWidth
			var t = oRect.top
		break
		case 2:
			var l = oRect.left
			var t = oRect.top - oObj.offsetHeight
		break
		case 3:
			var l = oRect.right
			var t = oRect.top
		break
		case 4:
			var l = oRect.left
			var t = oRect.bottom+1
		break;
		case 5:
			var l = oRect.left - oObj.offsetWidth
			var t = oRect.bottom - oObj.offsetHeight
		break;
		case 7:
			var l = oRect.right
			var t = oRect.bottom - oObj.offsetHeight
		break
	}
	var cRect = {l:l,t:t,r:l+oObj.offsetWidth,b:t+oObj.offsetHeight}
	var pDims = {w:document.body.offsetWidth,h:document.body.offsetHeight}
	if(iDir%2){
		if(cRect.l < 0) return setFlyout(oRect, oObj, 3, bTry)
		if(cRect.r > pDims.w){
			if(!bTry){
				var cRect = setFlyout(oRect, oObj, 1, iDir)
			} else {
				return setFlyout(oRect, oObj, bTry, bTry)
			}
		}
	} else {
		if(t < 0) t = 0
	}
	return cRect
}

function getRect(oObj){
	dims = {left:0,top:0,right:oObj.offsetWidth,bottom:oObj.offsetHeight}
	while(oObj.offsetParent){
		dims.left += oObj.offsetLeft
		dims.top += oObj.offsetTop
		oObj = oObj.offsetParent
	}
	dims.right += dims.left
	dims.bottom += dims.top
	return dims
}

hideTO = 0

function hideAll(bTo, sAry){
	if(!bTo){
		var myNavChild = eval(sAry)
		if( true || !myNavChild.curOb){
			while(myNavChild.divs.length){
				targ = myNavChild.divs.pop()
				if(targ.isOn) return
				targ.style.visibility = "hidden"
			}
		}
	} else {
		 hideTO = setTimeout('hideAll(0,'+sAry+')', bTo)
	}
}

function overOut(oObj, bOn, e){
	info = getNavInfo(oObj)
	if(!info.p.getAttribute("disabled") ){
		if(info.oAry.con){
			var myNavChild = info.oAry.con
		} else {
			var myNavChild = eval(info.sAry+"_Child")
		}
		if(info.oAry.dec){
			var NavDec = info.oAry.dec
		} else {
			var NavDec = eval(info.sAry+"_dec")
		}
		var sid = oObj.getAttribute("sid")
		if(sid.search(/\[/) > -1) oObj.sid = sid.replace(/\[/gi, "").replace(/\]/gi, "")
		var val = info.p.getAttribute("ary")
		if(typeof(val) == "string") var val = eval(val)
		if(val.c && (!info.t || !info.t.getAttribute("disabled"))){
			t = document.getElementById(info.p.id+".c")
			ro = 0
			if(!t){
				b = document.getElementsByTagName("body")[0]
				t = b.appendChild(document.createElement('div'))
				t.style.position = "absolute"
				t = buildNav(t, oObj.id+".c", 0, NavDec, 0, val.c)
				t = t.oObj
				targ = t.childNodes[0].rows[0].cells[1]
				if(info.lvl == 1){
//					bg = "url(images/CORNER_006600-FFFFFF.gif)"
				} else {
//					bg = "url(images/CORNER_top_000000-FFFFFF.gif)"
				}
			}
			l = NavDec.dir.length
			if(info.lvl < l){
				dir = NavDec.dir[info.lvl]
			} else {
				dir = NavDec.dir[l-1]
			}
			cRect = getRect(oObj)
			r = setFlyout(cRect, t, dir, 0)
			t.style.left = r.l
			t.style.top = r.t
			t.style.visibility = "visible"
			if(ro){
				parCon = info.p.id.split(".")
				parCon.pop()
				parCon = getRect(document.getElementById(parCon.join(".")+".c"))
				cRect.bottom-=6
			}
			myNavChild.divs[myNavChild.divs.length] = t
		}
		if(bOn){
			myNavChild.curOb = oObj
			clearTimeout(hideTO)
			hideTO = 0
			var l = myNavChild.divs.length
			if(l){
				for(i=l-1;i;i--){
					tn = myNavChild.divs[i].sid.split('.')
					tn.pop()
					tn = tn.join('.')
					if(oObj.sid.search(tn) == -1){
						tOff = myNavChild.divs[i]
						myNavChild.divs.splice(i,1)
						tOff.style.visibility = "hidden"
					}
				}
			}
		}else {
			if(myNavChild.curOb == oObj) myNavChild.curOb = 0
		}
		if(info.cName){
			for(i=0;i<info.cName.length;i++){
				cn = info.cName[i].className.split("_")
				cn[cn.length-1] = bOn
				info.cName[i].className = cn.join("_")
			}
		}
	}
}

function buildNav(oTarg, sAry, bDebug, oDec, iStart, oAry){
	if(!oAry) var oAry = eval(sAry)
	if(oTarg.tagName.toLowerCase() == "body"){
		for(var i =0; i < genDec.genHolder.length; i++){
			if(!browsDef.Browser){
				var oObj = oTarg.document.createElement(genDec.genHolder[i])
			} else {
				var oObj = oTarg.ownerDocument.createElement(genDec.genHolder[i])
			}
			oObj = oTarg.appendChild(oObj)
			oTarg = oObj
		}
	} else {
		var oObj = oTarg
	}
	var iLvl = sAry.split("[").length-1
	pLvl = oDec.parentCon.length-1
	if(iLvl < pLvl) pLvl = iLvl
	cLvl = oDec.child.length-1
	if(iLvl < cLvl) cLvl = iLvl
	var s = oDec.parentCon[pLvl].start
	var pe = oDec.parentCon[pLvl].end
	oObj.id = sAry
	var sid = sAry.replace(/\[/gi, "").replace(/\]/gi, "")
	oObj.sid = sAry.replace(/\[/gi, "").replace(/\]/gi, "")
	var tAry = [s]
	var s = oDec.child[cLvl].start
	var e = oDec.child[cLvl].end
	var c = oDec.child[cLvl].child+1
	var aKid = []
	var aFunction = {}
	var count = 0
	var curPage = 0
	var curSearch = location.search
	for(var i=iStart;i<oAry.length;i++){
		var oType = typeof(oAry[i].n)
		if(oType == "string" ){
			var tId = sAry+"["+i+"]"
			if(typeof(s) == "object"){
				var gS = s[count]
				var eS = e[count]
				count++
				if(count == s.length) count = 0
			} else {
				var gS = s
				var eS = e
			}
			var ts = gS.replace(/navID/g, tId).replace(/sNavID/g, sid+i)
			if(oAry[i].c && c) aKid[aKid.length] = tId
			if(oAry[i]['fun']){
				for(var j =0; j< oAry[i]['fun'].length; j++){
					if(!aFunction[oAry[i].fun[j]]) aFunction[oAry[i].fun[j]] = []
					aFunction[oAry[i].fun[j]][aFunction[oAry[i].fun[j]].length] = tId
				}
			}
			if(oType == "string"){
				var TEXT = oAry[i].n
			} else {
				var TEXT = oAry[i].n[myEd.lang]
			}
			if(oAry[i].lut){
				var pID = "pageID="+oAry[i].lut.split("_")[1].split("-")[0]
				if(curSearch.search(pID) > -1) curPage = navID
			}
			tAry[tAry.length] = ts+TEXT+eS
		}
	}
	c--
	var s = ''
	if(bDebug) s+= "<XMP>"
	s += tAry.join("\n")+pe
	oObj.innerHTML = s
	if(!bDebug){
		for(var i = 0; i< aKid.length;i++){
			var t = document.getElementById(aKid[i]+"_childIndi")
			if(t){
				if(!t.length) t = [t]
				for(var i=0;i<t.length;i++) t.style.visibility = "inherit"
			}
		}
		for(var e in aFunction){
			if(typeof(aFunction[e]) != "function") eval(e+"({str:['"+aFunction[e].join("','")+"'], obj:["+aFunction[e].join(',')+"]})")
		}
	}
	return {oObj:oObj, sPage:curPage}
}


function goHere(oObj, sStr){
	if(oObj){
		val = getNavInfo(oObj).p.getAttribute("ary")
		if(typeof(val) == "string") val = eval(val)
	} else {
		val = {f:sStr}
	}
	window.location = val.f
}