diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt
index c7680dd4b..e85b08223 100644
--- a/docs/changelog/7.x.x.txt
+++ b/docs/changelog/7.x.x.txt
@@ -1,4 +1,5 @@
7.5.11
+ - Replaced Cool Menus nav with a YUI nav, which works and looks better.
- fix: widget dialogues weren't opening correctly inside a widgetized
view of a widget
- fix: snippets were exporting as index.html or such. pass them through
diff --git a/docs/upgrades/packages-7.5.11/import_hierarchical-top-nav.wgpkg b/docs/upgrades/packages-7.5.11/import_hierarchical-top-nav.wgpkg
new file mode 100644
index 000000000..4cd76bd14
Binary files /dev/null and b/docs/upgrades/packages-7.5.11/import_hierarchical-top-nav.wgpkg differ
diff --git a/docs/upgrades/packages-7.5.11/root_import_webgui-7-style-3.wgpkg b/docs/upgrades/packages-7.5.11/root_import_webgui-7-style-3.wgpkg
index 7c56346fe..fa677de31 100644
Binary files a/docs/upgrades/packages-7.5.11/root_import_webgui-7-style-3.wgpkg and b/docs/upgrades/packages-7.5.11/root_import_webgui-7-style-3.wgpkg differ
diff --git a/www/extras/coolmenus/advanced_example1.html b/www/extras/coolmenus/advanced_example1.html
deleted file mode 100644
index d712efd40..000000000
--- a/www/extras/coolmenus/advanced_example1.html
+++ /dev/null
@@ -1,279 +0,0 @@
-
-
- Coolmenus example - CoolMenus4 DHTML script made by Thomas Brattli from DHTMLCentral.com. Visit for more great scripts.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Click me to show a menu
-
-
-
-
-
-
-
-
-
-
-
diff --git a/www/extras/coolmenus/advanced_example2.html b/www/extras/coolmenus/advanced_example2.html
deleted file mode 100644
index 0aef47386..000000000
--- a/www/extras/coolmenus/advanced_example2.html
+++ /dev/null
@@ -1,274 +0,0 @@
-
-
- Coolmenus example - CoolMenus4 DHTML script made by Thomas Brattli from DHTMLCentral.com. Visit for more great scripts.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Click me to show a menu
-
-
-
-
-
-
-
-
-
-
-
diff --git a/www/extras/coolmenus/advanced_example3.html b/www/extras/coolmenus/advanced_example3.html
deleted file mode 100644
index 8f7a98ed3..000000000
--- a/www/extras/coolmenus/advanced_example3.html
+++ /dev/null
@@ -1,253 +0,0 @@
-
-
- Coolmenus example - CoolMenus4 DHTML script made by Thomas Brattli from DHTMLCentral.com. Visit for more great scripts.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Change alignment of the first menu:
-bottom
-top
-
-
-Change the rows of the second item:
-On
-Off
-
-
-
-
diff --git a/www/extras/coolmenus/advanced_example4.html b/www/extras/coolmenus/advanced_example4.html
deleted file mode 100644
index d437a4d21..000000000
--- a/www/extras/coolmenus/advanced_example4.html
+++ /dev/null
@@ -1,270 +0,0 @@
-
-
- Coolmenus example - CoolMenus4 DHTML script made by Thomas Brattli from DHTMLCentral.com. Visit for more great scripts.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hide subs example:
-Turn of sub "0sub10" - oM.m['0sub10'].hide=1
-
-Turn on sub "0sub10" - oM.m['0sub10'].hide=0
-
-Turn of sub "0sub11" - oM.m['0sub11'].hide=1
-
-Turn on sub "0sub11" - oM.m['0sub11'].hide=0
-
-
-
-
-
-
diff --git a/www/extras/coolmenus/advanced_exampleDTD.html b/www/extras/coolmenus/advanced_exampleDTD.html
deleted file mode 100644
index 69c590144..000000000
--- a/www/extras/coolmenus/advanced_exampleDTD.html
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
- Coolmenus example - CoolMenus4 DHTML script made by Thomas Brattli from DHTMLCentral.com. Visit for more great scripts.
-
-
-
-
-
-
-
-
-
-
-
-
-Small example using a "proper" xhtml DTD.
-
-
-This will work in all browsers but NS4 will not show a proper background-color because of the missing layer-background-color
-in the stylesheet.
-
-
-The output for NS4 will not validate because of the name attribute added to images, but then again NS4 is the only
-browser that will see that (NS4 also writes all tags upper-case when you use document.write). You
-can see the NS4 output here.
-
-
-The output for Opera will not validate either because I have to use border="0" on the image tags. You can
-see the Opera output here
-
-
-The output for IE4 and IE5 (and IE5.5 and IE6 if you don't use dom creation) will validate.
-You can see the output here
-
-
-The output for the DOM browsers is a little worse to display. But if your using mozilla you can try the dom
-inspector on this page.
-
-
-You have to view source on the source pages to see the actual output. The script creation is removed so
-the pages will not work.
-
-
-
diff --git a/www/extras/coolmenus/asp-example/jscript.asp b/www/extras/coolmenus/asp-example/jscript.asp
deleted file mode 100644
index ca9de095d..000000000
--- a/www/extras/coolmenus/asp-example/jscript.asp
+++ /dev/null
@@ -1,272 +0,0 @@
-<%@LANGUAGE = "JAVASCRIPT"%>
-
-
- ASP example
-
-
-
-
-
-
-
-
-
-This file is a simple example of how to get items from a access database. I code ASP with javascript so the example
-is in javascript. I will make a more advances example later. The table consist of 4 simple columns:
-
-
-menuID - Autonumber - the id of the menuitem.
-mName - String - The menu name
-mLink - String - The link
-parent - Number - a recursive relation to menuID.
-
-
-This can rather easily be converted to control the entire menu and by adding a server-side admin *anyone* could
-easily change the menu. The new menumaker that I will hopefully soon have time
-to make will probably use something like this.
-
-
-On this site I use a similar approuch, the only difference is that I make a js file everytime I update, that way
-I don't have to get the items from the database on every visit. I will try and make an example like that as well later.
-
-
-
-ASP source-code:
-
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-ASP CODE START - READING ITEMS FROM THE DATABASE
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-function readItemsFromDatabase(){
- //The path to your database:
- var db ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("menu.mdb")
-
- var q = "SELECT menuID,mName,mLink,parent from tblMenu ORDER BY parent,menuID ASC"
-
- var rs=Server.CreateObject("ADODB.Recordset")
- rs.CacheSize = 25; // Cache data fetching
- rs.CursorType = 3
- rs.LockType = 3
-
- //Opening database --- --
- rs.Open(q,db)
-
- //Now using getRows because that's so sexy :}
- if(!rs.EOF){
- var rsarr = rs.GetRows();
- rsarr = rsarr.toArray();
- var cols= rs.Fields.Count //Setting how much to add to row each for
- }else var rsarr=new Array()
-
- //Closing database, we don't need it anymore - we have the info in the array
- rs.close()
- rs = null
-
- var menuID,mName,mLink,parent
-
- for(row=0;row<rsarr.length;row+=cols){ //Looping rows
- //Setting variables
- menuID = "m" + rsarr[row]
- mName = rsarr[row+1]
- mLink = String(rsarr[row+2])
- if(mLink=="null") mLink=""
- parent = rsarr[row+3]
- if(parent!=0) parent = "m" + parent
- else parent=""
- //Making menu item
- Response.write("oCMenu.makeMenu('"+menuID+"','"+parent+"','"+mName+"','"+mLink+"')\n")
- }
-}
-//Calling function
-readItemsFromDatabase()
-
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-ASP CODE END - READING ITEMS FROM THE DATABASE
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-
-
-
diff --git a/www/extras/coolmenus/asp-example/menu.mdb b/www/extras/coolmenus/asp-example/menu.mdb
deleted file mode 100644
index e94114d0a..000000000
Binary files a/www/extras/coolmenus/asp-example/menu.mdb and /dev/null differ
diff --git a/www/extras/coolmenus/asp-example/vbscript.asp b/www/extras/coolmenus/asp-example/vbscript.asp
deleted file mode 100644
index b01f071e4..000000000
--- a/www/extras/coolmenus/asp-example/vbscript.asp
+++ /dev/null
@@ -1,283 +0,0 @@
-<%@LANGUAGE = "VBSCRIPT"%>
-
-
- ASP example
-
-
-
-
-
-
-
-
-
-This file is a simple example of how to get items from a access database. It's more or less
-the same as the javascript example, only coded in VBSCRIPT. I will make a more advanced example later. The table consist of 4 simple columns:
-
-
-menuID - Autonumber - the id of the menuitem.
-mName - String - The menu name
-mLink - String - The link
-parent - Number - a recursive relation to menuID.
-
-
-This can rather easily be converted to control the entire menu and by adding a server-side admin *anyone* could
-easily change the menu. The new menumaker that I will hopefully soon have time
-to make will probably use something like this.
-
-
-On this site I use a similar approuch, the only difference is that I make a js file everytime I update, that way
-I don't have to get the items from the database on every visit. I will try and make an example like that as well later.
-
-
-
-ASP source-code:
-
-'*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-'ASP CODE START - READING ITEMS FROM THE DATABASE
-'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Sub readItemsFromDatabase
- 'The path to your database:
- Dim db,q,rs,rsarr,menuID,mName,mLink,parent,cols,max
-
- db ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("menu.mdb")
-
- q = "SELECT menuID,mName,mLink,parent from tblMenu ORDER BY parent,menuID ASC"
-
- Set rs=Server.CreateObject("ADODB.Recordset")
- rs.CacheSize = 25 ' Cache data fetching
- rs.CursorType = 3
- rs.LockType = 3
-
- 'Opening database --- --
- rs.Open q,db
-
- 'Now using getRows because that's so sexy :}
- if NOT rs.EOF then
- rsarr = rs.GetRows()
- max = Ubound(rsarr,2)
- else
- max = 0
- end if
- 'Closing database, we don't need it anymore - we have the info in the array
- rs.close()
- Set rs = Nothing
-
- row=0
- do while(row<=max) 'Looping rows
- 'Setting variables
- menuID = "m" & rsarr(0,row)
- mName = rsarr(1,row)
- mLink = rsarr(2,row)
- if(mLink="null") then mLink=""
- parent = rsarr(3,row)
- if(parent<>0) then
- parent = "m" & parent
- else
- parent=""
- end if
- 'Making menu item
- Response.write("oCMenu.makeMenu('" & menuID & "','" &parent & "','" & mName & "','" & mLink & "')" & vbcrlf)
- row = row + 1
- loop
-End Sub
-
-'Calling sub
-call readItemsFromDatabase
-
-'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-'ASP CODE END - READING ITEMS FROM THE DATABASE
-'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
diff --git a/www/extras/coolmenus/cm_addins.js b/www/extras/coolmenus/cm_addins.js
deleted file mode 100644
index dd48ce868..000000000
--- a/www/extras/coolmenus/cm_addins.js
+++ /dev/null
@@ -1,262 +0,0 @@
-/******************************************
-CM_ADD-IN - hideselectboxes (last updated: 11/13/02)
-IE5+ and NS6+ only - ignores the other browsers
-
-Because of the selectbox bug in the browsers that makes
-selectboxes have the highest z-index whatever you do
-this script will check for selectboxes that interfear with
-your menu items and then hide them.
-
-Just add this code to the coolmenus js file
-or link the cm_addins.js file to your page as well.
-*****************************************/
-if(bw.dom&&!bw.op){
- makeCM.prototype.sel=0
- makeCM.prototype.onshow+=";this.hideselectboxes(pm,pm.subx,pm.suby,maxw,maxh,pm.lev)"
- makeCM.prototype.hideselectboxes=function(pm,x,y,w,h,l){
- var selx,sely,selw,selh,i
- if(!this.sel){
- this.sel=this.doc.getElementsByTagName("SELECT")
- this.sel.level=0
- }
- var sel=this.sel
- for(i=0;ix && selxy && selyc.fromTop&&c.scrollstop){
- for(i=0;ic.bar.x?c.bar.x:c.m[c.l[0].m[0]].b.x:c.m[c.l[0].m[0]].b.x;
- var y = c.useBar?c.m[c.l[0].m[0]].b.y>c.bar.y?c.bar.y:c.m[c.l[0].m[0]].b.y:c.m[c.l[0].m[0]].b.y;
- var maxw = c.useBar?c.bar.w:c.rows?c.totw:c.maxw; var maxh = c.useBar?c.bar.h:!c.rows?c.toth:c.maxh
- c.hideselectboxes(0,x,y,maxw,maxh,0)
- }
- }
- if(!bw.ie) setTimeout(c.name+".checkscrolled()",200)
-}
-/******************************************
-CM_ADD-IN - pagecheck (last updated: 08/02/02)
-
-Simple code that *tries* to keep the menus inside the
-bounderies of the page.
-
-Code updated. It's still not perfect (obviosly)
-but it will now do another check to try and place
-the menus inside.
-
-
-Just add this code to the coolmenus js file
-or link the cm_addins.js file to your page.
-*****************************************/
-makeCM.prototype.onshow+=";this.pagecheck(b,pm,pm.subx,pm.suby,maxw,maxh)"
-makeCM.prototype.pagecheck=function(b,pm,x,y,w,h,n){
- var l=pm.lev+1,a=b.align; if(!n) n=1
- var ok=1
- if(xcmpage.x2){ pm.align=2; ok=0;}
- else if(ycmpage.y2) {pm.align=4; ok=0;}
- if(!ok) this.getcoords(pm,this.l[l-1].borderX,this.l[l-1].borderY,pm.b.x,pm.b.y,w,h,this.l[l-1].offsetX,this.l[l-1].offsetY)
- x=pm.subx; y=pm.suby
- //Added check --- still not ok? --- part of the code by Denny Caldwell (thanks) -- badly immplemented by me though
- if(xcmpage.x2){ x = -(x+w-cmpage.x2);}
- else if(ycmpage.y2) {y = -(y+h-cmpage.y2);}
- if(xcmpage.x2){ x = -(x+w-cmpage.x2);}
- else if(ycmpage.y2) {y = -(y+h-cmpage.y2);}
- b.moveIt(x,y)
-}
-/******************************************
-CM_ADD-IN - pagecheck (last updated: 01/26/02)
-Simple code that *tries* to keep the menus inside thebounderies of
-the page.A more advanced version of this code will come later.
-Just add this code to the coolmenus js fileor link the cm_addins.
-js file to your page as well.
-*****************************************/
-//makeCM.prototype.onshow+=";this.pagecheck2(b,pm,x,y,maxw,maxh)"
-makeCM.prototype.pagecheck2=function(b,pm,x,y,w,h){
- var fixX = 0
- var fixY = 0
- var ok=1
- if(x+w>cmpage.x2) {
- ;
- ok=0;
- }else if(xcmpage.y2){
- fixY = -(y+h-cmpage.y2);
- ok=0;
- }else if(y(end-px*px-px) && px>1) px-=px/5; this.moveIt(this.x,this.y+px)
- this.clipTo(end-this.y,this.w,this.h,0)
- this.tim=setTimeout(this.obj+".slide("+end+","+px+","+tim+","+c.name+","+l+",'"+name+"')",tim)
- }else{this.moveIt(this.x,end)}
-}
-/******************
-CM_ADD-IN - clipout (last updated: 01/26/02)
-
-This works in all browsers, but it can be
-unstable on all other browsers then Explorer.
-
-This function shows the submenus with a clipping
-effect. If you use this add-in you get two
-new level properties called "clippx" and
-"cliptim". You have to specify this for
-the levels you want this to happen on
-(these properties will also be inherited though)
-
-"clippx" is the number of pixels you want the
-div to slide each setTimout, while "cliptim"
-is the setTimeout speed (in milliseconds)
-
-Example setting:
-oCMenu.level[3].clippx=10
-oCMenu.level[3].cliptim=20
-
-Just add this code to the coolmenus js file
-or link the cm_addins.js file to your page as well.
-
-*****************/
-makeCM.prototype.onshow+="if(c.l[pm.lev].clippx){h=b.h; if(!rows) b.clipTo(0,maxw,0,0,1); else b.clipTo(0,0,maxh,0,1); b.clipxy=0; b.showIt(); clearTimeout(b.tim); b.clipout(c.l[pm.lev].clippx,!rows?maxw:maxh,!rows?maxh:maxw,c.l[pm.lev].cliptim,rows)}"
-cm_makeObj.prototype.tim=10;
-cm_makeLevel.prototype.clippx=null
-cm_makeLevel.prototype.cliptim=30
-cm_makeObj.prototype.clipxy=0
-cm_makeObj.prototype.clipout=function(px,w,stop,tim,rows){
- if(!this.vis) return; if(this.clipxy-1 || window.sidebar)
- this.ie=this.agent.indexOf("msie")>-1 && !this.op
- if(this.op){
- this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1)
- this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1)
- this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it
- }else if(this.moz) this.ns6 = 1
- else if(this.ie){
- this.ie4 = !this.dom && document.all
- this.ie5 = (this.agent.indexOf("msie 5")>-1)
- this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
- this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55
- }
- this.mac=(this.agent.indexOf("mac")>-1)
- this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7)
- this.usedom= this.ns6||this.op7//Use dom creation
- this.reuse = this.ie||this.op7||this.usedom //Reuse layers
- this.px=this.dom&&!this.op5?"px":""
- return this
-}
-var bw=new cm_bwcheck()
-/*Variable declaration*/
-var cmpage
-/*Crossbrowser objects functions*/
-function cm_message(txt){alert(txt); return false}
-function cm_makeObj(obj,nest,o,doc){ //Changed in v4.05
- if(!doc) doc=document
- if(bw.usedom&&o) this.evnt=o
- else{nest=(!nest) ? "doc.":'doc.layers.'+nest+'.'
- this.evnt=bw.dom? doc.getElementById(obj):
- bw.ie4?doc.all[obj]:bw.ns4?eval(nest+"layers." +obj):0;
- }
- if(!this.evnt) return cm_message('The layer does not exist ('+obj+')'
- +'- \nIf your using Netscape please check the nesting of your tags (on the entire page)\nNest:'+nest)
- this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt; this.ok=0
- this.ref=bw.dom||bw.ie4?doc:this.css.document;
- this.obj = obj + "Object"; eval(this.obj + "=this");
- this.x=0; this.y=0; this.w=0; this.h=0; this.vis=0; return this
-}
-cm_makeObj.prototype.moveIt = function(x,y){this.x=x;this.y=y; this.css.left=x+bw.px;this.css.top=y+bw.px}
-cm_makeObj.prototype.showIt = function(o){this.css.visibility="visible"; this.vis=1; if(bw.op5&&this.arr){ this.arr.showIt(); }}//alert('showing arrow')}}
-cm_makeObj.prototype.hideIt = function(no){this.css.visibility="hidden"; this.vis=0;}
-cm_makeObj.prototype.clipTo = function(t,r,b,l,setwidth){
-this.w=r; this.h=b; if(bw.ns4){this.css.clip.top=t;this.css.clip.right=r; this.css.clip.bottom=b;this.css.clip.left=l
-}else{if(t<0)t=0;if(r<0)r=0;if(b<0)b=0;if(b<0)b=0; this.css.clip="rect("+t+bw.px+","+r+bw.px+","+b+bw.px+","+l+bw.px+")";
-if(setwidth){if(bw.op5||bw.op6){this.css.pixelWidth=r; this.css.pixelHeight=b;}else{this.css.width=r+bw.px; this.css.height=b+bw.px;}}}}
-function cm_active(on,h){
- if(this.o.arr) on?this.o.arr.hideIt():bw.op5?this.o.arr.showIt():this.o.arr.css.visibility="inherit"
- if(bw.reuse||bw.usedom){
- if(!this.img2) this.o.evnt.className=on?this.cl2:this.cl
- else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src; //Changed v4.05
- if(on && bw.ns6){this.o.hideIt(); this.o.css.visibility='inherit' }; //netscape 6 bug fix
- }else{
- if(!this.img2){ if(on) this.o.over.showIt(); else this.o.over.hideIt();
- }else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src;
- }this.isactive=on?1:0
-}
-/***Pageobject **/
-function cm_page(frame){ //Changed v4.05
- if(!frame) frame = self
- this.x=0; this.x2 =(!bw.ie)?frame.innerWidth:frame.document.body.offsetWidth-20;
- this.y=0; this.orgy=this.y2= (!bw.ie)?frame.innerHeight:frame.document.body.offsetHeight-6;
- this.x50=this.x2/2; this.y50=this.y2/2; return this
-}
-/***check positions**/
-function cm_cp(num,w,minus){
- if(num){if(num.toString().indexOf("%")!=-1){var t = w?cmpage.x2:cmpage.y2; num=parseInt((t*parseFloat(num)/100))
- if(minus) num-=minus }else num=eval(num);} else num=0; return num
-}
-/**Level object**/
-function cm_makeLevel(){//changed 4.06
- var c=this, a=arguments; c.width=a[0]||null; c.height=a[1]||null;
- c.regClass=a[2]||null; c.overClass=a[3]||null; c.borderX=a[4]>-1?a[4]:null;
- c.borderY=a[5]>-1?a[5]:null; c.borderClass=a[6]||null; c.rows=a[7]>-1?a[7]:null;
- c.align=a[8]||null; c.offsetX=a[9]||null; c.offsetY=a[10]||null; c.arrow=a[11]||null;
- c.arrowWidth=a[12]||null; c.arrowHeight=a[13]||null; c.roundBorder=a[14]||null; return c
-}
-/***Making the main menu object**/
-function makeCM(name){ //Changed v4.06
- var c=this; c.mc=0; c.name = name; c.m=new Array(); c.scrollY=-1; c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0;
- c.isover=0; c.zIndex=100; c.frameStartLevel=1; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); c.constructed = 0;
- return this
-}//events
-makeCM.prototype.onshow=""; makeCM.prototype.onhide=""; makeCM.prototype.onconstruct="";
-/***Creating layers**/
-function cm_divCreate(id,cl,txt,w,c,app,ex,txt2){
- if(bw.usedom){var div=document.createElement("DIV"); div.className=cl; div.id=id;
- if(txt) div.innerHTML=txt; if(app){app.appendChild(div); return div}
- if(w) document.body.appendChild(div); return div
- }else{var dstr='"+txt; ; if(txt2) dstr+=txt2;
- if(c) dstr+='
'; if(w) document.write(dstr); else return dstr
- }return ""
-}
-/***Getting layer string for each menu**/
-function cm_getLayerStr(m,app,name,fill,clb,arrow,ah,aw,root){
- var no=m.nolink,arrstr='',l=m.lev,str='',txt=m.txt,ev='', id=name + '_' + m.name,d1; if(app) d1=app
- if((!bw.reuse||l==0) && !no){
- ev=' onmouseover="'+name+'.showsub(\''+m.name+'\')"'
- +' onmouseout="'+name+'.mout(\''+m.name+'\')"'
- +' onclick="'+name+'.onclck(\''+m.name+'\'); return false" '
- }
- if(bw.reuse&&l!=0) txt=''; if(l==0) str+=d1=cm_divCreate(id+'_0',clb,''); str+=m.d2=cm_divCreate(id,m.cl,txt,0,0,d1,ev)
- if(l==0&&bw.usedom){
- m.d2.onclick=new Function(name+'.onclck("'+m.name+'")');
- m.d1=d1;
- m.d2.onmouseover=new Function(name+'.showsub("'+m.name+'")');
- m.d2.onmouseout=new Function(name+'.mout("'+m.name+'")')
- }if(!bw.reuse && !m.img1 && !no){
- str+=cm_divCreate(id+'_1',m.cl2,txt,0,1)
- str+=cm_divCreate(id+'_3',"clCMAbs",'
',0,1)
- }str+='';
- if(l==0){if(arrow)str+=m.d3=cm_divCreate(id+'_a','clCMAbs','
',0,1,d1); str+=""}
- str+="\n"; if(!bw.reuse){m.txt=null; m.d2=null; m.d3=null;}
- if(bw.usedom){ if(l==0) document.body.appendChild(d1); str=''}
- return str
-}
-/***get align num from text (better to evaluate numbers later)**/
-function cm_checkalign(a){
- switch(a){
- case "right": return 1; break; case "left": return 2; break;
- case "bottom": return 3; break; case "top": return 4; break;
- case "righttop": return 5; break; case "lefttop": return 6; break;
- case "bottomleft": return 7; break; case "topleft": return 8; break;
- }return null
-}
-/**Making each individual menu **/
-makeCM.prototype.makeMenu=function(name,parent,txt,lnk,targ,w,h,img1,img2,cl,cl2,align,rows,nolink,onclick,onmouseover,onmouseout){
- var c = this; if(!name) name = c.name+""+c.mc; var p = parent!=""&&parent&&c.m[parent]?parent:0;
- if(c.mc==0){
- //Added 4.07 - bug(?) in opera 7 - you cannot dom-add layers created in one document to another one (or so it seems) - so turn of usedom
- if(bw.op7 && this.frames) bw.usedom=0
- var tmp=location.href;
- if(tmp.indexOf('file:')>-1||tmp.charAt(1)==':') c.root=c.offlineRoot; else c.root=c.onlineRoot
- if(c.useBar){if(!c.barBorderClass) c.barBorderClass=c.barClass; c.bar1 = cm_divCreate(c.name+'bbar_0',c.barClass,'',0,1);
- c.bar = cm_divCreate(c.name+'bbar',c.barBorderClass,'',1,1,0,0,c.bar1); if(bw.usedom) c.bar.appendChild(c.bar1);
- }}var create=1,img,arrow; var m = c.m[name] = new Object(); m.name=name; m.subs=new Array(); m.parent=p; m.arnum=0; m.arr=0
- var l = m.lev = p?c.m[p].lev+1:0; c.mc++; m.hide=0;
- if(l>=c.l.length){
- var p1,p2=0; if(l>=c.level.length) p1=c.l[c.level.length-1];
- else p1=c.level[l]; c.l[l]=new Array(); if(!p2) p2=c.l[l-1]
- if(l!=0){ if(isNaN(p1.align)) p1["align"]=cm_checkalign(p1.align)
- for(var i in p1){if(i!="str"&&i!="m"){if(p1[i]==null) c.l[l][i]=p2[i]; else c.l[l][i]=p1[i] }}
- }else{c.l[l]=c.level[0]; c.l[l].align=cm_checkalign(c.l[l].align)}
- c.l[l]["str"]=''; c.l[l].m=new Array(); if(!c.l[l].borderClass) c.l[l].borderClass=c.l[l].regClass
- c.l[l].app=0; c.l[l].max=0; c.l[l].arnum=0; c.l[l].o=new Array(); c.l[l].arr=new Array()
- c.level[l]=p1=p2=null
- if(l!=0) c.l[l].str=c.l[l].app=cm_divCreate(c.name+ '_' +l+'_0',c.l[l].borderClass,'')
- }if(p){p = c.m[p]; p.subs[p.subs.length]=name;
- if(p.subs.length==1&&c.l[l-1].arrow){ p.arr=1;
- if(p.parent){c.m[p.parent].arnum++
- if(c.m[p.parent].arnum>c.l[l-1].arnum){
- c.l[l-1].str+=c.l[l-1].arr[c.l[l-1].arnum]=cm_divCreate(c.name+ '_a' +(l-1)+'_'+c.l[l-1].arnum,'clCMAbs','
',0,1,c.l[l-1].app); c.l[l-1].arnum++
- }}}if(bw.reuse) if(p.subs.length>c.l[l].max) c.l[l].max = p.subs.length; else create=0
- }m.rows=rows>-1?rows:c.l[l].rows; m.w=cm_cp(w||c.l[l].width,1); m.h=cm_cp(h||c.l[l].height,0); m.txt=txt; m.lnk=lnk;
- if(align) align=cm_checkalign(align); m.align=align||c.l[l].align; m.cl=cl=cl||c.l[l].regClass;
- m.targ=targ; m.cl2=cl2||c.l[l].overClass; m.create=create; m.mover=onmouseover; m.mout=onmouseout;
- m.onclck=onclick; m.active = cm_active; m.isactive=0; m.nolink=nolink
- if(create) c.l[l].m[c.l[l].m.length]=name
- if(img1){m.img1 = new Image(); m.img1.src=c.root+img1; if(!img2) img2=img1; m.img2 = new Image(); m.img2.src=c.root+img2;
- m.cl="clCMAbs"; m.txt=''; if(!bw.reuse&&!nolink) m.txt = '';;
- m.txt+='
'; if(!bw.reuse&&!nolink) m.txt+=''
- }else{m.img1=0; m.img2=0};
- if(l==0||create) c.l[l].str+=cm_getLayerStr(m,c.l[l].app,c.name,c.fillImg,c.l[l].borderClass,c.l[l].arrow,c.l[l].arrowWidth,c.l[l].arrowHeight,c.root)
- if(l==0){if(m.w>c.maxw) c.maxw=m.w; if(m.h>c.maxh) c.maxh=m.h; c.totw+=c.pxBetween+m.w+c.l[0].borderX;c.toth+=c.pxBetween+m.h+c.l[0].borderY}
- if(lnk && !onmouseover){
- var path=lnk.indexOf("mailto:")>-1||lnk.indexOf("http://")>-1?"":c.root
- m.mover="self.status='"+path+m.lnk+"'"
- if(!m.mout) m.mout=""; m.mout+=";self.status='';"
- }
-}
-/**Getting x/y coords for subs **/
-makeCM.prototype.getcoords=function(m,bx,by,x,y,maxw,maxh,ox,oy){
- var a=m.align; x+=m.o.x; y+=m.o.y
- switch(a){
- case 1: x+=m.w+bx; break; case 2: x-=maxw+bx; break;
- case 3: y+=m.h+by; break; case 4: y-=maxh+by; break;
- case 5: x-=maxw+bx; y-=maxh-m.h; break;
- case 6: x+=m.w+bx; y-=maxh-m.h; break;
- case 7: y+=m.h+by; x-=maxw-m.w; break;
- case 8: y-=maxh+by; x-=maxw-m.w+bx; break;
- }//Added v4.05
- if(m.lev==this.frameStartLevel-1 && this.frames){
- switch(a){
- case 1: x=0; break;
- case 2: x=this.cmpage.x2-maxw; break;
- case 3: y=0; break;
- case 4: y-=maxh+by; break;
- case 5: x-=maxw+bx; y-=maxh-m.h; break;
- case 6: x+=m.w+bx; y-=maxh-m.h; break;
- case 7: y+=m.h+by; x-=maxw-m.w; break;
- case 8: y-=maxh+by; x-=maxw-m.w+bx; break;
- }
- }
- m.subx=x + ox; m.suby=y + oy
-}
-/**Showing sub elements**/
-makeCM.prototype.showsub=function(el){ //Changed v4.06
- var c=this,pm=c.m[el],m,o,nl
- if(!pm.b||(c.isresized&&pm.lev>0)) pm.b=c.l[pm.lev].b; c.isover=1
- clearTimeout(c.tim);
- var ln=pm.subs.length,l=pm.lev+1
- if(c.l[pm.lev].a==el&&l!=c.l.length && !c.openOnClick){if(c.l[pm.lev+1].a) c.hidesub(l+1,el); return}
- c.hidesub(l,el); if(pm.mover) eval(pm.mover); if(!pm.isactive) pm.active(1);
- c.l[pm.lev].a = el; if(ln==0) return;
- if(c.openOnClick && !c.clicked) return//Added v4.06
- if(!c.l[l].b) return //Added v4.05
- var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows
- var rb=c.l[l].roundBorder;//added 4.06
- var x=bx+rb,y=by+rb,maxw=0,maxh=0,cn=0; b.hideIt()
- for(var i=0;imaxw) maxw=m.w; maxh=y}
- else{x+=m.w+bx; if(m.h>maxh) maxh=m.h; maxw=x;}
- o.css.visibility="inherit"; if(bw.op5||bw.op6) o.showIt()
- }else{o = c.m[c.l[l].m[i]].o; o.hideIt();} }
- if(!rows) maxw+=bx*2+rb; else maxh+=by*2+rb; //changed 4.06
- if(rb){maxw+=rb; maxh+=rb}//added 4.06
- b.clipTo(0,maxw,maxh,0,1)
- //Check frame scroll
- if(c.chkscroll) c.chkscroll() //Added v4.05 - not the best solution
- if(c.chkscroll||!pm.subx||!pm.suby||c.scrollY>-1||c.isresized) c.getcoords(pm,c.l[l-1].borderX,c.l[l-1].borderY,pm.b.x,pm.b.y,maxw,maxh,c.l[l-1].offsetX,c.l[l-1].offsetY) //Changed 4.06
- x=pm.subx; if(c.chkscroll&&l==c.frameStartLevel) pm.suby+=c.scrollY; y=pm.suby; b.moveIt(x,y); if(c.onshow) eval(c.onshow); b.showIt()
-}
-/**Hide sub elements **/
-makeCM.prototype.hidesub=function(l,el){ //Changed v4.05
- var c = this,tmp,m,i,j,hide
- if(!l) {l=1; hide=1; c.clicked=0}
- for(i=l-1;i0&&i>l-1) if(c.l[i].b) c.l[i].b.hideIt()//Changed v4.05
- if(c.l[i].a&&c.l[i].a!=el){
- m=c.m[c.l[i].a]; m.active(0,1); if(m.mout) eval(m.mout); c.l[i].a=0
- if(i>0&&i>l-1) if(bw.op5||bw.op6) for(j=0;jl){for(j=0;j0) this.body.appendChild(c.l[i].app)
- if(!this.frames) c.l[i].str=null
- }}c.z=c.zIndex+2
- for(i=st;i0){m.b = bobj; nest=i}
- else{m.b = new cm_makeObj(c.name + "_"+name+"_0","",m.d1,this.doc); m.b.css.zIndex=c.z; m.b.clipTo(0,w+bx*2,h+by*2,0,1); nest=name}
- id = c.name + "_"+name; nest=c.name + "_"+nest;
- if(m.create){
- o=m.o=new cm_makeObj(id,nest+"_0",m.d2,this.doc); o.z=o.css.zIndex=c.z+1; if(bw.reuse){c.l[l].o[oc]=o; oc++};
- if(l==0&&m.img1) o.css.visibility='inherit'; if(bw.op5) o.showIt(); o.arr=0;
- }if(!bw.reuse||l==0) o.clipTo(0,w,h,0,1); o.moveIt(bx,by); o.z=o.css.zIndex=c.z+2
- if(j"}} //Added 4.06
- c.makeObjects(nowrite); cmpage = new cm_page();
- var mpa,o,maxw=c.maxw,maxh=c.maxh,i,totw=c.totw,toth=c.toth,m,px=c.pxBetween
- var bx=c.l[0].borderX,by=c.l[0].borderY,x=c.fromLeft,y=c.fromTop,mp=c.menuPlacement,rows=c.rows
- if(rows){toth=maxh+by*2; totw=totw-px+bx;}else{totw=maxw+bx*2; toth=toth-px+by;}
- switch(mp){
- case "center": x=cmpage.x2/2-totw/2; if(bw.ns4) x-=9; break;
- case "right": x=cmpage.x2-totw; break;
- case "bottom": case "bottomcenter": y=cmpage.y2-toth; if(mp=="bottomcenter") x=cmpage.x2/2-totw/2; break;
- default: if(mp.toString().indexOf(",")>-1) mpa=1; break;
- }for(var i=0;icmpage.x2+off || page2.y2>cmpage.orgy+off){
- if(bw.ie||bw.ns6||bw.op7||bw.ns4){
- cmpage=page2; this.isresized=1;
- if(this.onresize) eval(this.onresize); this.construct(1);
- if(this.onafterresize) eval(this.onafterresize);
- }else{cm_inresize=1; location.reload()}
- }
-}
-/**Onclick of an item**/
-makeCM.prototype.onclck=function(m){ //Changed v4.06
- m = this.m[m]
- if(m.onclck) eval(m.onclck);
- if(this.openOnClick && m.subs.length>0){
- this.clicked = 1; this.showsub(m.name); return
- }
- var lnk=m.lnk, targ=m.targ
- if(lnk){
- if(lnk.indexOf("mailto")!=0 && lnk.indexOf("http")!=0) lnk=this.root+lnk
- if(String(targ)=="undefined" || targ=="" || targ==0 || targ=="_self"){
- if(this.frames){ //Turning of all level 1 + vars
- if(this.l[0].a){
- this.m[this.l[0].a].active(0,1)
- this.l[0].a =0
- }
- for(i=this.frameStartLevel;ix && selxy && sely
-
- Coolmenus example - CoolMenus4 DHTML script made by Thomas Brattli from DHTMLCentral.com. Visit for more great scripts.
-
-
-
-
-
-
-
-
-This file is basically used for debugging. This does not work in Opera or NS4.
-
-
-Get window properties
-Get body properties
-Get menu properties
-Get level 0 properties
-Get item properties
-Get menubar (makeObj object) properties
-
-Get bw properties
-
-
-
-
-
-
-
-