/**
 * @name Floating Banner Animations
 */
var banner = {
  containerID:      '#banner',
  pageID:           '#contentWrapper',
  startAnim:        true,
  topMargin:        15,
  leftMargin:       15,
  topPoz:           null,
  leftPoz:          null,
  endOffsetPoz:     null,
  animOffsetPoz:    null,
  animBeforeEnd:    50,
  lastScrollTopPoz: 0,
  obj:              null,
  page:             null,
  init:             function (){},
  animation:        function (){}
};

// Init events function
banner.init = function (docEvent){
  // init objects and animation functions
  banner.obj  = $(banner.containerID);
  banner.page = $(banner.pageID);
  banner.leftPoz = Math.round(banner.page.offset()['left'] + parseInt(banner.page.css('width'))) + banner.leftMargin;
  banner.topPoz  = Math.round(banner.page.offset()['top']) + banner.topMargin;
  var startStyles = {
    'top': (docEvent=='ready') ? ((banner.startAnim) ? '-' + parseInt(parseInt(banner.obj.css('height')) + banner.topMargin) + 'px' : banner.topPoz + 'px') : Math.round(banner.topPoz + $(document).scrollTop()),
    'left': banner.leftPoz + 'px',
    'display': 'block'
  };

  // init start pozition of the banner
  banner.obj.css(startStyles);
  if (banner.startAnim && docEvent=='ready'){
    banner.lastScrollTopPoz = parseInt(startStyles.top);
    banner.animation('slow');
  }
};

// Animation events function
banner.animation = function (speed){
  if (banner.lastScrollTopPoz == $(document).scrollTop()) return;

  // end position of the animation
  banner.endOffsetPoz = Math.round(banner.topPoz + $(document).scrollTop());

  // animation events
  if (banner.animBeforeEnd!=0){
    banner.animOffsetPoz = (banner.lastScrollTopPoz < $(document).scrollTop()) ? banner.endOffsetPoz + banner.animBeforeEnd : banner.endOffsetPoz - banner.animBeforeEnd;
    banner.lastScrollTopPoz = $(document).scrollTop();
    if (speed==undefined) var speed=200;

    banner.obj.stop(true, false).animate(
      {top: banner.animOffsetPoz + 'px'},
      {duration: speed, queue: false, easing: 'swing', complete: function (){
        $(this).animate({top: banner.endOffsetPoz + 'px'}, {duration: 'slow', queue: false, easing: 'swing'});
      }}
    );
  }else{
    if (speed==undefined) var speed=400;
    banner.obj.stop(true, false).animate({top: banner.endOffsetPoz + 'px'}, {duration: speed, queue: false, easing: 'swing'});
  }
};

$(document).ready(function (){
  if ($(banner.containerID).length<=0) return;
  // init banner object
  banner.init('ready');

  // add onresize event
  $(window).resize(function (){
    banner.init('resize');
  });

  // add scroll event
  $(window).scroll(function (){
    banner.animation();
  });
});

