//** chrome drop down menu- author: dynamic drive (http://www.dynamicdrive.com)
//** updated: july 14th 06' to v2.0
//1) ability to "left", "center", or "right" align the menu items easily, just by modifying the css property "text-align".
//2) added an optional "swipe down" transitional effect for revealing the drop down menus.
//3) support for multiple chrome menus on the same page.
//** updated: nov 14th 06' to v2.01- added iframe shim technique
//** updated: july 23rd, 08 to v2.4
//1) main menu items now remain "selected" (css class "selected" applied) when user moves mouse into corresponding drop down menu.
//2) adds ability to specify arbitrary html that gets added to the end of each menu item that carries a drop down menu (ie: a down arrow image).
//3) all event handlers added to the menu are now unobstrusive, allowing you to define your own "onmouseover" or "onclick" events on the menu items.
//4) fixed elusive js error in ff that sometimes occurs when mouse quickly moves between main menu items and drop down menus
//** updated: oct 29th, 08 to v2.5 (only .js file modified from v2.4)
//1) added ability to customize reveal animation speed (# of steps)
//2) menu now works in ie8 beta2 (a valid doctype at the top of the page is required)
var cssdropdown={
disappeardelay: 250, //set delay in miliseconds before menu disappears onmouseout
dropdownindicator: '', //specify full html to add to end of each menu item with a drop down menu
enablereveal: [true, 5], //enable swipe effect? [true/false, steps (number of animation steps. integer between 1-20. smaller=faster)]
enableiframeshim: 1, //enable "iframe shim" in ie5.5 to ie7? (1=yes, 0=no)
//no need to edit beyond here////////////////////////
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')
this.shimobject=document.getelementbyid("iframeshim") //reference iframe object
this.shimobject.style.filter='progid:dximagetransform.microsoft.alpha(style=0,opacity=0)'
this.iframeshimadded=true
}
} //end startchrome
}