
function getWidth(elt){
  return document.getElementById(elt).offsetWidth;
}

function getHeight(elt){
  return document.getElementById(elt).offsetHeight;
}

function getY(elt, index, offset_parent){
  var rows = document.getElementById(elt).getElementsByTagName('tr');
  var row = rows[index];
  return row.offsetTop + offset_parent + marge;
}

function getX(elt, parent){
  return (document.getElementById(elt).offsetWidth + document.getElementById(parent).offsetWidth - 2* marge);
}


/* http://ypslideoutmenus.sourceforge.net/ */
ypSlideOutMenu.Registry=[];
ypSlideOutMenu.aniLen=250;
ypSlideOutMenu.hideDelay=100;
ypSlideOutMenu.minCPUResolution=10;

function ypSlideOutMenu(id,dir,left,top,width,height){
  this.ie=document.all?1:0;
  this.ns4=document.layers?1:0;
  this.dom=document.getElementById?1:0;
  this.css="";
  
  if(this.ie||this.ns4||this.dom){
    this.id=id;
    this.dir=dir;
    
    this.orientation= dir == "left" || dir == "right" ? "h" : "v";
    this.dirType= dir == "right" || dir== "down" ? "-": "+";
    
    //this.dim=this.orientation=="h"?width:height;
    this.dim=width;
    
    this.hideTimer=false;
    this.aniTimer=false;
    this.open=false;
    this.over=false;
    this.startTime=0;
    this.gRef="ypSlideOutMenu_"+id;
    eval(this.gRef+"=this");
    ypSlideOutMenu.Registry[id]=this;
    
    var d=document;

    var _8="";
    _8+="#"+this.id+"Container{visibility:hidden;";
    _8+="left:"+left+"px;";
    _8+="top:"+top+"px;";
    _8+="overflow:hidden; z-index:10000;}";
    
    _8+="#"+this.id+"Container,#"+this.id+"Content{position:absolute;";
    _8+="width:"+width+"px;";
    _8+="height:"+height+"px;";
    _8+="clip:rect(0 "+width+"px "+height+"px 0);";
    _8+="}";

    this.css=_8;
    
    this.load();
  }
};

ypSlideOutMenu.writeCSS=function(){
  document.writeln("<style type=\"text/css\">");
  
  for(var id in ypSlideOutMenu.Registry){
    document.writeln(ypSlideOutMenu.Registry[id].css);
  }document.writeln("</style>");
};

ypSlideOutMenu.prototype.load=function(){
  var d=document;
  var _10=this.id+"Container";
  var _11=this.id+"Content";
  var _12=this.dom?d.getElementById(_10):this.ie?d.all[_10]:d.layers[_10];
  
  if(_12){
    var _13=this.ns4?_12.layers[_11]:this.ie?d.all[_11]:d.getElementById(_11);
  }
  
  var _14;
  
  if(!_12||!_13){
    window.setTimeout(this.gRef+".load()",100);
  }else{
    this.container=_12;
    this.menu=_13;
    this.style=this.ns4?this.menu:this.menu.style;
    this.homePos=eval("0"+this.dirType+this.dim);
    this.outPos=0;
    this.accelConst=(this.outPos-this.homePos)/ypSlideOutMenu.aniLen/ypSlideOutMenu.aniLen;
    
    if(this.ns4){
      this.menu.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT);
    }
    this.menu.onmouseover=new Function("ypSlideOutMenu.showMenu('"+this.id+"')");
    this.menu.onmouseout=new Function("ypSlideOutMenu.hideMenu('"+this.id+"')");
    this.endSlide();
  }
};

ypSlideOutMenu.showMenu=function(id){
  var reg=ypSlideOutMenu.Registry;
  var obj=ypSlideOutMenu.Registry[id];
  /*
  var selNodes = document.getElementsByTagName('select')
  var i=0;
  if (selNodes.item(0)) {
    do{
      //selNodes.item(i).style.visibility = 'hidden';
      selNodes.item(i).style.display = "none";
      selNodes.item(i).disabled=true;
    }while(++i < selNodes.length);
  }  */
  
  if(obj){
    if(obj.container){
      obj.over=true;
      /*
      for(menu in reg){
        if(id!=menu){
          ypSlideOutMenu.hide(menu);
        }
      }
      */
      if(obj.hideTimer){
        reg[id].hideTimer=window.clearTimeout(reg[id].hideTimer);
      }
      
      if(!obj.open&&!obj.aniTimer){
        reg[id].startSlide(true);
      }
    }
  }
};

ypSlideOutMenu.hideMenu=function(id){
  var obj=ypSlideOutMenu.Registry[id];
  /*
  var selNodes = document.getElementsByTagName('select')
  var i=0;
  if (selNodes.item(0))
  {
    do{
      //selNodes.item(i).style.visibility = 'visible';
      selNodes.item(i).style.display = "inline";
      selNodes.item(i).disabled=false;
    }while(++i < selNodes.length);
  }  
  */
  if(obj){
    if(obj.container){
    
      if(obj.hideTimer){
        window.clearTimeout(obj.hideTimer);
      }
      
      obj.hideTimer=window.setTimeout("ypSlideOutMenu.hide('"+id+"')",ypSlideOutMenu.hideDelay);
    }
  }
};

ypSlideOutMenu.hideAll=function(){
  var reg=ypSlideOutMenu.Registry;
  for(menu in reg){
    ypSlideOutMenu.hide(menu);
    if(menu.hideTimer){
      window.clearTimeout(menu.hideTimer);
    }
  }
};

ypSlideOutMenu.hide=function(id){
  var obj=ypSlideOutMenu.Registry[id];
  obj.over=false;
  
  if(obj.hideTimer){
    window.clearTimeout(obj.hideTimer);
  }
  
  obj.hideTimer=0;
  
  if(obj.open&&!obj.aniTimer){
    obj.startSlide(false);
  }
};

ypSlideOutMenu.prototype.startSlide=function(_21){
  this[_21?"onactivate":"ondeactivate"]();
  this.open=_21;
  if(_21){
    this.setVisibility(true);
  }
  this.startTime=(new Date()).getTime();
  this.aniTimer=window.setInterval(this.gRef+".slide()",ypSlideOutMenu.minCPUResolution);
};
  
ypSlideOutMenu.prototype.slide=function(){
  var _22=(new Date()).getTime()-this.startTime;
  if(_22>ypSlideOutMenu.aniLen){
    this.endSlide();
  }else{
    var d=Math.round(Math.pow(ypSlideOutMenu.aniLen-_22,2)*this.accelConst);
    if(this.open&&this.dirType=="-"){
      d=-d;
    }else{
      if(this.open&&this.dirType=="+"){
        d=-d;
      }else{
        if(!this.open&&this.dirType=="-"){
          d=-this.dim+d;
        }else{
          d=this.dim+d;
        }
      }
    }
    this.moveTo(d);
  }
};

ypSlideOutMenu.prototype.endSlide=function(){
  this.aniTimer=window.clearTimeout(this.aniTimer);
  this.moveTo(this.open?this.outPos:this.homePos);
  if(!this.open){
    this.setVisibility(false);
  }
  
  if((this.open&&!this.over)||(!this.open&&this.over)){
    this.startSlide(this.over);
  }
};

ypSlideOutMenu.prototype.setVisibility=function(_24){
  var s=this.ns4?this.container:this.container.style;
  s.visibility=_24?"visible":"hidden";
};

ypSlideOutMenu.prototype.moveTo=function(p){
  this.style[this.orientation=="h"?"left":"top"]=this.ns4?p:p+"px";
};

ypSlideOutMenu.prototype.getPos=function(c){
  return parseInt(this.style[c]);};

ypSlideOutMenu.prototype.onactivate=function(){
};

ypSlideOutMenu.prototype.ondeactivate=function(){
};
