// JavaScript Document// update with valid playlist ID

// TREMORE MEDIA
function displayCompanionAds(banners) {
	document.getElementById("squared_ad").innerHTML = "";
	tmDisplayBanner(banners, "squared_ad", 300, 250);
}


 
var player = null;
var adModule;
var selectedItem = null;
var slider = null;
var contentHeight = 0;
var rowHeight =  60;
function onTemplateLoaded(pExperienceID) {
	if(pExperienceID == 'myExperience2') {
	    player = brightcove.getExperience(pExperienceID);
	    var experienceModule = player.getModule(APIModules.EXPERIENCE);
	    experienceModule.addEventListener(BCExperienceEvent.TEMPLATE_READY, onTemplateReady);
    }
};
function onTemplateReady(pEvent) {
    var experienceModule = player.getModule(APIModules.EXPERIENCE);
    experienceModule.removeEventListener(BCExperienceEvent.TEMPLATE_READY, onTemplateReady);
    var contentModule = player.getModule(APIModules.CONTENT);
    contentModule.addEventListener(BCContentEvent.PLAYLIST_LOAD, onPlaylistLoad);
    contentModule.getPlaylistAsynch(videoPlaylistSettings.playlist);
	adModule = player.getModule(APIModules.ADVERTISING);
	adModule.enableExternalAds(true);
	adModule.addEventListener(BCAdvertisingEvent.EXTERNAL_AD, onExternalAd);
	adModule.addEventListener(BCAdvertisingEvent.AD_COMPLETE, onAdComplete);
};

//<param name="playerID" value="<?php print $show_ad ? '11892230001' : '14709061001'; ?>" />

//////////////////
// COMPANION AD //
//////////////////

function onExternalAd(evt) {
	if( evt.ad.indexOf('<a')==-1 ) {
		var adXML = getXMLDoc(evt.ad);
		var videoAd = getVideoAd(adXML);
		var bannerAd = getCollapsedBanner(adXML);
		adModule.showAd(videoAd);
		var externalBanner = document.getElementById("video_companion_ad");
		 externalBanner.style.display = "block";
		var externalBannerHTML = "<a href='" + bannerAd.expandedBannerClickURL + "' target='_blank' ><img src='" + bannerAd.expandedBannerURL + "' /></a>";
	 	externalBanner.innerHTML = externalBannerHTML;
 	};
};
function getVideoAd(adXML){
	var videoAd = new Object();
	videoAd.type = "videoAd";
	var nodeItems = adXML.firstChild.childNodes.length;
	var currentNode = adXML.firstChild.firstChild;
	videoAd.duration = (adXML.firstChild.getAttribute("duration")) ? adXML.firstChild.getAttribute("duration") : 15;
	if(adXML.firstChild.getAttribute("trackStartURLs")) videoAd.trackStartURLs = adXML.firstChild.getAttribute("trackStartURLs").split(",");
	if(adXML.firstChild.getAttribute("trackMidURLs") ) videoAd.trackMidURLs = adXML.firstChild.getAttribute("trackMidURLs").split(",");
	if(adXML.firstChild.getAttribute("trackEndURLs") ) videoAd.trackEndURLs = adXML.firstChild.getAttribute("trackEndURLs").split(",");
	if(adXML.firstChild.getAttribute("trackPointURLs") ) videoAd.trackPointURLs = adXML.firstChild.getAttribute("trackPointURLs").split(",");
	videoAd.trackPointTime = (adXML.firstChild.getAttribute("trackPointTime") ) ? adXML.firstChild.getAttribute("trackPointTime") : 0;
	for(var i = 0; i < nodeItems; i++) {
		if(currentNode.nodeName == "videoURL" && currentNode.firstChild) videoAd.videoURL = currentNode.firstChild.nodeValue; 
		if(currentNode.nodeName == "videoClickURL" && currentNode.firstChild) videoAd.videoClickURL = currentNode.firstChild.nodeValue;			
		currentNode = currentNode.nextSibling;
	};
	return videoAd;
};
function getCollapsedBanner(adXML){
	var collapsedAd = new Object(); 
	var nodeItems = adXML.firstChild.childNodes.length;
	var currentNode = adXML.firstChild.firstChild;
	for(var i = 0; i < nodeItems; i++) {
		if(currentNode.nodeName == "expandedBannerURL" && currentNode.firstChild) collapsedAd.expandedBannerURL = currentNode.firstChild.nodeValue;
		if(currentNode.nodeName == "expandedBannerClickURL" && currentNode.firstChild) collapsedAd.expandedBannerClickURL = currentNode.firstChild.nodeValue;
		currentNode = currentNode.nextSibling;
	};
	return collapsedAd;
}	
function getXMLDoc(pXML){
	var adXML;
	if (window.ActiveXObject) {
		adXML = new ActiveXObject("Microsoft.XMLDOM");
		adXML.async = false;
		adXML.loadXML(pXML);
	} else if (window.XMLHttpRequest) {
		adXML = (new DOMParser()).parseFromString(pXML, "text/xml"); 
	};
	return adXML;		
};
function onAdComplete(evt) {
    var externalBanner = document.getElementById("video_companion_ad");	
    externalBanner.style.display = "none";	
	externalBanner.innerHTML ="";
};


///////////////////
// HTML PLAYLIST //
///////////////////
function onPlaylistLoad(pEvent) {
    var tileList = document.getElementById("video_thumb_list");
    var contentModule = player.getModule(APIModules.CONTENT);
    var videoIds = pEvent.playlist.videoIds.unique();
    var numVideos = videoIds.length;
    var video;
    contentHeight = 0;
    for (var i = 0; i < numVideos; i++) {
        var video = contentModule.getVideo(videoIds[i]);
        var tile = makeVideoTile(video);
        tileList.appendChild(tile);
        contentHeight += tile.offsetHeight;
        if (i == 0) {
           // selectItem(tile);
            cueVideo(video);
        }
    }
    contentHeight -= 412;
	if( videoPlaylistSettings.companionAd != undefined ) {
		adCompanionAd( videoPlaylistSettings.companionAd );
	};
};
function makeVideoTile(pVideo) {
    var tile = createElement("div");
    tile.className = "video_thumb_list_item";
	tile.onmouseover = function() {
		 if(this.style.backgroundPosition == "0px 0px") {
			this.style.backgroundPosition = "0px -75px";
			this.childNodes[1].firstChild.style.color = "#000";
			this.childNodes[1].childNodes[2].style.color = "#FFF";
		 };
	};
	tile.onmouseout = function() {
		  if(this != selectedItem) {
			 this.style.backgroundPosition = "0px 0px";
			 this.childNodes[1].firstChild.style.color = "#FFF";
			 this.childNodes[1].childNodes[2].style.color = "#F06";
		 };
	};
    var thumb = createElement("img");
    thumb.setAttribute("src", pVideo.thumbnailURL );
	thumb.setAttribute("width", "80");
	thumb.setAttribute("height", "60");
	thumb.className = "video_thumb_img";
    tile.appendChild(thumb);
    var text = createElement("div");
	text.className = "video_thumb_text";
	text.innerHTML = "<span class=\"video_thumb_title\" name=\"title\">"+pVideo.displayName+"</span>\n";
	text.innerHTML += "<span class=\"video_thumb_descr\" name=\"descr\">"+pVideo.shortDescription+"</span>";
    tile.appendChild(text);
    tile.onmousedown = function() {
		if( videoPlaylistSettings.clickOut != undefined ) {
			window.location = videoPlaylistSettings.clickOut+pVideo.id;
		} else {
			playVideo(this, pVideo);
		};
	};
    return tile;
};
function adCompanionAd( id ) {
	var tileListContainer = document.getElementById("video_thumb_list_container");
	var companionAd = createElement("div");
	companionAd.setAttribute("id",id);
    companionAd.className = id;
	tileListContainer.appendChild( companionAd );
};
function cueVideo(pVideo) {
    var videoPlayerModule = player.getModule(APIModules.VIDEO_PLAYER);
    videoPlayerModule.cueVideo(pVideo.id);
};
function playVideo(pVideoTile, pVideo) {
    var videoPlayerModule = player.getModule(APIModules.VIDEO_PLAYER);
    var currentVideo = videoPlayerModule.getCurrentVideo();
    if (currentVideo == null || pVideo.id != currentVideo.id) {
        selectItem(pVideoTile);
        videoPlayerModule.loadVideo(pVideo.id);
    };
};
function selectItem(pVideoTile) {
    if (selectedItem != null) {
        deselectItem(selectedItem);
    };
    pVideoTile.style.backgroundPosition = "0px -75px";
	pVideoTile.childNodes[1].firstChild.style.color = "#000";
	pVideoTile.childNodes[1].childNodes[2].style.color = "#FFF";
    selectedItem = pVideoTile;
};
function deselectItem(pVideoTile) {
    pVideoTile.style.backgroundPosition = "0px 0px";
	pVideoTile.childNodes[1].firstChild.style.color = "#FFF";
	pVideoTile.childNodes[1].childNodes[2].style.color = "#F06";
};
function createElement(pTag) {
    if (document.createElementNS) {
        return document.createElementNS('http://www.w3.org/1999/xhtml', pTag);
    };
    return document.createElement(pTag);
};

Array.prototype.unique = function () {
	var r = new Array();
	o:for(var i = 0, n = this.length; i < n; i++) {
		for(var x = 0, y = r.length; x < y; x++) {
			if(r[x]==this[i]) {
				continue o;
			};
		};
		r[r.length] = this[i];
	};
	return r;
};