// TNT player driver reference.
var driver = null;

// ----------------------------------------------
// -- Function:  init                           - 
// ----------------------------------------------  

function init() {
	// from main.js - needed for IFrame communication
	var cnnDocDomain = '';
	if(location.hostname.indexOf('tnt.tv')>0) {cnnDocDomain='tnt.tv';}
	if(location.hostname.indexOf('turner.com')>0) {if(document.layers){cnnDocDomain='turner.com:'+location.port;}else{cnnDocDomain='turner.com';}}
	//if(cnnDocDomain) {document.domain = cnnDocDomain;}

	initAdServerCookies(cnnDocDomain);

	// Create TNT player driver.
	driver = new TNTPlayerDriver();
	
	// Initialize driver.
	driver.init();	
}

function initAdServerCookies(docDomain)
{	// See document Design\xmp_cookies.txt

   var cnnAdCookieIsSet = null;
   var imgSrc = '';

	// can the user read/write cookie values?
	if (tkutils.Cookie.canUse()) {
		cnnAdCookieIsSet = tkutils.Cookie.read('adDEon');
		if (!cnnAdCookieIsSet) {
			imgSrc = 'http://gdyn.' + docDomain + '/1.1/1.gif';
			window.top.document.images.cookieCrumb.src = imgSrc;
		}
	}		
}

function fini() {
}

function callScrubbarMethod(method, args) {
	try {
		var controller = (navigator.appName.indexOf("Microsoft") != -1) ? window["tnt_scrubbar"] : document["tnt_scrubbar"];
		var returnVal = controller[method](args);
		if(typeof(returnVal) != "undefined") return returnVal;
	} catch(err) {
		// catch error and ignore, usually caused by xmp loading before controller plugin
	}
}

function handleScrubbarEvent(event) {
	if (event == 'play') {
		driver.player.playEx();
	} else if (event == 'pause') {
		driver.player.pauseEx();
	} else if (event == 'seek') {
		driver.player.seekEx();
	} else if (event == 'setVolume') {
		driver.player.setVolumeEx();
	} else if (event == 'setFullscreen') {
		driver.player.setFullScreenEx();
	}
}

// ---------------------------------------------------------------------------------  
// -- Class:      TNTPlayerDriver											   -	
// --																			   -	
// -- Base Classes Inherited:													   -
// --																			   -	
// --      None																	   - 
// --																			   - 
// -- Description:  TNT player driver.										   -
// --																			   -	
// -- Maintenance History:														   -	
// --																			   - 
// -- Created:  Jerry Chen													   - 
// ---------------------------------------------------------------------------------  

// ----------------------------------------------
// -- Class:        TNTPlayerDriver		    -
// -- Constructor:  TNTPlayerDriver		    - 
// ----------------------------------------------  

function TNTPlayerDriver( ) {
	this._TABLE_CELL_STYLE = "border-bottom: 1px solid #DCDCDC; border-right: 1px solid #DCDCDC; " + 
	"border-left: 1px solid #DCDCDC; cursor: pointer";
	
	// Set TNT player reference to null.
	this.player = null;
}

// ----------------------------------------------
// -- Class:   TNTPlayerDriver			    -
// -- Method:  init					            - 
// ----------------------------------------------  

TNTPlayerDriver.prototype.init = function() {
	//var sm = xmp.util.SettingsManager.getInstance();
	//sm.init(cnnXmpPrimaryJsonObj); // cnnXmpPrimaryJsonObj defined in primary.js
	
	
	xmp.baseplayer.BasePlayer.configure([cnnXmpPrimaryJsonObj], {});
	//xmp.util.LogConfigurator.configure();	

	this.player = new TNTPlayer( {}, [], this );
	
	this.player.bootStrap(); // this is asynch, wait for onBootstrapped to be called
};

TNTPlayerDriver.prototype.onBootstrapped = function(success) {	

	if (!success) { return; } // handleFatalException should have been called on player

	this.player.setPlayerContext('Dramavision');
	this.player.createPlayListContext('Dramavision');
	
	xmpReady = true;
		
	if (typeof(waitingVideo) !== 'undefined' && waitingVideo !== '') {
		handleAddPlaylistItem(waitingVideo);
	}
};

// ----------------------------------------------
// -- Class:   TNTPlayerDriver			    -
// -- Method:  addPlaylistItem		            - 
// ----------------------------------------------  
TNTPlayerDriver.prototype.addPlaylistItem = function( event ) {
	// If the item already exists, remove it
	if (this.player.findPlayListItemIndex(event) !== -1) {
		this.deletePlaylistItem( event );	
	}

	// Put in player playlist and play.		
	this.player.appendToPlayList( event, true );	
};

// ----------------------------------------------
// -- Class:   TNTPlayerDriver			    -
// -- Method:  deletePlaylistItem	            - 
// ----------------------------------------------  

TNTPlayerDriver.prototype.deletePlaylistItem = function( event ) {
	this.player.removeFromPlayList( event );	
};

// ----------------------------------------------
// -- Class:   TNTPlayerDriver			    -
// -- Method:  gotoPlaylistItem		            - 
// ----------------------------------------------  

TNTPlayerDriver.prototype.gotoPlaylistItem = function( event ) {
	// Get selected row.
	var row = this.getSelectedRow( event );
	
	// Get selected playlist item url.
	var url = row.getAttribute( "url" );

	// Do we have a playlist already loaded?	
	if ( this.player !== null && this.player.hasPlayListContext() ) {
		// Hide all overlays.
		this.player.getViewport(this.player.getMainPlayerContext()).hideOverlays( xmp.ALL_OVERLAYS );
	
		// Goto to playlist item.
		this.player.setCurrentPlayListPosition( url );	
	}
};

// ----------------------------------------------
// -- Function:  handleAddPlaylistItem          - 
// ----------------------------------------------  

function handleAddPlaylistItem( event ) {
	// Delegate to driver.
	driver.addPlaylistItem( event );
}

// ----------------------------------------------
// -- Function:  handleDeletePlaylistItem       - 
// ----------------------------------------------  

function handleDeletePlaylistItem( event ) {
	// Delegate to driver.
	driver.deletePlaylistItem( event );
}

// ----------------------------------------------
// -- Function:  handleGotoPlaylistItem	        - 
// ----------------------------------------------  

function handleGotoPlaylistItem( event ) {
	// Delegate to driver.
	driver.gotoPlaylistItem( event );
}
