Element.addMethods({
  scrollTo: function(element, left, top){
    var element = $(element);
    if (arguments.length == 1){
      var pos = element.cumulativeOffset();
      window.scrollTo(pos[0], pos[1]);
    } else {
      element.scrollLeft = left;
      element.scrollTop  = top;
    }
    return element;
  }
});

Effect.Scroll = Class.create();
Object.extend(Object.extend(Effect.Scroll.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    if(!this.element) throw(Effect._elementDoesNotExistError);
    this.start(Object.extend({x: 0, y: 0}, arguments[1] || {}));
  },
  setup: function() {
    var scrollOffsets = (this.element == window) 
                ? document.viewport.getScrollOffsets() 
                : Element._returnOffset(this.element.scrollLeft, this.element.scrollTop) ;
    this.originalScrollLeft = scrollOffsets.left;
    this.originalScrollTop  = scrollOffsets.top;
  },
  update: function(pos) {
    this.element.scrollTo(Math.round(this.options.x * pos + this.originalScrollLeft), Math.round(this.options.y * pos + this.originalScrollTop));
  }
});


function scroll(parent, child) {
  var parentOffset = parent.cumulativeOffset();
  var childOffset  = child.cumulativeOffset();
  var delta = childOffset[1] - parentOffset[1] - parent.scrollTop - 50;
  new Effect.Scroll(parent, { y: delta, duration: 0.4 });
}

Event.observe(window,'load', function(event){
  scroll ($('cDiv'), $('now'));
});


/*
document.observe('dom:loaded', function(event){
  $$('a[href*="#"]').each(function(anchor){
    anchor.observe('click', function(event) {
      var pageAnchor   = $$('a[name~="#{href}"]'.interpolate({href: this.href.split('#')[1]})).first();
      var delta        = pageAnchor.offsetTop - document.viewport.getScrollOffsets().top;
      var updateUrl    = function(){ location.href = this.href }.bind(this);

      new Effect.Scroll(window, { y: delta, afterFinish: updateUrl, duration: 0.4 });
      Event.stop(event);
    });
  });
});
*/
