var DDSPEED = 4;
var DDTIMER = 8;
var OFFSET = 0;
var ZINT = 300;
var SelectedMenuList = "";
var ActiveMenuList = "";
var timeout_task = "";


function ddMenu(id,d,use_timeout){

  var h = document.getElementById(id + '-ddheader');
  var c = document.getElementById(id + '-ddcontent');
  if (c == null){
     if(d == 1){
        menu_ower(id,0);
     }
     else{
        if (use_timeout != -1) menu_out(id,0,1);
        else menu_out(id,0,-1);
     }
  }else{
  clearInterval(c.timer);
  if(d == 1){
    clearTimeout(h.timer);
    c.style.display = 'block';
    if(c.maxh && c.maxh <= c.offsetHeight){return}
    else if(!c.maxh){
      c.style.left = (h.offsetWidth + OFFSET) + 'px';
      c.style.height = '220px';
      c.maxh = c.offsetHeight;
      c.style.height = '0px';
    }
    ZINT = ZINT + 1;
    c.style.zIndex = ZINT;
    c.timer = setInterval(function(){ddSlide(c,1)},DDTIMER);
    menu_ower(id,0);
    
  }else{
    h.timer = setTimeout(function(){ddCollapse(c)},1);
    if (use_timeout != -1) menu_out(id,0,1);
    else menu_out(id,0,-1);
  }
  }
}

function ddCollapse(c){
  c.timer = setInterval(function(){ddSlide(c,-1)},DDTIMER);
}

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);
  }
}

function menu_ower(id,sub_id){
  clearTimeout(timeout_task);
  /* check if it was selected before page load*/
  var previous = SelectedMenuList.split(','); 
  if (previous.length > 0 && previous[0].length > 0){
    if (previous[0] != id){
      if (previous.length > 1 && previous[1].length > 0){
        menu_out(previous[0],previous[1]);
      }else{
        menu_out(previous[0],0,-1);
      }
    }
  }
  /* first level */
  c = document.getElementById(id + '-ddcontent');
  if (c != null){
    c.setAttribute('class', 'm-' + id + ' on');
    c.setAttribute('className', 'm-' + id + ' on');
  }
  c = document.getElementById(id + '-ddheader-a');
  if (c!= null){
    c.setAttribute('class', 'm-' + id + '-on');
    c.setAttribute('className', 'm-' + id + '-on');
  }
  ActiveMenuList = id;
  if (sub_id > 0){
    /* second level */
    c = document.getElementById('sub-' + id + '-' + sub_id);
    c.setAttribute('class', 'sub-m-' + id + '-on');
    c.setAttribute('className', 'sub-m-' + id + '-on');
    ActiveMenuList = ActiveMenuList + ',' + sub_id;
  }
}
function menu_out(id,sub_id,use_timeout){
  
  /* first level */
  c = document.getElementById(id + '-ddcontent');
  if (c != null){
      c.setAttribute('class', 'm-' + id + ' off');
      c.setAttribute('className', 'm-' + id + ' off');
  }
  c = document.getElementById(id + '-ddheader-a');
  if (c != null){
      c.setAttribute('class', 'm-' + id + '-off');
      c.setAttribute('className', 'm-' + id + '-off');
  }
  ActiveMenuList = id;
  if (sub_id > 0){
    /* second level */
    c = document.getElementById('sub-' + id + '-' + sub_id);
    c.setAttribute('class', 'sub-m-' + id + '-off');
    c.setAttribute('className', 'sub-m-' + id + '-off');
    ActiveMenuList = ActiveMenuList + ',' + sub_id;
  };
  if (use_timeout == 1){
    clearTimeout(timeout_task);
    timeout_task = setTimeout(function(){activateSelectedClasses(1)},900);
  }
  
}

function activateSelectedClasses(doEffect){
  var strs = SelectedMenuList.split(',');
  if (strs.length >= 1 && strs[0].length > 0){
  
    if(doEffect == 1){
      ddMenu(strs[0],1);
    }else{
    cancelHide(strs[0]);
    }
    var c = document.getElementById(strs[0] + '-ddcontent');
      c.setAttribute('class', 'm-' + strs[0] + ' on');
      c.setAttribute('className', 'm-' + strs[0] + ' on');
    c = document.getElementById(strs[0] + '-ddheader-a');
      c.setAttribute('class', 'm-' + strs[0] + '-on');
      c.setAttribute('className', 'm-' + strs[0] + '-on');
    
    if (strs.length == 2){
      var i = document.getElementById('sub-' + strs[0] + '-' + strs[1]);
      i.setAttribute('class', 'sub-m-' + strs[0] + '-on');
      i.setAttribute('className', 'sub-m-' + strs[0] + '-on');
    }
  }
  ActiveMenuList = SelectedMenuList;
}
function deactivateSelectedClasses(doEffect){
  var strs = SelectedMenuList.split(',');
  if (strs.length >= 1 && strs[0].length > 0){
    if(doEffect == 1){
      ddMenu(strs[0],-1);
    }
    var c = document.getElementById(strs[0] + '-ddcontent');
      c.setAttribute('class', 'm-' + strs[0] + ' off');
      c.setAttribute('className', 'm-' + strs[0] + ' off');
    c = document.getElementById(strs[0] + '-ddheader-a');
      c.setAttribute('class', 'm-' + strs[0] + '-off');
      c.setAttribute('className', 'm-' + strs[0] + '-off');
    
    
    if (strs.length == 2){
      var i = document.getElementById('sub-' + strs[0] + '-' + strs[1]);
      i.setAttribute('class', 'sub-m-' + strs[0] + '-off');
      i.setAttribute('className', 'sub-m-' + strs[0] + '-off');
    }
  }
}

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 > (c.maxh - 2) && d == 1){
    clearInterval(c.timer);
  }else if(dist < 1 && d != 1){
    clearInterval(c.timer);
    c.style.display = 'none';
  }
}
