var LogoPartner = Class.create();
LogoPartner.prototype = {
  logos   : [],
  effects : [],
  timer   : null,

  initialize: function() {
    var logos_container = $('partners-logos');
    if (logos_container) {
      $$('ul#partners-logos li').each(function(item){
        this.logos.push(item);
      }.bind(this));
      cumulativeOffset = 0;

      this.logos.each(function(logo) {
        logo.style.position = 'absolute';
        logo.style.top = '0px';
        logo.style.left = cumulativeOffset + 'px';
        cumulativeOffset += logo.getWidth();
      });

      setInterval(this.moveLogos.bind(this), 2000);

      this.moveLogos();

    }

  },

  moveLogos: function() {
    this.logos.each(function(logo) {
      this.effects.push(new Effect.Move(logo, { x: -60, sync: true}));
    }.bind(this));

    new Effect.Parallel(this.effects, {
      duration: 1.8,
      afterFinish: function() {
        visibleStartIdx = -1;
        for(i=0; i < this.logos.length; i++) {
          if (!this.isLogoLeftHidden(this.logos[i])) {
            visibleStartIdx = i;
            break;
          }
        }
        //console.log('visibleStartIdx ' + visibleStartIdx);
        if (visibleStartIdx > 0) {
          hiddenItems = this.logos.splice(0, visibleStartIdx);
          //console.log('hiddenItems: ' + hiddenItems);
          var cumulativeOffset = 0;
          if (lastItem = this.logos.last()) {
            cumulativeOffset = lastItem.getWidth() + parseFloat(lastItem.getStyle('left'));
          }
          hiddenItems.each(function(logo) {
            logo.style.left = cumulativeOffset + 'px';
            cumulativeOffset += logo.getWidth();
          });
          this.logos = this.logos.concat(hiddenItems);
        }
      }.bind(this)

    });
  },

  isLogoLeftHidden: function(item) {
    //console.log('isLogoLeftHidden: ' + item.id + ' ' + (item.getWidth() + parseFloat(item.getStyle('left'))));
    return (item.getWidth() + parseFloat(item.getStyle('left')) <= 0);
  }
}
var myLogoPartner = null;
function initLogoPartner() { myLogoPartner = new LogoPartner(); }
Event.observe(window, 'load', initLogoPartner, false);

