TransMenu.reference={topLeft:1,topRight:2,bottomLeft:3,bottomRight:4} TransMenu.direction={down:1,right:2} TransMenu.registry=[] TransMenu._maxZ=100 TransMenu.isSupported=function(){ var ua=navigator.userAgent.toLowerCase() var pf=navigator.platform.toLowerCase() var an=navigator.appName var r=false if(ua.indexOf("gecko")>-1&&navigator.productSub>=20020605)r=true else if(an=="Microsoft Internet Explorer"){ if(document.getElementById){ if(pf.indexOf("mac")==0){ r=/msie(\d(.\d*)?)/.test(ua)&&Number(RegExp.$1)>=5.1} else r=true}} return r} TransMenu.initialize=function(){ for(var i=0,menu=null;menu=this.registry[i];i++){ menu.initialize()}} TransMenu.renderAll=function(){ var aMenuHtml=[] for(var i=0,menu=null;menu=this.registry[i];i++){ aMenuHtml[i]=menu.toString()} document.write(aMenuHtml.join(""))} function TransMenu(oActuator,iDirection,iLeft,iTop,iReferencePoint,parentMenuSet){ this.addItem=addItem this.addMenu=addMenu this.toString=toString this.initialize=initialize this.isOpen=false this.show=show this.hide=hide this.items=[] this.onactivate=new Function() this.ondeactivate=new Function() this.onmouseover=new Function() this.onqueue=new Function() this.ondequeue=new Function() this.index=TransMenu.registry.length TransMenu.registry[this.index]=this var id="TransMenu"+this.index var contentHeight=null var contentWidth=null var childMenuSet=null var animating=false var childMenus=[] var slideAccel=-1 var elmCache=null var ready=false var _this=this var a=null var pos=iDirection==TransMenu.direction.down ? "top" : "left" var dim=null function addItem(sText,sUrl,browserNav){ var item=new TransMenuItem(sText,sUrl,this,browserNav) item._index=this.items.length this.items[item._index]=item} function addMenu(oMenuItem){ if(!oMenuItem.parentMenu==this)throw new Error("Cannot add a menu here") if(childMenuSet==null)childMenuSet=new TransMenuSet(TransMenu.direction.right,-5,2,TransMenu.reference.topRight) var m=childMenuSet.addMenu(oMenuItem) childMenus[oMenuItem._index]=m m.onmouseover=child_mouseover m.ondeactivate=child_deactivate m.onqueue=child_queue m.ondequeue=child_dequeue return m} function initialize(){ initCache() initEvents() initSize() ready=true} function show(){ if(ready){ _this.isOpen=true animating=true setContainerPos() elmCache["clip"].style.visibility="visible" elmCache["clip"].style.zIndex=TransMenu._maxZ++ slideStart() _this.onactivate()}} function hide(){ if(ready){ _this.isOpen=false animating=true for(var i=0,item=null;item=elmCache.item[i];i++) dehighlight(item) if(childMenuSet)childMenuSet.hide() slideStart() _this.ondeactivate()}} function setContainerPos(){ var sub=oActuator.constructor==TransMenuItem var act=sub ? oActuator.parentMenu.elmCache["item"][oActuator._index] : oActuator var el=act var x=0 var y=0 var minX=0 var maxX=(window.innerWidth ? window.innerWidth : document.body.clientWidth)-parseInt(elmCache["clip"].style.width) var minY=0 var maxY=(window.innerHeight ? window.innerHeight : document.body.clientHeight)-parseInt(elmCache["clip"].style.height) while(sub ? el.parentNode.className.indexOf("transMenu")==-1 : el.offsetParent){ x+=el.offsetLeft y+=el.offsetTop if(el.scrollLeft)x-=el.scrollLeft if(el.scrollTop)y-=el.scrollTop el=el.offsetParent} if(oActuator.constructor==TransMenuItem){ x+=parseInt(el.parentNode.style.left) y+=parseInt(el.parentNode.style.top)} switch(iReferencePoint){ case TransMenu.reference.topLeft: break case TransMenu.reference.topRight: x+=act.offsetWidth break case TransMenu.reference.bottomLeft: y+=act.offsetHeight break case TransMenu.reference.bottomRight: x+=act.offsetWidth y+=act.offsetHeight break} x+=iLeft y+=iTop x=Math.max(Math.min(x,maxX),minX) y=Math.max(Math.min(y,maxY),minY) elmCache["clip"].style.left=x+"px" elmCache["clip"].style.top=y+"px"} function slideStart(){ var x0=parseInt(elmCache["content"].style[pos]) var x1=_this.isOpen ? 0 :-dim if(a !=null)a.stop() a=new Accelimation(x0,x1,TransMenu.slideTime,slideAccel) a.onframe=slideFrame a.onend=slideEnd a.start()} function slideFrame(x){ elmCache["content"].style[pos]=x+"px"} function slideEnd(){ if(!_this.isOpen)elmCache["clip"].style.visibility="hidden" animating=false} function initSize(){ var ow=elmCache["items"].offsetWidth var oh=elmCache["items"].offsetHeight var ua=navigator.userAgent.toLowerCase() elmCache["clip"].style.width=ow+TransMenu.shadowSize+2+"px" elmCache["clip"].style.height=oh+TransMenu.shadowSize+2+"px" elmCache["content"].style.width=ow+TransMenu.shadowSize+"px" elmCache["content"].style.height=oh+TransMenu.shadowSize+"px" contentHeight=oh+TransMenu.shadowSize contentWidth=ow+TransMenu.shadowSize dim=iDirection==TransMenu.direction.down ? contentHeight : contentWidth elmCache["content"].style[pos]=-dim-TransMenu.shadowSize+"px" elmCache["clip"].style.visibility="hidden" if(ua.indexOf("mac")==-1 || ua.indexOf("gecko")>-1){ elmCache["background"].style.width=ow+"px" elmCache["background"].style.height=oh+"px" elmCache["background"].style.backgroundColor=TransMenu.backgroundColor elmCache["shadowRight"].style.left=ow+"px" elmCache["shadowRight"].style.height=oh-(TransMenu.shadowOffset-TransMenu.shadowSize)+"px" elmCache["shadowRight"].style.backgroundColor=TransMenu.shadowColor elmCache["shadowBottom"].style.top=oh+"px" elmCache["shadowBottom"].style.width=ow-TransMenu.shadowOffset+"px" elmCache["shadowBottom"].style.backgroundColor=TransMenu.shadowColor} else{ elmCache["background"].firstChild.src=TransMenu.backgroundPng elmCache["background"].firstChild.width=ow elmCache["background"].firstChild.height=oh elmCache["shadowRight"].firstChild.src=TransMenu.shadowPng elmCache["shadowRight"].style.left=ow+"px" elmCache["shadowRight"].firstChild.width=TransMenu.shadowSize elmCache["shadowRight"].firstChild.height=oh-(TransMenu.shadowOffset-TransMenu.shadowSize) elmCache["shadowBottom"].firstChild.src=TransMenu.shadowPng elmCache["shadowBottom"].style.top=oh+"px" elmCache["shadowBottom"].firstChild.height=TransMenu.shadowSize elmCache["shadowBottom"].firstChild.width=ow-TransMenu.shadowOffset}} function initCache(){ var menu=document.getElementById(id) var all=menu.all ? menu.all : menu.getElementsByTagName("*") elmCache={} elmCache["clip"]=menu elmCache["item"]=[] for(var i=0,elm=null;elm=all[i];i++){ switch(elm.className){ case "items": case "content": case "background": case "shadowRight": case "shadowBottom": elmCache[elm.className]=elm break case "item": elm._index=elmCache["item"].length elmCache["item"][elm._index]=elm break}} _this.elmCache=elmCache} function initEvents(){ for(var i=0,item=null;item=elmCache.item[i];i++){ item.onmouseover=item_mouseover item.onmouseout=item_mouseout} if(typeof oActuator.tagName !="undefined"){ oActuator.onmouseover=actuator_mouseover oActuator.onmouseout=actuator_mouseout} elmCache["content"].onmouseover=content_mouseover elmCache["content"].onmouseout=content_mouseout} function highlight(oRow){ if(childMenus[oRow._index]) oRow.lastChild.firstChild.src=TransMenu.dingbatOn} function dehighlight(oRow){ if(childMenus[oRow._index]) oRow.lastChild.firstChild.src=TransMenu.dingbatOff} function item_mouseover(){ if(!animating){ highlight(this) if(childMenus[this._index]) childMenuSet.showMenu(childMenus[this._index]) else if(childMenuSet)childMenuSet.hide()}} function item_mouseout(){ if(!animating){ if(childMenus[this._index]) childMenuSet.hideMenu(childMenus[this._index]) else dehighlight(this)}} function actuator_mouseover(){ parentMenuSet.showMenu(_this)} function actuator_mouseout(){ parentMenuSet.hideMenu(_this)} function content_mouseover(){ if(!animating){ parentMenuSet.showMenu(_this) _this.onmouseover()}} function content_mouseout(){ if(!animating){ parentMenuSet.hideMenu(_this)}} function child_mouseover(){ if(!animating){ parentMenuSet.showMenu(_this)}} function child_deactivate(){ for(var i=0;i'+ '
'+ ''+ aHtml.join('')+ '
'+ '
'+ '
'+ '
'+ '
'}} TransMenuSet.registry=[] function TransMenuSet(iDirection,iLeft,iTop,iReferencePoint){ this.addMenu=addMenu this.showMenu=showMenu this.hideMenu=hideMenu this.hide=hide this.hideCurrent=hideCurrent var menus=[] var _this=this var current=null this.index=TransMenuSet.registry.length TransMenuSet.registry[this.index]=this function addMenu(oActuator){ var m=new TransMenu(oActuator,iDirection,iLeft,iTop,iReferencePoint,this) menus[menus.length]=m return m} function showMenu(oMenu){ if(oMenu !=current){ if(current !=null)hide(current) current=oMenu oMenu.show()} else{ cancelHide(oMenu)}} function hideMenu(oMenu){ if(current==oMenu&&oMenu.isOpen){ if(!oMenu.hideTimer)scheduleHide(oMenu)}} function scheduleHide(oMenu){ oMenu.onqueue() oMenu.hideTimer=window.setTimeout("TransMenuSet.registry["+_this.index+"].hide(TransMenu.registry["+oMenu.index+"])",TransMenu.hideDelay)} function cancelHide(oMenu){ if(oMenu.hideTimer){ oMenu.ondequeue() window.clearTimeout(oMenu.hideTimer) oMenu.hideTimer=null}} function hide(oMenu){ if(!oMenu&¤t)oMenu=current if(oMenu&¤t==oMenu&&oMenu.isOpen){ hideCurrent()}} function hideCurrent(){ if(null !=current){ cancelHide(current) current.hideTimer=null current.hide() current=null}}} function TransMenuItem(sText,sUrl,oParent,browserNav){ this.toString=toString this.text=sText this.url=sUrl this.parentMenu=oParent function toString(bDingbat){ var sDingbat=bDingbat ? TransMenu.dingbatOff : TransMenu.spacerGif var iEdgePadding=TransMenu.itemPadding+TransMenu.menuPadding var sPaddingLeft="padding-top:"+TransMenu.itemPadding+"px; padding-bottom:"+TransMenu.itemPadding+"px; padding-left:"+iEdgePadding+"px;" var sPaddingRight="padding-top:"+TransMenu.itemPadding+"px; padding-bottom:"+TransMenu.itemPadding+"px; padding-right:"+iEdgePadding+"px;" if(sUrl=='#'){ var urlTag='
'+sText+'
' }else{ if(browserNav==1){ browserNav=' target="_blank"' }else if(browserNav==2){ browserNav=' onclick="javascript: window.open(\''+sUrl+'\', \'\', \'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550\'); return false"' }else{ browserNav=''} var urlTag=''+sText+''} return ''+urlTag+ ''+ ''}} function Accelimation(from,to,time,zip){ if(typeof zip=="undefined")zip=0 if(typeof unit=="undefined")unit="px" this.x0=from this.x1=to this.dt=time this.zip=-zip this.unit=unit this.timer=null this.onend=new Function() this.onframe=new Function()} Accelimation.prototype.start=function(){ this.t0=new Date().getTime() this.t1=this.t0+this.dt var dx=this.x1-this.x0 this.c1=this.x0+((1+this.zip)*dx/3) this.c2=this.x0+((2+this.zip)*dx/3) Accelimation._add(this)} Accelimation.prototype.stop=function(){ Accelimation._remove(this)} Accelimation.prototype._paint=function(time){ if(time