/*
aqdd.js
Converts an unordered list to an dropdown menu bar
*/
addEvent(window, "load", makeDDs);
var currentMenus=[];
function makeDDs(){
if (!document.createElement) return;
uls = document.getElementsByTagName("ul");
for (uli=0;uli<uls.length;uli++){
ul=uls[uli];
if (ul.nodeName == "UL" && ul.className == "ipf-nestedlist") {
processULDD(ul,0);
}
}
}
function processULDD(ul,isSubUL){
if (!ul.childNodes || ul.childNodes.length==0) return;
for (var itemi=0;itemi<ul.childNodes.length;itemi++){
var item=ul.childNodes[itemi];
if (item.nodeName == "LI") {
var a;
var subul;
for (var sitemi=0;sitemi<item.childNodes.length;sitemi++){
var sitem=item.childNodes[sitemi];
switch (sitem.nodeName){
case "A": a = sitem; break;
case "UL": subul = sitem;
processULDD(subul,1);
break;
}
}
if (isSubUL){
if (subul){
associateDD(a,subul);
a.className += ' submenuheader';
subul.style.left = item.offsetLeft+item.offsetWidth+"px";
subul.style.top = item.offsetTop+"px";
subul.style.display = "none";
}else{
}
}else{
if (subul){
associateDD(a,subul);
subul.style.left = item.offsetLeft+"px";
subul.style.display = "none";
tp=DL_GetElementTop(item)+item.offsetHeight;
subul.style.top = tp + 'px';
}
}
}
}
}
function associateDD(a,ul){
a.onclick=function (){
if (ul.style.display == "none") {
ancestors=[]
cn=ul;
do{
if (cn.nodeName == "UL") ancestors[ancestors.length]=cn;
cn=cn.parentNode;
} while (cn.className != "ipf-nestedlist")
hideChildren(cn,cn);
cn.style.display = "block";
for (var idx=0;idx<ancestors.length;idx++){
ancestors[idx].style.display = "block";
}
}else{
hideChildren(ul,ul);
ul.style.display = "none";
}
return false;
}
}
function hideChildren(nd,toplevel){
if (nd.childNodes && nd.childNodes.length>0){
for (var ndi=0;ndi<nd.childNodes.length;ndi++){
hideChildren(nd.childNodes[ndi],toplevel);
}
}
if (nd.nodeName == "UL" && nd != toplevel) nd.style.display = "none";
}
function addEvent(obj, evType, fn){
/* adds an eventListener for browsers which support it
Written by Scott Andrew: nice one, Scott */
if (obj.addEventListener){
obj.addEventListener(evType, fn, false);
return true;
}else if (obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
}else{
return false;
}
}
function DL_GetElementLeft(eElement)
{
var nLeftPos=eElement.offsetLeft;
var eParElement=eElement.offsetParent;
while (eParElement !=null)
{
nLeftPos+=eParElement.offsetLeft;
eParElement=eParElement.offsetParent;
}
return nLeftPos;
}
function DL_GetElementTop(eElement)
{
var nTopPos=eElement.offsetTop;
var eParElement=eElement.offsetParent;
while (eParElement !=null)
{
nTopPos+=eParElement.offsetTop;
eParElement=eParElement.offsetParent;
}
return nTopPos;
}