var cssdropdown={
disappeardelay: 250,
dropdownindicator: '',
enablereveal: [true,5],
enableiframeshim: 1,
dropmenuobj: null,asscmenuitem: null,domsupport: document.all || document.getElementById,standardbody: null,iframeshimadded: false,revealtimers:{},
getposOffset:function(what,offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop
var parentEl=what.offsetParent
while(parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop
parentEl=parentEl.offsetParent}
return totaloffset
},
css:function(el,targetclass,action){
var needle=new RegExp("(^|\\s+)"+targetclass+"($|\\s+)","ig")
if(action=="check")
return needle.test(el.className)
else if(action=="remove")
el.className=el.className.replace(needle,"")
else if(action=="add"&&!needle.test(el.className))
el.className+=" "+targetclass
},
showmenu:function(dropmenu,e){
if(this.enablereveal[0]){
if(!dropmenu._trueheight || dropmenu._trueheight<10)
dropmenu._trueheight=dropmenu.offsetHeight
clearTimeout(this.revealtimers[dropmenu.id])
dropmenu.style.height=dropmenu._curheight=0
dropmenu.style.overflow="hidden"
dropmenu.style.visibility="visible"
this.revealtimers[dropmenu.id]=setInterval(function(){cssdropdown.revealmenu(dropmenu)},10)}
else{
dropmenu.style.visibility="visible"}
this.css(this.asscmenuitem,"selected","add")
},
revealmenu:function(dropmenu,dir){
var curH=dropmenu._curheight,maxH=dropmenu._trueheight,steps=this.enablereveal[1]
if(curH<maxH){
var newH=Math.min(curH,maxH)
dropmenu.style.height=newH+"px"
dropmenu._curheight=newH+Math.round((maxH-newH)/steps)+1}
else{
dropmenu.style.height="auto"
dropmenu.style.overflow="hidden"
clearInterval(this.revealtimers[dropmenu.id])}
},
clearbrowseredge:function(obj,whichedge){
var edgeoffset=0
if(whichedge=="rightedge"){
var windowedge=document.all&&!window.opera? this.standardbody.scrollLeft+this.standardbody.clientWidth-15 : window.pageXOffset+window.innerWidth-15
var dropmenuW=this.dropmenuobj.offsetWidth
if(windowedge-this.dropmenuobj.x<dropmenuW)
edgeoffset=dropmenuW-obj.offsetWidth}
else{
var topedge=document.all&&!window.opera? this.standardbody.scrollTop : window.pageYOffset
var windowedge=document.all&&!window.opera? this.standardbody.scrollTop+this.standardbody.clientHeight-15 : window.pageYOffset+window.innerHeight-18
var dropmenuH=this.dropmenuobj._trueheight
if(windowedge-this.dropmenuobj.y<dropmenuH){
edgeoffset=dropmenuH+obj.offsetHeight
if((this.dropmenuobj.y-topedge)<dropmenuH)
edgeoffset=this.dropmenuobj.y+obj.offsetHeight-topedge}}
return edgeoffset
},
dropit:function(obj,e,dropmenuID){
if(this.dropmenuobj!=null)
this.hidemenu()
this.clearhidemenu()
this.dropmenuobj=document.getElementById(dropmenuID)
this.asscmenuitem=obj
this.showmenu(this.dropmenuobj,e)
this.dropmenuobj.x=this.getposOffset(obj,"left")
this.dropmenuobj.y=this.getposOffset(obj,"top")
this.dropmenuobj.style.left=this.dropmenuobj.x-this.clearbrowseredge(obj,"rightedge")+"px"
this.dropmenuobj.style.top=this.dropmenuobj.y-this.clearbrowseredge(obj,"bottomedge")+obj.offsetHeight+1+"px"
this.positionshim()
},
positionshim:function(){
if(this.iframeshimadded){
if(this.dropmenuobj.style.visibility=="visible"){
this.shimobject.style.width=this.dropmenuobj.offsetWidth+"px"
this.shimobject.style.height=this.dropmenuobj._trueheight+"px"
this.shimobject.style.left=parseInt(this.dropmenuobj.style.left)+"px"
this.shimobject.style.top=parseInt(this.dropmenuobj.style.top)+"px"
this.shimobject.style.display="block"}}
},
hideshim:function(){
if(this.iframeshimadded)
this.shimobject.style.display='none'
},
isContained:function(m,e){
var e=window.event || e
var c=e.relatedTarget ||((e.type=="mouseover")? e.fromElement : e.toElement)
while(c&&c!=m)try{c=c.parentNode}catch(e){c=m}
if(c==m)
return true
else
return false
},
dynamichide:function(m,e){
if(!this.isContained(m,e)){
this.delayhidemenu()}
},
delayhidemenu:function(){
this.delayhide=setTimeout("cssdropdown.hidemenu()",this.disappeardelay)
},
hidemenu:function(){
this.css(this.asscmenuitem,"selected","remove")
this.dropmenuobj.style.visibility='hidden'
this.dropmenuobj.style.left=this.dropmenuobj.style.top="-1000px"
this.hideshim()
},
clearhidemenu:function(){
if(this.delayhide!="undefined")
clearTimeout(this.delayhide)
},
addEvent:function(target,functionref,tasktype){
if(target.addEventListener)
target.addEventListener(tasktype,functionref,false)
else if(target.attachEvent)
target.attachEvent('on'+tasktype,function(){return functionref.call(target,window.event)})
},
startchrome:function(){
if(!this.domsupport)
return
this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body
for(var ids=0;ids<arguments.length;ids++){
var menuitems=document.getElementById(arguments[ids]).getElementsByTagName("a")
for(var i=0;i<menuitems.length;i++){
if(menuitems[i].getAttribute("rel")){
var relvalue=menuitems[i].getAttribute("rel")
var asscdropdownmenu=document.getElementById(relvalue)
this.addEvent(asscdropdownmenu,function(){cssdropdown.clearhidemenu()},"mouseover")
this.addEvent(asscdropdownmenu,function(e){cssdropdown.dynamichide(this,e)},"mouseout")
this.addEvent(asscdropdownmenu,function(){cssdropdown.delayhidemenu()},"click")
try{
menuitems[i].innerHTML=menuitems[i].innerHTML+" "+this.dropdownindicator
}catch(e){}
this.addEvent(menuitems[i],function(e){
if(!cssdropdown.isContained(this,e)){
var evtobj=window.event || e
cssdropdown.dropit(this,evtobj,this.getAttribute("rel"))}
},"mouseover")
this.addEvent(menuitems[i],function(e){cssdropdown.dynamichide(this,e)},"mouseout")
this.addEvent(menuitems[i],function(){cssdropdown.delayhidemenu()},"click")}}}
if(this.enableiframeshim&&document.all&&!window.XDomainRequest&&!this.iframeshimadded){
document.write('<IFRAME id="iframeshim" src="about:blank" frameBorder="0" scrolling="no" style="left:0; top:0; position:absolute; display:none;z-index:90; background: transparent;"></IFRAME>')
this.shimobject=document.getElementById("iframeshim")
this.shimobject.style.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'
this.iframeshimadded=true}}}
