var DDSPEED = 6;
var DDTIMER = 6;

// main function to handle the mouse events
// called on mouseover header (d==1), and
// mouseout on header and content (d==-1)
function ddMenu(id,d)
    {
    var h = document.getElementById(id + '-ddheader');  // menu header for dropdown
    var c = document.getElementById(id + '-ddcontent'); // menu content for dropdown
    clearInterval(c.timer);     // restart the content timer
    if(d == 1)  // on mouseover for header
        {
        clearTimeout(h.timer);  // restart the header timer
        if(c.maxh && c.maxh <= c.offsetHeight)
            {
            return
            }
        else if(!c.maxh)    // if first time through, describe the content style
            {
            c.style.display = 'block';
            c.style.height = 'auto';
            c.maxh = c.offsetHeight;    // set max height
            c.style.height = '0px';     // but start at 0px
            }
        c.timer = setInterval(function(){ddSlide(c,1)},DDTIMER);
        }
    else    // onmouseout
        {
        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 mouses-out 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
// c = the content, d==1 for open, d==-1 for close
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((currh < 2 && d != 1) || (currh > (c.maxh - 2) && d == 1))
        {
        clearInterval(c.timer);
        }
    }

