/*Browsercheck object*/
function cm_bwcheck() {

   this.ver=navigator.appVersion;
   this.agent=navigator.userAgent.toLowerCase();
   this.dom=document.getElementById?1:0;
   this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1) && window.opera;
   this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1) && window.opera;  
   this.ie5 = (this.agent.indexOf("msie 5")>-1 && !this.op5 && !this.op6);
   this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1);
   this.ie6 = (this.agent.indexOf("msie 6")>-1 && !this.op5 && !this.op6);
   this.ie4=(this.agent.indexOf("msie")>-1 && document.all &&!this.op5 &&!this.op6 &&!this.ie5&&!this.ie6);
   this.ie = (this.ie4 || this.ie5 || this.ie6);
   this.mac=(this.agent.indexOf("mac")>-1);
   this.ns6=(this.agent.indexOf("gecko")>-1 || window.sidebar);
   this.ns4=(!this.dom && document.layers)?1:0;
   this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6);
   //Use dom creation
   this.usedom= this.ns6;  
   //Reuse layers
   this.reuse = this.ie||this.usedom;   
   this.px=this.dom&&!this.op5?"px":""
   
   return this;
}

var bw=new cm_bwcheck();

/*Variable declaration*/
var cmpage;
var cm_eventlayer=0;
var cm_eventlayerE=0;

/*Crossbrowser objects functions*/
function cm_message(txt) {
   alert(txt);
   return false;
}

function cm_makeObj(obj,nest,o) {
   if(bw.usedom&&o) {
      this.evnt=o;
   }
   else{
      nest = (!nest) ? "":'document.layers.'+nest+'.';
      this.evnt = bw.dom ? document.getElementById(obj) : bw.ie4 ? document.all[obj] : bw.ns4 ? eval(nest+"document.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 ? document : 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();
   }
}

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 
         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;
}

/***Pageobject **/
function cm_page() {
   this.x=0; 
   this.x2 = (!bw.ie) ? window.innerWidth : document.body.offsetWidth - 20;
   this.y = 0;
   this.orgy = this.y2 = (!bw.ie) ? window.innerHeight : 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() {

   var c = this;
   var 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.arrowWidth = a[12] || null; 
   c.arrowHeight = a[13] || null; 
   return c;
}

/***Making the main menu object**/
function makeCM(name){

  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;
  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(); 
  
}//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='<div id="'+id+'" class="'+cl+'"';
      if (ex && bw.reuse) 
         dstr += " "+ex; dstr+=">"+txt;
      if (txt2) 
         dstr+=txt2; 
      if (c) 
         dstr += '</div>'; 
      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;
   var arrstr = '';
   var l = m.lev;
   var str = '';
   var txt = m.txt;
   var ev = '';
   var id = name + '_' + m.name;
   var 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) 
      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',"clCMAbs",'<a href="#" '+ev+'><img alt="" src="'+root+fill+'" width="'+m.w+'" height="'+m.h+'" border="0" /></a>',0,1);
   }
   str+='</div>';
   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>";
   }
   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) {
      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;
   var img;
   var 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 (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','<img height="'+c.l[l-1].arrowHeight
                     +'" 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++
            }
         }
      }
      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.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.cl = "clCMAbs"; 
      m.txt = ''; 
      if (!bw.reuse && !nolink) 
         m.txt = '<a href="#" onmouseover="'+c.name+'.showsub(\''+name+'\')" onclick="'+c.name+'.onclck(\''+name+'\'); return false">';
      m.txt += '<img alt="" src="'+c.root+img1+'" width="'+m.w+'" height="'+m.h+'" id="img'+m.name+'" ';
      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>'
      }
      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) m.mover="self.status='"+c.root+m.lnk+"'";
}

/**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;
   }
   m.subx = x + ox; 
   m.suby = y + oy
}


/**Showing sub elements**/
makeCM.prototype.showsub = 
function(el){

   var c=this;
   var pm=c.m[el];

   if (!pm.b || (c.isresized && pm.lev > 0)) {
      pm.b = c.l[pm.lev].b; 
   }
   c.isover = 1;
   clearTimeout(c.tim); 
   
   if (!c.ev.vis) {
      c.ev.showIt();
   }
   
   var ln = pm.subs.length;
   var 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;
   var bx = c.l[l].borderX;
   var by = c.l[l].borderY;
   var rows = pm.rows;
   var x = bx;
   var y = by;
   var maxw = 0;
   var maxh = 0;
   var cn=0;
   b.hideIt();
   
   for (var i = 0; i < c.l[l].m.length; i++) {  
      if (!bw.reuse) 
         m = c.m[c.l[l].m[i]];
      else 
         m = c.m[c.m[el].subs[i]];
      if (m && m.parent == el && !m.hide) {
         if (!bw.reuse) 
            o = m.o; 
         else 
            o = m.o = c.l[l].o[i];
         if (x != o.x || y != o.y)
            o.moveIt(x,y); 
         nl = m.subs.length
         if (bw.reuse) {
            if (o.w != m.w || o.h != m.h) 
               o.clipTo(0,m.w,m.h,0,1);
            if (o.evnt.className != m.cl) { 
               m.isactive=0; 
               o.evnt.className = m.cl;
               if (bw.ns6) {
                  o.hideIt(); 
                  o.css.visibility='inherit'
               } //NS6 bugfix
            }
            if (bw.ie6) 
               b.showIt();//IE6 bugfix (scrollbars)
            o.evnt.innerHTML = m.txt; 
            if (bw.ie6) 
               b.hideIt() 
            if (!m.nolink) {
               o.evnt.onmouseover=new Function(c.name+".showsub('"+m.name+"')");
               o.evnt.onclick=new Function(c.name+".onclck('"+m.name+"')");
               if (o.oldcursor) {
                  o.css.cursor = o.oldcursor; 
                  o.oldcursor=0;
               }
            }
            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"
            }        
         }
         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)); 
            o.arr.css.visibility="inherit"; cn++;
         } 
         else {
            o.arr=0;
         }
         if (!rows){
            y += m.h + by; 
            if (m.w > maxw)
               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; 
   else 
      maxh += by * 2; 
   b.clipTo(0,maxw,maxh,0,1);
   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);
   x = pm.subx; 
   y = pm.suby; 
   b.moveIt(x,y); 
   if (c.onshow) 
      eval(c.onshow);
   b.showIt();
}

/**Hide sub elements **/
makeCM.prototype.hidesub =
function(l,el) {

   var c = this;
   var tmp, m, i, j;
   
   if (!l) {
      if (!l) {
         l=1; 
         c.ev.hideIt();
      }
   }
   for (i = l-1; i < c.l.length; i++) {
      if (i > 0 && 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; j < c.l[i].m.length; j++) 
                  c.m[c.l[i].m[j]].o.hideIt();
      }
      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
   }
   if (!l && c.onhide) 
      eval(c.onhide); //onhide event
}

/***Make all menu div objects**/
makeCM.prototype.makeObjects = 
function(nowrite) {

   var c = this;
   var oc, name, bx, by, w, h, l, no, ar, id, nest;
   
   if(!nowrite) {
      for (i = 0; i < c.l.length; i++) {
         if (i != 0) 
            c.l[i].str += "</div>";
         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; i < c.l.length; i++) {
      oc=0;
      if (i != 0) {
         bobj = c.l[i].b = new cm_makeObj(c.name + "_"+i+"_0","",c.l[i].app); 
         bobj.css.zIndex=c.z; 
         if (bw.dom) 
            bobj.css.overflow='hidden';
      }
      bx = c.l[i].borderX; 
      by = c.l[i].borderY; 
      c.l[i].max = 0;
      for (j = 0; j < c.l[i].m.length; j++) {
         m = c.m[c.l[i].m[j]]; 
         name = m.name; 
         w = m.w; 
         h = m.h; 
         l = m.lev; 
         no = m.nolink;
         if (i > 0) {
            m.b = bobj; 
            nest=i;
         }
         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;
         }
         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;
      }
      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 < c.l[i].arnum) {
         c.l[i].arr[j] = new cm_makeObj(c.name+"_a"+i+"_"+j,nest+"_0",nowrite?0:c.l[i].arr[j]);
         c.l[i].arr[j].css.zIndex=c.z+30+j;
      }
      else if (l == 0 && m.arr == 1) {
        o.arr=new cm_makeObj(id+"_a",nest+"_0",m.d3);
        o.arr.moveIt(bx + m.w - c.l[i].arrowWidth - 3,by + m.h / 2 - (c.l[i].arrowHeight / 2)); 
        o.arr.css.zIndex = c.z + 20;
      }
      if (!no && !bw.reuse && !m.img1) {  
         o.over=new cm_makeObj(c.name + "_"+name+"_1",nest+"_0"+".document.layers."+id);
         o.over.moveIt(0,0); 
         o.over.hideIt(); 
         o.over.clipTo(0,w,h,0,1); 
         o.over.css.zIndex=c.z+3;
         img = new cm_makeObj(c.name + "_"+name+"_3",nest+"_0"+".document.layers."+id); 
         img.moveIt(0,0);
         img.css.visibility="inherit"; 
         img.css.zIndex = c.z + 4; 
         if (bw.op5) 
            img.showIt();
      }
      c.z++; 
    }
  }
}

/**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 cm_message('No menus defined');
   if (!nowrite) {
      if (!cm_eventlayer) {
         var d = cm_divCreate('divCMEvent','clCMEvent','',1,1);
      }
      var ev = c.name + ".isover=0; " + c.name + ".tim=setTimeout('if(!"+c.name+".isover)" + c.name + ".hidesub()'," + c.wait + ")";
      if (cm_eventlayer) {
         c.ev = cm_eventlayer; 
         cm_eventlayerE += ";" + ev; 
      }
      else {
         cm_eventlayerE = ev; 
         cm_eventlayer = new cm_makeObj('divCMEvent',"",d); 
         c.ev = cm_eventlayer;
      }
      c.ev.evnt.onmouseover = new Function(cm_eventlayerE); 
      c.ev.css.zIndex = c.zIndex; 
   }
   c.makeObjects(nowrite); 
   cmpage = new cm_page(); 
   var mpa,o
   var maxw = c.maxw;
   var maxh = c.maxh;
   var i;
   var totw=c.totw;
   var toth=c.toth;
   var m;
   var px=c.pxBetween
   
   var bx=c.l[0].borderX;
   var by=c.l[0].borderY;
   var x=c.fromLeft; 
   var y=c.fromTop;
   var mp=c.menuPlacement;
   var 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; 
         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 (i = 0; i < c.l[0].m.length; i++) {
      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); 
      o.moveIt(x,y); 
      o.showIt(); 
      if (m.arr) 
         m.o.arr.showIt(); 
      o.oy = y; 
      if (!mpa) 
         rows ? x += m.w + px + bx : y += m.h + px + by;
   }
   if (c.useBar) { //Background-Bar
      bbx = c.barBorderX; 
      bby = c.barBorderY; 
      bar1 = c.bar1 = new cm_makeObj(c.name+'bbar_0',c.name+'bbar',nowrite?0:c.bar1);
      bar = c.bar = new cm_makeObj(c.name+'bbar','',nowrite?0:c.bar); 
      bar.css.zIndex = c.zIndex + 1;
      //bar.evnt.onmouseover=new Function(cm_eventlayerE);
      var barx = c.barX == "menu" ? c.m[c.l[0].m[0]].b.x - bbx : cm_cp(c.barx,1);
      var bary = c.barY = c.barY=="menu" ? c.m[c.l[0].m[0]].b.y - bby : cm_cp(c.barY);
      var barw = c.barWidth == "menu" ? totw : cm_cp(c.barWidth,1,bbx * 2);
      var barh = c.barHeight == "menu" ? toth : cm_cp(c.barHeight,0,bby * 2);
      bar1.clipTo(0,barw,barh,0,1); 
      bar1.moveIt(bbx,bby); 
      bar1.showIt();
      bar.clipTo(0,barw+bbx*2,barh+bby*2,0,1); 
      bar.moveIt(barx,bary); 
      bar.showIt();
   }
   if (c.resizeCheck) { //Window resize code.
      setTimeout('window.onresize=new Function("'+c.name+'.resized()")',500);
      c.resized = cm_resized; 
      if (bw.op5 || bw.op6) 
         document.onmousemove = new Function(c.name+".resized()");
   }
   if (c.onconstruct) 
      eval(c.onconstruct) //onconstruct event
  return true;
}
/**Capturing resize**/
var cm_inresize=0
function cm_resized() {
   if(cm_inresize) 
      return;
   page2 = new cm_page(); 
   var off = (bw.op6 || bw.op5) ? 15 : 5;
   
   if (page2.x2 < cmpage.x2 - off || page2.y2 < cmpage.orgy - off || page2.x2 > cmpage.x2 + off || page2.y2 > cmpage.orgy + off) {
      if (bw.ie || bw.ns6) {
         cmpage = page2; 
         this.isresized = 1; 
         this.construct(1);
      }
      else {
         cm_inresize = 1; 
         location.reload();
      } 
  }
}

/**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;
}