home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 January / Chip_2004-01_cd1.bin / tema / proengin / coolmenus4.js < prev    next >
Text File  |  2003-11-20  |  20KB  |  349 lines

  1. /************************************************************
  2. Coolmenus Beta 4.04 - Copyright Thomas Brattli - www.dhtmlcentral.com
  3. Last updated: 03.22.02
  4. *************************************************************/
  5. var editmenu=false;
  6. var cislomenu=0;
  7. /*Browsercheck object*/
  8. function cm_bwcheck(){
  9.     this.ver=navigator.appVersion
  10.     this.agent=navigator.userAgent.toLowerCase()
  11.     this.dom=document.getElementById?1:0
  12.     this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1) && window.opera 
  13.   this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1) && window.opera   
  14.   this.ie5 = (this.agent.indexOf("msie 5")>-1 && !this.op5 && !this.op6)
  15.   this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
  16.   this.ie6 = (this.agent.indexOf("msie 6")>-1 && !this.op5 && !this.op6)
  17.     this.ie4=(this.agent.indexOf("msie")>-1 && document.all &&!this.op5 &&!this.op6 &&!this.ie5&&!this.ie6)
  18.   this.ie = (this.ie4 || this.ie5 || this.ie6)
  19.     this.mac=(this.agent.indexOf("mac")>-1)
  20.     this.ns6=(this.agent.indexOf("gecko")>-1 || window.sidebar)
  21.     this.ns4=(!this.dom && document.layers)?1:0;
  22.     this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6)
  23.   this.usedom= this.ns6//Use dom creation
  24.   this.reuse = this.ie||this.usedom //Reuse layers
  25.   this.px=this.dom&&!this.op5?"px":""
  26.     return this
  27. }
  28. var bw=new cm_bwcheck()
  29. /*Variable declaration*/
  30. var cmpage,cm_eventlayer=0,cm_eventlayerE=0
  31. /*Crossbrowser objects functions*/
  32. function cm_message(txt){alert(txt); return false}
  33. function cm_makeObj(obj,nest,o){
  34.   if(bw.usedom&&o) this.evnt=o
  35.   else{nest=(!nest) ? "":'document.layers.'+nest+'.'
  36.     this.evnt=bw.dom? document.getElementById(obj):
  37.     bw.ie4?document.all[obj]:bw.ns4?eval(nest+"document.layers." +obj):0;
  38.   }
  39.   if(!this.evnt) return cm_message('The layer does not exist ('+obj+')' 
  40.     +'- \nIf your using Netscape please check the nesting of your tags (on the entire page)\nNest:'+nest)
  41.   this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt; this.ok=0
  42.   this.ref=bw.dom||bw.ie4?document:this.css.document; 
  43.   this.obj = obj + "Object";     eval(this.obj + "=this");
  44.   this.x=0; this.y=0; this.w=0; this.h=0; this.vis=0; return this
  45. }
  46. 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}
  47. cm_makeObj.prototype.showIt = function(o){this.css.visibility="visible"; this.vis=1; if(bw.op5&&this.arr){ this.arr.showIt(); }}//alert('showing arrow')}} 
  48. cm_makeObj.prototype.hideIt = function(no){this.css.visibility="hidden"; this.vis=0;}
  49. cm_makeObj.prototype.clipTo = function(t,r,b,l,setwidth){ 
  50. 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
  51. }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+")";
  52. 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;}}}}
  53. function cm_active(on,h){
  54.   if(this.o.arr) on?this.o.arr.hideIt():bw.op5?this.o.arr.showIt():this.o.arr.css.visibility="inherit"
  55.   if(bw.reuse||bw.usedom){
  56.     if(!this.img2) this.o.evnt.className=on?this.cl2:this.cl
  57.     else document.images["img"+this.name].src=on?this.img2.src:this.img1.src;
  58.     if(on && bw.ns6){this.o.hideIt(); this.o.css.visibility='inherit' }; //netscape 6 bug fix  
  59.   }else{  
  60.     if(!this.img2){ if(on) this.o.over.showIt(); else this.o.over.hideIt();
  61.     }else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src;
  62.   }this.isactive=on?1:0
  63. }
  64. /***Pageobject **/
  65. function cm_page(){
  66.   this.x=0; this.x2 =(!bw.ie)?window.innerWidth:document.body.offsetWidth-20;
  67.   this.y=0; this.orgy=this.y2= (!bw.ie)?window.innerHeight:document.body.offsetHeight-6;
  68.   this.x50=this.x2/2; this.y50=this.y2/2; return this
  69. }
  70. /***check positions**/
  71. function cm_cp(num,w,minus){
  72.     if(num){if(num.toString().indexOf("%")!=-1){var t = w?cmpage.x2:cmpage.y2; num=parseInt((t*parseFloat(num)/100))
  73.   if(minus) num-=minus }else num=eval(num);} else num=0; return num
  74. }
  75. /**Level object**/
  76. function cm_makeLevel(){
  77.   var c=this, a=arguments; c.width=a[0]||null; c.height=a[1]||null; 
  78.   c.regClass=a[2]||null; c.overClass=a[3]||null; c.borderX=a[4]||null; 
  79.   c.borderY=a[5]||null; c.borderClass=a[6]||null; c.rows=a[7]>-1?a[7]:null; 
  80.   c.align=a[8]||null; c.offsetX=a[9]||null; c.offsetY=a[10]||null; c.arrow=a[11]||null; 
  81.   c.arrowWidth=a[12]||null; c.arrowHeight=a[13]||null; return c
  82. }
  83. /***Making the main menu object**/
  84. function makeCM(name){
  85.   var c=this; c.mc=0; c.name = name; c.m=new Array(); c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0;
  86.   c.isover=0; c.zIndex=100; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); 
  87. }//events
  88. makeCM.prototype.onshow=""; makeCM.prototype.onhide=""; makeCM.prototype.onconstruct="";
  89. /***Creating layers**/
  90. function cm_divCreate(id,cl,txt,w,c,app,ex,txt2){
  91.   if(bw.usedom){var div=document.createElement("DIV"); div.className=cl; div.id=id; 
  92.     if(txt) div.innerHTML=txt; if(app){app.appendChild(div); return div}
  93.     if(w) document.body.appendChild(div); return div
  94.   }else{var dstr='<div id="'+id+'" class="'+cl+'"' 
  95.     if(ex&&bw.reuse) dstr+=" "+ex; dstr+=">"+txt; ; if(txt2) dstr+=txt2; 
  96.     if(c) dstr+='</div>'; if(w) document.write(dstr); else return dstr
  97.   }return ""
  98. }
  99. /***Getting layer string for each menu**/
  100. function cm_getLayerStr(m,app,name,fill,clb,arrow,ah,aw,root){
  101.   var no=m.nolink,arrstr='',l=m.lev,str='',txt=m.txt,ev='', id=name + '_' + m.name,d1; if(app) d1=app
  102.   if((!bw.reuse||l==0) && !no){
  103.     ev=' onmouseover="'+name+'.showsub(\''+m.name+'\')"' 
  104.     +' onmouseout="'+name+'.mout(\''+m.name+'\')"' //Added 4.02
  105.     +' onclick="'+name+'.onclck(\''+m.name+'\'); return false" '
  106.   }
  107.   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)
  108.   if(l==0&&bw.usedom){ 
  109.     m.d2.onclick=new Function(name+'.onclck("'+m.name+'")'); 
  110.     m.d1=d1; 
  111.     m.d2.onmouseover=new Function(name+'.showsub("'+m.name+'")'); 
  112.     m.d2.onmouseout=new Function(name+'.mout("'+m.name+'")') //Added 4.02
  113.   }if(!bw.reuse && !m.img1 && !no){
  114.     str+=cm_divCreate(id+'_1',m.cl2,txt,0,1)
  115.     str+=cm_divCreate(id+'_3',"clCMAbs",'<a href="#" '+ev+'><img alt="" src="'+root+fill+'" width="'+m.w+'" height="'+m.h+'" border="0" /></a>',0,1)
  116.   }str+='</div>'; 
  117.   if(l==0){if(arrow)str+=m.d3=cm_divCreate(id+'_a','clCMAbs','<img alt="" height="'+aw+'" width="'+ah+'" src="'+root+arrow+'" />',0,1,d1); str+="</div>"}
  118.   str+="\n"; if(!bw.reuse){m.txt=null; m.d2=null; m.d3=null;}
  119.   if(bw.usedom){ if(l==0) document.body.appendChild(d1); str=''}
  120.   return str
  121. }
  122. /***get align num from text (better to evaluate numbers later)**/
  123. function cm_checkalign(a){
  124.   switch(a){
  125.     case "right": return 1; break; case "left": return 2; break;
  126.     case "bottom": return 3; break; case "top": return 4; break;
  127.     case "righttop": return 5; break; case "lefttop": return 6; break;
  128.     case "bottomleft": return 7; break; case "topleft": return 8; break;
  129.   }return null
  130. }
  131. /**Making each individual menu **/
  132. makeCM.prototype.makeMenu=function(name,parent,txt,lnk,targ,w,h,img1,img2,cl,cl2,align,rows,nolink,onclick,onmouseover,onmouseout){
  133.   var c = this; if(!name) name = c.name+""+c.mc; var p = parent!=""&&parent&&c.m[parent]?parent:0;
  134.   if(c.mc==0){var tmp=location.href;
  135.     if(tmp.indexOf('file:')>-1||tmp.charAt(1)==':') c.root=""; else c.root=c.onlineRoot
  136.     if(c.useBar){if(!c.barBorderClass) c.barBorderClass=c.barClass; c.bar1 = cm_divCreate(c.name+'bbar_0',c.barClass,'',0,1);
  137.       c.bar = cm_divCreate(c.name+'bbar',c.barBorderClass,'',1,1,0,0,c.bar1); if(bw.usedom) c.bar.appendChild(c.bar1);    
  138.     }}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
  139.   var l = m.lev = p?c.m[p].lev+1:0; c.mc++; m.hide=0;
  140.   if(l>=c.l.length){
  141.     var p1,p2=0; if(l>=c.level.length) p1=c.l[c.level.length-1];
  142.     else p1=c.level[l]; c.l[l]=new Array(); if(!p2) p2=c.l[l-1]
  143.     if(l!=0){ if(isNaN(p1.align)) p1["align"]=cm_checkalign(p1.align)
  144.       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] }}
  145.     }else{c.l[l]=c.level[0]; c.l[l].align=cm_checkalign(c.l[l].align)}
  146.     c.l[l]["str"]=''; c.l[l].m=new Array(); if(!c.l[l].borderClass) c.l[l].borderClass=c.l[l].regClass
  147.     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()
  148.     c.level[l]=p1=p2=null
  149.     if(l!=0) c.l[l].str=c.l[l].app=cm_divCreate(c.name+ '_' +l+'_0',c.l[l].borderClass,'')
  150.   }if(p){p = c.m[p]; p.subs[p.subs.length]=name; 
  151.     if(p.subs.length==1&&c.l[l-1].arrow){ p.arr=1; 
  152.       if(p.parent){c.m[p.parent].arnum++
  153.         if(c.m[p.parent].arnum>c.l[l-1].arnum){
  154.           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','<img height="'+c.l[l-1].arrowHeight
  155.             +'" width="'+c.l[l-1].arrowWidth+'" src="'+c.root+c.l[l-1].arrow+'" alt="" />',0,1,c.l[l-1].app); c.l[l-1].arnum++
  156.         }}}if(bw.reuse) if(p.subs.length>c.l[l].max) c.l[l].max = p.subs.length; else create=0
  157.   }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; 
  158.   if(align) align=cm_checkalign(align); m.align=align||c.l[l].align; m.cl=cl=cl||c.l[l].regClass; 
  159.   m.targ=targ; m.cl2=cl2||c.l[l].overClass; m.create=create;  m.mover=onmouseover; m.out=onmouseout; 
  160.   m.onclck=onclick; m.active = cm_active; m.isactive=0; m.nolink=nolink
  161.   if(create) c.l[l].m[c.l[l].m.length]=name
  162.   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;
  163.     m.cl="clCMAbs"; m.txt=''; if(!bw.reuse&&!nolink) m.txt = '<a href="#" onmouseover="'+c.name+'.showsub(\''+name+'\')" onmouseout="'+c.name+'.mout(\''+name+'\')" onclick="'+c.name+'.onclck(\''+name+'\'); return false">';;
  164.     m.txt+='<img alt="" src="'+c.root+img1+'" width="'+m.w+'" height="'+m.h+'" id="img'+m.name+'" '
  165.     if(bw.dom&&!nolink) m.txt+='style="cursor:pointer; cursor:hand"'; if(!bw.reuse){if(!bw.dom) m.txt+='name="img'+m.name+'"'; m.txt+=' border="0"'}; m.txt+=' />'; if(!bw.reuse&&!nolink) m.txt+='</a>'
  166.   }else{m.img1=0; m.img2=0}; 
  167.   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)
  168.   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}
  169.   if(lnk && !onmouseover) m.mover="self.status='"+c.root+m.lnk+"'"
  170. }
  171. /**Getting x/y coords for subs **/
  172. makeCM.prototype.getcoords=function(m,bx,by,x,y,maxw,maxh,ox,oy){
  173.   var a=m.align; x+=m.o.x; y+=m.o.y
  174.   switch(a){
  175.     case 1:  x+=m.w+bx; break; case 2:  x-=maxw+bx; break;
  176.     case 3:  y+=m.h+by; break; case 4:  y-=maxh+by; break;
  177.     case 5:  x-=maxw+bx; y-=maxh-m.h; break;
  178.     case 6:  x+=m.w+bx; y-=maxh-m.h; break;
  179.     case 7:  y+=m.h+by; x-=maxw-m.w; break;
  180.     case 8:  y-=maxh+by; x-=maxw-m.w+bx; break;
  181.   }m.subx=x + ox; m.suby=y + oy
  182. }
  183. /**Showing sub elements**/
  184. makeCM.prototype.showsub=function(el){
  185.   var c=this,pm=c.m[el];
  186.   if(!pm.b||(c.isresized&&pm.lev>0)) pm.b=c.l[pm.lev].b; c.isover=1
  187.   clearTimeout(c.tim);
  188.   var ln=pm.subs.length,l=pm.lev+1
  189.   if(c.l[pm.lev].a==el&&l!=c.l.length){if(c.l[pm.lev+1].a) c.hidesub(l+1,el); return}
  190.   c.hidesub(l,el); if(pm.mover) eval(pm.mover); if(!pm.isactive) pm.active(1);
  191.   c.l[pm.lev].a = el; if(ln==0) return; 
  192.   var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows
  193.   var x=bx,y=by,maxw=0,maxh=0,cn=0; b.hideIt()
  194.   for(var i=0;i<c.l[l].m.length;i++){  
  195.     if(!bw.reuse) m=c.m[c.l[l].m[i]]
  196.     else m=c.m[c.m[el].subs[i]]
  197.     if(m && m.parent==el&&!m.hide){
  198.       if(!bw.reuse) o=m.o; else o=m.o=c.l[l].o[i]
  199.       if(x!=o.x||y!=o.y) o.moveIt(x,y); nl=m.subs.length
  200.       if(bw.reuse){
  201.         if(o.w!=m.w || o.h!=m.h) o.clipTo(0,m.w,m.h,0,1)
  202.         if(o.evnt.className!=m.cl){ 
  203.           m.isactive=0; o.evnt.className=m.cl
  204.           if(bw.ns6){o.hideIt(); o.css.visibility='inherit'} //NS6 bugfix
  205.         }if(bw.ie6) b.showIt()//IE6 bugfix (scrollbars)
  206.         o.evnt.innerHTML=m.txt; if(bw.ie6) b.hideIt() 
  207.         if(!m.nolink){
  208.           o.evnt.onmouseover=new Function(c.name+".showsub('"+m.name+"')")
  209.           o.evnt.onmouseout=new Function(c.name+".mout('"+m.name+"')") //Added 4.02
  210.           o.evnt.onclick=new Function(c.name+".onclck('"+m.name+"')")
  211.           if(o.oldcursor){o.css.cursor=o.oldcursor; o.oldcursor=0;}
  212.         }else{o.evnt.onmouseover=''; o.evnt.onclick='';  if(o.css.cursor=='') o.oldcursor=bw.ns6?"pointer":"hand"; else o.oldcursor=o.css.cursor; o.css.cursor="auto"}        
  213.       }if(m.arr){o.arr=c.l[l].arr[cn]; o.arr.moveIt(x + m.w-c.l[l].arrowWidth-3,y+m.h/2-(c.l[l].arrowHeight/2)); 
  214.       o.arr.css.visibility="inherit"; cn++;} else o.arr=0
  215.       if(!rows){y+=m.h+by; if(m.w>maxw) maxw=m.w; maxh=y}
  216.       else{x+=m.w+bx; if(m.h>maxh) maxh=m.h; maxw=x;}
  217.       o.css.visibility="inherit"; if(bw.op5||bw.op6) o.showIt()
  218.     }else{o = c.m[c.l[l].m[i]].o; o.hideIt();} }
  219.   if(!rows) maxw+=bx*2; else maxh+=by*2; b.clipTo(0,maxw,maxh,0,1)
  220.   if(!pm.subx||!pm.suby||c.srollY>0||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)
  221.   x=pm.subx; y=pm.suby; b.moveIt(x,y); if(c.onshow) eval(c.onshow); b.showIt()
  222. }
  223. /**Hide sub elements **/
  224. makeCM.prototype.hidesub=function(l,el){
  225.   var c = this,tmp,m,i,j
  226.   if(!l){if(!l) l=1;}
  227.   for(i=l-1;i<c.l.length;i++){
  228.     if(i>0&&i>l-1) c.l[i].b.hideIt()
  229.     if(c.l[i].a&&c.l[i].a!=el){
  230.       m=c.m[c.l[i].a]; m.active(0,1); if(m.mout) eval(m.mout); c.l[i].a=0
  231.       if(i>0&&i>l-1) if(bw.op5||bw.op6) for(j=0;j<c.l[i].m.length;j++) c.m[c.l[i].m[j]].o.hideIt()
  232.     }if(i>l){for(j=0;j<c.l[i-1].arnum;j++){c.l[i-1].arr[j].hideIt(); if(bw.op6) c.l[i-1].arr[j].moveIt(-1000,-1000)}} //opera bug
  233.   }if(!l&&c.onhide) eval(c.onhide) //onhide event
  234. }
  235. /***Make all menu div objects**/
  236. makeCM.prototype.makeObjects=function(nowrite){
  237.   var c = this,oc,name,bx,by,w,h,l,no,ar,id,nest
  238.   if(!nowrite){
  239.     for(i=0;i<c.l.length;i++){
  240.       if(i!=0) c.l[i].str+="</div>"
  241.       if(!bw.usedom) document.write(c.l[i].str)
  242.       else if(i>0) document.body.appendChild(c.l[i].app)
  243.       c.l[i].str=null //Probably need this on frames version though
  244.     }}c.z=c.zIndex+2
  245.   for(i=0;i<c.l.length;i++){oc=0
  246.     if(i!=0){bobj=c.l[i].b = new cm_makeObj(c.name + "_"+i+"_0","",c.l[i].app); bobj.css.zIndex=c.z; 
  247.     if(bw.dom) bobj.css.overflow='hidden'}; bx=c.l[i].borderX; by=c.l[i].borderY; c.l[i].max=0;
  248.     for(j=0;j<c.l[i].m.length;j++){
  249.       m = c.m[c.l[i].m[j]]; name=m.name; w=m.w; h=m.h; l=m.lev; no=m.nolink;
  250.       if(i>0){m.b = bobj; nest=i}
  251.       else{m.b = new cm_makeObj(c.name + "_"+name+"_0","",m.d1); m.b.css.zIndex=c.z; m.b.clipTo(0,w+bx*2,h+by*2,0,1); nest=name}
  252.       id = c.name + "_"+name; nest=c.name + "_"+nest;
  253.       if(m.create){
  254.         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++}; 
  255.         if(l==0&&m.img1) o.css.visibility='inherit'; if(bw.op5) o.showIt(); o.arr=0;
  256.       }if(!bw.reuse||l==0) o.clipTo(0,w,h,0,1); o.moveIt(bx,by); o.z=o.css.zIndex=c.z+2
  257.       if(j<c.l[i].arnum){
  258.         c.l[i].arr[j]=new cm_makeObj(c.name+"_a"+i+"_"+j,nest+"_0",nowrite?0:c.l[i].arr[j])
  259.         c.l[i].arr[j].css.zIndex=c.z+30+j;
  260.       }else if(l==0&&m.arr==1){
  261.         o.arr=new cm_makeObj(id+"_a",nest+"_0",m.d3)
  262.         o.arr.moveIt(bx+m.w-c.l[i].arrowWidth-3,by+m.h/2-(c.l[i].arrowHeight/2)); 
  263.         o.arr.css.zIndex=c.z+20;
  264.       }if(!no && !bw.reuse && !m.img1){  
  265.         o.over=new cm_makeObj(c.name + "_"+name+"_1",nest+"_0"+".document.layers."+id)
  266.         o.over.moveIt(0,0); o.over.hideIt(); o.over.clipTo(0,w,h,0,1); o.over.css.zIndex=c.z+3
  267.         img=new cm_makeObj(c.name + "_"+name+"_3",nest+"_0"+".document.layers."+id); img.moveIt(0,0)
  268.         img.css.visibility="inherit"; img.css.zIndex=c.z+4; if(bw.op5) img.showIt()
  269.       }c.z++; 
  270.     }
  271.   }
  272. }
  273. /**Onmouseout**/  //Added 4.02
  274. makeCM.prototype.mout = function(){
  275.     var c = this;
  276.   clearTimeout(c.tim)
  277.   c.isover = 0
  278.   c.tim = setTimeout("if(!"+c.name+".isover)"+c.name+".hidesub()",c.wait)
  279. }
  280. /**Constructing and initiating top items and bar**/
  281. makeCM.prototype.construct=function(nowrite){
  282.   var c=this; if(!c.l[0]||c.l[0].m.length==0) return cm_message('No menus defined');
  283.   c.makeObjects(nowrite); cmpage = new cm_page(); 
  284.   var mpa,o,maxw=c.maxw,maxh=c.maxh,i,totw=c.totw,toth=c.toth,m,px=c.pxBetween
  285.   var bx=c.l[0].borderX,by=c.l[0].borderY,x=c.fromLeft; y=c.fromTop,mp=c.menuPlacement,rows=c.rows
  286.   if(rows){toth=maxh+by*2; totw=totw-px+bx;}else{totw=maxw+bx*2; toth=toth-px+by;}
  287.   switch(mp){
  288.     case "center": x=cmpage.x2/2-totw/2; if(bw.ns4) x-=9; break;
  289.     case "right": x=cmpage.x2-totw; break;
  290.     case "bottom": case "bottomcenter": y=cmpage.y2-toth; if(mp=="bottomcenter") x=cmpage.x2/2-totw/2; break;
  291.     default: if(mp.toString().indexOf(",")>-1) mpa=1; break;
  292.   }for(i=0;i<c.l[0].m.length;i++){
  293.     m = c.m[c.l[0].m[i]]; o = m.b; if(mpa) rows?x=cm_cp(mp[i]):y=cm_cp(mp[i],0,0,1); 
  294.     o.moveIt(x,y); o.showIt(); if(m.arr) m.o.arr.showIt(); o.oy=y; 
  295.     if(!mpa) rows?x+=m.w+px+bx:y+=m.h+px+by
  296.   }if(c.useBar){ //Background-Bar
  297.     bbx=c.barBorderX; bby=c.barBorderY; 
  298.     bar1=c.bar1= new cm_makeObj(c.name+'bbar_0',c.name+'bbar',nowrite?0:c.bar1)
  299.     bar=c.bar= new cm_makeObj(c.name+'bbar','',nowrite?0:c.bar); bar.css.zIndex=c.zIndex+1
  300.     //bar.evnt.onmouseover=new Function(cm_eventlayerE)
  301.     var barx=c.barX=="menu"?c.m[c.l[0].m[0]].b.x-bbx:cm_cp(c.barx,1);
  302.     var bary=c.barY=="menu"?c.m[c.l[0].m[0]].b.y-bby:cm_cp(c.barY);
  303.     var barw=c.barWidth=="menu"?totw:cm_cp(c.barWidth,1,bbx*2);
  304.     var barh=c.barHeight=="menu"?toth:cm_cp(c.barHeight,0,bby*2);
  305.     bar1.clipTo(0,barw,barh,0,1); bar1.moveIt(bbx,bby); bar1.showIt();
  306.     bar.clipTo(0,barw+bbx*2,barh+bby*2,0,1); bar.moveIt(barx,bary); bar.showIt();
  307.   }if(c.resizeCheck){ //Window resize code.
  308.     setTimeout('window.onresize=new Function("'+c.name+'.resized()")',500)
  309.     c.resized=cm_resized; if(bw.op5||bw.op6) document.onmousemove=new Function(c.name+".resized()")
  310.   }if(c.onconstruct) eval(c.onconstruct) //onconstruct event
  311.   return true
  312. }
  313. /**Capturing resize**/
  314. var cm_inresize=0
  315. function cm_resized(){
  316.   if(cm_inresize) return
  317.     page2=new cm_page(); var off=(bw.op6||bw.op5)?15:5
  318.   if(page2.x2<cmpage.x2-off || page2.y2<cmpage.orgy-off || page2.x2>cmpage.x2+off || page2.y2>cmpage.orgy+off){
  319.         if(bw.ie||bw.ns6){
  320.       cmpage=page2; this.isresized=1; 
  321.       if(this.onresize) eval(this.onresize); this.construct(1);
  322.       if(this.onafterresize) eval(this.onafterresize)
  323.         }else{cm_inresize=1; location.reload()} 
  324.   }
  325. }
  326. /**Onclick of an item**/
  327. makeCM.prototype.onclck=function(m){
  328.   m = this.m[m]
  329.   if(editmenu==true) {
  330.     lnk="/rs/editmenu.php?menu="+cislomenu+"&item="+m.name;
  331.     targ="editmenu";
  332.     showModalDialog(lnk, targ, 'status:no;dialogWidth:400px;dialogHeight:200px;help:no');
  333.     //window.open(lnk, targ, 'status=no,toolbar=no,location=no,menu=no,scrollbars=no,resizable=no,width=400,height=200');       
  334.   }
  335.   else {
  336.     if(m.onclck) eval(m.onclck);
  337. targ=""; 
  338.     lnk=m.lnk; targ=m.targ
  339.     if(lnk){
  340.       if(lnk.indexOf("mailto")!=0 && lnk.indexOf("http")!=0) lnk=this.root+lnk
  341.           if(String(targ)=="undefined" || targ=="" || targ==0 || targ=="_self") location.href=lnk 
  342.       else if(targ=="_blank") window.open(lnk)
  343.       else if(targ=="_top" || targ=="window") top.location.href=lnk
  344.       else if(top[targ]) top[targ].location.href=lnk
  345.       else if(parent[targ]) parent[targ].location.href=lnk
  346.     }else return false
  347.   }
  348. }
  349.