var rootElement = 'menue_mid';

/************************************************************
Coolmenus Beta 4.06 - Copyright Thomas Brattli - www.dhtmlcentral.com
Last updated: 11.13.02

v4.06 - with basic frame support
*************************************************************/
/*Browsercheck object*/
function cm_bwcheck( )
{
  //In theory we should use object detection, but this script needs work-arounds for almost every browser...
  this.ver = navigator.appVersion
  this.agent = navigator.userAgent.toLowerCase()
  this.dom = document.getElementById ? 1 : 0
  this.ns4 = (!this.dom && document.layers) ? 1 : 0;
  this.op = window.opera
  this.moz = (this.agent.indexOf( "gecko" ) > -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;
//    div.style.position = 'absolute';

    if ( txt )
      div.innerHTML = txt;

    if ( app )
    {
//      alert(app.id + ' | ' + div.id + ' | ' + txt);
      app.appendChild( div );
      return div
    }

    if ( w )
    {
//      alert('Placeholder | ' + div.id + ' | ' + txt);
//    alert(cl);
      document.getElementById( rootElement ).appendChild( div );
//      document.body.appendChild( div );
    }
    
    return div
  }
  else
  {
    var dstr = '<div style="position: absolute;" 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, 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",
                         '<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.getElementById( rootElement ).appendChild( d1 );
//      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',
                                         '<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.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
        = '<a href="#" onmouseover="'+c.name+'.showsub(\''+name+'\')" onmouseout="'+c.name+'.mout(\''+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 )
  {
    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; 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 //changed 4.06

    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.onmouseout = new Function( c.name + ".mout('" + m.name + "')" ) //Added v4.05
        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 + 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; i < c.l.length; i++ )
  {
  if ( i > 0 && 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; 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 ( hide && c.onhide )
    eval(c.onhide) //onhide event
}
/***Make all menu div objects**/
makeCM.prototype.makeObjects = function( nowrite, fromframe )
{ //Changed v4.06
  var c = this, oc, name, bx, by, w, h, l, no, ar, id, nest, st = 0, en = c.l.length, bobj, o, m, i, j

  //Added v4.05
  if ( fromframe )
  {
    st = this.frameStartLevel
    this.body = fromframe.document.body
    this.doc = fromframe.document
    this.deftarget = fromframe
    this.cmpage = new cm_page( fromframe )
  }
  else
  {
    this.body = document.getElementById( rootElement );
//    this.body = document.body
    this.doc = document

    if ( this.frames )
      en = this.frameStartLevel

    this.deftarget = self
  }

  if ( !nowrite )
  {
    for ( i = st; i < en; i++ )
    { //changed 4.06
    if ( !bw.usedom )
      this.doc.write( c.l[i].str )
    else if ( i > 0 )
      this.body.appendChild( c.l[i].app )

    if ( !this.frames )
      c.l[i].str = null
    }
  }

  c.z = c.zIndex + 2

  for ( i = st; i < en; i++ )
  {
  oc = 0

  if ( i != 0 )
  {
    bobj = c.l[i].b = new cm_makeObj( c.name + "_" + i + "_0", "", c.l[i].app, this.doc );
    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, 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 < 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], this.doc )
    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, this.doc )
    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, "", this.doc )
    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, "", this.doc );
    img.moveIt( 0, 0 )
    img.css.visibility = "inherit";
    img.css.zIndex = c.z + 4;

    if ( bw.op5 )
      img.showIt()
  }

  c.z++;
  }
  }

  if ( fromframe )
  {   ///Set scroll vars - added v4.05
    c.chkscroll = function( )
    { //changed 4.06
      if ( bw.ie && !bw.ie6 )
        this.scrollY = this.body.scrollTop;
      else if ( bw.ie6 || bw.op7 )
      {
        if ( this.doc.compatMode && document.compatMode != "BackCompat" )
          this.scrollY = this.doc.documentElement.scrollTop
        else
          this.scrollY = this.body.scrollTop
      }
      else
        this.scrollY = this.deftarget.pageYOffset;
    }
  }
}
/**Onmouseout**/
makeCM.prototype.mout = function( )
{ //Changed v4.06
  var c = this;
  clearTimeout(c.tim);
  c.isover = 0;
  var f = "if(!" + c.name + ".isover)" + c.name + ".hidesub()"

  if ( !c.closeOnClick )
    c.tim = setTimeout( f, c.wait )
  else
  {
    if ( bw.ns4 )
    {
      document.captureEvents( "Event.MOUSEDOWN" );
      document.onmousedown = new Function( f )
    }
    else
      document.onclick = new Function( f );

    if ( this.frames )
    {
      if ( bw.ns4 )
      {
        this.doc.captureEvents( "Event.MOUSEDOWN" );
        this.doc.onmousedown = new Function( f )
      }
      else
        this.doc.onclick = new Function( f )
    }
  }
}
/**Constructing and initiating top items and bar**/
makeCM.prototype.construct = function( nowrite )
{ //Changed v4.06
  var c = this;

  if ( !c.l[0] || c.l[0].m.length == 0 )
    return cm_message( 'No menus defined' );

  if ( !nowrite )
  {
    for ( var i = 1; i < c.l.length; i++ )
    {
      c.l[i].str += "</div>"
    }
  } //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; 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 == 1 )
  { //Background-Bar
    var bbx = c.barBorderX, bby = c.barBorderY;
    var bar1 = c.bar1 = new cm_makeObj( c.name + 'bbar_0', c.name + 'bbar', nowrite ? 0 : c.bar1, document )
    var bar = c.bar = new cm_makeObj( c.name + 'bbar', '', nowrite ? 0 : c.bar, document );
    bar.css.zIndex = c.zIndex + 1
    var barx = c.barX == "menu" ? c.m[c.l[0].m[0]].b.x - bbx : cm_cp( c.barX, 1 );
    var 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 - updated 4.06 - stil sucks
    if ( bw.ns4 || bw.op5 || bw.op6 )
      setTimeout( 'window.onresize=new Function("' + c.name + '.resized()")', 500 )
    else
      window.onresize = new Function( c.name + ".resized()" )

    c.resized = cm_resized;

    if ( bw.op5 || bw.op6 )
      document.onmousemove = new Function( c.name + ".resized()" )
  }

  if ( c.onconstruct )
    eval(c.onconstruct) //onconstruct event

  c.constructed = 1     //Added v4.05
  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) ? 20 : 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 || 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; i < this.l.length; i++ )
        {
        if ( this.l[i].b )
        {
          this.l[i].b.hideIt()
          this.l[i].b = null

          for ( j = 0; j < this.l[i].m.length; j++ )
          {
            this.m[this.l[i].m[j]].b = null;
          }
        }
        }

        this.isover = 0
      }

      this.deftarget.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
}