﻿
Effect.Scroll = Class.create(Effect.Base, {
  initialize: function(element) {
    this.element = $(element);
    this.subElement = $(element).down();
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      scrollX: true,
      scrollY: true,
      targetX: 0,
      targetY: 0
    }, arguments[1] || { });
    this.start(options);
  },
  setup: function() {    
    this.element.makePositioned().makeClipping();   
    this.subElement.makePositioned();
      
    this.originalTop  = this.subElement.offsetTop;
    this.originalLeft = this.subElement.offsetLeft;
    
    this.factorX = (this.options.targetX - this.originalLeft);
    this.factorY = (this.options.targetY - this.originalTop);
  },
  
  update: function(position) {
    var currentScaleX = (this.factorX * position);
    var currentScaleY = (this.factorY * position);    
    this.setPosition(this.originalLeft + currentScaleX, this.originalTop + currentScaleY);
  },
  setPosition: function(x, y) {
    var d = { };
    if (this.options.scrollX) d.left = x.round() + 'px';
    if (this.options.scrollY) d.top = y.round() + 'px';    
    this.subElement.setStyle(d);
  }
});


