var DDSPEED = 10;
var DDTIMER = 15;
var firstLaunch = true;
var shifted = Array();

// main function to handle the mouse events //
function ddMenu(id, d) {
    var h = document.getElementById(id + '-ddheader');
    var c = document.getElementById(id + '-ddcontent');
    if (c == null || h == null) return;
    var menu_w = $("#header").width();
    var item_w = $(c).width();
    if(shifted[id] == 1){
        $(c).css("left", $(h).offset().left + 'px');
        shifted[id] = null;
    }
    clearInterval(c.timer);
    if (d == 1) {
        //c.style.visibility = 'visible';
        c.style.display = 'block';
        clearTimeout(h.timer);
        if (c.maxh && c.maxh <= c.offsetHeight) {
            return;
        }
        else if (!c.maxh) {
            c.style.display = 'block';
            c.style.height = 'auto';
            c.maxh = c.offsetHeight;
            c.style.height = 0;
        }
        //c.style.width = h.offsetWidth;
        c.timer = setInterval(function() {
            ddSlide(c, 1)
        }, DDTIMER);
    } else {
        h.timer = setTimeout(function() {
            ddCollapse(c)
        }, 50);
    }
}

// collapse the menu //
function ddCollapse(c) {
    c.timer = setInterval(function() {
        ddSlide(c, -1)
    }, DDTIMER);
}

// cancel the collapse if a user rolls over the dropdown //
function cancelHide(id) {
    var h = document.getElementById(id + '-ddheader');
    var c = document.getElementById(id + '-ddcontent');
    clearTimeout(h.timer);
    clearInterval(c.timer);
    if (c.offsetHeight < c.maxh) {
        c.timer = setInterval(function() {
            ddSlide(c, 1)
        }, DDTIMER);
    }
}

// incrementally expand/contract the dropdown and change the opacity //
function ddSlide(c, d) {
    var currh = c.offsetHeight;
    var dist;
    if (d == 1) {
        dist = (Math.round((c.maxh - currh) / DDSPEED));
    } else {
        dist = (Math.round(currh / DDSPEED));
    }
    if (dist <= 1 && d == 1) {
        dist = 1;
    }
    c.style.height = currh + (dist * d) + 'px';
    c.style.opacity = currh / c.maxh;
    c.style.filter = 'alpha(opacity=' + (currh * 100 / c.maxh) + ')';
    if ($(c).height() <= 4 && d != 1 || $(c).height() >= (c.maxh - 4) && d == 1) {
        clearInterval(c.timer);
        c.style.display = d == -1 ? 'none' : 'block';
        if (d == 1) {
            c.timer = setInterval(
                    function() {                        
                        $(c).height($(c).height() + 1);
                        if ($(c).height() >= c.maxh) {
                            clearInterval(c.timer);
                            $(c).height(c.maxh);
                        }
                    }
                    , DDTIMER);
        }        
        c.style.opacity = d == 1 ? 100 : 0;
        c.style.filter = 'alpha(opacity=' + (d == 1 ? 100 : 0) + ')';
    }
}
