/////////////////////////////////////////////////////////////////////////////////
var bcExp								= null;
var modVP								= null;
var modExp								= null;
var modContent							= null;
var modSocial							= null;
var isVideoSysReady						= false;
var videoPlatform_lastID				= 0;
var videoPlatform_lastVID				= 0;
var videoPlatform_locked				= false;
var videoPlatform_doRelated				= false;
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';

/////////////////////////////////////////////////////////////////////////////////
// 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);
modSocial 								= bcExp.getModule(APIModules.SOCIAL);

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) {
}
/////////////////////////////////////////////////////////////////////////////////
function playPlatformVideo(vidID) {

	if (!isVideoSysReady) {
	return;
	}

	if (videoPlatform_locked) {
	return;
	}
	
videoPlatform_locked		= true;
modContent.getVideoAsynch(vidID);
videoPlatform_lastID		= vidID;
refreshSummaryPane(vidID);
}
/////////////////////////////////////////////////////////////////////////////////
// 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=AmbitionGetVideoSummary&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();
	videoPlatform_updateSocialLink();
	}
	// 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=GetAmbitionRelatedVideos&videoID="+vidID;
handleGetComplete					= 'handleLoadRelatedVideosGetComplete';
getAjaxContent(uri);
}
/////////////////////////////////////////////////////////////////////////////////
function handleLoadRelatedVideosGetComplete(success,xmlHTTP) {
var obj								= document.getElementById('x_videoBox');
	if (obj && success) {
	obj.innerHTML					= xmlHTTP.responseText;
	videoBoxRollover_initBinding();
	}
videoPlatform_locked				= false;
videoPlatform_lastID				= 0;
}
/////////////////////////////////////////////////////////////////////////////////
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 videoPlatform_updateSocialLink() {
var socialLink						= jQuery('#videoSummary_socialLinkURL');
var o								= socialLink.html();
	// TELL OUR SWF CLIENT WE'D LIKE OUR NEW VIRAL LINK TO BE THE CONTENT OF
	// OUR SUMMARY PANE'S HIDDEN DIV!
	if (o != null) {
	modSocial.setLink(o);
	}
}
/////////////////////////////////////////////////////////////////////////////////
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"), "");
}
