function Semaphor(){
 this.timeout=0;
 this.timer=0;
 this.flag=false;
 this.unblock=function(){this.flag=false;clearTimeout(this.timer);};
 this.block=function(mtimeout){if(this.flag==false){this.flag=true;tempvar=this;this.timer=setTimeout(function(){tempvar.unblock();}, mtimeout?mtimeout:tempvar.timeout)}};
 this.blocked=function(){return this.flag;};
}


var curActive,curPrevActive;
var rmenuScope='rmenuScope';
var slide_dur=1.00;
var rmenuSemaphor=new Semaphor();
rmenuSemaphor.timeout=1000;


function slide(menuName){
 if(rmenuSemaphor.blocked()) return false;
 curPrevActive=curActive;
 if(curActive&&curActive==menuName){
  new Effect.BlindUp(curActive, { duration: slide_dur});
  curActive=false;
 }
 else if(curActive&&curActive!=menuName){
  curActive=menuName;
  new Effect.Parallel([
   new Effect.BlindUp(curPrevActive, { duration: slide_dur, sync: true}),
   new Effect.BlindDown(curActive, { duration: slide_dur, sync: true})],
  {queue: {position: 'end', scope: rmenuScope, limit: 2}, duration: slide_dur});
 }
 else {
  curActive=menuName;
  new Effect.BlindDown(curActive, { duration: slide_dur});
 }
 rmenuSemaphor.block();
}
