/////////////////////////////////////////////////////////////////////////////////
var bcExp								= null;
var modVP								= null;
var modExp								= null;
var modContent							= null;
var isVideoSysReady						= false;
var videoPlatform_lastID				= 0;
var videoPlatform_lastVID				= 0;
var videoPlatform_locked				= false;
var videoPlatform_doRelated				= true;
var videoPlatform_lastShowID			= -1;
var videoPlatform_lastArtistID			= -1;
var videoPlatform_boxData				= "";
var videoPlatform_boxOut				= false;
var videoPlatform_dataReady				= false;
var videoPlatform_dataSuccess			= false;
var videoPlatform_getMode				= 'shows';

// JQUERY CODE TO ENSURE THAT OUR LOVERLY SCRIPTS DO NOT CONFLICT WITH SCRIPTACULOUS.  ONE DAY, PERHAPS, 
// WE'LL RID OURSELVES OF SCRIPTACULOUS FOREVER AND REPLACE IT ALL WITH JQUERYGOODNESS
jQuery.noConflict();

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
jQuery(document).ready(function(){   

	jQuery("#x_navTabShows").click(function() {
		jQuery("#x_navTabArtists").removeClass("clickTab");
		jQuery(this).addClass("clickTab");
	});
	jQuery("#x_navTabArtists").click(function() {
		jQuery("#x_navTabShows").removeClass("clickTab");
		jQuery(this).addClass("clickTab");
	});

});

/////////////////////////////////////////////////////////////////////////////////
// called when template loads, this function stores a reference to the player and modules.
// Then event listeners will be added for when the template is ready and when a user 
// clicks on a video.
/////////////////////////////////////////////////////////////////////////////////
function onTemplateLoaded(pEvent) {
bcExp 									= brightcove.getExperience(pEvent);
modVP 									= bcExp.getModule(APIModules.VIDEO_PLAYER);
modExp 									= bcExp.getModule(APIModules.EXPERIENCE);
modContent 								= bcExp.getModule(APIModules.CONTENT);
modExp.addEventListener(BCExperienceEvent.TEMPLATE_READY, onTemplateReady);
modExp.addEventListener(BCExperienceEvent.CONTENT_LOAD, onContentLoad);
modContent.addEventListener(BCContentEvent.VIDEO_LOAD, onVideoLoad);

// REGISTER TO TREAT 'videoComplete' EVENT
modVP.addEventListener('mediaComplete',videoPlatform_onMediaComplete);
}
/////////////////////////////////////////////////////////////////////////////////
function onTemplateReady(evt) {
}
/////////////////////////////////////////////////////////////////////////////////
function onContentLoad(evt) {
isVideoSysReady							= true;
}
/////////////////////////////////////////////////////////////////////////////////
function onVideoLoad(evt) {
modVP.loadVideo(evt.video.id);
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_onMediaComplete(evt) {
var vid									= modVP.getCurrentVideo();
var vidID								= vid.id;
	// FOR SOME REASON, BRIGHTCOVE SEEMS TO WANT TO CALL THE videoComplete
	// EVENT MULTIPLE TIMES.  HERE WE JUST WANT TO BE SURE WE ONLY ISSUE
	// ONE AJAX REQUEST PER VIDEO PLAYED.
	if (vidID != videoPlatform_lastVID) {
	awardViewershipPoints(vidID);
	//videoPlatform_autoPlayNext(vidID);
	videoPlatform_lastVID				= vidID;
	}
}
/////////////////////////////////////////////////////////////////////////////////
function playPlatformVideo(vidID) {

	if (!isVideoSysReady) {
	return;
	}

	if (videoPlatform_locked) {
	return;
	}
	
videoPlatform_locked					= true;
modContent.getVideoAsynch(vidID);
videoPlatform_lastID					= vidID;
refreshSummaryPane(vidID);
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_autoPlayNext(vidID) {
var i									= 0;
var vset								= null;
var videos								= new Array();
var divs								= new Array();

	jQuery(".hbox_video_sequence").each(function() {
	var o								= jQuery(this);
	var c								= o.attr('class');
	var cset							= c.split(" ");
		for (i=0; i<cset.length; i++) {
		c								= cset[i];
			if (c.indexOf('hbox_vid_') != -1) {
			vset						= c.split("_");
			vID							= vset[2];
			videos.push(vID);
			divs.push(o);
			}
		}
	});
	
	var firstVID						= videos[0];
	var toPlay							= 0;
	var toHighlight						= '';
	alert(videos.length);
	
		for (i=0; i<videos.length; i++) {
			if (vidID == videos[i]) {
				if ((i+1) < videos.length) {
				toPlay					= videos[i+1];
				toHighlight				= (i+1);
				} else {
				toPlay					= firstVID;
				toHighlight				= 0;
				}
			break;
			}
		}
		if (toPlay != 0) {
		playPlatformVideo(toPlay);
		//divs[toHighlight].effect("pulsate", { times:3 }, 2000);
		}

}
/////////////////////////////////////////////////////////////////////////////////
// USE AJAX TO KEEP TRACK OF THE FACT THAT A GIVEN USER HAS VIEWED THIS VIDEO
// THE USER IN THIS CASE IS KNOWN VIA COOKIE VERSUS LOGGED IN USER TIED TO A 
// DB SESSION
/////////////////////////////////////////////////////////////////////////////////
function refreshSummaryPane(vidID) {

	// CLEAR TIMEOUT AND DESTROY TABS COMPONENT
	if (jQuery('#jQueryTabs')) {
	jQuery('#jQueryTabs').tabs().tabs('rotate',0); 
	jQuery('#jQueryTabs').tabs().tabs('destroy');
	}

var loader								= document.getElementById('videoSummaryPane');
	if (loader) {
	loader.innerHTML					= getInnerAjaxLoader();
	}

var uri									= "/clientServer/?section=GetVideoSummary&videoID="+vidID;
handleGetComplete						= 'handleRefreshSummaryGetComplete';
getAjaxContent(uri);
}
/////////////////////////////////////////////////////////////////////////////////
// DO NOTHING, THIS CALLBACK MUST BE HERE TO SATISFY FRAMEWORK THOUGH
function handleRefreshSummaryGetComplete(success,xmlHTTP) {
var obj									= document.getElementById('videoSummaryPane');
	if (obj && success) {
	obj.innerHTML						= xmlHTTP.responseText;
	videoSummaryTabs_load();
	facebook_onTabRefresh();
	}
	// SHALL WE LOAD RELATED VIDEOS?
	if (videoPlatform_doRelated) {
	loadRelatedVideos(videoPlatform_lastID);
	} else {
	videoPlatform_locked				= false;
	videoPlatform_lastID				= 0;
	}
}
/////////////////////////////////////////////////////////////////////////////////
// USE AJAX TO KEEP TRACK OF THE FACT THAT A GIVEN USER HAS VIEWED THIS VIDEO
// THE USER IN THIS CASE IS KNOWN VIA COOKIE VERSUS LOGGED IN USER TIED TO A 
// DB SESSION
/////////////////////////////////////////////////////////////////////////////////
function loadRelatedVideos(vidID) {
var loader						= document.getElementById('x_videoBox');
	if (loader) {
	loader.innerHTML			= getInnerAjaxLoader();
	}

var uri							= "/clientServer/?section=GetRelatedVideos&videoID="+vidID;
handleGetComplete				= 'handleLoadRelatedVideosGetComplete';
getAjaxContent(uri);
}
/////////////////////////////////////////////////////////////////////////////////
// DO NOTHING, THIS CALLBACK MUST BE HERE TO SATISFY FRAMEWORK THOUGH
function handleLoadRelatedVideosGetComplete(success,xmlHTTP) {
var obj								= document.getElementById('x_videoBox');
	if (obj && success) {
	obj.innerHTML					= xmlHTTP.responseText;
	}
videoPlatform_locked				= false;
videoPlatform_lastID				= 0;
videoBoxRollover_initBinding();
}
/////////////////////////////////////////////////////////////////////////////////
// CALLED WHEN IT IS TIME TO ADD VIEWERSHIP POINTS.  LETTUCE DO SO NOW BY
// ISSUING AN AJAX REQUEST, THE RESPONSE OF WHICH WE'LL IGNORE FOR NOW.
/////////////////////////////////////////////////////////////////////////////////
function awardViewershipPoints(vidID) {
var uri								= "/clientServer/?section=RegisterVideoView&videoID="+vidID;
handleGetComplete					= 'handleAwardPointsGetComplete';
getAjaxContent(uri);
}
/////////////////////////////////////////////////////////////////////////////////
function handleAwardPointsGetComplete(success,xmlHTTP) {
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_loadShowVideos(showID) {
videoPlatform_lastShowID			= showID;
videoPlatform_getMode				= 'shows';
videoPlatform_slideBoxIn();
var uri								= "/clientServer/?section=GetShowVideos&showID="+showID;
handleGetComplete					= 'handleLoadVideosGetComplete';
getAjaxContent(uri);
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_loadArtistVideos(artistID) {
videoPlatform_lastArtistID			= artistID;
videoPlatform_getMode				= 'artists';
videoPlatform_slideBoxIn();
var uri								= "/clientServer/?section=GetArtistVideos&artistID="+artistID;
handleGetComplete					= 'handleLoadVideosGetComplete';
getAjaxContent(uri);
}
/////////////////////////////////////////////////////////////////////////////////
function handleLoadVideosGetComplete(success,xmlHTTP) {
	if (success) {
	var txt							= xmlHTTP.responseText;
	videoPlatform_dataSuccess		= true;
		if (txt == 'SUCCESS=0') {
		txt							= getInnerAjaxFailure();
		videoPlatform_dataSuccess 	= false;
		}
	videoPlatform_boxData			= txt;
	videoPlatform_dataReady			= true;
	trySlideBoxOutComplete();
	} else {
	videoPlatform_boxData			= getInnerAjaxFailure();
	videoPlatform_dataReady			= true;
	videoPlatform_dataSuccess 		= false;
	trySlideBoxOutComplete();
	}
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_slideBoxIn() {
var slideBox						= jQuery("#x_videoSlideBox");
	if (slideBox) {
	videoPlatform_boxData			= getInnerAjaxLoader();
	slideBox.html(videoPlatform_boxData);
	slideBox.css({width: 0, opacity: 0.5});
	slideBox.show();
	slideBox.animate({width: 251, opacity: 0.991},500,'linear',function(){
		 jQuery("#x_videoSlideBox").html(videoPlatform_boxData);
		 videoPlatform_boxOut		= true;
		 trySlideBoxOutComplete();
		 });	
	}
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_slideBoxOut() {
var slideBox						= jQuery("#x_videoSlideBox");
	if (slideBox) {
	jQuery("#x_videoSlideBox").html('');
	slideBox.animate({width: 0, opacity: 0.5},250,'linear',function(){
		handleSlideBoxInComplete();
		});	
	}
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_closeSlideBox() {
handleSlideBoxInComplete();
}
/////////////////////////////////////////////////////////////////////////////////
function handleSlideBoxInComplete() {
jQuery("#x_videoSlideBox").hide();
videoPlatform_boxOut				= false;
videoPlatform_dataReady				= false;
}
/////////////////////////////////////////////////////////////////////////////////
function trySlideBoxOutComplete() {
	if (videoPlatform_boxOut && videoPlatform_dataReady) {
	var obj							= jQuery("#x_videoSlideBox");
		if (obj) {
		obj.html(videoPlatform_boxData);
			if (videoPlatform_dataSuccess) {
			videoBoxRollover_initBinding();
			videoPlatform_loadRelatedDetails();
			}
		}
	}
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_loadRelatedDetails() {
var ID								= (videoPlatform_getMode == 'shows') ? videoPlatform_lastShowID : videoPlatform_lastArtistID;	
	if (ID == -1) {
	return;
	}
var loader							= document.getElementById('x_showArtistDetailBox');
	if (loader) {
	loader.innerHTML				= getInnerAjaxLoader();
	}
	
var uri								= '';
	if (videoPlatform_getMode == 'shows') {		
	uri								= "/clientServer/?section=GetShowDetails&showID="+ID;
	} else {
	uri								= "/clientServer/?section=GetArtistDetails&artistID="+ID;
	}
handleGetComplete					= 'handleLoadShowDetailGetComplete';
getAjaxContent(uri);
}
/////////////////////////////////////////////////////////////////////////////////
function handleLoadShowDetailGetComplete(success,xmlHTTP) {
var obj								= document.getElementById('x_showArtistDetailBox');
	if (obj && success) {
	var data						= xmlHTTP.responseText;
	obj.innerHTML					= data;
	}
}
/////////////////////////////////////////////////////////////////////////////////
// USE AJAX TO KEEP TRACK OF THE FACT THAT A GIVEN USER HAS VIEWED THIS VIDEO
// THE USER IN THIS CASE IS KNOWN VIA COOKIE VERSUS LOGGED IN USER TIED TO A 
// DB SESSION
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_loadSection(section) {
videoPlatform_closeSlideBox();

var loader							= document.getElementById('showsArtistsInner');
	if (loader) {
	loader.innerHTML				= getInnerAjaxLoader();
	}

var s								= (section == 'shows') ? "GetShowsList" : "GetArtistList";	
var uri								= "/clientServer/?section="+s;
handleGetComplete					= 'handleLoadSectionGetComplete';
getAjaxContent(uri);
}
/////////////////////////////////////////////////////////////////////////////////
function handleLoadSectionGetComplete(success,xmlHTTP) {
var obj								= document.getElementById('showsArtistsInner');
	if (obj && success) {
	obj.innerHTML					= xmlHTTP.responseText;
	}
}
/////////////////////////////////////////////////////////////////////////////////
function videoPlatform_setDoRelated(b) {
videoPlatform_doRelated				= b;
}
/////////////////////////////////////////////////////////////////////////////////
function util_trim(str, chars) {
	return util_ltrim(rtrim(str, chars), chars);
}
/////////////////////////////////////////////////////////////////////////////////
function util_ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
/////////////////////////////////////////////////////////////////////////////////
function util_rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
