// Shawn Hill
//  early 2003 
capEnv=document.getElementById&&document.createElement&&document.createTextNode
mTicking=sTicking=initd=false
var openMenu,openSub,mTimeId,sTimeId
m=[]
function menuInit(){
  if(capEnv){
		for(v=0; v<menus.length; v++)addMenu(menus[v])
		for(v=0; v<subs.length; v++)addSub(subs[v])
		if(menus.length>0)openMenu=menus[0][0]
		if(subs.length>0)openSub=subs[0][0]
		initd=true
 }
}
function addMenu(thisM){
	mN=thisM[0]
	m[mN]=document.createElement("div")
	m[mN].id=mN
	m[mN].className=thisM[1]
	m[mN].pos=false
	m[mN].sub=false
	m[mN].lOff=menuLeftOffset
	m[mN].tOff=menuTopOffset
	mKids=thisM[2]
	for(k=0;k<mKids.length;k++){
		gL=document.createElement("a")
		// if this has a submenu
		if(mKids[k].length==3){
			i=document.createElement("img")
			i.src=subArrowImageUrl
			i.align="right"
			i.border=0
			gL.appendChild(i)
			gL.par=mN
			gL.kid=mKids[k][2]
			gL.onmouseover=som
			gL.onmouseout=closeSub
		}
		gL.href=mKids[k][1]
		gL.appendChild(document.createTextNode(mKids[k][0]))
		m[mN].appendChild(gL)
	}			
	m[mN].onmouseover=stopMTimer
	m[mN].onmouseout=closeMenu
	m[mN].style.visibility="hidden"
	document.body.appendChild(m[mN])
}
function addSub(thisM){
	mN=thisM[0]
	m[mN]=document.createElement("div")
	m[mN].id=mN
	m[mN].className=thisM[1]
	m[mN].pos=false
	m[mN].sub=true
	m[mN].lOff=subLeftOffset
	m[mN].tOff=subTopOffset
		
	m[mN].onmouseover=stopSTimer
	m[mN].onmouseout=closeSub
	m[mN].style.visibility="hidden"
	document.body.appendChild(m[mN])	
	mKids=thisM[2]
	for(k=0;k<mKids.length;k++){
		gL=document.createElement("a")
		gL.href=mKids[k][1]
		gL.appendChild(document.createTextNode(mKids[k][0]))
		m[mN].appendChild(gL)
	}		
}
function materialize(menu,mTrig){
	if(capEnv&&initd){
		mov(menu,mTrig)
		stopMTimer()
		startMTimer("showMenu('"+menu+"')",mOpenDelay)
	}
}
function som(){
	mov(this.kid,this)
	stopSTimer()
	startSTimer("showSub('"+this.kid+"')",sOpenDelay)
	stopMTimer()
}
function closeMenu(){
	stopMTimer()
	startMTimer('vis(openMenu,false)',mCloseDelay)
}
function closeSub(){
	stopSTimer()
	startSTimer('vis(openSub,false)',sCloseDelay)
	closeMenu()
}
function showMenu(menu){
	vis(openMenu,false)
	openMenu=menu
	vis(menu,true)
}
function showSub(menu){
	vis(openSub,false)
	openSub=menu
	vis(menu,true)
}
function startMTimer(fn,dur){
	mTicking=true
	mTimeId=setTimeout(fn,dur)
}
function stopMTimer(){
	if(mTicking){
		mTicking=false
		clearTimeout(mTimeId)
	}
}
function startSTimer(fn,dur){
	sTicking=true
	sTimeId=setTimeout(fn,dur)
}
function stopSTimer(){
	stopMTimer()
	if(sTicking){
		sTicking=false
		clearTimeout(sTimeId)
	}
}
function vis(menu,okay){
	m[menu].style.visibility=(okay?'visible':'hidden')
}
function mov(menu,trig){
	z=m[menu]
	if(!z.pos){
		if(z.sub)z.lOff+=trig.offsetWidth
		z.style.left=findPosX(trig)+z.lOff
		z.style.top=findPosY(trig)+z.tOff
		z.pos=true
	}
}
/*
 Thanks to Peter Paul Koch, a scripting revolutionary
 for my scripting educaiton and the creation of the following 2 functions.
 Original code can be found at http://www.xs4all.nl/~ppk/js/
*/ 
function findPosX(obj){
	var curleft=0
	while(obj.offsetParent){
		curleft+=obj.offsetLeft
		obj=obj.offsetParent
	}
	return curleft
}
function findPosY(obj){
	var curtop=0
	while(obj.offsetParent){
		curtop+=obj.offsetTop
		obj=obj.offsetParent
	}
	return curtop
}
