var CurrentPage = 'intro';
var CurrentX = 0;
var CurrentY = 0;
var NewPage = false;
var NewX = 0;
var NewY = 0;
var Going = 0;
var Rewind = false;
var YRewind = false;
var AlsoY = false;
var OutTimeout = false;
var InTimeout = false;

function Fixup()
 {
  $('page' + CurrentPage).style.display = 'none';

  $('page' + NewPage).style.left = '0px';
  $('page' + NewPage).style.top = '0px';

  CurrentPage = NewPage;

  NewPage = false;

  CurrentX = 0;
  CurrentY = 0;

  NewX = 0;
  NewY = 0;

  if (u = $('page' + CurrentPage + 'back'))
   new Effect.Opacity(u, { duration: 0.3, from: 0, to: 1.0 });

  if (u = $('page' + CurrentPage + 'next'))
   new Effect.Opacity(u, { duration: 0.3, from: 0, to: 1.0 });

  if (u = $('page' + CurrentPage + 'up'))
   new Effect.Opacity(u, { duration: 0.3, from: 0, to: 1.0 });

  if (u = $('page' + CurrentPage + 'down'))
   new Effect.Opacity(u, { duration: 0.3, from: 0, to: 1.0 });

  if (CurrentPage == 2000)
   setTimeout(function() {
    GoPage(4);
   }, 5000);

  if (CurrentPage == 3)
   {
    $('page3picz').style.display = 'block';
    new Effect.Opacity($('page3picz'), { duration: 0.3, from: 0.0, to: 1.0 });
   }
 }

function GetOut()
 {
  var gotit = 0;

  if (!AlsoY)
   {
    if ((CurrentX > -2000) && (!Rewind))
     {
      var Delta = Math.abs(CurrentX - 2000) / 20;
      if (Delta < 0.5) Delta = 0.5;

      CurrentX = CurrentX - Delta;

      $('page' + CurrentPage).style.left = Math.round(CurrentX) + 'px';

      gotit = gotit + 1;
     }
    else if ((CurrentX < 1990) && (Rewind))
     {
      var Delta = Math.abs(CurrentX - 2000) / 20;
      if (Delta < 0.5) Delta = 0.5;

      CurrentX = CurrentX + Delta;

      $('page' + CurrentPage).style.left = Math.round(CurrentX) + 'px';

      gotit = gotit + 1;
     }
   }

  if (AlsoY)
   {
    if ((CurrentY > -2000) && (!YRewind))
     {
      var Delta = Math.abs(CurrentY - 2000) / 20;
      if (Delta < 0.5) Delta = 0.5;

      CurrentY = CurrentY - Delta;

      $('page' + CurrentPage).style.top = Math.round(CurrentY) + 'px';

      gotit = gotit + 1;
     }
    else if ((CurrentY < 1990) && (Rewind))
     {
      var Delta = Math.abs(CurrentY - 2000) / 20;
      if (Delta < 0.5) Delta = 0.5;

      CurrentY = CurrentY + Delta;

      $('page' + CurrentPage).style.top = Math.round(CurrentY) + 'px';

      gotit = gotit + 1;
     }
   }

  if (gotit == 0)
   {
    Going = Going - 1;

    if (Going == 0)
     Fixup();
   }
  else
   {
    OutTimeout = setTimeout(GetOut, 10);
   }
 }

function GetIn()
 {
  var gotit = 0;

  if (!AlsoY)
   {
    if ((NewX > 1) && (!Rewind))
     {
      var Delta = Math.abs(NewX) / 10;
      if (Delta < 0.5) Delta = 0.5;

      NewX = NewX - Delta;

      $('page' + NewPage).style.left = Math.round(NewX) + 'px';

      gotit = gotit + 1;
     }
    else if ((NewX < -1) && (Rewind))
     {
      var Delta = Math.abs(NewX) / 10;
      if (Delta < 0.5) Delta = 0.5;

      NewX = NewX + Delta;

      $('page' + NewPage).style.left = Math.round(NewX) + 'px';

      gotit = gotit + 1;
     }
   }

  if (AlsoY)
   {
    if ((NewY > 1) && (!YRewind))
     {
      var Delta = Math.abs(NewY) / 10;
      if (Delta < 0.5) Delta = 0.5;

      NewY = NewY - Delta;

      $('page' + NewPage).style.top = Math.round(NewY) + 'px';

      gotit = gotit + 1;
     }
    else if ((NewY < -1) && (YRewind))
     {
      var Delta = Math.abs(NewY) / 10;
      if (Delta < 0.5) Delta = 0.5;

      NewY = NewY + Delta;

      $('page' + NewPage).style.top = Math.round(NewY) + 'px';

      gotit = gotit + 1;
     }
   }

  //$('dbg').innerHTML = CurrentX + '/' + CurrentY + ' ' + NewX + '/' + NewY + ' ' + AlsoY;

  if (gotit == 0)
   {
    Going = Going - 1;

    if (Going == 0)
     Fixup();
   }
  else
   {
    InTimeout = setTimeout(GetIn, 5);
   }
 }

function GoPagePerform(p, rewinding, alsoy, yrewinding)
 {
  Going = 2;

  NewPage = p;

  Rewind = rewinding;
  YRewind = yrewinding;

  AlsoY = alsoy;

  var d = $('page' + p);

  if (alsoy)
   {
    d.style.left = '0px';
    d.style.top = yrewinding ? '-3000px' : '2000px';

    NewX = 0;
    NewY = yrewinding ? -3000 : 2000;
   }
  else
   {
    d.style.left = rewinding ? '-3000px' : '2000px';
    d.style.top = '0px';

    NewX = rewinding ? -3000 : 2000;
    NewY = 0;
   }

  d.style.display = 'block';

  if (u = $('page' + p + 'back')) u.setOpacity(0.0);
  if (u = $('page' + p + 'next')) u.setOpacity(0.0);
  if (u = $('page' + p + 'up')) u.setOpacity(0.0);
  if (u = $('page' + p + 'down')) u.setOpacity(0.0);

  if (u = $('page' + CurrentPage + 'back')) u.setOpacity(0.0);
  if (u = $('page' + CurrentPage + 'next')) u.setOpacity(0.0);
  if (u = $('page' + CurrentPage + 'up')) u.setOpacity(0.0);
  if (u = $('page' + CurrentPage + 'down')) u.setOpacity(0.0);

  OutTimeout = setTimeout(GetOut, 10);
  InTimeout = setTimeout(GetIn, 10);
 }

function GoPage(p, rewinding, alsoy, yrewinding)
 {
  if (Going == 0)
   if (CurrentPage != p)
    {
     if (CurrentPage == 3)
      {
       new Effect.Opacity($('page3picz'), { duration: 0.3, from: 1.0, to: 0 });

       setTimeout(function() {
        $('page3picz').style.display = 'none';
        GoPagePerform(p, rewinding, alsoy, yrewinding);
       }, 300);
      }
     else
      {
       $('page3picz').setOpacity(0.0);
       $('page3picz').style.display = 'none';

       GoPagePerform(p, rewinding, alsoy, yrewinding);
      }
    }

  return false;
 }

function Resizer()
 {
  var d = document.viewport.getDimensions();

  if (v = $('page100history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page102history')) v.style.height = (d.height - 250) + 'px';

  if (v = $('page3fotos')) v.style.height = (d.height - 190) + 'px';

  if (v = $('page10001history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page10002history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page10003history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page10004history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page10005history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page10006history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page10007history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page10008history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page10009history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page100010history')) v.style.height = (d.height - 250) + 'px';
  if (v = $('page100011history')) v.style.height = (d.height - 250) + 'px';

  //if (v = $('f4msg')) v.style.height = (d.height - 600) + 'px';
 }

function ScrollItPerform(e)
 {
  var delta = e.scrollPending / 10;

  e.scrollPending = e.scrollPending - delta;
  e.scrollTop = e.scrollTop + delta;

  if ((e.scrollPending > -1) && (e.scrollPending < 1))
   {
    e.scrollTimeout = false;
   }
  else
   {
    e.scrollTimeout = setTimeout(function() {
     ScrollItPerform(e);
    }, 10);
   }
 }

function ScrollIt(e, delta)
 {
  var e = $(e);
  delta = Element.getDimensions(e).height * delta;

  e.scrollPending = delta;

  if (e.scrollTimeout)
   clearTimeout(e.scrollTimeout);

  e.scrollTimeout = setTimeout(function() {
   ScrollItPerform(e);
  }, 10);

  return false;
 }

function AfterSender()
 {
  $('f4msg').disabled = false;
 }

function Sender()
 {
  new Ajax.Request("msg.html", { method: "post", parameters: "msg=" + encodeURIComponent($('f4msg').value), onSuccess: AfterSender });

  $('f4msg').value = '';
  $('f4msg').disabled = true;

  return GoPage(2000,true);
 }
