/* anjulberGmenu.js This script has been developed to be optimized for IE5+ browsers (c) AnjulberG 2007-09 Original script adaptation (original source forgotten!) in 2006 by AnjulberG. Use the script as is or adapt as you like. I take no responsibility for the use of this script. GNU General Public License has more details and disclaimer-type info. */ // Defaults var anjulberGmenuname= "anjulberGmenu"; var anjulberGmenuclass= ""; var anjulberGmenuheight= 18; var anjulberGmenuindent= 5; var anjulberGmenutarget= "_blank"; var anjulberGmenuplusimg= "plus.gif"; var anjulberGmenuminusimg= "minus.gif"; var anjulberGmenublankimg= "blank.gif"; var anjulberGmenuexpand= "Expand"; var anjulberGmenucollapse= "Collapse"; var anjulberGmenu= []; // Internal variables // Current state of anjulberGmenu lines: // bit 1..0: // 00 bottom level (img blank) // 01 top level (no img) // 10 collapsible collapsed (img plus) // 11 collapsible expanded (img minus) // bit 2: // 0 hidden // 1 visible var anjulberGmenustate= []; // General utilities // Find object by name or id function anjulberGmenuobj(id) { var i, x; x= document[id]; if (!x && document.all) x= document.all[id]; for (i=0; !x && i=0) { b+= name.length+1; e= s.indexOf(";", b); return(unescape(s.substring(b, e))); } return(""); } // Browser identification // Global variables var browserversion=0.0; var browsertype=0; // 0: unknown; 1:MSIE; 2:NN // Return true if MSIE or NN detected function browserdetect() { var agt= navigator.userAgent.toLowerCase(); var appVer= navigator.appVersion.toLowerCase(); browserversion= parseFloat(appVer); var iePos= appVer.indexOf('msie'); if (iePos!=-1) browserversion= parseFloat(appVer.substring(iePos+5, appVer.indexOf(';',iePos))); var nav6Pos = agt.indexOf('netscape6'); if (nav6Pos!=-1) browserversion= parseFloat(agt.substring(nav6Pos+10)) browsertype= (iePos!=-1) ? 1 : (agt.indexOf('mozilla')!=-1) ? 2 : 0; } browserdetect(); // anjulberGmenu specific utilities // Get anjulberGmenu level function anjulberGmenulevel(m) { return(parseInt(anjulberGmenu[m].charAt(0))); } // Show anjulberGmenu line function anjulberGmenushow(m) { var o= anjulberGmenuobj("anjulberGmenu"+m); if (o) { if (o.style) { o.style.visibility= "visible"; } else { o.visibility= "show"; } } } // Hide anjulberGmenu line function anjulberGmenuhide(m) { var o= anjulberGmenuobj("anjulberGmenu"+m); if (o) { if (o.style) { o.style.visibility= "hidden"; } else { o.visibility= "hide"; } } } // Move anjulberGmenu line function anjulberGmenumove(m, x, y) { var o= anjulberGmenuobj("anjulberGmenu"+m); if (o) { if (o.style) { o.style.left= x; o.style.top= y; } else { o.left= x; o.top= y; } } } // Get height of anjulberGmenu line function anjulberGmenugetheight(m) { var o= anjulberGmenuobj("anjulberGmenu"+m); if (o && o.offsetHeight) return(o.offsetHeight); return(anjulberGmenuheight); } // Set anjulberGmenu state (anjulberGmenustate[m]=state; + reload image) function anjulberGmenusetstate(m, state) { var pic= anjulberGmenuobj("anjulberGmenug"+m); if (anjulberGmenustate[m]!=state) { anjulberGmenustate[m]= state; if ((state&4)!=0) switch (state&3) { case 0: pic.src= anjulberGmenublankimg; break; case 1: break; case 2: pic.src= anjulberGmenuplusimg; break; case 3: pic.src= anjulberGmenuminusimg; break; } } } // Return expand/collapse info function anjulberGmenustatus(m) { return((anjulberGmenustate[m]&1)!=0 ? anjulberGmenucollapse : anjulberGmenuexpand); } // Resize anjulberGmenu to reflect changes function anjulberGmenuupdate() { var y= 0; for (i=0; i1 ? (ilevel-1)*anjulberGmenuindent : 0, y); anjulberGmenushow(i); y+= anjulberGmenugetheight(i); } else { anjulberGmenuhide(i); } } anjulberGmenuobj("anjulberGmenulayer").style.height= y; anjulberGmenusavestate(); } // Expand/collapse function anjulberGmenuclick(m) { var i, level, ilevel; switch (anjulberGmenustate[m]) { case 7: // Collapse anjulberGmenusetstate(m, 6); level= anjulberGmenulevel(m); for (i=m+1; ilevel) { switch (anjulberGmenustate[i]&3) { case 0: anjulberGmenusetstate(i, 0); break; case 1: anjulberGmenusetstate(i, 1); break; default: anjulberGmenusetstate(i, 2); } } else break; } break; case 6: // Expand anjulberGmenusetstate(m, 7); level= anjulberGmenulevel(m); for (i=m+1; ilevel) { if (ilevel==level+1) switch (anjulberGmenustate[i]&3) { case 0: anjulberGmenusetstate(i, 4); break; case 1: anjulberGmenusetstate(i, 5); break; default: anjulberGmenusetstate(i, 6); } } else break; } break; } anjulberGmenuupdate(); } // Load, save and init // Save anjulberGmenustate array function anjulberGmenusavestate() { var i, s; if (anjulberGmenuname.length>0) { s=""; for (i=0; i0) { s= anjulberGmenugetcookie(anjulberGmenuname); if (s.length==anjulberGmenu.length) { for (i=0; i=0) { k=anjulberGmenu[i].indexOf('|',j+1); if (k>=0) { text=anjulberGmenu[i].substring(2,j); link=anjulberGmenu[i].substring(j+1,k); status=anjulberGmenu[i].substring(k+1); } else { text=anjulberGmenu[i].substring(2,j); link=anjulberGmenu[i].substring(j+1); status=""; } } else { text=anjulberGmenu[i].substring(2); link=""; status=""; } switch (anjulberGmenu[i].charAt(1)) { case ' ': link='javascript:void(0)'; target='_self'; break; case 't': target='_top'; break; case 's': target='_self'; break; case 'p': target='_parent'; break; default: target=anjulberGmenutarget; break; } // One anjulberGmenu item ilevel=anjulberGmenulevel(i); istate=anjulberGmenustate[i]; wr+="
"; if ((istate&2)!=0) { wr+=""+ ""; } else if ((istate&3)==0) { wr+=""; } wr+=link!="" ? ""+text+"" : text; wr+="
\n"; document.write(wr); if ((istate&4)!=0) { y+=anjulberGmenugetheight(i); } } wr=""; document.write(wr); anjulberGmenuobj("anjulberGmenulayer").style.height= y; } // Fallback (no layer, no style) // Expand/collapse function anjulberGmenuoldclick(m) { var i, level, ilevel; switch (anjulberGmenustate[m]) { case 7: // Collapse dw("collapse"); anjulberGmenustate[m]= 6; level= anjulberGmenulevel(m); for (i=m+1; ilevel) { switch (anjulberGmenustate[i]&3) { case 0: anjulberGmenustate[i]= 0; break; case 1: anjulberGmenustate[i]= 1; break; default: anjulberGmenustate[i]= 2; } } else break; } break; case 6: // Expand anjulberGmenustate[m]= 7; level= anjulberGmenulevel(m); for (i=m+1; ilevel) { if (ilevel==level+1) switch (anjulberGmenustate[i]&3) { case 0: anjulberGmenustate[i]= 4; break; case 1: anjulberGmenustate[i]= 5; break; default: anjulberGmenustate[i]= 6; } } else break; } break; } anjulberGmenusavestate(); location.reload(); } // Create anjulberGmenu function anjulberGmenuoldwrite() { var i, j, k, y; var ilevel, istate; var target; var text, link, status; var wr; // Construct/load anjulberGmenustate array if (!anjulberGmenuloadstate()) anjulberGmenuinitstate(); // Write all for (i=0; i=0) { k=anjulberGmenu[i].indexOf('|',j+1); if (k>=0) { text=anjulberGmenu[i].substring(2,j); link=anjulberGmenu[i].substring(j+1,k); status=anjulberGmenu[i].substring(k+1); } else { text=anjulberGmenu[i].substring(2,j); link=anjulberGmenu[i].substring(j+1); status=""; } } else { text=anjulberGmenu[i].substring(2); link=""; status=""; } switch (anjulberGmenu[i].charAt(1)) { case ' ': link='javascript:void(0)'; target='_self'; break; case 't': target='_top'; break; case 's': target='_self'; break; case 'p': target='_parent'; break; default: target=anjulberGmenutarget; break; } // One anjulberGmenu item ilevel=anjulberGmenulevel(i); istate=anjulberGmenustate[i]; if ((istate&4)!=0) { wr+="
"; for (j=1; j"+ ""; } else if ((istate&3)==0) { wr+=""; } wr+=link!="" ? ""+text+"" : text; wr+="
\n"; document.write(wr); } } }