// JavaScript Document

var adFloat = {

  init: function () {
    adFloat.IE = document.attachEvent && !window.opera;
    adFloat.topDivFix = 5;
    adFloat.div = adFloat._getElem('adScrolling');
    adFloat.pageBody = adFloat._getElem('pagewidth');
    adFloat.divInitialPosition = null;
    adFloat.divInitial = adFloat._getElem('adScrollStart');
    adFloat.onPosition = false;
    adFloat.limiter = null;
    adFloat.limiterPositon = null;
    adFloat.timer = null;
    adFloat.divParent = null;
    adFloat.checkInterval = window.setInterval(adFloat._verifyDOMPosition, 100);
    adFloat._hideBanner();
    adFloat.checkWin = window.setInterval(adFloat._verifyWinSize, 100);    
  },

  _getPosition: function (node) {
    var offset = 0;
    while (node) {
      offset += node.offsetTop;
      node = node.offsetParent;
    }
    return offset;
  },
  
  _verifyDOMPosition: function () {
    var p = adFloat.div;
    
    while (p.parentNode) {
      if (typeof p.parentNode.id != 'undefined') {
        adFloat.onPosition = true;
        adFloat.divParent = p.parentNode;
        adFloat._startScroll();
        break;
      }
      p = p.parentNode;
    }
  },
  
  _verifyWinSize: function () {
    window.clearInterval(adFloat.checkWin);
    adFloat._addListener(window, 'resize', adFloat._hideBanner, true);
  },

  _startScroll: function () {
    adFloat.divParent.style.paddingTop = '0';
    adFloat.divParent.style.backgroundImage = 'none';
    window.clearInterval(adFloat.checkInterval);
    adFloat._addListener(window, 'scroll', adFloat._scrollDecelerate, false);
    adFloat.timer = window.setInterval(adFloat._scroll, 10);
  },

  _scrollDecelerate: function () {
    if (adFloat.timer != null) {
      window.clearTimeout(adFloat.timer);
    }
    adFloat._scroll();
  },
  
  _hideBanner: function () {
    if (adFloat._winW() <= '1260') {
      adFloat.pageBody.style.marginLeft = '0px';
      adFloat.pageBody.style.left = '15px';
      adFloat.div.style.visibility = 'visible';     
      if (adFloat._winW() <= '1140') {
        adFloat.div.style.visibility = 'hidden';
      }
    } else {
      adFloat.pageBody.style.marginLeft = '-500px';
      adFloat.pageBody.style.left = '50%';
      adFloat.div.style.visibility = 'visible';
    }
  },
      
  _scroll: function () {
    adFloat.limiter = adFloat._getElem('adScrollStop') || null;
    adFloat.divHeight = adFloat.div.offsetHeight;
    adFloat.divPosition = adFloat._getPosition(adFloat.divInitial);
    if (adFloat.divInitialPosition == null || adFloat.divInitialPosition != adFloat.divPosition) {
      adFloat.divInitialPosition = adFloat.divPosition;
    }
    
    if (document.documentElement && document.documentElement.scrollTop) {
      var pos = document.documentElement.scrollTop;
    } else if (document.body) {
        var pos = document.body.scrollTop;
    }
      
    if (adFloat.limiter) {
      adFloat.limiterPosition = adFloat._getPosition(adFloat.limiter);
    }
    
    if (pos > adFloat.divInitialPosition) {
    
      if (adFloat.limiter && ((pos + adFloat.divHeight) >= adFloat.limiterPosition)) {
        adFloat.div.style.position = 'absolute';
        adFloat.div.style.top = (adFloat.limiterPosition - adFloat.divInitialPosition - adFloat.divHeight) + 'px';
      } else {
          if (adFloat.IE) {
            adFloat.div.style.top = (pos - adFloat.divInitialPosition + adFloat.topDivFix) + 'px';
          } else {
            adFloat.div.style.top = adFloat.topDivFix + 'px';
            adFloat.div.style.position = 'fixed';
          }
      }
    } else {
      adFloat.div.style.top = 'auto';
      if (!adFloat.IE) {
        adFloat.div.style.position = 'absolute';
      }
    }
  },

  _addListener: function (elm, eventType, fn, set) {
    if (document.addEventListener) {
      if (window.opera && (elm == window)) {
        elm = document;
      }
      elm.addEventListener(eventType, fn, set);
    } else if (document.attachEvent) {
        elm.attachEvent('on'+eventType, fn);
    }
  },
  
  _getElem: function (id) {
    return document.getElementById(id);
  },
  
  _winW: function () {
    if (window.innerWidth) {
      /* NN4 a kompatibilní prohlížeče */
      return window.innerWidth;
    } else if (document.documentElement && document.documentElement.clientWidth) {
      /* MSIE6 v std. režimu - Opera a Mozilla
      již uspěly s window.innerHeight */
      return document.documentElement.clientWidth;
    } else if (document.body && document.body.clientWidth) {
      /* starší MSIE + MSIE6 v quirk režimu */
      return document.body.clientWidth;
    } else return null;
  }
}

adFloat.init();
