﻿/************************************************************
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
    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.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
}

