/* 
 * feature page block js
 * 
 */
if( window.MooTools ){ //check for our friend MooTools
  var featuredPageBlockHorSlider = new Class({ //implements
    Implements: [Options],
    options: {//options
      container: $$('body')[0], //who's the daddy
      showAmount: 4, // show this many at a time
      advance: 4, // advance the slided by this many
      firstItem: 1,
      tips: false // load tips (not implemented yet)
    },
    initialize: function( options ) {//initialization
      this.setOptions( options );//set options
      
      var cont = this.options.container;
      cont.dems = cont.getSize();
      var wrapper = cont.getElement('.wrap');
      var items = wrapper.getElements('.item');
        items.dems = items.getSize();
        //items.newX = ( cont.dems.x - items[0].getStyle('padding-right').toInt() ) / this.options.showAmount;
        items.newX = ( cont.dems.x  / this.options.showAmount ).toInt();
      var scrollAmt = items.newX * this.options.advance;
//      console.log(scrollAmt);
      var adjustItems = function(el){
        el.setStyles({ 'width': ( items.newX - el.getStyle('margin-right').toInt() +1 ) }) }
      items.each(adjustItems);
      var emptItems = this.calculateEmptySpace(items.length.toInt(),wrapper);
      emptItems.each(adjustItems);
      

      var area = (items.length % this.options.advance) * (items.length-1);
      //console.log('Area: '+area);
//      console.log(items.length % this.options.advance);
      wrapper.setStyle('width', ( ( items.newX + items[0].getStyle('margin-right').toInt() ) * wrapper.getElements('.item').length )   );
      var controls = this.addControls(items);
      if(controls){
        var atEnd = this.options.firstItem + this.options.showAmount;
        var firstItem = this.options.firstItem;
        var lastItem = this.options.showAmount;
        var advanceAmt = this.options.advance;
        controls.inject(this.options.container);
        var slider = new Fx.Scroll( cont,{
          duration: 'long',
          'transition': Fx.Transitions.Sine.easeInOut,
          wheelStops: false,
          onComplete: function(){
            if( firstItem < 1 ){
              firstItem = 1;              
            }
            if( lastItem > items.length ){
              lastItem = items.length;
            }
            controls.displayText.getElement('.first-item').set('html', firstItem);
            controls.displayText.getElement('.total-shown-items').set('html', lastItem);
          }
        });
        var linkHandler = function(e){
        switch(e.target.get('title')){
          case 'next':
            var a = firstItem.toInt() + advanceAmt.toInt() - 1;
//             console.log('Items length: '+items.length+' First Item: '+firstItem+' Last Item: '+lastItem+' Advance amount: '+advanceAmt+' Area: '+area);
           if( a < items.length ){
              firstItem = ( firstItem.toInt() + advanceAmt.toInt() );
              lastItem = ( lastItem.toInt() + advanceAmt.toInt() );
//              console.log(cont.getScroll().x + scrollAmt);
              slider.start( ( cont.getScroll().x + scrollAmt ), 0 );              
            }
//              console.log('Items length: '+items.length+' First Item: '+firstItem+' Last Item: '+lastItem+' Advance amount: '+advanceAmt+' Area: '+area);
          break;
          case 'prev':
            var a = firstItem.toInt() - advanceAmt.toInt();
//            console.log('Items length: '+items.length+' First Item: '+firstItem+' Last Item: '+lastItem+' Advance amount: '+advanceAmt+' Area: '+area);
            if( a > 0 ){
              firstItem = ( firstItem.toInt()-advanceAmt.toInt() );
              lastItem = ( lastItem.toInt()-advanceAmt.toInt() );
              slider.start( ( cont.getScroll().x - scrollAmt ), 0 );
            }
//            console.log('Items length: '+items.length+' First Item: '+firstItem+' Last Item: '+lastItem+' Advance amount: '+advanceAmt+' Area: '+area);
          break;
          }
        }
        controls.nextLink.addEvent('click', linkHandler);
        controls.prevLink.addEvent('click', linkHandler);
      }

    },
    calculateEmptySpace: function(total,wrapper){
       var emptItems = 0;
       var tmpI = new Array();
      if( total > this.options.advance ){
        var c = total;
        while(  c % this.options.advance ){
          c++;
          tmpI.push(new Element('div',{ 'class': 'item' }));
          emptItems++;
//          console.log(emptItems + total);
        }
        tmpI.each(function(el){el.inject(wrapper)});
        return tmpI;
     }
    },
    addControls: function(items){
    if(items.length <= this.options.showAmount)
    return false;

    var linkHandler = function(e){
      if(!e.target.orgbgcolor){
        e.target.orgbgcolor = e.target.getStyle('background-color');
        e.target.orgbrcolor = e.target.getStyle('border-color').slice(0,7);
      }
      switch(e.type){
       case 'click':
          e.target.morph('.fp-controlsClick').pauseFx(500, 'morph').morph({
            'background-color': e.target.orgbgcolor,'border-color': e.target.orgbrcolor
          });
       break;
       case 'mouseover':
        e.target.morph('.fp-controlsOn');
       break;
       case 'mouseout':
        e.target.morph({'background-color': e.target.orgbgcolor,'border-color': e.target.orgbrcolor});
       break;
      }
    }
    var wrap = new Element('div',{ 'class': 'fp-controls' });
    wrap.displayText = new Element('span',{ 'class': 'fp-display-text',
      'html': '<span class="first-item">'+this.options.firstItem+'</span> to <span class="total-shown-items">'+this.options.showAmount+'</span> of <span class="total-items">'+items.length.toString()+'</span>'
    }).inject(wrap);
    wrap.prevLink = new Element('a',{'class':'prev', 'html': 'prev', 'title': 'prev',
          'events': { 'click': linkHandler, 'mouseenter': linkHandler, 'mouseleave': linkHandler },
          'morph': { 'duration': 'short', 'transition': Fx.Transitions.Sine.easeOut }
    }).inject(wrap);
    wrap.nextLink = new Element('a',{'class':'next', 'html': 'next', 'title': 'next',
          'events': { 'click': linkHandler, 'mouseenter': linkHandler, 'mouseleave': linkHandler },
          'morph': { 'duration': 'short', 'transition': Fx.Transitions.Sine.easeOut }
    }).inject(wrap);
    return wrap;      
    }
  });
}


