/**
 * ViewCollectionScroller
 */
var ViewCollectionScroller = Class.create({
  /**
   * Init ViewCollectionScroller
   */	
  initialize: function() {
	this.options = Object.extend({
	  elemContent : null
	}, arguments[0] || { });		

	ViewCollectionScroller.ITEM_WIDTH = 446;	

    this.elemContentTitle = this.options.elemContent.down('.contenttitle');
    this.contentTitleFade = new EggFade({elemContent:this.elemContentTitle});
    
	this.arrItems = new Array();
	
    var elemItems = this.options.elemContent.select('.item');
    var elemTitleItems = this.options.elemContent.select('.titleitem');
    var item;
    
    this.options.elemContent.down('.items').style.width = ViewCollectionScroller.ITEM_WIDTH + "px";
    
    var nDiv = Math.round(elemItems.length / 2) - 1;
	this.nCurrItem = 0;
	// mla 09.10.11 - removed to no longer have items to the left 
//	this.nCurrItem = nDiv;    
//    var nX = -(nDiv * ViewCollectionScroller.ITEM_WIDTH);
    var nX = nDiv;
    
    var bActive;
    for (var nItem = 0; nItem < elemItems.length; nItem++) {
      bActive = false;
      if (nItem == this.nCurrItem) {
     	bActive = true;
      }
      item = new ViewCollectionScrollItem({elemContent:elemItems[nItem], elemTitleContent:elemTitleItems[nItem], nPos:nItem, nX:nX, bActive:bActive});
      elemItems[nItem].observe('item:click', this.itemClick.bind(this));	  
      nX += ViewCollectionScroller.ITEM_WIDTH;
      
      this.arrItems.push(item);
    }		   

    // do we want to highlight an item?
    if (this.options.nHighlightID) {
      // find it
   	  for (var nItem = 0; nItem < this.arrItems.length; nItem++) {
    	if (this.arrItems[nItem].getID() == this.options.nHighlightID) {
    	  break;
    	}
      }
      // goto item
      this.gotoItem(nItem);
    }
  },

  getCurrItem: function() {
	return this.nCurrItem;
  },
  
  show: function() {
	this.contentTitleFade.show();
    for (var nItem = 0; nItem < this.arrItems.length; nItem++) {
      this.arrItems[nItem].show();
    }	
  },

  hide: function() {
	this.contentTitleFade.hide();
    for (var nItem = 0; nItem < this.arrItems.length; nItem++) {
      this.arrItems[nItem].hide();
    }	
  },

  gotoItem: function(nGotoItem) {
	this.nCurrItem = nGotoItem;
	
	var item;
    for (var nItem = 0; nItem < this.arrItems.length; nItem++) {
      item = this.arrItems[nItem];      
      if (nItem == this.nCurrItem) {
    	item.moveNow(nGotoItem, true);
      }
      else {
    	item.moveNow(nGotoItem, false);  
      }
    }
	
  },
  
  showPrevious: function(nMove) {
	if (this.nCurrItem == 0) {
	  return;
	}  
	 
	if (nMove == undefined) {
	  nMove = 1;
	}
	this.nCurrItem -= nMove;
  
	var item;
    for (var nItem = 0; nItem < this.arrItems.length; nItem++) {
      item = this.arrItems[nItem];      
      if (nItem == this.nCurrItem) {
    	item.moveRight(nMove, true);
      }
      else {
    	item.moveRight(nMove, false);  
      }
    }
  },
  
  showNext: function(nMove) {
	if (this.nCurrItem == this.arrItems.length-1) {
	  return;
	}  
	  
	if (nMove == undefined) {
	  nMove = 1;
	}
	this.nCurrItem += nMove;
	  
	var item;
    for (var nItem = 0; nItem < this.arrItems.length; nItem++) {
      item = this.arrItems[nItem];
      if (nItem == this.nCurrItem) {
    	item.moveLeft(nMove, true);
      }
      else {
    	item.moveLeft(nMove, false);  
      }      
    }	  
  },
   
  itemClick: function(evt) {
	var nMoves = 0;
	if (evt.memo.nPos > this.nCurrItem) {
	  nMoves = evt.memo.nPos - this.nCurrItem;
	  this.showNext(nMoves);
	}
	else {
	  nMoves = this.nCurrItem - evt.memo.nPos;
	  this.showPrevious(nMoves);
	}
	if (evt.memo.bActive) {
      // fire event
	  this.options.elemContent.fire("scroller:clickactive");		
	}
  }  
  
});
