﻿var menu = function() {
    var t = 15, z = 50, s = 1, a;
    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];
            h.onmouseover = new Function(this.n + '.st(' + i + ',true)');
            h.onmouseout = new Function(this.n + '.st(' + i + ')');
        }
    }
    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;

                // sieht schöner aus, wenn die zeile auskommentiert ist und es scheint noch alles zu funktionieren.
                //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';
    }
    return { dd: dd }
} ();