window.addEvent('domready', function(){

  // element flasher
  Element.implement({
    flashId: null,
    flashStart: function(to, from, dur, reps, prop) {
      if(!reps) { reps = 0; }
      if(!prop) { prop = 'opacity'; }
      if(!dur) { dur = 250; }
      //create effect
      var effect = new Fx.Tween(this, {
        duration: dur,
        link: 'chain'
      })
      if (reps > 0) {
        for(x = 1; x <= reps; x++){
          effect.start(prop, from, to).start(prop, to, from);
        }
      } else {
        flashId = (function(){
          effect.start(prop, from, to).start(prop, to, from)
        }).periodical(dur*2, this);
      }
      return this;
    },
    flashStop: function(){
      // stops infinite flashing
      if (flashId) { $clear(flashId); }
      return this;
    }
  });

  // element autoscroll
  Element.implement({
    asTimerId: null,
    flashStart: function(to, from, dur, reps, prop) {
      if(!reps) { reps = 0; }
      if(!prop) { prop = 'opacity'; }
      if(!dur) { dur = 250; }
      //create effect
      var effect = new Fx.Tween(this, {
        duration: dur,
        link: 'chain'
      })
      if (reps > 0) {
        for(x = 1; x <= reps; x++){
          effect.start(prop, from, to).start(prop, to, from);
        }
      } else {
        flashId = (function(){
          effect.start(prop, from, to).start(prop, to, from)
        }).periodical(dur*2, this);
      }
    },
    flashStop: function(){
      // stops infinite flashing
      if (flashId) { $clear(flashId); }
    }
  });

  // anim function
  var mouseIntroBorderAnim = function(triggerObjs, animObj1, animObj2, startValue1, endValue1, endValue2) {
    if (triggerObjs && animObj1 && animObj2) {
      triggerObjs.each(function(triggerObj){
        triggerObj.addEvents({
          'mouseenter': function(e){
            e.stop();
            animObj1.set('tween', {duration: 250, transition: Fx.Transitions.Sine.easeOut});
            animObj1.tween('width', endValue1);
            animObj2.set('tween', {duration: 250, transition: Fx.Transitions.Sine.easeOut});
            animObj2.tween('padding-left', endValue2);
          },
          'mouseleave': function(e){
            e.stop();
            animObj1.tween('width', startValue1);
            animObj2.tween('padding-left', 0);
          }
        });
      }, this);
    }
  }

  // init anim
  mouseIntroBorderAnim($$('.clientAnim'), $('clientBorder'), $('imgClientEnterArrow'), 3, 10, 30);
  mouseIntroBorderAnim($$('.partnerAnim'), $('partnerBorder'), $('imgPartnerEnterArrow'), 3, 10, 30);


  // banner mover and scroller
  if ($('contentBannerContainer')) {

    // mover
    var bannerMover = new Fx.Move($('contentBannerContainer'), {
      relativeTo: $('partnerEnter'),
      position: 'bottomLeft',
      offset: {x: 0, y: -167},
      duration: 700,
      transition: 'bounce:out'
    });
    bannerMover.start.delay(2000, bannerMover);

    // scroller
    var bannerAutoscrollDelay = 2000;
    var bannerAutoscrollDuration = 4000;
    var bannerAutoscrollBreak = 2000;

    var bannerAutoscroll = new Fx.Scroll('contentBannerContainer', {
    	wait: false,
    	duration: bannerAutoscrollDuration,
    	onComplete: function(){
        bannerAutoscrollMoveDir();
        $('contentBannerContainer').flashStart(0.8, 1, 80, 5);
      }
    });

    var moveDir = false;
    var bannerAutoscrollMoveDir = function(){
      var parentH = $('contentBannerContainer').getSize().y;
      var childH = $('contentBanner').getSize().y;
      var y = (childH > parentH) ? childH-parentH : 0;
      if (y > 0) {
        if (moveDir) {
          bannerAutoscroll.toTop.delay(bannerAutoscrollBreak, bannerAutoscroll);
        } else {
            bannerAutoscroll.start.delay(bannerAutoscrollBreak, bannerAutoscroll, [0, y]);
        }
        moveDir = !moveDir;
      }
    }.bind(this);

    bannerAutoscroll.set(0, 0);
    bannerAutoscrollMoveDir.delay(bannerAutoscrollDelay, bannerAutoscroll);

    // flashing banner opacity
    $('contentBannerContainer').addEvent('mouseenter', function(){
      $('contentBannerContainer').flashStart(0.8, 1, 40, 0);
    });
    $('contentBannerContainer').addEvent('mouseleave', function(){
      $('contentBannerContainer').flashStop();
    });

  }

});


