var itwsnkLoaded = typeof(itwsnk) != 'undefined';
var itwsnk = itwsnk || {
  domLoaded : function() {},
  documentReady : function() {
    this.loadCSS();
    itwsnkLightbox = new itwsnk.Lightbox();
    itwsnkLightbox.init();
    if (typeof window.postMessage == 'function' && window.addEventListener) {
      window.addEventListener('message', itwsnk.receiveMessage, false);
    }
    else {
      setInterval(function() {
        var url = location.href;
        var pos = url.indexOf('#box');
        if (pos != -1) {
          itwsnk.receiveMessage({data: url.substring(pos + 1)});
          location.href = url.substring(0, pos) + '#done';
          //history.back();
        }
      }, 66);
    }
    // initial open video?
    var q = location.search;
    if (q && q.length > 0) {
      var params = q.substring(1).split('&');
      for (var i = 0; i < params.length; i++) {
        if (params[i].length > 0) {
          var idx = params[i].indexOf('=');
          if (idx != -1) {
            var n = params[i].substring(0, idx);
            if (n == 'itwboxvid') {
              itwsnkLightbox.box(decodeURIComponent(params[i].substring(idx + 1)));
            }
          }
        }
      }
    }
  },
  receiveMessage : function(event) {
    var msg = event.data;
    if (msg.substring(0,3) == 'box') {  
      if (msg == 'boxun') {
        if (itwsnkLightbox) {
          itwsnkLightbox.close();
        }
      }
      else if (msg.substring(0,7) == 'boxload') {
        if (itwsnkLightbox) {
          itwsnkLightbox.setSize(parseInt(msg.substring(7)));
        }
      }
      else {
        var url = decodeURIComponent(msg.substring(3));
        if (itwsnkLightbox) { // are we in the lightbox? stay. there.
          itwsnkLightbox.box(url);
        }
      }
    }
  },
  loadCSS : function() {
    var d = document;
    var s = '#lightBck {' +
      'display: none;' +
      'position: fixed; left: 0; top: 0;' +
      'width: 100%; height: 100%;' +
      'background-color: #000000;' +
      'opacity: 0.7; filter: alpha(opacity=70);' +
      'z-index: 9999999;' +
      '}' +
      '#lightBox {' +
      'display: none;' +
      'position: absolute; left: 50%; top: 30px;' +
      'width: 972px;' +
      'margin: 0 0 0 -486px;' +
      'z-index: 10000000;' +
      '-moz-box-shadow: 2px 2px 5px #1e1e1e; -webkit-box-shadow: 2px 2px 5px #1e1e1e; box-shadow: 2px 2px 5px #1e1e1e;' +
      '}' +  
      '#ifBox {' +
      'width: 100%; height: 100%;' +
      'background: #4c4c4c url(http://player.snacktv.de/pub/pic/loading.gif) no-repeat center;' +
      'border: 0;' +
      '}';
    var eStyle = d.createElement('style');
    eStyle.type = 'text/css';
    if (eStyle.styleSheet) {// IE
      eStyle.styleSheet.cssText = s;
    }
    else {// w3c
      eStyle.appendChild(d.createTextNode(s));
    }    
    d.getElementsByTagName('head')[0].appendChild(eStyle);
  },
  
  //Lightbox
  Lightbox : function() {
    this.eLightBck = null;
    this.eLightBox = null;
    this.eIframe = null;
    this.isOpen = false;
  }
}

itwsnk.Lightbox.prototype = {
  init : function() {
    var T = this;
    this.eLightBck = this.createElement('div', {id:'lightBck'});
    this.eLightBox = this.createElement('div', {id:'lightBox'});
    document.getElementsByTagName('body')[0].appendChild(this.eLightBck);
    document.getElementsByTagName('body')[0].appendChild(this.eLightBox);
    if (document.addEventListener) {
      this.eLightBck.addEventListener('click', function(e){T.handleBckClick(T, e);}, false);
      window.addEventListener('resize', function(e){T.handleWinResize(T, e);}, false);
      document.addEventListener('keydown', function(e){T.handleDocKeydown(T, e);}, false);
    }
    else if (document.attachEvent){
      this.eLightBck.attachEvent('onclick', function(e){T.handleBckClick(T, e);});
      window.attachEvent('onresize', function(e){T.handleWinResize(T, e);});
      document.attachEvent('onkeydown', function(e){T.handleDocKeydown(T, e);});
    }
  },
  handleBckClick : function(T, e) {
    if (e.preventDefault) e.preventDefault();
    e.cancelBubble = true;
    e.returnValue = false;
    T.close();
  },
  handleWinResize : function(T, e) {
    //T.setSize();
  },
  handleDocKeydown : function(T, e) {
    var target = e.target || e.srcElement;
    var tag = target.tagName;
    if (tag == 'INPUT' || tag == 'TEXTAREA') {
      return;
    }
    var keyCode = e.keyCode;
    if (T.isOpen) {
      if (keyCode == '27') {
        if (e.preventDefault) e.preventDefault();
        e.cancelBubble = true;
        e.returnValue = false;
        T.close();
      }
    }
  },
  adhack : function (on) {
    try {
      var lists = [
             document.getElementsByTagName('object'), 
             document.getElementsByTagName('embed'), 
             document.getElementsByTagName('iframe')
        ];
      for (var i = 0; i < lists.length; i++) {
        var list = lists[i];
        for (var j = 0; j < list.length; j++) {
          try {
            var el = list[j];
            if (on) {
              el.itwvisibility = el.style.visibility || 'visible';
              el.style.visibility = 'hidden';
            }
            else {
              el.style.visibility = el.itwvisibility;
            }
          }
          catch(e){}
        }
      }
    }
    catch(e){}
  },
  open : function(url) {
    this.adhack(true);
    this.setSize(true);
    this.isOpen = true;
    this.eLightBox.innerHTML = '<iframe id="ifBox" scrolling="no" frameborder="0" src="' + url + '"><\/iframe>';
    this.eIframe = document.getElementById('ifBox');
    this.eLightBck.style.display = 'block';
    this.eLightBox.style.display = 'block';
  },
  close : function() {
    this.adhack(false);
    this.isOpen = false;
    this.eLightBck.style.display = 'none';
    this.eLightBox.style.display = 'none';
    this.eIframe = null;
    this.eLightBox.innerHTML = '';
  },
  box : function(url) {
    if (this.isOpen) {
      this.eIframe.src = url;
    }
    else {
      this.open(url);
    }
  },
  setSize : function(h) {
    if (this.isOpen) {
      var w = window;
      var d = document;
      var de = d.documentElement;
      this.scrollTop();
      if (h) {
        if (h === true) {
          var winH = w.innerHeight || d.clientHeight || de.clientHeight;
          h = Math.min(winH - 60, '861');
        }
        try { // because of ie
          this.eLightBox.style.height = h+'px';
          this.eLightBox.style.bottom = 'auto';
        }
        catch (ex) {
        }
      }
    }
  },
  scrollTop : function() {
    var d = document;
    var de = d.documentElement;
    var ypos = d.body.scrollTop || de.scrollTop;
    window.scrollBy(0, -ypos);
  },
  createElement : function(name, atts) {
    var e = document.createElement(name);
    for (var key in atts) {
      e[key] = atts[key];
    }
    return e;
  }
}

var itwsnkLightbox = null;

if (!itwsnkLoaded) {
  if (document.addEventListener) {
    itwsnk.domLoaded = function(){
      document.removeEventListener('DOMContentLoaded', itwsnk.domLoaded, false);
      itwsnk.documentReady();
    }  
    document.addEventListener('DOMContentLoaded', itwsnk.domLoaded, false);
  }
  else if (document.attachEvent){
    itwsnk.domLoaded = function() {
      if (document.readyState === 'complete') {
        document.detachEvent('onreadystatechange', itwsnk.domLoaded );
        itwsnk.documentReady();
      }
    }
    document.attachEvent('onreadystatechange', itwsnk.domLoaded);
  }
}
