function flip(me,direction,v){
  if(typeof direction!= 'number') var direction= -1;
  if(!v) var v= 0.5;
//  alert(dump(me.flips) +'\n\n'+ me.psn +" + "+ direction +'\n\n'+ me.flips.length +'\n\n-->'+ i);
  var i; 
  if( direction < 0 ){
    if( me.psn+direction < 0 ){
      me.psn= me.flips.length-1;
      me.scrollTop= me.flips[me.psn].y;
    }
    v= -v;
  }
  else{
    if( me.psn+direction > me.flips.length-1 ){
      me.psn= 0;
      me.scrollTop= me.flips[me.psn].y;
    }
    v= v;
  }
  spulZu( me, me.flips[me.psn+direction].y, 'flipped(me,'+ (me.psn+direction) +')', 0, v );

}


function spulZu(me,ziel,callback,v,a,b){
  var t= 1000/50;  // fps
  var a= a ? a : -1;
  var b= b ? b : -a*1.3;
  if(!v) var v=0;
  
  
  if(me.hold){
    return;
  }

  var dir, d, db, dba, dz, va;
  
  va= Math.round( (v + a)*100 )/100;

  dz= Math.abs( ziel - me.scrollTop );
  db=  v*v/b/2;
  dba= va*va/b/2;
  
  if( Math.abs(db) >= dz ){
    d= v + 0.5*b;
    v= v+b; 
  }
  else if( Math.abs(dba) >= dz){
//    v= Math.sqrt(2*b*dz);
    d= v;
    v= v+b;
  }
  else{ 
    d= 0.5*a + v;
    v= v+a;
  }

//  trace(' v:'+v +', d:'+ d +', db:'+ db +', dba:'+ dba +', dz:'+ dz);
  
  
  if( v<0 ? me.scrollTop+d < ziel : me.scrollTop+d > ziel){
    me.scrollTop= ziel;
    eval(callback);
  }
  else{
    me.scrollTop+= d;
    setTimeout('spulZu( document.getElementById("'+me.id+'"),'+ ziel +',"'+ callback +'",'+v+','+a+' )',t);
  }
}

function flipped(me,psn){
  me.psn= psn;
  if(me.autoFlip){
    me.to= setTimeout('flip( document.getElementById("'+ me.id +'"),'+ me.autoFlip +' )',5000);
  }
}



function hold(){
  this.hold= true;
  clearTimeout(this.to);
}
function unhold(){
  this.hold= false;
  if( this.autoFlip ){
    flip( this, this.autoFlip);
  }
}



function initFlipper(){
  var flipDiv, flips, f;
  for(var i=0; i<flipperInits.length; i++){
    flipDiv= document.getElementById(flipperInits[i]);
    flips= flipDiv.getChildsByAttribute('class','flipa','or',false);
    flips.push( flipDiv.appendChild( flips[0].cloneNode(true) ) );
    
    flipDiv.flips= [];
    flipDiv.psn= 0;
    for(f=0; f<flips.length; f++){
      flipDiv.flips[f]= {h:flips[f].offsetHeight, y:flips[f].offsetTop, obj:flips[f]};
      if(flipDiv.scrollTop >= flips[f].offsetTop){
        flipDiv.psn= f;
      }
    }
    flipDiv.onmouseover= hold;
    flipDiv.onmouseout = unhold;
    flipDiv.scrollTop= flips[flipDiv.psn].offsetTop;
    flipDiv.autoFlip= 1;
    setTimeout('flip( document.getElementById("'+ flipDiv.id +'"),'+ flipDiv.autoFlip +' )', 4000+Math.round( 4000*Math.random() ) );
    
  }
//  alert( "initFlipper("+ flipperInits.join(";") +")" + dump(flipDiv.flips,1));
}


window.addListener('load', initFlipper );
  

var flipperInits= [];