var menu = function() {
    var t = 15,z = 999999,s = 1,a;
    var showDelay = 250;
    var hideDelay = 600;

    function dd(n) {
        this.n = n;
        this.h = [];
        this.c = []
    }

    dd.prototype.init = function(p, c) {
        a = c;
        var w = document.getElementById(p), s = w.getElementsByTagName('ul'), l = s.length, i = 0;
        for (i; i < l; i++) {
            var h = s[i].parentNode;
            this.h[i] = h;
            this.c[i] = s[i];
            //            var mOver = this.n + '.showHide(' + i + ',true);';
            //            var mOut = this.n + '.showHide(' + i + ');';
            h.onmouseover = new Function(this.n + '.st(' + i + ',true)');
            h.onmouseout = new Function(this.n + '.st(' + i + ')');

        }
    }
    dd.prototype.showHide = function(x, f) {
        var self = this;
        if (f) {
            //            window.setTimeout(function() {
            self.st(x, f)
            //            }, showDelay);
        } else {
            alert(x);
            window.setTimeout(function() {
                self.st(x)
            }, 1000);
        }
    }

    dd.prototype.st = function(x, f) {
        var c = this.c[x], h = this.h[x], p = h.getElementsByTagName('a')[0];
        clearInterval(c.t);
        c.style.overflow = 'hidden';
        if (f) {
            p.className += ' ' + a;
            if (!c.mh) {
                c.style.display = 'block';
                c.style.height = '';
                c.mh = c.offsetHeight;
                c.style.height = 0
            }
            if (c.mh == c.offsetHeight) {
                c.style.overflow = 'visible'
            }
            else {
                c.style.zIndex = z;
                z++;
                c.t = setInterval(function() {
                    sl(c, 1)
                }, t)
            }
        } else {
            p.className = p.className.replace(a, '');
            c.t = setInterval(function() {
                sl(c, -1)
            }, t)
        }
    }
    function sl(c, f) {
        var h = c.offsetHeight;
        if ((h <= 0 && f != 1) || (h >= c.mh && f == 1)) {
            if (f == 1) {
                c.style.filter = '';
                c.style.opacity = 1;
                c.style.overflow = 'visible'
            }
            clearInterval(c.t);
            return
        }
        var d = (f == 1) ? Math.ceil((c.mh - h) / s) : Math.ceil(h / s), o = h / c.mh;
        c.style.opacity = o;
        c.style.filter = 'alpha(opacity=' + (o * 100) + ')';
        c.style.height = h + (d * f) + 'px'
    }

    //   =================================================
    dd.prototype.adjustMenu = function() {
        var m = document.getElementById("menu");
        var num = m.childNodes.length;
        var surplus = 0;
        var IE = '\v' == 'v';
        var leng = 0;
        var ii = 0;
        if (IE) {
            ii = 1;
        }
        for (var i = 1 - ii; i < num; i++) {
            m.childNodes[i].style.width = 'auto';
            leng += m.childNodes[i].offsetWidth;
        }
        if (IE) {
            surplus = (m.offsetWidth - leng) / (num);
        } else {
            surplus = (m.offsetWidth - leng) / (num - 1);
        }

        for (i = 1 - ii; i < m.childNodes.length; i++) {
            m.childNodes[i].style.width = m.childNodes[i].offsetWidth + surplus - 1 + 'px';
        }
        m.childNodes[i - 1].style.width = m.childNodes[i - 1].offsetWidth - 2 + 'px';

        fixSubMenu(m);
    }

    function fixSubMenu(ul) {
        for (var i = 0; i < ul.childNodes.length; i++) {
            var chld = ul.childNodes[i];
            if (chld.tagName == 'UL') {
                ul.onmouseover();
                adjustSubMenu(chld);
                ul.onmouseout();
            }

            if (chld.tagName == 'UL' || chld.tagName == 'LI') {
                fixSubMenu(chld);
            }

        }
    }

    function adjustSubMenu(ul) {
        var maxWidth = 0;
        var LIs = ul.getElementsByTagName('LI');
        for (var i = 0; i < LIs.length; i++) {
            if (LIs[i].parentNode == ul) {
                if (LIs[i].onmouseout != null) LIs[i].onmouseout();
                if (LIs[i].offsetWidth > maxWidth)  maxWidth = LIs[i].offsetWidth;
            }
        }
        maxWidth += 5; //for arrow image
        for (var i = 0; i < LIs.length; i++) {
            if (LIs[i].parentNode == ul) {
                LIs[i].style.width = maxWidth + 'px';
            }
        }
    }

    //   =================================================

    return{dd:dd}
}();

