/************************************************************
 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;
        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,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.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
    //Menu Settings
    if (customWidth) {
        if (customWidth[m.name]) {
            m.w = customWidth[m.name];
            if (m.w < 150) {
                m.w = 150;
            }
        } else {
        }
    }


    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()

    var menuWidth = 0;
    var menuHeight = 0;

    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) {
            menuWidth = m.w;
            menuHeight = menuHeight + m.h + 1;
        }

        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()

    if (b) {
        var menuLeft = b.x;
        var menuTop = b.y;
        if (bw.ie) {
            var selects = document.body.getElementsByTagName('SELECT');
            if ((selects) && (selects.length > 0)) {
                var iframe = getIFrame(pm.lev);
                if (iframe) {
                    iframe.border = 0;
                    iframe.frameBorder = 'no';
                    iframe.scrolling = 'no';
                    iframe.style.backgroundColor = 'red';
                    iframe.style.zIndex = 1;
                    iframe.style.position = 'absolute';
                    iframe.style.width = menuWidth;
                    iframe.style.height = menuHeight;
                    iframe.style.left = menuLeft;
                    iframe.style.top = menuTop;
                    iframe.style.display = 'block';
                }
            }
        }
    }
}

var menuIFrame = new Array();

function getIFrame(level) {
    if (!menuIFrame[level]) {
        menuIFrame[level] = document.createElement('IFRAME');
        document.body.appendChild(menuIFrame[level]);
    }
    return menuIFrame[level];
}


/**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
    }
    //alert(c.l.length);
    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 (bw.ie) {
                var selects = document.body.getElementsByTagName('SELECT');
                if ((selects) && (selects.length > 0)) {
                    if (menuIFrame[i - 1]) menuIFrame[i - 1].style.display = 'none';
                    if (menuIFrame[i]) menuIFrame[i].style.display = 'none';
                }
            }
        }
        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.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 - 380;
            if (x < 17) x = 17;
            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
}

makeCM.prototype.onshow += "if(c.l[pm.lev].clippx){h=b.h; if(!rows) b.clipTo(0,maxw,0,0,1); else b.clipTo(0,0,maxh,0,1); b.clipxy=0; b.showIt(); clearTimeout(b.tim); b.clipout(c.l[pm.lev].clippx,!rows?maxw:maxh,!rows?maxh:maxw,c.l[pm.lev].cliptim,rows)}"
cm_makeObj.prototype.tim = 10;
cm_makeLevel.prototype.clippx = null
cm_makeLevel.prototype.cliptim = 30
cm_makeObj.prototype.clipxy = 0
cm_makeObj.prototype.clipout = function(px, w, stop, tim, rows) {
    if (!this.vis) return;
    if (this.clipxy < stop - px) {
        this.clipxy += px;
        if (!rows) this.clipTo(0, w, this.clipxy, 0, 1);
        else this.clipTo(0, this.clipxy, w, 0, 1);
        this.tim = setTimeout(this.obj + ".clipout(" + px + "," + w + "," + stop + "," + tim + "," + rows + ")", tim)
    } else {
        if (bw.ns6) {
            this.hideIt();
        }
        ;
        if (!rows) this.clipTo(0, w, stop, 0, 1); else this.clipTo(0, stop, w, 0, 1);
        if (bw.ns6) {
            this.showIt()
        }
    }
}

//filter effect
bw.filter = (bw.ie55 || bw.ie6) && !bw.mac
makeCM.prototype.onshow += ";if(c.l[pm.lev].filter) b.filterIt(c.l[pm.lev].filter)"
cm_makeLevel.prototype.filter = null
cm_makeObj.prototype.filterIt = function(f) {
    if (bw.filter) {
        if (this.evnt.filters[0]) this.evnt.filters[0].Stop();
        else this.css.filter = f;
        this.evnt.filters[0].Apply();
        this.showIt();
        this.evnt.filters[0].Play();
    }
}

//scrolling effect
//if(bw.ie) makeCM.prototype.onconstruct='document.body.onscroll=new Function(c.name+".checkscrolled("+c.name+")")'
//else makeCM.prototype.onconstruct='setTimeout(c.name+".checkscrolled()",200)' //REMOVE THIS LINE TO HAVE SCROLLING ON FOR EXPLORER ONLY!!
makeCM.prototype.lscroll = 0
makeCM.prototype.scrollstop = 0 //Set this variable to 1 for another scrolling effect. Leave at 0 to scroll regular
makeCM.prototype.checkscrolled = function(obj) {
    var i;
    if (bw.mac) return //REMOVE THIS LINE TO HAVE SCROLLING ON THE MAC AS WELL - unstable!
    var c = bw.ie?obj:this, o
    if (bw.ns4 || bw.ns6 || bw.op5) c.scrollY = window.pageYOffset
    else c.scrollY = document.body.scrollTop
    if (c.scrollY != c.lscroll) {
        c.hidesub()
        if (c.scrollY > c.fromTop && c.scrollstop) {
            for (i = 0; i < c.l[0].m.length; i++) {
                o = c.m[c.l[0].m[i]].b;
                o.moveIt(o.x, c.scrollY)
            }
            if (c.useBar) c.bar.moveIt(c.bar.x, c.scrollY)
        } else {
            if (c.scrollstop) {
                for (i = 0; i < c.l[0].m.length; i++) {
                    o = c.m[c.l[0].m[i]].b;
                    o.moveIt(o.x, c.fromTop)
                }
                if (c.useBar) c.bar.moveIt(c.bar.x, c.barY)
            } else {
                for (i = 0; i < c.l[0].m.length; i++) {
                    o = c.m[c.l[0].m[i]].b;
                    o.moveIt(o.x, o.oy + c.scrollY)
                }
                if (c.useBar) c.bar.moveIt(c.bar.x, c.barY + c.scrollY)
            }
        }
        c.lscroll = c.scrollY;
        cmpage.y = c.scrollY;
        cmpage.y2 = cmpage.orgy + c.scrollY
        if (bw.ie) {
            clearTimeout(c.tim);
            c.isover = 0;
            c.hidesub()
        }
        if (c.hideselectboxes) { //If you are using the hideselect add-in as well the script will now check for selectboxes when scrolling as well
            var x = c.useBar?c.m[c.l[0].m[0]].b.x > c.bar.x?c.bar.x:c.m[c.l[0].m[0]].b.x:c.m[c.l[0].m[0]].b.x;
            var y = c.useBar?c.m[c.l[0].m[0]].b.y > c.bar.y?c.bar.y:c.m[c.l[0].m[0]].b.y:c.m[c.l[0].m[0]].b.y;
            var maxw = c.useBar?c.bar.w:c.rows?c.totw:c.maxw;
            var maxh = c.useBar?c.bar.h:!c.rows?c.toth:c.maxh
            c.hideselectboxes(0, x, y, maxw, maxh, 0)
        }
    }
    if (!bw.ie) setTimeout(c.name + ".checkscrolled()", 200)
}

