// JavaScript Document

var next = 0;
var nextO = 0;
var timer = 0;
var ords = Array( 
  '0,1,2,3,4,5',
  '1,3,5,0,2,4',
  '0,2,4,1,3,5',
  '5,3,1,4,2,0',
  '4,2,0,5,3,1',
  '1,2,4,0,3,5',
  '3,0,2,1,4,5',
  '4,0,3,1,2,5',
  '5,2,3,4,0,1',
  '3,5,2,1,4,0'
);
    
function pause() {
  $clear( timer );
  timer = 0;
  waben.each( function( wabe ) {
    if ( wabe.fx )
      wabe.fx.pause();
  });
  bewegung.pause();
}

function resume() {
  waben.each( function( wabe ) {
    if ( wabe.fx )
      wabe.fx.resume();
  });
  bewegung.resume();
  timer = shuffle.delay( 3000 );
}

function move( index, to ) {
  this.old = this.coords;
  this.coords = to;
  this.deltaX = this.coords.x - this.old.x;
  this.deltaY = this.coords.y - this.old.y;
  this.fx = new Fx({
    duration: 2000,
    transition: Fx.Transitions.Sine.easeOut
  });
  this.fx.wabe = this;
  this.fx.set = function( now ) {
      var wabe = this.wabe;
      wabe.schrift.setStyles({
        left: wabe.old.x + wabe.deltaX * now,
        top:  wabe.old.y  + wabe.deltaY * now
      });
      if ( oldWidth && oldWidth != width ) {
        wabe.text.setStyles({
          'marginTop': (-0.6*(oldHeight + deltaHeight*now))+'px',
          'fontSize': (oldFontSize + deltaFontSize*now)+'px'
        });
        wabe.schrift.setStyles({
          width: (oldWidth + deltaWidth*now) + 'px',
          height: (oldHeight + deltaHeight*now) + 'px'
        });
        wabe.setStyles({
          width: (oldWidth + deltaWidth*now) + 'px',
          height: (oldHeight + deltaHeight*now) + 'px'
        });
      }
  };
  if ( index==5 )
    this.fx.addEvent('complete', function() {
      oldWidth = width;
    });
  this.fx.start( 0, 1 );
  if ( !timer )
    this.fx.pause();
}

function shuffle() {
  if ( resize )
    calcSets();

  for ( var x=5; x>=0; x-- )
    if ( waben[x].fx && waben[x].fx.timer )
      return;
      
  var nr;
  do {
    nr = Math.floor( Math.random() * sets );
  } while ( nr==next );
  var o;
  do {
    o = Math.floor( Math.random() * ords.length );
  } while ( o == nextO );
  
  nextO = o;
  next = nr;
  var o = ords[nextO].split(',');
  for ( var i=0; i<6; i++ ) {
    move.delay( i*500, waben[parseInt( o[i])], [i, set[next][i]] );
  }
  timer = shuffle.delay( 6000 );
}

