//################ center page (auto scroll to nextStep) ###################
document.observe('dom:loaded', function() 
{
  var storeScrollPosition = function () {
    document.cookie = "scrollPosition=" + document.viewport.getScrollOffsets()[1] + "; path=/";
  };
  
  var readScrollPosition = function () {
    var r = new RegExp("scrollPosition=([^;]+)");
    if (r.test(document.cookie + ";")) {
      r.exec(document.cookie + ";");
      return parseInt(unescape(RegExp.$1));
    }
    return 0;
  };
  
  var doScroll = function(element, position) {
    var options = {duration: 0.37},
      scrollOffsets = document.viewport.getScrollOffsets(),
      max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();  

    return new Effect.Tween(null,
      scrollOffsets.top + readScrollPosition(),
      position > max ? max : position,
      options,
      function(p){ scrollTo(scrollOffsets.left, p.round()) }
    );
  };
  
  var scrollPosition = function (element) {
    var vpHeight = document.viewport.getHeight();
    var eHeight = element.getHeight();
    var ePosition = element.cumulativeOffset().top;
    return ePosition - vpHeight / 2 + eHeight / 2
  };
  
  //~ var centerPageAround = function (element) {
    //~ scrollTo(0, scrollPosition(element));
  //~ };
  
  $$('.nextStep').each(function (element) {
    doScroll(element, scrollPosition(element));
    //~ Effect.ScrollTo(element);  
    //~ centerPageAround(element)
  });
  
  // store current scroll position
  Event.observe(window, 'scroll', function () {
    storeScrollPosition();
  });
  
});


