(function(){
  "use strict";
  /* General RG ads namespace */
  var companionAd, doWhen, hasClass, log, extend;
  log = function(){
    try{
    if (typeof window.console !== 'undefined') {
      window.console.log.apply(window.console, arguments);
    }
    }catch(err){}
  };
  extend = function(a){
    var k, i, args = arguments, obj;
    for (i = 1; i < args.length; i++) {
      obj = args[i];
      for (k in obj) {
        if (obj.hasOwnProperty(k)) {
          a[k] = obj[k];
        }
      }
    }
    return a;
  };
  hasClass = function(el, name){
    var arr = el.className.split(' '), i;
    for (i=0; i<arr.length; i++) {
      if (name === arr[i]) {
        return true;
      }
    }
    return false;
  };

  /* doWhen */
  (function(){
    var defaults = {
        interval: 100
      },
      tick = function(iVars){
        if (iVars.test()) {
          clearInterval(iVars.iid);
          iVars.cb.call(iVars.context || window, iVars.data);
        }
      },
      start = function(iVars){
        iVars.iid = setInterval(function(){
          tick(iVars);
        }, iVars.interval);
      };
    doWhen = function(test, cb, cfg){
      start(extend({
        test: test,
        cb: cb
      }, defaults, cfg));
    };
  }());
  /* END doWhen */


  /* autohide/show */
  (function(){
    var noTrans = false,
      hasCompanionAd = function(){
        if (!companionAd) {
          companionAd = document.getElementById('adaptvcompanion');
          if (companionAd) {
            if (companionAd.className.indexOf('RGhideUntilReady') !== -1) {
              extend(companionAd.style, {
                height: '0',
                overflow: 'hidden',
                mozTransitionProperty: "height",
                webkitTransitionProperty: "height",
                oTransitionProperty: "height",
                transitionProperty: "height",
                mozTransitionDuration: "0.15s",
                webkitTransitionDuration: "0.15s",
                oTransitionDuration: "0.15s",
                transitionDuration: "0.15s",
                mozTransitionTimingFunction: "ease-in",
                webkitTransitionTimingFunction: "ease-in",
                oTransitionTimingFunction: "ease-in",
                transitionTimingFunction: "ease-in"
              });
            } else {
              noTrans = true;
              return true;
            }
          }
        }
        return companionAd && companionAd.innerHTML;
      };
    doWhen(hasCompanionAd, function(){
      companionAd.style.height = '250px';
    });
  }());
  /* END autohide/show */


  /* Google VAST ads */
  window.googletag = window.googletag || {};
  (function(googletag){
    var gads = document.createElement('script'), node;
    doWhen(function(){
      node = document.getElementsByTagName('head')[0].firstChild;
      return !!node;
    }, function(){
      googletag.cmd = googletag.cmd || [];
      // Load the library, asynchronously.
      gads.async = true;
      gads.type = 'text/javascript';
      gads.src = 'http://www.googletagservices.com/tag/js/gpt.js';
      node.parentNode.insertBefore(gads, node);
      // Add a command to the command queue
      googletag.cmd.push(function(){
        var adSlot1, adSlot2, caid = 'adaptvcompanion';
        // Use googletag.defineUnit() to create ad slots.
        // Specify size and div id to identify the ad placement.
        // Attach the slot to the companion ads service.
        adSlot1 = googletag.defineUnit(
          '/%network%/%unit-path%',
          [728, 90],
      'CompanionAdHeader');
        adSlot1.addService(googletag.companionAds());
        adSlot2 = googletag.defineUnit(
          '/%network%/%unit-path%',
          [300, 250],
          caid);
        adSlot2.addService(googletag.companionAds());
        googletag.cmd.push(function(){
          googletag.display(caid);
        });
  
        // Enable the companion ads service.
        googletag.pubads().enableAsyncRendering();
        googletag.companionAds().setRefreshUnfilledSlots(true);
        googletag.enableServices();
      });
    });
  }(window.googletag));
  /* END google VAST ads */

/* LiveRail ads */

(function() {
	doWhen(function() {
		return !!document.getElementById('adaptvcompanion');
	}, function() {
		document.getElementById('adaptvcompanion').innerHTML += '<div id="lr_comp_default_300x250" style="width: 300px; height: 250px;"></div>' +
		  '<div id="lr_comp_300x250" style=" width: 300px; height: 250px; display: none;"></div>';
	});
 })();

	

(function(){
  var f_cb_medrect1_served,
    f_need_cb,
    makeFrame = function(){
      if (!companionAd.innerHTML) {
        companionAd.innerHTML = '<iframe width="300" height="250" ' +
          'frameborder="0" scrolling="no" allowtransparency="true" ' +
          'topmargin="0" marginwidth="0" marginheight="0" ' +
          'id="cb_medrect1_frame" name="cb_medrect1_frame"></iframe>';
      }
      return companionAd.firstChild;
    },
    yume_backfill_banner = function(){},
    yume_serve_cb_image = function(cfg) {
      var rc = false,
        frame, html;
      try {
        frame = makeFrame();
        if (cfg.type === 'application/x-shockwave-flash') {
          cfg.link = encodeURIComponent(cfg.link);
          html = ('<object ' +
              'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ' + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="300" height="250">' +
                '<param name="movie" value="{{src}}?clickTAG={{link}}">' +
                '<param name="allowScriptAccess" value="always">' +
                '<param name="wmode" value="transparent">' +
                '<param name="quality" value="high">' +
                '<embed '+
                  'src="{{src}}?clickTAG={{link}}" bgcolor="#E3F0EB" quality="high" wmode="transparent" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300px" height="250px">' +
            '</object>')
            .replace(/\{\{src\}\}/g, cfg.src)
            .replace(/\{\{link\}\}/g, cfg.link);
          frame.contentWindow.document
            .getElementsByTagName("body")[0].innerHTML = html;
        } else {
          frame.contentWindow.document
                .getElementsByTagName("body")[0].innerHTML =
            "<a href='" + cfg.link + "' target='_blank'><img src='" +
              cfg.src + "' border='0' width='300' height='250'></a>";
        }
        rc = true;
      } catch(e) {}
      return rc;
    },
    yume_serve_cb_frame = function(frame_src_url){
      var rc = false,
        frame;
      try {
        frame = makeFrame();
        frame.src = frame_src_url;
        rc = true;
      } catch(e) {}
      return rc;
    };

    window.yume_flash_callback = function(command, arg1, arg2, arg3, arg4,arg5){
      if (command === "yume_postroll_end") {
        /*
        document.getElementById("flvPlayerDiv").innerHTML = "<a href='JavaScript:void(0);' onclick='playContent();'><img border='0' height='351' src='/sites/default/files/replay.png' width='432' /></a>";
        */
        return 0;
      } else if (command === 'companionbanner/iframe') {
        if (arg3 === "cb1" || arg3 === "cb_medrect1") {
          if (yume_serve_cb_frame(arg1)) {
            f_cb_medrect1_served = true;
          }
        }
      } else if (command === 'companionbanner/image') {
        if (arg3 === "cb1" || arg3 === "cb_medrect1") {
          if (yume_serve_cb_image({
            src: arg1,
            link: arg2,
            type: arg5
          })) {
            f_cb_medrect1_served = true;
          }
        }
      } else if (  command === "yume_preroll_start" ||
                   command === "yume_postroll_start" ||
                   command === "yume_midroll_start") {
        f_need_cb = true;
      } else if ( command === "yume_preroll_end" ||
                  command === "yume_postroll_end" ||
                  command === "yume_midroll_end") {
        f_need_cb = false;
      } else if (command === "yume_ad_end") {
        f_cb_medrect1_served = false;
      } else if (
          (command === "yume_ad_start" && f_need_cb === true) ||
          (command === "yume_end" && String(arg1) === "0" && f_need_cb === true)
          ){
        if (f_cb_medrect1_served === false) {
          if (yume_backfill_banner("ads", "cb_medrect1_frame", "medrect") > 0) {
            //don't know wtf this is for
            f_cb_medrect1_served = true;
          }
        }
      }
    };
  }());


  (function(){
    var tads = document.createElement('script');
    tads.async = true;
    tads.type = 'text/javascript';
    tads.src = 'http://objects.tremormedia.com/embed/js/banners.js';
    document.getElementsByTagName('head')[0].appendChild(tads);
    window.displayCompanionBanners = function(banners, tracking){
      tmDisplayBanner(banners, "adaptvcompanion", 300, 250, null, tracking);
      tmDisplayBanner(banners, "CompanionAdHeader", 728, 90, null, tracking);
    };
  }());


  //companion over playlist
  (function(){
    // Events for companion/player interaction and layout
    var playerID, pElem, cElem, companionElement = "adaptvcompanion",
      postionCompanionOverPlaylist, registerCompanionPresentEvent,
      registerAdCompletedEvent, unregisterCompanionPresentEvent,
      unregisterAdCompletedEvent, showCompanion, hideCompanion;

    doWhen(function(){
      cElem = document.getElementById(companionElement);
      return !!cElem;
    }, function(){
      if (hasClass(cElem, 'coverPlaylist')) {
        cElem.style.display = "none";
      }
    });
    
    // NOTE: This assumes that the companion will always be width:300px by height:250px
    // The player's playlist must be a minimum of 300px wide by 250px high or the companion
    // will be cropped.
    
    postionCompanionOverPlaylist = function(){
      var playerPlaylistProperties = pElem.pluginConfig('playlist'),
        style = cElem.style;
      style.position = "absolute";
      style.cssFloat = "none";
      style.display = "inline";
      style.overflow = "hidden";
      style.backgroundColor = "transparent";
      style.zIndex = 6;
      style.marginLeft = "0px";
      style.textAlign = "left";
      style.width = (playerPlaylistProperties.width) + 'px';
      style.height = (playerPlaylistProperties.height) + 'px';
      log('left', pElem.offsetLeft, playerPlaylistProperties.x);
      style.left = (pElem.offsetLeft + playerPlaylistProperties.x) + 'px';
      log('top', pElem.offsetTop, playerPlaylistProperties.y);
      style.top = (pElem.offsetTop + playerPlaylistProperties.y) + 'px';
      if (playerPlaylistProperties.width > 300) {
        style.paddingLeft = ((playerPlaylistProperties.width / 2) - 150) + 'px';;
      } else {
        style.paddingLeft = '0px';
      }
      if (playerPlaylistProperties.height > 250) {
        style.paddingTop = ((playerPlaylistProperties.height / 2) - 125) + 'px';
      } else {
        style.paddingTop = '0px';
      }
      style.display = 'block';
    };
    
    window.companionPresentHandler = function(){
      showCompanion();
      unregisterCompanionPresentEvent();
      registerAdCompletedEvent();
    };
    
    window.adCompletedHandler = function(){
      hideCompanion();
      unregisterAdCompletedEvent();
      registerCompanionPresentEvent();
    };
    
    registerCompanionPresentEvent = function() {
      pElem.registerEvent('adPresent', 'companionPresentHandler');
    };
    
    registerAdCompletedEvent = function() {
      pElem.registerEvent('adCompleted', 'adCompletedHandler');
    };
    
    unregisterCompanionPresentEvent = function() {
      pElem.unRegisterEvent('adPresent', 'companionPresentHandler');
    };
    
    unregisterAdCompletedEvent = function() {
      pElem.unRegisterEvent('adCompleted', 'adCompletedHandler');
    };
    
    showCompanion = function() {
      postionCompanionOverPlaylist();
      cElem.style.visibility = 'visible';
    };
    
    hideCompanion = function() {
      cElem.style.visibility = 'hidden';
    };
    window.playerReady = function(player) {
      cElem = document.getElementById(companionElement);
      if (cElem && hasClass(cElem, 'coverPlaylist')) {
        playerID = player.id;
        pElem = document.getElementById(playerID);
        registerCompanionPresentEvent();
      }
    };
  }());
  
}());

