/****************************************************************************
DHTML library from DHTMLCentral.com
* Copyright (C) 2001 Thomas Brattli 2001
* This script was released at DHTMLCentral.com
* Visit for more great scripts!
* This may be used and changed freely as long as this msg is intact!
* We will also appreciate any links you could give us.
*
* Made by Thomas Brattli 2001
***************************************************************************/
/*Variable declaration*/
var cm_eventlayer,cm_eventlayerE,MenusList
var wins
/**Capturing resize**/
var cm_inresize=0
function cm_resized() {
if(cm_inresize) return
cmpage=new cm_page();
if(bw.ie||bw.ns6) {
this.isresized=1;
this.display(1);
if(wins) window.onload()
} else {
cm_inresize=1;
location.reload()
}
}
/**Level object**/
function cm_makeLevel() {
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]||null;
c.borderY=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.arrowo=a[12]||null; // for roll over image
c.arrowWidth=a[13]||null;
c.arrowHeight=a[14]||null;
c.borderWidth=a[15]||0;
c.rightAlign=a[16]||0;
return c
}
/***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
}
/***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
}
/***Creating layers**/
function cm_divCreate(id,cl,txt,w,c,app,ex,txt2,sty) {
if(bw.usedom) {
var div=document.createElement("DIV");
if (sty) div.STYLE=sty;
if (cl) 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 ""
}
function cm_active(on,h) {
if(this.o.arr) {
if(on){
this.o.arr.hideIt();
this.o.arro.showIt();
} else {
if(bw.op5){
this.o.arro.hideIt();
this.o.arr.showIt();
} else {
if(this.o.arro.vis) this.o.arro.hideIt();
if(!this.o.arr.vis) this.o.arr.showIt();
// this.o.arr.css.visibility="inherit"
// this.o.arro.css.visibility="hidden"
}
}
}
if(bw.reuse||bw.usedom){
if(!this.img2) this.o.evnt.className=on?this.cl2:this.cl
else document.images["img"+this.name].src=on?this.img2.src:this.img1.src;
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
}
/***Getting layer string for each menu**/
function cm_getLayerStr(m,app,name,fill,clb,arrow,ah,aw,root,imgCl) {
var no=m.nolink,spacer=m.spacer,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+'\')" onclick="'+name+'.onclck(\''+m.name+'\'); return false" '
if(bw.reuse&&l!=0) txt='';
if(l==0){
if (spacer) str+=d1=cm_divCreate(id+'_0',m.cl,'');
else 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+'")');
}
if(!bw.reuse && !m.img1 && !no) {
str+=cm_divCreate(id+'_1',m.cl2,txt,0,1)
str+=cm_divCreate(id+'_3',m.cl,'
',0,1)
}
str+='';
if(l==0) {
if(arrow)str+=m.d3=cm_divCreate(id+'_a',imgCl,'
',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
}
var cm_sl=0;//reset on reload
function _hideIESelects(x,y,w,h) {
if (bw.ie && w>0 && h>0) {
var s=cm_sl;
if(!s){
s=cm_sl=document.getElementsByTagName('select');
for(var i=0; ix && sy+sh>y){s[i].style.visibility="hidden";s[i].vis=0;}
}
}
}
}
}
}
}
function _showIESelects() {
if (bw.ie) {
var s=cm_sl;
if(!s){s=cm_sl=document.getElementsByTagName('select');}
if(s){
for(var i=0; i-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();
if (!txt && nolink) m.spacer=1;
else m.spacer=0;
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(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.l[l].arro=new Array() // for roll over image
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,c.imgClass,'
',0,1,c.l[l-1].app);
// for roll over image
c.l[l-1].str+=c.l[l-1].arro[c.l[l-1].arnum]=cm_divCreate(c.name+ '_ao' +(l-1)+'_'+c.l[l-1].arnum,c.imgClass,'
',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.cl=cl=cl||c.l[l].regClass;
// for finding our full size menu
if(w=="menu"){
m.fullw=1;w=0;
}
if(h=="menu"){
m.fullh=1;h=0;
}
if(m.fullw || m.fullh){
// creat an temp div for measuring the size later;
sty="position:absolute;overflow:visible;top:-1000;left:-1000;visiblity:visible;z-index:-10;";
var temp= new cm_divCreate(c.name+"temp"+c.numFootPrt,m.cl,txt,1,1,0,'','',sty);
var tempObj=m.footprt= new cm_makeObj(c.name+"temp"+c.numFootPrt,0,temp);
tempObj.hideIt();
c.numFootPrt++;
m.fullsize=1;
}
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.targ=targ;
m.cl2=cl2||c.l[l].overClass;
m.create=create;
m.mover=onmouseover;
m.out=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.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,c.imgClass)
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) m.mover="self.status='"+c.root+m.lnk+"'"
}
/***Make all menu div objects**/
makeCM.prototype.makeObjects=function(nowrite){
var c=this,oc,name,bx,by,w,h,l,no,ar,id,nest
if(!nowrite){
for(i=0;i";
if(!bw.usedom) document.write(c.l[i].str)
else if(i>0) document.body.appendChild(c.l[i].app)
c.l[i].str=null //Probably need this on frames version though
}
}
c.z=c.zIndex+2
for(i=0;i0){
m.b=bobj;
nest=i
} else {
m.b= new cm_makeObj(c.name + "_"+name+"_0","",m.d1);
m.b.css.zIndex=c.z;
// width can only be gotten after page loaded
if (!m.fullsize) 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);
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;
// for roll over image
o.arro=0;
}
if((!bw.reuse||l==0)&&(!m.fullsize)) o.clipTo(0,w,h,0,1);
if(m.spacer&&l==0){
o.evnt.onmouseover='';
o.evnt.onclick='';
o.css.cursor="auto";
m.b.css.cursor="auto";
}
o.moveIt(bx,by);
o.z=o.css.zIndex=c.z+2
if(j0)) pm.b=c.l[pm.lev].b;
c.isover=1
clearTimeout(c.tim);
if(!c.ev.vis){
var scx=cmpage.scrollX();
var scy=cmpage.scrollY();
if (c.ev.x!=scx || c.ev.y!=scy) c.ev.moveIt(scx,scy);
c.ev.showIt()
}
var ln=pm.subs.length,l=pm.lev+1
if(c.l[pm.lev].a==el&&l!=c.l.length){
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;
var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows, borderw=c.l[l].borderWidth
var x=bx,y=by,maxw=0,maxh=0,cn=0,arrow=0,totalw=0,arrspc=0,arrw=0
if(c.l[l].arrowWidth){
arrspc=0;
arrw=c.l[l].arrowWidth+arrspc*2;
}
b.hideIt()
// get full size dimemsions for menus
for(i=0;im.w) m.w=fw;
}
if(m.fullh){
m.footprt.setWidth(m.w);
var fh=m.footprt.getHeight();
if(fh>m.h) m.h=fh;
}
m.fullsize=0;
}
if(!rows){
if(m.arr){
if(!m.wwarr) {
m.w+=arrw;
m.wwarr=1;
}
}
if(m.w>maxw) maxw=m.w;
} else {
if(m.h>maxh) maxh=m.h;
}
}
}
// position menu items
for(var i=0;i0&&i>l-1) c.l[i].b.hideIt()
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;j(cmpage.x2+cmpage.scrollX(1))){
var tx2=(x-maxw-bx-ox);
if(tx2<0) x=tx1;
else x=tx2-ox;
} else x=tx1;
break;
/* 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;
}
m.subx=x+ox;
m.suby=y+oy
}
/**Constructing and initiating top items and bar**/
makeCM.prototype.construct=function(nowrite) {
var c=this; if(!c.l[0]||c.l[0].m.length==0) return;
if(!nowrite){
var ev=c.name+".isover=0; "+c.name+".tim=setTimeout('if(!"+c.name+".isover)"+c.name+".hidesub()',"+c.wait+")"
if(!cm_eventlayer){
var d=cm_makeObj('divCMEvent');
if(!d){
var sty="position:absolute;z-index:300;width:100%;height:100%;left:0;top:0;visibility:hidden;";
d=cm_divCreate('divCMEvent',c.cmClass,'',1,1,0,0,'',sty)
}
cm_eventlayerE=ev;
cm_eventlayer=new cm_makeObj('divCMEvent',"",d);
cm_eventlayer.moveIt(0,0);
cm_eventlayer.clipTo(0,cmpage.x2,cmpage.y2,0,1);
cm_eventlayer.w=cmpage.x2;
cm_eventlayer.y=cmpage.y2;
c.ev=cm_eventlayer;
} else {
c.ev=cm_eventlayer;
cm_eventlayerE+=";"+ev;
}
c.ev.evnt.onmouseover=new Function(cm_eventlayerE);
c.ev.css.zIndex=c.zIndex;
if(c.resizeCheck){
var rsfunc=c.name+".resized();";
appendToHandler("onresize",rsfunc);
}
}
c.makeObjects(nowrite);
}
makeCM.prototype.display=function(nowrite) {
var c=this; if(!c.l[0]||c.l[0].m.length==0) return;
if(c.ev && (cmpage.x2!=c.ev.w || cmpage.y2!=c.ev.h)) c.ev.clipTo(0,cmpage.x2,cmpage.y2,0,1);
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
var borderw=c.l[0].borderWidth;
if(c.posCheck){
if(!c.posAnchor) c.posAnchor= new cm_makeObj(c.posCheck);
if(c.posAnchor.evnt){
x=c.fromLeft=_getPageOffsetLeft(c.posAnchor.evnt);
y=c.fromTop=_getPageOffsetTop(c.posAnchor.evnt);
}
}
if(c.borderSpc){
x+=c.borderSpc;
y+=c.borderSpc;
}
if(!mp) mp="";
if(mp.toString().indexOf(",")>-1) mpa=1;
if (c.l[0].rightAlign) x-=totw;
for(i=0;im.w){
totw+=(fw-m.w);
c.totw=totw;
}
} else if(fw>maxw){
maxw=fw;
totw=maxw+bx*2;
if(c.borderSpc) totw+=c.borderSpc*2;
c.maxw=maxw;
c.totw=totw;
}
if(fw>m.w) m.w=fw;
}
if(m.fullh){
m.footprt.setWidth(m.w);
var fh=m.footprt.getHeight();
if(!rows){
if(fh>m.h){
toth+=(fh-m.h);
c.toth=toth;
}
} else if(fh>maxh){
maxh=fh;
toth=maxh+by*2;
if(c.borderSpc) toth+=c.borderSpc*2;
c.maxh=maxh;
c.toth=toth;
}
if(fh>m.h) m.h=fh;
}
if(bw.ns6){
o.setWidth(m.w-2*borderw);
o.setHeight(m.h-2*borderw);
o.clipTo(0,m.w,m.h,0);
m.o.clipTo(0,m.w-2*borderw,m.h-2*borderw,0,1);
} else {
o.clipTo(0,m.w,m.h,0,1);
m.o.clipTo(0,m.w,m.h,0,1);
}
m.fullsize=0;
}
}
if(!bw.ie && initw) aobj.setWidth(totw);
}
}
}
makeCM.prototype.reposition=function(){
var c=this;
if(c.posAnchor&&c.posAnchor.evnt){
var x=_getPageOffsetLeft(c.posAnchor.evnt);
var y=_getPageOffsetTop(c.posAnchor.evnt);
if(x!=c.fromLeft||y!=c.fromTop) c.display(1);
}
}
/**Onclick of an item**/
makeCM.prototype.onclck=function(m){
m=this.m[m]
if(m.onclck) eval(m.onclck);
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") location.href=lnk
else if(targ=="_blank") window.open(lnk)
else if(targ=="_top" || targ=="window") top.location.href=lnk
else if(top[targ]) top[targ].location.href=lnk
else if(parent[targ]) parent[targ].location.href=lnk
}else return false
}