var DDSPEED = 10;
var DDTIMER = 10;


function navigateTo(location) {
	this.location.href=location;
}


// main function to handle the mouse events //
function ddMenu(id,d) {

  var h = document.getElementById(id + '-ddheader');
  var c = document.getElementById(id + '-ddcontent');

  clearInterval(c.timer);

  if(d == 1) 
  {
    clearTimeout(h.timer);
	
	// Parent menu style - set background color & border style, even as mouse rolls over the parent menu item 
	// and do this every time, not just when !c.maxh
	h.style.backgroundColor='#bbc3c6';    // give it background color
	h.style.border='2px solid #bbc3c6';   // give it border 9ac1c9
	
    if( c.maxh && c.maxh <= c.offsetHeight ) // do nothing here
	{
	  return;
	}
	else if( !c.maxh )
	{
	  // Sub menu style
	  c.style.display = 'block';
      c.style.height = 'auto';
      c.maxh = c.offsetHeight;
      c.style.height = '0px';
	}
	
    c.timer = setInterval( function() { ddSlide(c,1); }, DDTIMER);
  } 
  else
  {
    // Collapse menu on rollout
	// ddCollapse(c,id) passes two arguments:
	// c -> the sub menu item to collapse
	// h -> the parent menu item, so it can reset its color back to what it was
	h.timer = setTimeout( function() { ddCollapse(c, id) }, 50);
  }
}


// collapse the menu //
function ddCollapse(c, id) {
  // Get parent menu item so we can reset background color and border style
  h = document.getElementById(id + '-ddheader');   // get ddheader parent menu item
  h.style.backgroundColor='#e7ebf0';  // reset its color back to rollout state
  h.style.border='2px solid #e7ebf0';
  
  c.timer = setInterval( function() { ddSlide(c,-1) }, DDTIMER);  // clear interval
}

// 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( (currh < 2 && d != 1) || (currh > (c.maxh - 2) && d == 1) ) 
  {
    clearInterval(c.timer);
  }
}