/* Global Page Object */
var PAGEOBJ = {};
/*
	Scroll Effect Class
*/
Effect.Scroll = Class.create(Effect.Base, {
  initialize: function(element) {
    this.element = $(element);
    var options = Object.extend({
      x:    0,
      y:    0,
      mode: 'absolute'
    } , arguments[1] || {}  );
    this.start(options);
  },
  setup: function() {
    if (this.options.continuous && !this.element._ext ) {
      this.element.cleanWhitespace();
      this.element._ext=true;
      this.element.appendChild(this.element.firstChild);
    }

    this.originalLeft=this.element.scrollLeft;
    this.originalTop=this.element.scrollTop;

    if(this.options.mode == 'absolute') {
      this.options.x -= this.originalLeft;
      this.options.y -= this.originalTop;
    } else {

    }
  },
  update: function(position) {   
    this.element.scrollLeft = this.options.x * position + this.originalLeft;
    this.element.scrollTop  = this.options.y * position + this.originalTop;
  }
});

/* class for the slide player */
PAGEOBJ.photoScroll = function(photoScrollContainerId, visibleAtOnce, scrollIncrementAmount, alternateImageSource) {
	if (window.browser && (window.browser instanceof photoScrollAreaBrowser)) {return;}
	var total, allCells = $$("#"+photoScrollContainerId+" td");
	var itemIndex = 0;
	var imgSrc = alternateImageSource || "http://www.77central.com/images/building-photos/";
	var distance = allCells.first().offsetWidth + 1;
	var images = { leftOff: "arrow-previous-off.gif", leftOn: "arrow-previous-on.gif", rightOff: "arrow-next-off.gif", rightOn: "arrow-next-on.gif" };
	
	this.load = function() {
		allCells.invoke("removeClassName","hidden");
		total = allCells.length;
		this.activateButtons();
		this.showButtons();
		$("photoScrollAreaScrollWrapper").scrollLeft = 0;
	}
	
	function tooFarRight() {
		return itemIndex + visibleAtOnce >= total;
	}

	function tooFarLeft() {
		return itemIndex == 0;
	}
	
	this.activateButtons = function() {
		$("photoScrollReverse").observe('click', this.goLeft.bind(this));
		$("photoScrollForward").observe('click', this.goRight.bind(this));
	};

	this.disableButtons = function() {
		$("photoScrollReverse").stopObserving('click');
		$("photoScrollForward").stopObserving('click');
	};

	this.showButtons = function() {
		$("photoScrollReverse").src = tooFarLeft() ? imgSrc + images.leftOff : imgSrc + images.leftOn;
		$("photoScrollForward").src = tooFarRight() ? imgSrc + images.rightOff : imgSrc + images.rightOn;
	};

	this.goRight = function() {
		if (tooFarRight()) return;
		this.disableButtons();
		itemIndex += scrollIncrementAmount;
		this.update("right");
	};

	this.goLeft = function() {
		if (tooFarLeft()) return;
		this.disableButtons();
		itemIndex -= scrollIncrementAmount;
		this.update("left");
	};

	this.update = function(direction) {
		var incrementAmount = (direction == "right") ? distance : - distance;
		var that = this;
		new Effect.Scroll($("photoScrollAreaScrollWrapper"), { 
			x: incrementAmount, 
			y: 0, 
			mode: 'relative', 
			duration: 0.4, 
			afterFinish: function() { that.activateButtons(); } });
		this.showButtons();
	};
};

Event.observe(window, 'load', function(){
  var count = $('photoScrollAreaBrowser').select("td:not([class=PhotoOff hidden])").length;
  var photoScroll = new PAGEOBJ.photoScroll("photoScrollAreaBrowser", count, 1).load();
});

