// brightcove.js
// Version 0.2
//
// This file is included in the video page and includes generic event handlers for the UI,
// callbacks for the Brightcove player, utility functions and handles the Ad Integration.
//
// Author: PM, Bonnier Marine Group
// Date: March 5, 2009
// Last Updated: July 7, 2009




/************************************************************************************
 * Global variables and player configurations.
 ************************************************************************************/

var token = "u5pROqDAfmC9oql-iOzhNv01cmtrm74mSfwN3Q0aBXk.";
var player_id = 15376055001;
var featuredPlaylist_id = 24585874001;		// Featured Videos
var boatToursPlaylist_id = 15087542001;		// Boat Tours
var mostRecentPlaylist_id = 17534570001;	// Most Recent Videos (Smart Playlist)
var mostViewedPlaylist_id = 17534571001;	// Most Viewed Videos (Smart Playlist)

var thisPage = "videos.jsp"; // change to videos.jsp

/* pagination variables - don't edit these */
var vNumber = 9; 		// the number of video titles/thumbs per page
var page_number = 0; 	// used by Most Recent and Most Viewed components
var currentPage = 1;



/************************************************************************************
 * kudos-js Brightcove Javascript SDK - Set the default token and handler for calls
 ************************************************************************************/

kudos.token = token;
kudos.cb = "handle";

function handle (response) {
	//alert("default handle called");
}

function handlePlaylist (response) {	
	// displays current channel name in tab
	var tDiv = document.getElementById("currentPlaylistTab");
	tDiv.innerHTML = response.name;

	getAllTitles(response.videoIds,currentPage);
	
	// create a feed
	var rssFeed = "http://link.brightcove.com/services/rss/player" + player_id + "/playlist" + bclid + "/";
	var tDiv = document.getElementById("feedTab");
	var feedLink = "";
	feedLink += '<a href="' + rssFeed + '" title="Subscribe to RSS Feed">&nbsp;</a>';
	tDiv.innerHTML = feedLink;	
}

function handleVideosById (response) {
	emptyDiv("titleList");
	var items = response["items"];
	var tDiv = document.getElementById("titleList");
	var i=0;
	while (i<items.length) {
		displayTitle(tDiv, items[i].id, items[i].name, items[i].thumbnailURL, items[i].shortDescription, bclid);
		i++;		
	}
}	
		
function handleRefreshTitles (response) {
	emptyDiv("titleList");
	var items = response["items"];
	var tDiv = document.getElementById("titleList");
	var i=0;
	var iMax=9;
	if (items.length < 9) {
		iMax=items.length;
	}
	while (i<iMax) {
		displayTitle(tDiv, items[i].id, items[i].name, items[i].thumbnailURL, items[i].shortDescription, bclid);
		i++;
	}
}


function handleBoatTours(response) {
	emptyDiv("boatTours");
	var items = response["videos"];
	
	vPageCount = Math.ceil(items.length/4);
	
	iEnd = 4;
	if (iEnd > items.length) {
		iEnd = items.length;
	}
		
	var tDiv = document.getElementById("boatTours");
	var i=0;
	while (i<iEnd) {
		displayTitle(tDiv, items[i].id, items[i].name, items[i].thumbnailURL, items[i].shortDescription, boatToursPlaylist_id);		
		i++;
	}
	
	titleIds = []; //starts an array
	i = 0;
	while(i < items.length) {
		titleIds[i] = items[i].id;
		i++;
	}
		
	boatToursPagination(titleIds,currentPage,vPageCount);
}


function handleBoatToursRefresh(response) {
	
	emptyDiv("boatTours");
	var items = response["items"];
	
	iEnd = 4;
	if (iEnd > items.length) {
		iEnd = items.length;
	}
	
	var tDiv = document.getElementById("boatTours");
	var i=0;
	while (i<iEnd) {
		displayTitle(tDiv, items[i].id, items[i].name, items[i].thumbnailURL, items[i].shortDescription, boatToursPlaylist_id);		
		i++;
	}
	
}


function handleMostRecent(response) {	
	emptyDiv("mostRecent");
	var items = response["items"];
	var tDiv = document.getElementById("mostRecent");
	var i=0;
	while (i<items.length) {
		displayTitle(tDiv, items[i].id, items[i].name, items[i].thumbnailURL, items[i].shortDescription, mostRecentPlaylist_id);
		i++;
	}
}

function handleMostViewed(response) {
	emptyDiv("mostViewed");
	var items = response["items"];
	var tDiv = document.getElementById("mostViewed");
	var i=0;
	while (i<items.length) {
		displayTitle(tDiv, items[i].id, items[i].name, items[i].thumbnailURL, items[i].shortDescription, mostViewedPlaylist_id);		
		i++;
	}
}


		
function displayTitle(tDiv, id, name, thumbnailURL, shortDescription, bclid) {	
	if (thumbnailURL == null) {
		thumbnailURL = "images/spacer.gif";
	}	
	shortDescription = shortDescription.replace(/[^a-zA-Z 0-9]+/g,''); //removes special characters	
	if (shortDescription.length > 100) {
		shortDescription = shortDescription.substr(0, 100) + "&hellip;";
	}	
	var str = "";
	str += '<div class="title">';
	str += '<div class="vThumb" onmouseover="tooltip.show(\'' + shortDescription + '\');" onmouseout="tooltip.hide();">';
	str += '<img src="' + thumbnailURL + '" width="80" height="60"><a href="' + thisPage + '?bclid=' + bclid + '&bctid=' + id + '" class="hover_icon"><img src="images/bc_playOverlay.png" width="80" height="60" border="0" /></a></div>';
	str += '<div class="clearfix"></div><div class="displayName"><a href="' + thisPage + '?bclid=' + bclid + '&bctid=' + id + '">' + name + '</a></div></div>';			
	tDiv.innerHTML += str;			
	return;
}



function boatToursPagination(titleIds,currentPage,vPageCount) {
	
	document.getElementById('boatToursLeft').style.visibility = 'hidden';
	document.getElementById('boatToursRight').style.visibility = 'hidden';
		
	if (currentPage != 1) {
		document.getElementById('boatToursLeft').style.visibility = 'visible';
		emptyDiv("boatToursLeft");
		var tDiv = document.getElementById("boatToursLeft");
		var str = "";
		str += '<a href="javascript:refreshBoatTours([' + titleIds + '],' + (currentPage-1) + ');"><img src="images/spacer.gif" width="23" height="22"></a>';
		tDiv.innerHTML += str;
	}
	
	if (currentPage != vPageCount) {
		document.getElementById('boatToursRight').style.visibility = 'visible';
		emptyDiv("boatToursRight");
		var tDiv = document.getElementById("boatToursRight");
		var str = "";	
		str += '<a href="javascript:refreshBoatTours([' + titleIds + '],' + (currentPage+1) + ');"><img src="images/spacer.gif" width="23" height="22"></a>';
		tDiv.innerHTML += str;
	}
}

function refreshBoatTours(titleIds,currentPage) {
	
	document.getElementById('boatToursLeft').style.visibility = 'hidden';
	document.getElementById('boatToursRight').style.visibility = 'hidden';
		
	emptyDiv("boatTours");
	loadingAnim("boatTours");
	
	vPageCount = Math.ceil(titleIds.length/4);
	//alert(vPageCount);
	iStart = ((currentPage-1)*4);
	iEnd = currentPage*4;
	
	if (iEnd > titleIds.length) {
		iEnd = titleIds.length;
	}
	
	iStart = ((currentPage-1)*4);
	
	boatToursPagination(titleIds, currentPage, vPageCount);	
	
	var refreshTitleIds = titleIds.slice(iStart);
	kudos.get("find_videos_by_ids", {"callback":"handleBoatToursRefresh", "video_ids":refreshTitleIds, "fields":"id,name,thumbnailURL,shortDescription"});
	
}



/* pagination *************************************************/

function getAllTitles(videoIds,currentPage) {
	vPageCount = Math.ceil(videoIds.length/vNumber);
	
	if (vNumber <= videoIds.length) {		
			//refreshAllTitles(currentPage);		
			titleIds = []; //starts an array
			i = 0;			
			while(i < vNumber) {
				titleIds[i] = videoIds[i];
				i++;
			}
		} else {
			//refreshAllTitles(currentPage);
			titleIds = []; //starts an array
			i = 0;
			while(i < videoIds.length) {
				titleIds[i] = videoIds[i];
				i++;
			}
		}
				
		kudos.get("find_videos_by_ids", {"callback":"handleVideosById", "video_ids":titleIds, "fields":"id,name,thumbnailURL,shortDescription"});
				
		videoPagination(videoIds, currentPage, vPageCount);	
}


function refreshAllTitles(titleIds, currentPage) {
	emptyDiv("titleList");
	loadingAnim("titleList"); // ajax loading animation	
	
	vPageCount = Math.ceil(titleIds.length/vNumber);
	iStart = ((currentPage-1)*vNumber);
	iEnd = currentPage*vNumber;
	
	if (iEnd > titleIds.length) {
		iEnd = titleIds.length;
	}
	
	iStart = ((currentPage-1)*vNumber);
	videoPagination(titleIds, currentPage, vPageCount);	
	
	var refreshTitleIds = titleIds.slice(iStart);
	
	kudos.get("find_videos_by_ids", {"callback":"handleRefreshTitles", "video_ids":refreshTitleIds, "fields":"id,name,thumbnailURL,shortDescription"});	
}


function videoPagination(titleIds, currentPage, vPageCount) {
	
	emptyDiv("videoPgContainer");
	var tDiv = document.getElementById("videoPgContainer");
	var str = "";
	
	if (currentPage != 1) {
		str += '<div id="videoPgControls" class="videoPgControls" onmouseout="videoPgOut(this)" onmouseover="videoPgOver(this)" onclick="javascript:refreshAllTitles([' + titleIds + '],' + (currentPage-1) + ');">Prev</div>';		
	}
	
	for(i = 1; i <= vPageCount; i++) {
		if (i != currentPage) {
			str += '<div id="videoPg" class="videoPg" onmouseout="videoPgOut(this)" onmouseover="videoPgOver(this)" onclick="javascript:refreshAllTitles([' + titleIds + '],' + i + ')">' + i + '</div>';
		} else if (vPageCount > 1) {
			str += '<div class="videoPgActive">' + i + '</div>';
		}
	}

	if (currentPage != vPageCount) {
		currentPage++
		str += '<div id="videoPgControls" class="videoPgControls" onmouseout="videoPgOut(this)" onmouseover="videoPgOver(this)" onclick="javascript:refreshAllTitles([' + titleIds + '],' + currentPage + ');">Next</div>';
	}
	
	tDiv.innerHTML += str;	
	return;	
}

/* end of pagination ******************************************/



/************************************************************************************
 * Boat Tours (New Boat Showcase)
 ************************************************************************************/

function getBoatTours(page_number) {
	document.getElementById('boatToursLeft').style.visibility = 'hidden';
	document.getElementById('boatToursRight').style.visibility = 'hidden';

	if (page_number >= 1) {
		document.getElementById('boatToursLeft').style.visibility = 'visible';
		boatToursLeftPage = page_number-1;
	}
	
	if (page_number <= 3) {
		document.getElementById('boatToursRight').style.visibility = 'visible';
		boatToursRightPage = page_number+1;
	}
	
	kudos.get("find_playlist_by_id", {"callback":"handleBoatTours", "playlist_id":boatToursPlaylist_id, "video_fields":"id,name,thumbnailURL,shortDescription"});

}



/************************************************************************************
 * Most Recent Videos
 ************************************************************************************/

function mostRecentSlideLeft() {
	emptyDiv("mostRecent");
	loadingAnim("mostRecent"); // ajax loading animation	
	getMostRecent(mostRecentLeftPage);
}

function mostRecentSlideRight() {
	emptyDiv("mostRecent");
	loadingAnim("mostRecent"); // ajax loading animation	
	getMostRecent(mostRecentRightPage);
}

function getMostRecent(page_number) {
	document.getElementById('mostRecentLeft').style.visibility = 'hidden';
	document.getElementById('mostRecentRight').style.visibility = 'hidden';
	
	if (page_number >= 1) {
		document.getElementById('mostRecentLeft').style.visibility = 'visible';
		mostRecentLeftPage = page_number-1;
	}
	
	if (page_number <= 3) {
		document.getElementById('mostRecentRight').style.visibility = 'visible';
		mostRecentRightPage = page_number+1;
	}
	
	kudos.get("find_all_videos", {"callback":"handleMostRecent", "sort_by":"publish_date", "sort_order":"desc", "page_size":4, "page_number":page_number, "fields":"id,name,thumbnailURL,shortDescription"});
}


/************************************************************************************
 * Most Viewed Videos
 ************************************************************************************/

function mostViewedSlideLeft() {
	emptyDiv("mostViewed");
	loadingAnim("mostViewed"); // ajax loading animation	
	getMostViewed(mostViewedLeftPage);
}
function mostViewedSlideRight() {
	emptyDiv("mostViewed");
	loadingAnim("mostViewed"); // ajax loading animation	
	getMostViewed(mostViewedRightPage);
}

function getMostViewed(page_number) {
	document.getElementById('mostViewedLeft').style.visibility = 'hidden';
	document.getElementById('mostViewedRight').style.visibility = 'hidden';
	
	if (page_number >= 1) {
		document.getElementById('mostViewedLeft').style.visibility = 'visible';
		mostViewedLeftPage = page_number-1;
	}	
	if (page_number <= 3) {
		document.getElementById('mostViewedRight').style.visibility = 'visible';
		mostViewedRightPage = page_number+1;
	}
	
	kudos.get("find_all_videos", {"callback":"handleMostViewed", "sort_by":"plays_trailing_week", "sort_order":"desc", "page_size":4, "page_number":page_number, "fields":"id,name,thumbnailURL,shortDescription"});
}



/************************************************************************************
 * Player Interface - Player API
 ************************************************************************************/

var player, video, content, exp, menu, social, tabBar, adModule;
var calledOnce = false;
	
function onTemplateLoaded(pPlayer) {
	
	player   = bcPlayer.getPlayer(pPlayer);
	video 	 = player.getModule(APIModules.VIDEO_PLAYER);
	content  = player.getModule(APIModules.CONTENT);
	exp 	 = player.getModule(APIModules.EXPERIENCE);
	menu 	 = player.getModule(APIModules.MENU);
	social 	 = player.getModule(APIModules.SOCIAL);
    adModule = player.getModule(APIModules.ADVERTISING);
	
	adModule.enableExternalAds(true); //Enabled External Ads
	adModule.addEventListener(BCAdvertisingEvent.EXTERNAL_AD, onExternalAd);

	exp.addEventListener(BCExperienceEvent.TEMPLATE_READY, onTemplateReady);
}

function onTemplateReady(evt) {
	
	var currentVideo = video.getCurrentVideo();	
	
	if (currentVideo) {
		getVideoInfo(currentVideo);
	}	
	
	loadedPlaylistIds = content.getAllPlaylists();
	playlistDto(loadedPlaylistIds);	
	
	video.addEventListener(BCMediaEvent.CHANGE, onMediaChange);
	video.addEventListener(BCMediaEvent.COMPLETE, onMediaComplete);
	
	tabBar = exp.getElementByID("playlistTabs");
	updateLink(video.getCurrentVideo().id, tabBar.getSelectedData().id);	
}



/************************************************************************************
 * get the video title info
 ************************************************************************************/
function getVideoInfo(currentVideo) {
	
	document.getElementById("titleInfo").innerHTML = "";	
	var resp = document.getElementById("titleInfo");
	var str = "";
	str += '<h1>';	
	str += currentVideo.displayName + '</h1>';
	str += '<p>' + currentVideo.shortDescription + '</p>';
	if (currentVideo.linkURL) {
		str += '<p class="videoLink"><a href="' + currentVideo.linkURL + '" target="_blank">' + currentVideo.linkText + '</a></p>';
	}
	resp.innerHTML += str;
	
	document.title = currentVideo.displayName + " - " + document.title; // updates page title
}



/************************************************************************************
 * Player Interface - Ad API
 ************************************************************************************/

function onExternalAd(evt) {	
	// Create an XML doc with externalAd XML sent by the player
	var adXML = getXMLDoc(evt.ad);	
	
	//Extract specific XML nodes
	var videoAd = getVideoAd(adXML);
	var bannerAdExpanded = getExpandedBanner(adXML);	
	//var bannerAdCollapsed = getCollapsedBanner(adXML);	// not using
		
	// Render a video Ad using the Adverstising module
	adModule.showAd(videoAd);

	// determine if ad is a jpg
	if (bannerAdExpanded.expandedBannerURL.indexOf(".jpg")!=-1) {		
		document.getElementById('externalBannerExpandedBg').style.visibility = 'visible';
		document.getElementById('externalBannerExpanded').style.visibility = 'visible';	
		// Add an external banner to the HTML page
		var externalBannerExpanded = document.getElementById("externalBannerExpanded");	
		var externalBannerExpandedHTML = "<a href='javascript:onAdClose();'><img src='images/bc_closeAd.gif'></a><br><a href='" + bannerAdExpanded.expandedBannerClickURL + "' target='_blank' ><img src='" + bannerAdExpanded.expandedBannerURL + "' /></a>";
	}
	// determine if ad is a swf
	if (bannerAdExpanded.expandedBannerURL.indexOf(".swf")!=-1) {		
		document.getElementById('externalBannerExpandedBg').style.visibility = 'visible';
		document.getElementById('externalBannerExpanded').style.visibility = 'visible';	
		// Add an external banner to the HTML page
		var externalBannerExpanded = document.getElementById("externalBannerExpanded");	
		var externalBannerExpandedHTML = '<embed src="' + bannerAdExpanded.expandedBannerURL + '" flashVars="clickTAG=' + bannerAdExpanded.expandedBannerClickURL + '" quality="high" bgcolor="#000000" width="300" height="250" name="ad" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" allowFullScreen="true" /><br><a href="javascript:onAdClose();">Close &rsaquo;</a>'; 
	}	
	//writes out the regular anchor/tag to the externalBanner div
	externalBannerExpanded.innerHTML = externalBannerExpandedHTML;	
}
	
// Parses a synchedBanner ad XML and creates a video Ad 
// Change accordingly to the XML that you are trafficking as external ad.
function getVideoAd(adXML){
	var videoAd = new Object();	
	videoAd.type = "videoAd";
	var nodeItems = adXML.firstChild.childNodes.length;
	var currentNode = adXML.firstChild.firstChild;
	
	//get the root node attributes
	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++) {
		//checks to see if the current nodes are in our Rich Media Templates and assigns them if they exist
		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;
}	

// Parses a synchedBanner ad XML and returns an object with the collapse banner URL and click URL
// Change accordingly to the XML format that you traffic as external ad
function getExpandedBanner(adXML){
	var expandedAd = new Object(); 	
	var nodeItems = adXML.firstChild.childNodes.length;
	var currentNode = adXML.firstChild.firstChild;		
	for(var i = 0; i < nodeItems; i++) {
		// Get only the collapseBanner attributes 
		if(currentNode.nodeName == "expandedBannerURL" && currentNode.firstChild) expandedAd.expandedBannerURL = currentNode.firstChild.nodeValue;
		if(currentNode.nodeName == "expandedBannerClickURL" && currentNode.firstChild) expandedAd.expandedBannerClickURL = currentNode.firstChild.nodeValue;		
		currentNode = currentNode.nextSibling;
	}			
	return expandedAd;	
}

function getXMLDoc(pXML){
	var adXML;
	if (window.ActiveXObject) {
		//parses the XML for IE browsers
		adXML = new ActiveXObject("Microsoft.XMLDOM");
		adXML.async = false;
		adXML.loadXML(pXML);
	}
	else //parses the XML for Mozilla browsers
		if (window.XMLHttpRequest) {
			adXML = (new DOMParser()).parseFromString(pXML, "text/xml"); 
		}
	return adXML;		
}

function onAdClose(evt) {
	// Remove the banner on Ad Close
	var externalBannerExpanded = document.getElementById("externalBannerExpanded");		
	externalBannerExpanded.innerHTML ="";
	externalBannerExpanded.style.visibility = 'hidden';	
	var externalBannerExpandedBg = document.getElementById("externalBannerExpandedBg");
	externalBannerExpandedBg.style.visibility = 'hidden';
}



/************************************************************************************
 * MediaEvent v3.2 API
 ************************************************************************************/

function onMediaComplete(evt) {
	// hide ads after video is done playing
	document.getElementById('externalBannerExpanded').style.visibility = 'hidden'; 
	document.getElementById('externalBannerExpandedBg').style.visibility = 'hidden';
}

function onMediaChange(evt) {
	//alert(evt9.media.id);
	
	var currentVideo = video.getCurrentVideo();		
	getVideoInfo(currentVideo);
	if(exp.getReady()) { // If template is Ready
		// Because TemplateReady has already fired we can now access the currentVideo and currentPlaylist from the tabBar module
		updateLink(video.getCurrentVideo().id, tabBar.getSelectedData().id);
	}

}

function playlistDto(loadedPlaylistIds) {
	
	// Get a handle for the tabBar in the player
	tabBar = exp.getElementByID("playlistTabs");

	// Find out which lineup was selected by default and display it's information
	currentlySelectedPlaylist = tabBar.getSelectedIndex();	
	currentlySelectedPlaylistId = loadedPlaylistIds[currentlySelectedPlaylist].id
	
	emptyDiv("playlistNames");
	var tDiv = document.getElementById("playlistNames");
	var i=3; // skips over the playlists "Featured", "Most Recent" and "Most Viewed" if they are the first three playlists in the Player
	
	while (i<loadedPlaylistIds.length) {
		var str = "";	
		if (i == currentlySelectedPlaylist) {
			str += '<li class="currentPlaylist"><a href="' + thisPage + '?bclid=' + currentlySelectedPlaylistId + '">';
			str += loadedPlaylistIds[i].displayName;
			str += '</a></li>';
		}
		else {
		str += '<li><a href="' + thisPage + '?bclid=' + loadedPlaylistIds[i].id + '">';
		str += loadedPlaylistIds[i].displayName;
		str += '</a></li>';	
		}
		tDiv.innerHTML += str;
		i++;
	}
	
	if (url["bclid"] == undefined && url["bctid"] != undefined) {
		video.loadVideo(url.bctid);
		kudos.get("find_playlist_by_id", {"callback":"handlePlaylist", "playlist_id":featuredPlaylist_id, "fields":"id,name,shortDescription,videoIds"});
		} else {		
		kudos.get("find_playlist_by_id", {"callback":"handlePlaylist", "playlist_id":currentlySelectedPlaylistId, "fields":"id,name,shortDescription,videoIds"});		
	}
	
	// components
	getBoatTours(page_number);
	getMostRecent(page_number);
	getMostViewed(page_number);
}



/************************************************************************************
 * customize viral link
 ************************************************************************************/
 
function updateLink(videoId, playlistId) {
	var currentLink = social.getLink();
	// Get the current URL and remove any existing URL parameter
	if(currentLink.indexOf("?") != -1) {
		currentLink = currentLink.substring(0,currentLink.indexOf("?"));
	}	
	var newLink = currentLink + "?bclid=" + playlistId + "&bctid=" + videoId;
	social.setLink(newLink);
}



/************************************************************************************
 * Next/Prev Navigation for Most Recent and Most Viewed
 ************************************************************************************/
 
function arrowOver(pElem) {
	if(pElem.id == "mostRecentLeft" || pElem.id == "mostViewedLeft" || pElem.id == "boatToursLeft" || pElem.id == "premiumLeft") {
        pElem.className = "arrowLeftOver";
    } else {
        pElem.className = "arrowRightOver";
    }
}

function arrowOut(pElem) {
    if(pElem.id == "mostRecentLeft" || pElem.id == "mostViewedLeft" || pElem.id == "boatToursLeft" || pElem.id == "premiumLeft") {
        pElem.className = "arrowLeft";
    } else {
        pElem.className = "arrowRight";
    }
}


/************************************************************************************
 * mouse over/out behaviors - Playlist Navigation (Prev, Page Numbers, Next)
 ************************************************************************************/
 
function videoPgOver(pElem) {
	if(pElem.id == "videoPg") {
        pElem.className = "videoPgOver";
    } else {
        pElem.className = "videoPgControlsOver";
    }
}

function videoPgOut(pElem) {
    if(pElem.id == "videoPg") {
        pElem.className = "videoPg";
    } else {
        pElem.className = "videoPgControls";
    }
}



/************************************************************************************
 * custom functions - reset div, debugging, querystring
 ************************************************************************************/

// resets a div's content
function emptyDiv(divId) {
	document.getElementById(divId).innerHTML = "";
}

// querystring code - looks for Brightcove Playlist ID (bclid) and/or Title ID (bctid) in the URL
var qs = location.search.substring(1);
var nv = qs.split('&');
var url = new Object();
for(i = 0; i < nv.length; i++) {
	eq = nv[i].indexOf('=');
    url[nv[i].substring(0,eq).toLowerCase()] = unescape(nv[i].substring(eq + 1));
}

// ajax loading animation
function loadingAnim(divId) {
	var tDiv = document.getElementById(divId);	
	var str = "";
	str += '<div class="loading">';
	str += '<img src="images/loading_anim_02.gif">';
	str += '</div>';
	tDiv.innerHTML += str;
}
	
function initCall() {
	
	loadingAnim("playlistNames"); // ajax loading animation	
	loadingAnim("titleList");
	loadingAnim("boatTours");
	loadingAnim("mostRecent");
	loadingAnim("mostViewed");
	
	if (url["bclid"] != undefined) {
		bclid = url.bclid;
	}
	else {
		if (url["bclid"] == undefined) {	
			bclid = featuredPlaylist_id;
		}
	}
	
}