var speed = 5;
var crnid;

function fold(obj, menuid, tsalign)
{
    var ts = document.getElementById(menuid);
    var tsa = 0;
    if(tsalign != undefined) tsa=tsalign;
    
    var px = mmnu_findPosX(obj);
    var py = mmnu_findPosY(obj);
    
    ts.style.top = (37+py)+'px';
    ts.style.left = (17+px-tsa)+'px';
    
    hideMenu();
    crnid = menuid;

    fold_menu(menuid);
}

function hideMenu()
{
    //hide all other folded menus
    var divs = document.getElementById('mnudrops').getElementsByTagName('DIV');
    var i;
    for(i=0;i<divs.length;i++) {
        divs[i].style.display = 'none';
        document.getElementById('mnu_'+divs[i].id).className = 'drop';
    }
}

function fold_menu(mnuid)
{
    var mnu = document.getElementById(mnuid);
    mnu.style.clip='rect(0,550,0,0)';
    mnu.style.display='block';
    foldTimer(mnuid,0);
}

function foldTimer(mnuid, hnow,offset)
{
    var mitem = document.getElementById('mnu_'+mnuid);
    mitem.className = 'dropo';
    
    var mnu = document.getElementById(mnuid);
    mnu.style.clip='rect(0,550,'+hnow+',0)';
    var diff = parseInt((300 - hnow)/30);
    if(diff < 10) diff = 10;
    hnow += diff;
    if(hnow < 600 && mnu.style.display == 'block') {
        setTimeout('foldTimer(\''+mnuid+'\','+hnow+')',speed);
    }
}

function folded(mnuid)
{
    crnid = mnuid;
}

function unfold()
{
    crnid='';
    setTimeout('unfoldTimer()',500);
}

function unfoldTimer()
{
    if(crnid == '') hideMenu();
}

function mmnu_findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1)
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  function mmnu_findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }

